esoul-sdk 0.24.0 → 0.25.2

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.
@@ -107,19 +107,26 @@ export declare const PluginConnectionSchema: z.ZodEffects<z.ZodObject<{
107
107
  headerNames?: string[] | undefined;
108
108
  }>;
109
109
  /**
110
- * PLATFORM ACCOUNTS — the person's Google account, used by an app without the app ever holding it.
110
+ * THE PERSON'S ACCOUNTS — used by an app without the app ever holding them.
111
111
  *
112
- * A person connects a Google account once, in Account settings, and assigns it to an app. The
113
- * app's server code calls Google through `credentials(ctx).slot(name).fetch(url)` in
114
- * `esoul-sdk/server`: the platform checks who is calling and that the URL is one the slot's
115
- * declared scopes reach, then adds the token itself. The token never reaches the app — the
116
- * platform's Google token carries every scope the platform was granted and cannot be narrowed,
117
- * so the declared scopes are enforced at the proxy, not at Google.
112
+ * A person connects an account once, at the user level (Account settings → Google for Google,
113
+ * Account settings → Accounts for every other service), and assigns it to an app. The app's
114
+ * server code calls the service through `credentials(ctx).slot(name).fetch(url)` in
115
+ * `esoul-sdk/server`: the platform checks who is calling and that the URL is one the slot may
116
+ * reach, then adds the token or key itself. The secret never reaches the app or its developer.
118
117
  *
119
- * A scope is written as Google's full URL or as its short name (`gmail.modify`). `openid`,
120
- * `email` and `profile` are implicit and may be left out.
118
+ * Three families:
119
+ * - `google` — the platform's verified Google client. Scopes are Google's (`gmail.modify`);
120
+ * the platform's token cannot be narrowed, so the declared scopes are enforced at the proxy.
121
+ * - `oauth2` — any OAuth 2.0 provider (Microsoft, Dropbox, Spotify, …): the slot declares the
122
+ * provider's endpoints, the scopes it asks for and the API hosts the token may be sent to.
123
+ * - `apiKey` — a key the person pastes (an API key, a personal access token): the slot declares
124
+ * the hosts it may be sent to and the header that carries it.
125
+ *
126
+ * For `google` a scope is written as Google's full URL or as its short name (`gmail.modify`).
127
+ * `openid`, `email` and `profile` are implicit and may be left out.
121
128
  */
122
- export declare const CREDENTIAL_FAMILIES: readonly ["google"];
129
+ export declare const CREDENTIAL_FAMILIES: readonly ["google", "oauth2", "apiKey"];
123
130
  export type CredentialFamilyName = (typeof CREDENTIAL_FAMILIES)[number];
124
131
  /** The Google scopes an app may declare, by short name. Everything else is refused. */
125
132
  export declare const GOOGLE_CREDENTIAL_SCOPES: readonly ["gmail.readonly", "gmail.modify", "gmail.send", "gmail.compose", "gmail.labels", "calendar.events", "calendar.readonly", "contacts", "contacts.readonly", "drive.readonly", "drive.file"];
@@ -136,8 +143,8 @@ export declare function normaliseGoogleScope(scope: string): string | "implicit"
136
143
  export declare function normaliseCredentialScopes(scopes: readonly string[]): string[];
137
144
  /** Slot names: lower-case words joined by `-` (`mailbox`, `work-calendar`). */
138
145
  export declare const CREDENTIAL_SLOT_RE: RegExp;
