@beacon-build/sdk 1.45.0 → 1.46.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 (69) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/auth/rotating-jwt-provider.d.ts +52 -0
  3. package/dist/auth/rotating-jwt-provider.d.ts.map +1 -0
  4. package/dist/auth/rotating-jwt-provider.js +68 -0
  5. package/dist/auth/rotating-jwt-provider.js.map +1 -0
  6. package/dist/clients/admin/access-grants.client.d.ts +56 -0
  7. package/dist/clients/admin/access-grants.client.d.ts.map +1 -0
  8. package/dist/clients/admin/access-grants.client.js +16 -0
  9. package/dist/clients/admin/access-grants.client.js.map +1 -0
  10. package/dist/clients/admin/organizations.client.d.ts +37 -0
  11. package/dist/clients/admin/organizations.client.d.ts.map +1 -1
  12. package/dist/clients/admin/organizations.client.js +22 -0
  13. package/dist/clients/admin/organizations.client.js.map +1 -1
  14. package/dist/clients/admin/projects.client.d.ts +15 -0
  15. package/dist/clients/admin/projects.client.d.ts.map +1 -1
  16. package/dist/clients/admin/projects.client.js +20 -0
  17. package/dist/clients/admin/projects.client.js.map +1 -1
  18. package/dist/clients/admin/sessions.client.d.ts +7 -1
  19. package/dist/clients/admin/sessions.client.d.ts.map +1 -1
  20. package/dist/clients/admin/sessions.client.js +14 -0
  21. package/dist/clients/admin/sessions.client.js.map +1 -1
  22. package/dist/clients/admin/settings.client.d.ts +36 -1
  23. package/dist/clients/admin/settings.client.d.ts.map +1 -1
  24. package/dist/clients/admin/settings.client.js +18 -2
  25. package/dist/clients/admin/settings.client.js.map +1 -1
  26. package/dist/clients/admin/users.client.d.ts +31 -0
  27. package/dist/clients/admin/users.client.d.ts.map +1 -1
  28. package/dist/clients/admin/users.client.js +44 -0
  29. package/dist/clients/admin/users.client.js.map +1 -1
  30. package/dist/clients/agent/capability.client.d.ts +2 -1
  31. package/dist/clients/agent/capability.client.d.ts.map +1 -1
  32. package/dist/clients/agent/capability.client.js +2 -1
  33. package/dist/clients/agent/capability.client.js.map +1 -1
  34. package/dist/clients/agent/search.client.d.ts +3 -1
  35. package/dist/clients/agent/search.client.d.ts.map +1 -1
  36. package/dist/clients/agent/search.client.js +3 -1
  37. package/dist/clients/agent/search.client.js.map +1 -1
  38. package/dist/clients/agent/tasks.client.d.ts +48 -0
  39. package/dist/clients/agent/tasks.client.d.ts.map +1 -1
  40. package/dist/clients/agent/tasks.client.js +38 -0
  41. package/dist/clients/agent/tasks.client.js.map +1 -1
  42. package/dist/clients/ops/agents-ops.client.d.ts +0 -1
  43. package/dist/clients/ops/agents-ops.client.d.ts.map +1 -1
  44. package/dist/clients/ops/agents-ops.client.js +10 -6
  45. package/dist/clients/ops/agents-ops.client.js.map +1 -1
  46. package/dist/factory/admin-sdk.d.ts +3 -0
  47. package/dist/factory/admin-sdk.d.ts.map +1 -1
  48. package/dist/factory/admin-sdk.js +2 -0
  49. package/dist/factory/admin-sdk.js.map +1 -1
  50. package/dist/factory/agent-sdk.d.ts +6 -4
  51. package/dist/factory/agent-sdk.d.ts.map +1 -1
  52. package/dist/factory/agent-sdk.js +10 -14
  53. package/dist/factory/agent-sdk.js.map +1 -1
  54. package/dist/index.d.ts +6 -3
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +4 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/manifest.agent-entries.d.ts.map +1 -1
  59. package/dist/manifest.agent-entries.js +0 -37
  60. package/dist/manifest.agent-entries.js.map +1 -1
  61. package/dist/transport/http-client.d.ts +16 -0
  62. package/dist/transport/http-client.d.ts.map +1 -1
  63. package/dist/transport/http-client.js +32 -7
  64. package/dist/transport/http-client.js.map +1 -1
  65. package/package.json +2 -2
  66. package/dist/clients/agent/messaging.client.d.ts +0 -34
  67. package/dist/clients/agent/messaging.client.d.ts.map +0 -1
  68. package/dist/clients/agent/messaging.client.js +0 -40
  69. package/dist/clients/agent/messaging.client.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # @beacon-build/sdk Changelog
2
2
 
