ftown 0.19.59 → 0.19.60

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 (36) hide show
  1. package/dist/attention-store.js +4 -3
  2. package/dist/attention-store.js.map +1 -1
  3. package/dist/mcp/fleet.d.ts +14 -167
  4. package/dist/mcp/http.d.ts +14 -308
  5. package/dist/mcp/mcp-key-store.js +4 -3
  6. package/dist/mcp/mcp-key-store.js.map +1 -1
  7. package/dist/mcp/oauth.js +4 -3
  8. package/dist/mcp/oauth.js.map +1 -1
  9. package/dist/mcp/secure-client.js +2 -2
  10. package/dist/mcp/secure-client.js.map +1 -1
  11. package/dist/mcp/security-events.d.ts +3 -19
  12. package/dist/mcp/security-events.js +5 -4
  13. package/dist/mcp/security-events.js.map +1 -1
  14. package/dist/security/bridge/account-state.d.ts +48 -410
  15. package/dist/security/bridge/account-state.js +4 -3
  16. package/dist/security/bridge/account-state.js.map +1 -1
  17. package/dist/security/bridge/audit.js +5 -4
  18. package/dist/security/bridge/audit.js.map +1 -1
  19. package/dist/security/bridge/identity.d.ts +36 -395
  20. package/dist/security/bridge/local-client.js +1 -1
  21. package/dist/security/bridge/local-client.js.map +1 -1
  22. package/dist/security/bridge/metadata.d.ts +28 -84
  23. package/dist/security/bridge/metadata.js +2 -1
  24. package/dist/security/bridge/metadata.js.map +1 -1
  25. package/dist/security/bridge/pending-approval.js +2 -1
  26. package/dist/security/bridge/pending-approval.js.map +1 -1
  27. package/dist/security/bridge/policy.js +6 -5
  28. package/dist/security/bridge/policy.js.map +1 -1
  29. package/dist/security/bridge/security.js +3 -3
  30. package/dist/security/bridge/security.js.map +1 -1
  31. package/dist/security/bridge/snapshot.d.ts +1 -1
  32. package/dist/security/bridge/snapshot.js.map +1 -1
  33. package/dist/zod-compat.d.ts +3 -0
  34. package/dist/zod-compat.js +4 -0
  35. package/dist/zod-compat.js.map +1 -0
  36. package/package.json +6 -3
@@ -3,64 +3,29 @@ import type { EndpointIdentity, EndpointKind } from '../protocol.js';
3
3
  import type { VerifiedAccountTrust } from '../account-protocol.js';
