@intutic/shared-types 2.5.0 → 2.6.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.
Files changed (98) hide show
  1. package/README.md +9 -9
  2. package/dist/apiKeyScopes.d.ts +99 -0
  3. package/dist/apiKeyScopes.d.ts.map +1 -0
  4. package/dist/apiKeyScopes.js +140 -0
  5. package/dist/apiKeyScopes.js.map +1 -0
  6. package/dist/attenuation.d.ts +6 -2
  7. package/dist/attenuation.d.ts.map +1 -1
  8. package/dist/attenuation.js +13 -1
  9. package/dist/attenuation.js.map +1 -1
  10. package/dist/auth.d.ts +29 -4
  11. package/dist/auth.d.ts.map +1 -1
  12. package/dist/auth.js +26 -6
  13. package/dist/auth.js.map +1 -1
  14. package/dist/enums.d.ts +9 -26
  15. package/dist/enums.d.ts.map +1 -1
  16. package/dist/enums.js +11 -28
  17. package/dist/enums.js.map +1 -1
  18. package/dist/errors.d.ts +6 -1
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +6 -1
  21. package/dist/errors.js.map +1 -1
  22. package/dist/finops.d.ts +4 -2
  23. package/dist/finops.d.ts.map +1 -1
  24. package/dist/guardrailRender.d.ts +51 -0
  25. package/dist/guardrailRender.d.ts.map +1 -1
  26. package/dist/guardrailRender.js +69 -1
  27. package/dist/guardrailRender.js.map +1 -1
  28. package/dist/identity.d.ts +0 -18
  29. package/dist/identity.d.ts.map +1 -1
  30. package/dist/identity.js +1 -5
  31. package/dist/identity.js.map +1 -1
  32. package/dist/index.d.ts +12 -8
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +42 -10
  35. package/dist/index.js.map +1 -1
  36. package/dist/mcpDaemonPolicyCache.d.ts +32 -0
  37. package/dist/mcpDaemonPolicyCache.d.ts.map +1 -0
  38. package/dist/mcpDaemonPolicyCache.js +43 -0
  39. package/dist/mcpDaemonPolicyCache.js.map +1 -0
  40. package/dist/notifications.d.ts +1 -1
  41. package/dist/notifications.d.ts.map +1 -1
  42. package/dist/notifications.js +12 -0
  43. package/dist/notifications.js.map +1 -1
  44. package/dist/piiDetectors.d.ts +3 -0
  45. package/dist/piiDetectors.d.ts.map +1 -1
  46. package/dist/piiDetectors.js.map +1 -1
  47. package/dist/piiDetectors.json +11 -6
  48. package/dist/posturePresets.d.ts.map +1 -1
  49. package/dist/posturePresets.js +12 -3
  50. package/dist/posturePresets.js.map +1 -1
  51. package/dist/responses/common.d.ts +63 -0
  52. package/dist/responses/common.d.ts.map +1 -0
  53. package/dist/responses/common.js +43 -0
  54. package/dist/responses/common.js.map +1 -0
  55. package/dist/responses/gateways.d.ts +5297 -0
  56. package/dist/responses/gateways.d.ts.map +1 -0
  57. package/dist/responses/gateways.js +473 -0
  58. package/dist/responses/gateways.js.map +1 -0
  59. package/dist/responses/guardrails.d.ts +5200 -0
  60. package/dist/responses/guardrails.d.ts.map +1 -0
  61. package/dist/responses/guardrails.js +374 -0
  62. package/dist/responses/guardrails.js.map +1 -0
  63. package/dist/responses/identity.d.ts +1659 -0
  64. package/dist/responses/identity.d.ts.map +1 -0
  65. package/dist/responses/identity.js +291 -0
  66. package/dist/responses/identity.js.map +1 -0
  67. package/dist/responses/index.d.ts +15 -0
  68. package/dist/responses/index.d.ts.map +1 -0
  69. package/dist/responses/index.js +31 -0
  70. package/dist/responses/index.js.map +1 -0
  71. package/dist/responses/integrations.d.ts +4248 -0
  72. package/dist/responses/integrations.d.ts.map +1 -0
  73. package/dist/responses/integrations.js +436 -0
  74. package/dist/responses/integrations.js.map +1 -0
  75. package/dist/responses/observability.d.ts +3222 -0
  76. package/dist/responses/observability.d.ts.map +1 -0
  77. package/dist/responses/observability.js +598 -0
  78. package/dist/responses/observability.js.map +1 -0
  79. package/dist/responses/orgSops.d.ts +112 -0
  80. package/dist/responses/orgSops.d.ts.map +1 -0
  81. package/dist/responses/orgSops.js +29 -0
  82. package/dist/responses/orgSops.js.map +1 -0
  83. package/dist/responses/rules.d.ts +1904 -0
  84. package/dist/responses/rules.d.ts.map +1 -0
  85. package/dist/responses/rules.js +331 -0
  86. package/dist/responses/rules.js.map +1 -0
  87. package/dist/skillScan.d.ts +31 -0
  88. package/dist/skillScan.d.ts.map +1 -1
  89. package/dist/skillScan.js +25 -1
  90. package/dist/skillScan.js.map +1 -1
  91. package/dist/sop.d.ts +8 -1
  92. package/dist/sop.d.ts.map +1 -1
  93. package/dist/sop.js.map +1 -1
  94. package/dist/workspaceSettings.d.ts +25 -10
  95. package/dist/workspaceSettings.d.ts.map +1 -1
  96. package/dist/workspaceSettings.js +2 -1
  97. package/dist/workspaceSettings.js.map +1 -1
  98. package/package.json +2 -2
