@vibecodr/cli 1.0.0-rc.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +58 -111
  2. package/MIGRATION.md +31 -2
  3. package/dist/auth/credential-broker.d.ts +28 -0
  4. package/dist/auth/credential-broker.d.ts.map +1 -0
  5. package/dist/auth/credential-broker.js +80 -0
  6. package/dist/auth/credential-broker.js.map +1 -0
  7. package/dist/bin/vc-tools.js +4 -0
  8. package/dist/bin/vc-tools.js.map +1 -1
  9. package/dist/bin/vibecodr-mcp.js +4 -0
  10. package/dist/bin/vibecodr-mcp.js.map +1 -1
  11. package/dist/clients/claude-code.d.ts.map +1 -1
  12. package/dist/clients/claude-code.js +5 -1
  13. package/dist/clients/claude-code.js.map +1 -1
  14. package/dist/core/env.d.ts +13 -0
  15. package/dist/core/env.d.ts.map +1 -0
  16. package/dist/core/env.js +62 -0
  17. package/dist/core/env.js.map +1 -0
  18. package/dist/legacy/config/store.d.ts.map +1 -1
  19. package/dist/legacy/config/store.js +19 -5
  20. package/dist/legacy/config/store.js.map +1 -1
  21. package/dist/legacy/core/version.d.ts +2 -2
  22. package/dist/legacy/core/version.d.ts.map +1 -1
  23. package/dist/legacy/core/version.js +1 -1
  24. package/dist/legacy/core/version.js.map +1 -1
  25. package/dist/platform/paths.d.ts.map +1 -1
  26. package/dist/platform/paths.js +11 -1
  27. package/dist/platform/paths.js.map +1 -1
  28. package/dist/storage/config-store.d.ts.map +1 -1
  29. package/dist/storage/config-store.js +15 -3
  30. package/dist/storage/config-store.js.map +1 -1
  31. package/dist/storage/install-manifest.d.ts.map +1 -1
  32. package/dist/storage/install-manifest.js +14 -3
  33. package/dist/storage/install-manifest.js.map +1 -1
  34. package/dist/storage/migrate.d.ts +15 -0
  35. package/dist/storage/migrate.d.ts.map +1 -0
  36. package/dist/storage/migrate.js +93 -0
  37. package/dist/storage/migrate.js.map +1 -0
  38. package/dist/types/install.d.ts +4 -0
  39. package/dist/types/install.d.ts.map +1 -1
  40. package/docs/commands.md +171 -119
  41. package/docs/legacy/CHANGELOG-mcp-cli.md +85 -0
  42. package/package.json +74 -69
  43. package/preinstall-check.mjs +107 -0