4
4
  export declare const identityRecordSchema: z.ZodObject<{
5
5
  version: z.ZodLiteral<1>;
6
- endpoint: z.ZodEffects<z.ZodObject<{
6
+ endpoint: z.ZodObject<{
7
7
  version: z.ZodLiteral<1>;
8
8
  id: z.ZodString;
9
9
  ownerId: z.ZodString;
10
- kind: z.ZodEnum<["bridge", "browser", "mcp", "local-cli"]>;
10
+ kind: z.ZodEnum<{
11
+ bridge: "bridge";
12
+ browser: "browser";
13
+ mcp: "mcp";
14
+ "local-cli": "local-cli";
15
+ }>;
11
16
  publicKey: z.ZodString;
12
- }, "strict", z.ZodTypeAny, {
13
- id: string;
14
- version: 1;
15
- ownerId: string;
16
- kind: "bridge" | "browser" | "mcp" | "local-cli";
17
- publicKey: string;
18
- }, {
19
- id: string;
20
- version: 1;
21
- ownerId: string;
22
- kind: "bridge" | "browser" | "mcp" | "local-cli";
23
- publicKey: string;
24
- }>, {
25
- id: string;
26
- version: 1;
27
- ownerId: string;
28
- kind: "bridge" | "browser" | "mcp" | "local-cli";
29
- publicKey: string;
30
- }, {
31
- id: string;
32
- version: 1;
33
- ownerId: string;
34
- kind: "bridge" | "browser" | "mcp" | "local-cli";
35
- publicKey: string;
36
- }>;
17
+ }, z.core.$strict>;
37
18
  privateKey: z.ZodObject<{
38
19
  kty: z.ZodLiteral<"EC">;
39
20
  crv: z.ZodLiteral<"P-256">;
40
21
  x: z.ZodString;
41
22
  y: z.ZodString;
42
23
  d: z.ZodString;
43
- key_ops: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
24
+ key_ops: z.ZodOptional<z.ZodArray<z.ZodString>>;
44
25
  ext: z.ZodOptional<z.ZodBoolean>;
45
- }, "strict", z.ZodTypeAny, {
46
- kty: "EC";
47
- crv: "P-256";
48
- x: string;
49
- y: string;
50
- d: string;
51
- key_ops?: string[] | undefined;
52
- ext?: boolean | undefined;
53
- }, {
54
- kty: "EC";
55
- crv: "P-256";
56
- x: string;
57
- y: string;
58
- d: string;
59
- key_ops?: string[] | undefined;
60
- ext?: boolean | undefined;
61
- }>;
26
+ }, z.core.$strict>;
62
27
  accountBootstrap: z.ZodOptional<z.ZodObject<{
63
- history: z.ZodType<import("../account-protocol.js").AccountHistory, z.ZodTypeDef, import("../account-protocol.js").AccountHistory>;
28
+ history: z.ZodCustom<import("../account-protocol.js").AccountHistory, import("../account-protocol.js").AccountHistory>;
64
29
  checkpoint: z.ZodObject<{
65
30
  version: z.ZodLiteral<1>;
66
31
  ownerId: z.ZodString;
@@ -68,368 +33,44 @@ export declare const identityRecordSchema: z.ZodObject<{
68
33
  head: z.ZodString;
69
34
  revision: z.ZodNumber;
70
35
  devices: z.ZodArray<z.ZodObject<{
71
- endpoint: z.ZodEffects<z.ZodObject<{
36
+ endpoint: z.ZodObject<{
72
37
  version: z.ZodLiteral<1>;
73
38
  id: z.ZodString;
74
39
  ownerId: z.ZodString;
75
- kind: z.ZodEnum<["bridge", "browser", "mcp", "local-cli"]>;
40
+ kind: z.ZodEnum<{
41
+ bridge: "bridge";
42
+ browser: "browser";
43
+ mcp: "mcp";
44
+ "local-cli": "local-cli";
45
+ }>;
76
46
  publicKey: z.ZodString;
77
- }, "strict", z.ZodTypeAny, {
78
- id: string;
79
- version: 1;
80
- ownerId: string;
81
- kind: "bridge" | "browser" | "mcp" | "local-cli";
82
- publicKey: string;
83
- }, {
84
- id: string;
85
- version: 1;
86
- ownerId: string;
87
- kind: "bridge" | "browser" | "mcp" | "local-cli";
88
- publicKey: string;
89
- }>, {
90
- id: string;
91
- version: 1;
92
- ownerId: string;
93
- kind: "bridge" | "browser" | "mcp" | "local-cli";
94
- publicKey: string;
95
- }, {
96
- id: string;
97
- version: 1;
98
- ownerId: string;
99
- kind: "bridge" | "browser" | "mcp" | "local-cli";
100
- publicKey: string;
101
- }>;
47
+ }, z.core.$strict>;
102
48
  signingPublicKey: z.ZodString;
103
49
  label: z.ZodString;
104
- approvedAt: z.ZodString;
105
- }, "strict", z.ZodTypeAny, {
106
- endpoint: {
107
- id: string;
108
- version: 1;
109
- ownerId: string;
110
- kind: "bridge" | "browser" | "mcp" | "local-cli";
111
- publicKey: string;
112
- };
113
- label: string;
114
- approvedAt: string;
115
- signingPublicKey: string;
116
- }, {
117
- endpoint: {
118
- id: string;
119
- version: 1;
120
- ownerId: string;
121
- kind: "bridge" | "browser" | "mcp" | "local-cli";
122
- publicKey: string;
123
- };
124
- label: string;
125
- approvedAt: string;
126
- signingPublicKey: string;
127
- }>, "many">;
50
+ approvedAt: z.ZodUnion<readonly [z.ZodISODateTime, z.ZodISODateTime]>;
51
+ }, z.core.$strict>>;
128
52
  bridges: z.ZodArray<z.ZodObject<{
129
53
  bridgeId: z.ZodString;
130
- endpoint: z.ZodEffects<z.ZodObject<{
54
+ endpoint: z.ZodObject<{
131
55
  version: z.ZodLiteral<1>;
132
56
  id: z.ZodString;
133
57
  ownerId: z.ZodString;
134
- kind: z.ZodEnum<["bridge", "browser", "mcp", "local-cli"]>;
58
+ kind: z.ZodEnum<{
59
+ bridge: "bridge";
60
+ browser: "browser";
61
+ mcp: "mcp";
62
+ "local-cli": "local-cli";
63
+ }>;
135
64
  publicKey: z.ZodString;
136
- }, "strict", z.ZodTypeAny, {
137
- id: string;
138
- version: 1;
139
- ownerId: string;
140
- kind: "bridge" | "browser" | "mcp" | "local-cli";
141
- publicKey: string;
142
- }, {
143
- id: string;
144
- version: 1;
145
- ownerId: string;
146
- kind: "bridge" | "browser" | "mcp" | "local-cli";
147
- publicKey: string;
148
- }>, {
149
- id: string;
150
- version: 1;
151
- ownerId: string;
152
- kind: "bridge" | "browser" | "mcp" | "local-cli";
153
- publicKey: string;
154
- }, {
155
- id: string;
156
- version: 1;
157
- ownerId: string;
158
- kind: "bridge" | "browser" | "mcp" | "local-cli";
159
- publicKey: string;
160
- }>;
65
+ }, z.core.$strict>;
161
66
  label: z.ZodString;
162
- approvedAt: z.ZodString;
163
- }, "strict", z.ZodTypeAny, {
164
- bridgeId: string;
165
- endpoint: {
166
- id: string;
167
- version: 1;
168
- ownerId: string;
169
- kind: "bridge" | "browser" | "mcp" | "local-cli";
170
- publicKey: string;
171
- };
172
- label: string;
173
- approvedAt: string;
174
- }, {
175
- bridgeId: string;
176
- endpoint: {
177
- id: string;
178
- version: 1;
179
- ownerId: string;
180
- kind: "bridge" | "browser" | "mcp" | "local-cli";
181
- publicKey: string;
182
- };
183
- label: string;
184
- approvedAt: string;
185
- }>, "many">;
186
- revokedDeviceIds: z.ZodArray<z.ZodString, "many">;
187
- revokedBridgeIds: z.ZodArray<z.ZodString, "many">;
188
- }, "strict", z.ZodTypeAny, {
189
- version: 1;
190
- ownerId: string;
191
- rootId: string;
192
- revision: number;
193
- head: string;
194
- devices: {
195
- endpoint: {
196
- id: string;
197
- version: 1;
198
- ownerId: string;
199
- kind: "bridge" | "browser" | "mcp" | "local-cli";
200
- publicKey: string;
201
- };
202
- label: string;
203
- approvedAt: string;
204
- signingPublicKey: string;
205
- }[];
206
- bridges: {
207
- bridgeId: string;
208
- endpoint: {
209
- id: string;
210
- version: 1;
211
- ownerId: string;
212
- kind: "bridge" | "browser" | "mcp" | "local-cli";
213
- publicKey: string;
214
- };
215
- label: string;
216
- approvedAt: string;
217
- }[];
218
- revokedDeviceIds: string[];
219
- revokedBridgeIds: string[];
220
- }, {
221
- version: 1;
222
- ownerId: string;
223
- rootId: string;
224
- revision: number;
225
- head: string;
226
- devices: {
227
- endpoint: {
228
- id: string;
229
- version: 1;
230
- ownerId: string;
231
- kind: "bridge" | "browser" | "mcp" | "local-cli";
232
- publicKey: string;
233
- };
234
- label: string;
235
- approvedAt: string;
236
- signingPublicKey: string;
237
- }[];
238
- bridges: {
239
- bridgeId: string;
240
- endpoint: {
241
- id: string;
242
- version: 1;
243
- ownerId: string;
244
- kind: "bridge" | "browser" | "mcp" | "local-cli";
245
- publicKey: string;
246
- };
247
- label: string;
248
- approvedAt: string;
249
- }[];
250
- revokedDeviceIds: string[];
251
- revokedBridgeIds: string[];
252
- }>;
253
- }, "strict", z.ZodTypeAny, {
254
- history: import("../account-protocol.js").AccountHistory;
255
- checkpoint: {
256
- version: 1;
257
- ownerId: string;
258
- rootId: string;
259
- revision: number;
260
- head: string;
261
- devices: {
262
- endpoint: {
263
- id: string;
264
- version: 1;
265
- ownerId: string;
266
- kind: "bridge" | "browser" | "mcp" | "local-cli";
267
- publicKey: string;
268
- };
269
- label: string;
270
- approvedAt: string;
271
- signingPublicKey: string;
272
- }[];
273
- bridges: {
274
- bridgeId: string;
275
- endpoint: {
276
- id: string;
277
- version: 1;
278
- ownerId: string;
279
- kind: "bridge" | "browser" | "mcp" | "local-cli";
280
- publicKey: string;
281
- };
282
- label: string;
283
- approvedAt: string;
284
- }[];
285
- revokedDeviceIds: string[];
286
- revokedBridgeIds: string[];
287
- };
288
- }, {
289
- history: import("../account-protocol.js").AccountHistory;
290
- checkpoint: {
291
- version: 1;
292
- ownerId: string;
293
- rootId: string;
294
- revision: number;
295
- head: string;
296
- devices: {
297
- endpoint: {
298
- id: string;
299
- version: 1;
300
- ownerId: string;
301
- kind: "bridge" | "browser" | "mcp" | "local-cli";
302
- publicKey: string;
303
- };
304
- label: string;
305
- approvedAt: string;
306
- signingPublicKey: string;
307
- }[];
308
- bridges: {
309
- bridgeId: string;
310
- endpoint: {
311
- id: string;
312
- version: 1;
313
- ownerId: string;
314
- kind: "bridge" | "browser" | "mcp" | "local-cli";
315
- publicKey: string;
316
- };
317
- label: string;
318
- approvedAt: string;
319
- }[];
320
- revokedDeviceIds: string[];
321
- revokedBridgeIds: string[];
322
- };
323
- }>>;
324
- }, "strict", z.ZodTypeAny, {
325
- version: 1;
326
- endpoint: {
327
- id: string;
328
- version: 1;
329
- ownerId: string;
330
- kind: "bridge" | "browser" | "mcp" | "local-cli";
331
- publicKey: string;
332
- };
333
- privateKey: {
334
- kty: "EC";
335
- crv: "P-256";
336
- x: string;
337
- y: string;
338
- d: string;
339
- key_ops?: string[] | undefined;
340
- ext?: boolean | undefined;
341
- };
342
- accountBootstrap?: {
343
- history: import("../account-protocol.js").AccountHistory;
344
- checkpoint: {
345
- version: 1;
346
- ownerId: string;
347
- rootId: string;
348
- revision: number;
349
- head: string;
350
- devices: {
351
- endpoint: {
352
- id: string;
353
- version: 1;
354
- ownerId: string;
355
- kind: "bridge" | "browser" | "mcp" | "local-cli";
356
- publicKey: string;
357
- };
358
- label: string;
359
- approvedAt: string;
360
- signingPublicKey: string;
361
- }[];
362
- bridges: {
363
- bridgeId: string;
364
- endpoint: {
365
- id: string;
366
- version: 1;
367
- ownerId: string;
368
- kind: "bridge" | "browser" | "mcp" | "local-cli";
369
- publicKey: string;
370
- };
371
- label: string;
372
- approvedAt: string;
373
- }[];
374
- revokedDeviceIds: string[];
375
- revokedBridgeIds: string[];
376
- };
377
- } | undefined;
378
- }, {
379
- version: 1;
380
- endpoint: {
381
- id: string;
382
- version: 1;
383
- ownerId: string;
384
- kind: "bridge" | "browser" | "mcp" | "local-cli";
385
- publicKey: string;
386
- };
387
- privateKey: {
388
- kty: "EC";
389
- crv: "P-256";
390
- x: string;
391
- y: string;
392
- d: string;
393
- key_ops?: string[] | undefined;
394
- ext?: boolean | undefined;
395
- };
396
- accountBootstrap?: {
397
- history: import("../account-protocol.js").AccountHistory;
398
- checkpoint: {
399
- version: 1;
400
- ownerId: string;
401
- rootId: string;
402
- revision: number;
403
- head: string;
404
- devices: {
405
- endpoint: {
406
- id: string;
407
- version: 1;
408
- ownerId: string;
409
- kind: "bridge" | "browser" | "mcp" | "local-cli";
410
- publicKey: string;
411
- };
412
- label: string;
413
- approvedAt: string;
414
- signingPublicKey: string;
415
- }[];
416
- bridges: {
417
- bridgeId: string;
418
- endpoint: {
419
- id: string;
420
- version: 1;
421
- ownerId: string;
422
- kind: "bridge" | "browser" | "mcp" | "local-cli";
423
- publicKey: string;
424
- };
425
- label: string;
426
- approvedAt: string;
427
- }[];
428
- revokedDeviceIds: string[];
429
- revokedBridgeIds: string[];
430
- };
431
- } | undefined;
432
- }>;
67
+ approvedAt: z.ZodUnion<readonly [z.ZodISODateTime, z.ZodISODateTime]>;
68
+ }, z.core.$strict>>;
69
+ revokedDeviceIds: z.ZodArray<z.ZodString>;
70
+ revokedBridgeIds: z.ZodArray<z.ZodString>;
71
+ }, z.core.$strict>;
72
+ }, z.core.$strict>>;
73
+ }, z.core.$strict>;
433
74
  /** OS-local persisted keys; corruption/wrong owner never silently generates a replacement identity. */