139
- /** One slot of a manifest's `credentials` block. */
140
- export declare const PluginCredentialSlotSchema: z.ZodObject<{
146
+ /** A `google` slot of a manifest's `credentials` block. */
147
+ export declare const GoogleCredentialSlotSchema: z.ZodObject<{
141
148
  family: z.ZodLiteral<"google">;
142
149
  scopes: z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>;
143
150
  label: z.ZodOptional<z.ZodString>;
@@ -156,9 +163,496 @@ export declare const PluginCredentialSlotSchema: z.ZodObject<{
156
163
  label?: string | undefined;
157
164
  background?: boolean | undefined;
158
165
  }>;
166
+ export type GoogleCredentialSlot = z.infer<typeof GoogleCredentialSlotSchema>;
167
+ /**
168
+ * An API host an `oauth2` or `apiKey` secret may be sent to: a DNS name (`graph.microsoft.com`),
169
+ * lower-case, no scheme, no port, no IP address, no `localhost`.
170
+ */
171
+ export declare const CREDENTIAL_HOST_RE: RegExp;
172
+ /** Authorize parameters the platform sets itself; a slot may not override them. */
173
+ export declare const RESERVED_AUTHORIZE_PARAMS: readonly ["response_type", "client_id", "redirect_uri", "scope", "state", "code_challenge", "code_challenge_method", "nonce"];
174
+ /** The OAuth 2.0 provider an `oauth2` slot signs in with. */
175
+ export declare const OAuth2ProviderSchema: z.ZodEffects<z.ZodObject<{
176
+ name: z.ZodString;
177
+ authorizeUrl: z.ZodEffects<z.ZodString, string, string>;
178
+ tokenUrl: z.ZodEffects<z.ZodString, string, string>;
179
+ scopes: z.ZodArray<z.ZodString, "many">;
180
+ hosts: z.ZodArray<z.ZodString, "many">;
181
+ accountUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
182
+ accountField: z.ZodOptional<z.ZodString>;
183
+ authorizeParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
184
+ tokenAuth: z.ZodOptional<z.ZodEnum<["body", "basic"]>>;
185
+ clientIdEnv: z.ZodOptional<z.ZodString>;
186
+ clientSecretEnv: z.ZodOptional<z.ZodString>;
187
+ }, "strict", z.ZodTypeAny, {
188
+ name: string;
189
+ authorizeUrl: string;
190
+ tokenUrl: string;
191
+ scopes: string[];
192
+ hosts: string[];
193
+ clientIdEnv?: string | undefined;
194
+ clientSecretEnv?: string | undefined;
195
+ accountUrl?: string | undefined;
196
+ accountField?: string | undefined;
197
+ authorizeParams?: Record<string, string> | undefined;
198
+ tokenAuth?: "body" | "basic" | undefined;
199
+ }, {
200
+ name: string;
201
+ authorizeUrl: string;
202
+ tokenUrl: string;
203
+ scopes: string[];
204
+ hosts: string[];
205
+ clientIdEnv?: string | undefined;
206
+ clientSecretEnv?: string | undefined;
207
+ accountUrl?: string | undefined;
208
+ accountField?: string | undefined;
209
+ authorizeParams?: Record<string, string> | undefined;
210
+ tokenAuth?: "body" | "basic" | undefined;
211
+ }>, {
212
+ name: string;
213
+ authorizeUrl: string;
214
+ tokenUrl: string;
215
+ scopes: string[];
216
+ hosts: string[];
217
+ clientIdEnv?: string | undefined;
218
+ clientSecretEnv?: string | undefined;
219
+ accountUrl?: string | undefined;
220
+ accountField?: string | undefined;
221
+ authorizeParams?: Record<string, string> | undefined;
222
+ tokenAuth?: "body" | "basic" | undefined;
223
+ }, {
224
+ name: string;
225
+ authorizeUrl: string;
226
+ tokenUrl: string;
227
+ scopes: string[];
228
+ hosts: string[];
229
+ clientIdEnv?: string | undefined;
230
+ clientSecretEnv?: string | undefined;
231
+ accountUrl?: string | undefined;
232
+ accountField?: string | undefined;
233
+ authorizeParams?: Record<string, string> | undefined;
234
+ tokenAuth?: "body" | "basic" | undefined;
235
+ }>;
236
+ export type OAuth2Provider = z.infer<typeof OAuth2ProviderSchema>;
237
+ /** The service an `apiKey` slot sends a pasted key to. */
238
+ export declare const ApiKeyProviderSchema: z.ZodEffects<z.ZodObject<{
239
+ name: z.ZodString;
240
+ hosts: z.ZodArray<z.ZodString, "many">;
241
+ header: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
242
+ prefix: z.ZodOptional<z.ZodString>;
243
+ keyHelp: z.ZodOptional<z.ZodString>;
244
+ verifyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
245
+ }, "strict", z.ZodTypeAny, {
246
+ name: string;
247
+ hosts: string[];
248
+ header?: string | undefined;
249
+ prefix?: string | undefined;
250
+ keyHelp?: string | undefined;
251
+ verifyUrl?: string | undefined;
252
+ }, {
253
+ name: string;
254
+ hosts: string[];
255
+ header?: string | undefined;
256
+ prefix?: string | undefined;
257
+ keyHelp?: string | undefined;
258
+ verifyUrl?: string | undefined;
259
+ }>, {
260
+ name: string;
261
+ hosts: string[];
262
+ header?: string | undefined;
263
+ prefix?: string | undefined;
264
+ keyHelp?: string | undefined;
265
+ verifyUrl?: string | undefined;
266
+ }, {
267
+ name: string;
268
+ hosts: string[];
269
+ header?: string | undefined;
270
+ prefix?: string | undefined;
271
+ keyHelp?: string | undefined;
272
+ verifyUrl?: string | undefined;
273
+ }>;
274
+ export type ApiKeyProvider = z.infer<typeof ApiKeyProviderSchema>;
275
+ /** An `oauth2` slot: any OAuth 2.0 provider. */
276
+ export declare const OAuth2CredentialSlotSchema: z.ZodObject<{
277
+ family: z.ZodLiteral<"oauth2">;
278
+ provider: z.ZodEffects<z.ZodObject<{
279
+ name: z.ZodString;
280
+ authorizeUrl: z.ZodEffects<z.ZodString, string, string>;
281
+ tokenUrl: z.ZodEffects<z.ZodString, string, string>;
282
+ scopes: z.ZodArray<z.ZodString, "many">;
283
+ hosts: z.ZodArray<z.ZodString, "many">;
284
+ accountUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
285
+ accountField: z.ZodOptional<z.ZodString>;
286
+ authorizeParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
287
+ tokenAuth: z.ZodOptional<z.ZodEnum<["body", "basic"]>>;
288
+ clientIdEnv: z.ZodOptional<z.ZodString>;
289
+ clientSecretEnv: z.ZodOptional<z.ZodString>;
290
+ }, "strict", z.ZodTypeAny, {
291
+ name: string;
292
+ authorizeUrl: string;
293
+ tokenUrl: string;
294
+ scopes: string[];
295
+ hosts: string[];
296
+ clientIdEnv?: string | undefined;
297
+ clientSecretEnv?: string | undefined;
298
+ accountUrl?: string | undefined;
299
+ accountField?: string | undefined;
300
+ authorizeParams?: Record<string, string> | undefined;
301
+ tokenAuth?: "body" | "basic" | undefined;
302
+ }, {
303
+ name: string;
304
+ authorizeUrl: string;
305
+ tokenUrl: string;
306
+ scopes: string[];
307
+ hosts: string[];
308
+ clientIdEnv?: string | undefined;
309
+ clientSecretEnv?: string | undefined;
310
+ accountUrl?: string | undefined;
311
+ accountField?: string | undefined;
312
+ authorizeParams?: Record<string, string> | undefined;
313
+ tokenAuth?: "body" | "basic" | undefined;
314
+ }>, {
315
+ name: string;
316
+ authorizeUrl: string;
317
+ tokenUrl: string;
318
+ scopes: string[];
319
+ hosts: string[];
320
+ clientIdEnv?: string | undefined;
321
+ clientSecretEnv?: string | undefined;
322
+ accountUrl?: string | undefined;
323
+ accountField?: string | undefined;
324
+ authorizeParams?: Record<string, string> | undefined;
325
+ tokenAuth?: "body" | "basic" | undefined;
326
+ }, {
327
+ name: string;
328
+ authorizeUrl: string;
329
+ tokenUrl: string;
330
+ scopes: string[];
331
+ hosts: string[];
332
+ clientIdEnv?: string | undefined;
333
+ clientSecretEnv?: string | undefined;
334
+ accountUrl?: string | undefined;
335
+ accountField?: string | undefined;
336
+ authorizeParams?: Record<string, string> | undefined;
337
+ tokenAuth?: "body" | "basic" | undefined;
338
+ }>;
339
+ label: z.ZodOptional<z.ZodString>;
340
+ why: z.ZodString;
341
+ background: z.ZodOptional<z.ZodBoolean>;
342
+ }, "strict", z.ZodTypeAny, {
343
+ why: string;
344
+ family: "oauth2";
345
+ provider: {
346
+ name: string;
347
+ authorizeUrl: string;
348
+ tokenUrl: string;
349
+ scopes: string[];
350
+ hosts: string[];
351
+ clientIdEnv?: string | undefined;
352
+ clientSecretEnv?: string | undefined;
353
+ accountUrl?: string | undefined;
354
+ accountField?: string | undefined;
355
+ authorizeParams?: Record<string, string> | undefined;
356
+ tokenAuth?: "body" | "basic" | undefined;
357
+ };
358
+ label?: string | undefined;
359
+ background?: boolean | undefined;
360
+ }, {
361
+ why: string;
362
+ family: "oauth2";
363
+ provider: {
364
+ name: string;
365
+ authorizeUrl: string;
366
+ tokenUrl: string;
367
+ scopes: string[];
368
+ hosts: string[];
369
+ clientIdEnv?: string | undefined;
370
+ clientSecretEnv?: string | undefined;
371
+ accountUrl?: string | undefined;
372
+ accountField?: string | undefined;
373
+ authorizeParams?: Record<string, string> | undefined;
374
+ tokenAuth?: "body" | "basic" | undefined;
375
+ };
376
+ label?: string | undefined;
377
+ background?: boolean | undefined;
378
+ }>;
379
+ export type OAuth2CredentialSlot = z.infer<typeof OAuth2CredentialSlotSchema>;
380
+ /** An `apiKey` slot: a key the person pastes. */
381
+ export declare const ApiKeyCredentialSlotSchema: z.ZodObject<{
382
+ family: z.ZodLiteral<"apiKey">;
383
+ provider: z.ZodEffects<z.ZodObject<{
384
+ name: z.ZodString;
385
+ hosts: z.ZodArray<z.ZodString, "many">;
386
+ header: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
387
+ prefix: z.ZodOptional<z.ZodString>;
388
+ keyHelp: z.ZodOptional<z.ZodString>;
389
+ verifyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
390
+ }, "strict", z.ZodTypeAny, {
391
+ name: string;
392
+ hosts: string[];
393
+ header?: string | undefined;
394
+ prefix?: string | undefined;
395
+ keyHelp?: string | undefined;
396
+ verifyUrl?: string | undefined;
397
+ }, {
398
+ name: string;
399
+ hosts: string[];
400
+ header?: string | undefined;
401
+ prefix?: string | undefined;
402
+ keyHelp?: string | undefined;
403
+ verifyUrl?: string | undefined;
404
+ }>, {
405
+ name: string;
406
+ hosts: string[];
407
+ header?: string | undefined;
408
+ prefix?: string | undefined;
409
+ keyHelp?: string | undefined;
410
+ verifyUrl?: string | undefined;
411
+ }, {
412
+ name: string;
413
+ hosts: string[];
414
+ header?: string | undefined;
415
+ prefix?: string | undefined;
416
+ keyHelp?: string | undefined;
417
+ verifyUrl?: string | undefined;
418
+ }>;
419
+ label: z.ZodOptional<z.ZodString>;
420
+ why: z.ZodString;
421
+ background: z.ZodOptional<z.ZodBoolean>;
422
+ }, "strict", z.ZodTypeAny, {
423
+ why: string;
424
+ family: "apiKey";
425
+ provider: {
426
+ name: string;
427
+ hosts: string[];
428
+ header?: string | undefined;
429
+ prefix?: string | undefined;
430
+ keyHelp?: string | undefined;
431
+ verifyUrl?: string | undefined;
432
+ };
433
+ label?: string | undefined;
434
+ background?: boolean | undefined;
435
+ }, {
436
+ why: string;
437
+ family: "apiKey";
438
+ provider: {
439
+ name: string;
440
+ hosts: string[];
441
+ header?: string | undefined;
442
+ prefix?: string | undefined;
443
+ keyHelp?: string | undefined;
444
+ verifyUrl?: string | undefined;
445
+ };
446
+ label?: string | undefined;
447
+ background?: boolean | undefined;
448
+ }>;
449
+ export type ApiKeyCredentialSlot = z.infer<typeof ApiKeyCredentialSlotSchema>;
450
+ /** One slot of a manifest's `credentials` block. */
451
+ export declare const PluginCredentialSlotSchema: z.ZodDiscriminatedUnion<"family", [z.ZodObject<{
452
+ family: z.ZodLiteral<"google">;
453
+ scopes: z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>;
454
+ label: z.ZodOptional<z.ZodString>;
455
+ why: z.ZodString;
456
+ background: z.ZodOptional<z.ZodBoolean>;
457
+ }, "strict", z.ZodTypeAny, {
458
+ why: string;
459
+ family: "google";
460
+ scopes: string[];
461
+ label?: string | undefined;
462
+ background?: boolean | undefined;
463
+ }, {
464
+ why: string;
465
+ family: "google";
466
+ scopes: string[];
467
+ label?: string | undefined;
468
+ background?: boolean | undefined;
469
+ }>, z.ZodObject<{
470
+ family: z.ZodLiteral<"oauth2">;
471
+ provider: z.ZodEffects<z.ZodObject<{
472
+ name: z.ZodString;
473
+ authorizeUrl: z.ZodEffects<z.ZodString, string, string>;
474
+ tokenUrl: z.ZodEffects<z.ZodString, string, string>;
475
+ scopes: z.ZodArray<z.ZodString, "many">;
476
+ hosts: z.ZodArray<z.ZodString, "many">;
477
+ accountUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
478
+ accountField: z.ZodOptional<z.ZodString>;
479
+ authorizeParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
480
+ tokenAuth: z.ZodOptional<z.ZodEnum<["body", "basic"]>>;
481
+ clientIdEnv: z.ZodOptional<z.ZodString>;
482
+ clientSecretEnv: z.ZodOptional<z.ZodString>;
483
+ }, "strict", z.ZodTypeAny, {
484
+ name: string;
485
+ authorizeUrl: string;
486
+ tokenUrl: string;
487
+ scopes: string[];
488
+ hosts: string[];
489
+ clientIdEnv?: string | undefined;
490
+ clientSecretEnv?: string | undefined;
491
+ accountUrl?: string | undefined;
492
+ accountField?: string | undefined;
493
+ authorizeParams?: Record<string, string> | undefined;
494
+ tokenAuth?: "body" | "basic" | undefined;
495
+ }, {
496
+ name: string;
497
+ authorizeUrl: string;
498
+ tokenUrl: string;
499
+ scopes: string[];
500
+ hosts: string[];
501
+ clientIdEnv?: string | undefined;
502
+ clientSecretEnv?: string | undefined;
503
+ accountUrl?: string | undefined;
504
+ accountField?: string | undefined;
505
+ authorizeParams?: Record<string, string> | undefined;
506
+ tokenAuth?: "body" | "basic" | undefined;
507
+ }>, {
508
+ name: string;
509
+ authorizeUrl: string;
510
+ tokenUrl: string;
511
+ scopes: string[];
512
+ hosts: string[];
513
+ clientIdEnv?: string | undefined;
514
+ clientSecretEnv?: string | undefined;
515
+ accountUrl?: string | undefined;
516
+ accountField?: string | undefined;
517
+ authorizeParams?: Record<string, string> | undefined;
518
+ tokenAuth?: "body" | "basic" | undefined;
519
+ }, {
520
+ name: string;
521
+ authorizeUrl: string;
522
+ tokenUrl: string;
523
+ scopes: string[];
524
+ hosts: string[];
525
+ clientIdEnv?: string | undefined;
526
+ clientSecretEnv?: string | undefined;
527
+ accountUrl?: string | undefined;
528
+ accountField?: string | undefined;
529
+ authorizeParams?: Record<string, string> | undefined;
530
+ tokenAuth?: "body" | "basic" | undefined;
531
+ }>;
532
+ label: z.ZodOptional<z.ZodString>;
533
+ why: z.ZodString;
534
+ background: z.ZodOptional<z.ZodBoolean>;
535
+ }, "strict", z.ZodTypeAny, {
536
+ why: string;
537
+ family: "oauth2";
538
+ provider: {
539
+ name: string;
540
+ authorizeUrl: string;
541
+ tokenUrl: string;
542
+ scopes: string[];
543
+ hosts: string[];
544
+ clientIdEnv?: string | undefined;
545
+ clientSecretEnv?: string | undefined;
546
+ accountUrl?: string | undefined;
547
+ accountField?: string | undefined;
548
+ authorizeParams?: Record<string, string> | undefined;
549
+ tokenAuth?: "body" | "basic" | undefined;
550
+ };
551
+ label?: string | undefined;
552
+ background?: boolean | undefined;
553
+ }, {
554
+ why: string;
555
+ family: "oauth2";
556
+ provider: {
557
+ name: string;
558
+ authorizeUrl: string;
559
+ tokenUrl: string;
560
+ scopes: string[];
561
+ hosts: string[];
562
+ clientIdEnv?: string | undefined;
563
+ clientSecretEnv?: string | undefined;
564
+ accountUrl?: string | undefined;
565
+ accountField?: string | undefined;
566
+ authorizeParams?: Record<string, string> | undefined;
567
+ tokenAuth?: "body" | "basic" | undefined;
568
+ };
569
+ label?: string | undefined;
570
+ background?: boolean | undefined;
571
+ }>, z.ZodObject<{
572
+ family: z.ZodLiteral<"apiKey">;
573
+ provider: z.ZodEffects<z.ZodObject<{
574
+ name: z.ZodString;
575
+ hosts: z.ZodArray<z.ZodString, "many">;
576
+ header: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
577
+ prefix: z.ZodOptional<z.ZodString>;
578
+ keyHelp: z.ZodOptional<z.ZodString>;
579
+ verifyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
580
+ }, "strict", z.ZodTypeAny, {
581
+ name: string;
582
+ hosts: string[];
583
+ header?: string | undefined;
584
+ prefix?: string | undefined;
585
+ keyHelp?: string | undefined;
586
+ verifyUrl?: string | undefined;
587
+ }, {
588
+ name: string;
589
+ hosts: string[];
590
+ header?: string | undefined;
591
+ prefix?: string | undefined;
592
+ keyHelp?: string | undefined;
593
+ verifyUrl?: string | undefined;
594
+ }>, {
595
+ name: string;
596
+ hosts: string[];
597
+ header?: string | undefined;
598
+ prefix?: string | undefined;
599
+ keyHelp?: string | undefined;
600
+ verifyUrl?: string | undefined;
601
+ }, {
602
+ name: string;
603
+ hosts: string[];
604
+ header?: string | undefined;
605
+ prefix?: string | undefined;
606
+ keyHelp?: string | undefined;
607
+ verifyUrl?: string | undefined;
608
+ }>;
609
+ label: z.ZodOptional<z.ZodString>;
610
+ why: z.ZodString;
611
+ background: z.ZodOptional<z.ZodBoolean>;
612
+ }, "strict", z.ZodTypeAny, {
613
+ why: string;
614
+ family: "apiKey";
615
+ provider: {
616
+ name: string;
617
+ hosts: string[];
618
+ header?: string | undefined;
619
+ prefix?: string | undefined;
620
+ keyHelp?: string | undefined;
621
+ verifyUrl?: string | undefined;
622
+ };
623
+ label?: string | undefined;
624
+ background?: boolean | undefined;
625
+ }, {
626
+ why: string;
627
+ family: "apiKey";
628
+ provider: {
629
+ name: string;
630
+ hosts: string[];
631
+ header?: string | undefined;
632
+ prefix?: string | undefined;
633
+ keyHelp?: string | undefined;
634
+ verifyUrl?: string | undefined;
635
+ };
636
+ label?: string | undefined;
637
+ background?: boolean | undefined;
638
+ }>]>;
159
639
  export type PluginCredentialSlot = z.infer<typeof PluginCredentialSlotSchema>;
640
+ /**
641
+ * Which accounts serve a slot: accounts of one provider are interchangeable between apps.
642
+ * `oauth2` — the sign-in AND token endpoints (lower-case host, path), so a slot that points either
643
+ * one somewhere else is another provider and never reuses a person's client or account;
644
+ * `apiKey` — the sorted host list. Pure, so the platform, the box and the SDK agree.
645
+ */
646
+ export declare function credentialProviderKey(slot: {
647
+ family: string;
648
+ provider?: {
649
+ authorizeUrl?: string;
650
+ tokenUrl?: string;
651
+ hosts?: readonly string[];
652
+ };
653
+ }): string | null;
160
654
  /** The `credentials` block: slot name → slot. At most ONE slot per app for now. */
161
- export declare const PluginCredentialsSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodObject<{
655
+ export declare const PluginCredentialsSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"family", [z.ZodObject<{
162
656
  family: z.ZodLiteral<"google">;
163
657
  scopes: z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>;
164
658
  label: z.ZodOptional<z.ZodString>;
@@ -176,18 +670,249 @@ export declare const PluginCredentialsSchema: z.ZodEffects<z.ZodRecord<z.ZodStri
176
670
  scopes: string[];
177
671
  label?: string | undefined;
178
672
  background?: boolean | undefined;
179
- }>>, Record<string, {
673
+ }>, z.ZodObject<{
674
+ family: z.ZodLiteral<"oauth2">;
675
+ provider: z.ZodEffects<z.ZodObject<{
676
+ name: z.ZodString;
677
+ authorizeUrl: z.ZodEffects<z.ZodString, string, string>;
678
+ tokenUrl: z.ZodEffects<z.ZodString, string, string>;
679
+ scopes: z.ZodArray<z.ZodString, "many">;
680
+ hosts: z.ZodArray<z.ZodString, "many">;
681
+ accountUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
682
+ accountField: z.ZodOptional<z.ZodString>;
683
+ authorizeParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
684
+ tokenAuth: z.ZodOptional<z.ZodEnum<["body", "basic"]>>;
685
+ clientIdEnv: z.ZodOptional<z.ZodString>;
686
+ clientSecretEnv: z.ZodOptional<z.ZodString>;
687
+ }, "strict", z.ZodTypeAny, {
688
+ name: string;
689
+ authorizeUrl: string;
690
+ tokenUrl: string;
691
+ scopes: string[];
692
+ hosts: string[];
693
+ clientIdEnv?: string | undefined;
694
+ clientSecretEnv?: string | undefined;
695
+ accountUrl?: string | undefined;
696
+ accountField?: string | undefined;
697
+ authorizeParams?: Record<string, string> | undefined;
698
+ tokenAuth?: "body" | "basic" | undefined;
699
+ }, {
700
+ name: string;
701
+ authorizeUrl: string;
702
+ tokenUrl: string;
703
+ scopes: string[];
704
+ hosts: string[];
705
+ clientIdEnv?: string | undefined;
706
+ clientSecretEnv?: string | undefined;
707
+ accountUrl?: string | undefined;
708
+ accountField?: string | undefined;
709
+ authorizeParams?: Record<string, string> | undefined;
710
+ tokenAuth?: "body" | "basic" | undefined;
711
+ }>, {
712
+ name: string;
713
+ authorizeUrl: string;
714
+ tokenUrl: string;
715
+ scopes: string[];
716
+ hosts: string[];
717
+ clientIdEnv?: string | undefined;
718
+ clientSecretEnv?: string | undefined;
719
+ accountUrl?: string | undefined;
720
+ accountField?: string | undefined;
721
+ authorizeParams?: Record<string, string> | undefined;
722
+ tokenAuth?: "body" | "basic" | undefined;
723
+ }, {
724
+ name: string;
725
+ authorizeUrl: string;
726
+ tokenUrl: string;
727
+ scopes: string[];
728
+ hosts: string[];
729
+ clientIdEnv?: string | undefined;
730
+ clientSecretEnv?: string | undefined;
731
+ accountUrl?: string | undefined;
732
+ accountField?: string | undefined;
733
+ authorizeParams?: Record<string, string> | undefined;
734
+ tokenAuth?: "body" | "basic" | undefined;
735
+ }>;
736
+ label: z.ZodOptional<z.ZodString>;
737
+ why: z.ZodString;
738
+ background: z.ZodOptional<z.ZodBoolean>;
739
+ }, "strict", z.ZodTypeAny, {
740
+ why: string;
741
+ family: "oauth2";
742
+ provider: {
743
+ name: string;
744
+ authorizeUrl: string;
745
+ tokenUrl: string;
746
+ scopes: string[];
747
+ hosts: string[];
748
+ clientIdEnv?: string | undefined;
749
+ clientSecretEnv?: string | undefined;
750
+ accountUrl?: string | undefined;
751
+ accountField?: string | undefined;
752
+ authorizeParams?: Record<string, string> | undefined;
753
+ tokenAuth?: "body" | "basic" | undefined;
754
+ };
755
+ label?: string | undefined;
756
+ background?: boolean | undefined;
757
+ }, {
758
+ why: string;
759
+ family: "oauth2";
760
+ provider: {
761
+ name: string;
762
+ authorizeUrl: string;
763
+ tokenUrl: string;
764
+ scopes: string[];
765
+ hosts: string[];
766
+ clientIdEnv?: string | undefined;
767
+ clientSecretEnv?: string | undefined;
768
+ accountUrl?: string | undefined;
769
+ accountField?: string | undefined;
770
+ authorizeParams?: Record<string, string> | undefined;
771
+ tokenAuth?: "body" | "basic" | undefined;
772
+ };
773
+ label?: string | undefined;
774
+ background?: boolean | undefined;
775
+ }>, z.ZodObject<{
776
+ family: z.ZodLiteral<"apiKey">;
777
+ provider: z.ZodEffects<z.ZodObject<{
778
+ name: z.ZodString;
779
+ hosts: z.ZodArray<z.ZodString, "many">;
780
+ header: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
781
+ prefix: z.ZodOptional<z.ZodString>;
782
+ keyHelp: z.ZodOptional<z.ZodString>;
783
+ verifyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
784
+ }, "strict", z.ZodTypeAny, {
785
+ name: string;
786
+ hosts: string[];
787
+ header?: string | undefined;
788
+ prefix?: string | undefined;
789
+ keyHelp?: string | undefined;
790
+ verifyUrl?: string | undefined;
791
+ }, {
792
+ name: string;
793
+ hosts: string[];
794
+ header?: string | undefined;
795
+ prefix?: string | undefined;
796
+ keyHelp?: string | undefined;
797
+ verifyUrl?: string | undefined;
798
+ }>, {
799
+ name: string;
800
+ hosts: string[];
801
+ header?: string | undefined;
802
+ prefix?: string | undefined;
803
+ keyHelp?: string | undefined;
804
+ verifyUrl?: string | undefined;
805
+ }, {
806
+ name: string;
807
+ hosts: string[];
808
+ header?: string | undefined;
809
+ prefix?: string | undefined;
810
+ keyHelp?: string | undefined;
811
+ verifyUrl?: string | undefined;
812
+ }>;
813
+ label: z.ZodOptional<z.ZodString>;
814
+ why: z.ZodString;
815
+ background: z.ZodOptional<z.ZodBoolean>;
816
+ }, "strict", z.ZodTypeAny, {
817
+ why: string;
818
+ family: "apiKey";
819
+ provider: {
820
+ name: string;
821
+ hosts: string[];
822
+ header?: string | undefined;
823
+ prefix?: string | undefined;
824
+ keyHelp?: string | undefined;
825
+ verifyUrl?: string | undefined;
826
+ };
827
+ label?: string | undefined;
828
+ background?: boolean | undefined;
829
+ }, {
830
+ why: string;
831
+ family: "apiKey";
832
+ provider: {
833
+ name: string;
834
+ hosts: string[];
835
+ header?: string | undefined;
836
+ prefix?: string | undefined;
837
+ keyHelp?: string | undefined;
838
+ verifyUrl?: string | undefined;
839
+ };
840
+ label?: string | undefined;
841
+ background?: boolean | undefined;
842
+ }>]>>, Record<string, {
180
843
  why: string;
181
844
  family: "google";
182
845
  scopes: string[];
183
846
  label?: string | undefined;
184
847
  background?: boolean | undefined;
848
+ } | {
849
+ why: string;
850
+ family: "oauth2";
851
+ provider: {
852
+ name: string;
853
+ authorizeUrl: string;
854
+ tokenUrl: string;
855
+ scopes: string[];
856
+ hosts: string[];
857
+ clientIdEnv?: string | undefined;
858
+ clientSecretEnv?: string | undefined;
859
+ accountUrl?: string | undefined;
860
+ accountField?: string | undefined;
861
+ authorizeParams?: Record<string, string> | undefined;
862
+ tokenAuth?: "body" | "basic" | undefined;
863
+ };
864
+ label?: string | undefined;
865
+ background?: boolean | undefined;
866
+ } | {
867
+ why: string;
868
+ family: "apiKey";
869
+ provider: {
870
+ name: string;
871
+ hosts: string[];
872
+ header?: string | undefined;
873
+ prefix?: string | undefined;
874
+ keyHelp?: string | undefined;
875
+ verifyUrl?: string | undefined;
876
+ };
877
+ label?: string | undefined;
878
+ background?: boolean | undefined;
185
879
  }>, Record<string, {
186
880
  why: string;
187
881
  family: "google";
188
882
  scopes: string[];
189
883
  label?: string | undefined;
190
884
  background?: boolean | undefined;
885
+ } | {
886
+ why: string;
887
+ family: "oauth2";
888
+ provider: {
889
+ name: string;
890
+ authorizeUrl: string;
891
+ tokenUrl: string;
892
+ scopes: string[];
893
+ hosts: string[];
894
+ clientIdEnv?: string | undefined;
895
+ clientSecretEnv?: string | undefined;
896
+ accountUrl?: string | undefined;
897
+ accountField?: string | undefined;
898
+ authorizeParams?: Record<string, string> | undefined;
899
+ tokenAuth?: "body" | "basic" | undefined;
900
+ };
901
+ label?: string | undefined;
902
+ background?: boolean | undefined;
903
+ } | {
904
+ why: string;
905
+ family: "apiKey";
906
+ provider: {
907
+ name: string;
908
+ hosts: string[];
909
+ header?: string | undefined;
910
+ prefix?: string | undefined;
911
+ keyHelp?: string | undefined;
912
+ verifyUrl?: string | undefined;
913
+ };
914
+ label?: string | undefined;
915
+ background?: boolean | undefined;
191
916
  }>>;
192
917
  /** A gateway model id: `provider/model` ("deepseek/deepseek-v3.2"). */
193
918
  export declare const LLM_MODEL_ID_RE: RegExp;
@@ -765,7 +1490,7 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
765
1490
  * Parts of the app that run ON THE PERSON'S COMPUTER (plugin-device-arm.md
766
1491
  * §10–§11). The declared commands are the whole authority: the owner
767
1492
  * approves this list by name when they connect a machine, the app calls
768
- * them with `device(ctx, linkId).run(name, params)`, and nothing else can
1493
+ * them with `devices(ctx).run(name, params, { linkId })`, and nothing else can
769
1494
  * run. Adding or changing a command in an update waits for a fresh approval.
770
1495
  */
771
1496
  device: z.ZodOptional<z.ZodEffects<z.ZodObject<{
@@ -989,12 +1714,12 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
989
1714
  required: z.ZodOptional<z.ZodBoolean>;
990
1715
  describe: z.ZodOptional<z.ZodString>;
991
1716
  }, "strict", z.ZodTypeAny, {
992
- required?: boolean | undefined;
993
1717
  describe?: string | undefined;
1718
+ required?: boolean | undefined;
994
1719
  secret?: boolean | undefined;
995
1720
  }, {
996
- required?: boolean | undefined;
997
1721
  describe?: string | undefined;
1722
+ required?: boolean | undefined;
998
1723
  secret?: boolean | undefined;
999
1724
  }>>>;
1000
1725
  redact: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
@@ -1052,8 +1777,8 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1052
1777
  } | undefined;
1053
1778
  } | undefined;
