@beacon-build/sdk 1.42.0 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @beacon-build/sdk Changelog
2
2
 
3
+ ## 1.43.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 55e21a8: F430: real recursive Hub-Spoke cascade for nested organizations — Organization.parentId cycle-prevention (app-level + DB trigger backstop), Organization.isolated subtree seal, a real ancestor-chain resolver wired into getVisibleProjects, N-level org-ancestor config cascade (SettingsService), ancestor/descendant hierarchy API + CRUD parentId/isolated, and a tree-view management UI.
8
+
9
+ ### Patch Changes
10
+
11
+ - b1abf24: F437: retire the OPS_API_KEY god-key. honoAuthGuard's static-key synthetic-principal bypass is deleted; honoOpsAuthGuard gains a JWT-with-system-role branch (Argus agent-JWT) ahead of its dual-accept static-key safety net, with allowStaticKey permanently true only on the /v1/agent-token mint boundary. All automation consumers (mcp/agent, Janitor, mcp-core remote-ops clients, project-db/project-logs/beacon-ops MCP adapters, the IDE sidecar) now mint-and-cache an Argus agent-JWT instead of sending the raw OPS_API_KEY as a bearer. honoRequireRole grants a system-role actor the same bypass as vendor/admin, matching ADR-030.
12
+ - e7b92b0: F148: add computePermissions/usePermissions Scoped Permissions API for SDK consumers (root + /react subpath), mirroring apps/platform's F121 usePermissions hook.
13
+ - Updated dependencies [8ce9b76]
14
+ - Updated dependencies [f34a76a]
15
+ - Updated dependencies [fd24b45]
16
+ - Updated dependencies [55e21a8]
17
+ - Updated dependencies [73a5ac2]
18
+ - @beacon-build/core@1.43.0
19
+
3
20
  ## 1.42.0
4
21
 
5
22
  ### Patch Changes
@@ -3,9 +3,15 @@ import type { HttpClient } from '../../transport/http-client.js';
3
3
  export interface CreateOrganizationInput {
4
4
  slug: string;
5
5
  name: string;
6
+ /** F430/AC-7: optional parent org — omitted/null creates a root org. */
7
+ parentId?: string | null;
6
8
  }
7
9
  export interface UpdateOrganizationInput {
8
10
  name?: string;
11
+ /** F430/AC-7: reparent (null clears to root). */
12
+ parentId?: string | null;
13
+ /** F430/AC-3/AC-7: toggle the subtree seal. */
14
+ isolated?: boolean;
9
15
  }