434
75
  export declare function loadOrCreateIdentity(dataDir: string, ownerId: string, kind: 'bridge' | 'local-cli'): Promise<EndpointIdentity>;
435
76
  export declare function isLocalIdentityKind(kind: EndpointKind): kind is 'bridge' | 'local-cli';
@@ -37,7 +37,7 @@ export async function localApplication(pointer, application, signal, fetchFn = f
37
37
  const hello = z.object({ type: z.literal('welcome'), challenge: z.literal(challenge), receiverEpoch: z.string().min(1).max(128) }).strict()
38
38
  .parse(await post('hello', { type: 'hello', challenge }, null, randomUUID()));
39
39
  const result = z.object({ type: z.literal('application'), route: z.object({ kind: z.literal('response'), requestId: z.literal(requestId) }).strict(),
40
- data: z.unknown(), mcp: z.null() }).strict().parse(await post('application', application, hello.receiverEpoch, requestId));
40
+ data: z.unknown().optional(), mcp: z.null() }).strict().parse(await post('application', application, hello.receiverEpoch, requestId));
41
41
  return result.data;
42
42
  }
43
43
  //# sourceMappingURL=local-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local-client.js","sourceRoot":"","sources":["../../../src/security/bridge/local-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-client.js","sourceRoot":"","sources":["../../../src/security/bridge/local-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAsB,EAAE,WAA8B,EAAE,MAAoB,EACjH,UAAwB,KAAK;IAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ;QAAE,MAAM,IAAI,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IACtI,MAAM,MAAM,GAAmB,OAAO,CAAC,QAAQ,CAAC;IAChD,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;QAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;IACnH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,OAAO,GAAG,cAAc,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjD,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU;QAClI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,KAAK,EAAE,OAAgC,EAAE,IAAa,EAAE,KAAoB,EAAE,SAAiB,EAAE,EAAE;QAC9G,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;YAC/G,WAAW,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS;YAC3G,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,oBAAoB,OAAO,CAAC,IAAI,wBAAwB,EAAE,EAAE,MAAM,EAAE,MAAM;YACvG,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO;YAChG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5D,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,IAAI,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAS,EAAE,OAAO;YACpH,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;QACjG,IAAI,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;YAAE,MAAM,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAC1H,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAY,CAAC;IACxF,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;SACxI,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QAClJ,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IACxI,OAAO,MAAM,CAAC,IAAuB,CAAC;AACxC,CAAC"}