package/README.md CHANGED
@@ -8,12 +8,12 @@
8
8
 
9
9
  ## Scope
10
10
 
11
- 27 source modules exporting ~200+ types covering:
11
+ One source module per domain under `src/`. Among them:
12
12
 
13
13
  | Module | Key Types |
14
14
  |--------|-----------|
15
- | `enums` | `EnforcementAction`, `HarnessType`, `RiskLevel`, `SopLifecycleStage` |
16
- | `finops` | `TraceEntry`, `BudgetEnvelope`, `CostBreakdown` |
15
+ | `enums` | `EnforcementAction`, `HarnessType`, `RiskLevel`, `SopLifecycleState` |
16
+ | `finops` | `TraceEntry`, `CostBreakdown`, `TraceFilters` |
17
17
  | `sop` | SOP lifecycle types, rule schemas, hook definitions |
18
18
  | `auth` | Session, token, credential types |
19
19
  | `identity` | SSO/OIDC provider config, cross-workspace user identity |
@@ -23,23 +23,23 @@
23
23
  | `notifications` | Notification channels, alert templates, delivery status |
24
24
  | `billing` | Subscription tiers, usage metering, invoice types |
25
25
  | `observability` | Trace spans, metric definitions, log schemas |
26
+ | `responses/` | The control plane's response schemas (`<Thing>Response`, zod with the inferred type): what each route that declares one answers with, as published in the OpenAPI document |
26
27
 
27
28
  ## Usage
28
29
 
29
30
  ```typescript
30
- import { EnforcementAction, HarnessType } from '@intutic/shared-types';
31
- import { traceEntrySchema } from '@intutic/shared-types/finops';
31
+ import { EnforcementAction, HarnessType, CreateTraceSchema } from '@intutic/shared-types';
32
32
 
33
33
  // Zod validation
34
- const parsed = traceEntrySchema.parse(rawData);
34
+ const parsed = CreateTraceSchema.parse(rawData);
35
35
  ```
36
36
 
37
37
  ## Design Principles
38
38
 
39
39
  - **Single source of truth**: All cross-package types live here. No type duplication.
40
- - **Zod-first**: Schemas define the shape; TypeScript types are inferred via `z.infer<>`.
41
- - **Barrel exports**: Each module re-exports from `index.ts` for clean import paths.
42
- - **No runtime dependencies**: This package has zero runtime dependencies beyond Zod.
40
+ - **Zod at the boundaries**: API payloads have Zod schemas, with their TypeScript types inferred via `z.infer<>`; other shapes are plain interfaces.
41
+ - **Barrel exports**: `index.ts` is the single entry point; import from the package root (there are no subpath exports).
42
+ - **Minimal runtime dependencies**: Zod and `@intutic/anomaly-taxonomy`, nothing else.
43
43
 
44
44
  ## Installation
45
45
 
