@nebulr-group/bridge-cli 0.6.6 → 1.0.0-alpha.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 (293) hide show
  1. package/README.md +98 -458
  2. package/dist/api/accounts.d.ts +105 -0
  3. package/dist/api/accounts.d.ts.map +1 -0
  4. package/dist/api/accounts.js +58 -0
  5. package/dist/api/accounts.js.map +1 -0
  6. package/dist/api/apps.d.ts +50 -0
  7. package/dist/api/apps.d.ts.map +1 -0
  8. package/dist/api/apps.js +62 -0
  9. package/dist/api/apps.js.map +1 -0
  10. package/dist/api/billing.d.ts +131 -0
  11. package/dist/api/billing.d.ts.map +1 -0
  12. package/dist/api/billing.js +42 -0
  13. package/dist/api/billing.js.map +1 -0
  14. package/dist/api/flags.d.ts +73 -0
  15. package/dist/api/flags.d.ts.map +1 -0
  16. package/dist/api/flags.js +108 -0
  17. package/dist/api/flags.js.map +1 -0
  18. package/dist/api/keys.d.ts +48 -0
  19. package/dist/api/keys.d.ts.map +1 -0
  20. package/dist/api/keys.js +87 -0
  21. package/dist/api/keys.js.map +1 -0
  22. package/dist/auth/browser-open.d.ts +21 -4
  23. package/dist/auth/browser-open.d.ts.map +1 -1
  24. package/dist/auth/browser-open.js +45 -65
  25. package/dist/auth/browser-open.js.map +1 -1
  26. package/dist/auth/lock.d.ts +8 -0
  27. package/dist/auth/lock.d.ts.map +1 -0
  28. package/dist/auth/lock.js +43 -0
  29. package/dist/auth/lock.js.map +1 -0
  30. package/dist/auth/loopback.d.ts +8 -12
  31. package/dist/auth/loopback.d.ts.map +1 -1
  32. package/dist/auth/loopback.js +40 -45
  33. package/dist/auth/loopback.js.map +1 -1
  34. package/dist/auth/session.d.ts +61 -0
  35. package/dist/auth/session.d.ts.map +1 -0
  36. package/dist/auth/session.js +142 -0
  37. package/dist/auth/session.js.map +1 -0
  38. package/dist/auth/sign-in.d.ts +67 -0
  39. package/dist/auth/sign-in.d.ts.map +1 -0
  40. package/dist/auth/sign-in.js +113 -0
  41. package/dist/auth/sign-in.js.map +1 -0
  42. package/dist/auth/store.d.ts +89 -0
  43. package/dist/auth/store.d.ts.map +1 -0
  44. package/dist/auth/store.js +214 -0
  45. package/dist/auth/store.js.map +1 -0
  46. package/dist/bin.js +0 -2
  47. package/dist/bin.js.map +1 -1
  48. package/dist/cli.d.ts +1 -2
  49. package/dist/cli.d.ts.map +1 -1
  50. package/dist/cli.js +13 -17
  51. package/dist/cli.js.map +1 -1
  52. package/dist/client.d.ts +31 -0
  53. package/dist/client.d.ts.map +1 -0
  54. package/dist/client.js +67 -0
  55. package/dist/client.js.map +1 -0
  56. package/dist/commands/accounts.command.d.ts +4 -0
  57. package/dist/commands/accounts.command.d.ts.map +1 -0
  58. package/dist/commands/accounts.command.js +166 -0
  59. package/dist/commands/accounts.command.js.map +1 -0
  60. package/dist/commands/app.command.d.ts +3 -2
  61. package/dist/commands/app.command.d.ts.map +1 -1
  62. package/dist/commands/app.command.js +132 -233
  63. package/dist/commands/app.command.js.map +1 -1
  64. package/dist/commands/auth.command.d.ts +2 -12
  65. package/dist/commands/auth.command.d.ts.map +1 -1
  66. package/dist/commands/auth.command.js +147 -20
  67. package/dist/commands/auth.command.js.map +1 -1
  68. package/dist/commands/billing.command.d.ts +4 -0
  69. package/dist/commands/billing.command.d.ts.map +1 -0
  70. package/dist/commands/billing.command.js +185 -0
  71. package/dist/commands/billing.command.js.map +1 -0
  72. package/dist/commands/check.command.d.ts +2 -1
  73. package/dist/commands/check.command.d.ts.map +1 -1
  74. package/dist/commands/check.command.js +11 -14
  75. package/dist/commands/check.command.js.map +1 -1
  76. package/dist/commands/context.d.ts +58 -0
  77. package/dist/commands/context.d.ts.map +1 -0
  78. package/dist/commands/context.js +78 -0
  79. package/dist/commands/context.js.map +1 -0
  80. package/dist/commands/flag.command.d.ts +3 -62
  81. package/dist/commands/flag.command.d.ts.map +1 -1
  82. package/dist/commands/flag.command.js +181 -864
  83. package/dist/commands/flag.command.js.map +1 -1
  84. package/dist/commands/key.command.d.ts +4 -0
  85. package/dist/commands/key.command.d.ts.map +1 -0
  86. package/dist/commands/key.command.js +44 -0
  87. package/dist/commands/key.command.js.map +1 -0
  88. package/dist/commands/plan.command.d.ts +3 -203
  89. package/dist/commands/plan.command.d.ts.map +1 -1
  90. package/dist/commands/plan.command.js +200 -759
  91. package/dist/commands/plan.command.js.map +1 -1
  92. package/dist/config.d.ts +19 -101
  93. package/dist/config.d.ts.map +1 -1
  94. package/dist/config.js +51 -364
  95. package/dist/config.js.map +1 -1
  96. package/dist/core/discovery.d.ts +27 -0
  97. package/dist/core/discovery.d.ts.map +1 -0
  98. package/dist/core/discovery.js +97 -0
  99. package/dist/core/discovery.js.map +1 -0
  100. package/dist/core/errors.d.ts +26 -0
  101. package/dist/core/errors.d.ts.map +1 -0
  102. package/dist/core/errors.js +33 -0
  103. package/dist/core/errors.js.map +1 -0
  104. package/dist/core/http.d.ts +23 -0
  105. package/dist/core/http.d.ts.map +1 -0
  106. package/dist/core/http.js +153 -0
  107. package/dist/core/http.js.map +1 -0
  108. package/dist/core/private-files.d.ts +6 -0
  109. package/dist/core/private-files.d.ts.map +1 -0
  110. package/dist/core/private-files.js +96 -0
  111. package/dist/core/private-files.js.map +1 -0
  112. package/dist/core/routes.d.ts +100 -0
  113. package/dist/core/routes.d.ts.map +1 -0
  114. package/dist/core/routes.js +99 -0
  115. package/dist/core/routes.js.map +1 -0
  116. package/dist/core/urls.d.ts +15 -0
  117. package/dist/core/urls.d.ts.map +1 -0
  118. package/dist/core/urls.js +55 -0
  119. package/dist/core/urls.js.map +1 -0
  120. package/dist/gate-rules.d.ts +1 -2
  121. package/dist/gate-rules.d.ts.map +1 -1
  122. package/dist/gate-rules.js +4 -5
  123. package/dist/gate-rules.js.map +1 -1
  124. package/dist/index.d.ts +24 -3
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +18 -3
  127. package/dist/index.js.map +1 -1
  128. package/dist/io.d.ts +21 -0
  129. package/dist/io.d.ts.map +1 -0
  130. package/dist/io.js +59 -0
  131. package/dist/io.js.map +1 -0
  132. package/dist/money.d.ts +42 -0
  133. package/dist/money.d.ts.map +1 -0
  134. package/dist/money.js +112 -0
  135. package/dist/money.js.map +1 -0
  136. package/dist/program.d.ts +5 -24
  137. package/dist/program.d.ts.map +1 -1
  138. package/dist/program.js +25 -113
  139. package/dist/program.js.map +1 -1
  140. package/package.json +7 -8
  141. package/dist/auth/api-client.d.ts +0 -50
  142. package/dist/auth/api-client.d.ts.map +0 -1
  143. package/dist/auth/api-client.js +0 -109
  144. package/dist/auth/api-client.js.map +0 -1
  145. package/dist/auth/relative-time.d.ts +0 -2
  146. package/dist/auth/relative-time.d.ts.map +0 -1
  147. package/dist/auth/relative-time.js +0 -27
  148. package/dist/auth/relative-time.js.map +0 -1
  149. package/dist/auth/scopes.d.ts +0 -30
  150. package/dist/auth/scopes.d.ts.map +0 -1
  151. package/dist/auth/scopes.js +0 -39
  152. package/dist/auth/scopes.js.map +0 -1
  153. package/dist/auth/workspace-client.d.ts +0 -70
  154. package/dist/auth/workspace-client.d.ts.map +0 -1
  155. package/dist/auth/workspace-client.js +0 -105
  156. package/dist/auth/workspace-client.js.map +0 -1
  157. package/dist/commands/auth/config.command.d.ts +0 -8
  158. package/dist/commands/auth/config.command.d.ts.map +0 -1
  159. package/dist/commands/auth/config.command.js +0 -60
  160. package/dist/commands/auth/config.command.js.map +0 -1
  161. package/dist/commands/auth/login.command.d.ts +0 -46
  162. package/dist/commands/auth/login.command.d.ts.map +0 -1
  163. package/dist/commands/auth/login.command.js +0 -166
  164. package/dist/commands/auth/login.command.js.map +0 -1
  165. package/dist/commands/auth/logout.command.d.ts +0 -21
  166. package/dist/commands/auth/logout.command.d.ts.map +0 -1
  167. package/dist/commands/auth/logout.command.js +0 -97
  168. package/dist/commands/auth/logout.command.js.map +0 -1
  169. package/dist/commands/auth/methods.command.d.ts +0 -68
  170. package/dist/commands/auth/methods.command.d.ts.map +0 -1
  171. package/dist/commands/auth/methods.command.js +0 -91
  172. package/dist/commands/auth/methods.command.js.map +0 -1
  173. package/dist/commands/auth/status.command.d.ts +0 -18
  174. package/dist/commands/auth/status.command.d.ts.map +0 -1
  175. package/dist/commands/auth/status.command.js +0 -104
  176. package/dist/commands/auth/status.command.js.map +0 -1
  177. package/dist/commands/auth/use.command.d.ts +0 -17
  178. package/dist/commands/auth/use.command.d.ts.map +0 -1
  179. package/dist/commands/auth/use.command.js +0 -47
  180. package/dist/commands/auth/use.command.js.map +0 -1
  181. package/dist/commands/branding.command.d.ts +0 -3
  182. package/dist/commands/branding.command.d.ts.map +0 -1
  183. package/dist/commands/branding.command.js +0 -42
  184. package/dist/commands/branding.command.js.map +0 -1
  185. package/dist/commands/event.command.d.ts +0 -3
  186. package/dist/commands/event.command.d.ts.map +0 -1
  187. package/dist/commands/event.command.js +0 -27
  188. package/dist/commands/event.command.js.map +0 -1
  189. package/dist/commands/flag-init.command.d.ts +0 -13
  190. package/dist/commands/flag-init.command.d.ts.map +0 -1
  191. package/dist/commands/flag-init.command.js +0 -463
  192. package/dist/commands/flag-init.command.js.map +0 -1
  193. package/dist/commands/guide.command.d.ts +0 -61
  194. package/dist/commands/guide.command.d.ts.map +0 -1
  195. package/dist/commands/guide.command.js +0 -655
  196. package/dist/commands/guide.command.js.map +0 -1
  197. package/dist/commands/info.command.d.ts +0 -3
  198. package/dist/commands/info.command.d.ts.map +0 -1
  199. package/dist/commands/info.command.js +0 -70
  200. package/dist/commands/info.command.js.map +0 -1
  201. package/dist/commands/integration.command.d.ts +0 -35
  202. package/dist/commands/integration.command.d.ts.map +0 -1
  203. package/dist/commands/integration.command.js +0 -290
  204. package/dist/commands/integration.command.js.map +0 -1
  205. package/dist/commands/journeys.d.ts +0 -43
  206. package/dist/commands/journeys.d.ts.map +0 -1
  207. package/dist/commands/journeys.js +0 -221
  208. package/dist/commands/journeys.js.map +0 -1
  209. package/dist/commands/ops.command.d.ts +0 -17
  210. package/dist/commands/ops.command.d.ts.map +0 -1
  211. package/dist/commands/ops.command.js +0 -129
  212. package/dist/commands/ops.command.js.map +0 -1
  213. package/dist/commands/privilege.command.d.ts +0 -16
  214. package/dist/commands/privilege.command.d.ts.map +0 -1
  215. package/dist/commands/privilege.command.js +0 -86
  216. package/dist/commands/privilege.command.js.map +0 -1
  217. package/dist/commands/role.command.d.ts +0 -3
  218. package/dist/commands/role.command.d.ts.map +0 -1
  219. package/dist/commands/role.command.js +0 -101
  220. package/dist/commands/role.command.js.map +0 -1
  221. package/dist/commands/runtime-dir.d.ts +0 -16
  222. package/dist/commands/runtime-dir.d.ts.map +0 -1
  223. package/dist/commands/runtime-dir.js +0 -18
  224. package/dist/commands/runtime-dir.js.map +0 -1
  225. package/dist/commands/setup.command.d.ts +0 -63
  226. package/dist/commands/setup.command.d.ts.map +0 -1
  227. package/dist/commands/setup.command.js +0 -148
  228. package/dist/commands/setup.command.js.map +0 -1
  229. package/dist/commands/stripe.command.d.ts +0 -29
  230. package/dist/commands/stripe.command.d.ts.map +0 -1
  231. package/dist/commands/stripe.command.js +0 -99
  232. package/dist/commands/stripe.command.js.map +0 -1
  233. package/dist/commands/tenant.command.d.ts +0 -3
  234. package/dist/commands/tenant.command.d.ts.map +0 -1
  235. package/dist/commands/tenant.command.js +0 -135
  236. package/dist/commands/tenant.command.js.map +0 -1
  237. package/dist/commands/token.command.d.ts +0 -3
  238. package/dist/commands/token.command.d.ts.map +0 -1
  239. package/dist/commands/token.command.js +0 -54
  240. package/dist/commands/token.command.js.map +0 -1
  241. package/dist/commands/user.command.d.ts +0 -3
  242. package/dist/commands/user.command.d.ts.map +0 -1
  243. package/dist/commands/user.command.js +0 -117
  244. package/dist/commands/user.command.js.map +0 -1
  245. package/dist/credentials.d.ts +0 -141
  246. package/dist/credentials.d.ts.map +0 -1
  247. package/dist/credentials.js +0 -348
  248. package/dist/credentials.js.map +0 -1
  249. package/dist/flag-coherence.d.ts +0 -42
  250. package/dist/flag-coherence.d.ts.map +0 -1
  251. package/dist/flag-coherence.js +0 -103
  252. package/dist/flag-coherence.js.map +0 -1
  253. package/dist/output.d.ts +0 -17
  254. package/dist/output.d.ts.map +0 -1
  255. package/dist/output.js +0 -107
  256. package/dist/output.js.map +0 -1
  257. package/dist/preview.d.ts +0 -9
  258. package/dist/preview.d.ts.map +0 -1
  259. package/dist/preview.js +0 -63
  260. package/dist/preview.js.map +0 -1
  261. package/dist/product-decisions.d.ts +0 -40
  262. package/dist/product-decisions.d.ts.map +0 -1
  263. package/dist/product-decisions.js +0 -52
  264. package/dist/product-decisions.js.map +0 -1
  265. package/dist/prompt-urls.d.ts +0 -31
  266. package/dist/prompt-urls.d.ts.map +0 -1
  267. package/dist/prompt-urls.js +0 -35
  268. package/dist/prompt-urls.js.map +0 -1
  269. package/dist/prompts/auth-master-integration-prompt.md +0 -255
  270. package/dist/prompts/billing/master.md +0 -332
  271. package/dist/prompts/decisions/feature-control.md +0 -131
  272. package/dist/prompts/decisions/going-live.md +0 -60
  273. package/dist/prompts/decisions/login.md +0 -71
  274. package/dist/prompts/decisions/look-and-feel.md +0 -68
  275. package/dist/prompts/decisions/payments.md +0 -97
  276. package/dist/prompts/decisions/roles.md +0 -78
  277. package/dist/prompts/decisions/teams.md +0 -61
  278. package/dist/prompts/fit-together.md +0 -97
  279. package/dist/prompts/flags/master.md +0 -220
  280. package/dist/prompts/guide-coverage.json +0 -17
  281. package/dist/prompts/integration-success.md +0 -106
  282. package/dist/prompts/mcp-tools.json +0 -90
  283. package/dist/prompts/mechanisms.md +0 -304
  284. package/dist/prompts/orientation.md +0 -42
  285. package/dist/prompts/product-decisions.json +0 -338
  286. package/dist/resolve.d.ts +0 -110
  287. package/dist/resolve.d.ts.map +0 -1
  288. package/dist/resolve.js +0 -260
  289. package/dist/resolve.js.map +0 -1
  290. package/dist/shape.d.ts +0 -25
  291. package/dist/shape.d.ts.map +0 -1
  292. package/dist/shape.js +0 -74
  293. package/dist/shape.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"app.command.js","sourceRoot":"","sources":["../../src/commands/app.command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.command.js","sourceRoot":"","sources":["../../src/commands/app.command.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,4 @@
1
- /**
2
- * `bridge auth …` — top-level wiring for the auth command tree.
3
- *
4
- * Subcommand modules live in `./auth/*.command.ts`:
5
- * - `login` (TBP-113): browser-based PKCE auth.
6
- * - `logout` (TBP-113): revoke + delete credentials.
7
- * - `status` (TBP-113): show current login state.
8
- * - `use` (TBP-628): switch the default app, offline.
9
- * - `config`/`mfa`/`password-policy`: pre-existing app auth-config commands.
10
- * - `methods` (TBP-547): list every login method, switch any one.
11
- */
12
1
  import type { Command } from 'commander';
13
- export declare function registerAuthCommands(program: Command): void;
2
+ import { type Deps } from './context.js';
3
+ export declare function registerAuthCommands(program: Command, deps: Deps): void;
14
4
  //# sourceMappingURL=auth.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.command.d.ts","sourceRoot":"","sources":["../../src/commands/auth.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkB3D"}
1
+ {"version":3,"file":"auth.command.d.ts","sourceRoot":"","sources":["../../src/commands/auth.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,OAAO,EAAwB,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AA8D/D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CA6GvE"}
@@ -1,22 +1,149 @@
1
- import { registerAuthLoginCommand } from './auth/login.command.js';
2
- import { registerAuthLogoutCommand } from './auth/logout.command.js';
3
- import { registerAuthStatusCommand } from './auth/status.command.js';
4
- import { registerAuthUseCommand } from './auth/use.command.js';
5
- import { registerAuthConfigCommands } from './auth/config.command.js';
6
- import { registerAuthMethodsCommands } from './auth/methods.command.js';
7
- export function registerAuthCommands(program) {
8
- const auth = program
9
- .command('auth')
10
- .description('Authenticate with Bridge and manage app auth configuration');
11
- // TBP-113 — interactive credentials.
12
- registerAuthLoginCommand(auth);
13
- registerAuthLogoutCommand(auth);
14
- registerAuthStatusCommand(auth);
15
- // TBP-628 — several apps side by side; switch without a browser round-trip.
16
- registerAuthUseCommand(auth);
17
- // Pre-existing — app-level auth configuration.
18
- registerAuthConfigCommands(auth);
19
- // TBP-547 — every login method in one place.
20
- registerAuthMethodsCommands(auth);
1
+ import { chooseSignInPage, signInWithBrowser, signInWithPassword } from '../auth/sign-in.js';
2
+ import { CliError } from '../core/errors.js';
3
+ import { action } from './context.js';
4
+ async function me(ctx) {
5
+ try {
6
+ return (await (await ctx.client()).person('me')).body;
7
+ }
8
+ catch {
9
+ return null;
10
+ }
11
+ }
12
+ function summary(ctx, session, who, settingsApp) {
13
+ return {
14
+ issuer: session.issuer,
15
+ workspace: session.workspace,
16
+ user: who === null ? null : { id: who.id ?? null, email: who.email ?? null, firstName: who.firstName ?? null, lastName: who.lastName ?? null },
17
+ app: settingsApp ?? null,
18
+ tokenStore: ctx.sessions().describeStore(),
19
+ };
20
+ }
21
+ /** Asks which workspace to enter, or says how to name one when nobody can be asked. */
22
+ function workspaceChooser(ctx) {
23
+ return async (choices) => {
24
+ if (!ctx.io.interactive) {
25
+ throw new CliError('invalid', 'You belong to several workspaces. Name one with --workspace <id>.', {
26
+ details: choices.map(({ id, name }) => ({ id, name })),
27
+ });
28
+ }
29
+ ctx.io.info('Which workspace?');
30
+ choices.forEach((each, i) => ctx.io.info(` ${String(i + 1)}. ${each.name} (${each.id})`));
31
+ const answer = (await ctx.io.ask('Number: ')).trim();
32
+ const picked = choices[Number(answer) - 1] ?? choices.find((each) => each.id === answer);
33
+ if (picked === undefined)
34
+ throw new CliError('invalid', `No workspace ${answer}.`);
35
+ return picked.id;
36
+ };
37
+ }
38
+ async function readPassword(ctx, fromStdin) {
39
+ if (fromStdin)
40
+ return (await ctx.io.readStdin()).replace(/\r?\n$/, '');
41
+ if (!ctx.io.interactive) {
42
+ throw new CliError('invalid', 'No terminal to ask for the password in.', { hint: 'Pipe it in with --password-stdin.' });
43
+ }
44
+ return ctx.io.askHidden('Password: ');
45
+ }
46
+ export function registerAuthCommands(program, deps) {
47
+ const auth = program.command('auth').description('Sign in to Bridge, sign out, and see who you are signed in as');
48
+ auth
49
+ .command('login')
50
+ .description('Sign in through Bridge\'s sign-in page in your browser, or with --password in the terminal')
51
+ .option('--password', 'Sign in with your email and password in the terminal (no browser needed)')
52
+ .option('--email <email>', 'Your email, with --password')
53
+ .option('--password-stdin', 'Read the password from stdin, with --password (for scripts and CI)')
54
+ .option('--workspace <id>', 'The workspace to sign in to, when you belong to several')
55
+ .option('--sign-in-page <url>', 'Bridge\'s sign-in page, when the issuer publishes none: only on the issuer\'s own address, or on localhost (env: BRIDGE_SIGN_IN_PAGE)')
56
+ .option('--no-browser', 'Print the sign-in address instead of opening the browser')
57
+ .action(action(deps, async (ctx, opts) => {
58
+ const issuer = await ctx.issuer();
59
+ const d = await ctx.discovery();
60
+ const sessions = ctx.sessions();
61
+ let session;
62
+ const issuerHost = new URL(d.issuer).host;
63
+ if (opts.password || opts.passwordStdin) {
64
+ // BRIDGE_ISSUER can set the issuer unseen: say where the password goes before asking for it.
65
+ ctx.io.info(`Signing in to ${issuerHost}.`);
66
+ const email = opts.email ?? (ctx.io.interactive ? (await ctx.io.ask('Email: ')).trim() : undefined);
67
+ if (!email)
68
+ throw new CliError('invalid', 'Give your email with --email.');
69
+ const password = await readPassword(ctx, opts.passwordStdin);
70
+ session = await signInWithPassword(deps.fetch, sessions, d, {
71
+ email,
72
+ password,
73
+ ...(opts.workspace === undefined ? {} : { workspace: opts.workspace }),
74
+ chooseWorkspace: workspaceChooser(ctx),
75
+ });
76
+ }
77
+ else {
78
+ const { page, ignored } = chooseSignInPage(d, opts.signInPage ?? ctx.env['BRIDGE_SIGN_IN_PAGE']);
79
+ if (ignored !== undefined)
80
+ ctx.io.info(`Using the sign-in page ${issuerHost} publishes, not ${ignored}.`);
81
+ ctx.io.info(`Signing in at ${new URL(page).host} for ${issuerHost}.`);
82
+ session = await signInWithBrowser(sessions, d, {
83
+ signInPage: page,
84
+ openBrowser: opts.browser === false ? async () => ({ ok: false }) : deps.openBrowser,
85
+ show: (message) => ctx.io.info(message),
86
+ ...(deps.signInTimeoutMs === undefined ? {} : { timeoutMs: deps.signInTimeoutMs }),
87
+ });
88
+ }
89
+ const saved = await ctx.config.update((settings) => {
90
+ settings.issuer = issuer;
91
+ });
92
+ const who = await me(ctx);
93
+ ctx.io.info(`Signed in${who?.email ? ` as ${who.email}` : ''}.`);
94
+ ctx.io.result(summary(ctx, session, who, saved.apps?.[issuer]));
95
+ }));
96
+ auth
97
+ .command('logout')
98
+ .description('Sign out: ends the session at Bridge and removes it from this machine')
99
+ .action(action(deps, async (ctx) => {
100
+ const issuer = await ctx.issuer();
101
+ const sessions = ctx.sessions();
102
+ let outcome;
103
+ try {
104
+ outcome = await sessions.signOut(await ctx.discovery());
105
+ }
106
+ catch (error) {
107
+ // Bridge cannot be reached: forget the session here all the same, and say it was not ended there.
108
+ const session = await sessions.read(issuer);
109
+ if (session === null)
110
+ throw error;
111
+ await sessions.forget(issuer);
112
+ outcome = { revoked: false, reason: error instanceof Error ? error.message : String(error) };
113
+ }
114
+ if (outcome.reason !== undefined && outcome.reason !== 'not signed in') {
115
+ ctx.io.info(`Removed the session from this machine, but Bridge could not be told: ${outcome.reason}`);
116
+ }
117
+ ctx.io.result({ issuer, signedOut: outcome.reason !== 'not signed in', revoked: outcome.revoked });
118
+ }));
119
+ auth
120
+ .command('whoami')
121
+ .alias('status')
122
+ .description('Who you are signed in as, in which workspace, and the app commands act on')
123
+ .action(action(deps, async (ctx) => {
124
+ const d = await ctx.discovery();
125
+ await ctx.sessions().current(d);
126
+ const who = (await (await ctx.client()).person('me')).body;
127
+ // Read after the call, which may have renewed the tokens.
128
+ const session = await ctx.sessions().current(d);
129
+ const settings = await ctx.settings();
130
+ ctx.io.result({ ...summary(ctx, session, who, settings.apps?.[d.issuer]), signedInAt: new Date(session.signedInAt).toISOString(), workspaces: who.workspaces ?? [] });
131
+ }));
132
+ auth
133
+ .command('workspace [id]')
134
+ .description('List your workspaces, or switch the session to one of them')
135
+ .action(action(deps, async (ctx, id) => {
136
+ const d = await ctx.discovery();
137
+ const sessions = ctx.sessions();
138
+ if (id === undefined) {
139
+ const session = await sessions.current(d);
140
+ const who = (await (await ctx.client()).person('me')).body;
141
+ ctx.io.result((who.workspaces ?? []).map((each) => ({ ...each, current: each.id === session.workspace })));
142
+ return;
143
+ }
144
+ const renewed = await sessions.renew(d, { workspace: id });
145
+ ctx.io.info(`Switched to workspace ${renewed.workspace ?? id}.`);
146
+ ctx.io.result({ issuer: d.issuer, workspace: renewed.workspace });
147
+ }));
21
148
  }
22
149
  //# sourceMappingURL=auth.command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.command.js","sourceRoot":"","sources":["../../src/commands/auth.command.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO;SACjB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,4DAA4D,CAAC,CAAC;IAE7E,qCAAqC;IACrC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC/B,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAEhC,4EAA4E;IAC5E,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAE7B,+CAA+C;IAC/C,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAEjC,6CAA6C;IAC7C,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"auth.command.js","sourceRoot":"","sources":["../../src/commands/auth.command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Command } from 'commander';
2
+ import { type Deps } from './context.js';
3
+ export declare function registerBillingCommands(program: Command, deps: Deps): void;
4
+ //# sourceMappingURL=billing.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.command.d.ts","sourceRoot":"","sources":["../../src/commands/billing.command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKzC,OAAO,EAAiC,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC;AA0CxE,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAkL1E"}
@@ -0,0 +1,185 @@
1
+ import { billingSettings, connection, metrics, products, taxes } from '../api/billing.js';
2
+ import { withAppKey } from '../api/keys.js';
3
+ import { CliError } from '../core/errors.js';
4
+ import { parseFeature, parsePrice } from '../money.js';
5
+ import { action, collect } from './context.js';
6
+ function parseAdds(text) {
7
+ const [metric, value] = text.split('=');
8
+ const add = Number(value);
9
+ if (!metric || !Number.isSafeInteger(add) || add < 1)
10
+ throw new CliError('invalid', `An add-on's limit is "<metric>=<n>", how much one unit adds: ${text}`);
11
+ return { metric, add };
12
+ }
13
+ function productFields(opts) {
14
+ const fields = {};
15
+ if (opts.name !== undefined)
16
+ fields.name = opts.name;
17
+ if (opts.description !== undefined)
18
+ fields.description = opts.description;
19
+ if (opts.price !== undefined)
20
+ fields.prices = opts.price.map(parsePrice);
21
+ if (opts.feature !== undefined)
22
+ fields.features = opts.feature.map(parseFeature);
23
+ if (opts.adds !== undefined)
24
+ fields.limits = opts.adds.map(parseAdds);
25
+ return fields;
26
+ }
27
+ const withProductOptions = (cmd) => cmd
28
+ .option('--description <text>', 'What it is')
29
+ .option('--price <price>', 'A price, "<amount> <CURRENCY>/<interval>", or "<amount> <CURRENCY>" for a one-time product; repeat for several', collect)
30
+ .option('--feature <feature>', 'A feature it gives, "<key>" or "<key>=<name>"; repeat for several', collect)
31
+ .option('--adds <limit>', 'How much one unit adds to a limit, "<metric>=<n>"; repeat for several', collect);
32
+ /** Reads a secret from stdin when asked to, else asks for it without echo. Never from an argument. */
33
+ async function secret(ctx, fromStdin, prompt) {
34
+ if (fromStdin)
35
+ return (await ctx.io.readStdin()).trim();
36
+ if (!ctx.io.interactive)
37
+ throw new CliError('invalid', 'No terminal to ask for the key in.', { hint: 'Pipe it in with --secret-key-stdin.' });
38
+ return (await ctx.io.askHidden(prompt)).trim();
39
+ }
40
+ export function registerBillingCommands(program, deps) {
41
+ // ── Products ───────────────────────────────────────────────────────────────
42
+ const product = program.command('product').description('Add-ons and one-time products, sold next to the plans');
43
+ product
44
+ .command('list')
45
+ .option('--archived', 'Include archived products')
46
+ .action(action(deps, async (ctx, opts) => {
47
+ const { c, appId } = await ctx.forApp();
48
+ ctx.io.result(await products.list(c, appId, opts.archived === true));
49
+ }));
50
+ product.command('get <key>').action(action(deps, async (ctx, key) => {
51
+ const { c, appId } = await ctx.forApp();
52
+ ctx.io.result(await products.get(c, appId, key));
53
+ }));
54
+ withProductOptions(product
55
+ .command('create <key>')
56
+ .description('Create a product')
57
+ .requiredOption('--name <name>', 'Its name')
58
+ .requiredOption('--kind <kind>', 'addon (added to a subscription) or one_time (bought alone)')).action(action(deps, async (ctx, key, opts) => {
59
+ if (opts.kind !== 'addon' && opts.kind !== 'one_time')
60
+ throw new CliError('invalid', '--kind is addon or one_time.');
61
+ const fields = productFields(opts);
62
+ const { c, appId } = await ctx.forApp();
63
+ ctx.io.result(await products.create(c, appId, { ...fields, key, name: opts.name, kind: opts.kind }));
64
+ }));
65
+ withProductOptions(product.command('update <key>').description('Change a product; lists given replace its lists').option('--name <name>', 'Its name')).action(action(deps, async (ctx, key, opts) => {
66
+ const fields = productFields(opts);
67
+ if (Object.keys(fields).length === 0)
68
+ throw new CliError('invalid', 'Nothing to change.');
69
+ const { c, appId } = await ctx.forApp();
70
+ ctx.io.result(await products.update(c, appId, key, fields));
71
+ }));
72
+ product
73
+ .command('archive <key>')
74
+ .option('--undo', 'Offer it again')
75
+ .action(action(deps, async (ctx, key, opts) => {
76
+ const { c, appId } = await ctx.forApp();
77
+ ctx.io.result(await products.archive(c, appId, key, opts.undo !== true));
78
+ }));
79
+ product.command('delete <key>').action(action(deps, async (ctx, key) => {
80
+ const { c, appId } = await ctx.forApp();
81
+ ctx.io.result(await products.remove(c, appId, key));
82
+ }));
83
+ // ── Metrics ────────────────────────────────────────────────────────────────
84
+ const metric = program.command('metric').description('What the app counts, for usage prices and limits (api.calls and seats are built in)');
85
+ metric.command('list').action(action(deps, async (ctx) => {
86
+ const { c, appId } = await ctx.forApp();
87
+ ctx.io.result(await metrics.list(c, appId));
88
+ }));
89
+ metric
90
+ .command('set <key>')
91
+ .description('Add or change a metric, such as "exports" or "storage.gb"')
92
+ .requiredOption('--kind <kind>', 'counter (adds up each period, such as exports) or gauge (a level, such as storage)')
93
+ .option('--name <name>', 'Its name, as people read it')
94
+ .action(action(deps, async (ctx, key, opts) => {
95
+ if (opts.kind !== 'counter' && opts.kind !== 'gauge')
96
+ throw new CliError('invalid', '--kind is counter or gauge.');
97
+ const { c, appId } = await ctx.forApp();
98
+ ctx.io.result(await metrics.set(c, appId, key, { kind: opts.kind, ...(opts.name === undefined ? {} : { name: opts.name }) }));
99
+ }));
100
+ metric.command('remove <key>').action(action(deps, async (ctx, key) => {
101
+ const { c, appId } = await ctx.forApp();
102
+ ctx.io.result(await metrics.remove(c, appId, key));
103
+ }));
104
+ // ── Taxes and settings ─────────────────────────────────────────────────────
105
+ const tax = program.command('tax').description('Tax rates per country');
106
+ tax.command('list').action(action(deps, async (ctx) => {
107
+ const { c, appId } = await ctx.forApp();
108
+ ctx.io.result(await taxes.list(c, appId));
109
+ }));
110
+ tax
111
+ .command('set <country>')
112
+ .description('Set the tax rate for a country by its two-letter code ("SE")')
113
+ .requiredOption('--name <name>', 'The tax\'s name, such as "VAT"')
114
+ .requiredOption('--rate <percent>', 'The rate in percent, such as 25 or 7.5')
115
+ .action(action(deps, async (ctx, country, opts) => {
116
+ const percent = Number(opts.rate);
117
+ const basisPoints = Math.round(percent * 100);
118
+ if (!Number.isFinite(percent) || percent < 0 || percent > 100 || Math.abs(basisPoints - percent * 100) > 1e-6) {
119
+ throw new CliError('invalid', '--rate is a percent from 0 to 100, with at most two decimals.');
120
+ }
121
+ const { c, appId } = await ctx.forApp();
122
+ ctx.io.result(await taxes.set(c, appId, country, { name: opts.name, basisPoints }));
123
+ }));
124
+ tax.command('remove <country>').action(action(deps, async (ctx, country) => {
125
+ const { c, appId } = await ctx.forApp();
126
+ ctx.io.result(await taxes.remove(c, appId, country));
127
+ }));
128
+ const billing = program.command('billing').description('The app\'s billing settings');
129
+ billing
130
+ .command('settings')
131
+ .description('Show the billing settings, or change them with the options')
132
+ .option('--currency <code>', 'The currency payers see first, such as EUR ("none" clears it)')
133
+ .option('--return-url <url>', 'Where payers return after checkout ("none" clears it)')
134
+ .option('--auto-redirect', 'Send payers to checkout without asking')
135
+ .option('--no-auto-redirect', 'Ask payers before sending them to checkout')
136
+ .action(action(deps, async (ctx, opts) => {
137
+ const fields = {};
138
+ if (opts.currency !== undefined)
139
+ fields.currency = opts.currency === 'none' ? null : opts.currency.toUpperCase();
140
+ if (opts.returnUrl !== undefined)
141
+ fields.returnUrl = opts.returnUrl === 'none' ? null : opts.returnUrl;
142
+ if (opts.autoRedirect !== undefined)
143
+ fields.paymentsAutoRedirect = opts.autoRedirect;
144
+ const { c, appId } = await ctx.forApp();
145
+ ctx.io.result(Object.keys(fields).length === 0 ? await billingSettings.get(c, appId) : await billingSettings.update(c, appId, fields));
146
+ }));
147
+ // ── Stripe ─────────────────────────────────────────────────────────────────
148
+ const stripe = program.command('stripe').description('Take payments through Stripe');
149
+ stripe
150
+ .command('status')
151
+ .description('Whether the app is connected to Stripe')
152
+ .action(action(deps, async (ctx) => {
153
+ const { c, appId } = await ctx.forApp();
154
+ ctx.io.result(await connection.get(c, appId));
155
+ }));
156
+ stripe
157
+ .command('connect')
158
+ .description('Connect Stripe in test mode with your secret key (sk_test_…). Asked for without echo, or read from stdin')
159
+ .option('--secret-key-stdin', 'Read the secret key from stdin')
160
+ .option('--publishable-key <key>', 'Your publishable key (pk_test_…)')
161
+ .option('--live', 'Allow a live key (sk_live_…)')
162
+ .action(action(deps, async (ctx, opts) => {
163
+ const secretKey = await secret(ctx, opts.secretKeyStdin, 'Stripe secret key (sk_test_…): ');
164
+ if (!/^(sk|rk)_(test|live)_\w+$/.test(secretKey))
165
+ throw new CliError('invalid', 'That is not a Stripe secret key (sk_test_… or rk_test_…).');
166
+ if (/_live_/.test(secretKey) && !opts.live) {
167
+ throw new CliError('invalid', 'That is a live key. Connect in test mode with a test key, or pass --live to take real payments.');
168
+ }
169
+ if (opts.publishableKey !== undefined && !/^pk_(test|live)_\w+$/.test(opts.publishableKey)) {
170
+ throw new CliError('invalid', 'That is not a Stripe publishable key (pk_test_…).');
171
+ }
172
+ const { c, appId } = await ctx.forApp();
173
+ const connected = await withAppKey(c, appId, [], ctx.env, (key) => connection.pasteKey(c, key, { secretKey, ...(opts.publishableKey === undefined ? {} : { publishableKey: opts.publishableKey }) }), { warn: (message) => ctx.io.info(message) });
174
+ ctx.io.result(connected);
175
+ }));
176
+ stripe
177
+ .command('disconnect')
178
+ .description('Stop taking payments through Stripe. Needs a recent sign-in')
179
+ .requiredOption('--yes', 'Confirm')
180
+ .action(action(deps, async (ctx) => {
181
+ const { c, appId } = await ctx.forApp();
182
+ ctx.io.result(await connection.remove(c, appId));
183
+ }));
184
+ }
185
+ //# sourceMappingURL=billing.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"billing.command.js","sourceRoot":"","sources":["../../src/commands/billing.command.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Command } from 'commander';
2
+ import type { Deps } from './context.js';
2
3
  import { type GateFinding } from '../gate-rules.js';
3
4
  export declare function projectSourceFiles(root: string): string[];
4
5
  export declare function checkGates(root: string): {
@@ -6,5 +7,5 @@ export declare function checkGates(root: string): {
6
7
  findings: GateFinding[];
7
8
  };
8
9
  export declare function formatGateReport(scanned: number, findings: GateFinding[]): string;
9
- export declare function registerCheckCommands(program: Command): void;
10
+ export declare function registerCheckCommands(program: Command, deps: Deps): void;
10
11
  //# sourceMappingURL=check.command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.command.d.ts","sourceRoot":"","sources":["../../src/commands/check.command.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBzD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,CAIrF;AAUD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAwBjF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqB5D"}
1
+ {"version":3,"file":"check.command.d.ts","sourceRoot":"","sources":["../../src/commands/check.command.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBzD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,CAIrF;AAUD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAwBjF;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAqBxE"}
@@ -1,16 +1,13 @@
1
- // TBP-705 — `bridge check gates`: the last step of every integration guide.
1
+ // `bridge check gates`: the last step of every integration.
2
2
  //
3
- // The owner's rule (2026-09-29) is that every gate in app code is a flag. An
4
- // agent in the owner's own test run still wrote `canManageTeam` from a list of
5
- // role names and wrapped analytics in `<Entitled>`, because nothing checked the
6
- // result. This command lists each direct role, privilege, plan or plan-feature
7
- // check in the project with the flag to use instead, and exits 1 while any is
8
- // left, so "done" is something the agent can verify rather than assert.
3
+ // Every gate in app code is a flag. This command lists each direct role,
4
+ // privilege, plan or plan-feature check in the project with the flag to use
5
+ // instead, and exits 1 while any is left, so "done" is something a coding
6
+ // agent can verify rather than assert.
9
7
  //
10
8
  // Local and read-only: it reads the developer's sources and calls nothing.
11
9
  import { readdirSync, readFileSync, statSync } from 'node:fs';
12
10
  import { join, relative, resolve } from 'node:path';
13
- import { outputError, outputPrompt, outputSuccess } from '../output.js';
14
11
  import { GATE_EXCEPTION_MARKER, SKIPPED_DIRS, codeGateFindings, isScannedSource, } from '../gate-rules.js';
15
12
  export function projectSourceFiles(root) {
16
13
  const out = [];
@@ -57,7 +54,7 @@ export function formatGateReport(scanned, findings) {
57
54
  '',
58
55
  'Every gate in app code is a flag: its rule says why (a privilege, a plan feature, a rollout).',
59
56
  'Replace each check below, then run this again until it is clean. The flag rules themselves are set with',
60
- '`bridge flag` / the MCP flag tools; read the app\'s roles first with `bridge role list`.',
57
+ '`bridge flag rule add`; read the app\'s roles first with `bridge role list`.',
61
58
  '',
62
59
  ];
63
60
  for (const f of findings) {
@@ -69,7 +66,7 @@ export function formatGateReport(scanned, findings) {
69
66
  lines.push('Not gates, and fine as they are: plan limits (`<QuotaGate>`, `useQuota`, `@RequireQuota`, `bridge.requireQuota`) and permission on one', `specific record ("only the author edits their post"). A direct check the developer explicitly asked for stays with a`, `\`// ${GATE_EXCEPTION_MARKER}: <reason>\` comment on the line or the line above.`);
70
67
  return lines.join('\n') + '\n';
71
68
  }
72
- export function registerCheckCommands(program) {
69
+ export function registerCheckCommands(program, deps) {
73
70
  const check = program.command('check').description('Check the project against Bridge\'s rules (local, read-only)');
74
71
  check
75
72
  .command('gates')
@@ -81,14 +78,14 @@ export function registerCheckCommands(program) {
81
78
  const root = resolve(opts.cwd);
82
79
  const { scanned, findings } = checkGates(root);
83
80
  if (opts.json)
84
- outputSuccess({ scanned, findings });
81
+ deps.io.result({ scanned, findings });
85
82
  else
86
- outputPrompt(formatGateReport(scanned, findings));
83
+ deps.io.text(formatGateReport(scanned, findings));
87
84
  if (findings.length > 0)
88
- process.exitCode = 1;
85
+ deps.io.setExitCode(1);
89
86
  }
90
87
  catch (error) {
91
- outputError(error);
88
+ deps.io.error(error);
92
89
  }
93
90
  });
94
91
  }