@alumbwe/anvil 1.0.20 → 1.0.21

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 (328) hide show
  1. package/package.json +6 -2
  2. package/src/agents/bundled-agents.generated.ts +4 -4
  3. package/src/chat.tsx +1703 -1698
  4. package/src/cli-args.ts +134 -134
  5. package/src/components/status-bar.tsx +331 -313
  6. package/src/hooks/helpers/send-message.ts +663 -654
  7. package/src/hooks/use-send-message.ts +806 -773
  8. package/src/index.tsx +473 -473
  9. package/src/state/chat-store.ts +553 -544
  10. package/src/utils/create-run-config.ts +121 -121
  11. package/src/utils/format-compact-number.ts +37 -0
  12. package/vendor/@anvil/common/package.json +27 -0
  13. package/vendor/@anvil/common/src/__tests__/agent-validation.test.ts +846 -0
  14. package/vendor/@anvil/common/src/__tests__/anvil-model-availability.test.ts +101 -0
  15. package/vendor/@anvil/common/src/__tests__/anvil-models.test.ts +1408 -0
  16. package/vendor/@anvil/common/src/__tests__/anvil-public-data-use-copy.test.ts +258 -0
  17. package/vendor/@anvil/common/src/__tests__/anvil-referral-tiers.test.ts +48 -0
  18. package/vendor/@anvil/common/src/__tests__/anvil-spend-ceilings.test.ts +282 -0
  19. package/vendor/@anvil/common/src/__tests__/anvil-trust.test.ts +526 -0
  20. package/vendor/@anvil/common/src/__tests__/deepseek-direct.test.ts +68 -0
  21. package/vendor/@anvil/common/src/__tests__/disposable-email.test.ts +132 -0
  22. package/vendor/@anvil/common/src/__tests__/dynamic-agent-template-schema.test.ts +422 -0
  23. package/vendor/@anvil/common/src/__tests__/env-ci.test.ts +167 -0
  24. package/vendor/@anvil/common/src/__tests__/env-process.test.ts +145 -0
  25. package/vendor/@anvil/common/src/__tests__/foreign-client-shipped-agents.test.ts +234 -0
  26. package/vendor/@anvil/common/src/__tests__/foreign-client-signals.test.ts +379 -0
  27. package/vendor/@anvil/common/src/__tests__/free-agents.test.ts +807 -0
  28. package/vendor/@anvil/common/src/__tests__/gravity-capi.test.ts +154 -0
  29. package/vendor/@anvil/common/src/__tests__/handlesteps-parsing.test.ts +246 -0
  30. package/vendor/@anvil/common/src/__tests__/kimi-k3-god-only.test.ts +77 -0
  31. package/vendor/@anvil/common/src/__tests__/model-config.test.ts +89 -0
  32. package/vendor/@anvil/common/src/__tests__/project-file-tree.test.ts +298 -0
  33. package/vendor/@anvil/common/src/__tests__/provisioned-model-tiers.test.ts +116 -0
  34. package/vendor/@anvil/common/src/__tests__/reasoning-effort.test.ts +167 -0
  35. package/vendor/@anvil/common/src/__tests__/reddit-capi.test.ts +132 -0
  36. package/vendor/@anvil/common/src/__tests__/response-ad-positions.test.ts +72 -0
  37. package/vendor/@anvil/common/src/__tests__/user-state.test.ts +30 -0
  38. package/vendor/@anvil/common/src/actions.ts +215 -0
  39. package/vendor/@anvil/common/src/analytics-core.ts +69 -0
  40. package/vendor/@anvil/common/src/analytics.ts +93 -0
  41. package/vendor/@anvil/common/src/api-keys/constants.ts +26 -0
  42. package/vendor/@anvil/common/src/browser-actions.ts +413 -0
  43. package/vendor/@anvil/common/src/constants/__tests__/anvil-onboarding-gate.test.ts +63 -0
  44. package/vendor/@anvil/common/src/constants/__tests__/anvil-onboarding.test.ts +246 -0
  45. package/vendor/@anvil/common/src/constants/__tests__/cf-worker-signals.test.ts +106 -0
  46. package/vendor/@anvil/common/src/constants/agents.ts +99 -0
  47. package/vendor/@anvil/common/src/constants/analytics-events.ts +435 -0
  48. package/vendor/@anvil/common/src/constants/anthropic.ts +73 -0
  49. package/vendor/@anvil/common/src/constants/anvil-data-use.ts +81 -0
  50. package/vendor/@anvil/common/src/constants/anvil-errors.ts +7 -0
  51. package/vendor/@anvil/common/src/constants/anvil-gemini-thinker.ts +21 -0
  52. package/vendor/@anvil/common/src/constants/anvil-model-ids.ts +11 -0
  53. package/vendor/@anvil/common/src/constants/anvil-models.ts +2130 -0
  54. package/vendor/@anvil/common/src/constants/anvil-onboarding-gate.ts +55 -0
  55. package/vendor/@anvil/common/src/constants/anvil-onboarding.ts +307 -0
  56. package/vendor/@anvil/common/src/constants/anvil-referral-tiers.ts +87 -0
  57. package/vendor/@anvil/common/src/constants/anvil-signup-block.ts +68 -0
  58. package/vendor/@anvil/common/src/constants/anvil-spend-ceilings.ts +450 -0
  59. package/vendor/@anvil/common/src/constants/anvil-trust.ts +976 -0
  60. package/vendor/@anvil/common/src/constants/auth.ts +18 -0
  61. package/vendor/@anvil/common/src/constants/byok.ts +2 -0
  62. package/vendor/@anvil/common/src/constants/cf-worker-signals.ts +132 -0
  63. package/vendor/@anvil/common/src/constants/composio.ts +34 -0
  64. package/vendor/@anvil/common/src/constants/deepseek-direct.ts +55 -0
  65. package/vendor/@anvil/common/src/constants/feedback.ts +13 -0
  66. package/vendor/@anvil/common/src/constants/foreign-client-signals.ts +272 -0
  67. package/vendor/@anvil/common/src/constants/free-agents.ts +777 -0
  68. package/vendor/@anvil/common/src/constants/gemini.ts +15 -0
  69. package/vendor/@anvil/common/src/constants/grant-priorities.ts +13 -0
  70. package/vendor/@anvil/common/src/constants/hosts.ts +6 -0
  71. package/vendor/@anvil/common/src/constants/images.ts +51 -0
  72. package/vendor/@anvil/common/src/constants/index.ts +7 -0
  73. package/vendor/@anvil/common/src/constants/knowledge.ts +35 -0
  74. package/vendor/@anvil/common/src/constants/limits.ts +23 -0
  75. package/vendor/@anvil/common/src/constants/model-config.ts +277 -0
  76. package/vendor/@anvil/common/src/constants/openrouter-attribution.ts +8 -0
  77. package/vendor/@anvil/common/src/constants/paths.ts +69 -0
  78. package/vendor/@anvil/common/src/constants/provider-routes.ts +317 -0
  79. package/vendor/@anvil/common/src/constants/reasoning-effort.ts +79 -0
  80. package/vendor/@anvil/common/src/constants/skills.ts +60 -0
  81. package/vendor/@anvil/common/src/constants/subscription-plans.ts +49 -0
  82. package/vendor/@anvil/common/src/constants/ui.ts +25 -0
  83. package/vendor/@anvil/common/src/env-ci.ts +36 -0
  84. package/vendor/@anvil/common/src/env-process.ts +95 -0
  85. package/vendor/@anvil/common/src/env-schema.ts +95 -0
  86. package/vendor/@anvil/common/src/env.ts +24 -0
  87. package/vendor/@anvil/common/src/gravity-capi.ts +207 -0
  88. package/vendor/@anvil/common/src/mcp/client.ts +233 -0
  89. package/vendor/@anvil/common/src/old-constants.ts +10 -0
  90. package/vendor/@anvil/common/src/project-file-tree.ts +355 -0
  91. package/vendor/@anvil/common/src/reddit-capi.ts +254 -0
  92. package/vendor/@anvil/common/src/schemas/feedback.ts +52 -0
  93. package/vendor/@anvil/common/src/schemas/logs.ts +66 -0
  94. package/vendor/@anvil/common/src/templates/agent-validation.ts +392 -0
  95. package/vendor/@anvil/common/src/templates/initial-agents-dir/LICENSE +202 -0
  96. package/vendor/@anvil/common/src/templates/initial-agents-dir/README.md +294 -0
  97. package/vendor/@anvil/common/src/templates/initial-agents-dir/examples/01-basic-diff-reviewer.ts +17 -0
  98. package/vendor/@anvil/common/src/templates/initial-agents-dir/examples/02-intermediate-git-committer.ts +78 -0
  99. package/vendor/@anvil/common/src/templates/initial-agents-dir/examples/03-advanced-file-explorer.ts +73 -0
  100. package/vendor/@anvil/common/src/templates/initial-agents-dir/my-custom-agent.ts +40 -0
  101. package/vendor/@anvil/common/src/templates/initial-agents-dir/package.json +6 -0
  102. package/vendor/@anvil/common/src/templates/initial-agents-dir/skills/README.md +65 -0
  103. package/vendor/@anvil/common/src/templates/initial-agents-dir/skills/example-skill/SKILL.md +29 -0
  104. package/vendor/@anvil/common/src/templates/initial-agents-dir/types/agent-definition.ts +497 -0
  105. package/vendor/@anvil/common/src/templates/initial-agents-dir/types/tools.ts +444 -0
  106. package/vendor/@anvil/common/src/templates/initial-agents-dir/types/util-types.ts +178 -0
  107. package/vendor/@anvil/common/src/testing/TESTING_PATTERNS.md +351 -0
  108. package/vendor/@anvil/common/src/testing/anvil-offer-invariants.ts +169 -0
  109. package/vendor/@anvil/common/src/testing/errors.ts +33 -0
  110. package/vendor/@anvil/common/src/testing/fixtures/agent-runtime.ts +334 -0
  111. package/vendor/@anvil/common/src/testing/impl/agent-runtime.ts +6 -0
  112. package/vendor/@anvil/common/src/testing/index.ts +84 -0
  113. package/vendor/@anvil/common/src/testing/mock-modules.ts +53 -0
  114. package/vendor/@anvil/common/src/testing/mock-types.ts +123 -0
  115. package/vendor/@anvil/common/src/testing/mocks/analytics.ts +261 -0
  116. package/vendor/@anvil/common/src/testing/mocks/child-process.ts +93 -0
  117. package/vendor/@anvil/common/src/testing/mocks/crypto.ts +218 -0
  118. package/vendor/@anvil/common/src/testing/mocks/database.ts +337 -0
  119. package/vendor/@anvil/common/src/testing/mocks/fetch.ts +219 -0
  120. package/vendor/@anvil/common/src/testing/mocks/filesystem.ts +166 -0
  121. package/vendor/@anvil/common/src/testing/mocks/index.ts +101 -0
  122. package/vendor/@anvil/common/src/testing/mocks/logger.ts +135 -0
  123. package/vendor/@anvil/common/src/testing/mocks/stream.ts +313 -0
  124. package/vendor/@anvil/common/src/testing/mocks/timers.ts +132 -0
  125. package/vendor/@anvil/common/src/testing/mocks/tree-sitter.ts +127 -0
  126. package/vendor/@anvil/common/src/testing/setup.ts +282 -0
  127. package/vendor/@anvil/common/src/testing-env-ci.ts +15 -0
  128. package/vendor/@anvil/common/src/testing-env-process.ts +78 -0
  129. package/vendor/@anvil/common/src/tools/__tests__/compile-tool-definitions.test.ts +34 -0
  130. package/vendor/@anvil/common/src/tools/compile-tool-definitions.ts +157 -0
  131. package/vendor/@anvil/common/src/tools/constants.ts +117 -0
  132. package/vendor/@anvil/common/src/tools/list.ts +190 -0
  133. package/vendor/@anvil/common/src/tools/params/__tests__/coerce-to-array.test.ts +213 -0
  134. package/vendor/@anvil/common/src/tools/params/__tests__/read-docs.test.ts +47 -0
  135. package/vendor/@anvil/common/src/tools/params/__tests__/render-ui.test.ts +65 -0
  136. package/vendor/@anvil/common/src/tools/params/tool/__tests__/run-terminal-command-timeout.test.ts +49 -0
  137. package/vendor/@anvil/common/src/tools/params/tool/add-message.ts +39 -0
  138. package/vendor/@anvil/common/src/tools/params/tool/add-subgoal.ts +57 -0
  139. package/vendor/@anvil/common/src/tools/params/tool/apply-patch.ts +110 -0
  140. package/vendor/@anvil/common/src/tools/params/tool/ask-user.ts +181 -0
  141. package/vendor/@anvil/common/src/tools/params/tool/browser-logs.ts +85 -0
  142. package/vendor/@anvil/common/src/tools/params/tool/cloud-plan-ready.ts +94 -0
  143. package/vendor/@anvil/common/src/tools/params/tool/code-search.ts +159 -0
  144. package/vendor/@anvil/common/src/tools/params/tool/composio.ts +131 -0
  145. package/vendor/@anvil/common/src/tools/params/tool/create-plan.ts +80 -0
  146. package/vendor/@anvil/common/src/tools/params/tool/end-turn.ts +57 -0
  147. package/vendor/@anvil/common/src/tools/params/tool/find-files.ts +60 -0
  148. package/vendor/@anvil/common/src/tools/params/tool/glob.ts +80 -0
  149. package/vendor/@anvil/common/src/tools/params/tool/gravity-index.ts +93 -0
  150. package/vendor/@anvil/common/src/tools/params/tool/list-directory.ts +58 -0
  151. package/vendor/@anvil/common/src/tools/params/tool/lookup-agent-info.ts +37 -0
  152. package/vendor/@anvil/common/src/tools/params/tool/propose-str-replace.ts +103 -0
  153. package/vendor/@anvil/common/src/tools/params/tool/propose-write-file.ts +71 -0
  154. package/vendor/@anvil/common/src/tools/params/tool/read-docs.ts +90 -0
  155. package/vendor/@anvil/common/src/tools/params/tool/read-files.ts +109 -0
  156. package/vendor/@anvil/common/src/tools/params/tool/read-subtree.ts +79 -0
  157. package/vendor/@anvil/common/src/tools/params/tool/read-url.ts +81 -0
  158. package/vendor/@anvil/common/src/tools/params/tool/render-ui.ts +168 -0
  159. package/vendor/@anvil/common/src/tools/params/tool/run-file-change-hooks.ts +57 -0
  160. package/vendor/@anvil/common/src/tools/params/tool/run-terminal-command.ts +211 -0
  161. package/vendor/@anvil/common/src/tools/params/tool/screenshot.ts +97 -0
  162. package/vendor/@anvil/common/src/tools/params/tool/set-messages.ts +44 -0
  163. package/vendor/@anvil/common/src/tools/params/tool/set-output.ts +61 -0
  164. package/vendor/@anvil/common/src/tools/params/tool/skill.ts +59 -0
  165. package/vendor/@anvil/common/src/tools/params/tool/spawn-agent-inline.ts +56 -0
  166. package/vendor/@anvil/common/src/tools/params/tool/spawn-agents.ts +154 -0
  167. package/vendor/@anvil/common/src/tools/params/tool/str-replace.ts +107 -0
  168. package/vendor/@anvil/common/src/tools/params/tool/suggest-followups.ts +97 -0
  169. package/vendor/@anvil/common/src/tools/params/tool/task-completed.ts +61 -0
  170. package/vendor/@anvil/common/src/tools/params/tool/think-deeply.ts +56 -0
  171. package/vendor/@anvil/common/src/tools/params/tool/update-subgoal.ts +89 -0
  172. package/vendor/@anvil/common/src/tools/params/tool/vision-analyze.ts +82 -0
  173. package/vendor/@anvil/common/src/tools/params/tool/web-search.ts +73 -0
  174. package/vendor/@anvil/common/src/tools/params/tool/write-file.ts +71 -0
  175. package/vendor/@anvil/common/src/tools/params/tool/write-todos.ts +67 -0
  176. package/vendor/@anvil/common/src/tools/params/utils.ts +150 -0
  177. package/vendor/@anvil/common/src/tools/utils.ts +24 -0
  178. package/vendor/@anvil/common/src/types/__tests__/dynamic-agent-template.test.ts +20 -0
  179. package/vendor/@anvil/common/src/types/agent-template.ts +215 -0
  180. package/vendor/@anvil/common/src/types/anvil-session.ts +535 -0
  181. package/vendor/@anvil/common/src/types/anvil-streak.ts +6 -0
  182. package/vendor/@anvil/common/src/types/anvil-usage.ts +64 -0
  183. package/vendor/@anvil/common/src/types/api/agents/publish.ts +61 -0
  184. package/vendor/@anvil/common/src/types/bun-test.d.ts +5 -0
  185. package/vendor/@anvil/common/src/types/contracts/agent-runtime.ts +75 -0
  186. package/vendor/@anvil/common/src/types/contracts/analytics.ts +9 -0
  187. package/vendor/@anvil/common/src/types/contracts/bigquery.ts +55 -0
  188. package/vendor/@anvil/common/src/types/contracts/billing.ts +46 -0
  189. package/vendor/@anvil/common/src/types/contracts/client.ts +53 -0
  190. package/vendor/@anvil/common/src/types/contracts/database.ts +112 -0
  191. package/vendor/@anvil/common/src/types/contracts/env.ts +203 -0
  192. package/vendor/@anvil/common/src/types/contracts/llm.ts +191 -0
  193. package/vendor/@anvil/common/src/types/contracts/logger.ts +14 -0
  194. package/vendor/@anvil/common/src/types/contracts/logs.ts +34 -0
  195. package/vendor/@anvil/common/src/types/contracts/trace.ts +21 -0
  196. package/vendor/@anvil/common/src/types/dynamic-agent-template.ts +328 -0
  197. package/vendor/@anvil/common/src/types/filesystem.ts +10 -0
  198. package/vendor/@anvil/common/src/types/function-params.ts +33 -0
  199. package/vendor/@anvil/common/src/types/grant.ts +20 -0
  200. package/vendor/@anvil/common/src/types/gravity-index.ts +170 -0
  201. package/vendor/@anvil/common/src/types/json.ts +29 -0
  202. package/vendor/@anvil/common/src/types/mcp.ts +24 -0
  203. package/vendor/@anvil/common/src/types/messages/anvil-message.ts +58 -0
  204. package/vendor/@anvil/common/src/types/messages/content-part.ts +59 -0
  205. package/vendor/@anvil/common/src/types/messages/data-content.ts +14 -0
  206. package/vendor/@anvil/common/src/types/messages/provider-metadata.ts +13 -0
  207. package/vendor/@anvil/common/src/types/organization.ts +118 -0
  208. package/vendor/@anvil/common/src/types/print-mode.ts +121 -0
  209. package/vendor/@anvil/common/src/types/publisher.ts +67 -0
  210. package/vendor/@anvil/common/src/types/session-state.ts +149 -0
  211. package/vendor/@anvil/common/src/types/skill.ts +86 -0
  212. package/vendor/@anvil/common/src/types/source.ts +11 -0
  213. package/vendor/@anvil/common/src/types/spawn.ts +13 -0
  214. package/vendor/@anvil/common/src/types/subscription.ts +67 -0
  215. package/vendor/@anvil/common/src/types/usage.ts +16 -0
  216. package/vendor/@anvil/common/src/types/util.ts +3 -0
  217. package/vendor/@anvil/common/src/util/__tests__/ad-user-agent.test.ts +26 -0
  218. package/vendor/@anvil/common/src/util/__tests__/analytics-dispatcher.test.ts +122 -0
  219. package/vendor/@anvil/common/src/util/__tests__/analytics-log.test.ts +102 -0
  220. package/vendor/@anvil/common/src/util/__tests__/analytics-sampling.test.ts +143 -0
  221. package/vendor/@anvil/common/src/util/__tests__/anvil-streak.test.ts +202 -0
  222. package/vendor/@anvil/common/src/util/__tests__/anvil-usage-summary.test.ts +193 -0
  223. package/vendor/@anvil/common/src/util/__tests__/axiom-only-log.test.ts +140 -0
  224. package/vendor/@anvil/common/src/util/__tests__/client-user-agent.test.ts +148 -0
  225. package/vendor/@anvil/common/src/util/__tests__/engagement-tracker.test.ts +115 -0
  226. package/vendor/@anvil/common/src/util/__tests__/env-file-path.test.ts +57 -0
  227. package/vendor/@anvil/common/src/util/__tests__/error-abort.test.ts +774 -0
  228. package/vendor/@anvil/common/src/util/__tests__/error-api-details.test.ts +206 -0
  229. package/vendor/@anvil/common/src/util/__tests__/file-read-limits.test.ts +173 -0
  230. package/vendor/@anvil/common/src/util/__tests__/format-code-search.test.ts +60 -0
  231. package/vendor/@anvil/common/src/util/__tests__/log-mirror.test.ts +31 -0
  232. package/vendor/@anvil/common/src/util/__tests__/messages.test.ts +1252 -0
  233. package/vendor/@anvil/common/src/util/__tests__/partial-json-delta.test.ts +505 -0
  234. package/vendor/@anvil/common/src/util/__tests__/path.test.ts +22 -0
  235. package/vendor/@anvil/common/src/util/__tests__/project-ignore.test.ts +90 -0
  236. package/vendor/@anvil/common/src/util/__tests__/promise.test.ts +325 -0
  237. package/vendor/@anvil/common/src/util/__tests__/rate-limit.test.ts +28 -0
  238. package/vendor/@anvil/common/src/util/__tests__/reddit-anvil-retention.test.ts +130 -0
  239. package/vendor/@anvil/common/src/util/__tests__/saxy.test.ts +1008 -0
  240. package/vendor/@anvil/common/src/util/__tests__/split-data.test.ts +289 -0
  241. package/vendor/@anvil/common/src/util/__tests__/string.test.ts +239 -0
  242. package/vendor/@anvil/common/src/util/__tests__/thread-title.test.ts +70 -0
  243. package/vendor/@anvil/common/src/util/__tests__/tool-result-media-order.test.ts +108 -0
  244. package/vendor/@anvil/common/src/util/__tests__/ttft-histogram.test.ts +180 -0
  245. package/vendor/@anvil/common/src/util/__tests__/with-timeout.test.ts +24 -0
  246. package/vendor/@anvil/common/src/util/__tests__/zoned-time.test.ts +88 -0
  247. package/vendor/@anvil/common/src/util/ad-user-agent.ts +25 -0
  248. package/vendor/@anvil/common/src/util/agent-file-utils.ts +110 -0
  249. package/vendor/@anvil/common/src/util/agent-id-parsing.ts +136 -0
  250. package/vendor/@anvil/common/src/util/agent-name-normalization.ts +38 -0
  251. package/vendor/@anvil/common/src/util/agent-name-resolver.ts +86 -0
  252. package/vendor/@anvil/common/src/util/analytics-dispatcher.ts +82 -0
  253. package/vendor/@anvil/common/src/util/analytics-log.ts +78 -0
  254. package/vendor/@anvil/common/src/util/analytics-sampling.ts +255 -0
  255. package/vendor/@anvil/common/src/util/anvil-model-availability.ts +102 -0
  256. package/vendor/@anvil/common/src/util/anvil-privacy.ts +82 -0
  257. package/vendor/@anvil/common/src/util/anvil-streak-line.ts +103 -0
  258. package/vendor/@anvil/common/src/util/anvil-streak.ts +156 -0
  259. package/vendor/@anvil/common/src/util/anvil-usage-summary.ts +125 -0
  260. package/vendor/@anvil/common/src/util/array.ts +31 -0
  261. package/vendor/@anvil/common/src/util/axiom-only-log.ts +124 -0
  262. package/vendor/@anvil/common/src/util/cache-debug.ts +171 -0
  263. package/vendor/@anvil/common/src/util/client-user-agent.ts +114 -0
  264. package/vendor/@anvil/common/src/util/credentials.ts +26 -0
  265. package/vendor/@anvil/common/src/util/currency.ts +25 -0
  266. package/vendor/@anvil/common/src/util/dates.ts +81 -0
  267. package/vendor/@anvil/common/src/util/disposable-email.ts +277 -0
  268. package/vendor/@anvil/common/src/util/engagement-tracker.ts +129 -0
  269. package/vendor/@anvil/common/src/util/env-file-path.ts +40 -0
  270. package/vendor/@anvil/common/src/util/error.ts +562 -0
  271. package/vendor/@anvil/common/src/util/file-read-limits.ts +236 -0
  272. package/vendor/@anvil/common/src/util/file.ts +339 -0
  273. package/vendor/@anvil/common/src/util/format-code-search.ts +115 -0
  274. package/vendor/@anvil/common/src/util/lazy-response-ads.ts +92 -0
  275. package/vendor/@anvil/common/src/util/log-data.ts +57 -0
  276. package/vendor/@anvil/common/src/util/log-ingest.ts +58 -0
  277. package/vendor/@anvil/common/src/util/log-mirror.ts +34 -0
  278. package/vendor/@anvil/common/src/util/lru-cache.ts +67 -0
  279. package/vendor/@anvil/common/src/util/messages.ts +685 -0
  280. package/vendor/@anvil/common/src/util/min-heap.ts +87 -0
  281. package/vendor/@anvil/common/src/util/model-utils.ts +4 -0
  282. package/vendor/@anvil/common/src/util/object.ts +128 -0
  283. package/vendor/@anvil/common/src/util/partial-json-delta.ts +89 -0
  284. package/vendor/@anvil/common/src/util/path.ts +15 -0
  285. package/vendor/@anvil/common/src/util/project-ignore.ts +119 -0
  286. package/vendor/@anvil/common/src/util/promise.ts +73 -0
  287. package/vendor/@anvil/common/src/util/random.ts +15 -0
  288. package/vendor/@anvil/common/src/util/rate-limit.ts +56 -0
  289. package/vendor/@anvil/common/src/util/reddit-anvil-retention.ts +60 -0
  290. package/vendor/@anvil/common/src/util/reddit-capi-events.ts +36 -0
  291. package/vendor/@anvil/common/src/util/response-ad-positions.ts +54 -0
  292. package/vendor/@anvil/common/src/util/saxy.ts +741 -0
  293. package/vendor/@anvil/common/src/util/skills.test.ts +44 -0
  294. package/vendor/@anvil/common/src/util/skills.ts +36 -0
  295. package/vendor/@anvil/common/src/util/split-data.ts +259 -0
  296. package/vendor/@anvil/common/src/util/stop-sequence.ts +61 -0
  297. package/vendor/@anvil/common/src/util/string.ts +426 -0
  298. package/vendor/@anvil/common/src/util/system-info.ts +53 -0
  299. package/vendor/@anvil/common/src/util/thread-title.ts +46 -0
  300. package/vendor/@anvil/common/src/util/ttft-histogram.ts +73 -0
  301. package/vendor/@anvil/common/src/util/xml-parser.ts +27 -0
  302. package/vendor/@anvil/common/src/util/xml.ts +17 -0
  303. package/vendor/@anvil/common/src/util/zod-schema.ts +25 -0
  304. package/vendor/@anvil/common/src/util/zoned-time.ts +136 -0
  305. package/vendor/@anvil/common/src/utils/ask-user-bridge.ts +44 -0
  306. package/vendor/@anvil/sdk/dist/index.cjs +52297 -0
  307. package/vendor/@anvil/sdk/dist/index.cjs.map +440 -0
  308. package/vendor/@anvil/sdk/dist/index.d.ts +4277 -0
  309. package/vendor/@anvil/sdk/dist/index.mjs +52290 -0
  310. package/vendor/@anvil/sdk/dist/index.mjs.map +440 -0
  311. package/vendor/@anvil/sdk/dist/vendor/ai.cjs +30886 -0
  312. package/vendor/@anvil/sdk/dist/vendor/ripgrep/arm64-darwin/rg +0 -0
  313. package/vendor/@anvil/sdk/dist/vendor/ripgrep/arm64-linux/rg +0 -0
  314. package/vendor/@anvil/sdk/dist/vendor/ripgrep/x64-darwin/rg +0 -0
  315. package/vendor/@anvil/sdk/dist/vendor/ripgrep/x64-linux/rg +0 -0
  316. package/vendor/@anvil/sdk/dist/vendor/ripgrep/x64-win32/rg.exe +0 -0
  317. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-c-sharp.wasm +0 -0
  318. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-cpp.wasm +0 -0
  319. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-go.wasm +0 -0
  320. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-java.wasm +0 -0
  321. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-javascript.wasm +0 -0
  322. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-python.wasm +0 -0
  323. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-ruby.wasm +0 -0
  324. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-rust.wasm +0 -0
  325. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-tsx.wasm +0 -0
  326. package/vendor/@anvil/sdk/dist/wasm/tree-sitter-typescript.wasm +0 -0
  327. package/vendor/@anvil/sdk/dist/wasm/tree-sitter.wasm +0 -0
  328. package/vendor/@anvil/sdk/package.json +21 -0
