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

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 (50) hide show
  1. package/dist/commands/flag.command.d.ts.map +1 -1
  2. package/dist/commands/flag.command.js +19 -6
  3. package/dist/commands/flag.command.js.map +1 -1
  4. package/dist/commands/guide.command.d.ts +3 -0
  5. package/dist/commands/guide.command.d.ts.map +1 -1
  6. package/dist/commands/guide.command.js +57 -5
  7. package/dist/commands/guide.command.js.map +1 -1
  8. package/dist/commands/journeys.d.ts +2 -1
  9. package/dist/commands/journeys.d.ts.map +1 -1
  10. package/dist/commands/journeys.js +15 -1
  11. package/dist/commands/journeys.js.map +1 -1
  12. package/dist/commands/plan.command.d.ts +39 -0
  13. package/dist/commands/plan.command.d.ts.map +1 -1
  14. package/dist/commands/plan.command.js +134 -10
  15. package/dist/commands/plan.command.js.map +1 -1
  16. package/dist/commands/role.command.d.ts.map +1 -1
  17. package/dist/commands/role.command.js +2 -1
  18. package/dist/commands/role.command.js.map +1 -1
  19. package/dist/commands/tenant.command.d.ts.map +1 -1
  20. package/dist/commands/tenant.command.js +12 -5
  21. package/dist/commands/tenant.command.js.map +1 -1
  22. package/dist/commands/token.command.d.ts.map +1 -1
  23. package/dist/commands/token.command.js +6 -0
  24. package/dist/commands/token.command.js.map +1 -1
  25. package/dist/commands/user.command.d.ts.map +1 -1
  26. package/dist/commands/user.command.js +6 -0
  27. package/dist/commands/user.command.js.map +1 -1
  28. package/dist/flag-coherence.d.ts +42 -0
  29. package/dist/flag-coherence.d.ts.map +1 -0
  30. package/dist/flag-coherence.js +103 -0
  31. package/dist/flag-coherence.js.map +1 -0
  32. package/dist/preview.d.ts +9 -0
  33. package/dist/preview.d.ts.map +1 -0
  34. package/dist/preview.js +63 -0
  35. package/dist/preview.js.map +1 -0
  36. package/dist/prompts/billing/master.md +4 -1
  37. package/dist/prompts/decisions/feature-control.md +105 -0
  38. package/dist/prompts/decisions/going-live.md +59 -0
  39. package/dist/prompts/decisions/login.md +68 -0
  40. package/dist/prompts/decisions/look-and-feel.md +62 -0
  41. package/dist/prompts/decisions/payments.md +81 -0
  42. package/dist/prompts/decisions/roles.md +72 -0
  43. package/dist/prompts/decisions/teams.md +56 -0
  44. package/dist/prompts/mcp-tools.json +77 -0
  45. package/dist/prompts/orientation.md +40 -0
  46. package/dist/shape.d.ts +25 -0
  47. package/dist/shape.d.ts.map +1 -0
  48. package/dist/shape.js +74 -0
  49. package/dist/shape.js.map +1 -0
  50. package/package.json +1 -1
