@datacules/agent-identity 0.2.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.
- package/dist/cjs/approval.js +157 -0
- package/dist/cjs/approval.js.map +1 -0
- package/dist/cjs/attestation.js +89 -0
- package/dist/cjs/attestation.js.map +1 -0
- package/dist/cjs/budget.js +110 -0
- package/dist/cjs/budget.js.map +1 -0
- package/dist/cjs/credentials.js +14 -0
- package/dist/cjs/credentials.js.map +1 -0
- package/dist/cjs/decision.js +30 -0
- package/dist/cjs/decision.js.map +1 -0
- package/dist/cjs/federation.js +55 -0
- package/dist/cjs/federation.js.map +1 -0
- package/dist/cjs/index.js +42 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/providers.js +97 -0
- package/dist/cjs/providers.js.map +1 -0
- package/dist/cjs/rotation.js +127 -0
- package/dist/cjs/rotation.js.map +1 -0
- package/dist/cjs/router.js +216 -0
- package/dist/cjs/router.js.map +1 -0
- package/dist/cjs/schemas.js +127 -0
- package/dist/cjs/schemas.js.map +1 -0
- package/dist/cjs/types.js +4 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/esm/approval.js +150 -0
- package/dist/esm/approval.js.map +1 -0
- package/dist/esm/attestation.js +83 -0
- package/dist/esm/attestation.js.map +1 -0
- package/dist/esm/budget.js +105 -0
- package/dist/esm/budget.js.map +1 -0
- package/dist/esm/credentials.js +11 -0
- package/dist/esm/credentials.js.map +1 -0
- package/dist/esm/decision.js +27 -0
- package/dist/esm/decision.js.map +1 -0
- package/dist/esm/federation.js +50 -0
- package/dist/esm/federation.js.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/providers.js +92 -0
- package/dist/esm/providers.js.map +1 -0
- package/dist/esm/react/index.js +2 -0
- package/dist/esm/react/index.js.map +1 -0
- package/dist/esm/react/useAgentIdentity.js +100 -0
- package/dist/esm/react/useAgentIdentity.js.map +1 -0
- package/dist/esm/rotation.js +123 -0
- package/dist/esm/rotation.js.map +1 -0
- package/dist/esm/router.js +208 -0
- package/dist/esm/router.js.map +1 -0
- package/dist/esm/schemas.js +124 -0
- package/dist/esm/schemas.js.map +1 -0
- package/dist/esm/types.js +3 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/types/approval.d.ts +48 -0
- package/dist/types/approval.d.ts.map +1 -0
- package/dist/types/attestation.d.ts +36 -0
- package/dist/types/attestation.d.ts.map +1 -0
- package/dist/types/budget.d.ts +38 -0
- package/dist/types/budget.d.ts.map +1 -0
- package/dist/types/credentials.d.ts +4 -0
- package/dist/types/credentials.d.ts.map +1 -0
- package/dist/types/decision.d.ts +3 -0
- package/dist/types/decision.d.ts.map +1 -0
- package/dist/types/federation.d.ts +23 -0
- package/dist/types/federation.d.ts.map +1 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/providers.d.ts +13 -0
- package/dist/types/providers.d.ts.map +1 -0
- package/dist/types/react/index.d.ts +3 -0
- package/dist/types/react/index.d.ts.map +1 -0
- package/dist/types/react/useAgentIdentity.d.ts +58 -0
- package/dist/types/react/useAgentIdentity.d.ts.map +1 -0
- package/dist/types/rotation.d.ts +51 -0
- package/dist/types/rotation.d.ts.map +1 -0
- package/dist/types/router.d.ts +48 -0
- package/dist/types/router.d.ts.map +1 -0
- package/dist/types/schemas.d.ts +434 -0
- package/dist/types/schemas.d.ts.map +1 -0
- package/dist/types/types.d.ts +263 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @datacules/agent-identity/schemas
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas mirroring every public type. Three uses simultaneously:
|
|
5
|
+
* 1. Runtime validation in route handlers (replaces manual field loops)
|
|
6
|
+
* 2. TypeScript type inference via z.infer<>
|
|
7
|
+
* 3. JSON Schema / OpenAPI generation via zod-to-json-schema
|
|
8
|
+
*
|
|
9
|
+
* Since zod is already in dependencies, this costs nothing to ship.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
export declare const SupportedProviderSchema: z.ZodEnum<["openai", "anthropic", "gemini", "mistral", "local"]>;
|
|
13
|
+
export declare const ResourceKindSchema: z.ZodEnum<["shared", "personal"]>;
|
|
14
|
+
export declare const CredentialKindSchema: z.ZodEnum<["fixed", "user-delegated"]>;
|
|
15
|
+
export declare const CredentialStatusSchema: z.ZodEnum<["active", "pending", "revoked"]>;
|
|
16
|
+
export declare const MigrationPhaseSchema: z.ZodEnum<["dry-run", "extract", "transform", "load", "verify", "rollback"]>;
|
|
17
|
+
export declare const ApproverKindSchema: z.ZodEnum<["webhook", "email", "slack"]>;
|
|
18
|
+
export declare const RotationPolicySchema: z.ZodObject<{
|
|
19
|
+
rotateAfterDays: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
rotateAfterUses: z.ZodOptional<z.ZodNumber>;
|
|
21
|
+
gracePeriodSeconds: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
notifyBeforeDays: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
provisioner: z.ZodOptional<z.ZodString>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
provisioner?: string | undefined;
|
|
26
|
+
rotateAfterDays?: number | undefined;
|
|
27
|
+
rotateAfterUses?: number | undefined;
|
|
28
|
+
gracePeriodSeconds?: number | undefined;
|
|
29
|
+
notifyBeforeDays?: number | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
provisioner?: string | undefined;
|
|
32
|
+
rotateAfterDays?: number | undefined;
|
|
33
|
+
rotateAfterUses?: number | undefined;
|
|
34
|
+
gracePeriodSeconds?: number | undefined;
|
|
35
|
+
notifyBeforeDays?: number | undefined;
|
|
36
|
+
}>;
|
|
37
|
+
export declare const BudgetPolicySchema: z.ZodObject<{
|
|
38
|
+
maxResolutionsPerHour: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
maxConcurrentSessions: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
maxDailySpendUsd: z.ZodOptional<z.ZodNumber>;
|
|
41
|
+
softThresholdPercent: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
resetSchedule: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
maxResolutionsPerHour?: number | undefined;
|
|
45
|
+
maxConcurrentSessions?: number | undefined;
|
|
46
|
+
maxDailySpendUsd?: number | undefined;
|
|
47
|
+
softThresholdPercent?: number | undefined;
|
|
48
|
+
resetSchedule?: string | undefined;
|
|
49
|
+
}, {
|
|
50
|
+
maxResolutionsPerHour?: number | undefined;
|
|
51
|
+
maxConcurrentSessions?: number | undefined;
|
|
52
|
+
maxDailySpendUsd?: number | undefined;
|
|
53
|
+
softThresholdPercent?: number | undefined;
|
|
54
|
+
resetSchedule?: string | undefined;
|
|
55
|
+
}>;
|
|
56
|
+
export declare const ApproverSchema: z.ZodObject<{
|
|
57
|
+
kind: z.ZodEnum<["webhook", "email", "slack"]>;
|
|
58
|
+
target: z.ZodString;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
kind: "webhook" | "email" | "slack";
|
|
61
|
+
target: string;
|
|
62
|
+
}, {
|
|
63
|
+
kind: "webhook" | "email" | "slack";
|
|
64
|
+
target: string;
|
|
65
|
+
}>;
|
|
66
|
+
export declare const ApprovalPolicySchema: z.ZodObject<{
|
|
67
|
+
requiredApprovers: z.ZodNumber;
|
|
68
|
+
approvers: z.ZodArray<z.ZodObject<{
|
|
69
|
+
kind: z.ZodEnum<["webhook", "email", "slack"]>;
|
|
70
|
+
target: z.ZodString;
|
|
71
|
+
}, "strip", z.ZodTypeAny, {
|
|
72
|
+
kind: "webhook" | "email" | "slack";
|
|
73
|
+
target: string;
|
|
74
|
+
}, {
|
|
75
|
+
kind: "webhook" | "email" | "slack";
|
|
76
|
+
target: string;
|
|
77
|
+
}>, "many">;
|
|
78
|
+
timeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
79
|
+
breakGlass: z.ZodOptional<z.ZodObject<{
|
|
80
|
+
approver: z.ZodString;
|
|
81
|
+
requireJustification: z.ZodOptional<z.ZodBoolean>;
|
|
82
|
+
}, "strip", z.ZodTypeAny, {
|
|
83
|
+
approver: string;
|
|
84
|
+
requireJustification?: boolean | undefined;
|
|
85
|
+
}, {
|
|
86
|
+
approver: string;
|
|
87
|
+
requireJustification?: boolean | undefined;
|
|
88
|
+
}>>;
|
|
89
|
+
}, "strip", z.ZodTypeAny, {
|
|
90
|
+
requiredApprovers: number;
|
|
91
|
+
approvers: {
|
|
92
|
+
kind: "webhook" | "email" | "slack";
|
|
93
|
+
target: string;
|
|
94
|
+
}[];
|
|
95
|
+
timeoutSeconds?: number | undefined;
|
|
96
|
+
breakGlass?: {
|
|
97
|
+
approver: string;
|
|
98
|
+
requireJustification?: boolean | undefined;
|
|
99
|
+
} | undefined;
|
|
100
|
+
}, {
|
|
101
|
+
requiredApprovers: number;
|
|
102
|
+
approvers: {
|
|
103
|
+
kind: "webhook" | "email" | "slack";
|
|
104
|
+
target: string;
|
|
105
|
+
}[];
|
|
106
|
+
timeoutSeconds?: number | undefined;
|
|
107
|
+
breakGlass?: {
|
|
108
|
+
approver: string;
|
|
109
|
+
requireJustification?: boolean | undefined;
|
|
110
|
+
} | undefined;
|
|
111
|
+
}>;
|
|
112
|
+
export declare const CredentialSchema: z.ZodObject<{
|
|
113
|
+
id: z.ZodString;
|
|
114
|
+
kind: z.ZodEnum<["fixed", "user-delegated"]>;
|
|
115
|
+
name: z.ZodString;
|
|
116
|
+
scope: z.ZodString;
|
|
117
|
+
status: z.ZodEnum<["active", "pending", "revoked"]>;
|
|
118
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
119
|
+
ref: z.ZodString;
|
|
120
|
+
expiresAt: z.ZodOptional<z.ZodString>;
|
|
121
|
+
lastRotated: z.ZodOptional<z.ZodString>;
|
|
122
|
+
refreshTokenRef: z.ZodOptional<z.ZodString>;
|
|
123
|
+
rotationIntervalDays: z.ZodOptional<z.ZodNumber>;
|
|
124
|
+
rotation: z.ZodOptional<z.ZodObject<{
|
|
125
|
+
rotateAfterDays: z.ZodOptional<z.ZodNumber>;
|
|
126
|
+
rotateAfterUses: z.ZodOptional<z.ZodNumber>;
|
|
127
|
+
gracePeriodSeconds: z.ZodOptional<z.ZodNumber>;
|
|
128
|
+
notifyBeforeDays: z.ZodOptional<z.ZodNumber>;
|
|
129
|
+
provisioner: z.ZodOptional<z.ZodString>;
|
|
130
|
+
}, "strip", z.ZodTypeAny, {
|
|
131
|
+
provisioner?: string | undefined;
|
|
132
|
+
rotateAfterDays?: number | undefined;
|
|
133
|
+
rotateAfterUses?: number | undefined;
|
|
134
|
+
gracePeriodSeconds?: number | undefined;
|
|
135
|
+
notifyBeforeDays?: number | undefined;
|
|
136
|
+
}, {
|
|
137
|
+
provisioner?: string | undefined;
|
|
138
|
+
rotateAfterDays?: number | undefined;
|
|
139
|
+
rotateAfterUses?: number | undefined;
|
|
140
|
+
gracePeriodSeconds?: number | undefined;
|
|
141
|
+
notifyBeforeDays?: number | undefined;
|
|
142
|
+
}>>;
|
|
143
|
+
budget: z.ZodOptional<z.ZodObject<{
|
|
144
|
+
maxResolutionsPerHour: z.ZodOptional<z.ZodNumber>;
|
|
145
|
+
maxConcurrentSessions: z.ZodOptional<z.ZodNumber>;
|
|
146
|
+
maxDailySpendUsd: z.ZodOptional<z.ZodNumber>;
|
|
147
|
+
softThresholdPercent: z.ZodOptional<z.ZodNumber>;
|
|
148
|
+
resetSchedule: z.ZodOptional<z.ZodString>;
|
|
149
|
+
}, "strip", z.ZodTypeAny, {
|
|
150
|
+
maxResolutionsPerHour?: number | undefined;
|
|
151
|
+
maxConcurrentSessions?: number | undefined;
|
|
152
|
+
maxDailySpendUsd?: number | undefined;
|
|
153
|
+
softThresholdPercent?: number | undefined;
|
|
154
|
+
resetSchedule?: string | undefined;
|
|
155
|
+
}, {
|
|
156
|
+
maxResolutionsPerHour?: number | undefined;
|
|
157
|
+
maxConcurrentSessions?: number | undefined;
|
|
158
|
+
maxDailySpendUsd?: number | undefined;
|
|
159
|
+
softThresholdPercent?: number | undefined;
|
|
160
|
+
resetSchedule?: string | undefined;
|
|
161
|
+
}>>;
|
|
162
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
163
|
+
}, "strip", z.ZodTypeAny, {
|
|
164
|
+
status: "active" | "pending" | "revoked";
|
|
165
|
+
name: string;
|
|
166
|
+
kind: "user-delegated" | "fixed";
|
|
167
|
+
id: string;
|
|
168
|
+
scope: string;
|
|
169
|
+
ref: string;
|
|
170
|
+
expiresAt?: string | undefined;
|
|
171
|
+
provider?: string | undefined;
|
|
172
|
+
lastRotated?: string | undefined;
|
|
173
|
+
refreshTokenRef?: string | undefined;
|
|
174
|
+
rotationIntervalDays?: number | undefined;
|
|
175
|
+
rotation?: {
|
|
176
|
+
provisioner?: string | undefined;
|
|
177
|
+
rotateAfterDays?: number | undefined;
|
|
178
|
+
rotateAfterUses?: number | undefined;
|
|
179
|
+
gracePeriodSeconds?: number | undefined;
|
|
180
|
+
notifyBeforeDays?: number | undefined;
|
|
181
|
+
} | undefined;
|
|
182
|
+
budget?: {
|
|
183
|
+
maxResolutionsPerHour?: number | undefined;
|
|
184
|
+
maxConcurrentSessions?: number | undefined;
|
|
185
|
+
maxDailySpendUsd?: number | undefined;
|
|
186
|
+
softThresholdPercent?: number | undefined;
|
|
187
|
+
resetSchedule?: string | undefined;
|
|
188
|
+
} | undefined;
|
|
189
|
+
tags?: string[] | undefined;
|
|
190
|
+
}, {
|
|
191
|
+
status: "active" | "pending" | "revoked";
|
|
192
|
+
name: string;
|
|
193
|
+
kind: "user-delegated" | "fixed";
|
|
194
|
+
id: string;
|
|
195
|
+
scope: string;
|
|
196
|
+
ref: string;
|
|
197
|
+
expiresAt?: string | undefined;
|
|
198
|
+
provider?: string | undefined;
|
|
199
|
+
lastRotated?: string | undefined;
|
|
200
|
+
refreshTokenRef?: string | undefined;
|
|
201
|
+
rotationIntervalDays?: number | undefined;
|
|
202
|
+
rotation?: {
|
|
203
|
+
provisioner?: string | undefined;
|
|
204
|
+
rotateAfterDays?: number | undefined;
|
|
205
|
+
rotateAfterUses?: number | undefined;
|
|
206
|
+
gracePeriodSeconds?: number | undefined;
|
|
207
|
+
notifyBeforeDays?: number | undefined;
|
|
208
|
+
} | undefined;
|
|
209
|
+
budget?: {
|
|
210
|
+
maxResolutionsPerHour?: number | undefined;
|
|
211
|
+
maxConcurrentSessions?: number | undefined;
|
|
212
|
+
maxDailySpendUsd?: number | undefined;
|
|
213
|
+
softThresholdPercent?: number | undefined;
|
|
214
|
+
resetSchedule?: string | undefined;
|
|
215
|
+
} | undefined;
|
|
216
|
+
tags?: string[] | undefined;
|
|
217
|
+
}>;
|
|
218
|
+
export declare const RoutingRuleSchema: z.ZodObject<{
|
|
219
|
+
id: z.ZodString;
|
|
220
|
+
description: z.ZodString;
|
|
221
|
+
credentialRef: z.ZodString;
|
|
222
|
+
credentialKind: z.ZodEnum<["fixed", "user-delegated"]>;
|
|
223
|
+
priority: z.ZodNumber;
|
|
224
|
+
matchResourceKind: z.ZodOptional<z.ZodEnum<["shared", "personal"]>>;
|
|
225
|
+
matchAction: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
226
|
+
matchProvider: z.ZodOptional<z.ZodEnum<["openai", "anthropic", "gemini", "mistral", "local"]>>;
|
|
227
|
+
matchUserId: z.ZodOptional<z.ZodString>;
|
|
228
|
+
matchPhase: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["dry-run", "extract", "transform", "load", "verify", "rollback"]>, z.ZodArray<z.ZodEnum<["dry-run", "extract", "transform", "load", "verify", "rollback"]>, "many">]>>;
|
|
229
|
+
matchSpiffeId: z.ZodOptional<z.ZodString>;
|
|
230
|
+
readOnly: z.ZodOptional<z.ZodBoolean>;
|
|
231
|
+
canaryRef: z.ZodOptional<z.ZodString>;
|
|
232
|
+
canaryWeight: z.ZodOptional<z.ZodNumber>;
|
|
233
|
+
approval: z.ZodOptional<z.ZodObject<{
|
|
234
|
+
requiredApprovers: z.ZodNumber;
|
|
235
|
+
approvers: z.ZodArray<z.ZodObject<{
|
|
236
|
+
kind: z.ZodEnum<["webhook", "email", "slack"]>;
|
|
237
|
+
target: z.ZodString;
|
|
238
|
+
}, "strip", z.ZodTypeAny, {
|
|
239
|
+
kind: "webhook" | "email" | "slack";
|
|
240
|
+
target: string;
|
|
241
|
+
}, {
|
|
242
|
+
kind: "webhook" | "email" | "slack";
|
|
243
|
+
target: string;
|
|
244
|
+
}>, "many">;
|
|
245
|
+
timeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
246
|
+
breakGlass: z.ZodOptional<z.ZodObject<{
|
|
247
|
+
approver: z.ZodString;
|
|
248
|
+
requireJustification: z.ZodOptional<z.ZodBoolean>;
|
|
249
|
+
}, "strip", z.ZodTypeAny, {
|
|
250
|
+
approver: string;
|
|
251
|
+
requireJustification?: boolean | undefined;
|
|
252
|
+
}, {
|
|
253
|
+
approver: string;
|
|
254
|
+
requireJustification?: boolean | undefined;
|
|
255
|
+
}>>;
|
|
256
|
+
}, "strip", z.ZodTypeAny, {
|
|
257
|
+
requiredApprovers: number;
|
|
258
|
+
approvers: {
|
|
259
|
+
kind: "webhook" | "email" | "slack";
|
|
260
|
+
target: string;
|
|
261
|
+
}[];
|
|
262
|
+
timeoutSeconds?: number | undefined;
|
|
263
|
+
breakGlass?: {
|
|
264
|
+
approver: string;
|
|
265
|
+
requireJustification?: boolean | undefined;
|
|
266
|
+
} | undefined;
|
|
267
|
+
}, {
|
|
268
|
+
requiredApprovers: number;
|
|
269
|
+
approvers: {
|
|
270
|
+
kind: "webhook" | "email" | "slack";
|
|
271
|
+
target: string;
|
|
272
|
+
}[];
|
|
273
|
+
timeoutSeconds?: number | undefined;
|
|
274
|
+
breakGlass?: {
|
|
275
|
+
approver: string;
|
|
276
|
+
requireJustification?: boolean | undefined;
|
|
277
|
+
} | undefined;
|
|
278
|
+
}>>;
|
|
279
|
+
}, "strip", z.ZodTypeAny, {
|
|
280
|
+
id: string;
|
|
281
|
+
description: string;
|
|
282
|
+
credentialRef: string;
|
|
283
|
+
credentialKind: "user-delegated" | "fixed";
|
|
284
|
+
priority: number;
|
|
285
|
+
matchResourceKind?: "shared" | "personal" | undefined;
|
|
286
|
+
matchAction?: string | string[] | undefined;
|
|
287
|
+
matchProvider?: "openai" | "anthropic" | "gemini" | "mistral" | "local" | undefined;
|
|
288
|
+
matchUserId?: string | undefined;
|
|
289
|
+
matchPhase?: "dry-run" | "extract" | "transform" | "load" | "verify" | "rollback" | ("dry-run" | "extract" | "transform" | "load" | "verify" | "rollback")[] | undefined;
|
|
290
|
+
matchSpiffeId?: string | undefined;
|
|
291
|
+
readOnly?: boolean | undefined;
|
|
292
|
+
canaryRef?: string | undefined;
|
|
293
|
+
canaryWeight?: number | undefined;
|
|
294
|
+
approval?: {
|
|
295
|
+
requiredApprovers: number;
|
|
296
|
+
approvers: {
|
|
297
|
+
kind: "webhook" | "email" | "slack";
|
|
298
|
+
target: string;
|
|
299
|
+
}[];
|
|
300
|
+
timeoutSeconds?: number | undefined;
|
|
301
|
+
breakGlass?: {
|
|
302
|
+
approver: string;
|
|
303
|
+
requireJustification?: boolean | undefined;
|
|
304
|
+
} | undefined;
|
|
305
|
+
} | undefined;
|
|
306
|
+
}, {
|
|
307
|
+
id: string;
|
|
308
|
+
description: string;
|
|
309
|
+
credentialRef: string;
|
|
310
|
+
credentialKind: "user-delegated" | "fixed";
|
|
311
|
+
priority: number;
|
|
312
|
+
matchResourceKind?: "shared" | "personal" | undefined;
|
|
313
|
+
matchAction?: string | string[] | undefined;
|
|
314
|
+
matchProvider?: "openai" | "anthropic" | "gemini" | "mistral" | "local" | undefined;
|
|
315
|
+
matchUserId?: string | undefined;
|
|
316
|
+
matchPhase?: "dry-run" | "extract" | "transform" | "load" | "verify" | "rollback" | ("dry-run" | "extract" | "transform" | "load" | "verify" | "rollback")[] | undefined;
|
|
317
|
+
matchSpiffeId?: string | undefined;
|
|
318
|
+
readOnly?: boolean | undefined;
|
|
319
|
+
canaryRef?: string | undefined;
|
|
320
|
+
canaryWeight?: number | undefined;
|
|
321
|
+
approval?: {
|
|
322
|
+
requiredApprovers: number;
|
|
323
|
+
approvers: {
|
|
324
|
+
kind: "webhook" | "email" | "slack";
|
|
325
|
+
target: string;
|
|
326
|
+
}[];
|
|
327
|
+
timeoutSeconds?: number | undefined;
|
|
328
|
+
breakGlass?: {
|
|
329
|
+
approver: string;
|
|
330
|
+
requireJustification?: boolean | undefined;
|
|
331
|
+
} | undefined;
|
|
332
|
+
} | undefined;
|
|
333
|
+
}>;
|
|
334
|
+
export declare const AgentRequestContextSchema: z.ZodObject<{
|
|
335
|
+
userId: z.ZodString;
|
|
336
|
+
resourceId: z.ZodString;
|
|
337
|
+
resourceKind: z.ZodEnum<["shared", "personal"]>;
|
|
338
|
+
provider: z.ZodEnum<["openai", "anthropic", "gemini", "mistral", "local"]>;
|
|
339
|
+
model: z.ZodString;
|
|
340
|
+
action: z.ZodString;
|
|
341
|
+
traceId: z.ZodString;
|
|
342
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
343
|
+
requestedAt: z.ZodString;
|
|
344
|
+
parentTraceId: z.ZodOptional<z.ZodString>;
|
|
345
|
+
spiffeId: z.ZodOptional<z.ZodString>;
|
|
346
|
+
}, "strip", z.ZodTypeAny, {
|
|
347
|
+
model: string;
|
|
348
|
+
provider: "openai" | "anthropic" | "gemini" | "mistral" | "local";
|
|
349
|
+
userId: string;
|
|
350
|
+
resourceId: string;
|
|
351
|
+
resourceKind: "shared" | "personal";
|
|
352
|
+
action: string;
|
|
353
|
+
traceId: string;
|
|
354
|
+
requestedAt: string;
|
|
355
|
+
sessionId?: string | undefined;
|
|
356
|
+
parentTraceId?: string | undefined;
|
|
357
|
+
spiffeId?: string | undefined;
|
|
358
|
+
}, {
|
|
359
|
+
model: string;
|
|
360
|
+
provider: "openai" | "anthropic" | "gemini" | "mistral" | "local";
|
|
361
|
+
userId: string;
|
|
362
|
+
resourceId: string;
|
|
363
|
+
resourceKind: "shared" | "personal";
|
|
364
|
+
action: string;
|
|
365
|
+
traceId: string;
|
|
366
|
+
requestedAt: string;
|
|
367
|
+
sessionId?: string | undefined;
|
|
368
|
+
parentTraceId?: string | undefined;
|
|
369
|
+
spiffeId?: string | undefined;
|
|
370
|
+
}>;
|
|
371
|
+
export declare const MigrationContextSchema: z.ZodObject<{
|
|
372
|
+
userId: z.ZodString;
|
|
373
|
+
resourceId: z.ZodString;
|
|
374
|
+
resourceKind: z.ZodEnum<["shared", "personal"]>;
|
|
375
|
+
provider: z.ZodEnum<["openai", "anthropic", "gemini", "mistral", "local"]>;
|
|
376
|
+
model: z.ZodString;
|
|
377
|
+
action: z.ZodString;
|
|
378
|
+
traceId: z.ZodString;
|
|
379
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
380
|
+
requestedAt: z.ZodString;
|
|
381
|
+
parentTraceId: z.ZodOptional<z.ZodString>;
|
|
382
|
+
spiffeId: z.ZodOptional<z.ZodString>;
|
|
383
|
+
} & {
|
|
384
|
+
migrationId: z.ZodString;
|
|
385
|
+
phase: z.ZodEnum<["dry-run", "extract", "transform", "load", "verify", "rollback"]>;
|
|
386
|
+
sourceResourceId: z.ZodString;
|
|
387
|
+
targetResourceId: z.ZodString;
|
|
388
|
+
dryRun: z.ZodBoolean;
|
|
389
|
+
batchIndex: z.ZodOptional<z.ZodNumber>;
|
|
390
|
+
totalBatches: z.ZodOptional<z.ZodNumber>;
|
|
391
|
+
}, "strip", z.ZodTypeAny, {
|
|
392
|
+
migrationId: string;
|
|
393
|
+
model: string;
|
|
394
|
+
provider: "openai" | "anthropic" | "gemini" | "mistral" | "local";
|
|
395
|
+
userId: string;
|
|
396
|
+
resourceId: string;
|
|
397
|
+
resourceKind: "shared" | "personal";
|
|
398
|
+
action: string;
|
|
399
|
+
traceId: string;
|
|
400
|
+
requestedAt: string;
|
|
401
|
+
phase: "dry-run" | "extract" | "transform" | "load" | "verify" | "rollback";
|
|
402
|
+
sourceResourceId: string;
|
|
403
|
+
targetResourceId: string;
|
|
404
|
+
dryRun: boolean;
|
|
405
|
+
sessionId?: string | undefined;
|
|
406
|
+
parentTraceId?: string | undefined;
|
|
407
|
+
spiffeId?: string | undefined;
|
|
408
|
+
batchIndex?: number | undefined;
|
|
409
|
+
totalBatches?: number | undefined;
|
|
410
|
+
}, {
|
|
411
|
+
migrationId: string;
|
|
412
|
+
model: string;
|
|
413
|
+
provider: "openai" | "anthropic" | "gemini" | "mistral" | "local";
|
|
414
|
+
userId: string;
|
|
415
|
+
resourceId: string;
|
|
416
|
+
resourceKind: "shared" | "personal";
|
|
417
|
+
action: string;
|
|
418
|
+
traceId: string;
|
|
419
|
+
requestedAt: string;
|
|
420
|
+
phase: "dry-run" | "extract" | "transform" | "load" | "verify" | "rollback";
|
|
421
|
+
sourceResourceId: string;
|
|
422
|
+
targetResourceId: string;
|
|
423
|
+
dryRun: boolean;
|
|
424
|
+
sessionId?: string | undefined;
|
|
425
|
+
parentTraceId?: string | undefined;
|
|
426
|
+
spiffeId?: string | undefined;
|
|
427
|
+
batchIndex?: number | undefined;
|
|
428
|
+
totalBatches?: number | undefined;
|
|
429
|
+
}>;
|
|
430
|
+
export type AgentRequestContextInput = z.infer<typeof AgentRequestContextSchema>;
|
|
431
|
+
export type MigrationContextInput = z.infer<typeof MigrationContextSchema>;
|
|
432
|
+
export type RoutingRuleInput = z.infer<typeof RoutingRuleSchema>;
|
|
433
|
+
export type CredentialInput = z.infer<typeof CredentialSchema>;
|
|
434
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,uBAAuB,kEAMlC,CAAC;AAEH,eAAO,MAAM,kBAAkB,mCAAiC,CAAC;AAEjE,eAAO,MAAM,oBAAoB,wCAAsC,CAAC;AAExE,eAAO,MAAM,sBAAsB,6CAA2C,CAAC;AAE/E,eAAO,MAAM,oBAAoB,8EAO/B,CAAC;AAEH,eAAO,MAAM,kBAAkB,0CAAwC,CAAC;AAIxE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAIH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAM7B,CAAC;AAIH,eAAO,MAAM,cAAc;;;;;;;;;EAGzB,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU/B,CAAC;AAIH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe3B,CAAC;AAIH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB5B,CAAC;AAIH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYpC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQjC,CAAC;AAKH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACjF,MAAM,MAAM,qBAAqB,GAAM,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC9E,MAAM,MAAM,gBAAgB,GAAW,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACzE,MAAM,MAAM,eAAe,GAAY,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
export type IdentityType = 'user-delegated' | 'fixed-service' | 'hybrid' | 'agent-as-service';
|
|
2
|
+
export interface Identity {
|
|
3
|
+
id: string;
|
|
4
|
+
type: IdentityType;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
tags: string[];
|
|
8
|
+
}
|
|
9
|
+
export type AuthPatternType = 'individual-user-auth' | 'fixed-credential' | 'context-switched' | 'token-exchange';
|
|
10
|
+
export interface AuthPattern {
|
|
11
|
+
id: AuthPatternType;
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
badgeLabel: string;
|
|
15
|
+
recommended?: boolean;
|
|
16
|
+
flowNodes: FlowNode[];
|
|
17
|
+
}
|
|
18
|
+
export interface FlowNode {
|
|
19
|
+
label: string;
|
|
20
|
+
sublabel: string;
|
|
21
|
+
variant: 'default' | 'blue' | 'red' | 'green' | 'amber';
|
|
22
|
+
}
|
|
23
|
+
export interface RotationPolicy {
|
|
24
|
+
rotateAfterDays?: number;
|
|
25
|
+
rotateAfterUses?: number;
|
|
26
|
+
gracePeriodSeconds?: number;
|
|
27
|
+
notifyBeforeDays?: number;
|
|
28
|
+
/** Matches a registered RotationProvider.id */
|
|
29
|
+
provisioner?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface BudgetPolicy {
|
|
32
|
+
maxResolutionsPerHour?: number;
|
|
33
|
+
maxConcurrentSessions?: number;
|
|
34
|
+
maxDailySpendUsd?: number;
|
|
35
|
+
/** Percentage of any limit at which to emit a budget_warning event (default: 80) */
|
|
36
|
+
softThresholdPercent?: number;
|
|
37
|
+
/** Cron expression for reset schedule (default: daily midnight UTC) */
|
|
38
|
+
resetSchedule?: string;
|
|
39
|
+
}
|
|
40
|
+
export type CredentialKind = 'fixed' | 'user-delegated';
|
|
41
|
+
export type CredentialStatus = 'active' | 'pending' | 'revoked';
|
|
42
|
+
export interface Credential {
|
|
43
|
+
id: string;
|
|
44
|
+
kind: CredentialKind;
|
|
45
|
+
name: string;
|
|
46
|
+
scope: string;
|
|
47
|
+
status: CredentialStatus;
|
|
48
|
+
provider?: string;
|
|
49
|
+
/** Never the raw secret — a reference/slot identifier */
|
|
50
|
+
ref: string;
|
|
51
|
+
/** ISO 8601 — undefined means does not expire */
|
|
52
|
+
expiresAt?: string;
|
|
53
|
+
lastRotated?: string;
|
|
54
|
+
refreshTokenRef?: string;
|
|
55
|
+
rotationIntervalDays?: number;
|
|
56
|
+
/** Automated rotation policy — undefined means manual rotation only */
|
|
57
|
+
rotation?: RotationPolicy;
|
|
58
|
+
/** Usage budget enforcement policy */
|
|
59
|
+
budget?: BudgetPolicy;
|
|
60
|
+
/** Arbitrary tags e.g. ['pii', 'financial', 'prod'] — used by compliance reports */
|
|
61
|
+
tags?: string[];
|
|
62
|
+
}
|
|
63
|
+
export type ApproverKind = 'webhook' | 'email' | 'slack';
|
|
64
|
+
export interface Approver {
|
|
65
|
+
kind: ApproverKind;
|
|
66
|
+
/** Webhook URL, email address, or Slack channel ID */
|
|
67
|
+
target: string;
|
|
68
|
+
}
|
|
69
|
+
export interface ApprovalPolicy {
|
|
70
|
+
requiredApprovers: number;
|
|
71
|
+
approvers: Approver[];
|
|
72
|
+
/** Seconds before auto-reject (default: 300) */
|
|
73
|
+
timeoutSeconds?: number;
|
|
74
|
+
breakGlass?: {
|
|
75
|
+
/** User ID of the emergency approver */
|
|
76
|
+
approver: string;
|
|
77
|
+
/** Whether to require a written justification */
|
|
78
|
+
requireJustification?: boolean;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export type ResourceKind = 'shared' | 'personal';
|
|
82
|
+
export interface RoutingRule {
|
|
83
|
+
id: string;
|
|
84
|
+
description: string;
|
|
85
|
+
credentialRef: string;
|
|
86
|
+
credentialKind: CredentialKind;
|
|
87
|
+
priority: number;
|
|
88
|
+
matchResourceKind?: ResourceKind;
|
|
89
|
+
matchAction?: string | string[];
|
|
90
|
+
matchProvider?: SupportedProvider;
|
|
91
|
+
matchUserId?: string;
|
|
92
|
+
matchPhase?: MigrationPhase | MigrationPhase[];
|
|
93
|
+
matchSpiffeId?: string;
|
|
94
|
+
readOnly?: boolean;
|
|
95
|
+
/** Secondary credential ref receiving canaryWeight % of traffic */
|
|
96
|
+
canaryRef?: string;
|
|
97
|
+
/** 0–100 — percentage of traffic routed to canaryRef (default: 0) */
|
|
98
|
+
canaryWeight?: number;
|
|
99
|
+
/** Approval required before credential resolves */
|
|
100
|
+
approval?: ApprovalPolicy;
|
|
101
|
+
}
|
|
102
|
+
export interface AgentRequestContext {
|
|
103
|
+
userId: string;
|
|
104
|
+
resourceId: string;
|
|
105
|
+
resourceKind: ResourceKind;
|
|
106
|
+
provider: SupportedProvider;
|
|
107
|
+
model: string;
|
|
108
|
+
action: string;
|
|
109
|
+
traceId: string;
|
|
110
|
+
sessionId?: string;
|
|
111
|
+
requestedAt: string;
|
|
112
|
+
parentTraceId?: string;
|
|
113
|
+
/** SPIFFE SVID of the calling workload (set by SpiffeCredentialStore) */
|
|
114
|
+
spiffeId?: string;
|
|
115
|
+
}
|
|
116
|
+
export interface ResolvedCredential {
|
|
117
|
+
credentialId: string;
|
|
118
|
+
kind: CredentialKind;
|
|
119
|
+
ref: string;
|
|
120
|
+
resolvedFor: string;
|
|
121
|
+
/** ISO 8601 expiry of this resolved credential */
|
|
122
|
+
expiresAt?: string;
|
|
123
|
+
/** Signed JWT attestation — present when AttestationSigner is configured */
|
|
124
|
+
credentialAttestation?: string;
|
|
125
|
+
/** True when this resolution was routed to the canary ref */
|
|
126
|
+
isCanary?: boolean;
|
|
127
|
+
}
|
|
128
|
+
export type MigrationPhase = 'dry-run' | 'extract' | 'transform' | 'load' | 'verify' | 'rollback';
|
|
129
|
+
export interface MigrationContext extends AgentRequestContext {
|
|
130
|
+
migrationId: string;
|
|
131
|
+
phase: MigrationPhase;
|
|
132
|
+
sourceResourceId: string;
|
|
133
|
+
targetResourceId: string;
|
|
134
|
+
batchIndex?: number;
|
|
135
|
+
totalBatches?: number;
|
|
136
|
+
dryRun: boolean;
|
|
137
|
+
}
|
|
138
|
+
export interface ResolvedCredentialPair {
|
|
139
|
+
source: ResolvedCredential;
|
|
140
|
+
target: ResolvedCredential;
|
|
141
|
+
migrationId: string;
|
|
142
|
+
expiresAt?: string;
|
|
143
|
+
}
|
|
144
|
+
export type SupportedProvider = 'openai' | 'anthropic' | 'gemini' | 'mistral' | 'local';
|
|
145
|
+
export interface ProviderAdapter {
|
|
146
|
+
id: SupportedProvider;
|
|
147
|
+
label: string;
|
|
148
|
+
injectCredential(request: Record<string, unknown>, credential: ResolvedCredential): Record<string, unknown>;
|
|
149
|
+
validate?(request: Record<string, unknown>): void;
|
|
150
|
+
validateForMigration?(credential: ResolvedCredential, phase: MigrationPhase): void;
|
|
151
|
+
}
|
|
152
|
+
export interface CredentialStore {
|
|
153
|
+
findByRef(ref: string): Promise<Credential | null>;
|
|
154
|
+
listActive(): Promise<Credential[]>;
|
|
155
|
+
listByKind(kind: CredentialKind): Promise<Credential[]>;
|
|
156
|
+
reserve?(ref: string, migrationId: string, ttlSeconds: number): Promise<boolean>;
|
|
157
|
+
release?(ref: string, migrationId: string): Promise<void>;
|
|
158
|
+
}
|
|
159
|
+
export interface AuditLogEntry {
|
|
160
|
+
timestamp: string;
|
|
161
|
+
traceId: string;
|
|
162
|
+
userId: string;
|
|
163
|
+
action: string;
|
|
164
|
+
resourceId: string;
|
|
165
|
+
resourceKind: ResourceKind;
|
|
166
|
+
provider: SupportedProvider;
|
|
167
|
+
model: string;
|
|
168
|
+
credentialId: string;
|
|
169
|
+
credentialKind: CredentialKind;
|
|
170
|
+
resolvedFor: string;
|
|
171
|
+
/** True when this entry was routed via canary */
|
|
172
|
+
isCanary?: boolean;
|
|
173
|
+
/** Identity chain for federated agent calls */
|
|
174
|
+
identityChain?: IdentityChainEntry[];
|
|
175
|
+
/** SPIFFE ID of the calling workload */
|
|
176
|
+
spiffeId?: string;
|
|
177
|
+
}
|
|
178
|
+
export interface MigrationAuditLogEntry extends AuditLogEntry {
|
|
179
|
+
migrationId: string;
|
|
180
|
+
phase: MigrationPhase;
|
|
181
|
+
rowsRead?: number;
|
|
182
|
+
rowsWritten?: number;
|
|
183
|
+
rowsFailed?: number;
|
|
184
|
+
dryRun: boolean;
|
|
185
|
+
sourceCredentialId: string;
|
|
186
|
+
targetCredentialId: string;
|
|
187
|
+
errorSummary?: string;
|
|
188
|
+
}
|
|
189
|
+
export interface AuditLogger {
|
|
190
|
+
log(entry: AuditLogEntry): Promise<void>;
|
|
191
|
+
}
|
|
192
|
+
export interface MigrationAuditLogger extends AuditLogger {
|
|
193
|
+
summarize(migrationId: string): Promise<MigrationSummary>;
|
|
194
|
+
}
|
|
195
|
+
export interface MigrationSummary {
|
|
196
|
+
migrationId: string;
|
|
197
|
+
phases: MigrationPhase[];
|
|
198
|
+
totalRowsRead: number;
|
|
199
|
+
totalRowsWritten: number;
|
|
200
|
+
totalRowsFailed: number;
|
|
201
|
+
startedAt: string;
|
|
202
|
+
completedAt?: string;
|
|
203
|
+
errors: string[];
|
|
204
|
+
}
|
|
205
|
+
export interface DecisionAnswers {
|
|
206
|
+
variableAccess: boolean | null;
|
|
207
|
+
mixedResources: boolean | null;
|
|
208
|
+
auditRequired: boolean | null;
|
|
209
|
+
longTermTokenStorage: boolean | null;
|
|
210
|
+
}
|
|
211
|
+
export interface DecisionResult {
|
|
212
|
+
pattern: AuthPatternType;
|
|
213
|
+
label: string;
|
|
214
|
+
explanation: string;
|
|
215
|
+
}
|
|
216
|
+
export interface AttestationSigner {
|
|
217
|
+
/** Sign a payload and return a compact JWT string */
|
|
218
|
+
sign(payload: Record<string, unknown>): Promise<string>;
|
|
219
|
+
/** Verify a compact JWT string; returns the payload or null if invalid */
|
|
220
|
+
verify(token: string): Promise<Record<string, unknown> | null>;
|
|
221
|
+
}
|
|
222
|
+
export interface AttestationPayload {
|
|
223
|
+
iss: string;
|
|
224
|
+
sub: string;
|
|
225
|
+
credentialId: string;
|
|
226
|
+
resolvedFor: string;
|
|
227
|
+
action: string;
|
|
228
|
+
resourceId: string;
|
|
229
|
+
traceId: string;
|
|
230
|
+
ruleId?: string;
|
|
231
|
+
iat: number;
|
|
232
|
+
exp: number;
|
|
233
|
+
}
|
|
234
|
+
export type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'timeout' | 'break_glass';
|
|
235
|
+
export interface ApprovalRequest {
|
|
236
|
+
requestId: string;
|
|
237
|
+
credentialId: string;
|
|
238
|
+
ruleId: string;
|
|
239
|
+
context: AgentRequestContext;
|
|
240
|
+
status: ApprovalStatus;
|
|
241
|
+
requestedAt: string;
|
|
242
|
+
resolvedAt?: string;
|
|
243
|
+
resolvedBy?: string;
|
|
244
|
+
justification?: string;
|
|
245
|
+
expiresAt: string;
|
|
246
|
+
}
|
|
247
|
+
export interface IdentityChainEntry {
|
|
248
|
+
/** Trust domain e.g. 'acme.com' */
|
|
249
|
+
org: string;
|
|
250
|
+
userId: string;
|
|
251
|
+
agentId: string;
|
|
252
|
+
/** ISO 8601 timestamp when this entry was issued */
|
|
253
|
+
issuedAt: string;
|
|
254
|
+
/** Ed25519 signature over the canonical entry JSON */
|
|
255
|
+
signature: string;
|
|
256
|
+
}
|
|
257
|
+
export interface FederationConfig {
|
|
258
|
+
/** The local org's trust domain */
|
|
259
|
+
trustDomain: string;
|
|
260
|
+
/** Map of trustDomain → base64 public key for verification */
|
|
261
|
+
trustedDomains: Record<string, string>;
|
|
262
|
+
}
|
|
263
|
+
//# sourceMappingURL=types.d.ts.map
|