@vibecodr/cli 0.2.11 → 1.0.0-rc.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 (256) hide show
  1. package/CHANGELOG.md +53 -23
  2. package/MIGRATION.md +73 -0
  3. package/README.md +89 -72
  4. package/dist/auth/official-client.d.ts +6 -0
  5. package/dist/auth/official-client.d.ts.map +1 -0
  6. package/dist/auth/official-client.js +1 -0
  7. package/dist/auth/official-client.js.map +1 -0
  8. package/dist/auth/token-manager.d.ts +40 -0
  9. package/dist/auth/token-manager.d.ts.map +1 -0
  10. package/dist/auth/token-manager.js +1 -2
  11. package/dist/auth/token-manager.js.map +1 -0
  12. package/dist/bin/vc-tools.d.ts +3 -0
  13. package/dist/bin/vc-tools.d.ts.map +1 -0
  14. package/dist/bin/vc-tools.js +7 -0
  15. package/dist/bin/vc-tools.js.map +1 -0
  16. package/dist/bin/vibecodr-mcp.d.ts +3 -0
  17. package/dist/bin/vibecodr-mcp.d.ts.map +1 -0
  18. package/dist/bin/vibecodr-mcp.js +37 -0
  19. package/dist/bin/vibecodr-mcp.js.map +1 -0
  20. package/dist/cli/errors.d.ts +28 -0
  21. package/dist/cli/errors.d.ts.map +1 -0
  22. package/dist/cli/errors.js +1 -0
  23. package/dist/cli/errors.js.map +1 -0
  24. package/dist/cli/output.d.ts +16 -0
  25. package/dist/cli/output.d.ts.map +1 -0
  26. package/dist/cli/output.js +1 -0
  27. package/dist/cli/output.js.map +1 -0
  28. package/dist/cli/parse.d.ts +18 -0
  29. package/dist/cli/parse.d.ts.map +1 -0
  30. package/dist/cli/parse.js +1 -0
  31. package/dist/cli/parse.js.map +1 -0
  32. package/dist/clients/base.d.ts +20 -0
  33. package/dist/clients/base.d.ts.map +1 -0
  34. package/dist/clients/base.js +1 -0
  35. package/dist/clients/base.js.map +1 -0
  36. package/dist/clients/claude-code.d.ts +5 -0
  37. package/dist/clients/claude-code.d.ts.map +1 -0
  38. package/dist/clients/claude-code.js +88 -0
  39. package/dist/clients/claude-code.js.map +1 -0
  40. package/dist/clients/claude-desktop.d.ts +5 -0
  41. package/dist/clients/claude-desktop.d.ts.map +1 -0
  42. package/dist/clients/claude-desktop.js +97 -0
  43. package/dist/clients/claude-desktop.js.map +1 -0
  44. package/dist/clients/codex.d.ts +5 -0
  45. package/dist/clients/codex.d.ts.map +1 -0
  46. package/dist/clients/codex.js +1 -0
  47. package/dist/clients/codex.js.map +1 -0
  48. package/dist/clients/cursor.d.ts +5 -0
  49. package/dist/clients/cursor.d.ts.map +1 -0
  50. package/dist/clients/cursor.js +1 -1
  51. package/dist/clients/cursor.js.map +1 -0
  52. package/dist/clients/vscode.d.ts +5 -0
  53. package/dist/clients/vscode.d.ts.map +1 -0
  54. package/dist/clients/vscode.js +5 -1
  55. package/dist/clients/vscode.js.map +1 -0
  56. package/dist/clients/windsurf.d.ts +5 -0
  57. package/dist/clients/windsurf.d.ts.map +1 -0
  58. package/dist/clients/windsurf.js +1 -0
  59. package/dist/clients/windsurf.js.map +1 -0
  60. package/dist/commands/call.d.ts +9 -0
  61. package/dist/commands/call.d.ts.map +1 -0
  62. package/dist/commands/call.js +1 -0
  63. package/dist/commands/call.js.map +1 -0
  64. package/dist/commands/config.d.ts +3 -0
  65. package/dist/commands/config.d.ts.map +1 -0
  66. package/dist/commands/config.js +1 -0
  67. package/dist/commands/config.js.map +1 -0
  68. package/dist/commands/context.d.ts +15 -0
  69. package/dist/commands/context.d.ts.map +1 -0
  70. package/dist/commands/context.js +2 -5
  71. package/dist/commands/context.js.map +1 -0
  72. package/dist/commands/doctor.d.ts +3 -0
  73. package/dist/commands/doctor.d.ts.map +1 -0
  74. package/dist/commands/doctor.js +2 -1
  75. package/dist/commands/doctor.js.map +1 -0
  76. package/dist/commands/help.d.ts +3 -0
  77. package/dist/commands/help.d.ts.map +1 -0
  78. package/dist/commands/help.js +1 -0
  79. package/dist/commands/help.js.map +1 -0
  80. package/dist/commands/install.d.ts +3 -0
  81. package/dist/commands/install.d.ts.map +1 -0
  82. package/dist/commands/install.js +23 -5
  83. package/dist/commands/install.js.map +1 -0
  84. package/dist/commands/login.d.ts +3 -0
  85. package/dist/commands/login.d.ts.map +1 -0
  86. package/dist/commands/login.js +1 -0
  87. package/dist/commands/login.js.map +1 -0
  88. package/dist/commands/logout.d.ts +3 -0
  89. package/dist/commands/logout.d.ts.map +1 -0
  90. package/dist/commands/logout.js +1 -0
  91. package/dist/commands/logout.js.map +1 -0
  92. package/dist/commands/pulse-publish.d.ts +3 -0
  93. package/dist/commands/pulse-publish.d.ts.map +1 -0
  94. package/dist/commands/pulse-publish.js +1 -0
  95. package/dist/commands/pulse-publish.js.map +1 -0
  96. package/dist/commands/pulse-setup.d.ts +3 -0
  97. package/dist/commands/pulse-setup.d.ts.map +1 -0
  98. package/dist/commands/pulse-setup.js +5 -3
  99. package/dist/commands/pulse-setup.js.map +1 -0
  100. package/dist/commands/pulse.d.ts +3 -0
  101. package/dist/commands/pulse.d.ts.map +1 -0
  102. package/dist/commands/pulse.js +1 -0
  103. package/dist/commands/pulse.js.map +1 -0
  104. package/dist/commands/status.d.ts +3 -0
  105. package/dist/commands/status.d.ts.map +1 -0
  106. package/dist/commands/status.js +1 -0
  107. package/dist/commands/status.js.map +1 -0
  108. package/dist/commands/tools.d.ts +3 -0
  109. package/dist/commands/tools.d.ts.map +1 -0
  110. package/dist/commands/tools.js +1 -0
  111. package/dist/commands/tools.js.map +1 -0
  112. package/dist/commands/uninstall.d.ts +3 -0
  113. package/dist/commands/uninstall.d.ts.map +1 -0
  114. package/dist/commands/uninstall.js +12 -4
  115. package/dist/commands/uninstall.js.map +1 -0
  116. package/dist/commands/upload.d.ts +3 -0
  117. package/dist/commands/upload.d.ts.map +1 -0
  118. package/dist/commands/upload.js +1 -0
  119. package/dist/commands/upload.js.map +1 -0
  120. package/dist/commands/whoami.d.ts +3 -0
  121. package/dist/commands/whoami.d.ts.map +1 -0
  122. package/dist/commands/whoami.js +82 -0
  123. package/dist/commands/whoami.js.map +1 -0
  124. package/dist/core/interactive-input.d.ts +7 -0
  125. package/dist/core/interactive-input.d.ts.map +1 -0
  126. package/dist/core/interactive-input.js +1 -0
  127. package/dist/core/interactive-input.js.map +1 -0
  128. package/dist/core/mcp-client.d.ts +17 -0
  129. package/dist/core/mcp-client.d.ts.map +1 -0
  130. package/dist/core/mcp-client.js +1 -0
  131. package/dist/core/mcp-client.js.map +1 -0
  132. package/dist/core/redaction.d.ts +2 -0
  133. package/dist/core/redaction.d.ts.map +1 -0
  134. package/dist/core/redaction.js +36 -2
  135. package/dist/core/redaction.js.map +1 -0
  136. package/dist/core/renderers.d.ts +8 -0
  137. package/dist/core/renderers.d.ts.map +1 -0
  138. package/dist/core/renderers.js +1 -0
  139. package/dist/core/renderers.js.map +1 -0
  140. package/dist/doctor/run.d.ts +10 -0
  141. package/dist/doctor/run.d.ts.map +1 -0
  142. package/dist/doctor/run.js +12 -3
  143. package/dist/doctor/run.js.map +1 -0
  144. package/dist/legacy/cli/errors.d.ts +9 -0
  145. package/dist/legacy/cli/errors.d.ts.map +1 -0
  146. package/dist/legacy/cli/errors.js +23 -0
  147. package/dist/legacy/cli/errors.js.map +1 -0
  148. package/dist/legacy/cli/install.d.ts +24 -0
  149. package/dist/legacy/cli/install.d.ts.map +1 -0
  150. package/dist/legacy/cli/install.js +307 -0
  151. package/dist/legacy/cli/install.js.map +1 -0
  152. package/dist/legacy/cli/output.d.ts +17 -0
  153. package/dist/legacy/cli/output.d.ts.map +1 -0
  154. package/dist/legacy/cli/output.js +36 -0
  155. package/dist/legacy/cli/output.js.map +1 -0
  156. package/dist/legacy/cli/parser.d.ts +33 -0
  157. package/dist/legacy/cli/parser.d.ts.map +1 -0
  158. package/dist/legacy/cli/parser.js +177 -0
  159. package/dist/legacy/cli/parser.js.map +1 -0
  160. package/dist/legacy/cli/run.d.ts +11 -0
  161. package/dist/legacy/cli/run.d.ts.map +1 -0
  162. package/dist/legacy/cli/run.js +2947 -0
  163. package/dist/legacy/cli/run.js.map +1 -0
  164. package/dist/legacy/config/credential-store.d.ts +8 -0
  165. package/dist/legacy/config/credential-store.d.ts.map +1 -0
  166. package/dist/legacy/config/credential-store.js +52 -0
  167. package/dist/legacy/config/credential-store.js.map +1 -0
  168. package/dist/legacy/config/store.d.ts +63 -0
  169. package/dist/legacy/config/store.d.ts.map +1 -0
  170. package/dist/legacy/config/store.js +311 -0
  171. package/dist/legacy/config/store.js.map +1 -0
  172. package/dist/legacy/core/api-client.d.ts +45 -0
  173. package/dist/legacy/core/api-client.d.ts.map +1 -0
  174. package/dist/legacy/core/api-client.js +204 -0
  175. package/dist/legacy/core/api-client.js.map +1 -0
  176. package/dist/legacy/core/contracts.d.ts +488 -0
  177. package/dist/legacy/core/contracts.d.ts.map +1 -0
  178. package/dist/legacy/core/contracts.js +386 -0
  179. package/dist/legacy/core/contracts.js.map +1 -0
  180. package/dist/legacy/core/goal-coverage.d.ts +15 -0
  181. package/dist/legacy/core/goal-coverage.d.ts.map +1 -0
  182. package/dist/legacy/core/goal-coverage.js +169 -0
  183. package/dist/legacy/core/goal-coverage.js.map +1 -0
  184. package/dist/legacy/core/redaction.d.ts +4 -0
  185. package/dist/legacy/core/redaction.d.ts.map +1 -0
  186. package/dist/legacy/core/redaction.js +121 -0
  187. package/dist/legacy/core/redaction.js.map +1 -0
  188. package/dist/legacy/core/validators.d.ts +8 -0
  189. package/dist/legacy/core/validators.d.ts.map +1 -0
  190. package/dist/legacy/core/validators.js +102 -0
  191. package/dist/legacy/core/validators.js.map +1 -0
  192. package/dist/legacy/core/version.d.ts +3 -0
  193. package/dist/legacy/core/version.d.ts.map +1 -0
  194. package/dist/legacy/core/version.js +3 -0
  195. package/dist/legacy/core/version.js.map +1 -0
  196. package/dist/legacy/index.d.ts +8 -0
  197. package/dist/legacy/index.d.ts.map +1 -0
  198. package/dist/legacy/index.js +8 -0
  199. package/dist/legacy/index.js.map +1 -0
  200. package/dist/platform/browser.d.ts +7 -0
  201. package/dist/platform/browser.d.ts.map +1 -0
  202. package/dist/platform/browser.js +1 -0
  203. package/dist/platform/browser.js.map +1 -0
  204. package/dist/platform/exec.d.ts +3 -0
  205. package/dist/platform/exec.d.ts.map +1 -0
  206. package/dist/platform/exec.js +10 -1
  207. package/dist/platform/exec.js.map +1 -0
  208. package/dist/platform/paths.d.ts +9 -0
  209. package/dist/platform/paths.d.ts.map +1 -0
  210. package/dist/platform/paths.js +13 -0
  211. package/dist/platform/paths.js.map +1 -0
  212. package/dist/platform/prompt.d.ts +5 -0
  213. package/dist/platform/prompt.d.ts.map +1 -0
  214. package/dist/platform/prompt.js +1 -0
  215. package/dist/platform/prompt.js.map +1 -0
  216. package/dist/storage/config-store.d.ts +15 -0
  217. package/dist/storage/config-store.d.ts.map +1 -0
  218. package/dist/storage/config-store.js +1 -0
  219. package/dist/storage/config-store.js.map +1 -0
  220. package/dist/storage/file-lock.d.ts +7 -0
  221. package/dist/storage/file-lock.d.ts.map +1 -0
  222. package/dist/storage/file-lock.js +1 -0
  223. package/dist/storage/file-lock.js.map +1 -0
  224. package/dist/storage/install-manifest.d.ts +12 -0
  225. package/dist/storage/install-manifest.d.ts.map +1 -0
  226. package/dist/storage/install-manifest.js +1 -0
  227. package/dist/storage/install-manifest.js.map +1 -0
  228. package/dist/storage/secret-store.d.ts +36 -0
  229. package/dist/storage/secret-store.d.ts.map +1 -0
  230. package/dist/storage/secret-store.js +1 -0
  231. package/dist/storage/secret-store.js.map +1 -0
  232. package/dist/types/auth.d.ts +55 -0
  233. package/dist/types/auth.d.ts.map +1 -0
  234. package/dist/types/auth.js +1 -0
  235. package/dist/types/auth.js.map +1 -0
  236. package/dist/types/config.d.ts +29 -0
  237. package/dist/types/config.d.ts.map +1 -0
  238. package/dist/types/config.js +1 -0
  239. package/dist/types/config.js.map +1 -0
  240. package/dist/types/install.d.ts +26 -0
  241. package/dist/types/install.d.ts.map +1 -0
  242. package/dist/types/install.js +1 -0
  243. package/dist/types/install.js.map +1 -0
  244. package/docs/API-CONTRACT.md +606 -0
  245. package/docs/CLOUDFLARE-PRIMITIVE-FIT.md +212 -0
  246. package/docs/RELEASE-CHECKLIST.md +297 -0
  247. package/docs/SECURITY.md +227 -0
  248. package/docs/VALIDATION-MATRIX.md +58 -0
  249. package/docs/commands.md +49 -29
  250. package/docs/legacy/AGENT-TOOLKIT-RFC.md +1395 -0
  251. package/docs/legacy/CLI-GUIDELINES-AUDIT.md +95 -0
  252. package/docs/legacy/COMPLETION-AUDIT.md +542 -0
  253. package/docs/legacy/vc-tools-finetune.md +982 -0
  254. package/docs/legacy/vc-tools-goal-browser-run-containers.md +465 -0
  255. package/docs/legacy/vc-tools-goal-original.md +249 -0
  256. package/package.json +37 -8