@@ -1,99 +1,43 @@
1
1
  import { z } from 'zod';
2
2
  export declare const boundedId: z.ZodString;
3
- export declare const endpointSchema: z.ZodEffects<z.ZodObject<{
3
+ export declare const endpointSchema: z.ZodObject<{
4
4
  version: z.ZodLiteral<1>;
5
5
  id: z.ZodString;
6
6
  ownerId: z.ZodString;
7
- kind: z.ZodEnum<["bridge", "browser", "mcp", "local-cli"]>;
7
+ kind: z.ZodEnum<{
8
+ bridge: "bridge";
9
+ browser: "browser";
10
+ mcp: "mcp";
11
+ "local-cli": "local-cli";
12
+ }>;
8
13
  publicKey: z.ZodString;
9
- }, "strict", z.ZodTypeAny, {
10
- id: string;
11
- version: 1;
12
- ownerId: string;
13
- kind: "bridge" | "browser" | "mcp" | "local-cli";
14
- publicKey: string;
15
- }, {
16
- id: string;
17
- version: 1;
18
- ownerId: string;
19
- kind: "bridge" | "browser" | "mcp" | "local-cli";
20
- publicKey: string;
21
- }>, {
22
- id: string;
23
- version: 1;
24
- ownerId: string;
25
- kind: "bridge" | "browser" | "mcp" | "local-cli";
26
- publicKey: string;
27
- }, {
28
- id: string;
29
- version: 1;
30
- ownerId: string;
31
- kind: "bridge" | "browser" | "mcp" | "local-cli";
32
- publicKey: string;
14
+ }, z.core.$strict>;
15
+ export declare const permissionSchema: z.ZodEnum<{
16
+ read: "read";
17
+ control: "control";
18
+ admin: "admin";
33
19
  }>;
34
- export declare const permissionSchema: z.ZodEnum<["read", "control", "admin"]>;
35
20
  export declare const approvedSchema: z.ZodObject<{
36
- endpoint: z.ZodEffects<z.ZodObject<{
21
+ endpoint: z.ZodObject<{
37
22
  version: z.ZodLiteral<1>;
38
23
  id: z.ZodString;
39
24
  ownerId: z.ZodString;
40
- kind: z.ZodEnum<["bridge", "browser", "mcp", "local-cli"]>;
25
+ kind: z.ZodEnum<{
26
+ bridge: "bridge";
27
+ browser: "browser";
28
+ mcp: "mcp";
29
+ "local-cli": "local-cli";
30
+ }>;
41
31
  publicKey: z.ZodString;
42
- }, "strict", z.ZodTypeAny, {
43
- id: string;
44
- version: 1;
45
- ownerId: string;
46
- kind: "bridge" | "browser" | "mcp" | "local-cli";
47
- publicKey: string;
48
- }, {
49
- id: string;
50
- version: 1;
51
- ownerId: string;
52
- kind: "bridge" | "browser" | "mcp" | "local-cli";
53
- publicKey: string;
54
- }>, {
55
- id: string;
56
- version: 1;
57
- ownerId: string;
58
- kind: "bridge" | "browser" | "mcp" | "local-cli";
59
- publicKey: string;
60
- }, {
61
- id: string;
62
- version: 1;
63
- ownerId: string;
64
- kind: "bridge" | "browser" | "mcp" | "local-cli";
65
- publicKey: string;
66
- }>;
32
+ }, z.core.$strict>;
67
33
  label: z.ZodString;
68
- permissions: z.ZodArray<z.ZodEnum<["read", "control", "admin"]>, "many">;
69
- approvedAt: z.ZodString;
34
+ permissions: z.ZodArray<z.ZodEnum<{
35
+ read: "read";
36
+ control: "control";
37
+ admin: "admin";
38
+ }>>;
39
+ approvedAt: z.ZodUnion<readonly [z.ZodISODateTime, z.ZodISODateTime]>;
70
40
  grantId: z.ZodNullable<z.ZodString>;
71
- expiresAt: z.ZodNullable<z.ZodString>;
72
- }, "strict", z.ZodTypeAny, {
73
- expiresAt: string | null;
74
- endpoint: {
75
- id: string;
76
- version: 1;
77
- ownerId: string;
78
- kind: "bridge" | "browser" | "mcp" | "local-cli";
79
- publicKey: string;
80
- };
81
- label: string;
82
- permissions: ("read" | "control" | "admin")[];
83
- approvedAt: string;
84
- grantId: string | null;
85
- }, {
86
- expiresAt: string | null;
87
- endpoint: {
88
- id: string;
89
- version: 1;
90
- ownerId: string;
91
- kind: "bridge" | "browser" | "mcp" | "local-cli";
92
- publicKey: string;
93
- };
94
- label: string;
95
- permissions: ("read" | "control" | "admin")[];
96
- approvedAt: string;
97
- grantId: string | null;
98
- }>;
41
+ expiresAt: z.ZodNullable<z.ZodUnion<readonly [z.ZodISODateTime, z.ZodISODateTime]>>;
42
+ }, z.core.$strict>;
99
43
  export declare function displayLabel(label: string): string;