1054
1779
  config?: Record<string, {
1055
- required?: boolean | undefined;
1056
1780
  describe?: string | undefined;
1781
+ required?: boolean | undefined;
1057
1782
  secret?: boolean | undefined;
1058
1783
  }> | undefined;
1059
1784
  redact?: string[] | undefined;
@@ -1111,8 +1836,8 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1111
1836
  } | undefined;
1112
1837
  } | undefined;
1113
1838
  config?: Record<string, {
1114
- required?: boolean | undefined;
1115
1839
  describe?: string | undefined;
1840
+ required?: boolean | undefined;
1116
1841
  secret?: boolean | undefined;
1117
1842
  }> | undefined;
1118
1843
  redact?: string[] | undefined;
@@ -1170,8 +1895,8 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1170
1895
  } | undefined;
1171
1896
  } | undefined;
1172
1897
  config?: Record<string, {
1173
- required?: boolean | undefined;
1174
1898
  describe?: string | undefined;
1899
+ required?: boolean | undefined;
1175
1900
  secret?: boolean | undefined;
1176
1901
  }> | undefined;
1177
1902
  redact?: string[] | undefined;
@@ -1229,8 +1954,8 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1229
1954
  } | undefined;
1230
1955
  } | undefined;
1231
1956
  config?: Record<string, {
1232
- required?: boolean | undefined;
1233
1957
  describe?: string | undefined;
1958
+ required?: boolean | undefined;
1234
1959
  secret?: boolean | undefined;
1235
1960
  }> | undefined;