@@ -0,0 +1,59 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
4
+
5
+ import type { $ToolParams } from '../../constants'
6
+
7
+ const toolName = 'skill'
8
+ const endsAgentStep = true
9
+
10
+ const inputSchema = z
11
+ .object({
12
+ name: z
13
+ .string()
14
+ .min(1)
15
+ .describe('The name of the skill to load'),
16
+ })
17
+ .describe(
18
+ 'Load a skill by name to get its full instructions. Skills provide reusable behaviors and instructions.',
19
+ )
20
+
21
+ const outputValueSchema = z.object({
22
+ name: z.string(),
23
+ description: z.string(),
24
+ content: z.string(),
25
+ license: z.string().optional(),
26
+ })
27
+
28
+ /**
29
+ * Placeholder marker that will be replaced with the actual available skills XML.
30
+ * This is replaced at runtime when generating tool prompts.
31
+ */
32
+ export const AVAILABLE_SKILLS_PLACEHOLDER = '{{AVAILABLE_SKILLS}}'
33
+
34
+ // Base description - the full description with available skills is generated dynamically
35
+ const baseDescription = `Load a skill by name to get its full instructions. Skills provide reusable behaviors and domain-specific knowledge that you can use to complete tasks.
36
+
37
+ The following are the pre-loaded skills available at session start:
38
+ ${AVAILABLE_SKILLS_PLACEHOLDER}
39
+
40
+ Note: You can load any skill by name, including ones created or installed during this session (e.g. via \`npx skills add\`). The skill is always read fresh from disk, so its latest contents are used.
41
+
42
+ Example:
43
+ ${$getNativeToolCallExampleString({
44
+ toolName,
45
+ inputSchema,
46
+ input: {
47
+ name: 'git-release',
48
+ },
49
+ endsAgentStep,
50
+ })}
51
+ `
52
+
53
+ export const skillParams = {
54
+ toolName,
55
+ endsAgentStep,
56
+ description: baseDescription.trim(),
57
+ inputSchema,
58
+ outputSchema: jsonToolResultSchema(outputValueSchema),
59
+ } satisfies $ToolParams
@@ -0,0 +1,56 @@
1
+ import z from 'zod/v4'
2
+
3
+ import {
4
+ $getNativeToolCallExampleString,
5
+ coerceToObject,
6
+ textToolResultSchema,
7
+ } from '../utils'
8
+
9
+ import type { $ToolParams } from '../../constants'
10
+
11
+ const toolName = 'spawn_agent_inline'
12
+ const endsAgentStep = true
13
+ const inputSchema = z
14
+ .object({
15
+ agent_type: z.string().describe('Agent to spawn'),
16
+ prompt: z.string().optional().describe('Prompt to send to the agent'),
17
+ params: z
18
+ .preprocess(coerceToObject, z.record(z.string(), z.any()))
19
+ .optional()
20
+ .describe('Parameters object for the agent (if any)'),
21
+ })
22
+ .describe(
23
+ `Spawn a single agent that runs within the current message history.`,
24
+ )
25
+ const description = `
26
+ Spawn a single agent that runs within the current message history.
27
+ The spawned agent sees all previous messages and any messages it adds
28
+ are preserved when control returns to you.
29
+
30
+ You should prefer to use the spawn_agents tool unless instructed otherwise. This tool is only for special cases.
31
+
32
+ This is useful for:
33
+ - Delegating specific tasks while maintaining context
34
+ - Having specialized agents process information inline
35
+ - Managing message history (e.g., summarization)
36
+ The agent will run until it calls end_turn, then control returns to you. There is no tool result for this tool.
37
+ Example:
38
+ ${$getNativeToolCallExampleString({
39
+ toolName,
40
+ inputSchema,
41
+ input: {
42
+ agent_type: 'file-picker',
43
+ prompt: 'Find files related to authentication',
44
+ params: { paths: ['src/auth.ts', 'src/user.ts'] },
45
+ },
46
+ endsAgentStep,
47
+ })}
48
+ `.trim()
49
+
50
+ export const spawnAgentInlineParams = {
51
+ toolName,
52
+ endsAgentStep,
53
+ description,
54
+ inputSchema,
55
+ outputSchema: textToolResultSchema(),
56
+ } satisfies $ToolParams
@@ -0,0 +1,154 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { jsonObjectSchema } from '../../../types/json'
4
+ import {
5
+ $getNativeToolCallExampleString,
6
+ coerceToArray,
7
+ coerceToObject,
8
+ jsonToolResultSchema,
9
+ } from '../utils'
10
+
11
+ import type { $ToolParams } from '../../constants'
12
+
13
+ export const spawnAgentsOutputSchema = z
14
+ .object({
15
+ agentType: z.string(),
16
+ })
17
+ .and(jsonObjectSchema)
18
+ .array()
19
+
20
+ const toolName = 'spawn_agents'
21
+ const endsAgentStep = true
22
+ const inputSchema = z
23
+ .object({
24
+ agents: z.preprocess(
25
+ coerceToArray,
26
+ z
27
+ .object({
28
+ agent_type: z.string().describe('Agent to spawn'),
29
+ prompt: z.string().optional().describe('Prompt to send to the agent'),
30
+ params: z
31
+ .preprocess(
32
+ coerceToObject,
33
+ z
34
+ .object({
35
+ // Common agent fields (all optional hints — each agent validates its own required fields)
36
+ command: z
37
+ .string()
38
+ .optional()
39
+ .describe('Terminal command to run (basher, tmux-cli)'),
40
+ what_to_summarize: z
41
+ .string()
42
+ .optional()
43
+ .describe(
44
+ 'What information from the command output is desired (basher)',
45
+ ),
46
+ timeout_seconds: z
47
+ .number()
48
+ .optional()
49
+ .describe(
50
+ 'Timeout for command. Set to -1 for no timeout. Default 30 (basher)',
51
+ ),
52
+ searchQueries: z
53
+ .array(
54
+ z.object({
55
+ pattern: z
56
+ .string()
57
+ .describe('The pattern to search for'),
58
+ flags: z
59
+ .string()
60
+ .optional()
61
+ .describe(
62
+ 'Optional ripgrep flags (e.g., "-i", "-g *.ts")',
63
+ ),
64
+ cwd: z
65
+ .string()
66
+ .optional()
67
+ .describe(
68
+ 'Optional working directory relative to project root',
69
+ ),
70
+ maxResults: z
71
+ .number()
72
+ .optional()
73
+ .describe('Max results per file. Default 15'),
74
+ }),
75
+ )
76
+ .optional()
77
+ .describe('Array of code search queries (code-searcher)'),
78
+ filePaths: z
79
+ .array(z.string())
80
+ .optional()
81
+ .describe(
82
+ 'Relevant file paths to read (opus-agent, gpt-5-agent)',
83
+ ),
84
+ directories: z
85
+ .array(z.string())
86
+ .optional()
87
+ .describe('Directories to search within (file-picker)'),
88
+ url: z
89
+ .string()
90
+ .optional()
91
+ .describe('Starting URL to navigate to (browser-use)'),
92
+ prompts: z
93
+ .array(z.string())
94
+ .optional()
95
+ .describe(
96
+ 'Array of strategy prompts (editor-multi-prompt, code-reviewer-multi-prompt)',
97
+ ),
98
+ })
99
+ .catchall(z.any()),
100
+ )
101
+ .optional()
102
+ .describe('Parameters object for the agent'),
103
+ })
104
+ .array(),
105
+ ),
106
+ })
107
+ .describe(
108
+ `Spawn multiple agents and send a prompt and/or parameters to each of them. These agents will run in parallel. Note that that means they will run independently. If you need to run agents sequentially, use spawn_agents with one agent at a time instead.`,
109
+ )
110
+ const description = `
111
+ Use this tool to spawn agents to help you complete the user request. Each agent has specific requirements for prompt and params based on their tools schema.
112
+
113
+ The prompt field is a simple string, while params is a JSON object that gets validated against the agent's schema.
114
+
115
+ Each agent available is already defined as another tool, or, dynamically defined later in the conversation.
116
+
117
+ **IMPORTANT**: \`agent_type\` must be an actual agent name (e.g., \`basher\`, \`code-searcher\`, \`opus-agent\`), NOT a tool name like \`read_files\`, \`str_replace\`, \`code_search\`, etc. If you need to call a tool, use it directly as a tool call instead of wrapping it in spawn_agents.
118
+
119
+ You can call agents either as direct tool calls (using the listed tool name, e.g. \`example_agent\`) or use \`spawn_agents\` with the canonical agent name in \`agent_type\` (e.g. \`example-agent\`). Both formats work, but **prefer using spawn_agents** because it allows you to spawn multiple agents in parallel for better performance. Both use the same schema with nested \`prompt\` and \`params\` fields.
120
+
121
+ **IMPORTANT**: Many agents have REQUIRED fields in their params schema. Check the agent's schema before spawning - if params has required fields, you MUST include them in the params object. For example, code-searcher requires \`searchQueries\`, basher requires \`command\`.
122
+
123
+ Example:
124
+ ${$getNativeToolCallExampleString({
125
+ toolName,
126
+ inputSchema,
127
+ input: {
128
+ agents: [
129
+ {
130
+ agent_type: 'basher',
131
+ prompt: 'Check if tests pass',
132
+ params: {
133
+ command: 'npm test',
134
+ },
135
+ },
136
+ {
137
+ agent_type: 'code-searcher',
138
+ params: {
139
+ searchQueries: [{ pattern: 'authenticate', flags: '-g *.ts' }],
140
+ },
141
+ },
142
+ ],
143
+ },
144
+ endsAgentStep,
145
+ })}
146
+ `.trim()
147
+
148
+ export const spawnAgentsParams = {
149
+ toolName,
150
+ endsAgentStep,
151
+ description,
152
+ inputSchema,
153
+ outputSchema: jsonToolResultSchema(spawnAgentsOutputSchema),
154
+ } satisfies $ToolParams
@@ -0,0 +1,107 @@
1
+ import z from 'zod/v4'
2
+
3
+ import {
4
+ $getNativeToolCallExampleString,
5
+ coerceToArray,
6
+ jsonToolResultSchema,
7
+ normalizeReplacementAliases,
8
+ } from '../utils'
9
+
10
+ import type { $ToolParams } from '../../constants'
11
+
12
+ export const updateFileResultSchema = z.union([
13
+ z.object({
14
+ file: z.string(),
15
+ message: z.string(),
16
+ }),
17
+ z.object({
18
+ file: z.string(),
19
+ errorMessage: z.string(),
20
+ patch: z.string().optional(),
21
+ }),
22
+ ])
23
+
24
+ const toolName = 'str_replace'
25
+ const endsAgentStep = false
26
+ const inputSchema = z
27
+ .object({
28
+ path: z
29
+ .string()
30
+ .min(1, 'Path cannot be empty')
31
+ .describe(`The path to the file to edit.`),
32
+ replacements: z
33
+ .preprocess(
34
+ coerceToArray,
35
+ z
36
+ .array(
37
+ z
38
+ .preprocess(
39
+ normalizeReplacementAliases,
40
+ z.object({
41
+ oldString: z
42
+ .string()
43
+ .min(1, 'oldString cannot be empty')
44
+ .describe(
45
+ `The string to replace. This must be an *exact match* of the string you want to replace, including whitespace and punctuation.`,
46
+ ),
47
+ newString: z
48
+ .string()
49
+ .describe(
50
+ `The string to replace the corresponding oldString with. Can be empty to delete.`,
51
+ ),
52
+ allowMultiple: z
53
+ .boolean()
54
+ .optional()
55
+ .default(false)
56
+ .describe(
57
+ 'Whether to allow multiple replacements of oldString.',
58
+ ),
59
+ }),
60
+ )
61
+ .describe('Pair of oldString and newString values.'),
62
+ )
63
+ .min(1, 'Replacements cannot be empty'),
64
+ )
65
+ .describe('Array of replacements to make.'),
66
+ })
67
+ .describe(`Replace strings in a file with new strings.`)
68
+ const description = `
69
+ Use this tool to make edits within existing files.
70
+
71
+ Important:
72
+ If you are making multiple edits in a row to a file, use only one str_replace call with multiple replacements instead of multiple str_replace tool calls.
73
+
74
+ Example:
75
+ ${$getNativeToolCallExampleString({
76
+ toolName,
77
+ inputSchema,
78
+ input: {
79
+ path: 'path/to/file',
80
+ replacements: [
81
+ {
82
+ oldString: 'This is the old string',
83
+ newString: 'This is the new string',
84
+ },
85
+ {
86
+ oldString:
87
+ '\n\t\t// @anvil delete this log line please\n\t\tconsole.log("Hello, world!");\n',
88
+ newString: '\n',
89
+ },
90
+ {
91
+ oldString: '\nfoo:',
92
+ newString: '\nbar:',
93
+ allowMultiple: true,
94
+ },
95
+ ],
96
+ },
97
+ endsAgentStep,
98
+ })}
99
+ `.trim()
100
+
101
+ export const strReplaceParams = {
102
+ toolName,
103
+ endsAgentStep,
104
+ description,
105
+ inputSchema,
106
+ outputSchema: jsonToolResultSchema(updateFileResultSchema),
107
+ } satisfies $ToolParams
@@ -0,0 +1,97 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { $getNativeToolCallExampleString, coerceToArray, jsonToolResultSchema } from '../utils'
4
+
5
+ import type { $ToolParams } from '../../constants'
6
+
7
+ const toolName = 'suggest_followups'
8
+ const endsAgentStep = false
9
+
10
+ const followupSchema = z.object({
11
+ prompt: z
12
+ .string()
13
+ .describe(
14
+ 'The prompt text to send as a user message when clicked. Keep it short and goal-oriented — one sentence naming the outcome, not the steps to get there',
15
+ ),
16
+ label: z
17
+ .string()
18
+ .optional()
19
+ .describe(
20
+ 'Short display label for the card (defaults to truncated prompt if not provided)',
21
+ ),
22
+ })
23
+
24
+ export type SuggestFollowup = z.infer<typeof followupSchema>
25
+
26
+ const inputSchema = z
27
+ .object({
28
+ followups: z
29
+ .preprocess(
30
+ coerceToArray,
31
+ z
32
+ .array(followupSchema)
33
+ .min(1, 'Must provide at least one followup'),
34
+ )
35
+ .describe(
36
+ 'List of suggested followup prompts the user can click to send',
37
+ ),
38
+ })
39
+ .describe(
40
+ `Suggest clickable followup prompts to the user. Each followup becomes a card the user can click to send that prompt.`,
41
+ )
42
+
43
+ const outputSchema = z.object({
44
+ message: z.string(),
45
+ })
46
+
47
+ const description = `
48
+ Suggest clickable followup prompts to the user. When the user clicks a suggestion, it sends that prompt as a new user message.
49
+
50
+ Use this tool after completing a task to suggest what the user might want to do next. Good suggestions include:
51
+ - Alternatives to the latest implementation like "Cache the data in local storage instead"
52
+ - Related features like "Show the state data in a hover card"
53
+ - Cleanup opportunities like "Split app.ts into focused modules"
54
+ - Testing suggestions like "Add unit tests for this change"
55
+ - Verification you can run yourself like "Check the login flow in the browser and fix what breaks"
56
+ - "Continue with the next step" - when there are more steps in a plan
57
+
58
+ Keep every suggestion short and goal-oriented: one sentence naming the outcome you want, not the steps to get there. Whoever picks up the prompt does better work when free to choose the approach, so leave out file paths, function names, ordering, and design decisions unless one of those is the actual point of the request. A prompt still has to stand on its own — name the target clearly, just don't narrate a plan.
59
+
60
+ Don't include suggestions like:
61
+ - "Commit these changes"
62
+ - Anything the user would have to carry out themselves, like "Ask your designer whether this matches the spec" — as opposed to "Add test coverage for the login flow", which is a goal the assistant can own. Judge by the tools you actually have: work you can do yourself is a goal, not a chore.
63
+
64
+ Try to make different suggestions than you did in past steps. That's because users can still click previous suggestions if they want to.
65
+
66
+ Aim for around 3 suggestions. The suggestions persist and remain clickable, with clicked ones visually updated to show they were used.
67
+
68
+ ${$getNativeToolCallExampleString({
69
+ toolName,
70
+ inputSchema,
71
+ input: {
72
+ followups: [
73
+ {
74
+ prompt: 'Continue with the next step',
75
+ label: 'Continue',
76
+ },
77
+ {
78
+ prompt: 'Add unit tests for UserService',
79
+ label: 'Add tests',
80
+ },
81
+ {
82
+ prompt: 'Pull the auth logic out of the request handler',
83
+ label: 'Refactor auth',
84
+ },
85
+ ],
86
+ },
87
+ endsAgentStep,
88
+ })}
89
+ `.trim()
90
+
91
+ export const suggestFollowupsParams = {
92
+ toolName,
93
+ endsAgentStep,
94
+ description,
95
+ inputSchema,
96
+ outputSchema: jsonToolResultSchema(outputSchema),
97
+ } satisfies $ToolParams
@@ -0,0 +1,61 @@
1
+ import z from 'zod/v4'
2
+
3
+ import {
4
+ $getNativeToolCallExampleString,
5
+ textToolResultSchema,
6
+ } from '../utils'
7
+
8
+ import type { $ToolParams } from '../../constants'
9
+
10
+ const toolName = 'task_completed'
11
+ const endsAgentStep = true
12
+ const inputSchema = z.object({}).describe(
13
+ `Signal that the task is complete. Use this tool when:
14
+ - The user's request is completely fulfilled
15
+ - You need clarification from the user before continuing
16
+ - You are stuck or need help from the user to continue
17
+
18
+ This tool explicitly marks the end of your work on the current task.`,
19
+ )
20
+ const description = `
21
+ Use this tool to signal that the task is complete.
22
+
23
+ - When to use:
24
+ * The user's request is completely fulfilled and you have nothing more to do
25
+ * You need clarification from the user before continuing
26
+ * You need help from the user to continue (e.g., missing information, unclear requirements)
27
+ * You've encountered a blocker that requires user intervention
28
+
29
+ - Before calling:
30
+ * Ensure all pending work is finished
31
+ * Resolve all tool results
32
+ * Provide any outputs or summaries the user needs
33
+
34
+ - Effect: Signals completion of the current task and returns control to the user
35
+
36
+ *EXAMPLE USAGE*:
37
+
38
+ All changes have been implemented and tested successfully!
39
+
40
+ ${$getNativeToolCallExampleString({ toolName, inputSchema, input: {}, endsAgentStep })}
41
+
42
+ OR
43
+
44
+ I need more information to proceed. Which database schema should I use for this migration?
45
+
46
+ ${$getNativeToolCallExampleString({ toolName, inputSchema, input: {}, endsAgentStep })}
47
+
48
+ OR
49
+
50
+ I can't get the tests to pass after several different attempts. I need help from the user to proceed.
51
+
52
+ ${$getNativeToolCallExampleString({ toolName, inputSchema, input: {}, endsAgentStep })}
53
+ `.trim()
54
+
55
+ export const taskCompletedParams = {
56
+ toolName,
57
+ endsAgentStep,
58
+ description,
59
+ inputSchema,
60
+ outputSchema: textToolResultSchema(),
61
+ } satisfies $ToolParams
@@ -0,0 +1,56 @@
1
+ import z from 'zod/v4'
2
+
3
+ import {
4
+ $getNativeToolCallExampleString,
5
+ textToolResultSchema,
6
+ } from '../utils'
7
+
8
+ import type { $ToolParams } from '../../constants'
9
+
10
+ const toolName = 'think_deeply'
11
+ const endsAgentStep = false
12
+ const inputSchema = z
13
+ .object({
14
+ thought: z
15
+ .string()
16
+ .min(1, 'Thought cannot be empty')
17
+ .describe(
18
+ `Detailed step-by-step analysis. Initially keep each step concise (max ~5-7 words per step).`,
19
+ ),
20
+ })
21
+ .describe(
22
+ `Deeply consider complex tasks by brainstorming approaches and tradeoffs step-by-step.`,
23
+ )
24
+ const description = `
25
+ Use when user request:
26
+ - Explicitly asks for deep planning.
27
+ - Requires multi-file changes or complex logic.
28
+ - Involves significant architecture or potential edge cases.
29
+
30
+ Avoid for simple changes (e.g., single functions, minor edits).
31
+
32
+ This tool does not generate a tool result.
33
+
34
+ Example:
35
+ ${$getNativeToolCallExampleString({
36
+ toolName,
37
+ inputSchema,
38
+ input: {
39
+ thought: [
40
+ '1. Check current user authentication',
41
+ '2. Refactor auth logic into module',
42
+ '3. Update imports across project',
43
+ '4. Add tests for new module',
44
+ ].join('\n'),
45
+ },
46
+ endsAgentStep,
47
+ })}
48
+ `.trim()
49
+
50
+ export const thinkDeeplyParams = {
51
+ toolName,
52
+ endsAgentStep,
53
+ description,
54
+ inputSchema,
55
+ outputSchema: textToolResultSchema(),
56
+ } satisfies $ToolParams
@@ -0,0 +1,89 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
4
+
5
+ import type { $ToolParams } from '../../constants'
6
+
7
+ const toolName = 'update_subgoal'
8
+ const endsAgentStep = false
9
+ const inputSchema = z
10
+ .object({
11
+ id: z
12
+ .string()
13
+ .min(1, 'Id cannot be empty')
14
+ .describe(`The id of the subgoal to update.`),
15
+ status: z
16
+ .enum(['NOT_STARTED', 'IN_PROGRESS', 'COMPLETE', 'ABORTED'])
17
+ .optional()
18
+ .describe(`Change the status of the subgoal.`),
19
+ plan: z.string().optional().describe(`Change the plan for the subgoal.`),
20
+ log: z
21
+ .string()
22
+ .optional()
23
+ .describe(
24
+ `Add a log message to the subgoal. This will create a new log entry and append it to the existing logs. Use this to record your progress and any new information you learned as you go.`,
25
+ ),
26
+ })
27
+ .describe(
28
+ `Update a subgoal in the context given the id, and optionally the status or plan, or a new log to append. Feel free to update any combination of the status, plan, or log in one invocation.`,
29
+ )
30
+ const description = `
31
+ Examples:
32
+
33
+ Usage 1 (update status):
34
+ ${$getNativeToolCallExampleString({
35
+ toolName,
36
+ inputSchema,
37
+ input: {
38
+ id: '1',
39
+ status: 'COMPLETE',
40
+ },
41
+ endsAgentStep,
42
+ })}
43
+
44
+ Usage 2 (update plan):
45
+ ${$getNativeToolCallExampleString({
46
+ toolName,
47
+ inputSchema,
48
+ input: {
49
+ id: '3',
50
+ plan: 'Create file for endpoint in the api. Register it in the router.',
51
+ },
52
+ endsAgentStep,
53
+ })}
54
+
55
+ Usage 3 (add log):
56
+ ${$getNativeToolCallExampleString({
57
+ toolName,
58
+ inputSchema,
59
+ input: {
60
+ id: '1',
61
+ log: 'Found the error in the tests. Culprit: foo function.',
62
+ },
63
+ endsAgentStep,
64
+ })}
65
+
66
+ Usage 4 (update status and add log):
67
+ ${$getNativeToolCallExampleString({
68
+ toolName,
69
+ inputSchema,
70
+ input: {
71
+ id: '1',
72
+ status: 'COMPLETE',
73
+ log: 'Reran the tests (passed)',
74
+ },
75
+ endsAgentStep,
76
+ })}
77
+ `.trim()
78
+
79
+ export const updateSubgoalParams = {
80
+ toolName,
81
+ endsAgentStep,
82
+ description,
83
+ inputSchema,
84
+ outputSchema: jsonToolResultSchema(
85
+ z.object({
86
+ message: z.string(),
87
+ }),
88
+ ),
89
+ } satisfies $ToolParams