@@ -0,0 +1,72 @@
1
+ # Roles and permissions — decision guide
2
+
3
+ Who may do what inside a customer's workspace. A **role** (Owner, Admin, Editor…) is a named bundle of **privileges** (`USER_WRITE`, `INVOICE_APPROVE`…). Every signed-in person has one role per workspace, and their token carries its role key and privileges, so the backend can check them on every request.
4
+
5
+ > Other decision guides: `bridge guide decision <name>` (MCP: resource `bridge://guides/decisions/<name>`). How the pieces work underneath: `bridge guide mechanisms`.
6
+
7
+ ## Which tool answers which question
8
+
9
+ Three different questions, three different tools. Keep them apart.
10
+
11
+ | The question | Answered by | Guide |
12
+ |---|---|---|
13
+ | Who, inside a workspace, may do this? | a **role** and its privileges | this one |
14
+ | Is this feature on for them at all? | a **flag** | feature-control |
15
+ | How much do they get (projects, seats, exports)? | the **plan** | payments |
16
+
17
+ A role never stands in for a plan ("Pro users are Admins") and a plan never stands in for a role.
18
+
19
+ ## Start from what is there
20
+
21
+ | Read | MCP | CLI |
22
+ |---|---|---|
23
+ | Roles, their privileges, and which is the default | `list_roles` | `bridge role list` |
24
+ | One role in full | `get_role` | — |
25
+ | Privileges that exist | `list_roles` (the `privileges` map) | `bridge privilege list` |
26
+
27
+ A new app has two roles: **Owner** (`OWNER`, everything, including permanent deletes) and **Admin** (`ADMIN`, manage people, read workspace settings). **Owner is the default role**, which means anyone invited without a role becomes an Owner.
28
+
29
+ ## Ask the developer
30
+
31
+ Product questions. Ask, wait, never guess.
32
+
33
+ 1. **What kinds of people use one customer's workspace?** For example: the person who pays, people who manage the team, people who do the work, people who only look.
34
+ 2. **For each kind, what may they do that others may not?** Ask in the app's own verbs: approve an invoice, delete a project, invite a colleague, change billing.
35
+ 3. **Which role should a newly invited person get?** Owner is rarely the right answer.
36
+ 4. **Who may manage the subscription and billing?**
37
+
38
+ ## Decide yourself
39
+
40
+ - **Name privileges after actions, in capitals: `PROJECT_DELETE`, `INVOICE_APPROVE`.** Reason: they read like the existing ones (`USER_READ`, `TENANT_WRITE`) and say exactly what they allow.
41
+ - **Role keys in capitals too: `EDITOR`, `VIEWER`.** Reason: the token carries the key exactly as written, and a flag rule on `user.role` compares it case for case.
42
+ - **In code, check a privilege, not a role name.** Reason: roles get reshaped as the product grows; the privilege on a handler stays true.
43
+ - **Keep Owner as the one role with everything.** Never strip it: it is the only role that can delete, and every workspace needs someone who can.
44
+ - **Make the lowest sensible role the default** by creating it with the default setting on. Reason: a forgotten role on an invitation then gives too little, not too much.
45
+ - **When changing a role's privileges, send the full list.** Reason: the update replaces the list, and anything left out is revoked.
46
+ - **Enforce on the backend; hide buttons in the frontend only as a courtesy.** Reason: anyone can call the API directly.
47
+
48
+ ## Do it
49
+
50
+ | Step | MCP | CLI |
51
+ |---|---|---|
52
+ | Add a privilege | — | `bridge privilege create --key PROJECT_DELETE --description …` |
53
+ | Create a role | `create_role` | `bridge role create --key EDITOR --name Editor --privileges PROJECT_READ,PROJECT_WRITE` |
54
+ | Create it as the new default | `create_role` (`isDefault: true`) | `bridge role create --key MEMBER --name Member --privileges … --is-default` |
55
+ | Change a role's privileges | `update_role` (full list) | `bridge role update --key EDITOR --privileges …` (full list) |
56
+ | Give a person a role | `update_user` | `bridge user update --email … --role EDITOR --tenant-id …` |
57
+ | Code for the framework | `get_integration_guide` (topic `team`) | `bridge guide nestjs` (backend checks), `bridge guide svelte team` |
58
+
59
+ On the NestJS backend the check is a decorator on the handler: `@RequirePrivilege('PROJECT_DELETE')`, or `@RequireRole('ADMIN')` when the developer really means a role.
60
+
61
+ Setting the default on one role clears it from the previous default.
62
+
63
+ ## Prove it
64
+
65
+ 1. `list_roles` / `bridge role list` shows each role with exactly the privileges agreed, and the default where the developer wanted it.
66
+ 2. Call a protected backend route as a user whose role lacks the privilege: it must answer 403. Then with one who has it: it must succeed.
67
+
68
+ ## Where this connects
69
+
70
+ - **Teams:** the role an invited person gets.
71
+ - **Feature control:** a flag can target `user.role`, but "may this person do it" is still a privilege check on the backend.
72
+ - **Payments:** who may change the plan.
@@ -0,0 +1,56 @@
1
+ # Teams and workspaces — decision guide
2
+
3
+ How customers are grouped in the developer's app. In Bridge every signed-in person belongs to a **workspace** (the API and the CLI call it a tenant). A workspace is one customer: it holds the people, their roles, and the plan the customer pays for.
4
+
5
+ > Other decision guides: `bridge guide decision <name>` (MCP: resource `bridge://guides/decisions/<name>`). How the pieces work underneath: `bridge guide mechanisms`.
6
+
7
+ ## Start from what is there
8
+
9
+ | Read | MCP | CLI |
10
+ |---|---|---|
11
+ | Whether people can create their own workspace (`tenantSelfSignup`) | `get_app` | `bridge app get` |
12
+ | Existing workspaces | `list_tenants` | `bridge tenant list` |
13
+ | The people in one workspace | `list_users` | `bridge user list --tenant-id <id>` |
14
+ | Roles an invited person can get | `list_roles` | `bridge role list` |
15
+
16
+ ## Ask the developer
17
+
18
+ Product questions. Ask, wait, never guess.
19
+
20
+ 1. **Is the app for single people or for teams?** With teams, a customer invites colleagues into a shared workspace. For single people, each person simply has a workspace of their own and never sees the word.
21
+ 2. **How does someone get in the first time?** Either they sign up and get a new workspace of their own, or they can only join by invitation from someone already inside.
22
+ 3. **When someone is invited, which role should they get?** See the **roles** guide: on a new app the default role is Owner, so an invitee without a role becomes an Owner.
23
+ 4. **Does the number of people per workspace depend on the plan?** ("1 user on Free, 10 on Pro.") If yes, that is a seat limit: see the **payments** guide.
24
+ 5. **Can one person belong to several workspaces?** Bridge supports it and shows a workspace picker at sign-in; the question is whether the developer wants to offer it in their product.
25
+
26
+ ## Decide yourself
27
+
28
+ - **Self-signup on for a product people try on their own; off for invitation-only products.** Take it from the answer to question 2 and set `tenantSelfSignup` to match. Reason: with it off, a stranger who signs up has nowhere to land.
29
+ - **Use Bridge's team panel for inviting and managing people** (`TeamManagementPanel` in SvelteKit) rather than a page of your own. Reason: it already handles invitations, role changes and removal against the right permissions.
30
+ - **Seats are the built-in `users` limit.** Reason: Bridge counts workspace members itself, so there is nothing for the app to count or report.
31
+ - **Never create workspaces from the app's own code for sign-ups.** Reason: Bridge creates one at signup when self-signup is on; creating them elsewhere makes duplicates.
32
+ - **Create workspaces by hand only for setup and support** (an existing customer you are migrating, or a demo).
33
+
34
+ ## Do it
35
+
36
+ | Step | MCP | CLI |
37
+ |---|---|---|
38
+ | Allow or stop self-signup | `update_app` (`tenantSelfSignup`) | `bridge app update --tenant-self-signup true` |
39
+ | Create a workspace by hand | `create_tenant` | `bridge tenant create --name … --owner-email …` |
40
+ | Invite someone into a workspace | `invite_user` | `bridge user invite --email … --role … --tenant-id …` |
41
+ | Change someone's role | `update_user` | `bridge user update --email … --role … --tenant-id …` |
42
+ | Limit seats per plan | `set_plan_quota` (metric `users`, kind `gauge`) | `bridge plan quota set pro --metric users --limit 10 --policy hard --kind gauge` |
43
+ | Code for the framework | `get_integration_guide` (topic `team`) | `bridge guide svelte team` |
44
+
45
+ Pass a role key on every invitation you make on the developer's behalf; leaving it out gives the app's default role.
46
+
47
+ ## Prove it
48
+
49
+ 1. Create a test user (`create_test_user` / `bridge test-user create`) and sign in (`verify_login` / `bridge test-user verify`): the response names the workspace.
50
+ 2. Invite a second address into that workspace and check it appears in `list_users` / `bridge user list` with the role you meant.
51
+
52
+ ## Where this connects
53
+
54
+ - **Roles:** what each person in a workspace may do.
55
+ - **Payments:** a plan belongs to the workspace, not to a person; seats are a plan limit.
56
+ - **Login:** whether sign-up is open at all.
@@ -0,0 +1,77 @@
1
+ {
2
+ "_comment": [
3
+ "The names of the Bridge MCP server's tools, and nothing else. The bundled guides are tested against this list: a guide that names a tool not in it fails src/__tests__/guide-decisions.test.ts.",
4
+ "Source: the `bridgeTools` registry in bridge-api, microservices/account/nebulr-api/mcp/tools/register.ts.",
5
+ "Regenerate from the thebridge-platform root when a tool is added, renamed or removed: grep -hoE \"^ {2,4}name: '[a-z]+(_[a-z]+)+',\" bridge-api/microservices/account/nebulr-api/mcp/tools/*.ts | sed -E \"s/.*'(.*)'.*/\\1/\" | sort -u",
6
+ "The count must equal the number of entries in `bridgeTools` (66 at the source below). The twin of this check in bridge-api reads the live registry instead of this copy."
7
+ ],
8
+ "source": "bridge-api feature/mcp-journey 689899e",
9
+ "tools": [
10
+ "add_redirect_uri",
11
+ "apply_plan",
12
+ "clear_flag_schedule",
13
+ "connect_stripe",
14
+ "create_api_token",
15
+ "create_app",
16
+ "create_feature_flag",
17
+ "create_plan",
18
+ "create_role",
19
+ "create_tenant",
20
+ "create_test_user",
21
+ "debug_auth_issue",
22
+ "delete_feature_flag",
23
+ "delete_tenant",
24
+ "diagnose_integration",
25
+ "evaluate_feature_flag",
26
+ "export_feature_flags",
27
+ "get_app",
28
+ "get_auth_config",
29
+ "get_branding",
30
+ "get_environment_info",
31
+ "get_flag",
32
+ "get_integration_guide",
33
+ "get_plan",
34
+ "get_role",
35
+ "get_server_info",
36
+ "get_setup_status",
37
+ "get_stripe_status",
38
+ "get_tenant",
39
+ "get_user",
40
+ "import_feature_flags",
41
+ "invite_user",
42
+ "list_api_tokens",
43
+ "list_apps",
44
+ "list_events",
45
+ "list_feature_flags",
46
+ "list_plan_quotas",
47
+ "list_plans",
48
+ "list_redirect_uris",
49
+ "list_roles",
50
+ "list_tenants",
51
+ "list_users",
52
+ "remove_plan_price",
53
+ "remove_plan_quota",
54
+ "remove_redirect_uri",
55
+ "remove_user",
56
+ "revoke_api_token",
57
+ "scaffold_flags_integration",
58
+ "set_flag_schedule",
59
+ "set_plan_price",
60
+ "set_plan_quota",
61
+ "setup_communication",
62
+ "setup_payments",
63
+ "setup_sso",
64
+ "toggle_feature_flag",
65
+ "update_app",
66
+ "update_auth_methods",
67
+ "update_branding",
68
+ "update_feature_flag",
69
+ "update_password_policy",
70
+ "update_plan",
71
+ "update_role",
72
+ "update_tenant",
73
+ "update_user",
74
+ "use_app",
75
+ "verify_login"
76
+ ]
77
+ }
@@ -0,0 +1,40 @@
1
+ # What Bridge does
2
+
3
+ Relay this to the developer as it stands, then add one sentence about what their app has today (read it first: `get_app` and `get_setup_status`, or `bridge app get` and `bridge setup status`).
4
+
5
+ ---
6
+
7
+ Bridge runs everything between signup and invoice for your app, so you don't build it yourself.
8
+
9
+ - **Login.** People sign up and sign in with a password, a magic link, a passkey, Google, GitHub and other providers, or their company's SSO, with optional two-factor. Bridge serves the pages; your app adds about fifteen lines. *Want to choose how people sign in?*
10
+ - **Teams and workspaces.** Each customer gets a workspace and can invite teammates into it. You decide whether people create their own workspace or join by invitation. *Is your app for single users or for teams?*
11
+ - **Roles and permissions.** Inside a workspace, roles decide who may do what, and your backend checks them on every request. *Who are the different kinds of people in a customer's workspace?*
12
+ - **Payments and plans.** Plans with prices, trials and limits ("3 projects on Free, 50 on Pro"), checkout through your own Stripe account, and an upgrade prompt when someone hits a limit. *Want to set up a free tier and a paid plan?*
13
+ - **Feature control.** Turn any feature on or off for everyone, a percentage of users, one plan or one customer, without a deploy. *Is there a feature you want to roll out carefully or sell on a higher plan?*
14
+ - **Look and feel.** Sign-in and subscription pages in your colours and fonts, inside your own layout, and emails sent in your app's name. *Want the sign-in pages to look like the rest of your app?*
15
+ - **Going live.** A readiness checklist that says exactly what still points at localhost or test keys, and a test sign-in that proves login works end to end. *Ready to check what stands between you and real users?*
16
+
17
+ ---
18
+
19
+ ## Where to go next
20
+
21
+ Each area has a decision guide: the questions to ask the developer, and the defaults to apply without asking.
22
+
23
+ | Area | Decision guide | Journey |
24
+ |---|---|---|
25
+ | Login | `bridge guide decision login` | `bridge guide add-login` |
26
+ | Teams and workspaces | `bridge guide decision teams` | `bridge guide add-teams` |
27
+ | Roles and permissions | `bridge guide decision roles` | — |
28
+ | Payments and plans | `bridge guide decision payments` | `bridge guide add-paid-plan` |
29
+ | Feature control | `bridge guide decision feature-control` | `bridge guide add-feature-flag` |
30
+ | Look and feel | `bridge guide decision look-and-feel` | — |
31
+ | Going live | `bridge guide decision going-live` | `bridge guide go-live` |
32
+
33
+ In an MCP client the same guides are the resources `bridge://guides/decisions/<area>` (areas: `login`, `teams`, `roles`, `payments`, `feature-control`, `look-and-feel`, `going-live`), and the journeys are the server's prompts of the same names.
34
+
35
+ How limits, upgrade prompts and page customisation actually work, for every area: `bridge guide mechanisms`.
36
+
37
+ Two rules hold in every guide:
38
+
39
+ 1. **Product questions go to the developer.** What to charge, who may do what, what a plan includes, what users see: ask, and wait for the answer. Never guess them.
40
+ 2. **Mechanics you decide.** Where a guide gives a default, apply it and say why in one line. The developer can overrule it.
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Tenant metadata keys the platform writes for its own conversion-pixel
3
+ * bookkeeping (tracking.service.ts, tenant.service.ts). Never app data.
4
+ */
5
+ export declare const INTERNAL_TENANT_METADATA_KEYS: string[];
6
+ /** A tenant without the platform's pixel bookkeeping in `metadata`. */
7
+ export declare function shapeTenant<T>(tenant: T): T;
8
+ /**
9
+ * A plan without the payment provider's ids: each quota's `providerRefs`
10
+ * (Stripe price and meter ids) is dropped. Prices and quotas otherwise stay
11
+ * whole — `create_plan` and friends still return the full plan.
12
+ */
13
+ export declare function shapePlan<T>(plan: T): T;
14
+ /**
15
+ * Roles with each privilege named once. Every role used to carry the full
16
+ * privilege object (id, key, description) for every privilege it grants, so a
17
+ * five-role app repeated the same descriptions five times. Now each role lists
18
+ * privilege KEYS — what code and create_role/update_role take — and the
19
+ * descriptions appear once, in `privileges`.
20
+ */
21
+ export declare function shapeRoleList(roles: unknown[]): {
22
+ roles: Array<Record<string, unknown>>;
23
+ privileges: Record<string, string>;
24
+ };
25
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,eAAO,MAAM,6BAA6B,UAA+C,CAAC;AAE1F,uEAAuE;AACvE,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAU3C;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAYvC;AAOD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG;IAC/C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAkBA"}
package/dist/shape.js ADDED
@@ -0,0 +1,74 @@
1
+ /*
2
+ * TBP-709 (D) — what `bridge … list` shows, minus the platform's internals.
3
+ *
4
+ * The REST DTOs these come from also serve the dashboards and the SDKs, so
5
+ * they are left alone; the trimming happens at the presentation layer.
6
+ * Port of bridge-api's MCP `shape.ts` (same functions, same tests) so the
7
+ * CLI lists and the MCP lists cannot drift. Every function is pure and leaves
8
+ * its input untouched.
9
+ */
10
+ /**
11
+ * Tenant metadata keys the platform writes for its own conversion-pixel
12
+ * bookkeeping (tracking.service.ts, tenant.service.ts). Never app data.
13
+ */
14
+ export const INTERNAL_TENANT_METADATA_KEYS = ['pendingPixelEvents', 'conversionTracking'];
15
+ /** A tenant without the platform's pixel bookkeeping in `metadata`. */
16
+ export function shapeTenant(tenant) {
17
+ if (!tenant || typeof tenant !== 'object')
18
+ return tenant;
19
+ const metadata = tenant.metadata;
20
+ if (!metadata || typeof metadata !== 'object')
21
+ return tenant;
22
+ const kept = Object.fromEntries(Object.entries(metadata).filter(([k]) => !INTERNAL_TENANT_METADATA_KEYS.includes(k)));
23
+ return { ...tenant, metadata: kept };
24
+ }
25
+ /**
26
+ * A plan without the payment provider's ids: each quota's `providerRefs`
27
+ * (Stripe price and meter ids) is dropped. Prices and quotas otherwise stay
28
+ * whole — `create_plan` and friends still return the full plan.
29
+ */
30
+ export function shapePlan(plan) {
31
+ if (!plan || typeof plan !== 'object')
32
+ return plan;
33
+ const quotas = plan.quotas;
34
+ if (!Array.isArray(quotas))
35
+ return plan;
36
+ return {
37
+ ...plan,
38
+ quotas: quotas.map((q) => {
39
+ if (!q || typeof q !== 'object')
40
+ return q;
41
+ const { providerRefs: _drop, ...rest } = q;
42
+ return rest;
43
+ }),
44
+ };
45
+ }
46
+ /**
47
+ * Roles with each privilege named once. Every role used to carry the full
48
+ * privilege object (id, key, description) for every privilege it grants, so a
49
+ * five-role app repeated the same descriptions five times. Now each role lists
50
+ * privilege KEYS — what code and create_role/update_role take — and the
51
+ * descriptions appear once, in `privileges`.
52
+ */
53
+ export function shapeRoleList(roles) {
54
+ const privileges = {};
55
+ const shaped = (roles ?? []).map((role) => {
56
+ const r = (role ?? {});
57
+ const granted = Array.isArray(r.privileges) ? r.privileges : [];
58
+ const keys = [];
59
+ for (const p of granted) {
60
+ if (typeof p === 'string') {
61
+ keys.push(p);
62
+ continue;
63
+ }
64
+ if (!p || typeof p.key !== 'string')
65
+ continue;
66
+ keys.push(p.key);
67
+ if (!(p.key in privileges))
68
+ privileges[p.key] = p.description ?? '';
69
+ }
70
+ return { ...r, privileges: keys };
71
+ });
72
+ return { roles: shaped, privileges };
73
+ }
74
+ //# sourceMappingURL=shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.js","sourceRoot":"","sources":["../src/shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;AAE1F,uEAAuE;AACvE,MAAM,UAAU,WAAW,CAAI,MAAS;IACtC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IACzD,MAAM,QAAQ,GAAI,MAAiC,CAAC,QAAQ,CAAC;IAC7D,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAC7B,MAAM,CAAC,OAAO,CAAC,QAAmC,CAAC,CAAC,MAAM,CACxD,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC,CAAC,CACpD,CACF,CAAC;IACF,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAO,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAI,IAAO;IAClC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,MAAM,GAAI,IAA6B,CAAC,MAAM,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACvB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,CAA4B,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;KACE,CAAC;AACT,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,KAAgB;IAI5C,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;QAClD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,UAA4C,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACb,SAAS;YACX,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;gBAAE,SAAS;YAC9C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC;gBAAE,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC;QACtE,CAAC;QACD,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nebulr-group/bridge-cli",
3
- "version": "0.6.0-beta.3",
3
+ "version": "0.6.0-beta.4",
4
4
  "description": "Bridge platform CLI for AI coding agents and developers",
5
5
  "author": "Nebulr Group",
6
6
  "license": "MIT",