@@ -0,0 +1,249 @@
1
+ # Browser Run on Containers vc-tools Goal
2
+
3
+ Date: 2026-05-14
4
+ Repo: `C:\Users\brade\OneDrive\Desktop\vibecodr\tools\vc-tools`
5
+ Package: `@vibecodr/vc-tools`
6
+ Binary: `vc-tools`
7
+
8
+ ## Objective
9
+
10
+ Make `vc-tools` line up with the current Cloudflare Browser Run on Containers
11
+ reality while preserving Vibecodr Tools Cloud's product boundary:
12
+
13
+ - the CLI remains a local control plane for hosted work;
14
+ - Browser Run and Sandbox execution stay behind the hosted service;
15
+ - agents get broad useful public-web browser access by default;
16
+ - Vibecodr infrastructure, private networks, credentials, authenticated
17
+ sessions, recordings, and provider secrets stay isolated unless an explicit
18
+ future grant says otherwise;
19
+ - every changed behavior has tests, docs, and validation evidence.
20
+
21
+ Canonical product sentence:
22
+
23
+ > Broad public-web access, strict infrastructure isolation.
24
+
25
+ Useful public phrasing:
26
+
27
+ > Hosted browser checks that return artifacts: agents can inspect, render,
28
+ > screenshot, crawl, and prove public web surfaces without crossing into private
29
+ > networks, user accounts, or Vibecodr infrastructure unless an explicit grant
30
+ > exists.
31
+
32
+ ## Current Cloudflare Facts
33
+
34
+ Cloudflare's 2026-05-13 Browser Run on Containers launch changes the operating
35
+ assumptions for `vc-tools`:
36
+
37
+ - Browser Run now runs on Cloudflare Containers, with higher platform capacity,
38
+ faster Quick Actions, and no customer code migration required.
39
+ - Workers Paid Browser Sessions can run up to 120 concurrent browsers per
40
+ account, but Browser Sessions carry separate concurrency pricing and remain
41
+ a Pro/beta lane for Vibecodr.
42
+ - Quick Actions are still the right default for `vc-tools` v1 stateless browser
43
+ work. They return `X-Browser-Ms-Used` for metering and are limited by
44
+ request-rate behavior rather than Browser Session concurrency billing.
45
+ - Quick Actions have separate timeout knobs: navigation `goToOptions.timeout`
46
+ maxes at 60 seconds, while `actionTimeout` and `PDFOptions.timeout` can go to
47
+ five minutes.
48
+ - `/crawl` is a real Browser Run Quick Action. It starts an async provider crawl
49
+ job, is fetched through a result endpoint, supports limits/depth/formats, and
50
+ has its own crawler identity and bot detection ID.
51
+ - Browser Run requests self-identify with non-configurable headers and bot
52
+ detection IDs. Vibecodr should use those signals narrowly for owned-surface
53
+ proof/testing allowlisting, not as a general weakening of public internet
54
+ safety policy.
55
+ - Browser Run does not bypass CAPTCHA, Turnstile, WAF, bot controls,
56
+ `robots.txt`, or site-owner intent. Blocked targets must produce clear errors.
57
+
58
+ ## User Decisions
59
+
60
+ 1. Do the focused implementation pass first.
61
+ 2. Make crawl first-class in this sprint, but after docs/contracts and fixes.
62
+ 3. Raise Pro/value caps enough that the product does not feel artificially
63
+ tiny, while keeping price feasibility and provider spend under Vibecodr-owned
64
+ controls.
65
+ 4. Keep Live View, HITL, recording, Playwright MCP, WebMCP, and authenticated
66
+ browser features Pro/beta.
67
+ 5. Public framing should highlight hosted checks that return artifacts, while
68
+ leaving room for the broader truth: agents are getting a useful browser, not
69
+ just a screenshot button.
70
+ 6. The browser boundary should be broad on the public web and narrow at trust
71
+ boundaries. The goal is not timid browsing; the goal is useful default web
72
+ access with hard isolation around credentials, private networks,
73
+ authenticated accounts, and Vibecodr/provider infrastructure.
74
+
75
+ ## Browser Modes
76
+
77
+ ### Public Web Mode
78
+
79
+ Default mode. Agents can use Browser Run for public HTTPS targets. Supported
80
+ outputs include rendered HTML, screenshots, PDFs, markdown extraction, and
81
+ bounded crawl artifacts.
82
+
83
+ Public web mode must reject:
84
+
85
+ - non-HTTPS URLs;
86
+ - localhost and private/internal/link-local/multicast/unspecified IP targets;
87
+ - URL credentials;
88
+ - hostnames that resolve to blocked network ranges;
89
+ - attempts to smuggle authenticated browser state.
90
+
91
+ ### Authenticated Web Mode
92
+
93
+ Future Pro/beta mode only. A user knowingly grants access to a specific
94
+ session, account, or site. This requires explicit consent, retention policy,
95
+ recording policy, audit visibility, and a separate grant model.
96
+
97
+ This pass must not enable authenticated third-party browsing.
98
+
99
+ ### Owned-Surface Mode
100
+
101
+ Internal/narrow mode for Vibecodr-owned domains. Browser Run identity signals
102
+ may be used so our own proof, QA, and testing flows are not blocked by our WAF
103
+ or bot controls.
104
+
105
+ This must never become a general bypass or a weakening of public target safety.
106
+
107
+ ### Blocked Unsafe Target
108
+
109
+ When blocked, errors should say exactly why:
110
+
111
+ - "Browser tools only access public HTTPS URLs."
112
+ - "This target resolves to a private network address."
113
+ - "Browser URL credentials are not allowed."
114
+
115
+ Errors should feel factual and useful, not random or moralizing.
116
+
117
+ ## Implementation Scope
118
+
119
+ ### Contracts and Plans
120
+
121
+ - Add `browser.crawl_site` as a first-class capability and `browser.crawl` as
122
+ the human alias.
123
+ - Keep Browser Run Quick Actions as the default browser lane.
124
+ - Keep Browser Sessions and interactive features Pro/beta.
125
+ - Keep Pro concurrent run packaging aligned with the parent `PLAN_LIMITS`
126
+ SSOT while the hosted account/runtime layer is sized for 30 active jobs at
127
+ launch.
128
+ - Split provider/account breakers from customer plan caps:
129
+ - customer plan caps protect product packaging and spend;
130
+ - provider/account caps protect Cloudflare account-level pressure and queue
131
+ behavior.
132
+ - queue consumer `max_concurrency`, Browser Run account caps, Sandbox account
133
+ caps, and container `max_instances` all use the same 30-active-user launch
134
+ ceiling.
135
+
136
+ ### Hosted Worker
137
+
138
+ - Normalize browser tool timeouts up to the Pro 180-second product cap.
139
+ - Shape Quick Action timeout payloads correctly:
140
+ - cap `gotoOptions.timeout` at 60 seconds;
141
+ - pass long operation time through `actionTimeout`;
142
+ - pass PDF operation time through `pdfOptions.timeout`.
143
+ - Add Browser Run `/crawl` Quick Action support:
144
+ - validate the starting URL through the same public-web guard;
145
+ - bound `limit`, `depth`, and `render`;
146
+ - request markdown by default;
147
+ - start the provider crawl job;
148
+ - poll lightweight status until completion or the vc-tools timeout;
149
+ - fetch and store a JSON crawl artifact;
150
+ - meter browser time when `browserSecondsUsed` is returned.
151
+ - Handle provider 429s as retry/defer states instead of marking a job failed on
152
+ first rate-limit response.
153
+ - Keep provider error payloads redacted.
154
+ - Make account-level hosted, Browser Run, and Sandbox caps configurable through
155
+ `VC_TOOLS_*` environment variables with conservative defaults, and emit
156
+ sanitized operator alerts to email/ntfy/webhook fanout when a soft cap is
157
+ crossed.
158
+
159
+ ### CLI
160
+
161
+ - Allow browser tool test timeout flags up to 180 seconds.
162
+ - Submit canonical crawl payloads from `vc-tools tools test browser.crawl ...`.
163
+ - Expose crawl in help and stable capability metadata.
164
+ - Continue rejecting unsafe browser targets locally before remote calls.
165
+
166
+ ### Docs
167
+
168
+ - Update API contract with the 2026-05-14 Cloudflare assumptions.
169
+ - Document public-web mode, authenticated-web future mode, owned-surface mode,
170
+ and blocked-target copy.
171
+ - Update `docs/VALIDATION-MATRIX.md` for crawl, timeout shaping, provider 429
172
+ retry/defer handling, split caps, and Pro plan changes.
173
+ - Update primitive-fit docs so Browser Run on Containers strengthens the Quick
174
+ Actions default instead of pushing `vc-tools` toward local browser execution
175
+ or Dynamic Workers.
176
+ - Keep wording away from "safe cloud hands and eyes"; it does not match the
177
+ current Vibecodr/vc-tools brand direction.
178
+
179
+ ## Validation Plan
180
+
181
+ Required local validation for this pass:
182
+
183
+ - `git rev-parse --show-toplevel` must print the standalone `vc-tools` repo.
184
+ - `npm test`
185
+ - `npm run check`
186
+ - `git diff --check`
187
+
188
+ Targeted behaviors to prove with tests:
189
+
190
+ - `browser.crawl` aliases to `browser.crawl_site` and submits a canonical
191
+ hosted payload.
192
+ - Browser Quick Action requests cap navigation timeout at 60 seconds while
193
+ preserving the requested operation timeout.
194
+ - `/crawl` starts, polls, stores an artifact, and writes browser-minute usage
195
+ when provider browser seconds are present.
196
+ - Browser Run provider 429 responses leave the job retryable/deferred instead
197
+ of failed.
198
+ - Pro plan concurrent runs stay aligned to the Vibecodr plan SSOT while Browser
199
+ Session caps stay Pro/beta.
200
+ - Hosted, Browser Run, and Sandbox soft-cap crossings emit metadata-only
201
+ operator alerts without raw commands, target URLs, or actor identifiers.
202
+ - Existing unsafe URL, DNS, secret-redaction, sandbox-no-local-execution, quota,
203
+ audit, cancellation, artifact, and JSON/exit-code contracts still pass.
204
+
205
+ Hosted-required validation after deployment:
206
+
207
+ - Apply D1 migrations if needed.
208
+ - Ensure `VC_TOOLS_BROWSER_RUN_ACCOUNT_ID` and
209
+ `VC_TOOLS_BROWSER_RUN_API_TOKEN` are set.
210
+ - Ensure `VC_TOOLS_INTERNAL_ALERT_TOKEN` is set, internal-api accepts
211
+ `E-VIBECODR-VC-TOOLS-SOFT-CAP`, and ntfy/email delivery is configured on the
212
+ internal alert fanout.
213
+ - Deploy the hosted Worker.
214
+ - Smoke `https://tools.vibecodr.space/v1/health`.
215
+ - Run an authenticated real Browser Run render/screenshot job.
216
+ - Run an authenticated real Browser Run crawl job.
217
+ - Confirm R2 artifact readback, usage counters, quota denial, audit rows, and
218
+ clear blocked-target errors.
219
+
220
+ ## Done Means
221
+
222
+ - This file exists and is aligned with code/docs.
223
+ - The repo exposes crawl as a first-class capability without local execution.
224
+ - Browser Run timeouts match Cloudflare's current independent timer model.
225
+ - Product caps and provider caps are separate and documented.
226
+ - Public-web browser access is liberal enough to be useful and strict at
227
+ infrastructure/account boundaries.
228
+ - All required local validation passes, or any remaining hosted-only dependency
229
+ is stated plainly.
230
+
231
+ ## 2026-05-15 Continuation Evidence
232
+
233
+ - Added an account-only Cloudflare spend anomaly lane:
234
+ `E-VIBECODR-VC-TOOLS-CLOUDFLARE-SPEND-ANOMALY` /
235
+ `cloudflare.estimated_spend_usd`.
236
+ - The hosted scheduled Worker estimates current-month raw Cloudflare usage cost
237
+ from aggregate vc-tools meters: Browser Run minutes, plan-split Sandbox
238
+ minutes, crawl pages, and active artifact GB-month exposure.
239
+ - Per-user COGS, quota denials, and unsafe URL denials remain analytics-only;
240
+ only aggregate platform/account spend pressure can fan out to operator
241
+ channels.
242
+ - Parent internal-api now allowlists the new account-scoped alert code while
243
+ still filtering all `source=vc-tools` payloads with `details.scope="user"`.
244
+ - This alert is an internal early warning. Operators must compare it with
245
+ Cloudflare Billable Usage / Budget Alerts before treating it as billing truth.
246
+ - Targeted validation passed:
247
+ `npm test -- --test-name-pattern "Cloudflare spend|public health"`,
248
+ `npm run check:worker`, and
249
+ `pnpm --filter vibecodr-internal-api exec vitest run src/handlers/outboundAlerts.test.ts --testNamePattern "Cloudflare spend|account-wide"`.
package/package.json CHANGED
@@ -1,40 +1,69 @@
1
1
  {
2
2
  "name": "@vibecodr/cli",
3
- "version": "0.2.11",
4
- "description": "Vibecodr CLI for login, live MCP tool discovery, and live tool invocation.",
3
+ "version": "1.0.0-rc.0",
4
+ "description": "The official Vibecodr CLI: hosted browser, hosted computer, capsule uploads, Pulse operations, and agent-client MCP setup under one command.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "bin": {
8
+ "vibecodr": "dist/bin/vibecodr-mcp.js",
8
9
  "vibecodr-mcp": "dist/bin/vibecodr-mcp.js",
9
- "vibecodr": "dist/bin/vibecodr-mcp.js"
10
+ "vc-tools": "dist/bin/vc-tools.js"
10
11
  },
