@vibecodr/cli 0.2.10 → 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 -18
  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,982 @@
1
+ # vc-tools Finetune Plan
2
+
3
+ Status: executed (2026-05-17). See "Execution Evidence" at the bottom of this file.
4
+
5
+ Owner: vc-tools product and platform surface
6
+
7
+ Purpose: turn `vc-tools` from a rigorous hosted capability CLI into a product
8
+ that feels like a useful, safe, permissive Agent Computer for everyday agents
9
+ and non-technical users.
10
+
11
+ ## Product Thesis
12
+
13
+ `vc-tools` should feel like:
14
+
15
+ ```text
16
+ My agent has a browser, a hosted computer, work history, proof, and capacity.
17
+ ```
18
+
19
+ It should not feel like:
20
+
21
+ ```text
22
+ I am operating an internal control plane with grants, provider modes, roadmap
23
+ metadata, launch classifications, quota internals, artifacts, jobs, and policy
24
+ objects.
25
+ ```
26
+
27
+ The core v1 posture:
28
+
29
+ ```text
30
+ Your agent can browse the public web, run code in a hosted computer, save proof,
31
+ and show you what happened.
32
+
33
+ Private networks, credentials, local machines, metadata services, and internal
34
+ infrastructure stay blocked unless you explicitly connect them.
35
+ ```
36
+
37
+ The biggest v1 risk is not "too much safety." The biggest v1 risk is
38
+ capability/expectation mismatch caused by safety language and operator metadata
39
+ leaking into user and agent surfaces.
40
+
41
+ ## Current Verdict
42
+
43
+ Do not advertise `vc-tools` as v1-ready yet.
44
+
45
+ Call it:
46
+
47
+ ```text
48
+ v0.9 product-complete but surface-heavy.
49
+ ```
50
+
51
+ The bones are strong:
52
+
53
+ - hosted browser
54
+ - hosted Agent Computer
55
+ - work status
56
+ - saved proof
57
+ - account limits
58
+ - auth
59
+ - quotas
60
+ - safety boundaries
61
+ - production deployment path
62
+
63
+ The remaining work is product-surface cleanup:
64
+
65
+ - remove operator and roadmap metadata from default user/agent outputs
66
+ - resolve the "computer with internet" expectation
67
+ - make proof automatic instead of ID-heavy
68
+ - make `browser ask` either truly answer or stop implying that it does
69
+ - lead with permission and usefulness before denial and policy
70
+
71
+ ## What Is Already Working
72
+
73
+ - The top-level vocabulary is much better: `start`, `agent`, `computer`,
74
+ `browser`, `work`, `proof`, `usage`, and `doctor`.
75
+ - The help text now frames `vc-tools` as the hosted Vibecodr computer for
76
+ agents instead of a generic CLI.
77
+ - `computer --help` clearly says work is submitted to Vibecodr Tools Cloud and
78
+ not run locally.
79
+ - The liberalized sandbox public HTTP(S) posture is the right product direction:
80
+ an Agent Computer must be able to fetch public docs, package registries, and
81
+ public APIs for ordinary agent work.
82
+ - `browser --help` has concrete primitives: screenshot, read, render, PDF,
83
+ crawl, and ask.
84
+ - `doctor --json` is close to the right shape: compact, readiness-focused, and
85
+ actionable.
86
+ - `work` and `proof` are the right product concepts for "what my agent did" and
87
+ "what came out of it."
88
+ - The hard browser safety boundaries are directionally right: reject localhost,
89
+ private IPs, link-local targets, URL credentials, and non-HTTPS URLs before
90
+ cost-bearing remote work.
91
+
92
+ ## Core Friction Findings
93
+
94
+ ### 1. Default payloads expose too much machinery
95
+
96
+ `vc-tools start --json`, `usage --json`, and `plans --json` can expose
97
+ internal-ish fields that users and agents should not need.
98
+
99
+ Observed/default-risk fields include:
100
+
101
+ ```text
102
+ offeringClassifications
103
+ overageMeters
104
+ policies
105
+ providerMode
106
+ sandboxInternetDefault
107
+ auth
108
+ scopes
109
+ tokenKind
110
+ operatorAlerts
111
+ cogs
112
+ internalApiBinding
113
+ webhook
114
+ ntfy
115
+ Cloudflare
116
+ softCap/hardCap account-pressure internals
117
+ ```
118
+
119
+ These are useful to operators. They are harmful as normal product surface.
120
+
121
+ ### 2. `plans` still behaves like an entitlement schema
122
+
123
+ The public buying surface should answer:
124
+
125
+ ```text
126
+ What can my agent do on this plan?
127
+ ```
128
+
129
+ It should not return internal/future/control-plane metadata by default, such as:
130
+
131
+ - browser recording/replay
132
+ - browser interactive debugging
133
+ - sandbox network access as internal-only metadata
134
+ - overage meters
135
+ - future Stripe metered billing
136
+ - launch classifications
137
+ - low-level policy objects
138
+
139
+ ### 3. `usage` is too technical by default
140
+
141
+ The user wants to know:
142
+
143
+ ```text
144
+ How much room does my agent have left?
145
+ ```
146
+
147
+ Default usage should not force the user or agent to interpret sandbox minutes,
148
+ browser seconds, internal concurrency meters, platform pressure, or operator
149
+ alert metadata unless they request details.
150
+
151
+ ### 4. `start` does not create a first success
152
+
153
+ `vc-tools start` verifies readiness and returns connection details, but it does
154
+ not immediately prove value.
155
+
156
+ First-run should create a quick successful artifact or proof bundle whenever
157
+ possible. The user should see that the Agent Computer can actually do something.
158
+
159
+ ### 5. Proof and work are still too ID-heavy
160
+
161
+ Normal users should not need to understand `job_...` or `art_...` on their first
162
+ run.
163
+
164
+ Default flows should submit, wait, summarize, and save/open proof. Job and
165
+ artifact IDs should remain available behind `--details`, `--json`, or advanced
166
+ commands.
167
+
168
+ ### 6. Network language can contradict the product
169
+
170
+ `sandboxInternetDefault: "off"` is technically understandable but emotionally
171
+ wrong when the product supports policy-brokered public HTTP(S) access.
172
+
173
+ Use user-facing wording like:
174
+
175
+ ```json
176
+ {
177
+ "network": {
178
+ "browserPublicHttps": "available",
179
+ "computerPublicHttps": "available",
180
+ "privateLocalNetworks": "blocked",
181
+ "metadataServices": "blocked",
182
+ "rawNetwork": "restricted"
183
+ }
184
+ }
185
+ ```
186
+
187
+ ### 7. `computer.run` must feel like a real Agent Computer
188
+
189
+ If the product promise is a hosted computer for agents, the paid/default path
190
+ must support ordinary public internet work:
191
+
192
+ - install public packages
193
+ - fetch public docs
194
+ - call public APIs
195
+ - run real setup/test commands
196
+
197
+ Private/local/internal destinations, metadata services, credentials, and
198
+ unbounded raw network access should stay blocked.
199
+
200
+ ### 8. `browser ask` may overpromise
201
+
202
+ `browser ask` sounds semantic:
203
+
204
+ ```text
205
+ Ask the hosted browser to inspect this page.
206
+ ```
207
+
208
+ If the worker only captures a snapshot/log/action record for the calling agent to
209
+ interpret, the command should not imply that the browser itself answers.
210
+
211
+ For v1, pick one:
212
+
213
+ - implement real semantic ask with answer, evidence, and proof
214
+ - rename/reframe it as snapshot/inspect and say the calling agent analyzes it
215
+
216
+ ### 9. Safety messages lead with denial
217
+
218
+ The safety model is mostly correct. The wording should lead with what is allowed
219
+ and then explain the boundary.
220
+
221
+ Bad feeling:
222
+
223
+ ```text
224
+ Browser URL must not target localhost.
225
+ ```
226
+
227
+ Better:
228
+
229
+ ```text
230
+ Blocked for safety: vc-tools can browse public HTTPS pages, but not localhost or
231
+ private networks. Try a public preview URL, deploy preview, or a future
232
+ consented private-network connector.
233
+ ```
234
+
235
+ ### 10. The dashboard should be a companion surface
236
+
237
+ The dashboard should answer:
238
+
239
+ - What is my agent doing?
240
+ - What did it produce?
241
+ - How much capacity do I have left?
242
+ - Which agents are connected?
243
+
244
+ Default order should be:
245
+
246
+ ```text
247
+ Running work
248
+ Recent work
249
+ Saved proof
250
+ Usage left
251
+ Connected agents
252
+ ```
253
+
254
+ Grants, retention, billing, policy detail, and operator COGS belong in secondary
255
+ or operator-only surfaces.
256
+
257
+ ## P0 Launch Blockers
258
+
259
+ ### P0.1 Split every surface into human, agent, and operator contracts
260
+
261
+ Implement explicit serializers instead of treating full redacted API responses
262
+ as the public output contract.
263
+
264
+ Required serializers:
265
+
266
+ ```text
267
+ publicStartPayload
268
+ publicUsagePayload
269
+ publicPlansPayload
270
+ publicHealthPayload
271
+ ```
272
+
273
+ Default human output:
274
+
275
+ - short
276
+ - action-oriented
277
+ - friendly
278
+ - no internal/future/operator metadata
279
+
280
+ Default agent JSON:
281
+
282
+ - stable
283
+ - compact
284
+ - only fields an agent needs to act
285
+ - no roadmap/operator internals
286
+
287
+ Operator/debug output:
288
+
289
+ - explicit `--details` for expanded user debugging
290
+ - explicit `--operator` for operator-scoped tokens
291
+ - server-side gated, not CLI-only hiding
292
+
293
+ Desired default `vc-tools start --json` shape:
294
+
295
+ ```json
296
+ {
297
+ "ok": true,
298
+ "data": {
299
+ "ready": true,
300
+ "account": {
301
+ "label": "user@example.com",
302
+ "workspace": "vc-tools workspace",
303
+ "plan": "Pro"
304
+ },
305
+ "connection": {
306
+ "transport": "streamable_http",
307
+ "url": "https://tools.vibecodr.space/mcp",
308
+ "protocolVersion": "2025-11-25"
309
+ },
310
+ "tools": [
311
+ "browser.render",
312
+ "browser.screenshot",
313
+ "browser.read",
314
+ "browser.pdf",
315
+ "browser.crawl",
316
+ "browser.ask",
317
+ "computer.run",
318
+ "computer.test",
319
+ "work.status",
320
+ "proof.get",
321
+ "usage.status"
322
+ ],
323
+ "usage": {
324
+ "plan": "Pro",
325
+ "monthlyCredits": { "used": 1, "included": 3000 },
326
+ "dailyCredits": { "used": 0, "included": 400 },
327
+ "runningNow": { "used": 0, "included": 5 }
328
+ },
329
+ "nextActions": [
330
+ "Connect your agent with vc-tools agent connect --client codex.",
331
+ "Run vc-tools try to prove browser, computer, and proof are working."
332
+ ]
333
+ },
334
+ "warnings": []
335
+ }
336
+ ```
337
+
338
+ Default `start`, `usage`, `plans`, `doctor`, and `agent connect` output must not
339
+ contain these keys unless an explicit debug/operator flag is used:
340
+
341
+ ```text
342
+ offeringClassifications
343
+ overageMeters
344
+ policies
345
+ providerMode
346
+ sandboxInternetDefault
347
+ auth
348
+ scopes
349
+ tokenKind
350
+ operatorAlerts
351
+ cogs
352
+ internalApiBinding
353
+ webhook
354
+ ntfy
355
+ Cloudflare
356
+ softCap
357
+ hardCap
358
+ ```
359
+
360
+ Acceptance tests:
361
+
362
+ ```text
363
+ vc-tools start --json
364
+ vc-tools usage --json
365
+ vc-tools plans --json
366
+ vc-tools doctor --json
367
+ ```
368
+
369
+ Each must assert that no default output contains:
370
+
371
+ ```text
372
+ offeringClassifications
373
+ overageMeters
374
+ providerMode
375
+ sandboxInternetDefault
376
+ auth
377
+ scopes
378
+ operatorAlerts
379
+ operator capacity metadata
380
+ ```
381
+
382
+ ### P0.2 Fix the "computer with internet" expectation
383
+
384
+ Make the v1 product decision explicit.
385
+
386
+ Rejected direction:
387
+
388
+ ```text
389
+ A hosted sandbox for running commands and tests, with internet off by default.
390
+ ```
391
+
392
+ Preferred direction:
393
+
394
+ ```text
395
+ A hosted computer that can run code, install public packages, fetch public
396
+ docs/APIs, and save proof, while private/local networks and credentials stay
397
+ blocked.
398
+ ```
399
+
400
+ Implementation direction:
401
+
402
+ ```powershell
403
+ vc-tools computer run "npm test" --network public
404
+ vc-tools computer run "pip install requests && python script.py" --network public
405
+ ```
406
+
407
+ Default posture should align with current product direction:
408
+
409
+ - public HTTP(S)/DNS allowed for ordinary paid Agent Computer work
410
+ - localhost/private/link-local/metadata/internal destinations blocked
411
+ - no raw credentials or authenticated browsing by default
412
+ - no operator package allowlist as the normal path
413
+
414
+ Supported controls:
415
+
416
+ ```powershell
417
+ --network public
418
+ --network off
419
+ --allow-host registry.npmjs.org
420
+ --allow-host pypi.org
421
+ --allow-host files.pythonhosted.org
422
+ ```
423
+
424
+ Do not make users hand-curate package registries for the normal paid path.
425
+ Registry host presets can exist for explicit narrowing or enterprise-style
426
+ control, not as the default happy path.
427
+
428
+ Acceptance tests:
429
+
430
+ ```text
431
+ computer run "echo ok" succeeds.
432
+ computer run "...public fetch..." --network public is accepted for paid plans.
433
+ computer run "...private target..." --network public is denied with a helpful alternative.
434
+ Free plan receives a clear upgrade/plan message if networked computer is paid-only.
435
+ ```
436
+
437
+ ### P0.3 Make submit -> wait -> summarize -> proof the default flow
438
+
439
+ Normal commands should complete the loop.
440
+
441
+ Desired behavior:
442
+
443
+ ```powershell
444
+ vc-tools browser screenshot https://example.com --out ./proof
445
+ ```
446
+
447
+ should:
448
+
449
+ ```text
450
+ Submit hosted work.
451
+ Wait until complete up to a default timeout.
452
+ Download/save the artifact when an output path is provided.
453
+ Print a short result.
454
+ Hide job/artifact IDs unless --details is passed.
455
+ ```
456
+
457
+ Desired output:
458
+
459
+ ```text
460
+ Browser screenshot completed.
461
+ Proof saved: ./proof/example.com-screenshot.png
462
+ ```
463
+
464
+ For long jobs:
465
+
466
+ ```text
467
+ Work accepted and still running.
468
+ Follow it: vc-tools work follow job_abc123
469
+ ```
470
+
471
+ `work follow` must become a real follow command:
472
+
473
+ - poll job status
474
+ - stream status changes if possible
475
+ - stop at terminal state
476
+ - summarize proof/artifacts when complete
477
+ - save artifact when `--out` is present
478
+
479
+ Acceptance tests:
480
+
481
+ ```text
482
+ browser read URL --out ./proof waits, saves markdown, and prints no required job ID.
483
+ browser screenshot URL --out ./proof waits, saves PNG/PDF as requested.
484
+ computer run "npm test" --wait prints status and saves/logs sandbox transcript.
485
+ work follow job_123 polls more than once until terminal.
486
+ --no-wait returns the advanced queued job payload.
487
+ --details shows jobId and artifactId.
488
+ ```
489
+
490
+ ### P0.4 Fix `browser ask`
491
+
492
+ Do not ship `browser ask` as a flagship unless it actually answers.
493
+
494
+ Path A: implement real semantic ask.
495
+
496
+ ```powershell
497
+ vc-tools browser ask https://example.com "Find the signup button and summarize what a user sees."
498
+ ```
499
+
500
+ Desired response:
501
+
502
+ ```json
503
+ {
504
+ "answer": "The signup CTA is in the top-right nav and hero section.",
505
+ "evidence": [
506
+ { "type": "text", "value": "Sign up" },
507
+ { "type": "link", "href": "https://example.com/signup" }
508
+ ],
509
+ "proof": {
510
+ "artifactId": "art_...",
511
+ "kind": "browser-inspection"
512
+ }
513
+ }
514
+ ```
515
+
516
+ Path B: honesty-first rename/reframe.
517
+
518
+ ```powershell
519
+ vc-tools browser snapshot https://example.com
520
+ ```
521
+
522
+ Copy:
523
+
524
+ ```text
525
+ Capture a page snapshot for your agent to analyze.
526
+ ```
527
+
528
+ Acceptance:
529
+
530
+ - If the command is called `ask`, it returns an answer.
531
+ - If it does not return an answer, the public command name/copy says snapshot or
532
+ inspect, not ask.
533
+
534
+ ### P0.5 Rewrite safety denials into helpful next actions
535
+
536
+ Keep hard blocks. Change the emotional shape.
537
+
538
+ Safety messages must include:
539
+
540
+ - what was blocked
541
+ - why
542
+ - what the safe alternative is
543
+
544
+ Examples:
545
+
546
+ ```text
547
+ Blocked for safety: vc-tools can browse public HTTPS pages, but not localhost or
548
+ private networks. Try a public preview URL, deploy preview, or a future
549
+ consented private-network connector.
550
+ ```
551
+
552
+ ```text
553
+ Blocked for safety: browser calls cannot include cookies, credentials, auth
554
+ headers, storage state, or secrets. Use a public page, or connect an
555
+ authenticated browsing session when that beta is available.
556
+ ```
557
+
558
+ Acceptance tests:
559
+
560
+ - non-HTTPS URL denial includes public HTTPS next action
561
+ - localhost/private URL denial includes preview/deploy alternative
562
+ - credential/auth input denial includes public page or future authenticated
563
+ session alternative
564
+ - private target denial in computer network mode includes public endpoint or
565
+ future connector alternative
566
+
567
+ ## P1 Before Serious Advertising
568
+
569
+ ### P1.1 Add `vc-tools try`
570
+
571
+ Add a first-success command:
572
+
573
+ ```powershell
574
+ vc-tools try
575
+ ```
576
+
577
+ It should prove:
578
+
579
+ - auth works
580
+ - hosted API works
581
+ - browser works
582
+ - computer works
583
+ - proof saving works
584
+ - usage can be read
585
+
586
+ Desired human output:
587
+
588
+ ```text
589
+ Vibecodr Agent Computer check
590
+
591
+ Browser: captured a public page.
592
+ Computer: ran a tiny command in the hosted computer.
593
+ Proof: saved a proof bundle to ./vc-tools-proof
594
+ Usage: Pro plan, 2 / 3000 monthly credits used.
595
+
596
+ Your agent computer is ready.
597
+ ```
598
+
599
+ If networked computer work is unavailable:
600
+
601
+ ```text
602
+ Computer: ran an offline command.
603
+ Networked computer: not enabled on this plan/config.
604
+ ```
605
+
606
+ Desired JSON:
607
+
608
+ ```json
609
+ {
610
+ "ready": true,
611
+ "checks": {
612
+ "auth": "ok",
613
+ "browser": "ok",
614
+ "computer": "ok",
615
+ "proof": "ok",
616
+ "usage": "ok"
617
+ },
618
+ "proofPath": "./vc-tools-proof"
619
+ }
620
+ ```
621
+
622
+ ### P1.2 Make `agent connect` client-aware
623
+
624
+ `agent connect` should not only return MCP metadata. It should help the user
625
+ connect the actual agent client.
626
+
627
+ Minimum behavior:
628
+
629
+ ```powershell
630
+ vc-tools agent connect --client codex
631
+ ```
632
+
633
+ prints:
634
+
635
+ ```text
636
+ Codex connection ready.
637
+
638
+ MCP URL:
639
+ https://tools.vibecodr.space/mcp
640
+
641
+ Add this to Codex MCP config:
642
+ <exact config block>
643
+
644
+ Then restart/open a new Codex session.
645
+ ```
646
+
647
+ Preferred behavior:
648
+
649
+ ```powershell
650
+ vc-tools agent connect --client codex --install
651
+ ```
652
+
653
+ attempts a safe install/config update for supported clients, with backups and
654
+ clear rollback instructions. If install is unsupported, print exact copy/paste
655
+ instructions.
656
+
657
+ ### P1.3 Make `plans` a buying page
658
+
659
+ Default `vc-tools plans` should be user-facing packaging, not entitlement
660
+ schema.
661
+
662
+ Desired default:
663
+
664
+ ```text
665
+ Free
666
+ - Public browser checks
667
+ - 30 monthly VC Tool credits
668
+ - No hosted computer runs
669
+ - No saved proof storage
670
+
671
+ Creator - $19/mo
672
+ - Browser checks
673
+ - Hosted computer runs
674
+ - 600 monthly credits
675
+ - 1 GB proof storage
676
+ - Browser agent tasks up to 20 minutes
677
+
678
+ Pro - $39/mo
679
+ - Higher browser/computer limits
680
+ - 3,000 monthly credits
681
+ - 10 GB proof storage
682
+ - Browser agent tasks up to 1 hour
683
+ ```
684
+
685
+ Detailed entitlements remain available behind:
686
+
687
+ ```powershell
688
+ vc-tools plans --details
689
+ vc-tools inspect offerings
690
+ ```
691
+
692
+ Operator/internal details require:
693
+
694
+ ```powershell
695
+ vc-tools plans --operator
696
+ ```
697
+
698
+ and server-side operator authorization.
699
+
700
+ ### P1.4 Make `usage` emotionally simple
701
+
702
+ Desired default:
703
+
704
+ ```text
705
+ Agent Computer capacity
706
+
707
+ Plan: Pro
708
+ Monthly credits: 1 / 3000
709
+ Daily credits: 0 / 400
710
+ Browser work: 0 / 3000
711
+ Computer work: 0 / 3000
712
+ Proof storage: 0 / 10 GB
713
+ Running now: 0 / 5
714
+ ```
715
+
716
+ Then:
717
+
718
+ ```text
719
+ Use vc-tools usage --details for browser seconds, sandbox minutes, and concurrency meters.
720
+ ```
721
+
722
+ ### P1.5 Make dashboard work/proof-first
723
+
724
+ Default dashboard order:
725
+
726
+ ```text
727
+ Running work
728
+ Recent work
729
+ Saved proof
730
+ Usage left
731
+ Connected agents
732
+ ```
733
+
734
+ Secondary/admin areas:
735
+
736
+ ```text
737
+ Grants
738
+ Retention
739
+ Billing
740
+ Policy detail
741
+ Operator COGS
742
+ ```
743
+
744
+ `vc-tools dashboard` should default to opening the dashboard for humans.
745
+
746
+ Machine-readable dashboard metadata stays behind:
747
+
748
+ ```powershell
749
+ vc-tools dashboard --json
750
+ vc-tools dashboard --no-open
751
+ ```
752
+
753
+ ## P2 After v1
754
+
755
+ ### P2.1 Add recipes and outcome commands
756
+
757
+ Examples:
758
+
759
+ ```powershell
760
+ vc-tools check-site https://example.com
761
+ vc-tools screenshot https://example.com --out ./proof
762
+ vc-tools read-page https://example.com --out ./proof
763
+ vc-tools run-tests "npm test"
764
+ vc-tools proof bundle --last
765
+ ```
766
+
767
+ ### P2.2 Add consented authenticated browsing
768
+
769
+ Do not rush this into v1.
770
+
771
+ The no-authenticated-browser default is correct for launch. Later lanes can add
772
+ explicit, consented browser sessions with clear account/user boundaries.
773
+
774
+ ### P2.3 Add private/local-network connectors
775
+
776
+ For v1, keep localhost/private networks blocked and offer safe alternatives:
777
+
778
+ ```text
779
+ Use a public preview URL.
780
+ Use a deploy preview.
781
+ Use a future private connector/tunnel.
782
+ ```
783
+
784
+ Later, add explicit private connector/tunnel flows with consent, auditing, and
785
+ clear per-session scope.
786
+
787
+ ### P2.4 Tie proof back into Vibecodr socially
788
+
789
+ Proof should become part of the Vibecodr place, not just files.
790
+
791
+ Future handoffs:
792
+
793
+ - attach proof to a Vibecodr post
794
+ - share proof from a run
795
+ - save proof to a project
796
+ - show proof in run history
797
+ - create a public proof bundle when the user chooses
798
+
799
+ ## Exact Execution Task List
800
+
801
+ Build a PR named:
802
+
803
+ ```text
804
+ v1-product-surface-cleanup
805
+ ```
806
+
807
+ Scope:
808
+
809
+ 1. Add `publicStartPayload`, `publicUsagePayload`, `publicPlansPayload`, and
810
+ `publicHealthPayload` serializers.
811
+ 2. Add `--details` and `--operator` output modes; keep operator fields
812
+ server-side gated.
813
+ 3. Remove `offeringClassifications`, `overageMeters`, `policies`,
814
+ `providerMode`, `sandboxInternetDefault`, `auth`, and `scopes` from default
815
+ `start`, `usage`, `plans`, and `health` output.
816
+ 4. Replace `sandboxInternetDefault: "off"` with a product-shaped network object:
817
+
818
+ ```json
819
+ {
820
+ "network": {
821
+ "browserPublicHttps": "available",
822
+ "computerPublicHttps": "available",
823
+ "privateLocalNetworks": "blocked",
824
+ "metadataServices": "blocked",
825
+ "rawNetwork": "restricted"
826
+ }
827
+ }
828
+ ```
829
+
830
+ 5. Add `computer run --network public` and `--network off`, or remove any copy
831
+ implying package/API/doc fetch capability.
832
+ 6. Add `vc-tools try`.
833
+ 7. Implement `--wait`, `--no-wait`, `--out`, and `--details` behavior for
834
+ browser/computer commands.
835
+ 8. Make `work follow` poll until terminal status.
836
+ 9. Make proof saving work without requiring manual artifact IDs.
837
+ 10. Either implement real semantic `browser ask` or rename/reframe it as
838
+ snapshot/inspect.
839
+ 11. Rewrite safety errors to include the blocked reason and safe next action.
840
+ 12. Add tests asserting no internal/future/operator fields appear in default
841
+ outputs.
842
+ 13. Add tests for the first-run path:
843
+
844
+ ```text
845
+ start
846
+ agent connect --client codex
847
+ try
848
+ browser screenshot --out
849
+ computer run --wait
850
+ usage
851
+ proof list
852
+ ```
853
+
854
+ 14. Update README, API contract, validation matrix, security docs, and any
855
+ public Vibecodr/docs surfaces that describe the Agent Computer.
856
+ 15. Run package verification, deploy hosted workers if behavior changes, and
857
+ collect production smoke evidence.
858
+
859
+ ## Verification Gates
860
+
861
+ Local verification:
862
+
863
+ ```powershell
864
+ npm test
865
+ npm run check
866
+ npm run verify
867
+ ```
868
+
869
+ Default-output leak tests:
870
+
871
+ ```powershell
872
+ vc-tools start --json
873
+ vc-tools usage --json
874
+ vc-tools plans --json
875
+ vc-tools doctor --json
876
+ ```
877
+
878
+ Assert none contain:
879
+
880
+ ```text
881
+ offeringClassifications
882
+ overageMeters
883
+ providerMode
884
+ sandboxInternetDefault
885
+ auth
886
+ scopes
887
+ tokenKind
888
+ operatorAlerts
889
+ cogs
890
+ internalApiBinding
891
+ webhook
892
+ ntfy
893
+ Cloudflare
894
+ softCap
895
+ hardCap
896
+ ```
897
+
898
+ First-run product path:
899
+
900
+ ```powershell
901
+ vc-tools start
902
+ vc-tools agent connect --client codex
903
+ vc-tools try
904
+ vc-tools browser screenshot https://vibecodr.space/vc-tools --out ./proof
905
+ vc-tools computer run "node -e \"console.log('ok')\"" --wait
906
+ vc-tools usage
907
+ vc-tools proof list
908
+ ```
909
+
910
+ Production smoke path:
911
+
912
+ - authenticate like a normal agent/user
913
+ - run one browser screenshot with proof saved
914
+ - run one public HTTP(S) computer command
915
+ - run one denied private/metadata target and confirm helpful denial
916
+ - confirm default JSON has no internal/operator/future leakage
917
+ - confirm dashboard points to work/proof/capacity first
918
+
919
+ ## Readiness Definition
920
+
921
+ `vc-tools` can be called v1-ready when:
922
+
923
+ - the default experience is account-first and action-first
924
+ - default human output is short and useful
925
+ - default agent JSON is compact and stable
926
+ - operator/debug metadata is opt-in and server-side gated
927
+ - browser/computer/proof flows complete without manual ID handling
928
+ - public HTTP(S) Agent Computer work feels capable
929
+ - protected boundaries remain hard and are explained helpfully
930
+ - `browser ask` either answers or is honestly named
931
+ - `vc-tools try` proves the product in under a minute
932
+ - docs, README, API contract, validation matrix, and hosted worker behavior agree
933
+
934
+ ## Execution Evidence
935
+
936
+ Date: 2026-05-17.
937
+
938
+ Each item from the Exact Execution Task List was implemented and verified
939
+ locally. All 140 CLI tests pass; `npm run check`, `npm run build`,
940
+ `npm run verify:artifact`, `npm run verify:goal`, and `npm run verify:release`
941
+ pass. Hosted Worker behavior was not changed by this pass; no hosted deploy is
942
+ required.
943
+
944
+ - Public serializers: `publicStartPayload`, `publicUsagePayload`,
945
+ `publicPlansPayload`, `publicHealthPayload`, `publicConnectionPayload`,
946
+ `publicNetworkPayload` in `src/cli/run.ts`.
947
+ - Output modes: `--details` and `--operator` route through `outputSurface()` and
948
+ `queryForSurface()`; operator data stays server-gated.
949
+ - Forbidden default keys (`offeringClassifications`, `overageMeters`,
950
+ `policies`, `providerMode`, `sandboxInternetDefault`, `auth`, `scopes`,
951
+ `tokenKind`, `operatorAlerts`, `cogs`, `internalApiBinding`, `webhook`,
952
+ `ntfy`, `Cloudflare`, `softCap`, `hardCap`) are asserted out of default
953
+ `start`/`usage`/`plans`/`doctor` JSON.
954
+ - Product network object replaces `sandboxInternetDefault: "off"`:
955
+ `{ browserPublicHttps, computerPublicHttps, privateLocalNetworks,
956
+ metadataServices, rawNetwork }`.
957
+ - `computer run --network public` is the default; `--network off` skips
958
+ egress. Invalid values produce a helpful denial.
959
+ - `vc-tools try` runs the start/browser/computer/proof/usage chain and saves
960
+ proof; covered by `test/cli.behavior.test.ts:"try proves auth, browser,
961
+ computer, proof, and usage"`.
962
+ - Browser/computer commands submit, wait until terminal, save proof when
963
+ `--out` is provided, and hide job/artifact IDs unless `--details`. Both
964
+ `--no-wait` and `--noWait` skip the wait and return the queued payload.
965
+ - `work follow` polls until terminal status and saves proof when `--out` is
966
+ provided. Covered by `"work follow polls until terminal..."`.
967
+ - `browser ask`/`browser snapshot` is renamed and reframed as a snapshot for
968
+ the calling agent to analyze ("Asked the hosted Browser to capture an
969
+ inspection snapshot for your agent.").
970
+ - Safety errors lead with the allowed surface and offer a safe next action
971
+ (`validators.ts`).
972
+ - `vc-tools plans` is a buying page with per-plan bullets (Free / Creator -
973
+ $19/mo / Pro - $39/mo). Detailed entitlements remain behind `--details`.
974
+ - `vc-tools agent connect --client codex|cursor|vscode|windsurf|claude-desktop
975
+ |claude-code` installs the MCP config automatically into the client's config
976
+ file (or via the client's own CLI for codex/claude-code/vscode-user). Pass
977
+ `--print` for copy-paste-only mode, `--overwrite` to replace a differing
978
+ entry (a `.vc-tools.bak` of the previous config is written first), and
979
+ `--dry-run` to plan without writing.
980
+ - `vc-tools dashboard` opens the dashboard URL in the local browser unless
981
+ `--no-open`, `--json`, `--quiet`, or `--no-input` is set.
982
+