3
+ ## 1.46.1
4
+
5
+ ### Patch Changes
6
+
7
+ - c8cb537: C584: read-only Org-Settings-Viewer in the org Config tab — typed system-settings panel (source badge, "Verlauf" audit history, Advanced/Raw section for unregistered keys); adds SettingsClient.audit() SDK method for the existing GET /admin/config/audit endpoint.
8
+ - 8868c4f: F447: full-session subagent data foundation — window-uncapped per-subagent aggregate, read-side title/state correlation, GET /sessions/:id/subagents, C374-safe card-badge rollup join
9
+ - 8e089fa: C585: lightweight Project.config KV editor (PATCH /{slug}/config), split config/env write-guard, and enc:-secret masking on project config reads
10
+ - cd20679: F449: unified DB-encrypted secrets across user/org/system/project settings scopes
11
+ - cdda7e9: C595: task thread MCP tools (task_messages_list/post, task_participants_list, task_watch/unwatch) now use the AgentSdk (AgentTasksClient) instead of a raw agentApiFetch call — same behavior, centralized error/auth handling via HttpClient. Adds HttpClient.postWithStatus for endpoints that must recover the HTTP status alongside an identical-body response.
12
+ - 5b28c0c: C606: envelope the CON-25-touched /agents routes (agents.ts, agents-config.ts, agents-identity.ts, agents-mutations.ts, and the task-stats/config GET blind spots a variable-returning handler hid from the static rule) in the standard `{ data }` response shape; OpsApiClient-based readers (agent.service.ts, agents-ops.client.ts, task.service.ts) updated to unwrap.
13
+ - Updated dependencies [8868c4f]
14
+ - Updated dependencies [8e089fa]
15
+ - Updated dependencies [8d49c10]
16
+ - Updated dependencies [cd20679]
17
+ - Updated dependencies [5fa8de7]
18
+ - Updated dependencies [067acca]
19
+ - Updated dependencies [a14db7b]
20
+ - Updated dependencies [d1a5ed9]
21
+ - Updated dependencies [b1aab9d]
22
+ - Updated dependencies [da019c8]
23
+ - Updated dependencies [9cf01a0]
24
+ - Updated dependencies [ee73f04]
25
+ - Updated dependencies [4d34737]
26
+ - Updated dependencies [5a56b1f]
27
+ - Updated dependencies [5b28c0c]
28
+ - @beacon-build/core@1.46.1
29
+
30
+ ## 1.46.0
31
+
32
+ ### Minor Changes
33
+
34
+ - ac38e31: F444: Access Console — unified Global/Org/Personal role assignment. Adds AccessGrantService (transactional grant/invite write path), getEffectiveGrants (read facade), resolveScopeTarget (scope→table mapping), additive Invite.grants JSONB column, and an ancestor-aware retrofit for org member grant/revoke authority.
35
+
36
+ ### Patch Changes
37
+
38
+ - 7179837: chore(C573): extract shared createRotatingJwtProvider helper (packages/sdk) — DRY consolidation of the B468 rotating-JWT pattern (boot-mint fail-fast + unref'd-timer refresh non-fatal) previously duplicated in mcp/agent, apps/ide, and services/janitor. No behavior change.
39
+ - 62d3988: C572 (FS54/10): fold the last /agent/v1 residuals (capabilities, checkins, session anchor, search) onto their canonical /api/v1/{resource} paths with per-audience dispatch; delete the agentV1 tree and its CON-25 allowlist entry.
40
+ - b1c751b: chore(C576): remove dead AgentMessagingClient + the legacy /api/agent/v1 SDK basePath client (no matching server route in services/api; msg_search already migrated to sdk.search under /api/v1). Every agent client now rides the canonical /api/v1 basePath. Also trimmed a stale comment in mcp/agent msg-search that referenced the removed client. No user-facing behavior change.
41
+ - Updated dependencies [1e7fd50]
42
+ - Updated dependencies [3ffafd2]
43
+ - Updated dependencies [354c17a]
44
+ - Updated dependencies [1437bef]
45
+ - Updated dependencies [b17bc28]
46
+ - Updated dependencies [f9e4d8f]
47
+ - Updated dependencies [f2f1b3c]
48
+ - Updated dependencies [ac38e31]
49
+ - Updated dependencies [39405ed]
50
+ - Updated dependencies [5b1c9d8]
51
+ - @beacon-build/core@1.46.0
52
+
3
53
  ## 1.45.0
4
54
 
5
55
  ### Minor Changes
@@ -0,0 +1,52 @@
1
+ /**
2
+ * C573 — DRY: shared rotating-JWT provider (B468 follow-up).
3
+ *
4
+ * B468 fixed a real outage (an agent-JWT minted once at boot, never refreshed, so a
5
+ * long-running daemon went dark once past the token's TTL — every `/v1/*` call 401'd
6
+ * with no self-heal) but landed the fix ~15 lines at a time, near-identically copied into
7
+ * THREE call sites: `mcp/agent/src/server-setup.ts` (`createServices`), `apps/ide/src/
8
+ * argus-jwt.ts` (`createRotatingArgusJwt`), and `services/janitor/src/alerts/index.ts`.
9
+ * This is that pattern, factored once.
10
+ *
11
+ * Shape: mint at boot (fail-fast — a boot-time credential failure must be loud, not a
12
+ * silent degrade to no services at all), hold the token in a mutable binding, hand back a
13
+ * PROVIDER (`() => string`, re-read per request — give THIS to every HTTP client, never a
14
+ * captured string) and start an unref'd timer that re-mints on `refreshMs`. The scheduled
15
+ * refresh is NON-fatal (unlike the boot mint): on failure it keeps the current credential
16
+ * (still valid for the rest of its TTL window) and retries on the next tick — it never
17
+ * exits the process.
18
+ *
19
+ * Placed in `packages/sdk` (not `packages/infrastructure`): `infrastructure` already
20
+ * depends on `sdk`, and `sdk` is the deepest layer already imported directly by all three
21
+ * call sites — putting the helper here adds no new dependency edge.
22
+ *
23
+ * `log` is a minimal structural subset of `@beacon-build/logger`'s `ILogger` port (info +
24
+ * error only) rather than an import of that type — `sdk` has no dependency on
25
+ * `@beacon-build/logger` today, and every caller's real logger already satisfies this
26
+ * shape, so no new dependency edge is needed for typing either.
27
+ */
28
+ export interface RotatingJwtLog {
29
+ info(message: string, context?: Record<string, unknown>): void;
30
+ error(message: string, context?: Record<string, unknown>): void;
31
+ }
32
+ /** Result of a single mint call: the token itself, plus optional context merged into the
33
+ * helper's own boot/refresh log lines (e.g. `{ agentId }`) — so callers keep their
34
+ * existing observability without owning their own boot/refresh log messages. */
35
+ export interface JwtMintResult {
36
+ token: string;
37
+ logContext?: Record<string, unknown>;
38
+ }
39
+ export interface RotatingJwtProviderOptions {
40
+ /** Interval between scheduled refreshes, ms. Convention: HALF the token's TTL, so a
41
+ * single failed refresh still leaves the current token valid for the rest of its
42
+ * window — one transient mint blip never causes an outage. */
43
+ refreshMs: number;
44
+ log: RotatingJwtLog;
45
+ }
46
+ /**
47
+ * Mint `mintFn` once at boot (fail-fast on failure — exits the process), then keep the
48
+ * token rotating for the life of a long-running daemon on an unref'd timer. Returns a
49
+ * PROVIDER — re-read per request — never a captured string.
50
+ */
51
+ export declare function createRotatingJwtProvider(mintFn: () => Promise<JwtMintResult>, { refreshMs, log }: RotatingJwtProviderOptions): Promise<() => string>;
52
+ //# sourceMappingURL=rotating-jwt-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotating-jwt-provider.d.ts","sourceRoot":"","sources":["../../src/auth/rotating-jwt-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,WAAW,cAAc;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC9D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CAClE;AAED;;iFAEiF;AACjF,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACvC;AAED,MAAM,WAAW,0BAA0B;IACvC;;mEAE+D;IAC/D,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,cAAc,CAAA;CACtB;AAkBD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC3C,MAAM,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,EACpC,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,0BAA0B,GAC/C,OAAO,CAAC,MAAM,MAAM,CAAC,CAsBvB"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * C573 — DRY: shared rotating-JWT provider (B468 follow-up).
3
+ *
4
+ * B468 fixed a real outage (an agent-JWT minted once at boot, never refreshed, so a
5
+ * long-running daemon went dark once past the token's TTL — every `/v1/*` call 401'd
6
+ * with no self-heal) but landed the fix ~15 lines at a time, near-identically copied into
7
+ * THREE call sites: `mcp/agent/src/server-setup.ts` (`createServices`), `apps/ide/src/
8
+ * argus-jwt.ts` (`createRotatingArgusJwt`), and `services/janitor/src/alerts/index.ts`.
9
+ * This is that pattern, factored once.
10
+ *
11
+ * Shape: mint at boot (fail-fast — a boot-time credential failure must be loud, not a
12
+ * silent degrade to no services at all), hold the token in a mutable binding, hand back a
13
+ * PROVIDER (`() => string`, re-read per request — give THIS to every HTTP client, never a
14
+ * captured string) and start an unref'd timer that re-mints on `refreshMs`. The scheduled
15
+ * refresh is NON-fatal (unlike the boot mint): on failure it keeps the current credential
16
+ * (still valid for the rest of its TTL window) and retries on the next tick — it never
17
+ * exits the process.
18
+ *
19
+ * Placed in `packages/sdk` (not `packages/infrastructure`): `infrastructure` already
20
+ * depends on `sdk`, and `sdk` is the deepest layer already imported directly by all three
21
+ * call sites — putting the helper here adds no new dependency edge.
22
+ *
23
+ * `log` is a minimal structural subset of `@beacon-build/logger`'s `ILogger` port (info +
24
+ * error only) rather than an import of that type — `sdk` has no dependency on
25
+ * `@beacon-build/logger` today, and every caller's real logger already satisfies this
26
+ * shape, so no new dependency edge is needed for typing either.
27
+ */
28
+ async function mintAtBoot(mintFn, log) {
29
+ try {
30
+ const { token, logContext } = await mintFn();
31
+ log.info('minted rotating JWT at boot', logContext);
32
+ return token;
33
+ }
34
+ catch (err) {
35
+ log.error('rotating JWT boot mint failed', {
36
+ error: err instanceof Error ? err.message : String(err),
37
+ });
38
+ process.exit(1);
39
+ }
40
+ }
41
+ /**
42
+ * Mint `mintFn` once at boot (fail-fast on failure — exits the process), then keep the
43
+ * token rotating for the life of a long-running daemon on an unref'd timer. Returns a
44
+ * PROVIDER — re-read per request — never a captured string.
45
+ */
46
+ export async function createRotatingJwtProvider(mintFn, { refreshMs, log }) {
47
+ let current = await mintAtBoot(mintFn, log);
48
+ const timer = setInterval(() => {
49
+ void (async () => {
50
+ try {
51
+ const { token, logContext } = await mintFn();
52
+ current = token;
53
+ log.info('refreshed rotating JWT (scheduled)', logContext);
54
+ }
55
+ catch (err) {
56
+ // Non-fatal (unlike the boot mint): keep the current credential, still
57
+ // valid for the rest of its TTL window, and retry on the next tick. Never
58
+ // exit the process on a transient refresh failure.
59
+ log.error('rotating JWT refresh failed — keeping current', {
60
+ error: err instanceof Error ? err.message : String(err),
61
+ });
62
+ }
63
+ })();
64
+ }, refreshMs);
65
+ timer.unref();
66
+ return () => current;
67
+ }
68
+ //# sourceMappingURL=rotating-jwt-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotating-jwt-provider.js","sourceRoot":"","sources":["../../src/auth/rotating-jwt-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAuBH,KAAK,UAAU,UAAU,CACrB,MAAoC,EACpC,GAAmB;IAEnB,IAAI,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,EAAE,CAAA;QAC5C,GAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAA;QACnD,OAAO,KAAK,CAAA;IAChB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE;YACvC,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SAC1D,CAAC,CAAA;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC3C,MAAoC,EACpC,EAAE,SAAS,EAAE,GAAG,EAA8B;IAE9C,IAAI,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE3C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3B,KAAK,CAAC,KAAK,IAAI,EAAE;YACb,IAAI,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,EAAE,CAAA;gBAC5C,OAAO,GAAG,KAAK,CAAA;gBACf,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,UAAU,CAAC,CAAA;YAC9D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,uEAAuE;gBACvE,0EAA0E;gBAC1E,mDAAmD;gBACnD,GAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE;oBACvD,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBAC1D,CAAC,CAAA;YACN,CAAC;QACL,CAAC,CAAC,EAAE,CAAA;IACR,CAAC,EAAE,SAAS,CAAC,CAAA;IACb,KAAK,CAAC,KAAK,EAAE,CAAA;IAEb,OAAO,GAAG,EAAE,CAAC,OAAO,CAAA;AACxB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { HttpClient } from '../../transport/http-client.js';
2
+ export type ScopeSelectorDto = {
3
+ type: 'org';
4
+ orgId: string;
5
+ } | {
6
+ type: 'project';
7
+ project: string;
8
+ } | {
9
+ type: 'global';
10
+ };
11
+ export interface GrantRowDto {
12
+ scope: ScopeSelectorDto;
13
+ role: string;
14
+ }
15
+ export interface AccessGrantCandidateInput {
16
+ userId?: string;
17
+ email?: string;
18
+ }
19
+ export interface CreateAccessGrantInput {
20
+ candidate: AccessGrantCandidateInput;
21
+ contextOrgId?: string;
22
+ rows: GrantRowDto[];
23
+ }
24
+ export interface GrantedRowDto {
25
+ scope: ScopeSelectorDto;
26
+ role: string;
27
+ table: 'actor_role' | 'project_access';
28
+ }
29
+ export type AccessGrantResultDto = {
30
+ kind: 'granted';
31
+ grants: GrantedRowDto[];
32
+ } | {
33
+ kind: 'invited';
34
+ invite: {
35
+ id: string;
36
+ email: string;
37
+ token: string;
38
+ expiresAt: string;
39
+ grants: GrantRowDto[];
40
+ };
41
+ };
42
+ export interface GlobalVendorDto {
43
+ userId: string;
44
+ email: string | null;
45
+ name: string | null;
46
+ }
47
+ /**
48
+ * F444/INV-13 — the SDK client for the Access Console's ONE grant/invite write endpoint.
49
+ */
50
+ export declare class AccessGrantsClient {
51
+ private readonly http;
52
+ constructor(http: HttpClient);
53
+ create(input: CreateAccessGrantInput): Promise<AccessGrantResultDto>;
54
+ listVendors(): Promise<GlobalVendorDto[]>;
55
+ }
56
+ //# sourceMappingURL=access-grants.client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-grants.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/access-grants.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAExB,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,gBAAgB,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,yBAAyB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,sBAAsB;IACnC,SAAS,EAAE,yBAAyB,CAAA;IACpC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,EAAE,WAAW,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,gBAAgB,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,YAAY,GAAG,gBAAgB,CAAA;CACzC;AAED,MAAM,MAAM,oBAAoB,GAC1B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,GAC5C;IACI,IAAI,EAAE,SAAS,CAAA;IACf,MAAM,EAAE;QACJ,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,WAAW,EAAE,CAAA;KACxB,CAAA;CACJ,CAAA;AAEP,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIpE,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;CAGlD"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * F444/INV-13 — the SDK client for the Access Console's ONE grant/invite write endpoint.
3
+ */
4
+ export class AccessGrantsClient {
5
+ http;
6
+ constructor(http) {
7
+ this.http = http;
8
+ }
9
+ async create(input) {
10
+ return this.http.post('/access-grants', input);
11
+ }
12
+ async listVendors() {
13
+ return this.http.get('/access-grants/vendors');
14
+ }
15
+ }
16
+ //# sourceMappingURL=access-grants.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-grants.client.js","sourceRoot":"","sources":["../../../src/clients/admin/access-grants.client.ts"],"names":[],"mappings":"AAgDA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACE;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,MAAM,CAAC,KAA6B;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuB,gBAAgB,EAAE,KAAK,CAAC,CAAA;IACxE,CAAC;IAED,KAAK,CAAC,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,wBAAwB,CAAC,CAAA;IACrE,CAAC;CACJ"}
@@ -17,6 +17,33 @@ export interface AddMemberInput {
17
17
  userId: string;
18
18
  role?: string;
19
19
  }