@@ -0,0 +1,99 @@
1
+ /**
2
+ * API key scopes — what a `vk_` key may do, on top of its owner's role.
3
+ *
4
+ * One small, fixed vocabulary, in the shape GitHub fine-grained tokens, Stripe
5
+ * restricted keys, OpenAI project keys and Cloudflare API tokens share: a
6
+ * resource area with a `read` or `write` level, `write` covering `read`, and
7
+ * everything not granted refused. Three kinds of scope:
8
+ *
9
+ * - `*` — everything the owner's role allows. The default, and what every key
10
+ * minted before scopes were enforced holds.
11
+ * - `gateway:use` — agent traffic: what the proxy, the hook gates, the SDKs,
12
+ * the MCP proxy and the sync daemon send with a key (LLM calls through the
13
+ * proxy, gate checks, hook events, trace sync-back, holds). The scope for a
14
+ * key that only runs agents.
15
+ * - `<area>:read` / `<area>:write` — the REST API by area.
16
+ *
17
+ * A request made with a key needs BOTH: the owner's role must allow the route
18
+ * and the key's scopes must cover it. A dashboard session has no scopes; only
19
+ * its role applies. The control plane maps every route to the scopes that
20
+ * cover it (`services/control-plane/src/lib/routeScopes.ts`) and refuses an
21
+ * uncovered request with 403 `INSUFFICIENT_SCOPE`.
22
+ *
23
+ * Mirrored by the Terraform provider's `validKeyScopes` (checked by
24
+ * `__tests__/apiKeyScopes.test.ts`) and published in `apps/docs/reference/api.md`
25
+ * (generated from this file).
26
+ *
27
+ * @module
28
+ */
29
+ /** Every REST area a scope can name, with what it covers. Order is the display order. */
30
+ export declare const API_SCOPE_AREAS: {
31
+ readonly traces: "traces, agent sessions, plans, loop runs, trajectories, agents and the tamper-evident trace chain";
32
+ readonly usage: "usage, cost and routing analytics, cost prediction and provider incidents";
33
+ readonly findings: "findings, incidents, anomalies, holds and decisions, judge reviews, governance cards, trust scores and break-glass";
34
+ readonly sops: "SOPs and their lifecycle, skills, the dream cycle, MetaClaw and optimisation suggestions";
35
+ readonly policies: "guardrails and policy documents, WASM rules, rule candidates and the evaluator sandbox";
36
+ readonly compliance: "compliance coverage, probes and evidence exports, and the audit timeline";
37
+ readonly inventory: "developer machines, harnesses, MCP servers, self-hosted gateways and governance coverage";
38
+ readonly settings: "workspace settings, provider credentials, region, orgs and teams, domains, SSO providers and the license";
39
+ readonly members: "members, invitations, roles, profiles and SCIM tokens";
40
+ readonly keys: "API keys, attenuated child keys and on-behalf-of tokens";
41
+ readonly billing: "billing, invoices, budgets and trials";
42
+ readonly siem: "SIEM destinations and their dead-letter queue, and notification rules";
43
+ readonly integrations: "connectors and the GitHub, Slack and task-tracker integrations";
44
+ };
45
+ /** A REST area a scope can name. */
46
+ export type ApiKeyScopeArea = keyof typeof API_SCOPE_AREAS;
47
+ /** The scope that covers agent traffic. */
48
+ export declare const GATEWAY_USE_SCOPE: "gateway:use";
49
+ /** The scope that covers everything the owner's role allows. */
50
+ export declare const ALL_SCOPES: "*";
51
+ /** One scope a key can hold. */
52
+ export type ApiKeyScope = typeof ALL_SCOPES | typeof GATEWAY_USE_SCOPE | `${ApiKeyScopeArea}:${'read' | 'write'}`;
53
+ /** A scope with what it grants, as the dashboard, the CLI and the docs show it. */
54
+ export interface ApiKeyScopeEntry {
55
+ scope: ApiKeyScope;
56
+ description: string;
57
+ }
58
+ /** The registry: every valid scope, in display order. */
59
+ export declare const API_SCOPES: readonly ApiKeyScopeEntry[];
60
+ /** Every valid scope string. */
61
+ export declare const API_SCOPE_NAMES: readonly ApiKeyScope[];
62
+ /** The least-privilege preset for a key that only runs agents, CI jobs or a proxy. */
63
+ export declare const AUTOMATION_KEY_SCOPES: readonly ApiKeyScope[];
64
+ /** Whether `scope` is in the registry. */
65
+ export declare function isApiKeyScope(scope: string): scope is ApiKeyScope;
66
+ /** The scopes in `scopes` that are not in the registry. */
67
+ export declare function unknownApiKeyScopes(scopes: readonly string[]): string[];
68
+ /**
69
+ * Whether a key holding `granted` may act with `required`: `*` grants every
70
+ * scope, and `<area>:write` grants `<area>:read`.
71
+ */
72
+ export declare function scopeGrants(granted: readonly string[], required: string): boolean;
73
+ /** Whether a key holding `granted` may act with at least one of `anyOf`. */
74
+ export declare function scopesGrantAny(granted: readonly string[], anyOf: readonly string[]): boolean;
75
+ /**
76
+ * What a key's stored scopes grant.
77
+ *
78
+ * - The ones in the registry, compacted; strings outside it grant nothing and
79
+ * are listed in `ignored`. A key whose stored scopes are all outside the
80
+ * registry (free-form strings written before scopes were enforced, such as
81
+ * `["read"]`) grants nothing, so every request with it is refused with
82
+ * `INSUFFICIENT_SCOPE`, like any key lacking a scope. (Before 2.6.0 such a
83
+ * key worked as `*`.)
84
+ * - Missing (a NULL column): `*`, the column's default.
85
+ */
86
+ export declare function effectiveApiKeyScopes(stored: unknown): {
87
+ scopes: ApiKeyScope[];
88
+ ignored: string[];
89
+ };
90
+ /**
91
+ * The smallest list granting the same as `scopes`: `*` alone when present,
92
+ * and an area's `read` dropped when its `write` is there. Registry order.
93
+ */
94
+ export declare function compactScopes(scopes: readonly string[]): ApiKeyScope[];
95
+ /** What both `a` and `b` grant, compacted — a child key's reach under its parent. */
96
+ export declare function intersectScopes(a: readonly string[], b: readonly string[]): ApiKeyScope[];
97
+ /** The message naming the valid scopes, for a request that sent an unknown one. */
98
+ export declare function unknownScopesMessage(unknown: readonly string[]): string;
99
+ //# sourceMappingURL=apiKeyScopes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiKeyScopes.d.ts","sourceRoot":"","sources":["../src/apiKeyScopes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,yFAAyF;AACzF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;CAclB,CAAA;AAEV,oCAAoC;AACpC,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,eAAe,CAAA;AAE1D,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,EAAG,aAAsB,CAAA;AAEvD,gEAAgE;AAChE,eAAO,MAAM,UAAU,EAAG,GAAY,CAAA;AAEtC,gCAAgC;AAChC,MAAM,MAAM,WAAW,GAAG,OAAO,UAAU,GAAG,OAAO,iBAAiB,GAAG,GAAG,eAAe,IAAI,MAAM,GAAG,OAAO,EAAE,CAAA;AAEjH,mFAAmF;AACnF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,SAAS,gBAAgB,EAWjD,CAAA;AAED,gCAAgC;AAChC,eAAO,MAAM,eAAe,EAAE,SAAS,WAAW,EAAmC,CAAA;AAIrF,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,EAAE,SAAS,WAAW,EAAwB,CAAA;AAEhF,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,WAAW,CAEjE;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAEvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKjF;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAE5F;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAMnG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAKtE;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,WAAW,EAAE,CAGzF;AAED,mFAAmF;AACnF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAEvE"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /**
3
+ * API key scopes — what a `vk_` key may do, on top of its owner's role.
4
+ *
5
+ * One small, fixed vocabulary, in the shape GitHub fine-grained tokens, Stripe
6
+ * restricted keys, OpenAI project keys and Cloudflare API tokens share: a
7
+ * resource area with a `read` or `write` level, `write` covering `read`, and
8
+ * everything not granted refused. Three kinds of scope:
9
+ *
10
+ * - `*` — everything the owner's role allows. The default, and what every key
11
+ * minted before scopes were enforced holds.
12
+ * - `gateway:use` — agent traffic: what the proxy, the hook gates, the SDKs,
13
+ * the MCP proxy and the sync daemon send with a key (LLM calls through the
14
+ * proxy, gate checks, hook events, trace sync-back, holds). The scope for a
15
+ * key that only runs agents.
16
+ * - `<area>:read` / `<area>:write` — the REST API by area.
17
+ *
18
+ * A request made with a key needs BOTH: the owner's role must allow the route
19
+ * and the key's scopes must cover it. A dashboard session has no scopes; only
20
+ * its role applies. The control plane maps every route to the scopes that
21
+ * cover it (`services/control-plane/src/lib/routeScopes.ts`) and refuses an
22
+ * uncovered request with 403 `INSUFFICIENT_SCOPE`.
23
+ *
24
+ * Mirrored by the Terraform provider's `validKeyScopes` (checked by
25
+ * `__tests__/apiKeyScopes.test.ts`) and published in `apps/docs/reference/api.md`
26
+ * (generated from this file).
27
+ *
28
+ * @module
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.AUTOMATION_KEY_SCOPES = exports.API_SCOPE_NAMES = exports.API_SCOPES = exports.ALL_SCOPES = exports.GATEWAY_USE_SCOPE = exports.API_SCOPE_AREAS = void 0;
32
+ exports.isApiKeyScope = isApiKeyScope;
33
+ exports.unknownApiKeyScopes = unknownApiKeyScopes;
34
+ exports.scopeGrants = scopeGrants;
35
+ exports.scopesGrantAny = scopesGrantAny;
36
+ exports.effectiveApiKeyScopes = effectiveApiKeyScopes;
37
+ exports.compactScopes = compactScopes;
38
+ exports.intersectScopes = intersectScopes;
39
+ exports.unknownScopesMessage = unknownScopesMessage;
40
+ /** Every REST area a scope can name, with what it covers. Order is the display order. */
41
+ exports.API_SCOPE_AREAS = {
42
+ traces: 'traces, agent sessions, plans, loop runs, trajectories, agents and the tamper-evident trace chain',
43
+ usage: 'usage, cost and routing analytics, cost prediction and provider incidents',
44
+ findings: 'findings, incidents, anomalies, holds and decisions, judge reviews, governance cards, trust scores and break-glass',
45
+ sops: 'SOPs and their lifecycle, skills, the dream cycle, MetaClaw and optimisation suggestions',
46
+ policies: 'guardrails and policy documents, WASM rules, rule candidates and the evaluator sandbox',
47
+ compliance: 'compliance coverage, probes and evidence exports, and the audit timeline',
48
+ inventory: 'developer machines, harnesses, MCP servers, self-hosted gateways and governance coverage',
49
+ settings: 'workspace settings, provider credentials, region, orgs and teams, domains, SSO providers and the license',
50
+ members: 'members, invitations, roles, profiles and SCIM tokens',
51
+ keys: 'API keys, attenuated child keys and on-behalf-of tokens',
52
+ billing: 'billing, invoices, budgets and trials',
53
+ siem: 'SIEM destinations and their dead-letter queue, and notification rules',
54
+ integrations: 'connectors and the GitHub, Slack and task-tracker integrations',
55
+ };
56
+ /** The scope that covers agent traffic. */
57
+ exports.GATEWAY_USE_SCOPE = 'gateway:use';
58
+ /** The scope that covers everything the owner's role allows. */
59
+ exports.ALL_SCOPES = '*';
60
+ /** The registry: every valid scope, in display order. */
61
+ exports.API_SCOPES = [
62
+ { scope: exports.ALL_SCOPES, description: "Everything the key owner's role allows (the default)" },
63
+ {
64
+ scope: exports.GATEWAY_USE_SCOPE,
65
+ description: 'Agent traffic: LLM calls through the proxy, hook-gate checks, hook events, trace sync-back, sessions, holds, SOP rules, the policy snapshot and the workspace settings agents read',
66
+ },
67
+ ...Object.entries(exports.API_SCOPE_AREAS).flatMap(([area, covers]) => [
68
+ { scope: `${area}:read`, description: `Read ${covers}` },
69
+ { scope: `${area}:write`, description: `Read and change ${covers}` },
70
+ ]),
71
+ ];
72
+ /** Every valid scope string. */
73
+ exports.API_SCOPE_NAMES = exports.API_SCOPES.map((s) => s.scope);
74
+ const SCOPE_SET = new Set(exports.API_SCOPE_NAMES);
75
+ /** The least-privilege preset for a key that only runs agents, CI jobs or a proxy. */
76
+ exports.AUTOMATION_KEY_SCOPES = [exports.GATEWAY_USE_SCOPE];
77
+ /** Whether `scope` is in the registry. */
78
+ function isApiKeyScope(scope) {
79
+ return SCOPE_SET.has(scope);
80
+ }
81
+ /** The scopes in `scopes` that are not in the registry. */
82
+ function unknownApiKeyScopes(scopes) {
83
+ return scopes.filter((s) => !SCOPE_SET.has(s));
84
+ }
85
+ /**
86
+ * Whether a key holding `granted` may act with `required`: `*` grants every
87
+ * scope, and `<area>:write` grants `<area>:read`.
88
+ */
89
+ function scopeGrants(granted, required) {
90
+ if (granted.includes(exports.ALL_SCOPES))
91
+ return true;
92
+ if (granted.includes(required))
93
+ return true;
94
+ if (required.endsWith(':read'))
95
+ return granted.includes(`${required.slice(0, -':read'.length)}:write`);
96
+ return false;
97
+ }
98
+ /** Whether a key holding `granted` may act with at least one of `anyOf`. */
99
+ function scopesGrantAny(granted, anyOf) {
100
+ return anyOf.some((r) => scopeGrants(granted, r));
101
+ }
102
+ /**
103
+ * What a key's stored scopes grant.
104
+ *
105
+ * - The ones in the registry, compacted; strings outside it grant nothing and
106
+ * are listed in `ignored`. A key whose stored scopes are all outside the
107
+ * registry (free-form strings written before scopes were enforced, such as
108
+ * `["read"]`) grants nothing, so every request with it is refused with
109
+ * `INSUFFICIENT_SCOPE`, like any key lacking a scope. (Before 2.6.0 such a
110
+ * key worked as `*`.)
111
+ * - Missing (a NULL column): `*`, the column's default.
112
+ */
113
+ function effectiveApiKeyScopes(stored) {
114
+ if (!Array.isArray(stored))
115
+ return { scopes: [exports.ALL_SCOPES], ignored: [] };
116
+ const strings = stored.filter((s) => typeof s === 'string');
117
+ const known = strings.filter(isApiKeyScope);
118
+ const ignored = strings.filter((s) => !SCOPE_SET.has(s));
119
+ return { scopes: compactScopes(known), ignored };
120
+ }
121
+ /**
122
+ * The smallest list granting the same as `scopes`: `*` alone when present,
123
+ * and an area's `read` dropped when its `write` is there. Registry order.
124
+ */
125
+ function compactScopes(scopes) {
126
+ if (scopes.includes(exports.ALL_SCOPES))
127
+ return [exports.ALL_SCOPES];
128
+ return exports.API_SCOPE_NAMES.filter((s) => s !== exports.ALL_SCOPES && scopes.includes(s) && !(s.endsWith(':read') && scopes.includes(`${s.slice(0, -':read'.length)}:write`)));
129
+ }
130
+ /** What both `a` and `b` grant, compacted — a child key's reach under its parent. */
131
+ function intersectScopes(a, b) {
132
+ if (a.includes(exports.ALL_SCOPES) && b.includes(exports.ALL_SCOPES))
133
+ return [exports.ALL_SCOPES];
134
+ return compactScopes(exports.API_SCOPE_NAMES.filter((s) => s !== exports.ALL_SCOPES && scopeGrants(a, s) && scopeGrants(b, s)));
135
+ }
136
+ /** The message naming the valid scopes, for a request that sent an unknown one. */
137
+ function unknownScopesMessage(unknown) {
138
+ return `Unknown scope${unknown.length === 1 ? '' : 's'} ${unknown.map((s) => `"${s}"`).join(', ')}. Valid scopes: ${exports.API_SCOPE_NAMES.join(', ')}`;
139
+ }
140
+ //# sourceMappingURL=apiKeyScopes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiKeyScopes.js","sourceRoot":"","sources":["../src/apiKeyScopes.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,7 @@ export interface AttenuationChainLink {
72
72
  childKeyId: string;
