@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.
- package/CHANGELOG.md +53 -23
- 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,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.
|
|
4
|
-
"description": "Vibecodr CLI
|
|
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
|
-
"
|
|
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": "
|
|
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
|
|
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.
|
|
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.
|
|
38
|
-
"typescript": "^5.9.3"
|
|
65
|
+
"tsx": "^4.21.0",
|
|
66
|
+
"typescript": "^5.9.3",
|
|
67
|
+
"wrangler": "^4.90.0"
|
|
39
68
|
}
|
|
40
69
|
}
|