20
+ export interface MemberCandidateDto {
21
+ userId: string;
22
+ email: string;
23
+ name: string | null;
24
+ contextOrgName: string;
25
+ isAncestor: boolean;
26
+ }
27
+ export interface InviteGrantDto {
28
+ role: string;
29
+ orgId?: string;
30
+ project?: string;
31
+ }
32
+ export interface InviteDto {
33
+ id: string;
34
+ email: string;
35
+ status: string;
36
+ role: string;
37
+ orgId: string | null;
38
+ project: string | null;
39
+ grants: InviteGrantDto[] | null;
40
+ expiresAt: string;
41
+ createdAt: string;
42
+ }
43
+ export interface OrgConfigAllDto {
44
+ organizationId: string;
45
+ settings: Record<string, unknown>;
46
+ }
20
47
  export declare class AdminOrganizationsClient {
21
48
  private readonly http;
22
49
  constructor(http: HttpClient);
@@ -30,5 +57,15 @@ export declare class AdminOrganizationsClient {
30
57
  removeMember(slug: string, userId: string): Promise<void>;
31
58
  getAncestors(id: string): Promise<OrganizationDto[]>;
32
59
  getDescendants(id: string): Promise<OrganizationDto[]>;
60
+ getMemberCandidates(id: string, q?: string): Promise<MemberCandidateDto[]>;
61
+ listInvites(id: string): Promise<InviteDto[]>;
62
+ resendInvite(id: string, inviteId: string): Promise<InviteDto>;
63
+ revokeInvite(id: string, inviteId: string): Promise<void>;
64
+ getConfig(id: string): Promise<OrgConfigAllDto>;
65
+ setConfig(id: string, key: string, value: unknown): Promise<{
66
+ key: string;
67
+ organizationId: string;
68
+ updatedAt: string;
69
+ }>;
33
70
  }
34
71
  //# 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;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;IAa7D,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;IAQ9E,gBAAgB,CAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;IAO3B,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"}
1
+ {"version":3,"file":"organizations.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"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"}
@@ -43,5 +43,27 @@ export class AdminOrganizationsClient {
43
43
  async getDescendants(id) {
44
44
  return this.http.get(`/organizations/${encodeURIComponent(id)}/descendants`);
45
45
  }
46
+ // ── F444/INV-5/INV-6: Add-Member candidate search ──────────────────────────────────
47
+ async getMemberCandidates(id, q) {
48
+ const query = q ? `?q=${encodeURIComponent(q)}` : '';
49
+ return this.http.get(`/organizations/${encodeURIComponent(id)}/member-candidates${query}`);
50
+ }
51
+ // ── F444/AC-13: Invites tab ─────────────────────────────────────────────────────────
52
+ async listInvites(id) {
53
+ return this.http.get(`/organizations/${encodeURIComponent(id)}/invites`);
54
+ }
55
+ async resendInvite(id, inviteId) {
56
+ return this.http.post(`/organizations/${encodeURIComponent(id)}/invites/${encodeURIComponent(inviteId)}/resend`, {});
57
+ }
58
+ async revokeInvite(id, inviteId) {
59
+ await this.http.delete(`/organizations/${encodeURIComponent(id)}/invites/${encodeURIComponent(inviteId)}`);
60
+ }
61
+ // ── F444/AC-14: Config tab (ancestor-aware) ─────────────────────────────────────────
62
+ async getConfig(id) {
63
+ return this.http.get(`/organizations/${encodeURIComponent(id)}/config`);
64
+ }
65
+ async setConfig(id, key, value) {
66
+ return this.http.patch(`/organizations/${encodeURIComponent(id)}/config`, { key, value });
67
+ }
46
68
  }
47
69
  //# sourceMappingURL=organizations.client.js.map
@@ -1 +1 @@
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,OAAO,IAAI,EAAE,CAAC;YACZ,6EAA6E;YAC7E,iFAAiF;YACjF,2EAA2E;YAC3E,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,gEAAgE;IAChE,KAAK,CAAC,gBAAgB,CAClB,IAAY,EACZ,MAAc,EACd,IAAY;QAEZ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAClB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAClF,EAAE,IAAI,EAAE,CACX,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"}
1
+ {"version":3,"file":"organizations.client.js","sourceRoot":"","sources":["../../../src/clients/admin/organizations.client.ts"],"names":[],"mappings":"AA6DA,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,OAAO,IAAI,EAAE,CAAC;YACZ,6EAA6E;YAC7E,iFAAiF;YACjF,2EAA2E;YAC3E,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,gEAAgE;IAChE,KAAK,CAAC,gBAAgB,CAClB,IAAY,EACZ,MAAc,EACd,IAAY;QAEZ,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAClB,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,EAClF,EAAE,IAAI,EAAE,CACX,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;IAED,sFAAsF;IAEtF,KAAK,CAAC,mBAAmB,CAAC,EAAU,EAAE,CAAU;QAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,qBAAqB,KAAK,EAAE,CACvE,CAAA;IACL,CAAC;IAED,uFAAuF;IAEvF,KAAK,CAAC,WAAW,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IACzF,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,QAAgB;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACjB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EACzF,EAAE,CACL,CAAA;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,QAAgB;QAC3C,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAClB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,YAAY,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CACrF,CAAA;IACL,CAAC;IAED,uFAAuF;IAEvF,KAAK,CAAC,SAAS,CAAC,EAAU;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC5F,CAAC;IAED,KAAK,CAAC,SAAS,CACX,EAAU,EACV,GAAW,EACX,KAAc;QAEd,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7F,CAAC;CACJ"}
@@ -38,6 +38,12 @@ export interface ProjectAccessGrantResultDto {
38
38
  principalId: string;
39
39
  role: string;
40
40
  }
41
+ /** F449/AC-9: a project secret's metadata — never a value (INV-1). */
42
+ export interface ProjectSecretEntryDto {
43
+ name: string;
44
+ isSet: boolean;
45
+ updatedAt: string | null;
46
+ }
41
47
  export declare class AdminProjectsClient {
42
48
  private readonly http;
43
49
  constructor(http: HttpClient);
@@ -47,6 +53,9 @@ export declare class AdminProjectsClient {
47
53
  * call target (mirrors `AdminOrganizationsClient.create()`). */
48
54
  create(input: CreateProjectInput): Promise<ProjectOwnershipDto>;
49
55
  delete(slug: string): Promise<void>;
56
+ /** C585/AC-1: full-replace PATCH of `Project.config` — the lightweight Project-Settings
57
+ * editor's single "Save" (owner, org-admin, or vendor — see `projects-config.ts`). */
58
+ updateConfig(slug: string, config: Record<string, unknown>): Promise<void>;
50
59
  /** F442/AC-8/FLAG-1: `GET /{slug}/access` — list the project's owner + collaborator
51
60
  * grants. Guard is `assertOwnershipForSlug` (any caller who can already see the project). */
52
61
  accessList(slug: string): Promise<ProjectAccessListDto>;
@@ -55,5 +64,11 @@ export declare class AdminProjectsClient {
55
64
  accessGrant(slug: string, input: GrantProjectAccessInput): Promise<ProjectAccessGrantResultDto>;
56
65
  /** F442/AC-6/AC-8/FLAG-1: `DELETE /{slug}/access/{principalId}` — idempotent revoke. */
57
66
  accessRevoke(slug: string, principalId: string): Promise<void>;
67
+ /** F449/AC-9: `GET /{slug}/secrets` — names + isSet + updatedAt, never a value. */
68
+ listSecrets(slug: string): Promise<ProjectSecretEntryDto[]>;
69
+ /** F449/AC-9: `PUT /{slug}/secrets/{name}` — plaintext sent once, encrypted server-side. */
70
+ setSecret(slug: string, name: string, value: string): Promise<ProjectSecretEntryDto>;
71
+ /** F449/AC-9: `DELETE /{slug}/secrets/{name}` — idempotent. */
72
+ removeSecret(slug: string, name: string): Promise<void>;
58
73
  }
59
74
  //# sourceMappingURL=projects.client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/projects.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE;2FAC2F;AAC3F,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,mGAAmG;AACnG,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED;iEACiE;AACjE,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,qBAAqB,EAAE,CAAA;CAClC;AAED;8DAC8D;AAC9D,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;CACtC;AAED,MAAM,WAAW,2BAA2B;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,mBAAmB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAQvD;oEACgE;IAC1D,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI/D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;iGAC6F;IACvF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI7D;iEAC6D;IACvD,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,uBAAuB,GAC/B,OAAO,CAAC,2BAA2B,CAAC;IAOvC,wFAAwF;IAClF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKvE"}
1
+ {"version":3,"file":"projects.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/projects.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE;2FAC2F;AAC3F,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,mGAAmG;AACnG,MAAM,WAAW,qBAAqB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;CACpB;AAED;iEACiE;AACjE,MAAM,WAAW,oBAAoB;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,qBAAqB,EAAE,CAAA;CAClC;AAED;8DAC8D;AAC9D,MAAM,WAAW,uBAAuB;IACpC,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAA;CACtC;AAED,MAAM,WAAW,2BAA2B;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;CACf;AAED,sEAAsE;AACtE,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B;AAED,qBAAa,mBAAmB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAQvD;oEACgE;IAC1D,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI/D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;0FACsF;IAChF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhF;iGAC6F;IACvF,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAI7D;iEAC6D;IACvD,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,uBAAuB,GAC/B,OAAO,CAAC,2BAA2B,CAAC;IAOvC,wFAAwF;IAClF,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE,mFAAmF;IAC7E,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAQjE,4FAA4F;IACtF,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ1F,+DAA+D;IACzD,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKhE"}
@@ -22,6 +22,11 @@ export class AdminProjectsClient {
22
22
  async delete(slug) {
23
23
  await this.http.delete(`/projects/${encodeURIComponent(slug)}`);
24
24
  }
25
+ /** C585/AC-1: full-replace PATCH of `Project.config` — the lightweight Project-Settings
26
+ * editor's single "Save" (owner, org-admin, or vendor — see `projects-config.ts`). */
27
+ async updateConfig(slug, config) {
28
+ await this.http.patch(`/projects/${encodeURIComponent(slug)}/config`, { config });
29
+ }
25
30
  /** F442/AC-8/FLAG-1: `GET /{slug}/access` — list the project's owner + collaborator
26
31
  * grants. Guard is `assertOwnershipForSlug` (any caller who can already see the project). */
27
32
  async accessList(slug) {
@@ -36,5 +41,20 @@ export class AdminProjectsClient {
36
41
  async accessRevoke(slug, principalId) {
37
42
  await this.http.delete(`/projects/${encodeURIComponent(slug)}/access/${encodeURIComponent(principalId)}`);
38
43
  }
44
+ /** F449/AC-9: `GET /{slug}/secrets` — names + isSet + updatedAt, never a value. */
45
+ async listSecrets(slug) {
46
+ // this.http already unwraps the `{ data }` envelope (http-client.ts), so return it directly —
47
+ // a second `.data` here was double-unwrapping to `undefined` (react-query "data is undefined").
48
+ return this.http.get(`/projects/${encodeURIComponent(slug)}/secrets`);
49
+ }
50
+ /** F449/AC-9: `PUT /{slug}/secrets/{name}` — plaintext sent once, encrypted server-side. */
51
+ async setSecret(slug, name, value) {
52
+ // this.http already unwraps the `{ data }` envelope — return directly (no second `.data`).
53
+ return this.http.put(`/projects/${encodeURIComponent(slug)}/secrets/${encodeURIComponent(name)}`, { value });
54
+ }
55
+ /** F449/AC-9: `DELETE /{slug}/secrets/{name}` — idempotent. */
56
+ async removeSecret(slug, name) {
57
+ await this.http.delete(`/projects/${encodeURIComponent(slug)}/secrets/${encodeURIComponent(name)}`);
58
+ }
39
59
  }
40
60
  //# sourceMappingURL=projects.client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects.client.js","sourceRoot":"","sources":["../../../src/clients/admin/projects.client.ts"],"names":[],"mappings":"AA+CA,MAAM,OAAO,mBAAmB;IACC;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,WAAW,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QAClB,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvF,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAED;oEACgE;IAChE,KAAK,CAAC,MAAM,CAAC,KAAyB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,WAAW,EAAE,KAAK,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnE,CAAC;IAED;iGAC6F;IAC7F,KAAK,CAAC,UAAU,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,aAAa,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9F,CAAC;IAED;iEAC6D;IAC7D,KAAK,CAAC,WAAW,CACb,IAAY,EACZ,KAA8B;QAE9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACjB,aAAa,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAC9C,KAAK,CACR,CAAA;IACL,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,WAAmB;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAClB,aAAa,kBAAkB,CAAC,IAAI,CAAC,WAAW,kBAAkB,CAAC,WAAW,CAAC,EAAE,CACpF,CAAA;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"projects.client.js","sourceRoot":"","sources":["../../../src/clients/admin/projects.client.ts"],"names":[],"mappings":"AAsDA,MAAM,OAAO,mBAAmB;IACC;IAA7B,YAA6B,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;IAAG,CAAC;IAEjD,KAAK,CAAC,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,WAAW,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAY;QAClB,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvF,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;IAED;oEACgE;IAChE,KAAK,CAAC,MAAM,CAAC,KAAyB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAsB,WAAW,EAAE,KAAK,CAAC,CAAA;IAClE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACrB,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACnE,CAAC;IAED;0FACsF;IACtF,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,MAA+B;QAC5D,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACrF,CAAC;IAED;iGAC6F;IAC7F,KAAK,CAAC,UAAU,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,aAAa,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9F,CAAC;IAED;iEAC6D;IAC7D,KAAK,CAAC,WAAW,CACb,IAAY,EACZ,KAA8B;QAE9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CACjB,aAAa,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAC9C,KAAK,CACR,CAAA;IACL,CAAC;IAED,wFAAwF;IACxF,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,WAAmB;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAClB,aAAa,kBAAkB,CAAC,IAAI,CAAC,WAAW,kBAAkB,CAAC,WAAW,CAAC,EAAE,CACpF,CAAA;IACL,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,WAAW,CAAC,IAAY;QAC1B,8FAA8F;QAC9F,gGAAgG;QAChG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,aAAa,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAClD,CAAA;IACL,CAAC;IAED,4FAA4F;IAC5F,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,IAAY,EAAE,KAAa;QACrD,2FAA2F;QAC3F,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,aAAa,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAC3E,EAAE,KAAK,EAAE,CACZ,CAAA;IACL,CAAC;IAED,+DAA+D;IAC/D,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,IAAY;QACzC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAClB,aAAa,kBAAkB,CAAC,IAAI,CAAC,YAAY,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAA;IACL,CAAC;CACJ"}
@@ -1,4 +1,4 @@
1
- import type { SessionSummaryDto, SessionListItemDto, ToolCallSummaryDto, SubagentSummaryDto } from '@beacon-build/core';
1
+ import type { SessionSummaryDto, SessionListItemDto, ToolCallSummaryDto, SubagentSummaryDto, SubagentGroupSummaryDto } from '@beacon-build/core';
2
2
  import type { HttpClient } from '../../transport/http-client.js';
3
3
  export interface SessionsFilter {
4
4
  project?: string;
@@ -24,6 +24,12 @@ export declare class AdminSessionsClient {
24
24
  * Never throws — returns zero-counts on error.
25
25
  */
26
26
  subagentSummary(sessionId: string): Promise<SubagentSummaryDto>;
27
+ /**
28
+ * F447 AC-5/AC-18: full-session (not window-capped), title/state-correlated per-subagent
29
+ * detail array — lazy-loaded when the SessionCard's collapsed subagent section is expanded.
30
+ * Never throws — returns an empty array on error (matches `subagentSummary`'s convention).
31
+ */
32
+ subagentGroups(sessionId: string): Promise<SubagentGroupSummaryDto[]>;
27
33
  /**
28
34
  * F424: vendor-gated force-terminate — distinct from the agent self-service
29
35
  * `POST /sessions/:id/terminate` (F217). 403s for a non-vendor caller. Idempotent —
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/sessions.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EACrB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,mBAAmB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAUzD,IAAI,CACN,MAAM,GAAE,cAAmB,GAC5B,OAAO,CAAC;QAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAepF,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAU5D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAUnF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAWvE;;;OAGG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUrE;;;;;;;;OAQG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAKjE"}
1
+ {"version":3,"file":"sessions.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/sessions.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EAC1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAEhE,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,mBAAmB;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAEvC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAUzD,IAAI,CACN,MAAM,GAAE,cAAmB,GAC5B,OAAO,CAAC;QAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAepF,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAU5D,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAUnF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAWvE;;;OAGG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAUrE;;;;OAIG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAW3E;;;;;;;;OAQG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAKjE"}
@@ -61,6 +61,20 @@ export class AdminSessionsClient {
61
61
  return { totalCost: 0, messageCount: 0 };
62
62
  }
63
63
  }
64
+ /**
65
+ * F447 AC-5/AC-18: full-session (not window-capped), title/state-correlated per-subagent
66
+ * detail array — lazy-loaded when the SessionCard's collapsed subagent section is expanded.
67
+ * Never throws — returns an empty array on error (matches `subagentSummary`'s convention).
68
+ */
69
+ async subagentGroups(sessionId) {
70
+ try {
71
+ const res = await this.http.get(`/sessions/${encodeURIComponent(sessionId)}/subagents`);
72
+ return res.subagents;
73
+ }
74
+ catch (_err) {
75
+ return [];
76
+ }
77
+ }
64
78
  /**
65
79
  * F424: vendor-gated force-terminate — distinct from the agent self-service
66
80
  * `POST /sessions/:id/terminate` (F217). 403s for a non-vendor caller. Idempotent —
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.client.js","sourceRoot":"","sources":["../../../src/clients/admin/sessions.client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.client.js","sourceRoot":"","sources":["../../../src/clients/admin/sessions.client.ts"],"names":[],"mappings":"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"}
@@ -19,12 +19,39 @@ export interface SettingsListResponse {
19
19
  organizationId: string | null;
20
20
  settings: Record<string, SettingValue>;
21
21
  }
22
+ /**
23
+ * C584: audit history entry for a config key (`services/api/src/routes/admin-config-audit.route.ts`).
24
+ * `changeType` also covers the F429 Project→Org ownership-transfer log, which reuses this same
25
+ * audit table/endpoint for a non-config change — kept here rather than a separate type since the
26
+ * SDK response shape is identical either way.
27
+ */
28
+ export type SettingChangeType = 'set' | 'delete' | 'project_ownership_transfer';
29
+ export interface SettingAuditEntry {
30
+ id: string;
31
+ changeType: SettingChangeType;
32
+ oldValue: SettingValue;
33
+ newValue: SettingValue;
34
+ changedBy: {
35
+ id: string;
36
+ name: string | null;
37
+ };
38
+ changedAt: string;
39
+ }
40
+ /**
41
+ * Audit history response for a config key.
42
+ */
43
+ export interface SettingAuditResponse {
44
+ key: string;
45
+ organizationId: string | null;
46
+ history: SettingAuditEntry[];
47
+ }
22
48
  /**
23
49
  * F143: Client for admin config API endpoints (Admin/Vendor only).
24
50
  *
25
51
  * Endpoints:
26
52
  * GET /api/v1/admin/config?key=&organizationId=
27
53
  * GET /api/v1/admin/config/all?organizationId=
54
+ * GET /api/v1/admin/config/audit?key=&organizationId=&limit= (C584)
28
55
  * PATCH /api/v1/admin/config
29
56
  */
30
57
  export declare class SettingsClient {
@@ -45,7 +72,10 @@ export declare class SettingsClient {
45
72
  * Set or delete a config value.
46
73
  * value=null deletes the entry.
47
74
  */
48
- set(key: string, value: SettingValue, organizationId?: string | null): Promise<{
75
+ set(key: string, value: SettingValue, organizationId?: string | null,
76
+ /** F449/AC-6/AC-7/AC-8: when true, the server encrypts `value` whole before persisting
77
+ * — the unified system/org secret contract. */
78
+ secret?: boolean): Promise<{
49
79
  key: string;
50
80
  organizationId: string | null;
51
81
  updatedAt: string;
@@ -59,5 +89,10 @@ export declare class SettingsClient {
59
89
  organizationId: string | null;
60
90
  updatedAt: string;
61
91
  }>;
92
+ /**
93
+ * GET /api/v1/admin/config/audit?key=&organizationId=&limit=
94
+ * Get audit history for a config key (C584 — "Verlauf" affordance).
95
+ */
96
+ audit(key: string, organizationId?: string | null, limit?: number): Promise<SettingAuditResponse>;
62
97
  }
63
98
  //# sourceMappingURL=settings.client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"settings.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/settings.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAA;AAElC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACzC;AAaD;;;;;;;GAOG;AACH,qBAAa,cAAc;IACX,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IAKhF;;;OAGG;IACG,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAKzE;;;;OAIG;IACG,GAAG,CACL,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,EACnB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAO7E;;;OAGG;IACG,MAAM,CACR,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAGhF"}
1
+ {"version":3,"file":"settings.client.d.ts","sourceRoot":"","sources":["../../../src/clients/admin/settings.client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,CAAA;AAElC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;CACzC;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,QAAQ,GAAG,4BAA4B,CAAA;AAE/E,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,iBAAiB,CAAA;IAC7B,QAAQ,EAAE,YAAY,CAAA;IACtB,QAAQ,EAAE,YAAY,CAAA;IACtB,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC9C,SAAS,EAAE,MAAM,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAC/B;AAaD;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACX,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,UAAU;IAE7C;;;OAGG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IAKhF;;;OAGG;IACG,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAKzE;;;;OAIG;IACG,GAAG,CACL,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,EACnB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAC9B;mDAC+C;IAC/C,MAAM,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAO7E;;;OAGG;IACG,MAAM,CACR,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAI7E;;;OAGG;IACG,KAAK,CACP,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,EAC9B,KAAK,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,CAAC;CAQnC"}