@nebulr-group/bridge-cli 0.5.1 → 0.6.0-beta.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/README.md +4 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +2 -32
- package/dist/cli.js.map +1 -1
- package/dist/commands/app.command.d.ts.map +1 -1
- package/dist/commands/app.command.js +63 -1
- package/dist/commands/app.command.js.map +1 -1
- package/dist/commands/flag-init.command.d.ts.map +1 -1
- package/dist/commands/flag-init.command.js +14 -10
- package/dist/commands/flag-init.command.js.map +1 -1
- package/dist/commands/guide.command.d.ts +13 -0
- package/dist/commands/guide.command.d.ts.map +1 -1
- package/dist/commands/guide.command.js +35 -27
- package/dist/commands/guide.command.js.map +1 -1
- package/dist/commands/integration.command.d.ts +27 -0
- package/dist/commands/integration.command.d.ts.map +1 -0
- package/dist/commands/integration.command.js +201 -0
- package/dist/commands/integration.command.js.map +1 -0
- package/dist/commands/plan.command.d.ts +63 -0
- package/dist/commands/plan.command.d.ts.map +1 -1
- package/dist/commands/plan.command.js +120 -16
- package/dist/commands/plan.command.js.map +1 -1
- package/dist/config.d.ts +22 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +46 -1
- package/dist/config.js.map +1 -1
- package/dist/output.d.ts.map +1 -1
- package/dist/output.js +8 -1
- package/dist/output.js.map +1 -1
- package/dist/program.d.ts +10 -0
- package/dist/program.d.ts.map +1 -0
- package/dist/program.js +45 -0
- package/dist/program.js.map +1 -0
- package/dist/prompts/auth-master-integration-prompt.md +5 -3
- package/dist/prompts/billing/master.md +8 -6
- package/dist/prompts/guide-coverage.json +12 -0
- package/dist/prompts/integration-success.md +1 -1
- package/package.json +1 -1
- package/dist/commands/integrate.command.d.ts +0 -3
- package/dist/commands/integrate.command.d.ts.map +0 -1
- package/dist/commands/integrate.command.js +0 -49
- package/dist/commands/integrate.command.js.map +0 -1
- package/dist/prompts/architecture.md +0 -560
package/dist/config.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { BridgeManagement } from '@nebulr-group/bridge-auth-core';
|
|
1
|
+
import { BridgeManagement, ManagementHttpClient } from '@nebulr-group/bridge-auth-core';
|
|
2
2
|
import { CredentialSelectorError, findCredential, isExpired, readCredentials, } from './credentials.js';
|
|
3
3
|
export const DEFAULT_BASE_URL = 'https://api.thebridge.dev';
|
|
4
4
|
let _client = null;
|
|
5
|
+
let _baseUrl = null;
|
|
6
|
+
let _apiKey = null;
|
|
7
|
+
let _http = null;
|
|
5
8
|
/**
|
|
6
9
|
* The `--profile` value for this invocation, set by the CLI's preAction hook.
|
|
7
10
|
*
|
|
@@ -111,6 +114,8 @@ export function getManagementClient() {
|
|
|
111
114
|
console.error(`[bridge-cli] apiKey=<redacted from ${source}> baseUrl=${baseUrl} (${baseSource})`);
|
|
112
115
|
}
|
|
113
116
|
_client = new BridgeManagement({ apiKey, baseUrl, debug });
|
|
117
|
+
_baseUrl = baseUrl;
|
|
118
|
+
_apiKey = apiKey;
|
|
114
119
|
return _client;
|
|
115
120
|
}
|
|
116
121
|
/**
|
|
@@ -151,12 +156,52 @@ function writeContextBanner(ctx) {
|
|
|
151
156
|
'Use `--profile <label|app id>` or `BRIDGE_PROFILE` to target another app.\n');
|
|
152
157
|
}
|
|
153
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* The Bridge API base URL the management client talks to, resolved exactly as
|
|
161
|
+
* `getManagementClient()` resolves it: `--profile`, then the active credential,
|
|
162
|
+
* then `BRIDGE_API_KEY`, with `BRIDGE_BASE_URL` overriding each.
|
|
163
|
+
*
|
|
164
|
+
* Anything the CLI writes into a project (`bridge flag init`) takes its base
|
|
165
|
+
* URL from here, so a project is wired to the environment the command just
|
|
166
|
+
* read the app from. Re-reading the credentials file instead ignored
|
|
167
|
+
* `--profile` and `BRIDGE_BASE_URL`, and wrote production into a project
|
|
168
|
+
* scaffolded against stage (TBP-708).
|
|
169
|
+
*/
|
|
170
|
+
export function getResolvedBaseUrl() {
|
|
171
|
+
getManagementClient();
|
|
172
|
+
return _baseUrl;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* A raw authenticated HTTP client, resolved exactly as `getManagementClient()`
|
|
176
|
+
* resolves (same `--profile`, credential, key and base URL, same banner).
|
|
177
|
+
*
|
|
178
|
+
* For routes auth-core has no typed service for yet — the integration checks
|
|
179
|
+
* (TBP-541) — so the CLI can call them without waiting on an auth-core
|
|
180
|
+
* release. The MCP tools use the same client type over the same routes.
|
|
181
|
+
*/
|
|
182
|
+
export function getManagementHttp() {
|
|
183
|
+
if (_http)
|
|
184
|
+
return _http;
|
|
185
|
+
getManagementClient();
|
|
186
|
+
const debug = process.env.BRIDGE_DEBUG === 'true';
|
|
187
|
+
const quiet = () => undefined;
|
|
188
|
+
const logger = {
|
|
189
|
+
debug: debug ? (...a) => console.error('[bridge-cli]', ...a) : quiet,
|
|
190
|
+
warn: debug ? (...a) => console.error('[bridge-cli]', ...a) : quiet,
|
|
191
|
+
error: debug ? (...a) => console.error('[bridge-cli]', ...a) : quiet,
|
|
192
|
+
};
|
|
193
|
+
_http = new ManagementHttpClient(_baseUrl, _apiKey, logger);
|
|
194
|
+
return _http;
|
|
195
|
+
}
|
|
154
196
|
/**
|
|
155
197
|
* For tests and for `bridge auth logout` / `bridge auth status` — they need
|
|
156
198
|
* to reset the cached client between operations.
|
|
157
199
|
*/
|
|
158
200
|
export function resetManagementClient() {
|
|
159
201
|
_client = null;
|
|
202
|
+
_baseUrl = null;
|
|
203
|
+
_apiKey = null;
|
|
204
|
+
_http = null;
|
|
160
205
|
}
|
|
161
206
|
export function resolveTenantId(opts) {
|
|
162
207
|
const tenantId = opts.tenantId || process.env.BRIDGE_TENANT_ID;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAGjD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAGD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAGjD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD;AAGD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAUjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA4DhD"}
|
package/dist/output.js
CHANGED
|
@@ -50,7 +50,14 @@ export function outputError(error) {
|
|
|
50
50
|
if (typeof error.body === 'object' && error.body && 'nblocksCode' in error.body) {
|
|
51
51
|
code = error.body.nblocksCode;
|
|
52
52
|
}
|
|
53
|
-
|
|
53
|
+
// TBP-541 — the server named the fix itself; that beats any generic hint.
|
|
54
|
+
const serverFix = typeof error.body === 'object' && error.body && 'fix' in error.body
|
|
55
|
+
? error.body.fix
|
|
56
|
+
: undefined;
|
|
57
|
+
if (typeof serverFix === 'string' && serverFix.length > 0) {
|
|
58
|
+
hint = serverFix;
|
|
59
|
+
}
|
|
60
|
+
else if (error.status === 403) {
|
|
54
61
|
// The server's message is the authoritative one; check the body too,
|
|
55
62
|
// since the privilege name sometimes only appears there.
|
|
56
63
|
const bodyMessage = typeof error.body === 'object' && error.body && 'message' in error.body
|
package/dist/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAC1E,CAAC;AAGD;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,KAAK,GAAG,gCAAgC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,SAAS,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3E,OAAO,CACL,mCAAmC,SAAS,IAAI;QAChD,+EAA+E;QAC/E,6EAA6E;QAC7E,2DAA2D,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,IAAI,GAAG,eAAe,CAAC;IAC3B,IAAI,OAAO,GAAG,2BAA2B,CAAC;IAC1C,IAAI,OAAO,GAAY,SAAS,CAAC;IACjC,IAAI,IAAwB,CAAC;IAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QACjC,IAAI,GAAG,cAAc,CAAC;QACtB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QACtC,IAAI,GAAG,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QACxB,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;QACrB,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvC,iCAAiC;QACjC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,IAAI,aAAa,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAChF,IAAI,GAAI,KAAK,CAAC,IAA+B,CAAC,WAAW,CAAC;QAC5D,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
/**
|
|
3
|
+
* Every command group the CLI has, registered on `program`.
|
|
4
|
+
*
|
|
5
|
+
* Kept apart from `cli.ts` (which reads the package version through
|
|
6
|
+
* `import.meta`) so tests can build the real command tree. The prompts test
|
|
7
|
+
* checks every `bridge …` command the guides name against it (TBP-706).
|
|
8
|
+
*/
|
|
9
|
+
export declare function registerCommands(program: Command): void;
|
|
10
|
+
//# sourceMappingURL=program.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmBvD"}
|
package/dist/program.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { registerAppCommands } from './commands/app.command.js';
|
|
2
|
+
import { registerTenantCommands } from './commands/tenant.command.js';
|
|
3
|
+
import { registerUserCommands } from './commands/user.command.js';
|
|
4
|
+
import { registerRoleCommands } from './commands/role.command.js';
|
|
5
|
+
import { registerPrivilegeCommands } from './commands/privilege.command.js';
|
|
6
|
+
import { registerFlagCommands } from './commands/flag.command.js';
|
|
7
|
+
import { registerAuthCommands } from './commands/auth.command.js';
|
|
8
|
+
import { registerBrandingCommands } from './commands/branding.command.js';
|
|
9
|
+
import { registerPlanCommands } from './commands/plan.command.js';
|
|
10
|
+
import { registerTokenCommands } from './commands/token.command.js';
|
|
11
|
+
import { registerEventCommands } from './commands/event.command.js';
|
|
12
|
+
import { registerSetupCommands } from './commands/setup.command.js';
|
|
13
|
+
import { registerInfoCommands } from './commands/info.command.js';
|
|
14
|
+
import { registerGuideCommands } from './commands/guide.command.js';
|
|
15
|
+
import { registerOpsCommands } from './commands/ops.command.js';
|
|
16
|
+
import { registerStripeCommands } from './commands/stripe.command.js';
|
|
17
|
+
import { registerIntegrationCommands } from './commands/integration.command.js';
|
|
18
|
+
/**
|
|
19
|
+
* Every command group the CLI has, registered on `program`.
|
|
20
|
+
*
|
|
21
|
+
* Kept apart from `cli.ts` (which reads the package version through
|
|
22
|
+
* `import.meta`) so tests can build the real command tree. The prompts test
|
|
23
|
+
* checks every `bridge …` command the guides name against it (TBP-706).
|
|
24
|
+
*/
|
|
25
|
+
export function registerCommands(program) {
|
|
26
|
+
registerAppCommands(program);
|
|
27
|
+
registerTenantCommands(program);
|
|
28
|
+
registerUserCommands(program);
|
|
29
|
+
registerRoleCommands(program);
|
|
30
|
+
registerPrivilegeCommands(program);
|
|
31
|
+
registerFlagCommands(program);
|
|
32
|
+
registerAuthCommands(program);
|
|
33
|
+
registerBrandingCommands(program);
|
|
34
|
+
registerPlanCommands(program);
|
|
35
|
+
registerTokenCommands(program);
|
|
36
|
+
registerEventCommands(program);
|
|
37
|
+
registerSetupCommands(program);
|
|
38
|
+
registerInfoCommands(program);
|
|
39
|
+
registerGuideCommands(program);
|
|
40
|
+
registerOpsCommands(program);
|
|
41
|
+
registerStripeCommands(program);
|
|
42
|
+
// After setup + event: adds `setup status` and `event auth-attempts` to those groups (TBP-541).
|
|
43
|
+
registerIntegrationCommands(program);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=program.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,yBAAyB,CAAC,OAAO,CAAC,CAAC;IACnC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,gGAAgG;IAChG,2BAA2B,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -162,7 +162,9 @@ bridge app update \
|
|
|
162
162
|
--allowed-origins <frontend-url>
|
|
163
163
|
```
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
`--ui-url` is also where links in Bridge's emails point. When your **backend** calls the Bridge API — inviting a user, triggering a password reset — the request carries no browser origin, so Bridge falls back to this URL to build the link. Leave it unset and those users land on Bridge's hosted sign-in pages instead of your app. The URL must also appear in `--allowed-origins`, or Bridge ignores it and uses the hosted pages.
|
|
166
|
+
|
|
167
|
+
If the hosted sign-in UI is on a different origin (e.g., `http://localhost:3091` in local dev, `https://app.thebridge.dev` in prod), add it to `--allowed-origins` as well:
|
|
166
168
|
|
|
167
169
|
```bash
|
|
168
170
|
bridge app update --allowed-origins <frontend-url>,<hosted-url>
|
|
@@ -179,9 +181,9 @@ For each confirmed project, fetch the framework-specific integration prompt.
|
|
|
179
181
|
| Framework | Hosted (default) | SDK |
|
|
180
182
|
|-----------|-------------------|-----|
|
|
181
183
|
| SvelteKit | `bridge guide svelte` | `bridge guide svelte sdk-auth` |
|
|
182
|
-
| React | `bridge guide react` |
|
|
184
|
+
| React | `bridge guide react` | `bridge guide react sdk-auth` |
|
|
183
185
|
| Next.js | `bridge guide nextjs` | `bridge guide nextjs sdk-auth` |
|
|
184
|
-
| Angular | `bridge guide angular` |
|
|
186
|
+
| Angular | `bridge guide angular` | `bridge guide angular sdk-auth` |
|
|
185
187
|
|
|
186
188
|
**Backend projects:**
|
|
187
189
|
|
|
@@ -112,11 +112,13 @@ If there are no per-plan limits or feature differences, the quotas and entitleme
|
|
|
112
112
|
|
|
113
113
|
## Step 3b — Create plans, connect Stripe, then set prices
|
|
114
114
|
|
|
115
|
-
Once confirmed, create the plans
|
|
115
|
+
Once confirmed, create the plans. **Every plan needs at least one price** — a plan with no
|
|
116
|
+
prices cannot be assigned to a workspace, so `plan create` takes the first one. A free tier is
|
|
117
|
+
a **zero-amount** price, not the absence of a price:
|
|
116
118
|
|
|
117
119
|
```bash
|
|
118
|
-
bridge plan create --key free --name "Free"
|
|
119
|
-
bridge plan create --key pro --name "Pro" --trial --trial-days 14
|
|
120
|
+
bridge plan create --key free --name "Free" --amount 0 --interval month
|
|
121
|
+
bridge plan create --key pro --name "Pro" --amount 29 --interval month --trial --trial-days 14
|
|
120
122
|
```
|
|
121
123
|
|
|
122
124
|
Verify: `bridge plan list`
|
|
@@ -136,9 +138,9 @@ If not connected, ask the developer for their Stripe keys (from `dashboard.strip
|
|
|
136
138
|
bridge stripe connect --secret-key sk_test_... --publishable-key pk_test_...
|
|
137
139
|
```
|
|
138
140
|
|
|
139
|
-
Now set prices —
|
|
140
|
-
(keyed on currency + interval), so a
|
|
141
|
-
|
|
141
|
+
Now set any **remaining** prices — one command per Prices-table row not already covered by the
|
|
142
|
+
`plan create` call above. `plan price set` is idempotent (keyed on currency + interval), so a
|
|
143
|
+
tier with monthly **and** yearly pricing is just one more call against the same plan key:
|
|
142
144
|
|
|
143
145
|
```bash
|
|
144
146
|
bridge plan price set pro --amount 29 --currency usd --interval month
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Which per-framework guides exist, keyed by the feature names `bridge guide <framework> <feature>` takes (the file stems under mcp/ in each plugin repo). The one copy: `bridge guide list` reads it from the package, and the Bridge MCP server reads it from GitHub (bridge-cli/main/bridge-cli/prompts/guide-coverage.json). Update it when a plugin adds or removes an mcp/*-prompt.md.",
|
|
3
|
+
"aliases": { "flags": "feature-flags" },
|
|
4
|
+
"frameworks": {
|
|
5
|
+
"svelte": ["integration", "sdk-auth", "feature-flags", "billing", "team", "branding"],
|
|
6
|
+
"react": ["integration", "sdk-auth", "feature-flags", "billing", "team", "branding"],
|
|
7
|
+
"angular": ["integration", "sdk-auth", "feature-flags", "billing", "team", "branding"],
|
|
8
|
+
"nextjs": ["integration", "sdk-auth", "feature-flags", "billing", "team"],
|
|
9
|
+
"nestjs": ["integration", "auth", "feature-flags", "billing", "team"],
|
|
10
|
+
"express": ["integration", "auth", "feature-flags", "billing", "team"]
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
──────────────────────────────────────────────
|
|
28
28
|
The control center gives you even more powers.
|
|
29
29
|
|
|
30
|
-
› Billing Stripe plans & subscriptions → bridge guide [framework]
|
|
30
|
+
› Billing Stripe plans & subscriptions → bridge guide [framework] billing
|
|
31
31
|
› Feature flags Per-user, per-plan toggles → bridge guide flags
|
|
32
32
|
› Team management Invites, roles, orgs → bridge guide [framework] team
|
|
33
33
|
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integrate.command.d.ts","sourceRoot":"","sources":["../../src/commands/integrate.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY/D"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
2
|
-
import { join, dirname } from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { outputSuccess, outputError } from '../output.js';
|
|
5
|
-
import { AUTH_MASTER_PROMPT_FILENAME, AUTH_MASTER_PROMPT_URL } from '../prompt-urls.js';
|
|
6
|
-
export function registerIntegrateCommand(program) {
|
|
7
|
-
program
|
|
8
|
-
.command('integrate')
|
|
9
|
-
.description('Get the master integration prompt — detects your project and guides you through Bridge setup')
|
|
10
|
-
.action(async () => {
|
|
11
|
-
try {
|
|
12
|
-
const content = await fetchMasterPrompt();
|
|
13
|
-
outputSuccess({ guide: content });
|
|
14
|
-
}
|
|
15
|
-
catch (err) {
|
|
16
|
-
outputError(err);
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
async function fetchMasterPrompt() {
|
|
21
|
-
// Local override for development
|
|
22
|
-
const localDir = process.env.BRIDGE_GUIDE_LOCAL_DIR;
|
|
23
|
-
if (localDir) {
|
|
24
|
-
// The master prompt lives alongside the CLI, not in a plugin repo
|
|
25
|
-
const localPath = join(localDir, 'bridge-cli', 'bridge-cli', 'prompts', AUTH_MASTER_PROMPT_FILENAME);
|
|
26
|
-
try {
|
|
27
|
-
return await readFile(localPath, 'utf-8');
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
// Fall through to bundled copy
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
// Try bundled copy (relative to dist/)
|
|
34
|
-
try {
|
|
35
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
36
|
-
const bundledPath = join(__dirname, '..', 'prompts', AUTH_MASTER_PROMPT_FILENAME);
|
|
37
|
-
return await readFile(bundledPath, 'utf-8');
|
|
38
|
-
}
|
|
39
|
-
catch {
|
|
40
|
-
// Fall through to remote fetch
|
|
41
|
-
}
|
|
42
|
-
// Remote fetch as last resort
|
|
43
|
-
const response = await fetch(AUTH_MASTER_PROMPT_URL);
|
|
44
|
-
if (!response.ok) {
|
|
45
|
-
throw new Error(`Master integration prompt not available (HTTP ${response.status})`);
|
|
46
|
-
}
|
|
47
|
-
return response.text();
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=integrate.command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integrate.command.js","sourceRoot":"","sources":["../../src/commands/integrate.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,8FAA8F,CAAC;SAC3G,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC1C,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,iCAAiC;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACpD,IAAI,QAAQ,EAAE,CAAC;QACb,kEAAkE;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QACrG,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,2BAA2B,CAAC,CAAC;QAClF,OAAO,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;IAED,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,iDAAiD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|