@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,39 @@
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 = 'add_message'
11
+ const endsAgentStep = true
12
+ const inputSchema = z
13
+ .object({
14
+ role: z.enum(['user', 'assistant']),
15
+ content: z.string(),
16
+ })
17
+ .describe(
18
+ `Add a new message to the conversation history. To be used for complex requests that can't be solved in a single step, as you may forget what happened!`,
19
+ )
20
+ const description = `
21
+ Example:
22
+ ${$getNativeToolCallExampleString({
23
+ toolName,
24
+ inputSchema,
25
+ input: {
26
+ role: 'user',
27
+ content: 'Hello, how are you?',
28
+ },
29
+ endsAgentStep,
30
+ })}
31
+ `.trim()
32
+
33
+ export const addMessageParams = {
34
+ toolName,
35
+ endsAgentStep,
36
+ description,
37
+ inputSchema,
38
+ outputSchema: textToolResultSchema(),
39
+ } satisfies $ToolParams
@@ -0,0 +1,57 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
4
+
5
+ import type { $ToolParams } from '../../constants'
6
+
7
+ const toolName = 'add_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(
15
+ `A unique identifier for the subgoal. Try to choose the next sequential integer that is not already in use.`,
16
+ ),
17
+ objective: z
18
+ .string()
19
+ .min(1, 'Objective cannot be empty')
20
+ .describe(`The objective of the subgoal, concisely and clearly stated.`),
21
+ status: z
22
+ .enum(['NOT_STARTED', 'IN_PROGRESS', 'COMPLETE', 'ABORTED'])
23
+ .describe(`The status of the subgoal.`),
24
+ plan: z.string().optional().describe('A plan for the subgoal.'),
25
+ log: z
26
+ .string()
27
+ .optional()
28
+ .describe('A log message for the subgoal progress.'),
29
+ })
30
+ .describe(
31
+ `Add a new subgoal for tracking progress. To be used for complex requests that can't be solved in a single step, as you may forget what happened!`,
32
+ )
33
+ const description = `
34
+ Example:
35
+ ${$getNativeToolCallExampleString({
36
+ toolName,
37
+ inputSchema,
38
+ input: {
39
+ id: '1',
40
+ objective: 'Add a new "deploy api" subgoal',
41
+ status: 'IN_PROGRESS',
42
+ },
43
+ endsAgentStep,
44
+ })}
45
+ `.trim()
46
+
47
+ export const addSubgoalParams = {
48
+ toolName,
49
+ endsAgentStep,
50
+ description,
51
+ inputSchema,
52
+ outputSchema: jsonToolResultSchema(
53
+ z.object({
54
+ message: z.string(),
55
+ }),
56
+ ),
57
+ } satisfies $ToolParams
@@ -0,0 +1,110 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
4
+
5
+ import type { $ToolParams } from '../../constants'
6
+
7
+ export const applyPatchResultSchema = z.union([
8
+ z.object({
9
+ message: z.string(),
10
+ applied: z.array(
11
+ z.object({
12
+ file: z.string(),
13
+ action: z.enum(['add', 'update', 'delete']),
14
+ }),
15
+ ),
16
+ }),
17
+ z.object({
18
+ errorMessage: z.string(),
19
+ }),
20
+ ])
21
+
22
+ const toolName = 'apply_patch'
23
+ const endsAgentStep = false
24
+
25
+ const operationSchema = z.discriminatedUnion('type', [
26
+ z.object({
27
+ type: z.literal('create_file'),
28
+ path: z.string().min(1, 'Path cannot be empty'),
29
+ diff: z.string().min(1, 'Diff cannot be empty'),
30
+ }),
31
+ z.object({
32
+ type: z.literal('update_file'),
33
+ path: z.string().min(1, 'Path cannot be empty'),
34
+ diff: z.string().min(1, 'Diff cannot be empty'),
35
+ }),
36
+ z.object({
37
+ type: z.literal('delete_file'),
38
+ path: z.string().min(1, 'Path cannot be empty'),
39
+ }),
40
+ ])
41
+
42
+ export type ApplyPatchOperation = z.infer<typeof operationSchema>
43
+
44
+ const inputSchema = z
45
+ .object({
46
+ operation: operationSchema.describe(
47
+ 'The file operation to perform. type is one of create_file, update_file, or delete_file.',
48
+ ),
49
+ })
50
+ .describe('Apply a file operation (create, update, or delete).')
51
+
52
+ const description = `
53
+ Use this tool to apply file operations using Codex-style apply_patch format.
54
+
55
+ Each call performs a single operation on one file.
56
+
57
+ Operation types:
58
+ - create_file: Create a new file. Requires path and diff (lines prefixed with +).
59
+ - update_file: Update an existing file. Requires path and diff (unified diff with @@ hunks).
60
+ - delete_file: Delete a file. Requires only path.
61
+
62
+ Example (create):
63
+ ${$getNativeToolCallExampleString({
64
+ toolName,
65
+ inputSchema,
66
+ input: {
67
+ operation: {
68
+ type: 'create_file',
69
+ path: 'hello.txt',
70
+ diff: '@@\n+Hello world\n',
71
+ },
72
+ },
73
+ endsAgentStep,
74
+ })}
75
+
76
+ Example (update):
77
+ ${$getNativeToolCallExampleString({
78
+ toolName,
79
+ inputSchema,
80
+ input: {
81
+ operation: {
82
+ type: 'update_file',
83
+ path: 'lib/fib.py',
84
+ diff: '@@\n-def fib(n):\n+def fibonacci(n):\n if n <= 1:\n return n\n- return fib(n-1) + fib(n-2)\n+ return fibonacci(n-1) + fibonacci(n-2)\n',
85
+ },
86
+ },
87
+ endsAgentStep,
88
+ })}
89
+
90
+ Example (delete):
91
+ ${$getNativeToolCallExampleString({
92
+ toolName,
93
+ inputSchema,
94
+ input: {
95
+ operation: {
96
+ type: 'delete_file',
97
+ path: 'old-file.txt',
98
+ },
99
+ },
100
+ endsAgentStep,
101
+ })}
102
+ `.trim()
103
+
104
+ export const applyPatchParams = {
105
+ toolName,
106
+ endsAgentStep,
107
+ description,
108
+ inputSchema,
109
+ outputSchema: jsonToolResultSchema(applyPatchResultSchema),
110
+ } satisfies $ToolParams
@@ -0,0 +1,181 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { $getNativeToolCallExampleString, coerceToArray, jsonToolResultSchema } from '../utils'
4
+
5
+ import type { $ToolParams } from '../../constants'
6
+
7
+ export const questionSchema = z.object({
8
+ question: z.string().describe('The question to ask the user'),
9
+ header: z
10
+ .string()
11
+ .max(18)
12
+ .optional()
13
+ .describe(
14
+ // Tell the llm 12 chars so that if it goes over slightly, it will still be under the max.
15
+ 'Short label (max 12 chars) displayed as a chip/tag. Example: "Auth method"',
16
+ ),
17
+ options: z
18
+ .preprocess(
19
+ coerceToArray,
20
+ z
21
+ .object({
22
+ label: z.string().describe('The display text for this option'),
23
+ description: z
24
+ .string()
25
+ .optional()
26
+ .describe('Explanation shown when option is focused'),
27
+ })
28
+ .array()
29
+ .refine((opts) => opts.length >= 2, {
30
+ message: 'Each question must have at least 2 options',
31
+ }),
32
+ )
33
+ .describe('Array of answer options with label and optional description.'),
34
+
35
+ multiSelect: z
36
+ .boolean()
37
+ .default(false)
38
+ .describe(
39
+ 'If true, allows selecting multiple options (checkbox). If false, single selection only (radio).',
40
+ ),
41
+ validation: z
42
+ .object({
43
+ maxLength: z
44
+ .number()
45
+ .optional()
46
+ .describe('Maximum length for "Other" text input'),
47
+ minLength: z
48
+ .number()
49
+ .optional()
50
+ .describe('Minimum length for "Other" text input'),
51
+ pattern: z
52
+ .string()
53
+ .optional()
54
+ .describe('Regex pattern for "Other" text input'),
55
+ patternError: z
56
+ .string()
57
+ .optional()
58
+ .describe('Custom error message when pattern fails'),
59
+ })
60
+ .optional()
61
+ .describe('Validation rules for "Other" text input'),
62
+ })
63
+
64
+ export type AskUserQuestion = z.infer<typeof questionSchema>
65
+
66
+ const toolName = 'ask_user'
67
+ const endsAgentStep = true
68
+ const inputSchema = z
69
+ .object({
70
+ questions: z
71
+ .preprocess(
72
+ coerceToArray,
73
+ z
74
+ .array(questionSchema)
75
+ .min(1, 'Must provide at least one question'),
76
+ )
77
+ .describe('List of multiple choice questions to ask the user'),
78
+ })
79
+ .describe(
80
+ 'Ask the user a list of multiple choice questions. Each question must have at least 2 options. The agent execution will pause until the user submits their answers.',
81
+ )
82
+
83
+ const outputSchema = z.object({
84
+ answers: z
85
+ .array(
86
+ z.object({
87
+ questionIndex: z.number(),
88
+ selectedOption: z
89
+ .string()
90
+ .optional()
91
+ .describe('The selected option text (single-select mode)'),
92
+ selectedOptions: z
93
+ .array(z.string())
94
+ .optional()
95
+ .describe('Array of selected option texts (multi-select mode)'),
96
+ otherText: z
97
+ .string()
98
+ .optional()
99
+ .describe('Custom text input (if user typed their own answer)'),
100
+ }),
101
+ )
102
+ .optional()
103
+ .describe(
104
+ 'Array of user answers, one per question. Each answer has either selectedOption (single), selectedOptions (multi), or otherText.',
105
+ ),
106
+ skipped: z
107
+ .boolean()
108
+ .optional()
109
+ .describe('True if user skipped the questions'),
110
+ })
111
+
112
+ const description = `
113
+ Ask the user multiple choice questions and pause execution until they respond. Supports both single-select (radio) and multi-select (checkbox) modes.
114
+
115
+ The user can either:
116
+ - Select one option (single-select mode, default)
117
+ - Select multiple options (multi-select mode, set multiSelect: true)
118
+ - Type a custom answer in the "Other" text field
119
+ - Skip the questions to provide different instructions instead
120
+
121
+ IMPORTANT: Do NOT include options like "Custom", "Other", "None of the above", or similar catch-all options. The UI automatically provides a "Custom" text input field for users to type their own answer. Including such options would be redundant and confusing.
122
+
123
+ Single-select example:
124
+ ${$getNativeToolCallExampleString({
125
+ toolName,
126
+ inputSchema,
127
+ input: {
128
+ questions: [
129
+ {
130
+ question: 'Which authentication method should we use?',
131
+ header: 'Auth method',
132
+ options: [
133
+ {
134
+ label: 'JWT tokens',
135
+ description: 'Stateless tokens stored in localStorage',
136
+ },
137
+ {
138
+ label: 'Session cookies',
139
+ description: 'Server-side sessions with httpOnly cookies',
140
+ },
141
+ {
142
+ label: 'OAuth2',
143
+ description: 'Third-party authentication (Google, GitHub, etc.)',
144
+ },
145
+ ],
146
+ },
147
+ ],
148
+ },
149
+ endsAgentStep,
150
+ })}
151
+
152
+ Multi-select example:
153
+ ${$getNativeToolCallExampleString({
154
+ toolName,
155
+ inputSchema,
156
+ input: {
157
+ questions: [
158
+ {
159
+ question: 'Which features should we implement?',
160
+ header: 'Features',
161
+ options: [
162
+ { label: 'Rate limiting' },
163
+ { label: 'Caching' },
164
+ { label: 'Logging' },
165
+ { label: 'Monitoring' },
166
+ ],
167
+ multiSelect: true,
168
+ },
169
+ ],
170
+ },
171
+ endsAgentStep,
172
+ })}
173
+ `.trim()
174
+
175
+ export const askUserParams = {
176
+ toolName,
177
+ endsAgentStep,
178
+ description,
179
+ inputSchema,
180
+ outputSchema: jsonToolResultSchema(outputSchema),
181
+ } satisfies $ToolParams
@@ -0,0 +1,85 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { BrowserResponseSchema } from '../../../browser-actions'
4
+ import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
5
+
6
+ import type { $ToolParams } from '../../constants'
7
+
8
+ const toolName = 'browser_logs'
9
+ const endsAgentStep = true
10
+ const inputSchema = z.object({
11
+ type: z
12
+ .string()
13
+ .min(1, 'Type cannot be empty')
14
+ .describe('The type of browser action to perform (e.g., "navigate").'),
15
+ url: z
16
+ .string()
17
+ .min(1, 'URL cannot be empty')
18
+ .describe('The URL to navigate to.'),
19
+ waitUntil: z
20
+ .enum(['load', 'domcontentloaded', 'networkidle0'])
21
+ .optional()
22
+ .describe("When to consider navigation successful. Defaults to 'load'."),
23
+ })
24
+ const description = `
25
+ Purpose: Use this tool to check the output of console.log or errors in order to debug issues, test functionality, or verify expected behavior.
26
+
27
+ IMPORTANT: Assume the user's development server is ALREADY running and active, unless you see logs indicating otherwise. Never start the user's development server for them, unless they ask you to do so.
28
+ Never offer to interact with the website aside from reading them (see available actions below). The user will manipulate the website themselves and bring you to the UI they want you to interact with.
29
+
30
+ ### Response Analysis
31
+
32
+ After each action, you'll receive:
33
+ 1. Success/failure status
34
+ 2. New console logs since last action
35
+ 3. Network requests and responses
36
+ 4. JavaScript errors with stack traces
37
+
38
+ Use this data to:
39
+ - Verify expected behavior
40
+ - Debug issues
41
+ - Guide next actions
42
+ - Make informed decisions about fixes
43
+
44
+ ### Best Practices
45
+
46
+ **Workflow**
47
+ - Navigate to the user's website, probably on localhost, but you can compare with the production site if you want.
48
+ - Scroll to the relevant section
49
+ - Take screenshots and analyze confirm changes
50
+ - Check network requests for anomalies
51
+
52
+ **Debugging Flow**
53
+ - Start with minimal reproduction steps
54
+ - Collect data at each step
55
+ - Analyze results before next action
56
+ - Take screenshots to track your changes after each UI change you make
57
+
58
+ There is currently only one type of browser action available:
59
+ Navigate:
60
+ - Load a new URL in the current browser window and get the logs after page load.
61
+ Params:
62
+ - \`type\`: (required) Must be equal to 'navigate'
63
+ - \`url\`: (required) The URL to navigate to.
64
+ - \`waitUntil\`: (required) One of 'load', 'domcontentloaded', 'networkidle0'
65
+
66
+ Example:
67
+ ${$getNativeToolCallExampleString({
68
+ toolName,
69
+ inputSchema,
70
+ input: {
71
+ type: 'navigate',
72
+ url: 'localhost:3000',
73
+ waitUntil: 'domcontentloaded',
74
+ },
75
+ endsAgentStep,
76
+ })}
77
+ `.trim()
78
+
79
+ export const browserLogsParams = {
80
+ toolName,
81
+ endsAgentStep,
82
+ description,
83
+ inputSchema,
84
+ outputSchema: jsonToolResultSchema(BrowserResponseSchema),
85
+ } satisfies $ToolParams
@@ -0,0 +1,94 @@
1
+ import z from 'zod/v4'
2
+
3
+ import { $getNativeToolCallExampleString, jsonToolResultSchema } from '../utils'
4
+
5
+ import type { $ToolParams } from '../../constants'
6
+
7
+ const toolName = 'cloud_plan_ready'
8
+ const endsAgentStep = true
9
+
10
+ const inputSchema = z.object({
11
+ summary: z
12
+ .string()
13
+ .min(1)
14
+ .describe(
15
+ 'One short user-facing sentence describing the agreed product. Put implementation detail in build_prompt.',
16
+ ),
17
+ stack: z
18
+ .array(z.string().min(1))
19
+ .min(1)
20
+ .describe('The agreed frameworks, services, and infrastructure choices.'),
21
+ build_prompt: z
22
+ .string()
23
+ .min(1)
24
+ .describe(
25
+ 'A complete implementation brief for the coding agent that will build the project.',
26
+ ),
27
+ required_integrations: z
28
+ .array(
29
+ z.object({
30
+ search_id: z
31
+ .string()
32
+ .trim()
33
+ .min(1)
34
+ .describe(
35
+ 'The exact search_id from the Gravity search that recommended this service.',
36
+ ),
37
+ slug: z
38
+ .string()
39
+ .trim()
40
+ .min(1)
41
+ .describe('The exact Gravity recommendation slug.'),
42
+ }),
43
+ )
44
+ // Defaulted rather than required: a planner that cannot cite a search_id
45
+ // must still be able to finalize. An incomplete credential list only costs
46
+ // the user a manual env var later, while a blocked call costs them the
47
+ // Start building button entirely.
48
+ .default([])
49
+ .describe(
50
+ 'Every selected Gravity service whose recommendation returned required API keys or environment variables. Pass [] when the plan needs no credential-bearing external service, or when you have no exact search_id to cite.',
51
+ ),
52
+ })
53
+
54
+ const outputSchema = z.object({ message: z.string() })
55
+
56
+ const description = `
57
+ Mark a blank Anvil Cloud project plan as ready for the user to approve.
58
+
59
+ Call this once you know what the product does and which technologies it uses:
60
+ - You understand the product, its users, and its core flows.
61
+ - You chose every technology in the stack with gravity_index.
62
+ - You presented the stack and answered the user's questions about it.
63
+
64
+ This does not start implementation. It makes a "Start building" button appear
65
+ for the user, and that button is how the user approves the plan — do not ask
66
+ them to confirm the plan before calling this, and never end a turn saying you
67
+ are ready to finalize instead of calling it.
68
+
69
+ ${$getNativeToolCallExampleString({
70
+ toolName,
71
+ inputSchema,
72
+ input: {
73
+ summary: 'A collaborative booking app for independent music teachers.',
74
+ stack: ['React', 'Vite', 'Supabase', 'Resend'],
75
+ build_prompt:
76
+ 'Build the agreed booking app with teacher availability, student booking, authentication, and transactional email.',
77
+ required_integrations: [
78
+ {
79
+ search_id: 'search_id_from_gravity_index',
80
+ slug: 'resend',
81
+ },
82
+ ],
83
+ },
84
+ endsAgentStep,
85
+ })}
86
+ `.trim()
87
+
88
+ export const cloudPlanReadyParams = {
89
+ toolName,
90
+ endsAgentStep,
91
+ description,
92
+ inputSchema,
93
+ outputSchema: jsonToolResultSchema(outputSchema),
94
+ } satisfies $ToolParams