1236
1961
  redact?: string[] | undefined;
@@ -1300,12 +2025,14 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1300
2025
  headerNames?: string[] | undefined;
1301
2026
  }>, "many">>>;
1302
2027
  /**
1303
- * PLATFORM ACCOUNTS the app uses (docs/08): slot name → `{ family, scopes, why, label?, background? }`.
1304
- * The person assigns one of their connected Google accounts to the slot in Account settings; the
1305
- * app calls Google through `credentials(ctx).slot(name).fetch(url)` and never sees a token.
1306
- * At most one slot per app for now.
2028
+ * THE PERSON'S ACCOUNTS the app uses (docs/08): slot name → `{ family: "google", scopes, why }`,
2029
+ * `{ family: "oauth2", provider: { name, authorizeUrl, tokenUrl, scopes, hosts }, why }` or
2030
+ * `{ family: "apiKey", provider: { name, hosts, header?, prefix? }, why }` (+ `label?`,
2031
+ * `background?`). The person connects an account once in Account settings and assigns it to the
2032
+ * app; the app calls through `credentials(ctx).slot(name).fetch(url)` and never sees a token or
2033
+ * key. At most one slot per app for now.
1307
2034
  */
1308
- credentials: z.ZodOptional<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodObject<{
2035
+ credentials: z.ZodOptional<z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<"family", [z.ZodObject<{
1309
2036
  family: z.ZodLiteral<"google">;
1310
2037
  scopes: z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], string[]>;
1311
2038
  label: z.ZodOptional<z.ZodString>;
@@ -1323,18 +2050,249 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1323
2050
  scopes: string[];
1324
2051
  label?: string | undefined;
1325
2052
  background?: boolean | undefined;
1326
- }>>, Record<string, {
2053
+ }>, z.ZodObject<{
2054
+ family: z.ZodLiteral<"oauth2">;
2055
+ provider: z.ZodEffects<z.ZodObject<{
2056
+ name: z.ZodString;
2057
+ authorizeUrl: z.ZodEffects<z.ZodString, string, string>;
2058
+ tokenUrl: z.ZodEffects<z.ZodString, string, string>;
2059
+ scopes: z.ZodArray<z.ZodString, "many">;
2060
+ hosts: z.ZodArray<z.ZodString, "many">;
2061
+ accountUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
2062
+ accountField: z.ZodOptional<z.ZodString>;
2063
+ authorizeParams: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
2064
+ tokenAuth: z.ZodOptional<z.ZodEnum<["body", "basic"]>>;
2065
+ clientIdEnv: z.ZodOptional<z.ZodString>;
2066
+ clientSecretEnv: z.ZodOptional<z.ZodString>;
2067
+ }, "strict", z.ZodTypeAny, {
2068
+ name: string;
2069
+ authorizeUrl: string;
2070
+ tokenUrl: string;
2071
+ scopes: string[];
2072
+ hosts: string[];
2073
+ clientIdEnv?: string | undefined;
2074
+ clientSecretEnv?: string | undefined;
2075
+ accountUrl?: string | undefined;
2076
+ accountField?: string | undefined;
2077
+ authorizeParams?: Record<string, string> | undefined;
2078
+ tokenAuth?: "body" | "basic" | undefined;
2079
+ }, {
2080
+ name: string;
2081
+ authorizeUrl: string;
2082
+ tokenUrl: string;
2083
+ scopes: string[];
2084
+ hosts: string[];
2085
+ clientIdEnv?: string | undefined;
2086
+ clientSecretEnv?: string | undefined;
2087
+ accountUrl?: string | undefined;
2088
+ accountField?: string | undefined;
2089
+ authorizeParams?: Record<string, string> | undefined;
2090
+ tokenAuth?: "body" | "basic" | undefined;
2091
+ }>, {
2092
+ name: string;
2093
+ authorizeUrl: string;
2094
+ tokenUrl: string;
2095
+ scopes: string[];
2096
+ hosts: string[];
2097
+ clientIdEnv?: string | undefined;
2098
+ clientSecretEnv?: string | undefined;
2099
+ accountUrl?: string | undefined;
2100
+ accountField?: string | undefined;
2101
+ authorizeParams?: Record<string, string> | undefined;
2102
+ tokenAuth?: "body" | "basic" | undefined;
2103
+ }, {
2104
+ name: string;
2105
+ authorizeUrl: string;
2106
+ tokenUrl: string;
2107
+ scopes: string[];
2108
+ hosts: string[];
2109
+ clientIdEnv?: string | undefined;
2110
+ clientSecretEnv?: string | undefined;
2111
+ accountUrl?: string | undefined;
2112
+ accountField?: string | undefined;
2113
+ authorizeParams?: Record<string, string> | undefined;
2114
+ tokenAuth?: "body" | "basic" | undefined;
2115
+ }>;
2116
+ label: z.ZodOptional<z.ZodString>;
2117
+ why: z.ZodString;
2118
+ background: z.ZodOptional<z.ZodBoolean>;
2119
+ }, "strict", z.ZodTypeAny, {
2120
+ why: string;
2121
+ family: "oauth2";
2122
+ provider: {
2123
+ name: string;
2124
+ authorizeUrl: string;
2125
+ tokenUrl: string;
2126
+ scopes: string[];
2127
+ hosts: string[];
2128
+ clientIdEnv?: string | undefined;
2129
+ clientSecretEnv?: string | undefined;
2130
+ accountUrl?: string | undefined;
2131
+ accountField?: string | undefined;
2132
+ authorizeParams?: Record<string, string> | undefined;
2133
+ tokenAuth?: "body" | "basic" | undefined;
2134
+ };
2135
+ label?: string | undefined;
2136
+ background?: boolean | undefined;
2137
+ }, {
2138
+ why: string;
2139
+ family: "oauth2";
2140
+ provider: {
2141
+ name: string;
2142
+ authorizeUrl: string;
2143
+ tokenUrl: string;
2144
+ scopes: string[];
2145
+ hosts: string[];
2146
+ clientIdEnv?: string | undefined;
2147
+ clientSecretEnv?: string | undefined;
2148
+ accountUrl?: string | undefined;
2149
+ accountField?: string | undefined;
2150
+ authorizeParams?: Record<string, string> | undefined;
2151
+ tokenAuth?: "body" | "basic" | undefined;
2152
+ };
2153
+ label?: string | undefined;
2154
+ background?: boolean | undefined;
2155
+ }>, z.ZodObject<{
2156
+ family: z.ZodLiteral<"apiKey">;
2157
+ provider: z.ZodEffects<z.ZodObject<{
2158
+ name: z.ZodString;
2159
+ hosts: z.ZodArray<z.ZodString, "many">;
2160
+ header: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
2161
+ prefix: z.ZodOptional<z.ZodString>;
2162
+ keyHelp: z.ZodOptional<z.ZodString>;
2163
+ verifyUrl: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
2164
+ }, "strict", z.ZodTypeAny, {
2165
+ name: string;
2166
+ hosts: string[];
2167
+ header?: string | undefined;
2168
+ prefix?: string | undefined;
2169
+ keyHelp?: string | undefined;
2170
+ verifyUrl?: string | undefined;
2171
+ }, {
2172
+ name: string;
2173
+ hosts: string[];
2174
+ header?: string | undefined;
2175
+ prefix?: string | undefined;
2176
+ keyHelp?: string | undefined;
2177
+ verifyUrl?: string | undefined;
2178
+ }>, {
2179
+ name: string;
2180
+ hosts: string[];
2181
+ header?: string | undefined;
2182
+ prefix?: string | undefined;
2183
+ keyHelp?: string | undefined;
2184
+ verifyUrl?: string | undefined;
2185
+ }, {
2186
+ name: string;
2187
+ hosts: string[];
2188
+ header?: string | undefined;
2189
+ prefix?: string | undefined;
2190
+ keyHelp?: string | undefined;
2191
+ verifyUrl?: string | undefined;
2192
+ }>;
2193
+ label: z.ZodOptional<z.ZodString>;
2194
+ why: z.ZodString;
2195
+ background: z.ZodOptional<z.ZodBoolean>;
2196
+ }, "strict", z.ZodTypeAny, {
2197
+ why: string;
2198
+ family: "apiKey";
2199
+ provider: {
2200
+ name: string;
2201
+ hosts: string[];
2202
+ header?: string | undefined;
2203
+ prefix?: string | undefined;
2204
+ keyHelp?: string | undefined;
2205
+ verifyUrl?: string | undefined;
2206
+ };
2207
+ label?: string | undefined;
2208
+ background?: boolean | undefined;
2209
+ }, {
2210
+ why: string;
2211
+ family: "apiKey";
2212
+ provider: {
2213
+ name: string;
2214
+ hosts: string[];
2215
+ header?: string | undefined;
2216
+ prefix?: string | undefined;
2217
+ keyHelp?: string | undefined;
2218
+ verifyUrl?: string | undefined;
2219
+ };
2220
+ label?: string | undefined;
2221
+ background?: boolean | undefined;
2222
+ }>]>>, Record<string, {
1327
2223
  why: string;
1328
2224
  family: "google";
1329
2225
  scopes: string[];
1330
2226
  label?: string | undefined;
1331
2227
  background?: boolean | undefined;
2228
+ } | {
2229
+ why: string;
2230
+ family: "oauth2";
2231
+ provider: {
2232
+ name: string;
2233
+ authorizeUrl: string;
2234
+ tokenUrl: string;
2235
+ scopes: string[];
2236
+ hosts: string[];
2237
+ clientIdEnv?: string | undefined;
2238
+ clientSecretEnv?: string | undefined;
2239
+ accountUrl?: string | undefined;
2240
+ accountField?: string | undefined;
2241
+ authorizeParams?: Record<string, string> | undefined;
2242
+ tokenAuth?: "body" | "basic" | undefined;
2243
+ };
2244
+ label?: string | undefined;
2245
+ background?: boolean | undefined;
2246
+ } | {
2247
+ why: string;
2248
+ family: "apiKey";
2249
+ provider: {
2250
+ name: string;
2251
+ hosts: string[];
2252
+ header?: string | undefined;
2253
+ prefix?: string | undefined;
2254
+ keyHelp?: string | undefined;
2255
+ verifyUrl?: string | undefined;
2256
+ };
2257
+ label?: string | undefined;
2258
+ background?: boolean | undefined;
1332
2259
  }>, Record<string, {
1333
2260
  why: string;
1334
2261
  family: "google";
1335
2262
  scopes: string[];
1336
2263
  label?: string | undefined;
1337
2264
  background?: boolean | undefined;
2265
+ } | {
2266
+ why: string;
2267
+ family: "oauth2";
2268
+ provider: {
2269
+ name: string;
2270
+ authorizeUrl: string;
2271
+ tokenUrl: string;
2272
+ scopes: string[];
2273
+ hosts: string[];
2274
+ clientIdEnv?: string | undefined;
2275
+ clientSecretEnv?: string | undefined;
2276
+ accountUrl?: string | undefined;
2277
+ accountField?: string | undefined;
2278
+ authorizeParams?: Record<string, string> | undefined;
2279
+ tokenAuth?: "body" | "basic" | undefined;
2280
+ };
2281
+ label?: string | undefined;
2282
+ background?: boolean | undefined;
2283
+ } | {
2284
+ why: string;
2285
+ family: "apiKey";
2286
+ provider: {
2287
+ name: string;
2288
+ hosts: string[];
2289
+ header?: string | undefined;
2290
+ prefix?: string | undefined;
2291
+ keyHelp?: string | undefined;
2292
+ verifyUrl?: string | undefined;
2293
+ };
2294
+ label?: string | undefined;
2295
+ background?: boolean | undefined;
1338
2296
  }>>>;
