@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,542 @@
|
|
|
1
|
+
# vc-tools Completion Audit
|
|
2
|
+
|
|
3
|
+
This audit maps `vc-tools-goal.md` to concrete repo evidence. It is intentionally
|
|
4
|
+
stricter than a green test suite: a verifier only counts when it covers the
|
|
5
|
+
actual requirement.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Build `tools/vc-tools` as a standalone production-grade CLI and hosted live
|
|
10
|
+
surface for Vibecodr Tools Cloud, separate from the existing Vibecodr CLI,
|
|
11
|
+
covering the goal file's remote MCP, browser, sandbox, artifact, activity status,
|
|
12
|
+
usage, grants, retention, dashboard, plan, quota, audit, and safety posture.
|
|
13
|
+
|
|
14
|
+
## Current Gate
|
|
15
|
+
|
|
16
|
+
The CLI-contract surface is locally verified. `live-hosted-production` is
|
|
17
|
+
intentionally marked `hosted-required` after the human-use security hardening
|
|
18
|
+
work because the hosted service must be fully smoked before advertising it as
|
|
19
|
+
live. D1 migrations through `0006_scheduled_qa.sql` were applied and
|
|
20
|
+
read back on 2026-05-14, Browser Run/grant secrets were applied and read back
|
|
21
|
+
by secret name on 2026-05-14, and `vc-tools-api` was deployed on 2026-05-14 as
|
|
22
|
+
version `9846c9ad-641d-43f4-be5e-7a2ce574eb82`, then redeployed as
|
|
23
|
+
`fb83e4dc-8142-414f-94ba-66ec14821a68` after redirect-preflight hardening. Live
|
|
24
|
+
render, screenshot, markdown, PDF, Sandbox command, Sandbox tests, artifact
|
|
25
|
+
metadata, artifact list/readback, artifact bytes, usage,
|
|
26
|
+
retention, dashboard COGS URL, Scheduled QA create/list/run-now/job/artifact,
|
|
27
|
+
Scheduled QA monthly cap denial, `status`, `connect`, `tools list`, and direct
|
|
28
|
+
MCP JSON-RPC `initialize`, `tools/list`, and `tools/call` smokes
|
|
29
|
+
passed. Operator alert delivery is configured, but the historical production
|
|
30
|
+
delivery proof covered a retired per-user usage notification lane. Current
|
|
31
|
+
release proof must use the supported account-wide hosted, Browser Run, or
|
|
32
|
+
Sandbox capacity alert path. This is still not live release clearance because
|
|
33
|
+
short Creator Workflow-owned Browser Session agent tasks, Creator Sandbox command execution,
|
|
34
|
+
real Clerk OAuth, real user-scoped API-key exchange, and revoked-key denial have
|
|
35
|
+
been production-proven, while real paid-user Pro provider breadth,
|
|
36
|
+
Pro/long-duration Browser Session proof, natural Scheduled QA cron readback, and
|
|
37
|
+
account-wide operator alert fanout proof remain open. Monthly and daily credit
|
|
38
|
+
exhaustion have synthetic production proof: 429 `quota.exceeded` and 429
|
|
39
|
+
`quota.daily_exceeded` returned before job insertion, with D1 readback showing
|
|
40
|
+
zero accepted jobs for the probe actors. Unsafe-target denial now has live
|
|
41
|
+
shape-level, DNS-preflight including private-AAAA, and unsafe-redirect proof.
|
|
42
|
+
Synthetic CLI-grant smokes proved the Free paid-sandbox denial, Pro
|
|
43
|
+
`standard-2` sandbox lane, and cross-actor artifact denial; those do not replace
|
|
44
|
+
real paid-account provider-path proof. Historical
|
|
45
|
+
`production-smoked` bullets below are not current release clearance unless
|
|
46
|
+
explicitly refreshed by the 2026-05-14 notes.
|
|
47
|
+
Scheduled QA is live-smoked for manual run-now behavior and monthly cap denial;
|
|
48
|
+
natural cron-tick readback at a real deployed trigger time remains open.
|
|
49
|
+
|
|
50
|
+
## Prompt-to-Artifact Checklist
|
|
51
|
+
|
|
52
|
+
| Goal requirement | Evidence | Verification | Status |
|
|
53
|
+
| --- | --- | --- | --- |
|
|
54
|
+
| Separate tool from Vibecodr CLI | `package.json` uses `@vibecodr/vc-tools`, bin `vc-tools`; `AGENTS.md` defines separate namespace; `vc-tools-goal.md` examples use `vc-tools` | `test/cli.behavior.test.ts` help/version test; `git rev-parse --show-toplevel` in child repo | Locally verified |
|
|
55
|
+
| CLI as setup/debug/artifact helper | `src/cli/run.ts` implements login, status, connect, tools, jobs, artifacts, usage/limits, grants, retention, plans, dashboard, inspect, doctor | `test/cli.behavior.test.ts`; `npm run verify` | Locally verified |
|
|
56
|
+
| Remote MCP is primary agent surface | `src/hosted/worker.ts` exposes `/mcp`; `docs/API-CONTRACT.md` documents Streamable HTTP and JSON-RPC methods | `test/hosted-worker.test.ts` verifies `initialize`, `tools/list`, and `tools/call`; direct production JSON-RPC smoke on 2026-05-14 verified `initialize`, `tools/list`, and `tools/call` for `usage.read` | Locally verified; live-smoked 2026-05-14 |
|
|
57
|
+
| Browser render/screenshot/markdown/PDF/crawl/agent tools | `CAPABILITIES` and CLI aliases cover `browser.render_url`, `browser.screenshot_url`, `browser.extract_markdown`, `browser.render_pdf`, `browser.crawl_site`, and paid `browser.agent_task`; live Worker uses Browser Run Quick Actions for stateless browser jobs and the Browser Session binding for Creator/Pro agent tasks; direct cookie/header/storage-state auth material is denied before provider execution | CLI payload tests, crawl payload tests, paid agent-task payload test, unsafe URL validation tests, hosted authenticated-browser material denial test, hosted DNS preflight, Quick Action routing test, paid agent-task contract test, Browser Session closure metadata tests, metered-time usage test, crawl artifact and crawl-page metering test | Locally verified |
|
|
58
|
+
| Scheduled QA | `src/hosted/worker.ts` implements `/v1/scheduled-qa` create/list/update/delete plus the Worker `scheduled()` cron enqueuer; `migrations/0006_scheduled_qa.sql` stores actor-scoped configs and run rows; CLI exposes `vc-tools scheduled-qa`; public and docs surfaces classify Scheduled QA as gated beta | hosted Worker scheduled-QA create/list/cron-enqueue tests, CLI scheduled-QA route tests, plan/classification tests, shared plan presentation tests; live run-now/job/artifact and monthly cap-denial smokes on 2026-05-14 | Locally verified; live-smoked 2026-05-14 |
|
|
59
|
+
| Sandbox run/tests tools | `CAPABILITIES` and CLI aliases cover `sandbox.run_command`, `sandbox.run_tests`; sandbox command validation prevents local execution; live Worker exports Creator `Sandbox` and Pro `ProSandbox` SDK classes with public HTTP(S) egress enabled for package/docs work; Cloudflare host policy plus the hosted outbound handler block private, local, link-local, metadata, and internal destinations | CLI sandbox tests, validator tests, hosted public-network-default and outbound-denial tests, Wrangler config split test; fresh production smoke required after redeploy | Locally verified |
|
|
60
|
+
| Artifact store/read/pull/delete | CLI implements artifact list/get/pull/create/delete; live Worker stores generated/uploaded artifacts in R2 with D1 metadata, active-storage quota predicates, R2 cleanup on D1 reservation failure, explicit actor-scoped deletion, and expiry | CLI artifact tests; hosted upload cap tests; hosted artifact storage race cleanup test; hosted explicit artifact delete test; hosted queue artifact completion test; expired artifact download denial test; scheduled cleanup path | Locally verified |
|
|
61
|
+
| Hosted work status/cancel/list | CLI implements job list/status/cancel; live Worker stores hosted work records in D1, dispatches stateless/sandbox/scheduled jobs through Queue/DLQ, dispatches paid Browser Agent jobs through `BROWSER_AGENT_WORKFLOW`, reports queued-ahead metadata without delaying interactive tools, lets failed Queue job messages reach the configured DLQ retry boundary without re-running cost-bearing provider work, and returns cleanly for exhausted failed-job deliveries | CLI job tests; hosted queue completion test; hosted queued-ahead metadata test; hosted Browser Agent Workflow dispatch/rejection tests; pre-execution and during-execution cancellation tests; failed-job DLQ retry-boundary and exhausted-loop tests; Wrangler queue/workflow config assertion | Locally verified |
|
|
62
|
+
| Usage and limits | `DASHBOARD_SECTIONS`, CLI dashboard URL generation including internal COGS, hosted `/dashboard/*` HTML, live `/v1/usage` from D1 usage events, `usage.read` MCP tool, and `vc-tools limits` alias | CLI usage/limits tests, CLI dashboard tests, hosted MCP usage test, hosted dashboard contract test, shared API URL validation test | Locally verified |
|
|
63
|
+
| Open-source client authority boundary | `vc-tools plans` local fallback and `/v1/plans` are marked non-authoritative for actor entitlement; `/v1/usage`/`usage.read` are read-only and marked not client-mutable; docs state forks cannot change official hosted entitlement or provider access | CLI plans fallback test, CLI usage/limits test, hosted plan contract test, hosted MCP usage test, docs/security review | Locally verified |
|
|
64
|
+
| Plan usage, recent activity, artifacts, tool grants, retention, billing, internal COGS dashboard sections | `DASHBOARD_SECTIONS` and `dashboardData()` cover overview, usage, activity, artifacts, grants, retention, billing, and COGS; live COGS uses D1 usage plus env-configured per-surface assumptions | `hosted worker exposes dashboard, plan, offering classification, grant, and policy launch contract`; CLI dashboard tests cover the COGS URL; live plan/quota gate uses `DEFAULT_PLANS` | Locally verified |
|
|
65
|
+
| Creator and Pro subscription plan packaging | `DEFAULT_PLANS` includes Free, Creator, and Pro and omits the retired standalone Starter package; Creator is the `$19/mo` baseline | CLI plans test and hosted plan contract test | Locally verified |
|
|
66
|
+
| Free vc-tools floor | `DEFAULT_PLANS` includes limited Free Quick Actions only: 30 VC Tool credits/month, 10/day, 1 concurrent run, 30s browser-run cap, no Sandbox, no Browser Sessions, no scheduled QA | CLI plans test and hosted plan contract test | Locally verified |
|
|
67
|
+
| Separate build and VC Tools ledgers | Parent `PLAN_LIMITS[*].builds` owns build seconds/jobs/concurrency/output caps; parent and child `vcTools` owns VC Tool credits/browser seconds/crawl/scheduled QA; hosted `enforceQuota` counts browser and sandbox jobs against one VC Tools ledger and enforces Free/Creator/Pro active-run caps before Queue/Workflow dispatch | parent shared-plan tests, parent build reserve tests, hosted plan/quota and browser-concurrency tests | Locally verified |
|
|
68
|
+
| Overage meters | `OVERAGE_METERS` covers browser time, sandbox time, storage, retention, concurrency, crawl, and scheduled QA while customer-facing pricing leads with VC Tool credits and outcomes | CLI plans test and hosted plan contract test | Locally verified |
|
|
69
|
+
| Account-wide hosted capacity and operator alerting | `wrangler.jsonc` caps queue consumer concurrency and both paid Sandbox container lanes at 30, and binds `BROWSER_AGENT_WORKFLOW` for durable paid Browser Agent execution; Creator routes to Cloudflare `standard-1` with 10-minute task caps, Pro routes to Cloudflare `standard-2` with 30-minute task caps, and both paid plans cap per-user active sandbox tasks at 2; the Worker enforces hosted, Browser Run, and Sandbox account hard caps before cost-bearing execution, reports queued-ahead metadata without adding interactive Queue delay, emits metadata-only 70/85/95 account-wide capacity plus Queue/DLQ backlog, artifact-storage, retention-cleanup-failure, Browser/Sandbox execution-health, unexpected hosted Worker 500, auth-failure-anomaly, and Cloudflare spend-anomaly operator alerts through internal-api/email/ntfy/webhook fanout, suppresses every user-scoped vc-tools payload before operator fanout, and dedupes alerts through `operator_alert_dedupe` reset windows | parent shared-plan tests, parent outbound-alert vc-tools filtering tests, hosted Browser/Sandbox account-cap tests, hosted queued-ahead metadata test, hosted Browser Agent Workflow dispatch/rejection tests, hosted soft-cap alert fanout/dedupe/missing-notifier tests, scheduled Queue/DLQ/artifact-storage/retention-cleanup/execution-health/auth-failure/Cloudflare-spend alert tests, hosted Worker 5xx sanitized-alert test, auth-failure metric redaction test, Browser Session user-cap no-alert test, Wrangler config split test, `wrangler types --check`; production deploy/readback on 2026-05-14 shows only `E-VIBECODR-VC-TOOLS-SOFT-CAP` configured, so the new cleanup-failure, execution-health, hosted Worker 5xx, auth-failure-anomaly, Cloudflare spend-anomaly, and Browser Agent Workflow lanes still need deploy/readback | Deployed/read back 2026-05-14 for soft-cap code; Queue/DLQ/artifact-storage/retention-cleanup/execution-health/hosted-5xx/auth-failure/Cloudflare-spend alerts and Browser Agent Workflow dispatch locally verified |
|
|
70
|
+
| Workspace/project/user scoped grants | `LAUNCH_TOOL_GRANTS` records grant, capability, default scope, phase, and allowed plans | Hosted grant contract test checks workspace-scoped sandbox network metadata | Locally verified |
|
|
71
|
+
| Policy: no raw provider credential exposure | Plain `vc-tools login` stores the durable scoped local credential returned to the polling CLI plus a cached short-lived grant; file/stdin OAuth/API-key paths store the durable local credential so grants can refresh; private device codes, browser approval responses, and Cloudflare/provider credentials stay behind hosted/API boundaries | redaction tests; browser/device login tests; OAuth/API-key exchange tests; expired-grant refresh test; secret scan; docs | Locally verified |
|
|
72
|
+
| Policy: quota checked before cost | live Worker checks D1 monthly/daily VC Tool credits, browser seconds, sandbox seconds, and concurrent active runs against the active plan before Queue/Workflow dispatch; D1 job insertion is atomic with the quota reservation and sandbox reservations reconcile on terminal/cancelled jobs; quota denials write analytics-only `tools.denied_quota` audit metrics for COGS/ops review without operator notification fanout | hosted live audit/job-before-dispatch test; hosted quota denial metric assertions; sandbox reservation test; sandbox reservation reconciliation test; atomic reservation conflict test; parallel atomic reservation race test | Locally verified |
|
|
73
|
+
| Policy: audit logged before cost | live Worker inserts a D1 audit event before inserting the job and sending a Queue message or creating a Workflow instance | hosted live audit/job-before-dispatch test; hosted Browser Agent Workflow dispatch test | Locally verified |
|
|
74
|
+
| Policy: no authenticated browsing by default | `LAUNCH_POLICIES` and plan posture disable or gate authenticated browsing | goal verifier markers and hosted policy contract test | Locally verified |
|
|
75
|
+
| Policy: sandbox public egress with private denial | CLI sandbox payloads normalize to public HTTP(S) network available for paid Agent Computer jobs; `LAUNCH_POLICIES` records private/internal denial; hosted outbound policy rejects URL credentials, private/local/internal destinations, and private-resolving hostnames before forwarding HTTP(S) requests | CLI sandbox test; hosted policy contract test; hosted public-network-default and outbound-denial tests | Locally verified |
|
|
76
|
+
| Policy: no browser recording by default | `LAUNCH_POLICIES` and plan posture disable recording by default | hosted policy contract test | Locally verified |
|
|
77
|
+
| Policy: no unlimited crawl | `LAUNCH_POLICIES` and plan posture gate crawl through `browser.crawl_site`, plan page/depth caps, and crawl-page metering | hosted policy contract test; hosted crawl artifact and crawl-page metering test | Locally verified |
|
|
78
|
+
| Human-use security hardening | CLI denies stored-token forwarding to insecure local API URLs unless explicitly allowed; OAuth/API-key login exchanges through Vibecodr Auth, stores the durable local account credential, and refreshes expired grants; artifact uploads/downloads are workspace-bounded including symlink/junction denial; artifact deletion requires explicit confirmation; hosted artifact writes hard-enforce active storage caps and clean up R2 after D1 reservation failure; hosted artifact delete removes actor-scoped D1 shelf rows plus R2 bytes; hosted auth supports scoped Vibecodr CLI grants with per-tool capability scopes; hosted auth failures write anonymous, token/query-free `auth.failed` metrics before any aggregate account-level anomaly alert; live rows are actor-scoped; Browser Run has DNS preflight plus Quick Action routing, Scheduled QA uses only public-HTTPS Browser Quick Actions, paid Browser Agent Workflow routing, crawl routing, timeout shaping, 10-minute idle closure metadata/audit, unsafe URL denial metrics, and provider 429 retry/defer handling; sandbox public HTTP(S) egress is allowed for normal package/docs work while private/local/internal destinations stay denied; sandbox seconds are reserved and reconciled; artifacts inherit and enforce retention; operator alerts remain metadata-only and D1-deduped | CLI behavior tests, validators tests, parent `cliAuth` tests, hosted Worker tests, `migrations/0002_actor_scope.sql`, `migrations/0003_quota_reservations.sql`, `migrations/0004_sandbox_quota_reservations.sql`, `migrations/0005_operator_alert_dedupe.sql`, `migrations/0006_scheduled_qa.sql` | Locally verified |
|
|
79
|
+
| Stable JSON output and exit codes | `src/cli/output.ts`, `src/cli/errors.ts` | CLI behavior tests | Locally verified |
|
|
80
|
+
| Native credential storage by default | `src/config/credential-store.ts` uses native keyring unless file mode is explicitly selected | login tests use explicit file store; docs warn file mode is for tests/automation | Locally verified |
|
|
81
|
+
| Package is publishable | `package.json`, `scripts/check-pack-artifact.mjs`, `.github/workflows/ci.yml` | `npm run verify:artifact`; `npm pack` metadata checked by script | Locally verified |
|
|
82
|
+
| Cloudflare Worker production shape | `wrangler.jsonc`, generated `worker-configuration.d.ts`, `src/hosted/worker.ts`, `Dockerfile`, `migrations/0001_live_schema.sql`, `migrations/0002_actor_scope.sql`, `migrations/0003_quota_reservations.sql`, `migrations/0004_sandbox_quota_reservations.sql`, `migrations/0005_operator_alert_dedupe.sql`, `migrations/0006_scheduled_qa.sql`; Durable Object classes `Sandbox` and `ProSandbox` back Creator/Pro container lanes | `npm run check:worker`; dry-run deploy; remote migrations; live smoke | Hosted-required after hardening |
|
|
83
|
+
| Current Cloudflare guidance used | `docs/API-CONTRACT.md` records Browser Run on Containers, Quick Action timeout, crawl, Sandbox, Workers, and MCP assumptions | Cloudflare docs fetched during implementation; Worker uses current compatibility date and generated types | Verified for this build date |
|
|
84
|
+
| Release channel cannot hide live gaps | `scripts/check-release-readiness.mjs` imports built goal coverage and validates release channel semantics | `npm run verify:release`; `VC_TOOLS_RELEASE_CHANNEL=live npm run verify:release`; included in `npm run verify` | Verified |
|
|
85
|
+
|
|
86
|
+
## Hosted Production Evidence
|
|
87
|
+
|
|
88
|
+
`live-hosted-production` was previously provisioned and production-smoked before
|
|
89
|
+
the latest security hardening. The entries below distinguish older historical
|
|
90
|
+
evidence from the 2026-05-14 refreshed production smokes that still do not add
|
|
91
|
+
up to live release clearance:
|
|
92
|
+
|
|
93
|
+
- `scripts/wrangler-wincred.ps1 d1 migrations apply vc-tools-db --remote`
|
|
94
|
+
applied `0004_sandbox_quota_reservations.sql` and
|
|
95
|
+
`0005_operator_alert_dedupe.sql` on 2026-05-14 after remote readback showed
|
|
96
|
+
them pending. Follow-up readback reported no pending migrations, returned
|
|
97
|
+
both names from `d1_migrations`, returned `reserved_sandbox_seconds` from
|
|
98
|
+
`PRAGMA table_info(jobs)`, and returned `operator_alert_dedupe` plus expected
|
|
99
|
+
indexes from `sqlite_master`.
|
|
100
|
+
- `scripts/wrangler-wincred.ps1 -CredentialTarget
|
|
101
|
+
vibecodr:cloudflare:wrangler-deploy-token-prod deploy` deployed
|
|
102
|
+
`vc-tools-api` version `9846c9ad-641d-43f4-be5e-7a2ce574eb82` to
|
|
103
|
+
`https://tools.vibecodr.space` on 2026-05-14. The first deploy attempt with
|
|
104
|
+
the admin token uploaded version `88334d51-e255-4051-aae8-68f48434b0e7` but
|
|
105
|
+
failed during route update because that token lacked zone-route permission;
|
|
106
|
+
the deploy-token retry completed.
|
|
107
|
+
- Redirect-preflight hardening was verified with `npm run verify`, then
|
|
108
|
+
redeployed with the same deploy-token path as version
|
|
109
|
+
`fb83e4dc-8142-414f-94ba-66ec14821a68`; Cloudflare deployments readback showed
|
|
110
|
+
that version at 100%.
|
|
111
|
+
- Historical live health returned `providerMode=live`, `version=0.1.3`, no missing
|
|
112
|
+
bindings, and after the alert-secret bootstrap returned
|
|
113
|
+
`operatorAlerts.configured=true`, `operatorAlerts.internalApiBinding=true`,
|
|
114
|
+
and `operatorAlerts.internalAlertToken=true`. Current public health/readiness
|
|
115
|
+
hides operator alert readiness from user-facing payloads.
|
|
116
|
+
- `scripts/vc-tools-secrets.ps1` now owns the hosted alert signer:
|
|
117
|
+
`vibecodr:vc-tools:internal-alert-secret:prod` is uploaded to `vc-tools-api`
|
|
118
|
+
as `VC_TOOLS_INTERNAL_ALERT_TOKEN` and to `vibecodr-internal-api` as
|
|
119
|
+
`INTERNAL_BINDING_TOKEN_NEXT`, leaving the current production
|
|
120
|
+
`INTERNAL_BINDING_TOKEN` untouched. Secret-name readback listed both
|
|
121
|
+
`VC_TOOLS_INTERNAL_ALERT_TOKEN` and `INTERNAL_BINDING_TOKEN_NEXT`.
|
|
122
|
+
- `workers/internal-api/wrangler.toml` previously included
|
|
123
|
+
`E-VIBECODR-VC-TOOLS-USAGE-THRESHOLD` in `ALERT_CODES` for a now-retired
|
|
124
|
+
user-usage operator email lane. The current local contract allows
|
|
125
|
+
`E-VIBECODR-VC-TOOLS-SOFT-CAP` for account-wide capacity pressure and
|
|
126
|
+
`E-VIBECODR-VC-TOOLS-RETENTION-CLEANUP-FAILED` for account-wide
|
|
127
|
+
expired-artifact cleanup failure, and
|
|
128
|
+
`E-VIBECODR-VC-TOOLS-EXECUTION-HEALTH-DEGRADED` for account-wide
|
|
129
|
+
Browser/Sandbox failure or timeout rate pressure, and
|
|
130
|
+
`E-VIBECODR-VC-TOOLS-HOSTED-WORKER-5XX` for unexpected account-wide hosted
|
|
131
|
+
Worker HTTP 500s, and
|
|
132
|
+
`E-VIBECODR-VC-TOOLS-AUTH-FAILURE-ANOMALY` for account-wide hosted auth
|
|
133
|
+
failure bursts, and
|
|
134
|
+
`E-VIBECODR-VC-TOOLS-CLOUDFLARE-SPEND-ANOMALY` for account-wide estimated
|
|
135
|
+
Cloudflare usage spend pressure; all user-scoped vc-tools payloads are
|
|
136
|
+
filtered before delivery or outbound-alert dedupe.
|
|
137
|
+
The earlier dry-run deploy passed and production deploy published internal-api version
|
|
138
|
+
`51a7fdce-ac37-4c55-ba9a-eb5420d38cfd`; Cloudflare deployments readback showed
|
|
139
|
+
that version at 100% on 2026-05-14.
|
|
140
|
+
- The per-user notification fanout retirement was deployed on 2026-05-14:
|
|
141
|
+
parent `vibecodr-api` version
|
|
142
|
+
`2ece601a-7c72-4e53-b496-9478eb9e16ee`, `vibecodr-internal-api` version
|
|
143
|
+
`5d6dc724-c92b-478f-b0fc-aa4e2b966c79`, and `vc-tools-api` version
|
|
144
|
+
`520f70b6-ec3e-4a4d-859c-e77161b00f11` all read back at 100%. Production
|
|
145
|
+
`GET https://tools.vibecodr.space/v1/health` returned
|
|
146
|
+
`operatorAlerts.codes=["E-VIBECODR-VC-TOOLS-SOFT-CAP"]`,
|
|
147
|
+
`operatorAlerts.configured=true`, `operatorAlerts.internalApiBinding=true`,
|
|
148
|
+
and `operatorAlerts.internalAlertToken=true`, proving the then-current
|
|
149
|
+
operator-readiness payload no longer exposed retired user-usage alert codes.
|
|
150
|
+
Current public health/readiness hides operator alert readiness from
|
|
151
|
+
user-facing payloads. A fresh deploy/readback is still needed for the new
|
|
152
|
+
`E-VIBECODR-VC-TOOLS-RETENTION-CLEANUP-FAILED`,
|
|
153
|
+
`E-VIBECODR-VC-TOOLS-EXECUTION-HEALTH-DEGRADED`,
|
|
154
|
+
`E-VIBECODR-VC-TOOLS-HOSTED-WORKER-5XX`, and
|
|
155
|
+
`E-VIBECODR-VC-TOOLS-AUTH-FAILURE-ANOMALY`, and
|
|
156
|
+
`E-VIBECODR-VC-TOOLS-CLOUDFLARE-SPEND-ANOMALY` codes.
|
|
157
|
+
- Parent API Worker secret-name readback for `workers/api/wrangler.toml` listed
|
|
158
|
+
both `CLERK_SECRET_KEY` and `CLI_GRANT_SECRET` on 2026-05-14. That proves
|
|
159
|
+
configuration presence by name, not a real Clerk OAuth/API-key exchange.
|
|
160
|
+
- Parent API Worker deployment/readback closed a stale-route blocker on
|
|
161
|
+
2026-05-14: `vibecodr-api` version
|
|
162
|
+
`e0307c63-4df5-4b07-b491-0a739ac185fe` is at 100%, and the previously
|
|
163
|
+
404ing `POST https://api.vibecodr.space/auth/vc-tools/device/start` now
|
|
164
|
+
returned HTTP 200 with the then-current `vibecodr.space/settings/api-keys`
|
|
165
|
+
verification URI. Current CLI approval uses `/settings/vc-tools/approve`.
|
|
166
|
+
- The canonical parent Worker deployment pass later on 2026-05-14 read back all
|
|
167
|
+
deployed versions at 100%: `vibecodr-outbound-alerts`
|
|
168
|
+
`c9f60791-38e4-494f-9990-6deab45e9875`, `vibecodr-clerk-proxy`
|
|
169
|
+
`29d21b3c-89a3-42fd-97fa-3a98661530a8`, `vibecodr-outreach-email`
|
|
170
|
+
`2d165f68-ff57-46a1-b381-b44aa61c7bc6`, `vibecodr-internal-api`
|
|
171
|
+
`e506348f-fdef-4171-9abe-5716d2977083`, `vibecodr-outbound`
|
|
172
|
+
`349746cf-958d-4d67-b478-3b4161adad89`, `vibecodr-dispatch`
|
|
173
|
+
`9da1465c-7c1c-42bd-a1ba-90a409268e5e`, `vibecodr-vibe-edge`
|
|
174
|
+
`8fbbc418-5af2-4a82-82fb-1fd2cb97a9a7`, `vibecodr-pulse-state-gateway`
|
|
175
|
+
`b80edff8-7e5b-450f-b70d-8fd4fcc7b7ba`, and `vibecodr-api`
|
|
176
|
+
`b19e2ddf-8b33-4ea7-948f-3bcb0d7d3121`.
|
|
177
|
+
- A post-deploy device-start smoke returned HTTP 200 with the expected
|
|
178
|
+
verification URI, then remote parent D1 marked smoke session
|
|
179
|
+
`vctda_5cbe90cf-09ee-4543-acd6-89cbd6cf30c7` `expired`.
|
|
180
|
+
- Post-deploy `https://tools.vibecodr.space/v1/health` returned
|
|
181
|
+
`providerMode=live`, `dnsPreflight=true`, and all operator-alert secret and
|
|
182
|
+
binding booleans true. `vc-tools status --json` returned authenticated health
|
|
183
|
+
OK against `https://tools.vibecodr.space`.
|
|
184
|
+
- A fresh read-only hosted smoke on 2026-05-15 returned `/v1/health`
|
|
185
|
+
`ok=true`, `providerMode=live`, version `0.1.3`, no missing bindings,
|
|
186
|
+
`dnsPreflight=true`, `sandboxInternetDefault=off`, account-wide
|
|
187
|
+
hosted/Browser/Sandbox caps `24/30`, and operator-alert config containing only
|
|
188
|
+
`E-VIBECODR-VC-TOOLS-SOFT-CAP` at `70/85/95` thresholds with internal alert
|
|
189
|
+
binding/token present. `vc-tools status --json` used the native credential
|
|
190
|
+
store and returned authenticated live health; `whoami --json` returned plan
|
|
191
|
+
`Creator`; `usage --json`, `tools list --json`, `grants list --json`,
|
|
192
|
+
`retention show --json`, and `inspect --json` also succeeded. `inspect --json`
|
|
193
|
+
still reports `live-hosted-production` as the single hosted-required
|
|
194
|
+
inspection; this smoke refreshes deployed-service evidence, not release
|
|
195
|
+
clearance.
|
|
196
|
+
- Earlier production smoke returned plan `Pro` and workspace `wrk_tools` under the
|
|
197
|
+
then-current static worker config; current local source defaults the contract
|
|
198
|
+
baseline to Creator and should be redeployed/smoked before broad paid rollout.
|
|
199
|
+
- Earlier direct-grant smoke verified the CLI credential path without printing
|
|
200
|
+
the token. `vc-tools status` succeeded through the native credential store on
|
|
201
|
+
2026-05-14.
|
|
202
|
+
- Real user-scoped API-key login passed on 2026-05-14: a signed-in production
|
|
203
|
+
API Keys page created a temporary scoped `vc-tools` key, `vc-tools login
|
|
204
|
+
--credential-stdin` exchanged it through the parent API as an isolated smoke
|
|
205
|
+
approval, and `status --json` plus `whoami --json` read back authenticated
|
|
206
|
+
production health and plan `Pro`. The temporary local approval was removed
|
|
207
|
+
after proof.
|
|
208
|
+
- Revoked API-key denial passed on 2026-05-14: temporary smoke keys were removed
|
|
209
|
+
from a fresh signed-in API Keys page, and a follow-up `vc-tools login
|
|
210
|
+
--credential-stdin` against a revoked smoke secret exited 3 with
|
|
211
|
+
`E-VIBECODR-0001` / parent Auth API HTTP 401.
|
|
212
|
+
- Plain browser/device `vc-tools login` passed after the production Pages
|
|
213
|
+
release. Real Clerk OAuth token login is also production-proven as of
|
|
214
|
+
2026-05-15.
|
|
215
|
+
- An isolated `vc-tools login` attempt with profile `smoke-real-device` reached
|
|
216
|
+
the production browser approval loop for code `4YBH-EBFH`; no signed-in
|
|
217
|
+
browser approval occurred during the run, so it remains an interactive
|
|
218
|
+
blocker. The two smoke device sessions were marked `expired` by exact D1 IDs.
|
|
219
|
+
- A later Chrome-backed browser/device attempt reached code `CSYS-TC3J`, but
|
|
220
|
+
the production API Keys page did not render the expected approval panel for
|
|
221
|
+
`vc_tools_code`; parent D1 session
|
|
222
|
+
`vctda_d867c439-e318-4ef4-a689-06adeed384ab` was marked `expired` after the
|
|
223
|
+
blocked attempt. This keeps browser/device login blocked on frontend/Pages
|
|
224
|
+
deployment rather than on the parent API route.
|
|
225
|
+
- The frontend/Pages blocker was closed on 2026-05-14: commit
|
|
226
|
+
`097870a2a` was pushed to `origin/master`, and Cloudflare Pages deployment
|
|
227
|
+
list read back active production deployment
|
|
228
|
+
`bbba8b07-0f83-4bc9-90be-7faf1340373c` for source `097870a`.
|
|
229
|
+
`vc-tools login --no-browser` with profile
|
|
230
|
+
`smoke-real-device-prod-097870a` produced code `E2FW-3R8R`; the signed-in
|
|
231
|
+
production API Keys page rendered `Approve vc-tools login`, approved the
|
|
232
|
+
matching code, and the CLI exited 0 with `authMode=browser_device`,
|
|
233
|
+
`grantProfile=vc_tools`, `grantScopes=["vc-tools:use","vc-tools:*"]`,
|
|
234
|
+
`verified=true`, and plan `Pro`. Follow-up `status --json` and
|
|
235
|
+
`whoami --json` read back authenticated production health, `tokenKind=cli_grant`,
|
|
236
|
+
`providerMode=live`, and plan `Pro`; the temporary local profile was removed.
|
|
237
|
+
- Invalid API-key-shaped and OAuth-token-shaped production exchange requests to
|
|
238
|
+
`/auth/cli/exchange` both failed closed with HTTP 401
|
|
239
|
+
`auth.verificationFailed`.
|
|
240
|
+
- Real Clerk OAuth token login passed on 2026-05-15 through the live Clerk PKCE
|
|
241
|
+
path advertised by `GET https://api.vibecodr.space/agent/vibe`: issuer
|
|
242
|
+
`https://vibecodr.space/__clerk`, client id `g3NwTqUg7nRzHeHo`, redirect
|
|
243
|
+
`http://localhost:3000/oauth_callback`, and scopes `openid profile email`.
|
|
244
|
+
The in-app browser completed sign-in/consent, the local callback listener
|
|
245
|
+
exchanged the authorization code for a Clerk access token, and
|
|
246
|
+
`scripts/smoke-vc-tools-oauth-token.mjs` consumed that token over stdin
|
|
247
|
+
without printing or persisting it. Smoke run
|
|
248
|
+
`codex-oauth-20260515230549-tgn17r` passed `login-oauth-token`,
|
|
249
|
+
`whoami-oauth-token`, and `usage-oauth-token`: `authMode=oauth`,
|
|
250
|
+
`grantProfile=vc_tools`, `grantScopes=["vc-tools:use","vc-tools:*"]`,
|
|
251
|
+
`verified=true`, plan `Pro`, `providerMode=live`,
|
|
252
|
+
`vcToolCreditsIncluded=3000`, `browserSecondsIncluded=180000`,
|
|
253
|
+
`sandboxMinutesIncluded=3000`, `secretPrinted=false`, and
|
|
254
|
+
`configDirRemoved=true`.
|
|
255
|
+
- Direct MCP JSON-RPC POSTs to `https://tools.vibecodr.space/mcp` passed on
|
|
256
|
+
2026-05-14: `initialize` returned status 200 and protocol version
|
|
257
|
+
`2025-11-25`, `tools/list` returned status 200 with 13 tools and
|
|
258
|
+
`usage.read`, and `tools/call` for `usage.read` returned status 200,
|
|
259
|
+
`isError=false`, alias `limits.read`, and `providerMode=live`.
|
|
260
|
+
- A live `browser.extract_markdown` job completed on 2026-05-14 as
|
|
261
|
+
`job_e1d68ee7-7dd2-4583-9a65-41fd1127e1dc`, producing R2 artifact
|
|
262
|
+
`art_590d9c04-8dda-4b0c-a1e4-b9c6892776bd`; metadata readback and byte pull
|
|
263
|
+
succeeded.
|
|
264
|
+
- Live `browser.render_url`, `browser.screenshot_url`, and `browser.render_pdf`
|
|
265
|
+
jobs completed on 2026-05-14 as
|
|
266
|
+
`job_4182910d-41bd-49cb-972b-84544647ce88`,
|
|
267
|
+
`job_0db62b80-48b5-4824-b35b-ad360a3bb427`, and
|
|
268
|
+
`job_820ced20-4e8b-42d1-97f1-fa14cc3df076`.
|
|
269
|
+
- Queued cancellation passed on 2026-05-14:
|
|
270
|
+
`job_c73d936e-a736-4f19-b6da-104f7887adfe` was accepted as `queued`,
|
|
271
|
+
canceled immediately, finalized as `cancelled`, and D1 readback showed
|
|
272
|
+
`started_at=null`, `reserved_sandbox_seconds=0`, and audit rows
|
|
273
|
+
`jobs.cancel` plus `tools.skipped_cancelled`.
|
|
274
|
+
- `npm run verify` passed after the latest production-proof updates: `check`,
|
|
275
|
+
`test` (88 passing tests), `build`, `verify:artifact`, `verify:goal`, and
|
|
276
|
+
default-channel `verify:release` all completed. Live hosted production
|
|
277
|
+
release remains separately gated until the remaining real-user/provider proof
|
|
278
|
+
blockers close.
|
|
279
|
+
- Workflow migration smoke passed on 2026-05-17 after deploying
|
|
280
|
+
`vc-tools-api` version `aeeaab85-93ab-4219-acf7-fffbe2be834e` at 100%.
|
|
281
|
+
A short-lived synthetic Creator grant submitted `browser.agent_task` against
|
|
282
|
+
`https://example.com`; the hosted API accepted
|
|
283
|
+
`job_0e8b0cc2-9a3c-4791-8e77-ce0da1191a3c` with `providerMode=live`,
|
|
284
|
+
`capability=browser.agent_task`, `queue.fairDelaySeconds=0`, and no queued
|
|
285
|
+
actor/global backlog. The job completed through the Workflow-owned Browser
|
|
286
|
+
Session lane and produced R2 artifact
|
|
287
|
+
`art_466de507-1432-41eb-9253-c9f79aac8148` as
|
|
288
|
+
`browser-agent-task-json`, 834 bytes,
|
|
289
|
+
`application/json; charset=utf-8`, expiring on 2026-05-24. CLI proof
|
|
290
|
+
metadata readback and byte download both succeeded; post-run usage for the
|
|
291
|
+
smoke actor showed one browser job and eight browser seconds. Remote D1
|
|
292
|
+
readback showed `queue_delay_seconds=0`, `reserved_credits=1`,
|
|
293
|
+
`reserved_browser_seconds=120`, `status=completed`, and audit events
|
|
294
|
+
`tools.accept_requested`, `tools.accepted`, `tools.workflow_started`,
|
|
295
|
+
`tools.browser_agent.completed`, and `tools.completed` for the same job.
|
|
296
|
+
The smoke wrapper reported `secretPrinted=false` and removed its temporary
|
|
297
|
+
config/workspace directory.
|
|
298
|
+
- Root `pnpm run check` passed after regenerating the system map and fixing the
|
|
299
|
+
docs contract guardrail command wording, so the parent repo gate is fresh as
|
|
300
|
+
of the 2026-05-14 Worker deployment/readback pass.
|
|
301
|
+
- A short live Creator `browser.agent_task` job has been smoked through the
|
|
302
|
+
`BROWSER` binding with closure metadata and artifact readback. New real
|
|
303
|
+
paid-user Creator/Pro Browser Session breadth and Creator 20-minute / Pro
|
|
304
|
+
1-hour cap validation still need production proof.
|
|
305
|
+
- A live `browser.crawl_site` job completed on 2026-05-14 with `--max-pages 1
|
|
306
|
+
--max-depth 1` as `job_bf15485f-d0be-4bd8-820d-e89cdaa3509d`, producing R2
|
|
307
|
+
artifact `art_171deebb-8e41-43e4-add7-01fc80c10565`. An earlier
|
|
308
|
+
`--max-depth 0` attempt was accepted but failed with Browser Run HTTP 400, so
|
|
309
|
+
keep the production-safe crawl smoke at depth 1 unless provider docs prove a
|
|
310
|
+
different minimum.
|
|
311
|
+
- Scheduled QA was deployed live on 2026-05-14 after applying
|
|
312
|
+
`0006_scheduled_qa.sql` to remote `vc-tools-db`. `scheduled-qa create
|
|
313
|
+
--run-now` now immediately enqueues the first Browser Quick Action instead of
|
|
314
|
+
merely waiting for the next six-hour cron tick. Live config
|
|
315
|
+
`sqa_5309a4d4-b2b2-4063-aacc-82d5bacbd972` created job
|
|
316
|
+
`job_5695beee-edba-4caa-8beb-15169e06a78a`, which completed as
|
|
317
|
+
`browser.extract_markdown` and produced artifact
|
|
318
|
+
`art_9ae9d043-9bb1-46a5-8b4b-b79666fa74eb`. The smoke config was paused,
|
|
319
|
+
listed disabled, deleted, and the disposable artifact was deleted.
|
|
320
|
+
- Scheduled QA monthly cap denial was production-proven on 2026-05-14. The
|
|
321
|
+
static Creator smoke actor had zero May queued Scheduled QA rows before the
|
|
322
|
+
test. A marked seed config `sqa_monthcap_static_20260514_2130` plus 300 marked
|
|
323
|
+
queued rows filled the Creator `maxRunsPerMonth=300` cap. Live
|
|
324
|
+
`scheduled-qa create --run-now` for config
|
|
325
|
+
`sqa_dd9dd9f9-4903-442b-9872-b2752c295d5c` returned `providerMode=live`,
|
|
326
|
+
`lastJobId=null`, and
|
|
327
|
+
`lastError.code=quota.scheduled_qa_monthly_runs_exceeded`; D1 readback showed
|
|
328
|
+
one `status=skipped` run with the same error code. The cap-test config was
|
|
329
|
+
deleted through the CLI, the seed config was deleted from D1, and final
|
|
330
|
+
readback returned `leftover_configs=0`, `leftover_runs=0`, and
|
|
331
|
+
`queued_count_after=0`.
|
|
332
|
+
- A live Creator `sandbox.run_command` job completed on 2026-05-14 as
|
|
333
|
+
`job_a8c9827a-a6f4-4c4e-abbf-9e38557f9cb5`, producing R2 artifact
|
|
334
|
+
`art_50e5f37e-f28d-4db8-afe6-27c1f4b3f99f` through the deployed
|
|
335
|
+
`standard-1` lane. Real paid-user Pro sandbox smoke remains open; the
|
|
336
|
+
synthetic Pro grant smoke below only proves hosted lane routing and execution.
|
|
337
|
+
- A live `sandbox.run_tests` job completed on 2026-05-14 as
|
|
338
|
+
`job_bdf491df-ad11-4e15-a07b-c236a8aa691c`, producing R2 artifact
|
|
339
|
+
`art_614ffaf3-d64e-449a-bb02-b271400ea853` through the deployed
|
|
340
|
+
`standard-1` lane.
|
|
341
|
+
- A synthetic short-lived Pro CLI grant for actor `smoke_pro_1778761722370`
|
|
342
|
+
read back plan `Pro`, `sandbox.containerInstanceType=standard-2`, and
|
|
343
|
+
`maxSandboxTaskSeconds=1800`, then completed `sandbox.run_command` as
|
|
344
|
+
`job_928afe9c-1760-4f6b-9d87-380524425f10`, producing R2 artifact
|
|
345
|
+
`art_8abce620-b8c1-40cd-bf51-27cf74828aed`. Post-run usage for that actor
|
|
346
|
+
reported `vcToolCredits=1`, `dailyVcToolCredits=1`, `sandboxJobs=1`, and
|
|
347
|
+
`sandboxMinutes=0.04`.
|
|
348
|
+
- A synthetic short-lived Free CLI grant for actor `smoke_free_1778761722370`
|
|
349
|
+
read back plan `Free`, `sandbox.containerInstanceType=none`, and
|
|
350
|
+
`maxSandboxTaskSeconds=0`; `sandbox.run_command` returned HTTP 403
|
|
351
|
+
`quota.plan_denied`, with usage and jobs unchanged at zero.
|
|
352
|
+
- The synthetic Free actor could not read or download the synthetic Pro actor's
|
|
353
|
+
artifact `art_8abce620-b8c1-40cd-bf51-27cf74828aed`; metadata returned
|
|
354
|
+
`not_found` and download returned HTTP 404.
|
|
355
|
+
- Production D1 `vc-tools-db` `audit_events` readback returned
|
|
356
|
+
`tools.accept_requested`, `tools.accepted`, and `tools.completed` rows for
|
|
357
|
+
`job_bdf491df-ad11-4e15-a07b-c236a8aa691c` (`sandbox.run_tests`) and
|
|
358
|
+
`job_928afe9c-1760-4f6b-9d87-380524425f10` (`sandbox.run_command`, synthetic
|
|
359
|
+
Pro actor).
|
|
360
|
+
- `/v1/tools/test` for `browser.render_url` with `https://127.0.0.1/` returned
|
|
361
|
+
HTTP 400 `input.blocked_url`; MCP `tools/call` for the same input returned
|
|
362
|
+
HTTP 200 with JSON-RPC error `-32602` and hosted code `input.blocked_url`.
|
|
363
|
+
Immediate before/after readback showed usage unchanged
|
|
364
|
+
(`vcToolCredits=14`, `dailyVcToolCredits=12`, `browserJobs=11`,
|
|
365
|
+
`browserSeconds=37`, `sandboxJobs=3`, `sandboxMinutes=0.21`) and the jobs
|
|
366
|
+
list unchanged at 14 rows.
|
|
367
|
+
- A broader live unsafe-target matrix through `/v1/tools/test` rejected
|
|
368
|
+
`https://localhost/`, `https://127.0.0.1/`, `https://10.0.0.1/`,
|
|
369
|
+
`https://192.168.1.10/`, `https://[::1]/`, `https://[fe80::1]/`, and
|
|
370
|
+
`https://service.internal/` as `input.blocked_url`, and rejected
|
|
371
|
+
`https://user:pass@example.com/` plus `http://example.com/` as
|
|
372
|
+
`input.invalid_url`; usage and jobs were unchanged before/after.
|
|
373
|
+
- DNS preflight denial happened before cost-bearing dispatch: Cloudflare DNS resolved
|
|
374
|
+
`127.0.0.1.nip.io` to `127.0.0.1`, and the hosted API rejected
|
|
375
|
+
`https://127.0.0.1.nip.io/` as `input.blocked_url`; an unresolvable
|
|
376
|
+
`example.com` subdomain returned `input.unresolvable_url`. Both synthetic
|
|
377
|
+
actors kept usage and jobs at zero.
|
|
378
|
+
- Redirect preflight denial happened before cost-bearing dispatch on the redeployed
|
|
379
|
+
Worker: synthetic Creator actor `smoke_redirect_1778762601247` submitted
|
|
380
|
+
`https://httpbin.org/redirect-to?url=https%3A%2F%2F127.0.0.1%2F`, which
|
|
381
|
+
returned HTTP 400 `input.blocked_url` with usage and jobs still zero.
|
|
382
|
+
- `/v1/usage` after the `sandbox.run_tests` smoke reported `vcToolCredits=15`,
|
|
383
|
+
`dailyVcToolCredits=13`, `browserJobs=11`, `sandboxJobs=4`,
|
|
384
|
+
`browserMinutes=0.62`, and `sandboxMinutes=0.25`.
|
|
385
|
+
- `/v1/artifacts` listed 12 generated artifacts after the `sandbox.run_tests`
|
|
386
|
+
smoke, with newest artifact
|
|
387
|
+
`art_614ffaf3-d64e-449a-bb02-b271400ea853`.
|
|
388
|
+
- `browser.agent_task` was accepted as
|
|
389
|
+
`job_408d648f-5985-43df-9ce1-2a48a2a7e213` on 2026-05-14 but failed with
|
|
390
|
+
`provider.execution_failed` / `No browser available`.
|
|
391
|
+
- Browser Session capacity was retried on 2026-05-14: live
|
|
392
|
+
`browser.agent_task` job `job_b6aa6cde-b46d-4e5f-b402-85a34c3b431f` was
|
|
393
|
+
accepted, started, then failed with `provider.execution_failed` and
|
|
394
|
+
`Unable to create new browser: code: 503: message: No browser available`.
|
|
395
|
+
- A later short Creator Browser Session retry succeeded on 2026-05-14:
|
|
396
|
+
static Creator actor `static_a7baba1d3429c27b` submitted
|
|
397
|
+
`browser.agent_task` against `https://example.com` with
|
|
398
|
+
`--timeout-ms 120000`; the hosted API accepted
|
|
399
|
+
`job_9c9fe3fb-a9dc-46cd-b0a7-6370018636bb` with `quotaChecked=true`,
|
|
400
|
+
`auditLogged=true`, and no fair delay. `jobs status` read back
|
|
401
|
+
`status=completed`, plan `Creator`, artifact
|
|
402
|
+
`art_acd11f82-58af-475e-a83a-d102332c64c4`, `closureReason=completed`,
|
|
403
|
+
`idleTimeoutMs=600000`, `maxDurationMs=120000`, and `durationMs=6238`.
|
|
404
|
+
Artifact metadata readback returned kind `browser-agent-task-json`,
|
|
405
|
+
767 bytes, and a one-week expiration. Usage readback showed
|
|
406
|
+
`allowBrowserSessions=true`, `maxBrowserSessionSeconds=1200`,
|
|
407
|
+
`maxConcurrentBrowserSessionsPerUser=1`, `browserSeconds=43`, and
|
|
408
|
+
`concurrentRuns=0`. This clears the stale provider-capacity blocker for a
|
|
409
|
+
short Creator task, but not real paid-user Free/Creator/Pro breadth,
|
|
410
|
+
Pro Browser Session, or long-duration boundary proof.
|
|
411
|
+
- A fresh short Creator Browser Session retry succeeded on 2026-05-15 after the
|
|
412
|
+
temporary-completion handoff. Static Creator actor
|
|
413
|
+
`static_a7baba1d3429c27b` submitted `browser.agent_task` against
|
|
414
|
+
`https://example.com` with `--timeout-ms 60000` and
|
|
415
|
+
`--idle-timeout-ms 30000`; hosted accepted
|
|
416
|
+
`job_1860e308-7702-4d03-9b00-a2657d8dac51` with `quotaChecked=true`,
|
|
417
|
+
`auditLogged=true`, and no queue backlog. `jobs status` read back
|
|
418
|
+
`status=completed`, plan `Creator`, artifact
|
|
419
|
+
`art_0b580e26-7b76-4edf-8811-1d2c5b68a61b`,
|
|
420
|
+
`closureReason=completed`, `idleTimeoutMs=30000`, `maxDurationMs=60000`,
|
|
421
|
+
and `durationMs=7675`.
|
|
422
|
+
- A fresh Creator Sandbox command smoke succeeded on 2026-05-15. The same
|
|
423
|
+
static Creator actor submitted `sandbox.run_command` for `node --version`;
|
|
424
|
+
hosted accepted `job_395a5f17-a3ad-43c0-b694-c87fc303bc7d` with
|
|
425
|
+
`quotaChecked=true` and `auditLogged=true`, then completed with artifact
|
|
426
|
+
`art_9438a0e0-ad65-4893-97c7-bcb0fd7b684c` through the deployed
|
|
427
|
+
`standard-1` lane. Usage readback moved from 22 to 24 monthly VC Tool
|
|
428
|
+
credits, from 1 to 3 daily credits, from 16 to 17 browser jobs, from 6 to 7
|
|
429
|
+
sandbox jobs, from 63 to 70 browser seconds, and from 0.25 to 0.29 sandbox
|
|
430
|
+
minutes, with zero active concurrency afterward.
|
|
431
|
+
- The 2026-05-15 artifact readback exposed a hosted-list bug: the CLI sent
|
|
432
|
+
`--limit`, but the deployed Worker ignored the query and returned up to 50
|
|
433
|
+
artifacts/jobs. The fix now validates `--limit` as `1..100` in the CLI,
|
|
434
|
+
applies the same bound in the hosted Worker, and binds `LIMIT ?` for both
|
|
435
|
+
`/v1/jobs` and `/v1/artifacts`. Verification passed with
|
|
436
|
+
`node --import tsx --test test/cli.behavior.test.ts`,
|
|
437
|
+
`node --import tsx --test test/hosted-worker.test.ts`, `npm run check`,
|
|
438
|
+
`npm test`, `npm run verify:goal`, `npm run verify:release`,
|
|
439
|
+
`git diff --check`, `npx wrangler deploy --dry-run --outdir
|
|
440
|
+
tmp\wrangler-dry-run` through the WinCred wrapper, and full `npm run verify`.
|
|
441
|
+
Production deploy published `vc-tools-api` version
|
|
442
|
+
`cde73e4b-16f3-4faa-a122-63171a3ea3b4`; `wrangler deployments list` read it
|
|
443
|
+
back at 100%. Live readback then returned exactly two artifacts for
|
|
444
|
+
`artifacts list --limit 2`, exactly one artifact for
|
|
445
|
+
`artifacts list --limit 1`, and exactly two completed jobs for
|
|
446
|
+
`jobs list --limit 2`.
|
|
447
|
+
- Historical operator alert delivery smoke passed on 2026-05-14 for the retired
|
|
448
|
+
user-usage alert lane: synthetic Creator actor
|
|
449
|
+
`smoke_alert_creator_1778763846` completed live `browser.extract_markdown`
|
|
450
|
+
job `job_3bacc8b9-022b-41ba-a655-9721b8c34104`, moving monthly credits from
|
|
451
|
+
419/600 to 420/600 and crossing the 70% threshold. That proof row remains in
|
|
452
|
+
D1 history, but the current product decision supersedes it: per-user
|
|
453
|
+
quota/usage pressure is still metered and COGS-visible, but no longer enters
|
|
454
|
+
operator notification fanout. Current production release proof must use an
|
|
455
|
+
account-wide hosted, Browser Run, or Sandbox capacity soft-cap crossing.
|
|
456
|
+
- Monthly and daily quota exhaustion smokes passed on 2026-05-14. Synthetic
|
|
457
|
+
Creator actor `smoke_quota_month_1778764445` was seeded at 600/600 monthly
|
|
458
|
+
credits and a live `browser.extract_markdown` request returned HTTP 429
|
|
459
|
+
`quota.exceeded`. Synthetic Creator actor `smoke_quota_day_1778764445` was
|
|
460
|
+
seeded at 90/90 daily credits and the same request shape returned HTTP 429
|
|
461
|
+
`quota.daily_exceeded`. `vc-tools-db` readback showed `accepted_jobs=0` for
|
|
462
|
+
both actors, then cleanup removed 690 synthetic seed rows.
|
|
463
|
+
- Private-AAAA unsafe URL smoke passed on 2026-05-14. DNS readback showed
|
|
464
|
+
`fd00--1.sslip.io` resolves to `fd00::1`; synthetic Creator actor
|
|
465
|
+
`smoke_private_aaaa_1778764692` submitted live `browser.extract_markdown`
|
|
466
|
+
against `https://fd00--1.sslip.io/`; the hosted API returned HTTP 400
|
|
467
|
+
`input.blocked_url`, usage stayed at zero, and `vc-tools-db` readback showed
|
|
468
|
+
zero jobs for that actor.
|
|
469
|
+
|
|
470
|
+
Commercial packaging is locally wired to the existing Vibecodr Creator and Pro
|
|
471
|
+
subscription model. The live Stripe production path was operator-validated on
|
|
472
|
+
2026-05-15, and real Clerk OAuth is now production-proven. The remaining
|
|
473
|
+
pre-rollout production work is the paid-account provider breadth smoke before
|
|
474
|
+
charging customers for vc-tools quota: Pro Browser Session, Pro Sandbox,
|
|
475
|
+
natural scheduled cron-tick readback, account-wide operator alert fanout proof,
|
|
476
|
+
and any not-yet-refreshed internal COGS readback. Browser Run owned-surface
|
|
477
|
+
allowlisting is pinned until Cloudflare enablement confirms the bot-detection
|
|
478
|
+
signals and should not block temporary completion.
|
|
479
|
+
`CLI_GRANT_SECRET`, `VC_TOOLS_CLI_GRANT_SECRET`,
|
|
480
|
+
`VC_TOOLS_BROWSER_RUN_ACCOUNT_ID`, and `VC_TOOLS_BROWSER_RUN_API_TOKEN` were
|
|
481
|
+
applied and read back by secret name on 2026-05-14; synthetic CLI-grant smokes
|
|
482
|
+
prove the deployed Worker can use them. Parent API auth routes are now deployed
|
|
483
|
+
invalid exchange requests fail closed, and real user-scoped Clerk API-key
|
|
484
|
+
exchange plus revoked-key denial are production-proven. Successful real
|
|
485
|
+
browser/device login is also production-proven after the Pages deployment.
|
|
486
|
+
Successful real Clerk OAuth is production-proven by
|
|
487
|
+
`codex-oauth-20260515230549-tgn17r`.
|
|
488
|
+
|
|
489
|
+
Asymmetric grant hardening is locally implemented after this live-smoke batch:
|
|
490
|
+
the parent API can sign ES256 vc-tools grants from `CLI_GRANT_PRIVATE_JWK`, the
|
|
491
|
+
hosted Worker verifies ES256 grants from `VC_TOOLS_CLI_GRANT_PUBLIC_JWKS`, grant
|
|
492
|
+
claims now include `kid`, `grant_profile`, `nbf`, and `jti`, and revoked `jti`
|
|
493
|
+
denial is locally enforced. Local proof on 2026-05-14:
|
|
494
|
+
`pnpm exec vitest run workers/api/src/auth.cliGrant.test.ts
|
|
495
|
+
workers/api/src/handlers/cliAuth.test.ts
|
|
496
|
+
workers/api/src/handlers/vcToolsDeviceAuth.test.ts` passed 3 files / 40 tests
|
|
497
|
+
in the parent repo, and `node --import tsx --test test/hosted-worker.test.ts`
|
|
498
|
+
passed 40 hosted Worker tests in this repo. This is not live clearance until
|
|
499
|
+
production ES256 key material is uploaded as Worker secrets, Workers are
|
|
500
|
+
redeployed/read back, and a live ES256 exchange plus revoked-`jti` denial smoke
|
|
501
|
+
is captured.
|
|
502
|
+
|
|
503
|
+
## 2026-05-17 Product-Surface Finetune
|
|
504
|
+
|
|
505
|
+
- `vc-tools-finetune.md` now captures the combined founder/agent critique for
|
|
506
|
+
the v1 surface: split human/agent/operator contracts, remove default
|
|
507
|
+
operator/roadmap metadata, make proof saving automatic, make `browser ask`
|
|
508
|
+
honest as a snapshot lane, improve safety denials, and add a first-success
|
|
509
|
+
`try` command.
|
|
510
|
+
- The default hosted/user surfaces now filter internal and operator metadata:
|
|
511
|
+
`start`, `usage`, `plans`, `health`, and `mcp/connection` no longer expose
|
|
512
|
+
launch classifications, overage meters, provider mode, sandbox internet
|
|
513
|
+
defaults, auth scopes/token kind, operator alerts, COGS, webhook/ntfy, or
|
|
514
|
+
account-pressure internals unless details/operator mode is explicitly used
|
|
515
|
+
and the hosted actor is authorized.
|
|
516
|
+
- Browser/computer aliases now submit hosted work, poll until terminal by
|
|
517
|
+
default, summarize the outcome, and save proof with `--out` without making
|
|
518
|
+
the caller copy `job_...` or `art_...` IDs. `work follow` now actually polls
|
|
519
|
+
until terminal and can save terminal proof. `vc-tools try` verifies auth,
|
|
520
|
+
hosted API, public Browser work, hosted computer work, proof saving, and
|
|
521
|
+
usage readback. `browser snapshot` is the honest name for the
|
|
522
|
+
`browser.agent_task` snapshot lane; `browser ask` remains a compatibility
|
|
523
|
+
alias with explicit copy that it is not a separate chat answerer.
|
|
524
|
+
- Local verification passed on 2026-05-17 with `npm run verify`, including CLI
|
|
525
|
+
and Worker type checks, full tests, build, package artifact verification,
|
|
526
|
+
goal coverage, and release-readiness gate. Focused checks also passed for
|
|
527
|
+
`test/cli.behavior.test.ts`, `test/hosted-worker.test.ts`, and
|
|
528
|
+
`test/limits.test.ts`.
|
|
529
|
+
- No D1 migrations changed in this product-surface pass. Dry-run deploy with
|
|
530
|
+
`npx wrangler deploy --dry-run --outdir tmp\wrangler-dry-run` succeeded. The
|
|
531
|
+
final production deploy published `vc-tools-api` version
|
|
532
|
+
`ada2ce72-7493-4b5e-98c7-e788729c30bc` to `tools.vibecodr.space`;
|
|
533
|
+
`wrangler deployments list` read it back at 100%.
|
|
534
|
+
- Post-deploy smoke with the built CLI passed: `plans --json` and
|
|
535
|
+
`usage --json`, and `agent connect --client codex --json` were checked for
|
|
536
|
+
forbidden default keys, `agent connect` exposed `browser.snapshot` rather
|
|
537
|
+
than `browser.ask`, dashboard section order read back
|
|
538
|
+
`overview,jobs,artifacts,usage,agents`,
|
|
539
|
+
`vc-tools try --json --out tmp/live-vc-tools-proof-final2` returned
|
|
540
|
+
`ready=true` while saving `browser-read.md` and `computer-run.json`, and
|
|
541
|
+
`computer run ... --network off --out tmp/live-vc-tools-proof-final2`
|
|
542
|
+
completed while saving `offline-computer.json`.
|