@nebulr-group/bridge-cli 0.6.0-beta.4 → 0.6.0-beta.6

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 (32) hide show
  1. package/dist/commands/guide.command.d.ts +9 -0
  2. package/dist/commands/guide.command.d.ts.map +1 -1
  3. package/dist/commands/guide.command.js +39 -1
  4. package/dist/commands/guide.command.js.map +1 -1
  5. package/dist/commands/integration.command.d.ts +8 -0
  6. package/dist/commands/integration.command.d.ts.map +1 -1
  7. package/dist/commands/integration.command.js +92 -3
  8. package/dist/commands/integration.command.js.map +1 -1
  9. package/dist/commands/plan.command.d.ts +17 -0
  10. package/dist/commands/plan.command.d.ts.map +1 -1
  11. package/dist/commands/plan.command.js +94 -17
  12. package/dist/commands/plan.command.js.map +1 -1
  13. package/dist/commands/user.command.d.ts.map +1 -1
  14. package/dist/commands/user.command.js +21 -1
  15. package/dist/commands/user.command.js.map +1 -1
  16. package/dist/output.d.ts.map +1 -1
  17. package/dist/output.js +9 -0
  18. package/dist/output.js.map +1 -1
  19. package/dist/product-decisions.d.ts +40 -0
  20. package/dist/product-decisions.d.ts.map +1 -0
  21. package/dist/product-decisions.js +52 -0
  22. package/dist/product-decisions.js.map +1 -0
  23. package/dist/prompts/auth-master-integration-prompt.md +15 -0
  24. package/dist/prompts/billing/master.md +17 -1
  25. package/dist/prompts/decisions/going-live.md +2 -0
  26. package/dist/prompts/decisions/login.md +2 -0
  27. package/dist/prompts/decisions/look-and-feel.md +2 -0
  28. package/dist/prompts/decisions/payments.md +5 -1
  29. package/dist/prompts/decisions/teams.md +5 -1
  30. package/dist/prompts/mcp-tools.json +4 -3
  31. package/dist/prompts/product-decisions.json +338 -0
  32. package/package.json +1 -1
@@ -17,6 +17,15 @@ type FlagsFramework = (typeof FLAGS_FRAMEWORKS)[number];
17
17
  declare const BILLING_FRAMEWORKS: readonly ["svelte", "react", "nextjs", "angular", "nestjs", "express"];
18
18
  type BillingFramework = (typeof BILLING_FRAMEWORKS)[number];
19
19
  export declare function registerGuideCommands(program: Command): void;
20
+ /**
21
+ * TBP-540 (folds TBP-599) — `bridge guide <framework>` prints the HOSTED
22
+ * sign-in guide, and used to say nothing about the other mode. A developer who
23
+ * wanted in-app forms never learned `bridge guide svelte sdk-auth` existed,
24
+ * hand-wrote a login form against `/auth/login` (a 404) and shipped it. So a
25
+ * framework that has an SDK-auth guide opens by naming both modes; one that
26
+ * has none (the backends) is unchanged.
27
+ */
28
+ export declare function authModesPreface(tech: string, coverage: Record<string, string[]>): string | null;
20
29
  export declare const MECHANISMS_PROMPT_FILENAME = "mechanisms.md";
21
30
  export declare const ORIENTATION_PROMPT_FILENAME = "orientation.md";
22
31
  /** The mechanisms page, bundled with the CLI (`BRIDGE_GUIDE_LOCAL_DIR` wins in development). */
