@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
package/docs/SECURITY.md
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# vc-tools Security Notes
|
|
2
|
+
|
|
3
|
+
`vc-tools` is a trust-boundary CLI. It validates local input before submitting
|
|
4
|
+
requests to the hosted Vibecodr Tools API, but the hosted API remains the source
|
|
5
|
+
of truth for auth, grants, quota, audit logging, retention, and Cloudflare
|
|
6
|
+
credential custody.
|
|
7
|
+
|
|
8
|
+
## Local Rules
|
|
9
|
+
|
|
10
|
+
- Plain `vc-tools login` is the default human path. It starts a browser/device
|
|
11
|
+
approval session, prints a user-checkable code, optionally opens the Vibecodr
|
|
12
|
+
approval page, and stores the durable credential returned to the polling CLI
|
|
13
|
+
when the parent API issues one. The browser approval response must never
|
|
14
|
+
include the signed grant, API key, OAuth token, refresh token, or private
|
|
15
|
+
device code.
|
|
16
|
+
- Non-interactive credentials are preferably accepted through
|
|
17
|
+
`--credential-file`, `--credential-stdin`, `VC_TOOLS_CREDENTIAL_FILE`, or
|
|
18
|
+
local credentials. The input may be an existing vc-tools grant, a Clerk OAuth
|
|
19
|
+
access token, or a scoped Clerk API key.
|
|
20
|
+
- Clerk OAuth access tokens and scoped Clerk API keys are exchanged through
|
|
21
|
+
Vibecodr Auth for short-lived scoped `vc-tools` grants. When supplied through
|
|
22
|
+
an explicit login path, they may be stored as the durable local credential so
|
|
23
|
+
future grants refresh automatically without another human approval.
|
|
24
|
+
- Direct secret value flags and secret value environment variables
|
|
25
|
+
(`--credential`, `--token`, `VC_TOOLS_CREDENTIAL`, `VC_TOOLS_TOKEN`) remain
|
|
26
|
+
compatibility inputs for controlled automation, but public docs should prefer
|
|
27
|
+
file/stdin/native credential paths to avoid shell-history, process-list, and
|
|
28
|
+
environment leakage.
|
|
29
|
+
- The local auth SSOT is account-wide: one durable local credential plus a
|
|
30
|
+
cached short-lived grant. Direct vc-tools grants can still be cached, but they
|
|
31
|
+
are not refreshable and should be treated as advanced/temporary credentials.
|
|
32
|
+
- Stored credentials use the native OS credential store by default through
|
|
33
|
+
`@napi-rs/keyring`. The file-backed credential store is only for local
|
|
34
|
+
automation and must be explicitly selected with `VC_TOOLS_CREDENTIAL_STORE=file`.
|
|
35
|
+
- Authority-bearing tokens are redacted from stdout, stderr, JSON responses,
|
|
36
|
+
warnings, hosted provider error details, and API error details. Safe operator
|
|
37
|
+
handles and counters such as `artifactId`, `jobId`, `requestId`, `traceId`,
|
|
38
|
+
`tokenCount`, `totalTokens`, and `tokenKind` remain visible so operators can
|
|
39
|
+
debug without seeing reusable authority.
|
|
40
|
+
- API URLs must use HTTPS. Local HTTP API URLs are denied unless the operator
|
|
41
|
+
explicitly passes `--allow-insecure-local-api` or sets
|
|
42
|
+
`VC_TOOLS_ALLOW_INSECURE_LOCAL_API=true` for local development. This prevents a
|
|
43
|
+
poisoned local config or environment variable from receiving a stored token.
|
|
44
|
+
- Browser URLs must use HTTPS and must not target localhost, private IP ranges,
|
|
45
|
+
link-local ranges, multicast/unspecified ranges, internal hostnames, or URL
|
|
46
|
+
credentials. IPv6 loopback, unique-local, link-local, IPv4-mapped, NAT64, and
|
|
47
|
+
6to4 forms are denied before remote browser calls.
|
|
48
|
+
- Sandbox commands are remote submissions only. The CLI never executes them
|
|
49
|
+
locally.
|
|
50
|
+
- Paid sandbox network access permits public HTTP(S) package/docs requests by
|
|
51
|
+
default. Cloudflare host policy plus the hosted outbound handler block URL
|
|
52
|
+
credentials, private/local/link-local/metadata/internal hosts, and hostnames
|
|
53
|
+
resolving to those ranges.
|
|
54
|
+
- Mutations require explicit confirmation flags.
|
|
55
|
+
- `--quiet`, `--no-input`, and `--no-color` are accepted CLI convention flags;
|
|
56
|
+
the CLI does not prompt or emit color by default.
|
|
57
|
+
- Artifact downloads must stay inside the current workspace unless a future
|
|
58
|
+
release adds an explicitly audited export mode. Users may target a directory
|
|
59
|
+
or an explicit file path inside the workspace, and `--filename` names the file
|
|
60
|
+
inside a directory output without weakening the workspace boundary.
|
|
61
|
+
- Artifact downloads resolve existing output paths and nearest existing parents
|
|
62
|
+
through real paths so symlinked or junctioned directories cannot redirect a
|
|
63
|
+
pull outside the workspace.
|
|
64
|
+
- Artifact uploads must also originate inside the current workspace.
|
|
65
|
+
- Artifact upload size is enforced by the hosted service from the active plan
|
|
66
|
+
contract, not by a separate CLI hardcode.
|
|
67
|
+
|
|
68
|
+
## Hosted Service Rules
|
|
69
|
+
|
|
70
|
+
The API must enforce these before any cost-bearing Cloudflare work:
|
|
71
|
+
|
|
72
|
+
- user authentication
|
|
73
|
+
- browser/device vc-tools login sessions in the parent Vibecodr API, stored as
|
|
74
|
+
hashed device and user codes, single-use on redemption, and expired quickly
|
|
75
|
+
- Clerk OAuth/API-key verification in the parent Vibecodr Auth API before any
|
|
76
|
+
public user receives a `vc-tools` grant
|
|
77
|
+
- scoped Vibecodr CLI grants with `vc-tools:use` plus a requested tool scope
|
|
78
|
+
such as `vc-tools:browser.render_url` or `vc-tools:*`, or an explicitly
|
|
79
|
+
configured static-token fallback for controlled deployments
|
|
80
|
+
- vc-tools grant audience validation. Hosted Tools accepts only grants intended
|
|
81
|
+
for `vibecodr:vc-tools`, not broader Vibecodr CLI/API tokens.
|
|
82
|
+
- actor-scoped job, artifact, usage, retention, and audit rows
|
|
83
|
+
- authenticated hosted inspection and dashboard routes
|
|
84
|
+
- workspace/project/user grant checks
|
|
85
|
+
- plan entitlement checks
|
|
86
|
+
- quota/spend checks
|
|
87
|
+
- abuse/rate-limit checks
|
|
88
|
+
- audit-log emission
|
|
89
|
+
- retention policy classification
|
|
90
|
+
- Browser Run policy: initial URL, DNS address records, and bounded redirect
|
|
91
|
+
chains must remain public HTTPS targets before cost-bearing dispatch and
|
|
92
|
+
before the hosted Quick Action or Workflow-owned paid Browser Session request
|
|
93
|
+
is sent; `browser.agent_task` is paid-only, capped at 20 minutes on Creator
|
|
94
|
+
and 1 hour on Pro, closes after 10 minutes without meaningful action/artifact
|
|
95
|
+
progress, and closes the browser in `finally` after storing a bounded artifact
|
|
96
|
+
plus closure metadata in the job result and audit stream
|
|
97
|
+
- Browser mode policy: public-web browsing is broad by default for public HTTPS
|
|
98
|
+
targets, while authenticated third-party sessions, private networks,
|
|
99
|
+
Vibecodr-owned infrastructure, and provider credentials remain isolated unless
|
|
100
|
+
a future explicit grant opens a narrow lane
|
|
101
|
+
- Browser auth boundary: hosted browser calls reject cookies, credentials,
|
|
102
|
+
authorization headers, custom auth headers, storage state, sessions, or
|
|
103
|
+
secrets before provider execution
|
|
104
|
+
- Browser Run crawl policy: bounded public crawls use the same URL/DNS guards,
|
|
105
|
+
plan page/depth caps, hosted artifact retention, and usage metering as other
|
|
106
|
+
browser tools
|
|
107
|
+
- Browser Run provider-pressure policy: provider 429 responses return queued
|
|
108
|
+
jobs to a retry/defer state instead of exposing provider secrets or marking
|
|
109
|
+
the job failed on first rate-limit pressure
|
|
110
|
+
- Hosted capacity policy: Queue consumer concurrency, Workflow-owned Browser
|
|
111
|
+
Agent execution, Browser Run account caps, Sandbox account caps, and Sandbox
|
|
112
|
+
container `max_instances` are aligned to a 30-active-job launch ceiling so
|
|
113
|
+
plan entitlements cannot stampede the hosted Cloudflare account; Creator
|
|
114
|
+
sandbox jobs route to Cloudflare `standard-1` containers with 10-minute task
|
|
115
|
+
caps and Pro sandbox jobs route to `standard-2` containers with 30-minute task
|
|
116
|
+
caps instead of the `lite` lane; both paid plans cap active sandbox tasks at 2
|
|
117
|
+
per user
|
|
118
|
+
- Sandbox quota policy: monthly sandbox seconds are reserved atomically before
|
|
119
|
+
queue insertion and reconciled when sandbox jobs are cancelled or reach a
|
|
120
|
+
terminal state
|
|
121
|
+
- Sandbox egress policy: paid Agent Computer jobs can use public HTTP(S) egress
|
|
122
|
+
for package installs and public docs. Private/local/link-local/metadata/
|
|
123
|
+
internal CIDRs and host suffixes are denied by Cloudflare Sandbox host policy,
|
|
124
|
+
HTTPS interception is enabled on the Sandbox classes, and every HTTP(S)
|
|
125
|
+
request is rechecked in the outbound handler before forwarding. Raw non-HTTP
|
|
126
|
+
internet stays closed by the Sandbox startup policy.
|
|
127
|
+
- Queue execution policy: the consumer checks current D1 job state before
|
|
128
|
+
setting a queued job to running, so a job canceled before delivery is marked
|
|
129
|
+
cancelled and skipped before stateless Browser Run Quick Action or Sandbox
|
|
130
|
+
work starts. Queue consumers reject `browser.agent_task`; Browser Agent work is
|
|
131
|
+
owned by the Cloudflare Workflow lane.
|
|
132
|
+
- Admission fairness policy: accepted repeat-actor jobs expose metadata-only
|
|
133
|
+
queued-ahead counts without leaking payloads or adding a universal delay to
|
|
134
|
+
interactive tools. Scheduled QA may still use bounded Cloudflare Queue
|
|
135
|
+
per-message delays to spread due runs.
|
|
136
|
+
- Queue completion policy: the consumer rechecks current D1 job state after
|
|
137
|
+
execution and cannot mark a job completed if cancellation was requested while
|
|
138
|
+
it was running
|
|
139
|
+
- Retention policy: artifact retention is capped by the active plan, expired
|
|
140
|
+
artifacts are hidden from list/get/download paths, and a scheduled cleanup
|
|
141
|
+
removes expired R2 objects plus D1 metadata
|
|
142
|
+
- Artifact storage policy: uploaded and generated artifacts are checked against
|
|
143
|
+
active actor storage before writes, D1 metadata insertion repeats the storage
|
|
144
|
+
predicate, and newly written R2 bytes are deleted if that metadata reservation
|
|
145
|
+
fails
|
|
146
|
+
- Artifact deletion is actor-scoped and explicit: the hosted Worker deletes the
|
|
147
|
+
R2 object and D1 shelf row for the authenticated actor, and CLI deletion
|
|
148
|
+
requires `--yes`
|
|
149
|
+
|
|
150
|
+
The CLI's validation is a usability and early-safety layer. It is not a
|
|
151
|
+
replacement for hosted enforcement.
|
|
152
|
+
|
|
153
|
+
## Open-Source Client Boundary
|
|
154
|
+
|
|
155
|
+
The public `@vibecodr/vc-tools` package is a client/control-plane helper, not
|
|
156
|
+
the quota or billing authority. Users can fork or edit the local CLI, local
|
|
157
|
+
fallback plan constants, local help text, and local development API targets, but
|
|
158
|
+
those edits do not change the official hosted service.
|
|
159
|
+
|
|
160
|
+
Authoritative state remains hosted:
|
|
161
|
+
|
|
162
|
+
- Vibecodr Auth verifies Clerk OAuth/API-key inputs passed through the generic
|
|
163
|
+
credential path and issues scoped `vc-tools` grants.
|
|
164
|
+
- The hosted Tools API resolves the authenticated actor, plan, grants, and
|
|
165
|
+
server-side limits.
|
|
166
|
+
- `/v1/usage` and the `usage.read` MCP tool expose read-only hosted account
|
|
167
|
+
state. In live mode the response is marked authoritative and
|
|
168
|
+
`mutableByClient: false`. User-facing usage and readiness responses stay
|
|
169
|
+
account-scoped: operator alert configuration, internal binding presence,
|
|
170
|
+
provider account caps, hosted account pressure, ntfy/webhook topics, and raw
|
|
171
|
+
actor ids belong only on operator-scoped endpoints.
|
|
172
|
+
- `/v1/plans` and local fallback plan constants are packaging/reference data.
|
|
173
|
+
They are not authoritative for an actor's entitlement, usage, billing, quota,
|
|
174
|
+
or provider execution.
|
|
175
|
+
- Cost-bearing Browser Run and Sandbox work is accepted only after hosted auth,
|
|
176
|
+
grant, plan, quota, audit, and reservation checks.
|
|
177
|
+
|
|
178
|
+
If a user points `VC_TOOLS_API_URL` or `--api-url` at a forked service, that
|
|
179
|
+
service can return different local display data. It is not Vibecodr Tools Cloud
|
|
180
|
+
authority and cannot spend Vibecodr provider credentials or mutate official D1,
|
|
181
|
+
R2, Queue, billing, grant, or usage state.
|
|
182
|
+
|
|
183
|
+
## Remaining Hosted Proofs
|
|
184
|
+
|
|
185
|
+
Local validation verifies the shipped control surface and contract behavior. A
|
|
186
|
+
live production release must still produce fresh smoke evidence for:
|
|
187
|
+
|
|
188
|
+
- deployed Worker secrets and routes
|
|
189
|
+
- D1 migrations, including actor-scope columns
|
|
190
|
+
- real Browser Run Quick Action execution with SSRF guards and metered-time
|
|
191
|
+
usage active
|
|
192
|
+
- real Browser Run crawl execution with R2 artifact readback and crawl-page
|
|
193
|
+
usage active
|
|
194
|
+
- real Sandbox execution with public HTTP(S) egress and private/internal denial
|
|
195
|
+
- real Pro `standard-2` Sandbox execution after the split lane is deployed
|
|
196
|
+
- R2 artifact download scoped to the authenticated actor
|
|
197
|
+
- usage/quota counters scoped to the authenticated actor
|
|
198
|
+
- audit rows written before cost-bearing Queue/Workflow dispatch
|
|
199
|
+
|
|
200
|
+
## Secret Handling
|
|
201
|
+
|
|
202
|
+
Do not add debug flags that print raw request headers, environment variables,
|
|
203
|
+
stored credentials, Cloudflare tokens, OAuth tokens, or hosted API responses
|
|
204
|
+
without redaction.
|
|
205
|
+
|
|
206
|
+
Clerk server secrets and the ES256 `CLI_GRANT_PRIVATE_JWK` belong only in the
|
|
207
|
+
parent Vibecodr API Worker secrets. The hosted Worker receives only
|
|
208
|
+
`VC_TOOLS_CLI_GRANT_PUBLIC_JWKS` for normal vc-tools grants, plus
|
|
209
|
+
`VC_TOOLS_TOKEN_SHA256`, `VC_TOOLS_INTERNAL_ALERT_TOKEN`, optional operator
|
|
210
|
+
alert webhook/ntfy secrets, and Cloudflare provider credentials as hosted
|
|
211
|
+
Worker secrets. Legacy HMAC grant secrets are beta/internal-only, require
|
|
212
|
+
the explicit `*_LEGACY_HMAC_ENABLED="true"` switches on both parent and hosted
|
|
213
|
+
surfaces, and should be removed by 2026-06-30 after live ES256 smoke and
|
|
214
|
+
migration. None of those values belong in source, Wrangler plaintext vars, docs,
|
|
215
|
+
tests, or package artifacts. Soft-cap operator alerts are account-wide capacity
|
|
216
|
+
signals only and must remain metadata-only: surface, capability, plan name,
|
|
217
|
+
current usage, included limit, percent used, and suggested action are allowed;
|
|
218
|
+
raw commands, target URLs, bearer tokens, provider API tokens, actor
|
|
219
|
+
identifiers, artifact contents, and user cookies are not. Per-user usage and
|
|
220
|
+
quota pressure stays in usage/COGS/audit analytics without outbound operator
|
|
221
|
+
notification fanout. D1 alert dedupe/reset-window rows may store capacity
|
|
222
|
+
metadata details and suppression counts, but not user payload contents.
|
|
223
|
+
|
|
224
|
+
The public npm artifact is a CLI/client package. Hosted Worker source,
|
|
225
|
+
migrations, deployment configuration, repository-maintainer docs, and
|
|
226
|
+
Cloudflare platform primitive packages must not be shipped as public CLI
|
|
227
|
+
runtime surface.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# vc-tools Validation Matrix
|
|
2
|
+
|
|
3
|
+
This file maps `goal.md` and the `vc-tools-goal.md` product requirements to concrete CLI
|
|
4
|
+
artifacts and tests.
|
|
5
|
+
|
|
6
|
+
| Goal requirement | CLI artifact | Validation |
|
|
7
|
+
| --- | --- | --- |
|
|
8
|
+
| Separate tool from Vibecodr CLI | package `@vibecodr/vc-tools`, bin `vc-tools`, `VC_TOOLS_*` env namespace | `test/cli.behavior.test.ts` verifies help/version identity |
|
|
9
|
+
| CLI Guidelines compliance | `src/cli/parser.ts`, `src/cli/run.ts`, `src/cli/output.ts`, `docs/CLI-GUIDELINES-AUDIT.md` | tests verify command-specific help, docs/support links, typo suggestions, stable JSON, product-safe default output, quiet mode, agent-computer primary nouns, and secure credential file/stdin sources |
|
|
10
|
+
| Agent Computer first-use path | `vc-tools start`, `vc-tools setup`, `vc-tools try`, `vc-tools agent connect/status`, `vc-tools computer status` | tests verify `start` checks account identity, hosted health, MCP connection metadata, usage state, safe readiness output, and agent-native connection details without exposing tokens; `try` proves auth, hosted API, browser, computer, proof saving, and usage readback |
|
|
11
|
+
| CLI login and auth diagnostics | `vc-tools login`, `vc-tools auth status`, `vc-tools auth diagnose`, `vc-tools auth export-agent-env`, safe generic credential file/stdin forms | tests verify browser/device auth starts when no credential is provided, `start` recovers from unreadable stored approval state by opening the normal browser login path, cost-bearing browser commands treat unreadable stored approval as missing auth instead of failing on credential storage shape, the private device code is never printed or stored, approval metadata points to `/settings/vc-tools/approve`, `--no-input` refuses interactive login without network calls, direct token grant caching, generic credential classification for Clerk OAuth/API-key exchange through Vibecodr Auth, durable API-key/OAuth local storage, expired grant refresh from stored API keys, file/stdin credential paths, one-off env credential auth without persistence, status reporting for active credential sources without exposing internal profiles, ambiguous credential denial, redaction, optional API verification, explicit file-store test mode, friendly expired-login errors, isolated config warnings, strict-permission agent credential-file export without printing the secret, and no stored-token forwarding to insecure local API URLs unless explicitly allowed |
|
|
12
|
+
| Remote agent connection setup | `vc-tools agent connect`, advanced `vc-tools connect` | tests verify Streamable HTTP metadata, agent-native tool names, and no token leakage |
|
|
13
|
+
| Remote MCP tool server | `/mcp` in `src/hosted/worker.ts` | tests verify MCP `initialize`, `tools/list`, and `tools/call` JSON-RPC contract flow with agent-native `browser.*`, `computer.*`, `work.*`, `proof.*`, and `usage.status` tool names mapped to hosted canonical capabilities |
|
|
14
|
+
| Browser render/screenshot/markdown/PDF tests, crawl, snapshot, and paid agent tasks | `vc-tools browser *`, advanced `vc-tools tools test browser.*` | tests verify capability aliases including `browser.snapshot`, canonical browser and crawl payloads, default submit/wait behavior, `--out` proof saving without exposed IDs, Creator `browser.agent_task` acceptance up to 20 minutes, Pro acceptance up to 1 hour, Free denial, Quick Actions staying short, HTTPS-only validation, localhost/private/internal denial with safe-next-action messaging, URL credential denial, direct cookie/header/storage-state auth material denial, IPv4/IPv6 private, link-local, mapped, NAT64, and 6to4 denial, hosted unsafe redirect-chain denial before cost-bearing dispatch, and Workflow dispatch for paid browser agent tasks |
|
|
15
|
+
| Agent Computer run/tests | `vc-tools computer run/test`, advanced `vc-tools tools test sandbox.*`, hosted Sandbox SDK queue execution | tests verify no local shell execution, bounded command payload, default submit/wait behavior, `--out` proof saving without exposed IDs, public HTTP(S) package/docs egress by default for paid Agent Computer jobs, explicit `--network public`/`--network off` payloads, no private-network opt-in flag, no per-command host allowlist requirement, Cloudflare host policy plus hosted outbound handler denial for private/local/internal destinations and private-resolving DNS, per-command Sandbox SDK timeout forwarding, timeout/fork-storm failure cleanup through sandbox teardown, minimal sandbox env injection, stdout/stderr truncation, sandbox-returned files/output-file paths ignored in favor of one fixed transcript artifact, artifact storage accounting, and sandbox-minute metering |
|
|
16
|
+
| Proof store/read/save/delete | `vc-tools proof list/show/save/delete`, advanced `vc-tools artifacts list/get/pull/create/delete` | tests verify metadata shape, bounded list limits, safe filenames, overwrite guard, explicit in-workspace pull file targets, automatic proof saving from browser/computer aliases and `work follow --out`, explicit confirmation before delete, actor-scoped hosted deletion of D1 shelf rows plus R2 bytes, hosted plan-owned upload caps, hard total artifact storage caps, R2 cleanup after D1 reservation races, workspace-bounded upload/download paths, and symlink/junction escape denial |
|
|
17
|
+
| Work status/cancel/list | `vc-tools work list/show/follow/cancel`, advanced `vc-tools jobs list/status/cancel` | tests verify list limit propagation, ID validation, alias routing, real follow polling until terminal status, optional terminal proof saving, queued fairness-delay metadata in status output, and `--yes` on cancellation |
|
|
18
|
+
| Usage quotas and limits | `vc-tools usage`, `vc-tools limits`, `usage.status`/`usage.read` MCP tools | tests verify stable JSON output, human quota bars, alias routing, warning preservation, and no operator-only alert/account-pressure metadata in user-facing usage payloads |
|
|
19
|
+
| Open-source client authority boundary | `vc-tools plans`, `/v1/plans`, `/v1/usage`, `/v1/health`, `/v1/mcp/connection`, `usage.read`, docs/SECURITY.md | tests verify local plan fallback is marked non-authoritative, hosted plan packaging is not actor entitlement authority, usage snapshots are read-only/not client-mutable, default product JSON excludes internal/future/operator/provider/auth metadata, and internal/future launch metadata plus overage-meter details are actor/operator-scoped instead of global while keeping operator readiness on operator-scoped endpoints |
|
|
20
|
+
| Account identity | `vc-tools whoami`, `/v1/me` | tests verify the standard whoami command reads hosted identity and prints account-first Agent Computer output plus redacted payload data, and hosted JSON omits synthetic `@vibecodr.local` email fallbacks |
|
|
21
|
+
| Tool grants | `vc-tools grants`, `vc-tools grants list` | tests verify default list routing and scoped grant rendering |
|
|
22
|
+
| Retention settings | `vc-tools retention show/set` | tests verify day bounds, plan-capped artifact retention, recordings policy, `--yes` on mutation |
|
|
23
|
+
| Usage dashboard | `vc-tools dashboard [section]` | tests verify safe dashboard section URL generation without auth leakage and shared API URL validation |
|
|
24
|
+
| Plan packaging | `vc-tools plans` | tests verify local fallback plan contract and hosted response handling |
|
|
25
|
+
| Free/Creator/Pro plan limits | `DEFAULT_PLANS`, `OVERAGE_METERS` in `src/core/contracts.ts` | `test/limits.test.ts` verifies the exact Free, Creator, and Pro launch matrix: prices, monthly/daily VC Tool credits, browser seconds, Creator 20-minute and Pro 1-hour Browser Session caps, crawl caps, scheduled QA, Creator `standard-1`/10-minute sandbox lane, Pro `standard-2`/30-minute sandbox lane, shared paid 2-active-sandbox cap, per-upload artifact caps, artifact limits, and compatibility meters |
|
|
26
|
+
| Separate ledgers | Parent `PLAN_LIMITS[*].builds`, parent `PLAN_LIMITS[*].vcTools`, hosted `enforceQuota` | tests verify build seconds reserve independently from VC Tool credits; hosted quota checks count browser and sandbox work against one VC Tools ledger before Queue/Workflow dispatch; hosted quota tests deny plan-specific active browser run caps for Free/Creator/Pro plus monthly credit, daily credit, browser-second, and sandbox-second exhaustion before cost-bearing dispatch; a parallel atomic reservation race test proves only one dispatch wins when two requests contend for the same reservation window |
|
|
27
|
+
| Account-wide hosted capacity breakers | parent `VC_TOOLS_GLOBAL_LIMITS`, child hosted/Browser Run/Sandbox account cap vars and kill-switch vars, Workflow binding, queue `max_concurrency`, container `max_instances`, scheduled-only bounded per-message Queue delays, internal-api alert codes, D1 `operator_alert_dedupe`, `JOB_QUEUE.metrics()`, `JOB_DLQ.metrics()`, account-wide active artifact bytes, expired-artifact cleanup failure alert, execution-health failure/timeout alert, hosted Worker 5xx alert, auth failure anomaly alert, Cloudflare spend anomaly alert, and API contract docs | parent tests verify soft/hard cap policy and filter all user-scoped vc-tools payloads before fanout; hosted tests verify browser and sandbox jobs do not start above hard caps, repeat-actor jobs report queued-ahead metadata without delaying interactive Queue sends, Browser Agent jobs create `BROWSER_AGENT_WORKFLOW` instances instead of Queue messages, Queue consumers reject Browser Agent execution, hard caps are operator-configurable, `VC_TOOLS_PAUSE_COST_BEARING_JOBS` pauses all cost-bearing work before D1 job insertion or Queue/Workflow dispatch, `VC_TOOLS_DISABLE_BROWSER_RUN`, `VC_TOOLS_DISABLE_BROWSER_SESSIONS`, and `VC_TOOLS_DISABLE_SANDBOX` pause their lanes separately, 70/85/95 soft-cap crossings fan sanitized alerts to internal-api plus ntfy/webhook surfaces, duplicate crossings in the same reset window are suppressed, missing notifier bindings are audit-visible, scheduled Queue/DLQ/artifact-storage/retention-cleanup/execution-health/auth-failure/Cloudflare-spend alerts stay account-scoped without user fanout, unexpected hosted 500 alerts omit user/query/token data, and auth-failure metrics omit token/query material |
|
|
28
|
+
| Dashboard sections | `DASHBOARD_SECTIONS` and `OPERATOR_DASHBOARD_SECTIONS` in `src/core/contracts.ts`, authenticated hosted `/dashboard/*` | tests verify unauthenticated dashboard access is denied, authenticated customer dashboard sections stay beta-safe without internal/future billing metadata, configured internal-metadata actors can still inspect that launch metadata, the CLI does not print the internal COGS URL, customer grants cannot read `/dashboard/cogs/`, and an explicit operator grant can read the internal COGS section |
|
|
29
|
+
| Tool grants | `LAUNCH_TOOL_GRANTS` in `src/core/contracts.ts`, hosted `/v1/grants` | tests verify workspace-scoped sandbox network metadata and paid-alpha grants |
|
|
30
|
+
| No raw provider credential exposure | hosted API boundary only; CLI stores Vibecodr account credentials, not Cloudflare/provider credentials | redaction tests verify authority-bearing token values are hidden while safe operator handles/counters stay visible; OAuth/API-key exchange tests verify durable local storage plus output redaction; docs contract |
|
|
31
|
+
| All tool calls quota-checked and logged | API contract requires hosted enforcement; CLI submits through `/v1/tools/test` only | hosted tests verify quota lookup before Queue/Workflow dispatch, audit/job state before Queue send or Workflow create, quota-denial audit metrics, and unsafe-URL denial audit metrics without notification fanout |
|
|
32
|
+
| Browser Run timeout mapping | `src/hosted/worker.ts` Quick Action payload builders and Browser Session navigation | hosted tests verify Quick Action `goToOptions.timeout` clamps to 60s, non-PDF Quick Actions stay on a minimal provider-compatible payload without top-level `actionTimeout`, PDF keeps its documented `pdfOptions.timeout`, dynamic public-page navigation uses Cloudflare's recommended `networkidle2` default instead of the stricter `networkidle0`, Browser Sessions launch with bounded `keep_alive`, and Browser Session large-page navigation timeout failures close the browser, mark the job failed, and do not write artifacts or browser-minute usage |
|
|
33
|
+
| Browser Run crawl provider path | `browser.crawl_site`, hosted `/crawl` Quick Action integration | CLI tests verify `browser.crawl` payloads; hosted tests verify crawl start, result fetch, artifact storage, browser-minute usage, and crawl-page usage |
|
|
34
|
+
| Browser Run provider retry/defer | `src/hosted/worker.ts` queue failure handling | hosted tests verify provider 429 responses return jobs to queued/retryable state and do not mark them failed on first rate-limit pressure |
|
|
35
|
+
| Human-use security hardening | CLI and hosted Worker trust-boundary controls | tests verify insecure local API opt-in, workspace-bounded artifacts including symlink/junction denial, scoped Vibecodr CLI grants with per-tool capability scopes, actor-scoped live job/artifact/usage/audit SQL, DNS address-record and redirect-chain enforcement with denial metrics, authenticated-browser material denial, Browser Run Quick Action routing and metered time, crawl metering, paid sandbox public HTTP(S) egress with private/local/internal denial, quota denial metrics, pre-execution and during-execution cancellation guards, hard artifact storage caps, D1/R2 artifact write cleanup, explicit artifact deletion cleanup, and retention-backed artifact expiry |
|
|
36
|
+
| Hosted API/MCP scaffold | `src/hosted/worker.ts`, `wrangler.jsonc`, `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`, `migrations/0007_job_queue_metadata.sql` | `npm run check:worker` and `test/hosted-worker.test.ts` verify health, auth fail-closed behavior, auth-failure audit metrics, user-safe public readiness, protected inspection/dashboard routes, scoped CLI grants, capability-scope denial, MCP metadata, MCP tool flow, dashboard contract, actor-scoped live acceptance, atomic quota reservation including sandbox seconds and parallel race conflict handling, queued-ahead metadata without interactive fairness delay, Workflow-owned paid agent browser dispatch without a Queue binding, Queue rejection for Browser Agent execution, Browser Run Quick Action hard-cap deferral, Browser Session hard-cap deferral, Sandbox hard-cap deferral, provider retry/defer handling, Browser Run large-page timeout bounds, failed-job DLQ retry-boundary behavior without provider re-execution, exhausted failed-job loop prevention, scheduled Queue/DLQ/artifact-storage/retention-cleanup/execution-health/auth-failure/Cloudflare-spend alerting, unexpected hosted 500 alerting, crawl artifacts, scheduled QA config/create/list/run-now enqueue/cron enqueue, sandbox execution timeout/env/output/teardown behavior, sandbox timeout/fork-storm failure cleanup, sandbox-returned file/path suppression, sandbox reservation reconciliation, unsafe redirect rejection before cost-bearing dispatch, D1-backed operator alert dedupe, and contract-mode tool acceptance |
|
|
37
|
+
| Live Cloudflare provider | `src/hosted/worker.ts`, `wrangler.jsonc`, `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`, `migrations/0007_job_queue_metadata.sql` | hosted-required for live releases: apply all migrations, set Browser Run Quick Actions secrets and `BROWSER_AGENT_WORKFLOW`, deploy, then smoke health, authenticated login, real Quick Action browser job, real scheduled QA create/list/run-now enqueue/job-readback/monthly-cap denial plus natural cron-tick readback at a real trigger time, real Creator browser agent-task job through `BROWSER_AGENT_WORKFLOW`/`BROWSER`, real Pro browser agent-task job through `BROWSER_AGENT_WORKFLOW`/`BROWSER`, real crawl job, real Creator `standard-1` sandbox job capped at 10 minutes, real Pro `standard-2` sandbox job capped at 30 minutes, R2 artifact download, actor-scoped user-safe usage, crawl-page usage, sandbox-second quota denial, operator-alert dedupe/readback on operator surfaces, COGS dashboard readback, and audit rows against `https://tools.vibecodr.space` |
|
|
38
|
+
| Cloudflare dynamic primitive fit | `docs/CLOUDFLARE-PRIMITIVE-FIT.md`, `docs/API-CONTRACT.md`, `wrangler.jsonc` | docs verify Cloudflare Workflows are the v1 durable `browser.agent_task` lane; Dynamic Workers/Facets/Dynamic Workflows remain future supervised dynamic-code capabilities, not replacements for v1 Browser Run Quick Actions, Sandbox SDK, D1, R2, Queue/DLQ, or platform-owned quota/audit/billing authority |
|
|
39
|
+
| Production-grade packaging | build, typecheck, test, explicit npm exports, CLI-only runtime dependencies, pack verifier, CI | `npm run verify`; pack verifier rejects `docs/`, hosted Worker source, migrations, deployment config, tests, scripts, and Cloudflare primitive runtime dependencies from the public npm artifact |
|
|
40
|
+
| Inspectable goal coverage | `vc-tools inspect`, `src/core/goal-coverage.ts`, `scripts/check-goal-coverage.mjs` | `npm run verify:goal` and `test/cli.behavior.test.ts` verify coverage output |
|
|
41
|
+
|
|
42
|
+
## Completion Gate
|
|
43
|
+
|
|
44
|
+
Before shipping:
|
|
45
|
+
|
|
46
|
+
1. `npm run check`
|
|
47
|
+
2. `npm run check:worker`
|
|
48
|
+
3. `npm test`
|
|
49
|
+
4. `npm run build`
|
|
50
|
+
5. `npm run verify:artifact`
|
|
51
|
+
6. `npm run verify:goal`
|
|
52
|
+
7. Manual CLI smoke against a mock or real API
|
|
53
|
+
8. Hosted service smoke against `https://tools.vibecodr.space`
|
|
54
|
+
|
|
55
|
+
The CLI-contract release channel may ship with `live-hosted-production` marked
|
|
56
|
+
`hosted-required`. A live release must clear that pending inspection with fresh
|
|
57
|
+
production smoke evidence after any Worker binding, live tool execution,
|
|
58
|
+
retention, quota, audit, queue, D1, R2, Browser Run, or Sandbox behavior change.
|
package/docs/commands.md
CHANGED
|
@@ -46,6 +46,17 @@ Syntax:
|
|
|
46
46
|
|
|
47
47
|
Without `--probe`, this reads only local state.
|
|
48
48
|
|
|
49
|
+
### `whoami`
|
|
50
|
+
|
|
51
|
+
Syntax:
|
|
52
|
+
|
|
53
|
+
`vibecodr whoami [--no-login]`
|
|
54
|
+
|
|
55
|
+
Shows the connected Vibecodr account and plan by calling the protected
|
|
56
|
+
`get_account_capabilities` MCP tool. It uses the same refresh and interactive
|
|
57
|
+
login retry path as `call`, but prints only account identity, plan, CLI profile,
|
|
58
|
+
server URL, and session state.
|
|
59
|
+
|
|
49
60
|
### `tools`
|
|
50
61
|
|
|
51
62
|
Syntax:
|
|
@@ -54,39 +65,41 @@ Syntax:
|
|
|
54
65
|
|
|
55
66
|
This always reads the live tool catalog from the MCP server.
|
|
56
67
|
|
|
57
|
-
### `call`
|
|
58
|
-
|
|
59
|
-
Syntax:
|
|
68
|
+
### `call`
|
|
60
69
|
|
|
61
|
-
|
|
70
|
+
Syntax:
|
|
71
|
+
|
|
72
|
+
`vibecodr call <tool-name> [--input-json <json>] [--input-file <path>] [--stdin] [--interactive] [--timeout-sec <n>] [--no-login] [--confirm]`
|
|
62
73
|
|
|
63
74
|
`--interactive` currently supports top-level scalar object fields.
|
|
64
75
|
|
|
65
76
|
For `quick_publish_creation` with `payload.importMode: "direct_files"`, pass file paths as normal slash-separated project paths such as `src/main.tsx` or `src/server/binding-proof.js`. Do not pre-encode slashes as `%2F`; the hosted MCP gateway encodes each URL segment when it writes files to Vibecodr.
|
|
66
77
|
|
|
67
|
-
Known mutating tools require explicit confirmation through `--confirm`. The CLI redacts secret, token, source, descriptor, and inline file-content fields from displayed arguments and results
|
|
68
|
-
|
|
69
|
-
Use `--timeout-sec <n>` when a protected tool is expected to run longer than the default client wait, such as a build-backed publish retry. This changes only the local MCP transport timeout and is not forwarded as a server tool argument.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
`vibecodr upload --
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
Cover
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
78
|
+
Known mutating tools require explicit confirmation through `--confirm`. The CLI redacts secret, token, source, descriptor, and inline file-content fields from displayed arguments and results while preserving safe operator handles and counters such as `artifactId`, `jobId`, `requestId`, `traceId`, `errorCode`, `credentialType`, `tokenCount`, and `tokenKind`; the MCP gateway remains the authority boundary for OAuth, owner checks, confirmation, and output shaping.
|
|
79
|
+
|
|
80
|
+
Use `--timeout-sec <n>` when a protected tool is expected to run longer than the default client wait, such as a build-backed publish retry. This changes only the local MCP transport timeout and is not forwarded as a server tool argument.
|
|
81
|
+
|
|
82
|
+
Use `vibecodr call get_account_capabilities --json` to read the live model-safe plan snapshot before promising hosted tool work. The gateway returns Quick Checks, Agent Browser, Sandbox, Crawl, and Artifact Shelf limits when the platform API exposes them.
|
|
83
|
+
|
|
84
|
+
### `upload`
|
|
85
|
+
|
|
86
|
+
Syntax:
|
|
87
|
+
|
|
88
|
+
`vibecodr upload --zip <path> [--idempotency-key <key>] [--root-hint <path>] [--entry-hint <path>] [--timeout-sec <n>] [--no-login]`
|
|
89
|
+
|
|
90
|
+
`vibecodr upload --image <path> [--kind cover_image|avatar_image] [--content-type <mime>] [--timeout-sec <n>] [--no-login]`
|
|
91
|
+
|
|
92
|
+
Stages a local ZIP or image through Vibecodr's API-owned upload session flow. The CLI asks the MCP gateway for a short-lived direct R2 PUT URL, uploads the bytes directly to R2, completes server-side verification, and prints safe identifiers only.
|
|
93
|
+
|
|
94
|
+
ZIP uploads print a `quickPublishPayload` snippet using `payload.importMode: "staged_upload"`. The snippet asks Vibecodr to use the async staged-upload import path so larger projects can move to the heavy import lane automatically instead of making the CLI guess. Cover image uploads print a `thumbnailStagedUpload` snippet that can be passed to publish metadata tools. Avatar image uploads print an `avatarStagedUpload` identifier for avatar promotion flows.
|
|
95
|
+
|
|
96
|
+
Cover images support PNG, JPEG, WebP, and AVIF. Avatar images support PNG, JPEG, WebP, and GIF.
|
|
97
|
+
|
|
98
|
+
Staged upload MCP setup and completion calls use a longer client-side wait by default so large ZIP verification does not fail only because the local CLI stopped waiting. Use `--timeout-sec <n>` only when a slower network needs a different local wait; this value is transport behavior and is not forwarded as a server tool argument.
|
|
99
|
+
|
|
100
|
+
The presigned URL is a bearer credential and is never printed in command output. Legacy `zip_import` / `fileBase64` remains a compatibility path for small payloads, not the preferred CLI path for whole repos or launch images.
|
|
101
|
+
|
|
102
|
+
### `pulse-setup`
|
|
90
103
|
|
|
91
104
|
Syntax:
|
|
92
105
|
|
|
@@ -153,15 +166,22 @@ Syntax:
|
|
|
153
166
|
|
|
154
167
|
Syntax:
|
|
155
168
|
|
|
156
|
-
`vibecodr install <codex|cursor|vscode|windsurf> [--scope user|project] [--path <dir>] [--name <server-name>] [--open-client] [--overwrite] [--dry-run]`
|
|
169
|
+
`vibecodr install <codex|cursor|vscode|windsurf|claude-desktop> [--scope user|project] [--path <dir>] [--name <server-name>] [--open-client] [--overwrite] [--dry-run]`
|
|
157
170
|
|
|
158
171
|
Install config only. Runtime auth remains CLI-owned or editor-owned depending on where the server is used.
|
|
159
172
|
|
|
173
|
+
Claude Desktop does not load remote HTTP MCP servers natively, so the installer writes the documented `mcp-remote` stdio proxy entry (`{ command: "npx", args: ["mcp-remote", <url>] }`). Node.js / npx must be on PATH for the proxy to launch. Users can alternatively add the MCP URL via Settings -> Connectors -> Add custom connector in the desktop app.
|
|
174
|
+
|
|
175
|
+
Platform support matrix:
|
|
176
|
+
- **macOS**: writes to `~/Library/Application Support/Claude/claude_desktop_config.json`.
|
|
177
|
+
- **Windows**: writes to `%APPDATA%\Claude\claude_desktop_config.json`.
|
|
178
|
+
- **Linux**: Anthropic does not ship an official Claude Desktop build for Linux. The installer writes to `${XDG_CONFIG_HOME:-$HOME/.config}/Claude/claude_desktop_config.json`, the path used by community repackages. If you are not running such a build, install Claude Code and use `vibecodr install codex` / equivalent instead.
|
|
179
|
+
|
|
160
180
|
### `uninstall`
|
|
161
181
|
|
|
162
182
|
Syntax:
|
|
163
183
|
|
|
164
|
-
`vibecodr uninstall <codex|cursor|vscode|windsurf> [--scope user|project] [--path <dir>] [--name <server-name>] [--dry-run]`
|
|
184
|
+
`vibecodr uninstall <codex|cursor|vscode|windsurf|claude-desktop> [--scope user|project] [--path <dir>] [--name <server-name>] [--dry-run]`
|
|
165
185
|
|
|
166
186
|
## Exit codes
|
|
167
187
|
|