11
12
  "files": [
12
13
  "dist",
13
14
  "README.md",
14
15
  "LICENSE",
15
16
  "CHANGELOG.md",
17
+ "MIGRATION.md",
16
18
  "docs"
17
19
  ],
18
20
  "engines": {
19
21
  "node": ">=22 <26"
20
22
  },
23
+ "keywords": [
24
+ "vibecodr",
25
+ "cli",
26
+ "mcp",
27
+ "model-context-protocol",
28
+ "agent-computer",
29
+ "browser-automation",
30
+ "cloudflare",
31
+ "sandbox"
32
+ ],
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/BradenHartsell/Vibecodr-CLI.git"
36
+ },
37
+ "bugs": {
38
+ "url": "https://github.com/BradenHartsell/Vibecodr-CLI/issues"
39
+ },
40
+ "homepage": "https://vibecodr.space/vc-tools",
41
+ "publishConfig": {
42
+ "access": "public"
43
+ },
21
44
  "scripts": {
22
45
  "build": "tsc -p tsconfig.build.json",
23
- "check": "tsc -p tsconfig.json --noEmit",
46
+ "check": "npm run check:cli && npm run check:worker",
47
+ "check:cli": "tsc -p tsconfig.json --noEmit",
48
+ "check:worker": "tsc -p tsconfig.worker.json --noEmit",
24
49
  "test": "node --import tsx --test test/**/*.test.ts",
25
50
  "test:live-smoke": "node --import tsx --test test/live-smoke.smoke.ts",
26
51
  "test:integration:worker": "node --import tsx --test test/worker-gateway.integration.test.ts",
27
52
  "verify:artifact": "node scripts/check-pack-artifact.mjs",
28
- "verify": "npm run check && npm test && npm run build && npm run verify:artifact"
53
+ "verify": "npm run check && npm run build && npm test && npm run verify:artifact"
29
54
  },
30
55
  "dependencies": {
31
56
  "@iarna/toml": "^2.2.5",
32
57
  "@modelcontextprotocol/sdk": "^1.27.1",
33
- "@napi-rs/keyring": "^1.2.0"
58
+ "@napi-rs/keyring": "^1.3.0"
34
59
  },
35
60
  "devDependencies": {
61
+ "@cloudflare/puppeteer": "^1.1.0",
62
+ "@cloudflare/sandbox": "^0.10.0",
63
+ "@cloudflare/workers-types": "^4.20260511.1",
36
64
  "@types/node": "^24.7.2",
37
- "tsx": "^4.20.6",
38
- "typescript": "^5.9.3"
65
+ "tsx": "^4.21.0",
66
+ "typescript": "^5.9.3",
67
+ "wrangler": "^4.90.0"
39
68
  }
40
69
  }