@@ -1 +1 @@
1
- {"version":3,"file":"guide.command.d.ts","sourceRoot":"","sources":["../../src/commands/guide.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAejD;AAED,QAAA,MAAM,gBAAgB,wEAAyE,CAAC;AAChG,KAAK,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,QAAA,MAAM,kBAAkB,wEAAyE,CAAC;AAClG,KAAK,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAyB5D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0N5D;AAED,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,2BAA2B,mBAAmB,CAAC;AAE5D,gGAAgG;AAChG,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5D;AAED,gGAAgG;AAChG,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE7D;AA0CD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA0BrC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE9D;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEhE;AAqCD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CA0BvC"}
1
+ {"version":3,"file":"guide.command.d.ts","sourceRoot":"","sources":["../../src/commands/guide.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CAejD;AAED,QAAA,MAAM,gBAAgB,wEAAyE,CAAC;AAChG,KAAK,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,QAAA,MAAM,kBAAkB,wEAAyE,CAAC;AAClG,KAAK,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAyB5D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8N5D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,CAShG;AAWD,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAC1D,eAAO,MAAM,2BAA2B,mBAAmB,CAAC;AAE5D,gGAAgG;AAChG,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE5D;AAED,gGAAgG;AAChG,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE7D;AA0CD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CA0BrC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,CAE9D;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEhE;AAqCD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CA0BvC"}
@@ -197,6 +197,11 @@ export function registerGuideCommands(program) {
197
197
  }
198
198
  else {
199
199
  content = await fetchGuide(tech, feature);
200
+ if (!feature) {
201
+ const preface = authModesPreface(tech, loadGuideCoverage().frameworks);
202
+ if (preface)
203
+ content = `${preface}\n\n${content}`;
204
+ }
200
205
  }
201
206
  if (opts.json) {
202
207
  outputSuccess({ technology: tech, feature: resolvedFeature, guide: content });
@@ -309,6 +314,34 @@ export function registerGuideCommands(program) {
309
314
  }
310
315
  });
311
316
  }
317
+ /**
318
+ * TBP-540 (folds TBP-599) — `bridge guide <framework>` prints the HOSTED
319
+ * sign-in guide, and used to say nothing about the other mode. A developer who
320
+ * wanted in-app forms never learned `bridge guide svelte sdk-auth` existed,
321
+ * hand-wrote a login form against `/auth/login` (a 404) and shipped it. So a
322
+ * framework that has an SDK-auth guide opens by naming both modes; one that
323
+ * has none (the backends) is unchanged.
324
+ */
325
+ export function authModesPreface(tech, coverage) {
326
+ if (!coverage[tech]?.includes('sdk-auth'))
327
+ return null;
328
+ return [
329
+ '> **Two ways to sign in — pick before you start.**',
330
+ `> - **Hosted** (this guide): Bridge serves the sign-in pages and your app redirects to them. Fastest, no UI to build.`,
331
+ `> - **In your own app**: sign-in and sign-up forms inside your layout, with the SDK handling password, magic link, passkeys, SSO, two-factor and workspace choice. Run \`bridge guide ${tech} sdk-auth\` instead.`,
332
+ '>',
333
+ '> Either way, never write a login form or call Bridge auth endpoints by hand: the SDK does it, and a guessed endpoint fails as a silent 404.',
334
+ ].join('\n');
335
+ }
336
+ /** The per-framework guides that exist for `tech`, or null when the list cannot be read. */
337
+ function guidesFor(tech) {
338
+ try {
339
+ return loadGuideCoverage().frameworks[tech] ?? null;
340
+ }
341
+ catch {
342
+ return null;
343
+ }
344
+ }
312
345
  export const MECHANISMS_PROMPT_FILENAME = 'mechanisms.md';
313
346
  export const ORIENTATION_PROMPT_FILENAME = 'orientation.md';
314
347
  /** The mechanisms page, bundled with the CLI (`BRIDGE_GUIDE_LOCAL_DIR` wins in development). */