10
16
  export interface AddMemberInput {
11
17
  userId: string;
@@ -21,5 +27,7 @@ export declare class AdminOrganizationsClient {
21
27
  delete(slug: string): Promise<void>;
22
28
  addMember(slug: string, input: AddMemberInput): Promise<OrganizationMemberDto>;
23
29
  removeMember(slug: string, userId: string): Promise<void>;
30
+ getAncestors(id: string): Promise<OrganizationDto[]>;
31
+ getDescendants(id: string): Promise<OrganizationDto[]>;
24
32
  }
25
33
  //# sourceMappingURL=organizations.client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"organizations.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,EACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,wBAAwB;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,IAAI,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAI3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IAU7D,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIhE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI9E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAO9E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKlE"}
1
+ {"version":3,"file":"organizations.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,eAAe,EACf,wBAAwB,EACxB,0BAA0B,EAC1B,qBAAqB,EACxB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,wBAAwB;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,IAAI,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAI3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC;IAU7D,MAAM,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIhE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAAC,eAAe,CAAC;IAI9E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAO9E,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAMpD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAK/D"}
@@ -29,5 +29,12 @@ export class AdminOrganizationsClient {
29
29
  async removeMember(slug, userId) {
30
30
  await this.http.delete(`/organizations/${encodeURIComponent(slug)}/members/${encodeURIComponent(userId)}`);
31
31
  }
32
+ // ── F430/AC-8: hierarchy reads ─────────────────────────────────────────────────────
33
+ async getAncestors(id) {
34
+ return this.http.get(`/organizations/${encodeURIComponent(id)}/ancestors`);
35
+ }
36
+ async getDescendants(id) {
37
+ return this.http.get(`/organizations/${encodeURIComponent(id)}/descendants`);
38
+ }
32
39
  }
33
40
  //# sourceMappingURL=organizations.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"organizations.client.js","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"AAsBA,MAAM,OAAO,wBAAwB;IACJ;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA6B,gBAAgB,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QAClB,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CACtB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAC/C,CAAA;QACL,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA8B;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAkB,gBAAgB,EAAE,KAAK,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,KAA8B;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAkB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IAChG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,KAAqB;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACjB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,UAAU,EACpD,KAAK,CACR,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,MAAc;QAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAClB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CACrF,CAAA;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"organizations.client.js","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"AA4BA,MAAM,OAAO,wBAAwB;IACJ;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA6B,gBAAgB,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QAClB,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CACtB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAC/C,CAAA;QACL,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAA8B;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAkB,gBAAgB,EAAE,KAAK,CAAC,CAAA;IACnE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,KAA8B;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAkB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;IAChG,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,KAAqB;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACjB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,UAAU,EACpD,KAAK,CACR,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,MAAc;QAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAClB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CACrF,CAAA;IACL,CAAC;IAED,sFAAsF;IAEtF,KAAK,CAAC,YAAY,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,YAAY,CACvD,CAAA;IACL,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,cAAc,CACzD,CAAA;IACL,CAAC;CACJ"}
@@ -16,8 +16,11 @@ import { OpsWorkersClient } from '../clients/ops/ops-workers.client.js';
16
16
  export interface OpsSdkConfig {
17
17
  /** Base URL for the beacon API (e.g. 'https://api.beacon.build') */
18
18
  baseUrl: string;
19
- /** OPS_API_KEY */
20
- apiKey: string;
19
+ /** OPS_API_KEY. F437: optional when `jwt` is supplied — at least one is required. */
20
+ apiKey?: string;
21
+ /** F437/AC-8: a minted Argus (or other) agent-JWT — takes precedence over `apiKey`
22
+ * when both are set (C434's `jwt ?? apiKey` rule, same as `OpsApiClient`). */
23
+ jwt?: string;
21
24
  /** Max retry attempts for 5xx/network errors (default: 3) */
22
25
  retries?: number;
23
26
  /** Base delay ms for exponential backoff (default: 100) */
@@ -1 +1 @@
1
- {"version":3,"file":"ops-sdk.d.ts","sourceRoot":"","sources":["../../src/factory/ops-sdk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,MAAM,WAAW,YAAY;IACzB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,oBAAoB,EAAE,6BAA6B,CAAA;IACnD,cAAc,EAAE,uBAAuB,CAAA;IACvC,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,EAAE,EAAE,WAAW,CAAA;IACf,OAAO,EAAE,gBAAgB,CAAA;IACzB,UAAU,EAAE,mBAAmB,CAAA;IAC/B,EAAE,EAAE,WAAW,CAAA;IACf,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,gBAAgB,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAqC5D"}
1
+ {"version":3,"file":"ops-sdk.d.ts","sourceRoot":"","sources":["../../src/factory/ops-sdk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,MAAM,WAAW,YAAY;IACzB,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;mFAC+E;IAC/E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,MAAM;IACnB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,MAAM,EAAE,eAAe,CAAA;IACvB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,SAAS,EAAE,kBAAkB,CAAA;IAC7B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,oBAAoB,EAAE,6BAA6B,CAAA;IACnD,cAAc,EAAE,uBAAuB,CAAA;IACvC,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,EAAE,EAAE,WAAW,CAAA;IACf,OAAO,EAAE,gBAAgB,CAAA;IACzB,UAAU,EAAE,mBAAmB,CAAA;IAC/B,EAAE,EAAE,WAAW,CAAA;IACf,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,gBAAgB,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAmD5D"}
@@ -24,16 +24,30 @@ import { OpsWorkersClient } from '../clients/ops/ops-workers.client.js';
24
24
  * INV-9: no onUnauthorized hook — Ops keys are rotated via secrets_sync, not interactively.
25
25
  */
26
26
  export function createOpsClient(config) {
27
+ // Copilot review finding on PR #634: with neither credential set, the old code silently
28
+ // built a client whose getAuthToken() returns '' — every sub-client then sends an empty
29
+ // Bearer token and gets a confusing 401 instead of a clear configuration error at the
30
+ // point of misuse. Fail fast here instead (matches the doc comment's "at least one is
31
+ // required" contract).
32
+ if (!config.apiKey?.trim() && !config.jwt?.trim()) {
33
+ throw new Error('createOpsClient: at least one of apiKey or jwt must be provided');
34
+ }
27
35
  const api = new OpsApiClient({
28
36
  baseUrl: config.baseUrl,
29
37
  apiKey: config.apiKey,
38
+ jwt: config.jwt,
30
39
  retries: config.retries,
31
40
  retryBaseMs: config.retryBaseMs,
32
41
  });
42
+ // F437/AC-8: the EFFECTIVE bearer (jwt when present, else apiKey — C434's rule,
43
+ // `OpsApiClient.getAuthToken()`) for the sub-clients below that build their own raw
44
+ // fetch/SSE requests outside `api`'s `executeWithRetry` and so need the token value
45
+ // directly, not just an `OpsApiClient` instance.
46
+ const authToken = api.getAuthToken();
33
47
  const multipart = new MultipartClient({
34
48
  baseUrl: config.baseUrl,
35
49
  basePath: '/api/v1',
36
- getAuthHeader: async () => `Bearer ${config.apiKey}`,
50
+ getAuthHeader: async () => `Bearer ${authToken}`,
37
51
  });
38
52
  return {
39
53
  tasks: new TasksOpsClient(api),
@@ -45,9 +59,9 @@ export function createOpsClient(config) {
45
59
  conversationMessages: new ConversationMessagesOpsClient(api),
46
60
  usageWorkflows: new UsageWorkflowsOpsClient(api),
47
61
  realtime: new RealtimeOpsClient(api),
48
- db: new OpsDbClient(api, config.apiKey),
49
- storage: new OpsStorageClient(api, multipart, config.apiKey),
50
- northflank: new OpsNorthflankClient(api, config.apiKey),
62
+ db: new OpsDbClient(api, authToken),
63
+ storage: new OpsStorageClient(api, multipart, authToken),
64
+ northflank: new OpsNorthflankClient(api, authToken),
51
65
  mq: new OpsMqClient(api),
52
66
  logs: new OpsLogsClient(api),
53
67
  // OpsApiClient uses full /api/v1/* paths and does not unwrap the { data }
@@ -1 +1 @@
1
- {"version":3,"file":"ops-sdk.js","sourceRoot":"","sources":["../../src/factory/ops-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ops-sdk.js","sourceRoot":"","sources":["../../src/factory/ops-sdk.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export { createAgentClient, type AgentSdk, type AgentSdkConfig } from './factory
17
17
  export { createOpsClient, type OpsSdk, type OpsSdkConfig } from './factory/ops-sdk.js';
18
18
  export { createAuthClient, type AuthClient, type LoginResult, type RegisterResult, type RefreshResult, type MeResult, } from './clients/auth.client.js';
19
19
  export { RealtimeSdkClient, type RealtimeSdkClientConfig } from './realtime/realtime.client.js';
20
+ export { computePermissions, type Permissions, type RoleRow } from './permissions.js';
20
21
  export { SdkError, type SdkErrorCode } from './transport/errors.js';
21
22
  export { OpsApiClient, type OpsApiClientConfig } from './transport/ops-api-client.js';
22
23
  export { HttpClient, type HttpClientConfig } from './transport/http-client.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -20,6 +20,8 @@ export { createOpsClient } from './factory/ops-sdk.js';
20
20
  export { createAuthClient, } from './clients/auth.client.js';
21
21
  // ── Realtime (implemented in F141) ────────────────────────────────────────────
22
22
  export { RealtimeSdkClient } from './realtime/realtime.client.js';
23
+ // ── Permissions (F148) — Scoped Permissions API for SDK consumers ─────────────
24
+ export { computePermissions } from './permissions.js';
23
25
  // ── Errors ────────────────────────────────────────────────────────────────────
24
26
  export { SdkError } from './transport/errors.js';
25
27
  // ── Transport (for advanced consumers) ───────────────────────────────────────
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,kFAAkF;AAClF,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAkC,MAAM,sBAAsB,CAAA;AAEtF,kFAAkF;AAClF,OAAO,EACH,gBAAgB,GAMnB,MAAM,0BAA0B,CAAA;AAEjC,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAgC,MAAM,+BAA+B,CAAA;AAE/F,iFAAiF;AACjF,OAAO,EAAE,QAAQ,EAAqB,MAAM,uBAAuB,CAAA;AAEnE,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAA2B,MAAM,+BAA+B,CAAA;AACrF,OAAO,EAAE,UAAU,EAAyB,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,eAAe,EAA8B,MAAM,iCAAiC,CAAA;AAC7F,wFAAwF;AACxF,iFAAiF;AACjF,OAAO,EACH,YAAY,GAGf,MAAM,8BAA8B,CAAA;AACrC,uFAAuF;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAElE,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAkBlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EACH,qBAAqB,GAExB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAElE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAElF,iFAAiF;AACjF,OAAO,EACH,YAAY,EACZ,iBAAiB,GAIpB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,6DAA6D;AAC7D,2FAA2F;AAC3F,gFAAgF;AAChF,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACtF,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAC5F,OAAO,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAOnF,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AAiBtE,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAMnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAMzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,kFAAkF;AAClF,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,iBAAiB,EAAsC,MAAM,wBAAwB,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAkC,MAAM,sBAAsB,CAAA;AAEtF,kFAAkF;AAClF,OAAO,EACH,gBAAgB,GAMnB,MAAM,0BAA0B,CAAA;AAEjC,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAgC,MAAM,+BAA+B,CAAA;AAE/F,iFAAiF;AACjF,OAAO,EAAE,kBAAkB,EAAkC,MAAM,kBAAkB,CAAA;AAErF,iFAAiF;AACjF,OAAO,EAAE,QAAQ,EAAqB,MAAM,uBAAuB,CAAA;AAEnE,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAA2B,MAAM,+BAA+B,CAAA;AACrF,OAAO,EAAE,UAAU,EAAyB,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,eAAe,EAA8B,MAAM,iCAAiC,CAAA;AAC7F,wFAAwF;AACxF,iFAAiF;AACjF,OAAO,EACH,YAAY,GAGf,MAAM,8BAA8B,CAAA;AACrC,uFAAuF;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAElE,iFAAiF;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAkBlE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EACH,qBAAqB,GAExB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAElE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAA;AAElF,iFAAiF;AACjF,OAAO,EACH,YAAY,EACZ,iBAAiB,GAIpB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,6DAA6D;AAC7D,2FAA2F;AAC3F,gFAAgF;AAChF,OAAO,EAAE,eAAe,IAAI,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACtF,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAC5F,OAAO,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAA;AAOnF,8CAA8C;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAA;AAiBtE,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAMnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAMzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import type { RoleRow } from '@beacon-build/core/browser';
2
+ export type { RoleRow };
3
+ export interface Permissions {
4
+ /** Global vendor (role 'vendor', no orgId). */
5
+ isVendor: boolean;
6
+ /** Admin of `orgId` (vendor bypass). Omit `orgId` to ask "admin of ANY org". */
7
+ isOrgAdmin: (orgId?: string | null) => boolean;
8
+ /** Member (any role) of `orgId` (vendor bypass). Omit `orgId` to ask "member of ANY org". */
9
+ isOrgMember: (orgId?: string | null) => boolean;
10
+ /** Vendor or admin of at least one org. */
11
+ canManageUsers: boolean;
12
+ }
13
+ /**
14
+ * Pure — computes Permissions from a role list. `roles` is typically
15
+ * `MeResult.roles` from `createAuthClient().me(token)`, or any other
16
+ * RoleRow[]-shaped source (structurally compatible, no conversion needed).
17
+ */
18
+ export declare function computePermissions(roles: RoleRow[]): Permissions;
19
+ //# sourceMappingURL=permissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,YAAY,EAAE,OAAO,EAAE,CAAA;AAEvB,MAAM,WAAW,WAAW;IACxB,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAA;IACjB,gFAAgF;IAChF,UAAU,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAA;IAC9C,6FAA6F;IAC7F,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAA;IAC/C,2CAA2C;IAC3C,cAAc,EAAE,OAAO,CAAA;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,CAWhE"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * F148 — Scoped Permissions API for @beacon-build/sdk consumers.
3
+ *
4
+ * Exposes the SAME org-scoped RBAC predicates apps/platform's internal
5
+ * usePermissions() hook (F121/AC-8) already bundles — but at the SDK layer, so
6
+ * a consumer that is NOT apps/platform (its own frontend, a Node script, a
7
+ * server-side render) can compute the same permission gates without a direct
8
+ * @beacon-build/core dependency and without re-implementing the logic.
9
+ *
10
+ * Pure UI/consumer visibility only (F121 INV-2) — this is NOT a security
11
+ * boundary. The real authorization boundary stays server-side
12
+ * (assertVendor/assertOrgAdminOrVendor/assertOrgMembership, CON-5 "Check at
13
+ * API boundary. Never trust the frontend for auth decisions").
14
+ *
15
+ * Deliberately generic/app-agnostic: this does NOT include apps/platform-
16
+ * specific derived gates (e.g. canAccessProjectWorkspace) — a consumer needing
17
+ * an app-specific derived gate composes it from these primitives itself.
18
+ */
19
+ import { isVendor, isOrgAdmin, isOrgMember } from '@beacon-build/core/browser';
20
+ /**
21
+ * Pure — computes Permissions from a role list. `roles` is typically
22
+ * `MeResult.roles` from `createAuthClient().me(token)`, or any other
23
+ * RoleRow[]-shaped source (structurally compatible, no conversion needed).
24
+ */
25
+ export function computePermissions(roles) {
26
+ const vendor = isVendor(roles);
27
+ const adminOrgIds = roles.filter((r) => r.role === 'admin' && r.orgId).map((r) => r.orgId);
28
+ return {
29
+ isVendor: vendor,
30
+ isOrgAdmin: (orgId) => orgId ? isOrgAdmin(roles, orgId) : vendor || adminOrgIds.length > 0,
31
+ isOrgMember: (orgId) => (orgId ? isOrgMember(roles, orgId) : vendor || roles.length > 0),
32
+ canManageUsers: vendor || adminOrgIds.length > 0,
33
+ };
34
+ }
35
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAgB9E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAgB;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAE1F,OAAO;QACH,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;QACvE,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxF,cAAc,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;KACnD,CAAA;AACL,CAAC"}
@@ -2,4 +2,5 @@ export { RealtimeProvider, useRealtimeContext, RealtimeProviderNotFoundError, }
2
2
  export type { RealtimeProviderProps, RealtimeContextValue } from './RealtimeProvider.js';
3
3
  export { useRealtime } from './useRealtime.js';
4
4
  export type { UseRealtimeOptions, UseRealtimeResult } from './useRealtime.js';
5
+ export { usePermissions } from './usePermissions.js';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAChC,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAChC,MAAM,uBAAuB,CAAA;AAC9B,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAExF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAI7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
@@ -4,4 +4,7 @@
4
4
  // Consumers should import directly from @beacon-build/sdk.
5
5
  export { RealtimeProvider, useRealtimeContext, RealtimeProviderNotFoundError, } from './RealtimeProvider.js';
6
6
  export { useRealtime } from './useRealtime.js';
7
+ // F148: Scoped Permissions API — usePermissions() for SDK consumers (no Provider needed,
8
+ // pure/stateless — unlike useRealtime, which needs a live connection's Provider).
9
+ export { usePermissions } from './usePermissions.js';
7
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,wEAAwE;AACxE,2DAA2D;AAE3D,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAChC,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,EAAE;AACF,wEAAwE;AACxE,2DAA2D;AAE3D,OAAO,EACH,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,GAChC,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG9C,yFAAyF;AACzF,kFAAkF;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Permissions, RoleRow } from '../permissions.js';
2
+ export declare function usePermissions(roles: RoleRow[]): Permissions;
3
+ //# sourceMappingURL=usePermissions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePermissions.d.ts","sourceRoot":"","sources":["../../src/react/usePermissions.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,WAAW,CAE5D"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * usePermissions — F148
3
+ *
4
+ * Thin React wrapper over computePermissions (../permissions.js). Unlike
5
+ * useRealtime (F141), this needs NO Provider/context — permissions
6
+ * computation is pure/stateless, not a live connection. The caller supplies
7
+ * its own `roles` (e.g. from createAuthClient().me(token) → MeResult.roles,
8
+ * or any other RoleRow[]-shaped source).
9
+ */
10
+ import { useMemo } from 'react';
11
+ import { computePermissions } from '../permissions.js';
12
+ export function usePermissions(roles) {
13
+ return useMemo(() => computePermissions(roles), [roles]);
14
+ }
15
+ //# sourceMappingURL=usePermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePermissions.js","sourceRoot":"","sources":["../../src/react/usePermissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAGtD,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC3C,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;AAC5D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beacon-build/sdk",
3
- "version": "1.42.0",
3
+ "version": "1.43.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -26,7 +26,7 @@
26
26
  "@types/react": "^19.2.0",
27
27
  "@types/react-dom": "^19.2.0",
28
28
  "event-source-polyfill": "^1.0.31",
29
- "@beacon-build/core": "1.42.0"
29
+ "@beacon-build/core": "1.43.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@testing-library/react": "^16.3.2",