@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.
- package/CHANGELOG.md +53 -18
- package/MIGRATION.md +73 -0
- package/README.md +89 -72
- package/dist/auth/official-client.d.ts +6 -0
- package/dist/auth/official-client.d.ts.map +1 -0
- package/dist/auth/official-client.js +1 -0
- package/dist/auth/official-client.js.map +1 -0
- package/dist/auth/token-manager.d.ts +40 -0
- package/dist/auth/token-manager.d.ts.map +1 -0
- package/dist/auth/token-manager.js +1 -2
- package/dist/auth/token-manager.js.map +1 -0
- package/dist/bin/vc-tools.d.ts +3 -0
- package/dist/bin/vc-tools.d.ts.map +1 -0
- package/dist/bin/vc-tools.js +7 -0
- package/dist/bin/vc-tools.js.map +1 -0
- package/dist/bin/vibecodr-mcp.d.ts +3 -0
- package/dist/bin/vibecodr-mcp.d.ts.map +1 -0
- package/dist/bin/vibecodr-mcp.js +37 -0
- package/dist/bin/vibecodr-mcp.js.map +1 -0
- package/dist/cli/errors.d.ts +28 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +1 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/output.d.ts +16 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +1 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/parse.d.ts +18 -0
- package/dist/cli/parse.d.ts.map +1 -0
- package/dist/cli/parse.js +1 -0
- package/dist/cli/parse.js.map +1 -0
- package/dist/clients/base.d.ts +20 -0
- package/dist/clients/base.d.ts.map +1 -0
- package/dist/clients/base.js +1 -0
- package/dist/clients/base.js.map +1 -0
- package/dist/clients/claude-code.d.ts +5 -0
- package/dist/clients/claude-code.d.ts.map +1 -0
- package/dist/clients/claude-code.js +88 -0
- package/dist/clients/claude-code.js.map +1 -0
- package/dist/clients/claude-desktop.d.ts +5 -0
- package/dist/clients/claude-desktop.d.ts.map +1 -0
- package/dist/clients/claude-desktop.js +97 -0
- package/dist/clients/claude-desktop.js.map +1 -0
- package/dist/clients/codex.d.ts +5 -0
- package/dist/clients/codex.d.ts.map +1 -0
- package/dist/clients/codex.js +1 -0
- package/dist/clients/codex.js.map +1 -0
- package/dist/clients/cursor.d.ts +5 -0
- package/dist/clients/cursor.d.ts.map +1 -0
- package/dist/clients/cursor.js +1 -1
- package/dist/clients/cursor.js.map +1 -0
- package/dist/clients/vscode.d.ts +5 -0
- package/dist/clients/vscode.d.ts.map +1 -0
- package/dist/clients/vscode.js +5 -1
- package/dist/clients/vscode.js.map +1 -0
- package/dist/clients/windsurf.d.ts +5 -0
- package/dist/clients/windsurf.d.ts.map +1 -0
- package/dist/clients/windsurf.js +1 -0
- package/dist/clients/windsurf.js.map +1 -0
- package/dist/commands/call.d.ts +9 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +1 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +1 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/context.d.ts +15 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +2 -5
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +2 -1
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/help.d.ts +3 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +1 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/install.d.ts +3 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +23 -5
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/login.d.ts +3 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +1 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +3 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +1 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/pulse-publish.d.ts +3 -0
- package/dist/commands/pulse-publish.d.ts.map +1 -0
- package/dist/commands/pulse-publish.js +1 -0
- package/dist/commands/pulse-publish.js.map +1 -0
- package/dist/commands/pulse-setup.d.ts +3 -0
- package/dist/commands/pulse-setup.d.ts.map +1 -0
- package/dist/commands/pulse-setup.js +5 -3
- package/dist/commands/pulse-setup.js.map +1 -0
- package/dist/commands/pulse.d.ts +3 -0
- package/dist/commands/pulse.d.ts.map +1 -0
- package/dist/commands/pulse.js +1 -0
- package/dist/commands/pulse.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +1 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tools.d.ts +3 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +1 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/uninstall.d.ts +3 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +12 -4
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/upload.d.ts +3 -0
- package/dist/commands/upload.d.ts.map +1 -0
- package/dist/commands/upload.js +1 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/commands/whoami.d.ts +3 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +82 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/core/interactive-input.d.ts +7 -0
- package/dist/core/interactive-input.d.ts.map +1 -0
- package/dist/core/interactive-input.js +1 -0
- package/dist/core/interactive-input.js.map +1 -0
- package/dist/core/mcp-client.d.ts +17 -0
- package/dist/core/mcp-client.d.ts.map +1 -0
- package/dist/core/mcp-client.js +1 -0
- package/dist/core/mcp-client.js.map +1 -0
- package/dist/core/redaction.d.ts +2 -0
- package/dist/core/redaction.d.ts.map +1 -0
- package/dist/core/redaction.js +36 -2
- package/dist/core/redaction.js.map +1 -0
- package/dist/core/renderers.d.ts +8 -0
- package/dist/core/renderers.d.ts.map +1 -0
- package/dist/core/renderers.js +1 -0
- package/dist/core/renderers.js.map +1 -0
- package/dist/doctor/run.d.ts +10 -0
- package/dist/doctor/run.d.ts.map +1 -0
- package/dist/doctor/run.js +12 -3
- package/dist/doctor/run.js.map +1 -0
- package/dist/legacy/cli/errors.d.ts +9 -0
- package/dist/legacy/cli/errors.d.ts.map +1 -0
- package/dist/legacy/cli/errors.js +23 -0
- package/dist/legacy/cli/errors.js.map +1 -0
- package/dist/legacy/cli/install.d.ts +24 -0
- package/dist/legacy/cli/install.d.ts.map +1 -0
- package/dist/legacy/cli/install.js +307 -0
- package/dist/legacy/cli/install.js.map +1 -0
- package/dist/legacy/cli/output.d.ts +17 -0
- package/dist/legacy/cli/output.d.ts.map +1 -0
- package/dist/legacy/cli/output.js +36 -0
- package/dist/legacy/cli/output.js.map +1 -0
- package/dist/legacy/cli/parser.d.ts +33 -0
- package/dist/legacy/cli/parser.d.ts.map +1 -0
- package/dist/legacy/cli/parser.js +177 -0
- package/dist/legacy/cli/parser.js.map +1 -0
- package/dist/legacy/cli/run.d.ts +11 -0
- package/dist/legacy/cli/run.d.ts.map +1 -0
- package/dist/legacy/cli/run.js +2947 -0
- package/dist/legacy/cli/run.js.map +1 -0
- package/dist/legacy/config/credential-store.d.ts +8 -0
- package/dist/legacy/config/credential-store.d.ts.map +1 -0
- package/dist/legacy/config/credential-store.js +52 -0
- package/dist/legacy/config/credential-store.js.map +1 -0
- package/dist/legacy/config/store.d.ts +63 -0
- package/dist/legacy/config/store.d.ts.map +1 -0
- package/dist/legacy/config/store.js +311 -0
- package/dist/legacy/config/store.js.map +1 -0
- package/dist/legacy/core/api-client.d.ts +45 -0
- package/dist/legacy/core/api-client.d.ts.map +1 -0
- package/dist/legacy/core/api-client.js +204 -0
- package/dist/legacy/core/api-client.js.map +1 -0
- package/dist/legacy/core/contracts.d.ts +488 -0
- package/dist/legacy/core/contracts.d.ts.map +1 -0
- package/dist/legacy/core/contracts.js +386 -0
- package/dist/legacy/core/contracts.js.map +1 -0
- package/dist/legacy/core/goal-coverage.d.ts +15 -0
- package/dist/legacy/core/goal-coverage.d.ts.map +1 -0
- package/dist/legacy/core/goal-coverage.js +169 -0
- package/dist/legacy/core/goal-coverage.js.map +1 -0
- package/dist/legacy/core/redaction.d.ts +4 -0
- package/dist/legacy/core/redaction.d.ts.map +1 -0
- package/dist/legacy/core/redaction.js +121 -0
- package/dist/legacy/core/redaction.js.map +1 -0
- package/dist/legacy/core/validators.d.ts +8 -0
- package/dist/legacy/core/validators.d.ts.map +1 -0
- package/dist/legacy/core/validators.js +102 -0
- package/dist/legacy/core/validators.js.map +1 -0
- package/dist/legacy/core/version.d.ts +3 -0
- package/dist/legacy/core/version.d.ts.map +1 -0
- package/dist/legacy/core/version.js +3 -0
- package/dist/legacy/core/version.js.map +1 -0
- package/dist/legacy/index.d.ts +8 -0
- package/dist/legacy/index.d.ts.map +1 -0
- package/dist/legacy/index.js +8 -0
- package/dist/legacy/index.js.map +1 -0
- package/dist/platform/browser.d.ts +7 -0
- package/dist/platform/browser.d.ts.map +1 -0
- package/dist/platform/browser.js +1 -0
- package/dist/platform/browser.js.map +1 -0
- package/dist/platform/exec.d.ts +3 -0
- package/dist/platform/exec.d.ts.map +1 -0
- package/dist/platform/exec.js +10 -1
- package/dist/platform/exec.js.map +1 -0
- package/dist/platform/paths.d.ts +9 -0
- package/dist/platform/paths.d.ts.map +1 -0
- package/dist/platform/paths.js +13 -0
- package/dist/platform/paths.js.map +1 -0
- package/dist/platform/prompt.d.ts +5 -0
- package/dist/platform/prompt.d.ts.map +1 -0
- package/dist/platform/prompt.js +1 -0
- package/dist/platform/prompt.js.map +1 -0
- package/dist/storage/config-store.d.ts +15 -0
- package/dist/storage/config-store.d.ts.map +1 -0
- package/dist/storage/config-store.js +1 -0
- package/dist/storage/config-store.js.map +1 -0
- package/dist/storage/file-lock.d.ts +7 -0
- package/dist/storage/file-lock.d.ts.map +1 -0
- package/dist/storage/file-lock.js +1 -0
- package/dist/storage/file-lock.js.map +1 -0
- package/dist/storage/install-manifest.d.ts +12 -0
- package/dist/storage/install-manifest.d.ts.map +1 -0
- package/dist/storage/install-manifest.js +1 -0
- package/dist/storage/install-manifest.js.map +1 -0
- package/dist/storage/secret-store.d.ts +36 -0
- package/dist/storage/secret-store.d.ts.map +1 -0
- package/dist/storage/secret-store.js +1 -0
- package/dist/storage/secret-store.js.map +1 -0
- package/dist/types/auth.d.ts +55 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +1 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/config.d.ts +29 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/install.d.ts +26 -0
- package/dist/types/install.d.ts.map +1 -0
- package/dist/types/install.js +1 -0
- package/dist/types/install.js.map +1 -0
- package/docs/API-CONTRACT.md +606 -0
- package/docs/CLOUDFLARE-PRIMITIVE-FIT.md +212 -0
- package/docs/RELEASE-CHECKLIST.md +297 -0
- package/docs/SECURITY.md +227 -0
- package/docs/VALIDATION-MATRIX.md +58 -0
- package/docs/commands.md +49 -29
- package/docs/legacy/AGENT-TOOLKIT-RFC.md +1395 -0
- package/docs/legacy/CLI-GUIDELINES-AUDIT.md +95 -0
- package/docs/legacy/COMPLETION-AUDIT.md +542 -0
- package/docs/legacy/vc-tools-finetune.md +982 -0
- package/docs/legacy/vc-tools-goal-browser-run-containers.md +465 -0
- package/docs/legacy/vc-tools-goal-original.md +249 -0
- 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
|
+
|