1339
2297
  /**
1340
2298
  * MODEL CALLS (docs/19): `{ why, dailyBudgetUsd?, models? }`. The app calls `llm(ctx).generate(…)`;
@@ -1651,8 +2609,8 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1651
2609
  } | undefined;
1652
2610
  } | undefined;
1653
2611
  config?: Record<string, {
1654
- required?: boolean | undefined;
1655
2612
  describe?: string | undefined;
2613
+ required?: boolean | undefined;
1656
2614
  secret?: boolean | undefined;
1657
2615
  }> | undefined;
1658
2616
  redact?: string[] | undefined;
@@ -1664,6 +2622,37 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1664
2622
  scopes: string[];
1665
2623
  label?: string | undefined;
1666
2624
  background?: boolean | undefined;
2625
+ } | {
2626
+ why: string;
2627
+ family: "oauth2";
2628
+ provider: {
2629
+ name: string;
2630
+ authorizeUrl: string;
2631
+ tokenUrl: string;
2632
+ scopes: string[];
2633
+ hosts: string[];
2634
+ clientIdEnv?: string | undefined;
2635
+ clientSecretEnv?: string | undefined;
2636
+ accountUrl?: string | undefined;
2637
+ accountField?: string | undefined;
2638
+ authorizeParams?: Record<string, string> | undefined;
2639
+ tokenAuth?: "body" | "basic" | undefined;
2640
+ };
2641
+ label?: string | undefined;
2642
+ background?: boolean | undefined;
2643
+ } | {
2644
+ why: string;
2645
+ family: "apiKey";
2646
+ provider: {
2647
+ name: string;
2648
+ hosts: string[];
2649
+ header?: string | undefined;
2650
+ prefix?: string | undefined;
2651
+ keyHelp?: string | undefined;
2652
+ verifyUrl?: string | undefined;
2653
+ };
2654
+ label?: string | undefined;
2655
+ background?: boolean | undefined;
1667
2656
  }> | undefined;
1668
2657
  llm?: {
1669
2658
  why: string;
@@ -1800,8 +2789,8 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1800
2789
  } | undefined;
1801
2790
  } | undefined;
1802
2791
  config?: Record<string, {
1803
- required?: boolean | undefined;
1804
2792
  describe?: string | undefined;
2793
+ required?: boolean | undefined;
1805
2794
  secret?: boolean | undefined;
1806
2795
  }> | undefined;
1807
2796
  redact?: string[] | undefined;
@@ -1813,6 +2802,37 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
1813
2802
  scopes: string[];
1814
2803
  label?: string | undefined;
1815
2804
  background?: boolean | undefined;
2805
+ } | {
2806
+ why: string;
2807
+ family: "oauth2";
2808
+ provider: {
2809
+ name: string;
2810
+ authorizeUrl: string;
2811
+ tokenUrl: string;
2812
+ scopes: string[];
2813
+ hosts: string[];
2814
+ clientIdEnv?: string | undefined;
2815
+ clientSecretEnv?: string | undefined;
2816
+ accountUrl?: string | undefined;
2817
+ accountField?: string | undefined;
2818
+ authorizeParams?: Record<string, string> | undefined;
2819
+ tokenAuth?: "body" | "basic" | undefined;
2820
+ };
2821
+ label?: string | undefined;
2822
+ background?: boolean | undefined;
2823
+ } | {
2824
+ why: string;
2825
+ family: "apiKey";
2826
+ provider: {
2827
+ name: string;
2828
+ hosts: string[];
2829
+ header?: string | undefined;
2830
+ prefix?: string | undefined;
2831
+ keyHelp?: string | undefined;
2832
+ verifyUrl?: string | undefined;
2833
+ };
2834
+ label?: string | undefined;
2835
+ background?: boolean | undefined;
1816
2836
  }> | undefined;
1817
2837
  llm?: {
1818
2838
  why: string;
@@ -2029,8 +3049,8 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
2029
3049
  } | undefined;
2030
3050
  } | undefined;
2031
3051
  config?: Record<string, {
2032
- required?: boolean | undefined;
2033
3052
  describe?: string | undefined;
3053
+ required?: boolean | undefined;
2034
3054
  secret?: boolean | undefined;
2035
3055
  }> | undefined;
2036
3056
  redact?: string[] | undefined;
@@ -2042,6 +3062,37 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
2042
3062
  scopes: string[];
2043
3063
  label?: string | undefined;
2044
3064
  background?: boolean | undefined;
3065
+ } | {
3066
+ why: string;
3067
+ family: "oauth2";
3068
+ provider: {
3069
+ name: string;
3070
+ authorizeUrl: string;
3071
+ tokenUrl: string;
3072
+ scopes: string[];
3073
+ hosts: string[];
3074
+ clientIdEnv?: string | undefined;
3075
+ clientSecretEnv?: string | undefined;
3076
+ accountUrl?: string | undefined;
3077
+ accountField?: string | undefined;
3078
+ authorizeParams?: Record<string, string> | undefined;
3079
+ tokenAuth?: "body" | "basic" | undefined;
3080
+ };
3081
+ label?: string | undefined;
3082
+ background?: boolean | undefined;
3083
+ } | {
3084
+ why: string;
3085
+ family: "apiKey";
3086
+ provider: {
3087
+ name: string;
3088
+ hosts: string[];
3089
+ header?: string | undefined;
3090
+ prefix?: string | undefined;
3091
+ keyHelp?: string | undefined;
3092
+ verifyUrl?: string | undefined;
3093
+ };
3094
+ label?: string | undefined;
3095
+ background?: boolean | undefined;
2045
3096
  }> | undefined;
2046
3097
  llm?: {
2047
3098
  why: string;
@@ -2178,8 +3229,8 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
2178
3229
  } | undefined;
2179
3230
  } | undefined;
2180
3231
  config?: Record<string, {
2181
- required?: boolean | undefined;
2182
3232
  describe?: string | undefined;
3233
+ required?: boolean | undefined;
2183
3234
  secret?: boolean | undefined;
2184
3235
  }> | undefined;
2185
3236
  redact?: string[] | undefined;
@@ -2191,6 +3242,37 @@ export declare const PluginManifestSchema: z.ZodEffects<z.ZodObject<{
2191
3242
  scopes: string[];
2192
3243
  label?: string | undefined;
2193
3244
  background?: boolean | undefined;
3245
+ } | {
3246
+ why: string;
3247
+ family: "oauth2";
3248
+ provider: {
3249
+ name: string;
3250
+ authorizeUrl: string;
3251
+ tokenUrl: string;
3252
+ scopes: string[];
3253
+ hosts: string[];
3254
+ clientIdEnv?: string | undefined;
3255
+ clientSecretEnv?: string | undefined;
3256
+ accountUrl?: string | undefined;
3257
+ accountField?: string | undefined;
3258
+ authorizeParams?: Record<string, string> | undefined;
3259
+ tokenAuth?: "body" | "basic" | undefined;
3260
+ };
3261
+ label?: string | undefined;
3262
+ background?: boolean | undefined;
3263
+ } | {
3264
+ why: string;
3265
+ family: "apiKey";
3266
+ provider: {
3267
+ name: string;
3268
+ hosts: string[];
3269
+ header?: string | undefined;
3270
+ prefix?: string | undefined;
3271
+ keyHelp?: string | undefined;
3272
+ verifyUrl?: string | undefined;
3273
+ };
3274
+ label?: string | undefined;
3275
+ background?: boolean | undefined;
2194
3276
  }> | undefined;
2195
3277
  llm?: {
2196
3278
  why: string;