73
73
  /** Workspace scope */
74
74
  workspaceId: string;
75
- /** Capabilities granted to the child key */
75
+ /** Scopes granted to the child key */
76
76
  grantedCaps: string[];
77
77
  /** Chain expiry (ISO-8601) */
78
78
  expiresAt: string;
@@ -82,7 +82,11 @@ export interface AttenuationChainLink {
82
82
  /** Request schema for token attenuation. */
83
83
  export declare const AttenuateTokenInputSchema: z.ZodObject<{
84
84
  parentKeyId: z.ZodString;
85
- requestedCaps: z.ZodArray<z.ZodString, "many">;
85
+ /**
86
+ * The child key's scopes (`API_SCOPES`), each one granted by the parent
87
+ * key: a child can only narrow.
88
+ */
89
+ requestedCaps: z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>;
86
90
  ttlSeconds: z.ZodOptional<z.ZodNumber>;
87
91
  }, "strip", z.ZodTypeAny, {
88
92
  parentKeyId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"attenuation.d.ts","sourceRoot":"","sources":["../src/attenuation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,qCAAqC;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,6CAA6C;AAC7C,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAIzE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,kCAAkC;IAClC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB;;;;;;;;;;;;EAIpC,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAK3E;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAA;AAErE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,0FAA0F;IAC1F,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB"}
1
+ {"version":3,"file":"attenuation.d.ts","sourceRoot":"","sources":["../src/attenuation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAKvB;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,qCAAqC;IACrC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,6CAA6C;AAC7C,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAA;AACF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAA;AAIzE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,kCAAkC;IAClC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,8DAA8D;IAC9D,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAA;IACnB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,sCAAsC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB;;IAEpC;;;OAGG;;;;;;;;;;;EASH,CAAA;AACF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAA;AAK3E;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAA;AAErE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,0FAA0F;IAC1F,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB"}
@@ -13,6 +13,7 @@
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.AttenuateTokenInputSchema = exports.IssueOboTokenInputSchema = void 0;
15
15
  const zod_1 = require("zod");
16
+ const apiKeyScopes_js_1 = require("./apiKeyScopes.js");
16
17
  /** Request schema for OBO token issuance. */
17
18
  exports.IssueOboTokenInputSchema = zod_1.z.object({
18
19
  sessionId: zod_1.z.string().min(1).optional(),
@@ -21,7 +22,18 @@ exports.IssueOboTokenInputSchema = zod_1.z.object({
21
22
  /** Request schema for token attenuation. */
22
23
  exports.AttenuateTokenInputSchema = zod_1.z.object({
23
24
  parentKeyId: zod_1.z.string().min(1),
24
- requestedCaps: zod_1.z.array(zod_1.z.string().min(1)).min(1, 'At least one capability must be requested'),
25
+ /**
26
+ * The child key's scopes (`API_SCOPES`), each one granted by the parent
27
+ * key: a child can only narrow.
28
+ */
29
+ requestedCaps: zod_1.z
30
+ .array(zod_1.z.string().min(1))
31
+ .min(1, 'At least one scope must be requested')
32
+ .superRefine((caps, ctx) => {
33
+ const unknown = (0, apiKeyScopes_js_1.unknownApiKeyScopes)(caps);
34
+ if (unknown.length > 0)
35
+ ctx.addIssue({ code: zod_1.z.ZodIssueCode.custom, message: (0, apiKeyScopes_js_1.unknownScopesMessage)(unknown) });
36
+ }),
25
37
  ttlSeconds: zod_1.z.number().int().min(60).max(86400).optional(),
26
38
  });
27
39
  //# sourceMappingURL=attenuation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attenuation.js","sourceRoot":"","sources":["../src/attenuation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,6BAAuB;AA2BvB,6CAA6C;AAChC,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,qCAAqC,CAAC;CACtF,CAAC,CAAA;AA0CF,4CAA4C;AAC/B,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,aAAa,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,2CAA2C,CAAC;IAC7F,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CAC3D,CAAC,CAAA"}
1
+ {"version":3,"file":"attenuation.js","sourceRoot":"","sources":["../src/attenuation.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;AAEH,6BAAuB;AACvB,uDAA6E;AA2B7E,6CAA6C;AAChC,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,qCAAqC,CAAC;CACtF,CAAC,CAAA;AA0CF,4CAA4C;AAC/B,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B;;;OAGG;IACH,aAAa,EAAE,OAAC;SACb,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SACxB,GAAG,CAAC,CAAC,EAAE,sCAAsC,CAAC;SAC9C,WAAW,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,IAAA,qCAAmB,EAAC,IAAI,CAAC,CAAA;QACzC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,IAAA,sCAAoB,EAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAC/G,CAAC,CAAC;IACJ,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;CAC3D,CAAC,CAAA"}
package/dist/auth.d.ts CHANGED
@@ -61,6 +61,15 @@ export interface AuthContext {
61
61
  hardBudgets?: HardBudgetWire[];
62
62
  /** The key's requests-per-minute and tokens-per-minute limits, when it has either. */
63
63
  rateLimit?: KeyRateLimit;
64
+ /**
65
+ * What the `vk_` key may do on top of its owner's role (`apiKeyScopes.ts`),
66
+ * already resolved: `*` for a key whose stored scopes predate the registry,
67
+ * and narrowed by every key above an attenuated child. Absent on a session
68
+ * JWT, which has no scopes. The proxy reads it from the cached entry and
69
+ * refuses LLM traffic from a key without `gateway:use`; an entry without the
70
+ * field was written before scopes were enforced.
71
+ */
72
+ scopes?: string[];
64
73
  }
65
74
  /** JWT access token payload (compact claims). */
66
75
  export interface JwtPayload {
@@ -347,10 +356,19 @@ export declare const MagicLinkLoginInputSchema: z.ZodObject<{
347
356
  }>;
348
357
  /** Magic link login input. */
349
358
  export type MagicLinkLoginInput = z.infer<typeof MagicLinkLoginInputSchema>;
359
+ /**
360
+ * A key's scope list: at least one, at most every scope, each one in the
361
+ * registry. An unknown scope is refused with a message naming the valid ones.
362
+ */
363
+ export declare const ApiKeyScopeListSchema: z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>;
350
364
  /** API key creation request schema. */
351
365
  export declare const CreateApiKeyInputSchema: z.ZodObject<{
352
366
  label: z.ZodString;
353
- scopes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
367
+ /**
368
+ * What the key may do on top of its owner's role; `["*"]` (everything) when
369
+ * omitted. Every entry must be in the registry (`API_SCOPES`).
370
+ */
371
+ scopes: z.ZodDefault<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
354
372
  expiresInDays: z.ZodOptional<z.ZodNumber>;
355
373
  /**
356
374
  * Optional per-key model allowlist. Omitted or empty inherits the workspace's
@@ -397,10 +415,10 @@ export interface CreateApiKeyResult {
397
415
  rateLimit: KeyRateLimit;
398
416
  }
399
417
  /**
400
- * `PATCH /api/v1/keys/:id` — replace a key's spend budgets and/or rate limit.
401
- * The only way to set them: any member creates their own keys, and only an
418
+ * `PATCH /api/v1/keys/:id` — replace a key's spend budgets, rate limit and/or scopes.
419
+ * The only way to change them: any member creates their own keys, and only an
402
420
  * OWNER or ADMIN may say what a key can spend, so a key is created unlimited
403
- * and limited afterwards.
421
+ * and limited afterwards. Scopes are set at creation and may be replaced here.
404
422
  * A field left out is unchanged; `budgets: []` removes every budget, and a
405
423
  * `rateLimit` field set to `null` removes that limit.
406
424
  */
@@ -436,7 +454,10 @@ export declare const UpdateApiKeyInputSchema: z.ZodEffects<z.ZodObject<{
436
454
  rpm?: number | null | undefined;
437
455
  tpm?: number | null | undefined;
438
456
  }>>;
457
+ /** Replaces the key's scopes; applies from the key's next request. */
458
+ scopes: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>>;
439
459
  }, "strict", z.ZodTypeAny, {
460
+ scopes?: string[] | undefined;
440
461
  budgets?: {
441
462
  period: "day" | "month";
442
463
  limitUsd: number;
@@ -447,6 +468,7 @@ export declare const UpdateApiKeyInputSchema: z.ZodEffects<z.ZodObject<{
447
468
  tpm?: number | null | undefined;
448
469
  } | undefined;
449
470
  }, {
471
+ scopes?: string[] | undefined;
450
472
  budgets?: {
451
473
  period: "day" | "month";
452
474
  limitUsd: number;
@@ -457,6 +479,7 @@ export declare const UpdateApiKeyInputSchema: z.ZodEffects<z.ZodObject<{
457
479
  tpm?: number | null | undefined;
458
480
  } | undefined;
459
481
  }>, {
482
+ scopes?: string[] | undefined;
460
483
  budgets?: {
461
484
  period: "day" | "month";
462
485
  limitUsd: number;
@@ -467,6 +490,7 @@ export declare const UpdateApiKeyInputSchema: z.ZodEffects<z.ZodObject<{
467
490
  tpm?: number | null | undefined;
468
491
  } | undefined;
469
492
  }, {
493
+ scopes?: string[] | undefined;
470
494
  budgets?: {
471
495
  period: "day" | "month";
472
496
  limitUsd: number;
@@ -483,6 +507,7 @@ export interface ApiKeyInfo {
483
507
  keyId: string;
484
508
  keyPrefix: string;
485
509
  label: string;
510
+ /** The scopes as stored on the key. */
486
511
  scopes: string[];
487
512
  /** Per-key model allowlist; `null` when the key inherits the workspace list. */
488
513
  allowedModels: string[] | null;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/auth.js CHANGED
@@ -7,9 +7,10 @@
7
7
  * @module
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.UpdateApiKeyInputSchema = exports.CreateApiKeyInputSchema = exports.MagicLinkLoginInputSchema = exports.MagicLinkRequestInputSchema = exports.ResendVerificationInputSchema = exports.VerifyEmailInputSchema = exports.OrgSignupInputSchema = exports.SignupInputSchema = exports.UpdateRoleInputSchema = exports.InviteMemberInputSchema = exports.ChangePasswordInputSchema = exports.RefreshInputSchema = exports.RegisterInputSchema = exports.LoginInputSchema = void 0;
10
+ exports.UpdateApiKeyInputSchema = exports.CreateApiKeyInputSchema = exports.ApiKeyScopeListSchema = exports.MagicLinkLoginInputSchema = exports.MagicLinkRequestInputSchema = exports.ResendVerificationInputSchema = exports.VerifyEmailInputSchema = exports.OrgSignupInputSchema = exports.SignupInputSchema = exports.UpdateRoleInputSchema = exports.InviteMemberInputSchema = exports.ChangePasswordInputSchema = exports.RefreshInputSchema = exports.RegisterInputSchema = exports.LoginInputSchema = void 0;
11
11
  const zod_1 = require("zod");
12
12
  const spendBudgets_js_1 = require("./spendBudgets.js");
13
+ const apiKeyScopes_js_1 = require("./apiKeyScopes.js");
13
14
  // ─── Login ───────────────────────────────────────────────────────────
14
15
  /** Login request schema (Zod validated). */
15
16
  exports.LoginInputSchema = zod_1.z.object({
@@ -104,10 +105,27 @@ exports.MagicLinkLoginInputSchema = zod_1.z.object({
104
105
  token: zod_1.z.string().min(1),
105
106
  });
106
107
  // ─── API Key ─────────────────────────────────────────────────────────
108
+ /**
109
+ * A key's scope list: at least one, at most every scope, each one in the
110
+ * registry. An unknown scope is refused with a message naming the valid ones.
111
+ */
112
+ exports.ApiKeyScopeListSchema = zod_1.z
113
+ .array(zod_1.z.string().trim().min(1).max(64))
114
+ .min(1, 'At least one scope is required; use ["*"] for everything')
115
+ .max(64)
116
+ .superRefine((scopes, ctx) => {
117
+ const unknown = (0, apiKeyScopes_js_1.unknownApiKeyScopes)(scopes);
118
+ if (unknown.length > 0)
119
+ ctx.addIssue({ code: zod_1.z.ZodIssueCode.custom, message: (0, apiKeyScopes_js_1.unknownScopesMessage)(unknown) });
120
+ });
107
121
  /** API key creation request schema. */
108
122
  exports.CreateApiKeyInputSchema = zod_1.z.object({
109
123
  label: zod_1.z.string().min(1).max(128),
110
- scopes: zod_1.z.array(zod_1.z.string()).default(['*']),
124
+ /**
125
+ * What the key may do on top of its owner's role; `["*"]` (everything) when
126
+ * omitted. Every entry must be in the registry (`API_SCOPES`).
127
+ */
128
+ scopes: exports.ApiKeyScopeListSchema.default(['*']),
111
129
  expiresInDays: zod_1.z.number().int().min(1).max(365).optional(),
112
130
  /**
113
131
  * Optional per-key model allowlist. Omitted or empty inherits the workspace's
@@ -123,10 +141,10 @@ exports.CreateApiKeyInputSchema = zod_1.z.object({
123
141
  isServiceAccount: zod_1.z.boolean().default(false),
124
142
  });
125
143
  /**
126
- * `PATCH /api/v1/keys/:id` — replace a key's spend budgets and/or rate limit.
127
- * The only way to set them: any member creates their own keys, and only an
144
+ * `PATCH /api/v1/keys/:id` — replace a key's spend budgets, rate limit and/or scopes.
145
+ * The only way to change them: any member creates their own keys, and only an
128
146
  * OWNER or ADMIN may say what a key can spend, so a key is created unlimited
129
- * and limited afterwards.
147
+ * and limited afterwards. Scopes are set at creation and may be replaced here.
130
148
  * A field left out is unchanged; `budgets: []` removes every budget, and a
131
149
  * `rateLimit` field set to `null` removes that limit.
132
150
  */
@@ -134,7 +152,9 @@ exports.UpdateApiKeyInputSchema = zod_1.z
134
152
  .object({
135
153
  budgets: spendBudgets_js_1.SpendBudgetListSchema.optional(),
136
154
  rateLimit: spendBudgets_js_1.KeyRateLimitSchema.optional(),
155
+ /** Replaces the key's scopes; applies from the key's next request. */
156
+ scopes: exports.ApiKeyScopeListSchema.optional(),
137
157
  })
138
158
  .strict()
139
- .refine((v) => v.budgets !== undefined || v.rateLimit !== undefined, 'nothing to change: send budgets or rateLimit');
159
+ .refine((v) => v.budgets !== undefined || v.rateLimit !== undefined || v.scopes !== undefined, 'nothing to change: send budgets, rateLimit or scopes');
140
160
  //# sourceMappingURL=auth.js.map
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}