@@ -1,3 +1,4 @@
1
+ import { legacyDateTimeSchema } from '../../zod-compat.js';
1
2
  import { createHash } from 'node:crypto';
2
3
  import { z } from 'zod';
3
4
  export const boundedId = z.string().regex(/^[A-Za-z0-9_-]{1,200}$/);
@@ -15,7 +16,7 @@ export const endpointSchema = z.object({
15
16
  export const permissionSchema = z.enum(['read', 'control', 'admin']);
16
17
  export const approvedSchema = z.object({
17
18
  endpoint: endpointSchema, label: z.string().max(100), permissions: z.array(permissionSchema).max(3),
18
- approvedAt: z.string().datetime(), grantId: boundedId.nullable(), expiresAt: z.string().datetime().nullable(),
19
+ approvedAt: legacyDateTimeSchema, grantId: boundedId.nullable(), expiresAt: legacyDateTimeSchema.nullable(),
19
20
  }).strict();
20
21
  export function displayLabel(label) {
21
22
  return label.replace(/[\u0000-\u001f\u007f-\u009f]/g, '').trim().slice(0, 100);
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/security/bridge/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,SAAS;WACpF,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;QAC1E,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnG,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC9G,CAAC,CAAC,MAAM,EAAE,CAAC;AACZ,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/security/bridge/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC5F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC;CACnD,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;IAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,GAAG,CAAC,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,SAAS;WACpF,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;QAC1E,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnG,UAAU,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CAC5G,CAAC,CAAC,MAAM,EAAE,CAAC;AACZ,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACjF,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { legacyDateTimeSchema } from '../../zod-compat.js';
1
2
  import { join } from 'node:path';
2
3
  import { setTimeout as delay } from 'node:timers/promises';
3
4
  import { z } from 'zod';
@@ -6,7 +7,7 @@ import { AtomicSnapshot } from './snapshot.js';
6
7
  import { BridgeSecurityError } from './errors.js';
7
8
  const hash = z.string().regex(/^[A-Za-z0-9_-]{43}$/);
8
9
  const code = z.string().regex(/^[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}$/);
9
- const common = { version: z.literal(1), requestId: hash, processNonce: hash, expiresAt: z.string().datetime() };
10
+ const common = { version: z.literal(1), requestId: hash, processNonce: hash, expiresAt: legacyDateTimeSchema };
10
11
  const statusSchema = z.union([
11
12
  z.object({ ...common, phase: z.literal('waiting'), offerHash: hash.nullable(), comparisonCode: z.null() }).strict(),
12
13
  z.object({ ...common, phase: z.enum(['comparing', 'confirming']), offerHash: hash, comparisonCode: code }).strict(),