@@ -495,7 +528,12 @@ async function fetchGuide(tech, feature) {
495
528
  const response = await fetch(url);
496
529
  if (!response.ok) {
497
530
  const label = feature ? `${tech}/${feature}` : tech;
498
- throw new Error(`Guide not available for ${label} (HTTP ${response.status}). The prompt file may not exist yet in the plugin repo.`);
531
+ // TBP-540 — a failed lookup names what does exist, so the next try is right.
532
+ const available = response.status === 404 ? guidesFor(tech) : null;
533
+ throw Object.assign(new Error(`Guide not available for ${label} (HTTP ${response.status}). ` +
534
+ (available
535
+ ? `Guides for ${tech}: ${available.join(', ')} (\`bridge guide ${tech} <guide>\`; \`bridge guide list\` shows every framework).`
536
+ : 'The prompt file may not exist yet in the plugin repo.')), response.status === 404 ? { code: 'GUIDE_NOT_FOUND' } : {});
499
537
  }
500
538
  const content = await response.text();
501
539
  guideCache.set(cacheKey, { content, fetchedAt: Date.now() });
@@ -1 +1 @@
1
- {"version":3,"file":"guide.command.js","sourceRoot":"","sources":["../../src/commands/guide.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guide.command.js","sourceRoot":"","sources":["../../src/commands/guide.command.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,14 @@ export declare function parseDotenv(text: string): Record<string, string>;
15
15
  export declare function bridgeEnvToSend(env: Record<string, string>): Record<string, string>;
16
16
  /** Rename every `fix` key to `hint`, the CLI's word for it. */
17
17
  export declare function fixToHint(value: unknown): unknown;
18
+ export interface PluginWiring {
19
+ framework: string;
20
+ package: string;
21
+ wired: boolean;
22
+ hint?: string;
23
+ }
24
+ /** Each Bridge plugin in the project's package.json, and whether any source file calls it. */
25
+ export declare function checkPluginWiring(cwd: string): Promise<PluginWiring[]>;
18
26
  export interface DiagnoseOptions {
19
27
  envFile?: string[];
20
28
  framework?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"integration.command.d.ts","sourceRoot":"","sources":["../../src/commands/integration.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,UAAuE,CAAC;AAItG,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAchE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWnF;AAED,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQjD;AAwBD,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAsBzG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+DlE"}
1
+ {"version":3,"file":"integration.command.d.ts","sourceRoot":"","sources":["../../src/commands/integration.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,UAAuE,CAAC;AAItG,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED,wDAAwD;AACxD,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAchE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWnF;AAED,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQjD;AA8DD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,8FAA8F;AAC9F,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAsC5E;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CA2BzG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgElE"}
@@ -1,5 +1,5 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { basename, resolve } from 'node:path';
1
+ import { readFile, readdir } from 'node:fs/promises';
2
+ import { basename, join, resolve } from 'node:path';
3
3
  import { getManagementHttp } from '../config.js';
4
4
  import { outputError, outputSuccess } from '../output.js';
5
5
  import { detectFramework } from './flag-init.command.js';
@@ -98,6 +98,89 @@ async function readEnvFiles(cwd, files) {
98
98
  }
99
99
  return { env, read };
100
100
  }
101
+ /*
102
+ * TBP-540 (folds TBP-599) — a Bridge plugin in package.json that nothing
103
+ * calls. A real port had `@nebulr-group/bridge-svelte` installed and never
104
+ * imported: its login form POSTed to an endpoint that does not exist and its
105
+ * flag fetch 404ed into an empty list, so the app shipped with login and
106
+ * gating quietly broken. The env comparison cannot see that; the source can.
107
+ */
108
+ const PLUGIN_WIRING = {
109
+ svelte: { pkg: '@nebulr-group/bridge-svelte', marker: /\bbridgeBootstrap\b|<BridgeBootstrap\b/, call: 'bridgeBootstrap()', sdkAuth: true },
110
+ react: { pkg: '@nebulr-group/bridge-react', marker: /<BridgeProvider\b/, call: '<BridgeProvider>', sdkAuth: true },
111
+ nextjs: { pkg: '@nebulr-group/bridge-nextjs', marker: /<BridgeProvider\b|\bwithBridgeAuth\b/, call: '<BridgeProvider> or withBridgeAuth', sdkAuth: true },
112
+ angular: { pkg: '@nebulr-group/bridge-angular', marker: /\bprovideBridge\b/, call: 'provideBridge()', sdkAuth: true },
113
+ nestjs: { pkg: '@nebulr-group/bridge-nestjs', marker: /\bBridgeModule\b/, call: 'BridgeModule.forRoot()', sdkAuth: false },
114
+ express: { pkg: '@nebulr-group/bridge-express', marker: /\bcreateBridge\w*\(/, call: 'createBridge()', sdkAuth: false },
115
+ };
116
+ const SKIP_DIRS = new Set(['node_modules', '.git', '.svelte-kit', '.next', '.angular', 'dist', 'build', 'coverage', 'out']);
117
+ const SOURCE_FILE = /\.(?:[cm]?[jt]sx?|svelte)$/;
118
+ const MAX_FILES = 5000;
119
+ async function projectSources(dir, found = []) {
120
+ let entries;
121
+ try {
122
+ entries = await readdir(dir, { withFileTypes: true });
123
+ }
124
+ catch {
125
+ return found;
126
+ }
127
+ for (const e of entries) {
128
+ if (found.length >= MAX_FILES)
129
+ break;
130
+ if (e.isDirectory()) {
131
+ if (!SKIP_DIRS.has(e.name) && !e.name.startsWith('.'))
132
+ await projectSources(join(dir, e.name), found);
133
+ }
134
+ else if (SOURCE_FILE.test(e.name)) {
135
+ found.push(join(dir, e.name));
136
+ }
137
+ }
138
+ return found;
139
+ }
140
+ /** Each Bridge plugin in the project's package.json, and whether any source file calls it. */
141
+ export async function checkPluginWiring(cwd) {
142
+ let deps;
143
+ try {
144
+ const pkg = JSON.parse(await readFile(join(cwd, 'package.json'), 'utf8'));
145
+ deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
146
+ }
147
+ catch {
148
+ return [];
149
+ }
150
+ const installed = Object.entries(PLUGIN_WIRING).filter(([, w]) => w.pkg in deps);
151
+ if (!installed.length)
152
+ return [];
153
+ const pending = new Map(installed);
154
+ for (const file of await projectSources(cwd)) {
155
+ if (!pending.size)
156
+ break;
157
+ let text;
158
+ try {
159
+ text = await readFile(file, 'utf8');
160
+ }
161
+ catch {
162
+ continue;
163
+ }
164
+ for (const [fw, w] of pending)
165
+ if (w.marker.test(text))
166
+ pending.delete(fw);
167
+ }
168
+ return installed.map(([framework, w]) => {
169
+ if (!pending.has(framework))
170
+ return { framework, package: w.pkg, wired: true };
171
+ const guides = w.sdkAuth
172
+ ? `\`bridge guide ${framework}\` (hosted sign-in) or \`bridge guide ${framework} sdk-auth\` (forms in your app)`
173
+ : `\`bridge guide ${framework}\``;
174
+ return {
175
+ framework,
176
+ package: w.pkg,
177
+ wired: false,
178
+ hint: `${w.pkg} is installed but no source file calls ${w.call}, so Bridge is not active in this project. ` +
179
+ 'Hand-written login or flag calls against guessed endpoints fail as silent 404s. ' +
180
+ `Wire the plugin with ${guides}.`,
181
+ };
182
+ });
183
+ }
101
184
  export async function diagnose(opts) {
102
185
  const cwd = opts.dir ? resolve(opts.dir) : process.cwd();
103
186
  if (opts.framework && !FRAMEWORKS.includes(opts.framework)) {
@@ -109,12 +192,17 @@ export async function diagnose(opts) {
109
192
  const detected = opts.framework ?? (await detectFramework(cwd));
110
193
  const framework = detected && detected !== 'unknown' ? detected : undefined;
111
194
  const sent = bridgeEnvToSend(env);
195
+ const pluginWiring = await checkPluginWiring(cwd);
112
196
  const result = await getManagementHttp().post(`${BASE}/diagnose`, {
113
197
  env: sent,
114
198
  ...(framework ? { framework } : {}),
115
199
  });
200
+ const unwired = pluginWiring.some((w) => !w.wired);
116
201
  return {
117
202
  ...fixToHint(result),
203
+ // A plugin nothing calls is a failed diagnosis whatever the env says.
204
+ ...(unwired ? { ok: false } : {}),
205
+ ...(pluginWiring.length ? { pluginWiring } : {}),
118
206
  envFilesRead: read,
119
207
  // Names only: what was compared, never the values of secrets.
120
208
  secretsSentAsPresenceOnly: Object.keys(sent).filter(isSecretName),
@@ -122,7 +210,8 @@ export async function diagnose(opts) {
122
210
  }
123
211
  export function registerIntegrationCommands(program) {
124
212
  program.command('diagnose')
125
- .description("Check this project's Bridge env vars against the app and list every difference with a fix")
213
+ .alias('doctor')
214
+ .description("Check this project's Bridge env vars against the app, and that its Bridge plugin is wired, listing every problem with a fix")
126
215
  .option('--env-file <path...>', `Env file(s) to read, later ones winning (default: ${DEFAULT_ENV_FILES.join(', ')} if present)`)
127
216
  .option('--framework <name>', `Framework: ${FRAMEWORKS.join(', ')} (default: detected from package.json)`)
128
217
  .option('--dir <path>', 'Project directory (default: current directory)')
@@ -1 +1 @@
1
- {"version":3,"file":"integration.command.js","sourceRoot":"","sources":["../../src/commands/integration.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.command.js","sourceRoot":"","sources":["../../src/commands/integration.command.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Command } from 'commander';
2
+ import { type DecisionField } from '../product-decisions.js';
2
3
  export type QuotaPolicy = 'hard' | 'metered';
3
4
  /** TBP-275 — per-unit price for a metered quota. */
4
5
  export interface QuotaPricing {
@@ -104,6 +105,22 @@ export declare function removePrice(prices: PlanPriceInput[], entry: {
104
105
  }, planKey: string): PlanPriceInput[];
105
106
  /** Upsert a price by (currency + interval): replace if present, append otherwise. Pure. */
106
107
  export declare function upsertPrice(prices: PlanPriceInput[], entry: PlanPriceInput): PlanPriceInput[];
108
+ /**
109
+ * The currency for a price given without one: the plan's one currency when it
110
+ * has exactly one; USD for a free (0) price when it has none; otherwise
111
+ * undefined — the developer decides. Same rule as the MCP tools. Pure.
112
+ */
113
+ export declare function resolvePriceCurrency(given: string | undefined, amount: number, others: Array<{
114
+ currency?: string;
115
+ }>): string | undefined;
116
+ /** The decisions `plan create` is missing, in the MCP tool's order. Pure. */
117
+ export declare function createPlanDecisions(opts: {
118
+ amount?: number;
119
+ interval?: string;
120
+ currency?: string;
121
+ trial?: boolean;
122
+ trialDays?: number;
123
+ }): DecisionField[];
107
124
  export declare function registerPlanCommands(program: Command): void;
108
125
  export interface PlanSpec {
109
126
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"plan.command.d.ts","sourceRoot":"","sources":["../../src/commands/plan.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.command.d.ts","sourceRoot":"","sources":["../../src/commands/plan.command.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { readFileSync } from 'node:fs';
2
2
  import { getManagementClient } from '../config.js';
3
3
  import { outputSuccess, outputError } from '../output.js';
4
4
  import { shapePlan } from '../shape.js';
5
+ import { DecisionNeededError, decisionField } from '../product-decisions.js';
5
6
  const QUOTA_POLICIES = ['hard', 'metered'];
6
7
  const QUOTA_KINDS = ['counter', 'gauge'];
7
8
  /** TBP-699 — the built-in seats gauge: Bridge counts it from workspace membership. */
@@ -164,6 +165,44 @@ export function upsertPrice(prices, entry) {
164
165
  entry,
165
166
  ];
166
167
  }
168
+ // ── Product decisions (TBP-713) ──────────────────────────────────────────────
169
+ // Mirrors bridge-api's create_plan / set_plan_price / apply_plan: a price,
170
+ // interval, currency or trial the developer has not decided stops the command
171
+ // before anything is written, naming the same fields as the MCP tool.
172
+ /** The distinct currencies of a plan's prices, upper-cased. */
173
+ function planCurrencies(prices) {
174
+ return [...new Set(prices.map((p) => p.currency?.trim().toUpperCase()).filter((c) => !!c))];
175
+ }
176
+ /**
177
+ * The currency for a price given without one: the plan's one currency when it
178
+ * has exactly one; USD for a free (0) price when it has none; otherwise
179
+ * undefined — the developer decides. Same rule as the MCP tools. Pure.
180
+ */
181
+ export function resolvePriceCurrency(given, amount, others) {
182
+ if (given !== undefined)
183
+ return given.trim().toUpperCase();
184
+ const known = planCurrencies(others);
185
+ if (known.length === 1)
186
+ return known[0];
187
+ return amount === 0 && known.length === 0 ? 'USD' : undefined;
188
+ }
189
+ /** The decisions `plan create` is missing, in the MCP tool's order. Pure. */
190
+ export function createPlanDecisions(opts) {
191
+ const missing = [];
192
+ const trial = opts.trial ?? (opts.trialDays !== undefined ? true : undefined);
193
+ const paidOrUnknown = opts.amount === undefined || opts.amount > 0;
194
+ if (opts.amount === undefined)
195
+ missing.push(decisionField('create_plan', 'amount', '--amount <n>'));
196
+ if (opts.interval === undefined)
197
+ missing.push(decisionField('create_plan', 'interval', '--interval <interval>'));
198
+ if (paidOrUnknown && opts.currency === undefined)
199
+ missing.push(decisionField('create_plan', 'currency', '--currency <code>'));
200
+ if (paidOrUnknown && trial === undefined)
201
+ missing.push(decisionField('create_plan', 'trial', '--trial | --no-trial'));
202
+ if (trial === true && opts.trialDays === undefined)
203
+ missing.push(decisionField('create_plan', 'trialDays', '--trial-days <n>'));
204
+ return missing;
205
+ }
167
206
  /** Fetch a plan + its quotas/prices (read defensively — list() may omit them). */
168
207
  async function getPlan(key) {
169
208
  const plans = (await getManagementClient().plans.list());
@@ -204,12 +243,19 @@ export function registerPlanCommands(program) {
204
243
  .requiredOption('--name <name>', 'Plan name')
205
244
  .option('--amount <amount>', 'First price amount (>= 0). Use 0 for a free or contact-sales tier', parseFloat)
206
245
  .option('--interval <interval>', `Billing interval for the first price: ${VALID_INTERVALS.join(' | ')}`)
207
- .option('--currency <currency>', 'Currency for the first price (default USD)')
246
+ .option('--currency <currency>', 'Currency for the first price (ISO code). Required when --amount is above 0')
208
247
  .option('--description <desc>', 'Description')
209
- .option('--trial', 'Include trial period', false)
248
+ .option('--trial', 'The plan has a free trial (with --trial-days)')
249
+ .option('--no-trial', 'The plan has no free trial. One of --trial / --no-trial is required when --amount is above 0')
210
250
  .option('--trial-days <days>', 'Trial period in days', parseInt)
211
251
  .action(async (opts) => {
212
252
  try {
253
+ // TBP-713 — price, interval, currency and trial are the developer's
254
+ // decisions: stop and name them instead of defaulting.
255
+ const missing = createPlanDecisions(opts);
256
+ if (missing.length) {
257
+ throw new DecisionNeededError('bridge plan create', missing, opts.amount === undefined ? 'currency and trial are not needed if the price is 0.' : undefined);
258
+ }
213
259
  // TBP-617 — the server rejects an explicitly empty price list, so build
214
260
  // (and validate) the first price here rather than sending `prices: []`.
215
261
  const prices = buildCreatePlanPrices({
@@ -217,11 +263,12 @@ export function registerPlanCommands(program) {
217
263
  interval: opts.interval,
218
264
  currency: opts.currency,
219
265
  });
266
+ const trial = opts.trial ?? (opts.trialDays !== undefined ? true : false);
220
267
  outputSuccess(shapePlan(await getManagementClient().plans.create({
221
268
  key: opts.key,
222
269
  name: opts.name,
223
270
  description: opts.description,
224
- trial: opts.trial,
271
+ trial,
225
272
  trialDays: opts.trialDays,
226
273
  prices,
227
274
  })));
@@ -297,25 +344,48 @@ export function planApplyWrite(spec, plans) {
297
344
  const key = spec.key;
298
345
  const current = plans.find((p) => p.key === key);
299
346
  const isNew = !current;
300
- let prices = isNew ? [] : [...((current.prices ?? []))];
347
+ const before = isNew ? [] : [...((current.prices ?? []))];
348
+ let prices = [...before];
349
+ const planCurrency = planCurrencies(before).length === 1 ? planCurrencies(before)[0] : 'USD';
301
350
  for (const r of spec.removePrices ?? []) {
302
- const currency = (r.currency ?? 'USD').trim().toUpperCase();
351
+ const currency = (r.currency ?? planCurrency).trim().toUpperCase();
303
352
  const slot = (p) => p.currency === currency && p.recurrenceInterval === r.interval;
304
353
  if (!prices.some(slot)) {
305
354
  throw new PlanApplyError('PRICE_NOT_FOUND', `No ${currency} ${r.interval} price on plan "${key}". Nothing was changed.`);
306
355
  }
307
356
  prices = prices.filter((p) => !slot(p));
308
357
  }
309
- for (const p of spec.prices ?? []) {
310
- prices = upsertPrice(prices, buildPriceEntry({ amount: p.amount, interval: p.interval, currency: p.currency }));
358
+ // TBP-713 — the product decisions, gathered and reported all at once before
359
+ // anything is written; same fields, same order as the MCP apply_plan tool.
360
+ const missing = [];
361
+ const inputs = spec.prices ?? [];
362
+ const settled = [...before, ...inputs.filter((p) => p.currency !== undefined)];
363
+ inputs.forEach((p, i) => {
364
+ const currency = resolvePriceCurrency(p.currency, p.amount, settled);
365
+ if (!currency) {
366
+ missing.push(decisionField('apply_plan', 'prices.currency', `"prices[${i}].currency"`, `prices[${i}].currency`));
367
+ return;
368
+ }
369
+ prices = upsertPrice(prices, buildPriceEntry({ amount: p.amount, interval: p.interval, currency }));
370
+ });
371
+ if (prices.length === 0 && !isNew && missing.length === 0) {
372
+ throw new PlanApplyError('LAST_PRICE', `This would remove every price from plan "${key}": a plan needs at least one price. Nothing was changed.`);
373
+ }
374
+ if (isNew && spec.name === undefined)
375
+ missing.push(decisionField('apply_plan', 'name', '"name"'));
376
+ if (isNew && inputs.length === 0) {
377
+ missing.push(decisionField('apply_plan', 'prices.amount', '"prices[0].amount"', 'prices[0].amount'), decisionField('apply_plan', 'prices.interval', '"prices[0].interval"', 'prices[0].interval'), decisionField('apply_plan', 'prices.currency', '"prices[0].currency"', 'prices[0].currency'));
311
378
  }
312
- if (prices.length === 0) {
313
- throw isNew
314
- ? new PlanApplyError('PLAN_NEEDS_PRICE', `Plan "${key}" does not exist yet, and a new plan needs at least one price, e.g. "prices":[{"amount":29,"interval":"month"}].`)
315
- : new PlanApplyError('LAST_PRICE', `This would remove every price from plan "${key}": a plan needs at least one price. Nothing was changed.`);
379
+ const trial = spec.trial ?? (spec.trialDays !== undefined ? true : undefined);
380
+ const paid = inputs.length === 0 || inputs.some((p) => p.amount > 0);
381
+ if (isNew && paid && trial === undefined)
382
+ missing.push(decisionField('apply_plan', 'trial', '"trial"'));
383
+ const currentTrialDays = current?.trialDays;
384
+ if (trial === true && spec.trialDays === undefined && !currentTrialDays) {
385
+ missing.push(decisionField('apply_plan', 'trialDays', '"trialDays"'));
316
386
  }
317
- if (isNew && spec.name === undefined) {
318
- throw new PlanApplyError('PLAN_NEEDS_NAME', `Plan "${key}" does not exist yet, and a new plan needs a "name".`);
387
+ if (missing.length) {
388
+ throw new DecisionNeededError('bridge plan apply', missing, isNew ? `Plan "${key}" does not exist yet, so this call would create it.` : undefined);
319
389
  }
320
390
  let quotas = isNew ? [] : [...((current.quotas ?? []))];
321
391
  for (const metric of spec.removeQuotas ?? []) {
@@ -344,10 +414,12 @@ export function planApplyWrite(spec, plans) {
344
414
  quotas = upsertQuota(quotas, entry);
345
415
  }
346
416
  const fields = {};
347
- for (const f of ['name', 'description', 'trial', 'trialDays']) {
417
+ for (const f of ['name', 'description', 'trialDays']) {
348
418
  if (spec[f] !== undefined)
349
419
  fields[f] = spec[f];
350
420
  }
421
+ if (trial !== undefined)
422
+ fields.trial = trial;
351
423
  if (isNew) {
352
424
  return {
353
425
  created: true,
@@ -373,15 +445,20 @@ function registerPriceCommands(plan) {
373
445
  .argument('<key>', 'Plan key')
374
446
  .requiredOption('--amount <amount>', 'Price amount (>= 0)', parseFloat)
375
447
  .requiredOption('--interval <interval>', `Billing interval: ${VALID_INTERVALS.join(' | ')}`)
376
- .option('--currency <currency>', 'Currency (default USD)', 'USD')
448
+ .option('--currency <currency>', "Currency (ISO code). Omit only to reuse the plan's one existing price currency")
377
449
  .action(async (key, opts) => {
378
450
  try {
451
+ const { prices } = await getPlan(key);
452
+ // TBP-713 — never price in a currency the developer did not choose.
453
+ const currency = resolvePriceCurrency(opts.currency, opts.amount, prices);
454
+ if (!currency) {
455
+ throw new DecisionNeededError('bridge plan price set', [decisionField('set_plan_price', 'currency', '--currency <code>')], `Plan "${key}" has prices in ${planCurrencies(prices).join(', ') || 'no currency yet'}, so there is none to reuse.`);
456
+ }
379
457
  const entry = buildPriceEntry({
380
458
  amount: opts.amount,
381
459
  interval: opts.interval,
382
- currency: opts.currency,
460
+ currency,
383
461
  });
384
- const { prices } = await getPlan(key);
385
462
  const next = upsertPrice(prices, entry);
386
463
  outputSuccess(shapePlan(await getManagementClient().plans.update(key, { prices: next })));
387
464
  }