package/CHANGELOG.md CHANGED
@@ -1,111 +1,58 @@
1
- # Changelog
2
-
3
- ## 1.0.0-rc.0
4
-
5
- First release candidate of the unified Vibecodr CLI. Merges @vibecodr/vc-tools@0.1.4 and @vibecodr/cli@0.2.11 into a single coordinated release.
6
-
7
- ### Added
8
-
9
- - Single package `@vibecodr/cli` with three bin entries that all resolve to the same install tree:
10
- - `vibecodr` canonical (MCP gateway commands + hosted Agent Computer cross-routed)
11
- - `vibecodr-mcp` — compatibility alias preserved from 0.2.x
12
- - `vc-tools` compatibility alias for the legacy vc-tools surface, byte-equivalent output to vc-tools@0.1.4
13
- - Hosted Agent Computer commands (start, browser, computer, work, proof, usage, plans, dashboard, jobs, artifacts, agent, connect, try, etc.) now reachable from the `vibecodr` bin via legacy-dispatcher cross-routing.
14
- - New MCP install adapter `claude-code` (alongside codex, cursor, vscode, windsurf, claude-desktop).
15
- - Cloudflare worker source, wrangler config, D1 migrations, and Dockerfile vendored from vc-tools so a single repo owns the CLI and its hosted worker.
16
-
17
- ### Preserved (frozen)
18
-
19
- - `vc-tools` binary, `vibecodr-mcp` binary, all existing env vars (`VC_TOOLS_*`, `VIBECDR_MCP_*`), keyring service IDs (`@vibecodr/vc-tools` and `@vibecodr/mcp`), config dirs, install-manifest schema, and hosted worker contracts (D1 binding, JWT claims, route paths, page slugs).
20
- - Output JSON shape for every command captured in test/fixtures/output-baseline/ as the §14 regression contract.
21
-
22
- ### Migrated
23
-
24
- - From @vibecodr/cli@0.2.x (no behavior change): login, logout, status, whoami, tools, call, upload, doctor, install, uninstall, config, pulse-setup, pulse-publish, pulse.
25
- - From @vibecodr/vc-tools@0.1.x (no behavior change for vc-tools bin; new cross-routing from vibecodr bin): start, setup, try, agent, connect, computer, browser, work, proof, usage, limits, dashboard, jobs, artifacts, grants, retention, scheduled-qa, plans, inspect, auth.
26
-
27
- ### Deprecated
28
-
29
- - `@vibecodr/vc-tools` npm package becomes a thin forwarder at 0.2.0. Plan: `npm deprecate` 90 days after this release.
30
-
31
- See MIGRATION.md for upgrade guidance.
32
-
33
- ## 0.2.11
34
-
35
- - add `vibecodr call --timeout-sec <n>` as a local MCP transport timeout for long-running protected tool calls such as build-backed publish retries
36
- - keep `--timeout-sec` out of server tool arguments so hosted MCP schemas remain authoritative
37
-
38
- ## 0.2.6
39
-
40
- - publish a fresh CLI version so GitHub and npm carry the same current release marker
41
-
42
- ## 0.2.5
43
-
44
- - refresh release lockfile coverage before publishing the CLI
45
-
46
- ## 0.2.4
47
-
48
- - clarify staged ZIP upload output so larger projects can move into Vibecodr's async heavy import lane automatically
49
- - keep worker-gateway integration fixtures aligned with pulse compute quota fields
50
-
51
- ## 0.2.2
52
-
53
- - show command-specific help for nested `vibecodr pulse <command> --help|-h|-help` requests
54
-
55
- ## 0.2.1
56
-
57
- - preserve encrypted offline sessions when refresh fails because the authorization server is temporarily unavailable
58
- - continue clearing stored auth on OAuth `invalid_grant` so revoked or expired refresh tokens fail closed
59
-
60
- ## 0.2.0
61
-
62
- - rename the npm package to `@vibecodr/cli` while keeping `vibecodr` as the primary executable and `vibecodr-mcp` as a compatibility alias
63
- - add the hardened `pulse` lifecycle command group for list/get/status/run/archive/restore plus create/deploy aliases
64
- - redact source, descriptor, token, secret, and inline file-content fields from CLI-displayed MCP arguments and results
65
- - require explicit confirmation for known mutating MCP tools when invoked through the generic `call` command
66
-
67
- ## 0.1.8
68
-
69
- - report the actual package version in MCP client metadata instead of a stale hardcoded value
70
- - publish the CLI after redeploying the hosted Vibecodr MCP gateway
71
-
72
- ## 0.1.7
73
-
74
- - add the `pulse-setup` command for live Pulse setup guidance
75
- - align CLI Pulse setup docs with the gateway runtime contract for policy-bound secrets, Stripe-first webhook helper guidance, generic HMAC presets, and provider-scoped connections
76
- - refresh release-lock coverage for current in-range MCP SDK, keyring, and Node type packages before publishing
77
-
78
- ## 0.1.6
79
-
80
- - make printed OAuth authorization URLs the default login behavior
81
- - keep automatic browser launch available behind `--browser open`
82
- - keep secret-store delete best-effort when keyring entry loading fails during cleanup
83
-
84
- ## 0.1.5
85
-
86
- - replace the Windows browser launcher with `rundll32 url.dll,FileProtocolHandler` so OAuth URLs open in the default browser instead of File Explorer
87
- - make `doctor` use the same browser-launcher availability check as runtime auth
88
-
89
- ## 0.1.4
90
-
91
- - replace the Windows browser launcher with `explorer.exe` so OAuth URLs are passed through intact
92
-
93
- ## 0.1.3
94
-
95
- - fix Windows command detection by resolving `where.exe` from the real system path
96
- - make `status --show-installs` verify file-backed installs instead of blindly trusting the manifest
97
-
98
- ## 0.1.2
99
-
100
- - fix Windows browser auto-open by launching the actual command shell instead of assuming `cmd` is on PATH
101
- - make `doctor` validate the real browser launcher path instead of hardcoding Windows success
102
-
103
- ## 0.1.1
104
-
105
- - add `vibecodr` as a first-class executable alias
106
- - fix Windows login persistence by storing encrypted session blobs on disk with a small OS-keyring-backed encryption key
107
- - keep `vibecodr-mcp` as a compatibility alias
108
-
109
- ## 0.1.0
110
-
111
- - Initial Phase 0 scaffold for the direct Vibecodr MCP CLI.
1
+ # Changelog
2
+
3
+ Pre-1.0.0 history for the `@vibecodr/cli@0.2.x` and `0.1.x` lines lives at [`docs/legacy/CHANGELOG-mcp-cli.md`](docs/legacy/CHANGELOG-mcp-cli.md). The `@vibecodr/vc-tools@0.1.x` line was the other half of the May 2026 merge; its source history is preserved in the archived [`BradenHartsell/vc-tools`](https://github.com/BradenHartsell/vc-tools) repository.
4
+
5
+ ## 1.0.1
6
+
7
+ Fixes the global-install collision for users who already had `@vibecodr/vc-tools@0.1.x` installed globally. Both packages register a `vc-tools` bin under the same path; npm refuses to overwrite a bin owned by a different package, so the install fails with `EEXIST: file already exists`.
8
+
9
+ - Adds a `preinstall` lifecycle script (`preinstall-check.mjs`) that runs `npm ls -g --depth 0 --json @vibecodr/vc-tools` before file copy. When a legacy `0.1.x` is detected, the install aborts with a clear actionable message listing the two-command fix (`npm uninstall -g @vibecodr/vc-tools` followed by `npm install -g @vibecodr/cli`). The check is purely read-only, opts itself out during local dev installs from the source repo, and honors `VIBECDR_SKIP_PREINSTALL_CHECK=1` for operators who want to bypass.
10
+ - Documents the collision and the unblock recipe in MIGRATION.md under the "If you used `vc-tools`" section.
11
+
12
+ No source or behavior changes to the dispatcher, the worker, or the published bins. The only delta in the tarball is the new `preinstall-check.mjs` at the package root.
13
+
14
+ ## 1.0.0
15
+
16
+ Same source as 1.0.0-rc.0. Promoted to `latest` after the rc.0 release cleared smoke against the production endpoints (tools.vibecodr.space + openai.vibecodr.space/mcp) and the §14 output-baseline fixtures matched byte-for-byte.
17
+
18
+ ## 1.0.0-rc.0
19
+
20
+ First release candidate of the unified Vibecodr CLI. Merges @vibecodr/vc-tools@0.1.4 and @vibecodr/cli@0.2.11 into a single coordinated release.
21
+
22
+ ### Added
23
+
24
+ - Single package `@vibecodr/cli` with three bin entries that all resolve to the same install tree:
25
+ - `vibecodr` — canonical (MCP gateway commands + hosted Agent Computer cross-routed)
26
+ - `vibecodr-mcp` — compatibility alias preserved from 0.2.x
27
+ - `vc-tools` — compatibility alias for the legacy vc-tools surface, byte-equivalent output to vc-tools@0.1.4
28
+ - Hosted Agent Computer commands (start, browser, computer, work, proof, usage, plans, dashboard, jobs, artifacts, agent, connect, try, etc.) now reachable from the `vibecodr` bin via legacy-dispatcher cross-routing.
29
+ - New MCP install adapter `claude-code` (alongside codex, cursor, vscode, windsurf, claude-desktop).
30
+ - Cloudflare worker source, wrangler config, D1 migrations, and Dockerfile vendored from vc-tools so a single repo owns the CLI and its hosted worker.
31
+ - New canonical `VIBECDR_*` env var prefix (e.g. `VIBECDR_CONFIG_DIR`) backed by `src/core/env.ts`. Legacy `VC_TOOLS_*` and `VIBECDR_MCP_*` env vars stay readable as fallbacks; the CLI emits a one-time stderr deprecation note when a legacy var is hit. Set `VIBECDR_NO_DEPRECATION_NOTICE=1` to silence.
32
+
33
+ ### Behavior change on first 1.0.x run
34
+
35
+ The first invocation of any v1.0.0+ bin entry runs a one-shot migration: the
36
+ legacy `%APPDATA%\vc-tools\` and `%APPDATA%\Vibecodr\MCP\` (or platform
37
+ equivalents) are **copied** into a unified `~/.vibecodr/{tools,mcp}/` tree,
38
+ and the legacy roots are **renamed to `<root>.bak`**. The migration is
39
+ idempotent (subsequent runs are no-ops) and preserves OS keychain entries
40
+ (service IDs `@vibecodr/vc-tools` and `@vibecodr/mcp` are not touched). See
41
+ [MIGRATION.md](MIGRATION.md#what-happens-on-first-10x-run) for the full
42
+ breakdown and how to override the destination via `VIBECDR_CONFIG_DIR`.
43
+
44
+ ### Preserved (frozen)
45
+
46
+ - `vc-tools` binary, `vibecodr-mcp` binary, all existing env vars (`VC_TOOLS_*`, `VIBECDR_MCP_*`), keyring service IDs (`@vibecodr/vc-tools` and `@vibecodr/mcp`), config dirs, install-manifest schema, and hosted worker contracts (D1 binding, JWT claims, route paths, page slugs).
47
+ - Output JSON shape for every command captured in test/fixtures/output-baseline/ as the §14 regression contract.
48
+
49
+ ### Migrated
50
+
51
+ - From @vibecodr/cli@0.2.x (no behavior change): login, logout, status, whoami, tools, call, upload, doctor, install, uninstall, config, pulse-setup, pulse-publish, pulse.
52
+ - From @vibecodr/vc-tools@0.1.x (no behavior change for vc-tools bin; new cross-routing from vibecodr bin): start, setup, try, agent, connect, computer, browser, work, proof, usage, limits, dashboard, jobs, artifacts, grants, retention, scheduled-qa, plans, inspect, auth.
53
+
54
+ ### Deprecated
55
+
56
+ - `@vibecodr/vc-tools` npm package becomes a thin forwarder at 0.2.0. Plan: `npm deprecate` 90 days after this release.
57
+
58
+ See MIGRATION.md for upgrade guidance.
package/MIGRATION.md CHANGED
@@ -4,6 +4,24 @@
4
4
 
5
5
  You should not need to change anything to keep working. This page documents the back-compat guarantees and the small set of *additions* you can opt into.
6
6
 
7
+ ## What happens on first 1.0.x run
8
+
9
+ The first time you invoke any of `vibecodr`, `vibecodr-mcp`, or `vc-tools` from v1.0.0+, the CLI does a one-shot migration of your legacy config dirs into a unified `~/.vibecodr/` tree:
10
+
11
+ - `%APPDATA%\vc-tools\` (Windows) / `$XDG_CONFIG_HOME/vc-tools/` (macOS/Linux) -> `~/.vibecodr/tools/`
12
+ - `%APPDATA%\Vibecodr\MCP\` (Windows) / `~/Library/Application Support/Vibecodr MCP/` (macOS) / `$XDG_CONFIG_HOME/vibecodr-mcp/` (Linux) -> `~/.vibecodr/mcp/`
13
+
14
+ The legacy roots are **renamed to `<root>.bak`** so the old code paths can't accidentally re-read stale state. The migration is idempotent — running the CLI again is a no-op once `~/.vibecodr/` exists.
15
+
16
+ **What this means for you:**
17
+
18
+ - All your existing credentials, profiles, and install manifests come along; no re-login is required. The OS keychain entries are not touched (service IDs `@vibecodr/vc-tools` and `@vibecodr/mcp` stay where they are).
19
+ - Set `VIBECDR_CONFIG_DIR` to a custom path to override the new canonical location. Legacy `VC_TOOLS_CONFIG_DIR` and `VIBECDR_MCP_CONFIG_PATH` env vars still work too — they read as fallbacks and write to the canonical location going forward.
20
+ - Any external script that reads the legacy paths directly (instead of going through the CLI) will stop seeing fresh data after the migration. Update those scripts to read `~/.vibecodr/{tools,mcp}/` or rely on the `<root>.bak` snapshots which preserve the pre-migration state.
21
+ - If you absolutely don't want the migration to run, set `VIBECDR_CONFIG_DIR=<your-explicit-path>` before the first invocation; the CLI prefers explicit overrides over the auto-migration trigger.
22
+
23
+ The migration is one-shot per machine. If you need to redo it (for example after rolling back to a 0.2.x line and back to 1.x), delete `~/.vibecodr/tools/` or `~/.vibecodr/mcp/` and the next 1.x invocation re-copies from the legacy roots (which now live at `<root>.bak`).
24
+
7
25
  ## If you used `vc-tools`
8
26
 
9
27
  You installed `npm install -g @vibecodr/vc-tools` and your scripts run `vc-tools start`, `vc-tools browser screenshot ...`, `vc-tools computer run ...`, etc.
@@ -12,7 +30,7 @@ You installed `npm install -g @vibecodr/vc-tools` and your scripts run `vc-tools
12
30
 
13
31
  - Every `vc-tools <command> [...]` invocation continues to work, byte-equivalent JSON output, byte-equivalent exit codes. The §14 output-baseline regression contract checks this on every release.
14
32
  - Your durable API key in the OS keychain remains under the service ID `@vibecodr/vc-tools` (username `agent-computer`). No re-login is required after upgrade.
15
- - Your config dir continues to be `%APPDATA%\vc-tools\` on Windows and `$XDG_CONFIG_HOME/vc-tools/` on macOS/Linux. `VC_TOOLS_CONFIG_DIR` and `VC_TOOLS_CREDENTIAL_STORE` env vars work unchanged.
33
+ - Your config dir moves from `%APPDATA%\vc-tools\` (Windows) / `$XDG_CONFIG_HOME/vc-tools/` (macOS/Linux) to `~/.vibecodr/tools/` on first 1.0.x invocation. The legacy root is renamed to `<root>.bak` and preserved. `VC_TOOLS_CONFIG_DIR` and `VC_TOOLS_CREDENTIAL_STORE` env vars still work; the canonical name is `VIBECDR_CONFIG_DIR` and either set wins. See "What happens on first 1.0.x run" above.
16
34
  - The hosted worker endpoint `tools.vibecodr.space` is unchanged. All HTTP routes (`/auth/vc-tools/device/*`, `/me/api-keys/vc-tools/*`) are frozen. JWT claims (`grant_profile="vc_tools"`, `aud="vibecodr:vc-tools"`) are frozen. The Clerk-managed API key is still labeled `"vc-tools Agent Computer"`.
17
35
 
18
36
  **What's new (opt-in):**
@@ -20,6 +38,17 @@ You installed `npm install -g @vibecodr/vc-tools` and your scripts run `vc-tools
20
38
  - You can install the same package as `npm install -g @vibecodr/cli` instead of `@vibecodr/vc-tools`. The bin name `vc-tools` still resolves; the help banner adds a one-line "this is now part of @vibecodr/cli" footnote.
21
39
  - `@vibecodr/vc-tools` itself becomes a thin forwarder at version 0.2.0 that depends on `@vibecodr/cli`. Existing pinned installs (`@vibecodr/vc-tools@0.1.4`) continue to work; the 0.2.0 forwarder lets `npm i @vibecodr/vc-tools` (no version) drag in the merged CLI for users who type the legacy package name from memory.
22
40
 
41
+ **If `npm install -g @vibecodr/cli` fails with `EEXIST: file already exists` pointing at `<npm-bin>/vc-tools`:**
42
+
43
+ That's the global-bin collision: both `@vibecodr/cli` and the legacy `@vibecodr/vc-tools` register a `vc-tools` bin under the same path, and npm refuses to overwrite a bin owned by a different package. The fix is one command:
44
+
45
+ ```bash
46
+ npm uninstall -g @vibecodr/vc-tools
47
+ npm install -g @vibecodr/cli
48
+ ```
49
+
50
+ This is safe: the uninstall removes only the npm package and its bin shim. Your OS keychain entry (service `@vibecodr/vc-tools`, the durable Clerk API key) and your config dir are untouched; the merged CLI reads both on first run. From `@vibecodr/cli@1.0.1` onwards, the package ships a `preinstall` script that detects this collision and prints the same instructions instead of letting npm surface a bare `EEXIST`.
51
+
23
52
  **What you can update in CI (no rush):**
24
53
 
25
54
  - Switch your install command to `npm install -g @vibecodr/cli`. The bin entry `vc-tools` is still mapped, so no script changes are required.
@@ -32,7 +61,7 @@ You installed `npm install -g @vibecodr/cli` and your scripts run `vibecodr-mcp
32
61
  **What stays the same:**
33
62
 
34
63
  - Every `vibecodr-mcp <command>` invocation continues to work unchanged.
35
- - Your encrypted OAuth session continues to live in the same secret-store location (`%APPDATA%\Vibecodr\MCP\secrets\` on Windows, `~/Library/Application Support/Vibecodr MCP/secrets/` on macOS, `$XDG_CONFIG_HOME/vibecodr-mcp/secrets/` on Linux). Keyring service ID stays `@vibecodr/mcp`. No re-login is required after upgrade.
64
+ - Your encrypted OAuth session moves with the rest of the MCP-CLI config dir on first 1.0.x invocation: from `%APPDATA%\Vibecodr\MCP\secrets\` (Windows) / `~/Library/Application Support/Vibecodr MCP/secrets/` (macOS) / `$XDG_CONFIG_HOME/vibecodr-mcp/secrets/` (Linux) to `~/.vibecodr/mcp/secrets/`. Keyring service ID stays `@vibecodr/mcp` (untouched). No re-login is required. See "What happens on first 1.0.x run" above.
36
65
  - The hosted MCP gateway endpoint `openai.vibecodr.space/mcp` is unchanged.
37
66
  - `VIBECDR_MCP_*` env vars (`VIBECDR_MCP_CONFIG_PATH`, `VIBECDR_MCP_CIMD_CLIENT_ID`, `VIBECDR_MCP_MANUAL_CLIENT_ID`, `VIBECDR_MCP_INSTALL_MANIFEST_PATH`, etc.) work unchanged.
38
67
 
@@ -0,0 +1,28 @@
1
+ import { ConfigStore as McpConfigStore } from "../storage/config-store.js";
2
+ import { SecretStore } from "../storage/secret-store.js";
3
+ import { ConfigStore as VcToolsConfigStore } from "../legacy/config/store.js";
4
+ export type CredentialEndpoint = "tools.vibecodr.space" | "openai.vibecodr.space/mcp";
5
+ export type CredentialKind = "api_key" | "oauth" | "token";
6
+ export interface BrokeredCredential {
7
+ endpoint: CredentialEndpoint;
8
+ kind: CredentialKind;
9
+ value: string;
10
+ serviceId: "@vibecodr/vc-tools" | "@vibecodr/mcp";
11
+ expiresAt?: number;
12
+ }
13
+ export interface CredentialBroker {
14
+ getCredentialForEndpoint(endpoint: CredentialEndpoint): Promise<BrokeredCredential | undefined>;
15
+ }
16
+ export interface BrokerConstruction {
17
+ vcToolsStore: VcToolsConfigStore;
18
+ mcpSecretStore: SecretStore;
19
+ mcpConfigStore: McpConfigStore;
20
+ }
21
+ export declare class DefaultCredentialBroker implements CredentialBroker {
22
+ private readonly stores;
23
+ constructor(stores: BrokerConstruction);
24
+ getCredentialForEndpoint(endpoint: CredentialEndpoint): Promise<BrokeredCredential | undefined>;
25
+ private readVcToolsCredential;
26
+ private readMcpCredential;
27
+ }
28
+ //# sourceMappingURL=credential-broker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-broker.d.ts","sourceRoot":"","sources":["../../src/auth/credential-broker.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE9E,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,GAAG,2BAA2B,CAAC;AAEtF,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC;AAE3D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IAId,SAAS,EAAE,oBAAoB,GAAG,eAAe,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;CACjG;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,kBAAkB,CAAC;IACjC,cAAc,EAAE,WAAW,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,qBAAa,uBAAwB,YAAW,gBAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,kBAAkB;IAEjD,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;YAOvF,qBAAqB;YA4BrB,iBAAiB;CAgBhC"}
@@ -0,0 +1,80 @@
1
+ // Unified credential broker. Routes "give me a credential for endpoint X"
2
+ // requests to the correct underlying store and surface, without callers
3
+ // having to know whether the credential is a durable Clerk API key (the
4
+ // vc-tools hosted Agent Computer surface) or an OAuth access token cached
5
+ // inside an encrypted session blob (the MCP gateway surface).
6
+ //
7
+ // Two underlying slots:
8
+ // - "device-grant": durable API key stored by the legacy vc-tools
9
+ // ConfigStore (src/legacy/config/store.ts), backed by @napi-rs/keyring
10
+ // under service "@vibecodr/vc-tools". Used by the tools.vibecodr.space
11
+ // endpoint family.
12
+ // - "oauth": refreshable OAuth session stored by SecretStore
13
+ // (src/storage/secret-store.ts), backed by @napi-rs/keyring under
14
+ // service "@vibecodr/mcp" plus an AES-256-GCM encrypted file. Used by
15
+ // the openai.vibecodr.space/mcp endpoint.
16
+ //
17
+ // The two service IDs are intentionally kept verbatim across the v1
18
+ // merger so existing keychain entries written by @vibecodr/vc-tools@0.1.x
19
+ // and @vibecodr/cli@0.2.x stay readable.
20
+ export class DefaultCredentialBroker {
21
+ stores;
22
+ constructor(stores) {
23
+ this.stores = stores;
24
+ }
25
+ async getCredentialForEndpoint(endpoint) {
26
+ if (endpoint === "tools.vibecodr.space") {
27
+ return await this.readVcToolsCredential();
28
+ }
29
+ return await this.readMcpCredential();
30
+ }
31
+ async readVcToolsCredential() {
32
+ const state = await this.stores.vcToolsStore.readAuthState();
33
+ const credential = state.credential;
34
+ if (credential) {
35
+ const result = {
36
+ endpoint: "tools.vibecodr.space",
37
+ kind: credential.mode,
38
+ value: credential.value,
39
+ serviceId: "@vibecodr/vc-tools"
40
+ };
41
+ if (credential.expiresAt !== undefined)
42
+ result.expiresAt = credential.expiresAt;
43
+ return result;
44
+ }
45
+ // Fall back to the short-lived exchange grant if a durable credential isn't
46
+ // present yet (the vc-tools start flow can leave only a grant after the
47
+ // device approval step before the durable Clerk API key is minted).
48
+ const grant = state.grant;
49
+ if (!grant)
50
+ return undefined;
51
+ const result = {
52
+ endpoint: "tools.vibecodr.space",
53
+ kind: "token",
54
+ value: grant.token,
55
+ serviceId: "@vibecodr/vc-tools"
56
+ };
57
+ if (grant.expiresAt !== undefined)
58
+ result.expiresAt = grant.expiresAt;
59
+ return result;
60
+ }
61
+ async readMcpCredential() {
62
+ const { name } = await this.stores.mcpConfigStore.getProfile();
63
+ const session = await this.stores.mcpSecretStore.get(name);
64
+ if (!session)
65
+ return undefined;
66
+ const result = {
67
+ endpoint: "openai.vibecodr.space/mcp",
68
+ kind: "oauth",
69
+ value: session.accessToken,
70
+ serviceId: "@vibecodr/mcp"
71
+ };
72
+ if (session.expiresAt) {
73
+ const ts = Date.parse(session.expiresAt);
74
+ if (!Number.isNaN(ts))
75
+ result.expiresAt = ts;
76
+ }
77
+ return result;
78
+ }
79
+ }
80
+ //# sourceMappingURL=credential-broker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-broker.js","sourceRoot":"","sources":["../../src/auth/credential-broker.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,wEAAwE;AACxE,wEAAwE;AACxE,0EAA0E;AAC1E,8DAA8D;AAC9D,EAAE;AACF,wBAAwB;AACxB,oEAAoE;AACpE,2EAA2E;AAC3E,2EAA2E;AAC3E,uBAAuB;AACvB,+DAA+D;AAC/D,sEAAsE;AACtE,0EAA0E;AAC1E,8CAA8C;AAC9C,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,yCAAyC;AA+BzC,MAAM,OAAO,uBAAuB;IACL;IAA7B,YAA6B,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAE3D,KAAK,CAAC,wBAAwB,CAAC,QAA4B;QACzD,IAAI,QAAQ,KAAK,sBAAsB,EAAE,CAAC;YACxC,OAAO,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACxC,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,MAAM,GAAuB;gBACjC,QAAQ,EAAE,sBAAsB;gBAChC,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,SAAS,EAAE,oBAAoB;aAChC,CAAC;YACF,IAAI,UAAU,CAAC,SAAS,KAAK,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;YAChF,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,4EAA4E;QAC5E,wEAAwE;QACxE,oEAAoE;QACpE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,MAAM,MAAM,GAAuB;YACjC,QAAQ,EAAE,sBAAsB;YAChC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,oBAAoB;SAChC,CAAC;QACF,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC/B,MAAM,MAAM,GAAuB;YACjC,QAAQ,EAAE,2BAA2B;YACrC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,OAAO,CAAC,WAAW;YAC1B,SAAS,EAAE,eAAe;SAC3B,CAAC;QACF,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -1,5 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  process.env["__VCR_INVOKED_AS"] = "vc-tools";
3
+ const { reconcileEnv } = await import("../core/env.js");
4
+ reconcileEnv();
5
+ const { migrateLegacyDirsOnce } = await import("../storage/migrate.js");
6
+ await migrateLegacyDirsOnce();
3
7
  const { runCli } = await import("../legacy/cli/run.js");
4
8
  const code = await runCli(process.argv.slice(2));
5
9
  process.exitCode = code;
@@ -1 +1 @@
1
- {"version":3,"file":"vc-tools.js","sourceRoot":"","sources":["../../src/bin/vc-tools.ts"],"names":[],"mappings":";AACA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,UAAU,CAAC;AAC7C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACxD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"vc-tools.js","sourceRoot":"","sources":["../../src/bin/vc-tools.ts"],"names":[],"mappings":";AACA,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,UAAU,CAAC;AAC7C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACxD,YAAY,EAAE,CAAC;AACf,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;AACxE,MAAM,qBAAqB,EAAE,CAAC;AAC9B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;AACxD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC"}
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
+ import { reconcileEnv } from "../core/env.js";
3
+ import { migrateLegacyDirsOnce } from "../storage/migrate.js";
2
4
  import { ConfigStore } from "../storage/config-store.js";
3
5
  import { SecretStore } from "../storage/secret-store.js";
4
6
  import { TokenManager } from "../auth/token-manager.js";
@@ -20,6 +22,8 @@ import { runPulseSetupCommand } from "../commands/pulse-setup.js";
20
22
  import { runPulsePublishCommand } from "../commands/pulse-publish.js";
21
23
  import { runPulseCommand } from "../commands/pulse.js";
22
24
  import { runUploadCommand } from "../commands/upload.js";
25
+ reconcileEnv();
26
+ await migrateLegacyDirsOnce();
23
27
  function helpText() {
24
28
  return [
25
29
  "vibecodr <command> [options]",
@@ -1 +1 @@
1
- {"version":3,"file":"vibecodr-mcp.js","sourceRoot":"","sources":["../../src/bin/vibecodr-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vibecodr-mcp.js","sourceRoot":"","sources":["../../src/bin/vibecodr-mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/clients/claude-code.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAazD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA8CvF;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA8CtH"}
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/clients/claude-code.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAazD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAkDvF;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA8CtH"}
@@ -20,7 +20,11 @@ export async function installClaudeCode(request) {
20
20
  changed: false,
21
21
  location: spawnLocation(),
22
22
  managed: true,
23
- nextStep: "Dry run: would call `claude mcp add --transport http <name> <serverUrl>` to register the Agent Computer."
23
+ nextStep: "Dry run: would call `claude mcp add --transport http <name> <serverUrl>` to register the Agent Computer.",
24
+ spawn: {
25
+ command: CLAUDE_BINARY,
26
+ args: ["mcp", "add", "--transport", "http", request.name, request.serverUrl]
27
+ }
24
28
  };
25
29
  }
26
30
  if (!commandExists(CLAUDE_BINARY)) {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/clients/claude-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/clients/claude-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export declare const ENV_ALIAS_MAP: Readonly<Record<string, readonly string[]>>;
2
+ export declare const DEPRECATION_OPT_OUT_ENV = "VIBECDR_NO_DEPRECATION_NOTICE";
3
+ interface ReconcileOptions {
4
+ env?: NodeJS.ProcessEnv;
5
+ stream?: {
6
+ write(chunk: string): unknown;
7
+ };
8
+ warned?: Set<string>;
9
+ }
10
+ export declare function reconcileEnv(options?: ReconcileOptions): void;
11
+ export declare function __resetDeprecationStateForTests(): void;
12
+ export {};
13
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/core/env.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CASrE,CAAC;AAEF,eAAO,MAAM,uBAAuB,kCAAkC,CAAC;AAEvE,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAG3C,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtB;AAID,wBAAgB,YAAY,CAAC,OAAO,GAAE,gBAAqB,GAAG,IAAI,CA+BjE;AAID,wBAAgB,+BAA+B,IAAI,IAAI,CAEtD"}
@@ -0,0 +1,62 @@
1
+ // VIBECDR_* canonical names with back-compat aliases for VC_TOOLS_* (formerly the
2
+ // @vibecodr/vc-tools surface) and VIBECDR_MCP_* (formerly the @vibecodr/cli@0.2.x
3
+ // surface). reconcileEnv() runs once per bin invocation and synchronizes the
4
+ // canonical and legacy names so both old and new code paths see the same value,
5
+ // then emits a one-time stderr deprecation notice for each legacy name that was
6
+ // actually used. Set VIBECDR_NO_DEPRECATION_NOTICE=1 to suppress the notice
7
+ // (useful in scripts / CI logs that already understand the migration).
8
+ //
9
+ // The legacy code paths under src/legacy/ continue to read VC_TOOLS_* directly,
10
+ // and the MCP-CLI code paths continue to read VIBECDR_MCP_* directly. reconcileEnv
11
+ // does not change which env names the consumers read; it only makes both names
12
+ // addressable so users can migrate their scripts to VIBECDR_* without breaking
13
+ // existing setups.
14
+ export const ENV_ALIAS_MAP = {
15
+ VIBECDR_CONFIG_DIR: ["VC_TOOLS_CONFIG_DIR", "VIBECDR_MCP_CONFIG_PATH"],
16
+ VIBECDR_CREDENTIAL_STORE: ["VC_TOOLS_CREDENTIAL_STORE"],
17
+ VIBECDR_CIMD_CLIENT_ID: ["VIBECDR_MCP_CIMD_CLIENT_ID"],
18
+ VIBECDR_MANUAL_CLIENT_ID: ["VIBECDR_MCP_MANUAL_CLIENT_ID"],
19
+ VIBECDR_INSTALL_MANIFEST_PATH: ["VIBECDR_MCP_INSTALL_MANIFEST_PATH"],
20
+ VIBECDR_INSECURE_SECRET_STORE_PATH: ["VIBECDR_MCP_INSECURE_SECRET_STORE_PATH"],
21
+ VIBECDR_ENABLE_INSECURE_SECRET_STORE: ["VIBECDR_MCP_ENABLE_INSECURE_SECRET_STORE"],
22
+ VIBECDR_TEST_AUTH_URL_FILE: ["VIBECDR_MCP_TEST_AUTH_URL_FILE"]
23
+ };
24
+ export const DEPRECATION_OPT_OUT_ENV = "VIBECDR_NO_DEPRECATION_NOTICE";
25
+ const moduleWarned = new Set();
26
+ export function reconcileEnv(options = {}) {
27
+ const env = options.env ?? process.env;
28
+ const stream = options.stream ?? process.stderr;
29
+ const warned = options.warned ?? moduleWarned;
30
+ const suppressNotice = env[DEPRECATION_OPT_OUT_ENV] === "1";
31
+ for (const [canonical, legacyNames] of Object.entries(ENV_ALIAS_MAP)) {
32
+ const canonicalValue = env[canonical];
33
+ if (canonicalValue !== undefined && canonicalValue !== "") {
34
+ // Canonical set; propagate to any legacy name that isn't set so legacy
35
+ // code paths see the canonical value.
36
+ for (const legacy of legacyNames) {
37
+ if (env[legacy] === undefined) {
38
+ env[legacy] = canonicalValue;
39
+ }
40
+ }
41
+ continue;
42
+ }
43
+ // Canonical not set; find the first legacy name present.
44
+ for (const legacy of legacyNames) {
45
+ const legacyValue = env[legacy];
46
+ if (legacyValue !== undefined && legacyValue !== "") {
47
+ env[canonical] = legacyValue;
48
+ if (!warned.has(legacy) && !suppressNotice) {
49
+ warned.add(legacy);
50
+ stream.write(`Notice: ${legacy} is accepted for back-compat; future releases will prefer ${canonical}. Set ${DEPRECATION_OPT_OUT_ENV}=1 to silence.\n`);
51
+ }
52
+ break;
53
+ }
54
+ }
55
+ }
56
+ }
57
+ // Test-only helper. Production code never needs to reset the warned set; bin
58
+ // entries call reconcileEnv exactly once.
59
+ export function __resetDeprecationStateForTests() {
60
+ moduleWarned.clear();
61
+ }
62
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/core/env.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,kFAAkF;AAClF,6EAA6E;AAC7E,gFAAgF;AAChF,gFAAgF;AAChF,4EAA4E;AAC5E,uEAAuE;AACvE,EAAE;AACF,gFAAgF;AAChF,mFAAmF;AACnF,+EAA+E;AAC/E,+EAA+E;AAC/E,mBAAmB;AAEnB,MAAM,CAAC,MAAM,aAAa,GAAgD;IACxE,kBAAkB,EAAE,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;IACtE,wBAAwB,EAAE,CAAC,2BAA2B,CAAC;IACvD,sBAAsB,EAAE,CAAC,4BAA4B,CAAC;IACtD,wBAAwB,EAAE,CAAC,8BAA8B,CAAC;IAC1D,6BAA6B,EAAE,CAAC,mCAAmC,CAAC;IACpE,kCAAkC,EAAE,CAAC,wCAAwC,CAAC;IAC9E,oCAAoC,EAAE,CAAC,0CAA0C,CAAC;IAClF,0BAA0B,EAAE,CAAC,gCAAgC,CAAC;CAC/D,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,+BAA+B,CAAC;AAUvE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;AAEvC,MAAM,UAAU,YAAY,CAAC,UAA4B,EAAE;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;IAC9C,MAAM,cAAc,GAAG,GAAG,CAAC,uBAAuB,CAAC,KAAK,GAAG,CAAC;IAE5D,KAAK,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACrE,MAAM,cAAc,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;YAC1D,uEAAuE;YACvE,sCAAsC;YACtC,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC;gBAC/B,CAAC;YACH,CAAC;YACD,SAAS;QACX,CAAC;QACD,yDAAyD;QACzD,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE,CAAC;gBACpD,GAAG,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBAC3C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnB,MAAM,CAAC,KAAK,CAAC,WAAW,MAAM,6DAA6D,SAAS,SAAS,uBAAuB,kBAAkB,CAAC,CAAC;gBAC1J,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,0CAA0C;AAC1C,MAAM,UAAU,+BAA+B;IAC7C,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/legacy/config/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/legacy/config/store.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { promises as fs } from "node:fs";
1
+ import { existsSync, promises as fs } from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
4
  import { CliError } from "../cli/errors.js";
@@ -170,6 +170,12 @@ class FileCredentialStore {
170
170
  await this.store.writeJsonPrivateForCredentialStoreOnly(this.store.credentialsPath(), credentials);
171
171
  }
172
172
  }
173
+ function legacyVcToolsConfigDir(env) {
174
+ if (process.platform === "win32") {
175
+ return path.join(env.APPDATA ?? path.join(os.homedir(), "AppData", "Roaming"), "vc-tools");
176
+ }
177
+ return path.join(env.XDG_CONFIG_HOME ?? path.join(os.homedir(), ".config"), "vc-tools");
178
+ }
173
179
  export function resolveConfigDir(env, override) {
174
180
  if (override) {
175
181
  return path.resolve(override);
@@ -177,10 +183,18 @@ export function resolveConfigDir(env, override) {
177
183
  if (env.VC_TOOLS_CONFIG_DIR) {
178
184
  return path.resolve(env.VC_TOOLS_CONFIG_DIR);
179
185
  }
180
- if (process.platform === "win32") {
181
- return path.join(env.APPDATA ?? path.join(os.homedir(), "AppData", "Roaming"), "vc-tools");
182
- }
183
- return path.join(env.XDG_CONFIG_HOME ?? path.join(os.homedir(), ".config"), "vc-tools");
186
+ // Prefer the post-merge canonical ~/.vibecodr/tools/ tree (populated by
187
+ // src/storage/migrate.ts) so the legacy code path stops reading from
188
+ // %APPDATA%\vc-tools after migration runs. Fall back to the legacy
189
+ // location for un-migrated users; if neither exists yet, return canonical
190
+ // so first-write lands there.
191
+ const canonical = path.join(os.homedir(), ".vibecodr", "tools");
192
+ if (existsSync(canonical))
193
+ return canonical;
194
+ const legacy = legacyVcToolsConfigDir(env);
195
+ if (existsSync(legacy))
196
+ return legacy;
197
+ return canonical;
184
198
  }
185
199
  function normalizeConfig(value) {
186
200
  if (!isRecord(value) || value.version !== 1 || typeof value.selectedProfile !== "string" || !isRecord(value.profiles)) {