@otto-code/protocol 0.9.8 → 0.9.9

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.
@@ -58631,6 +58631,11 @@ export const WSOutboundMessageSchema = /* @__PURE__ */ (() => {
58631
58631
  }
58632
58632
  else {
58633
58633
  var __o_3901 = __o_3797["connectors"][__i_3900];
58634
+ if (__o_3901["builtin"] !== undefined) {
58635
+ if (typeof __o_3901["builtin"] !== "string") {
58636
+ _e.push({ code: "invalid_type", expected: "string", input: __o_3901["builtin"], path: ["message"].concat("payload").concat("config").concat("connectors").concat(__i_3900).concat("builtin") });
58637
+ }
58638
+ }
58634
58639
  if (typeof __o_3901["id"] !== "string") {
58635
58640
  _e.push({ code: "invalid_type", expected: "string", input: __o_3901["id"], path: ["message"].concat("payload").concat("config").concat("connectors").concat(__i_3900).concat("id") });
58636
58641
  }
@@ -58814,6 +58819,11 @@ export const WSOutboundMessageSchema = /* @__PURE__ */ (() => {
58814
58819
  }
58815
58820
  else {
58816
58821
  var __o_3920 = __o_3901["auth"];
58822
+ if (__o_3920["resourceUrl"] !== undefined) {
58823
+ if (typeof __o_3920["resourceUrl"] !== "string") {
58824
+ _e.push({ code: "invalid_type", expected: "string", input: __o_3920["resourceUrl"], path: ["message"].concat("payload").concat("config").concat("connectors").concat(__i_3900).concat("auth").concat("resourceUrl") });
58825
+ }
58826
+ }
58817
58827
  if (__o_3920["kind"] !== "oauth") {
58818
58828
  _e.push({ code: "invalid_value", values: ["oauth"], input: __o_3920["kind"], path: ["message"].concat("payload").concat("config").concat("connectors").concat(__i_3900).concat("auth").concat("kind") });
58819
58829
  }
@@ -61454,6 +61464,11 @@ export const WSOutboundMessageSchema = /* @__PURE__ */ (() => {
61454
61464
  }
61455
61465
  else {
61456
61466
  var __o_4066 = __o_3962["connectors"][__i_4065];
61467
+ if (__o_4066["builtin"] !== undefined) {
61468
+ if (typeof __o_4066["builtin"] !== "string") {
61469
+ _e.push({ code: "invalid_type", expected: "string", input: __o_4066["builtin"], path: ["message"].concat("payload").concat("config").concat("connectors").concat(__i_4065).concat("builtin") });
61470
+ }
61471
+ }
61457
61472
  if (typeof __o_4066["id"] !== "string") {
61458
61473
  _e.push({ code: "invalid_type", expected: "string", input: __o_4066["id"], path: ["message"].concat("payload").concat("config").concat("connectors").concat(__i_4065).concat("id") });
61459
61474
  }
@@ -61637,6 +61652,11 @@ export const WSOutboundMessageSchema = /* @__PURE__ */ (() => {
61637
61652
  }
61638
61653
  else {
61639
61654
  var __o_4085 = __o_4066["auth"];
61655
+ if (__o_4085["resourceUrl"] !== undefined) {
61656
+ if (typeof __o_4085["resourceUrl"] !== "string") {
61657
+ _e.push({ code: "invalid_type", expected: "string", input: __o_4085["resourceUrl"], path: ["message"].concat("payload").concat("config").concat("connectors").concat(__i_4065).concat("auth").concat("resourceUrl") });
61658
+ }
61659
+ }
61640
61660
  if (__o_4085["kind"] !== "oauth") {
61641
61661
  _e.push({ code: "invalid_value", values: ["oauth"], input: __o_4085["kind"], path: ["message"].concat("payload").concat("config").concat("connectors").concat(__i_4065).concat("auth").concat("kind") });
61642
61662
  }
@@ -0,0 +1,71 @@
1
+ /** Otto-owned tools over Google's ordinary account APIs. These URLs identify
2
+ * native integrations; they are not remote MCP endpoints.
3
+ * Scope changes require publisher portal configuration and renewed consent.
4
+ */
5
+ export declare const GOOGLE_CONNECTOR_SERVICES: readonly [{
6
+ readonly id: "google-drive";
7
+ readonly label: "Google Drive";
8
+ readonly url: "https://www.googleapis.com/drive/v3";
9
+ readonly description: "Find, read, create and update files in Google Drive.";
10
+ readonly scopes: readonly ["https://www.googleapis.com/auth/drive"];
11
+ }, {
12
+ readonly id: "gmail";
13
+ readonly label: "Gmail";
14
+ readonly url: "https://gmail.googleapis.com/gmail/v1";
15
+ readonly description: "Find and read emails, create drafts, send, reply and forward.";
16
+ readonly scopes: readonly ["https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.compose"];
17
+ }, {
18
+ readonly id: "google-calendar";
19
+ readonly label: "Google Calendar";
20
+ readonly url: "https://www.googleapis.com/calendar/v3";
21
+ readonly description: "List calendars, find and read events, and create events.";
22
+ readonly scopes: readonly ["https://www.googleapis.com/auth/calendar.calendarlist.readonly", "https://www.googleapis.com/auth/calendar.events"];
23
+ }];
24
+ export declare const GOOGLE_CONNECTOR_SOURCE = "https://developers.google.com/identity/protocols/oauth2/native-app";
25
+ export declare const CONNECTOR_OAUTH_REDIRECT_URI = "http://127.0.0.1:6871/connectors/oauth/callback";
26
+ export declare function googleConnectorForUrl(url: string): {
27
+ readonly id: "google-drive";
28
+ readonly label: "Google Drive";
29
+ readonly url: "https://www.googleapis.com/drive/v3";
30
+ readonly description: "Find, read, create and update files in Google Drive.";
31
+ readonly scopes: readonly ["https://www.googleapis.com/auth/drive"];
32
+ } | {
33
+ readonly id: "gmail";
34
+ readonly label: "Gmail";
35
+ readonly url: "https://gmail.googleapis.com/gmail/v1";
36
+ readonly description: "Find and read emails, create drafts, send, reply and forward.";
37
+ readonly scopes: readonly ["https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.compose"];
38
+ } | {
39
+ readonly id: "google-calendar";
40
+ readonly label: "Google Calendar";
41
+ readonly url: "https://www.googleapis.com/calendar/v3";
42
+ readonly description: "List calendars, find and read events, and create events.";
43
+ readonly scopes: readonly ["https://www.googleapis.com/auth/calendar.calendarlist.readonly", "https://www.googleapis.com/auth/calendar.events"];
44
+ } | undefined;
45
+ export type GoogleConnectorService = (typeof GOOGLE_CONNECTOR_SERVICES)[number];
46
+ export declare function googleConnectorForConfig(connector: {
47
+ builtin?: string;
48
+ server: {
49
+ type: string;
50
+ url?: string;
51
+ };
52
+ }): {
53
+ readonly id: "google-drive";
54
+ readonly label: "Google Drive";
55
+ readonly url: "https://www.googleapis.com/drive/v3";
56
+ readonly description: "Find, read, create and update files in Google Drive.";
57
+ readonly scopes: readonly ["https://www.googleapis.com/auth/drive"];
58
+ } | {
59
+ readonly id: "gmail";
60
+ readonly label: "Gmail";
61
+ readonly url: "https://gmail.googleapis.com/gmail/v1";
62
+ readonly description: "Find and read emails, create drafts, send, reply and forward.";
63
+ readonly scopes: readonly ["https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.compose"];
64
+ } | {
65
+ readonly id: "google-calendar";
66
+ readonly label: "Google Calendar";
67
+ readonly url: "https://www.googleapis.com/calendar/v3";
68
+ readonly description: "List calendars, find and read events, and create events.";
69
+ readonly scopes: readonly ["https://www.googleapis.com/auth/calendar.calendarlist.readonly", "https://www.googleapis.com/auth/calendar.events"];
70
+ } | undefined;
71
+ //# sourceMappingURL=google-connectors.d.ts.map
@@ -0,0 +1,44 @@
1
+ /** Otto-owned tools over Google's ordinary account APIs. These URLs identify
2
+ * native integrations; they are not remote MCP endpoints.
3
+ * Scope changes require publisher portal configuration and renewed consent.
4
+ */
5
+ export const GOOGLE_CONNECTOR_SERVICES = [
6
+ {
7
+ id: "google-drive",
8
+ label: "Google Drive",
9
+ url: "https://www.googleapis.com/drive/v3",
10
+ description: "Find, read, create and update files in Google Drive.",
11
+ scopes: ["https://www.googleapis.com/auth/drive"],
12
+ },
13
+ {
14
+ id: "gmail",
15
+ label: "Gmail",
16
+ url: "https://gmail.googleapis.com/gmail/v1",
17
+ description: "Find and read emails, create drafts, send, reply and forward.",
18
+ scopes: [
19
+ "https://www.googleapis.com/auth/gmail.readonly",
20
+ "https://www.googleapis.com/auth/gmail.compose",
21
+ ],
22
+ },
23
+ {
24
+ id: "google-calendar",
25
+ label: "Google Calendar",
26
+ url: "https://www.googleapis.com/calendar/v3",
27
+ description: "List calendars, find and read events, and create events.",
28
+ scopes: [
29
+ "https://www.googleapis.com/auth/calendar.calendarlist.readonly",
30
+ "https://www.googleapis.com/auth/calendar.events",
31
+ ],
32
+ },
33
+ ];
34
+ export const GOOGLE_CONNECTOR_SOURCE = "https://developers.google.com/identity/protocols/oauth2/native-app";
35
+ export const CONNECTOR_OAUTH_REDIRECT_URI = "http://127.0.0.1:6871/connectors/oauth/callback";
36
+ export function googleConnectorForUrl(url) {
37
+ return GOOGLE_CONNECTOR_SERVICES.find((service) => service.url === url);
38
+ }
39
+ export function googleConnectorForConfig(connector) {
40
+ if (!connector.builtin || connector.server.type !== "http")
41
+ return undefined;
42
+ return GOOGLE_CONNECTOR_SERVICES.find((service) => service.id === connector.builtin && service.url === connector.server.url);
43
+ }
44
+ //# sourceMappingURL=google-connectors.js.map
@@ -334,6 +334,7 @@ export declare const MutableDaemonConfigSchema: z.ZodObject<{
334
334
  }, z.core.$loose>>;
335
335
  }, z.core.$loose>>;
336
336
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
337
+ builtin: z.ZodOptional<z.ZodString>;
337
338
  id: z.ZodString;
338
339
  label: z.ZodOptional<z.ZodString>;
339
340
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -356,6 +357,7 @@ export declare const MutableDaemonConfigSchema: z.ZodObject<{
356
357
  enabled: z.ZodOptional<z.ZodBoolean>;
357
358
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
358
359
  auth: z.ZodOptional<z.ZodObject<{
360
+ resourceUrl: z.ZodOptional<z.ZodString>;
359
361
  kind: z.ZodLiteral<"oauth">;
360
362
  tokens: z.ZodOptional<z.ZodObject<{
361
363
  accessToken: z.ZodString;
@@ -709,6 +711,7 @@ export declare const MutableDaemonConfigPatchSchema: z.ZodObject<{
709
711
  }, z.core.$loose>>;
710
712
  }, z.core.$loose>>>;
711
713
  connectors: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
714
+ builtin: z.ZodOptional<z.ZodString>;
712
715
  id: z.ZodString;
713
716
  label: z.ZodOptional<z.ZodString>;
714
717
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -731,6 +734,7 @@ export declare const MutableDaemonConfigPatchSchema: z.ZodObject<{
731
734
  enabled: z.ZodOptional<z.ZodBoolean>;
732
735
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
733
736
  auth: z.ZodOptional<z.ZodObject<{
737
+ resourceUrl: z.ZodOptional<z.ZodString>;
734
738
  kind: z.ZodLiteral<"oauth">;
735
739
  tokens: z.ZodOptional<z.ZodObject<{
736
740
  accessToken: z.ZodString;
@@ -2634,6 +2638,7 @@ export declare const SetDaemonConfigRequestMessageSchema: z.ZodObject<{
2634
2638
  }, z.core.$loose>>;
2635
2639
  }, z.core.$loose>>>;
2636
2640
  connectors: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
2641
+ builtin: z.ZodOptional<z.ZodString>;
2637
2642
  id: z.ZodString;
2638
2643
  label: z.ZodOptional<z.ZodString>;
2639
2644
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -2656,6 +2661,7 @@ export declare const SetDaemonConfigRequestMessageSchema: z.ZodObject<{
2656
2661
  enabled: z.ZodOptional<z.ZodBoolean>;
2657
2662
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
2658
2663
  auth: z.ZodOptional<z.ZodObject<{
2664
+ resourceUrl: z.ZodOptional<z.ZodString>;
2659
2665
  kind: z.ZodLiteral<"oauth">;
2660
2666
  tokens: z.ZodOptional<z.ZodObject<{
2661
2667
  accessToken: z.ZodString;
@@ -2742,6 +2748,10 @@ export declare const ConnectorsOauthAuthorizeRequestSchema: z.ZodObject<{
2742
2748
  requestId: z.ZodString;
2743
2749
  connectorId: z.ZodString;
2744
2750
  scope: z.ZodOptional<z.ZodString>;
2751
+ oauthClient: z.ZodOptional<z.ZodObject<{
2752
+ clientId: z.ZodString;
2753
+ clientSecret: z.ZodString;
2754
+ }, z.core.$strip>>;
2745
2755
  }, z.core.$strip>;
2746
2756
  export declare const ConnectorsOauthAuthorizeResponseSchema: z.ZodObject<{
2747
2757
  type: z.ZodLiteral<"connectors.oauth.authorize.response">;
@@ -6531,6 +6541,7 @@ export declare const SessionInboundMessageSchema: z.ZodDiscriminatedUnion<[z.Zod
6531
6541
  }, z.core.$loose>>;
6532
6542
  }, z.core.$loose>>>;
6533
6543
  connectors: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
6544
+ builtin: z.ZodOptional<z.ZodString>;
6534
6545
  id: z.ZodString;
6535
6546
  label: z.ZodOptional<z.ZodString>;
6536
6547
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -6553,6 +6564,7 @@ export declare const SessionInboundMessageSchema: z.ZodDiscriminatedUnion<[z.Zod
6553
6564
  enabled: z.ZodOptional<z.ZodBoolean>;
6554
6565
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
6555
6566
  auth: z.ZodOptional<z.ZodObject<{
6567
+ resourceUrl: z.ZodOptional<z.ZodString>;
6556
6568
  kind: z.ZodLiteral<"oauth">;
6557
6569
  tokens: z.ZodOptional<z.ZodObject<{
6558
6570
  accessToken: z.ZodString;
@@ -6622,6 +6634,10 @@ export declare const SessionInboundMessageSchema: z.ZodDiscriminatedUnion<[z.Zod
6622
6634
  requestId: z.ZodString;
6623
6635
  connectorId: z.ZodString;
6624
6636
  scope: z.ZodOptional<z.ZodString>;
6637
+ oauthClient: z.ZodOptional<z.ZodObject<{
6638
+ clientId: z.ZodString;
6639
+ clientSecret: z.ZodString;
6640
+ }, z.core.$strip>>;
6625
6641
  }, z.core.$strip>, z.ZodObject<{
6626
6642
  type: z.ZodLiteral<"connectors.oauth.disconnect.request">;
6627
6643
  requestId: z.ZodString;
@@ -10209,6 +10225,8 @@ export declare const ServerInfoStatusPayloadSchema: z.ZodPipe<z.ZodObject<{
10209
10225
  mcpToolGroups: z.ZodOptional<z.ZodBoolean>;
10210
10226
  connectors: z.ZodOptional<z.ZodBoolean>;
10211
10227
  connectorOauth: z.ZodOptional<z.ZodBoolean>;
10228
+ connectorGoogleOauth: z.ZodOptional<z.ZodBoolean>;
10229
+ connectorNativeGoogle: z.ZodOptional<z.ZodBoolean>;
10212
10230
  communications: z.ZodOptional<z.ZodBoolean>;
10213
10231
  communicationsChatHome: z.ZodOptional<z.ZodBoolean>;
10214
10232
  communicationsInboxSearch: z.ZodOptional<z.ZodBoolean>;
@@ -10426,6 +10444,8 @@ export declare const ServerInfoStatusPayloadSchema: z.ZodPipe<z.ZodObject<{
10426
10444
  mcpToolGroups?: boolean | undefined;
10427
10445
  connectors?: boolean | undefined;
10428
10446
  connectorOauth?: boolean | undefined;
10447
+ connectorGoogleOauth?: boolean | undefined;
10448
+ connectorNativeGoogle?: boolean | undefined;
10429
10449
  communications?: boolean | undefined;
10430
10450
  communicationsChatHome?: boolean | undefined;
10431
10451
  communicationsInboxSearch?: boolean | undefined;
@@ -10644,6 +10664,8 @@ export declare const ServerInfoStatusPayloadSchema: z.ZodPipe<z.ZodObject<{
10644
10664
  mcpToolGroups?: boolean | undefined;
10645
10665
  connectors?: boolean | undefined;
10646
10666
  connectorOauth?: boolean | undefined;
10667
+ connectorGoogleOauth?: boolean | undefined;
10668
+ connectorNativeGoogle?: boolean | undefined;
10647
10669
  communications?: boolean | undefined;
10648
10670
  communicationsChatHome?: boolean | undefined;
10649
10671
  communicationsInboxSearch?: boolean | undefined;
@@ -11231,6 +11253,7 @@ export declare const DaemonConfigChangedStatusPayloadSchema: z.ZodObject<{
11231
11253
  }, z.core.$loose>>;
11232
11254
  }, z.core.$loose>>;
11233
11255
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
11256
+ builtin: z.ZodOptional<z.ZodString>;
11234
11257
  id: z.ZodString;
11235
11258
  label: z.ZodOptional<z.ZodString>;
11236
11259
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -11253,6 +11276,7 @@ export declare const DaemonConfigChangedStatusPayloadSchema: z.ZodObject<{
11253
11276
  enabled: z.ZodOptional<z.ZodBoolean>;
11254
11277
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
11255
11278
  auth: z.ZodOptional<z.ZodObject<{
11279
+ resourceUrl: z.ZodOptional<z.ZodString>;
11256
11280
  kind: z.ZodLiteral<"oauth">;
11257
11281
  tokens: z.ZodOptional<z.ZodObject<{
11258
11282
  accessToken: z.ZodString;
@@ -11967,6 +11991,7 @@ export declare const KnownStatusPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObj
11967
11991
  }, z.core.$loose>>;
11968
11992
  }, z.core.$loose>>;
11969
11993
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
11994
+ builtin: z.ZodOptional<z.ZodString>;
11970
11995
  id: z.ZodString;
11971
11996
  label: z.ZodOptional<z.ZodString>;
11972
11997
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -11989,6 +12014,7 @@ export declare const KnownStatusPayloadSchema: z.ZodDiscriminatedUnion<[z.ZodObj
11989
12014
  enabled: z.ZodOptional<z.ZodBoolean>;
11990
12015
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
11991
12016
  auth: z.ZodOptional<z.ZodObject<{
12017
+ resourceUrl: z.ZodOptional<z.ZodString>;
11992
12018
  kind: z.ZodLiteral<"oauth">;
11993
12019
  tokens: z.ZodOptional<z.ZodObject<{
11994
12020
  accessToken: z.ZodString;
@@ -18774,6 +18800,7 @@ export declare const GetDaemonConfigResponseMessageSchema: z.ZodObject<{
18774
18800
  }, z.core.$loose>>;
18775
18801
  }, z.core.$loose>>;
18776
18802
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
18803
+ builtin: z.ZodOptional<z.ZodString>;
18777
18804
  id: z.ZodString;
18778
18805
  label: z.ZodOptional<z.ZodString>;
18779
18806
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -18796,6 +18823,7 @@ export declare const GetDaemonConfigResponseMessageSchema: z.ZodObject<{
18796
18823
  enabled: z.ZodOptional<z.ZodBoolean>;
18797
18824
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
18798
18825
  auth: z.ZodOptional<z.ZodObject<{
18826
+ resourceUrl: z.ZodOptional<z.ZodString>;
18799
18827
  kind: z.ZodLiteral<"oauth">;
18800
18828
  tokens: z.ZodOptional<z.ZodObject<{
18801
18829
  accessToken: z.ZodString;
@@ -19280,6 +19308,7 @@ export declare const SetDaemonConfigResponseMessageSchema: z.ZodObject<{
19280
19308
  }, z.core.$loose>>;
19281
19309
  }, z.core.$loose>>;
19282
19310
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
19311
+ builtin: z.ZodOptional<z.ZodString>;
19283
19312
  id: z.ZodString;
19284
19313
  label: z.ZodOptional<z.ZodString>;
19285
19314
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -19302,6 +19331,7 @@ export declare const SetDaemonConfigResponseMessageSchema: z.ZodObject<{
19302
19331
  enabled: z.ZodOptional<z.ZodBoolean>;
19303
19332
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
19304
19333
  auth: z.ZodOptional<z.ZodObject<{
19334
+ resourceUrl: z.ZodOptional<z.ZodString>;
19305
19335
  kind: z.ZodLiteral<"oauth">;
19306
19336
  tokens: z.ZodOptional<z.ZodObject<{
19307
19337
  accessToken: z.ZodString;
@@ -30347,6 +30377,7 @@ export declare const SessionOutboundMessageSchema: z.ZodDiscriminatedUnion<[z.Zo
30347
30377
  }, z.core.$loose>>;
30348
30378
  }, z.core.$loose>>;
30349
30379
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
30380
+ builtin: z.ZodOptional<z.ZodString>;
30350
30381
  id: z.ZodString;
30351
30382
  label: z.ZodOptional<z.ZodString>;
30352
30383
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -30369,6 +30400,7 @@ export declare const SessionOutboundMessageSchema: z.ZodDiscriminatedUnion<[z.Zo
30369
30400
  enabled: z.ZodOptional<z.ZodBoolean>;
30370
30401
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
30371
30402
  auth: z.ZodOptional<z.ZodObject<{
30403
+ resourceUrl: z.ZodOptional<z.ZodString>;
30372
30404
  kind: z.ZodLiteral<"oauth">;
30373
30405
  tokens: z.ZodOptional<z.ZodObject<{
30374
30406
  accessToken: z.ZodString;
@@ -30724,6 +30756,7 @@ export declare const SessionOutboundMessageSchema: z.ZodDiscriminatedUnion<[z.Zo
30724
30756
  }, z.core.$loose>>;
30725
30757
  }, z.core.$loose>>;
30726
30758
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
30759
+ builtin: z.ZodOptional<z.ZodString>;
30727
30760
  id: z.ZodString;
30728
30761
  label: z.ZodOptional<z.ZodString>;
30729
30762
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -30746,6 +30779,7 @@ export declare const SessionOutboundMessageSchema: z.ZodDiscriminatedUnion<[z.Zo
30746
30779
  enabled: z.ZodOptional<z.ZodBoolean>;
30747
30780
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
30748
30781
  auth: z.ZodOptional<z.ZodObject<{
30782
+ resourceUrl: z.ZodOptional<z.ZodString>;
30749
30783
  kind: z.ZodLiteral<"oauth">;
30750
30784
  tokens: z.ZodOptional<z.ZodObject<{
30751
30785
  accessToken: z.ZodString;
@@ -43721,6 +43755,7 @@ export declare const WSSessionInboundSchema: z.ZodObject<{
43721
43755
  }, z.core.$loose>>;
43722
43756
  }, z.core.$loose>>>;
43723
43757
  connectors: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
43758
+ builtin: z.ZodOptional<z.ZodString>;
43724
43759
  id: z.ZodString;
43725
43760
  label: z.ZodOptional<z.ZodString>;
43726
43761
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -43743,6 +43778,7 @@ export declare const WSSessionInboundSchema: z.ZodObject<{
43743
43778
  enabled: z.ZodOptional<z.ZodBoolean>;
43744
43779
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
43745
43780
  auth: z.ZodOptional<z.ZodObject<{
43781
+ resourceUrl: z.ZodOptional<z.ZodString>;
43746
43782
  kind: z.ZodLiteral<"oauth">;
43747
43783
  tokens: z.ZodOptional<z.ZodObject<{
43748
43784
  accessToken: z.ZodString;
@@ -43812,6 +43848,10 @@ export declare const WSSessionInboundSchema: z.ZodObject<{
43812
43848
  requestId: z.ZodString;
43813
43849
  connectorId: z.ZodString;
43814
43850
  scope: z.ZodOptional<z.ZodString>;
43851
+ oauthClient: z.ZodOptional<z.ZodObject<{
43852
+ clientId: z.ZodString;
43853
+ clientSecret: z.ZodString;
43854
+ }, z.core.$strip>>;
43815
43855
  }, z.core.$strip>, z.ZodObject<{
43816
43856
  type: z.ZodLiteral<"connectors.oauth.disconnect.request">;
43817
43857
  requestId: z.ZodString;
@@ -53589,6 +53629,7 @@ export declare const WSSessionOutboundSchema: z.ZodObject<{
53589
53629
  }, z.core.$loose>>;
53590
53630
  }, z.core.$loose>>;
53591
53631
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
53632
+ builtin: z.ZodOptional<z.ZodString>;
53592
53633
  id: z.ZodString;
53593
53634
  label: z.ZodOptional<z.ZodString>;
53594
53635
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -53611,6 +53652,7 @@ export declare const WSSessionOutboundSchema: z.ZodObject<{
53611
53652
  enabled: z.ZodOptional<z.ZodBoolean>;
53612
53653
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
53613
53654
  auth: z.ZodOptional<z.ZodObject<{
53655
+ resourceUrl: z.ZodOptional<z.ZodString>;
53614
53656
  kind: z.ZodLiteral<"oauth">;
53615
53657
  tokens: z.ZodOptional<z.ZodObject<{
53616
53658
  accessToken: z.ZodString;
@@ -53966,6 +54008,7 @@ export declare const WSSessionOutboundSchema: z.ZodObject<{
53966
54008
  }, z.core.$loose>>;
53967
54009
  }, z.core.$loose>>;
53968
54010
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
54011
+ builtin: z.ZodOptional<z.ZodString>;
53969
54012
  id: z.ZodString;
53970
54013
  label: z.ZodOptional<z.ZodString>;
53971
54014
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -53988,6 +54031,7 @@ export declare const WSSessionOutboundSchema: z.ZodObject<{
53988
54031
  enabled: z.ZodOptional<z.ZodBoolean>;
53989
54032
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
53990
54033
  auth: z.ZodOptional<z.ZodObject<{
54034
+ resourceUrl: z.ZodOptional<z.ZodString>;
53991
54035
  kind: z.ZodLiteral<"oauth">;
53992
54036
  tokens: z.ZodOptional<z.ZodObject<{
53993
54037
  accessToken: z.ZodString;
@@ -66595,6 +66639,7 @@ export declare const WSInboundMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
66595
66639
  }, z.core.$loose>>;
66596
66640
  }, z.core.$loose>>>;
66597
66641
  connectors: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodObject<{
66642
+ builtin: z.ZodOptional<z.ZodString>;
66598
66643
  id: z.ZodString;
66599
66644
  label: z.ZodOptional<z.ZodString>;
66600
66645
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -66617,6 +66662,7 @@ export declare const WSInboundMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
66617
66662
  enabled: z.ZodOptional<z.ZodBoolean>;
66618
66663
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
66619
66664
  auth: z.ZodOptional<z.ZodObject<{
66665
+ resourceUrl: z.ZodOptional<z.ZodString>;
66620
66666
  kind: z.ZodLiteral<"oauth">;
66621
66667
  tokens: z.ZodOptional<z.ZodObject<{
66622
66668
  accessToken: z.ZodString;
@@ -66686,6 +66732,10 @@ export declare const WSInboundMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
66686
66732
  requestId: z.ZodString;
66687
66733
  connectorId: z.ZodString;
66688
66734
  scope: z.ZodOptional<z.ZodString>;
66735
+ oauthClient: z.ZodOptional<z.ZodObject<{
66736
+ clientId: z.ZodString;
66737
+ clientSecret: z.ZodString;
66738
+ }, z.core.$strip>>;
66689
66739
  }, z.core.$strip>, z.ZodObject<{
66690
66740
  type: z.ZodLiteral<"connectors.oauth.disconnect.request">;
66691
66741
  requestId: z.ZodString;
@@ -76465,6 +76515,7 @@ export declare const WSOutboundMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObje
76465
76515
  }, z.core.$loose>>;
76466
76516
  }, z.core.$loose>>;
76467
76517
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
76518
+ builtin: z.ZodOptional<z.ZodString>;
76468
76519
  id: z.ZodString;
76469
76520
  label: z.ZodOptional<z.ZodString>;
76470
76521
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -76487,6 +76538,7 @@ export declare const WSOutboundMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObje
76487
76538
  enabled: z.ZodOptional<z.ZodBoolean>;
76488
76539
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
76489
76540
  auth: z.ZodOptional<z.ZodObject<{
76541
+ resourceUrl: z.ZodOptional<z.ZodString>;
76490
76542
  kind: z.ZodLiteral<"oauth">;
76491
76543
  tokens: z.ZodOptional<z.ZodObject<{
76492
76544
  accessToken: z.ZodString;
@@ -76842,6 +76894,7 @@ export declare const WSOutboundMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObje
76842
76894
  }, z.core.$loose>>;
76843
76895
  }, z.core.$loose>>;
76844
76896
  connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
76897
+ builtin: z.ZodOptional<z.ZodString>;
76845
76898
  id: z.ZodString;
76846
76899
  label: z.ZodOptional<z.ZodString>;
76847
76900
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -76864,6 +76917,7 @@ export declare const WSOutboundMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObje
76864
76917
  enabled: z.ZodOptional<z.ZodBoolean>;
76865
76918
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
76866
76919
  auth: z.ZodOptional<z.ZodObject<{
76920
+ resourceUrl: z.ZodOptional<z.ZodString>;
76867
76921
  kind: z.ZodLiteral<"oauth">;
76868
76922
  tokens: z.ZodOptional<z.ZodObject<{
76869
76923
  accessToken: z.ZodString;
package/dist/messages.js CHANGED
@@ -1724,6 +1724,15 @@ export const ConnectorsOauthAuthorizeRequestSchema = z.object({
1724
1724
  connectorId: z.string(),
1725
1725
  /** Scopes to request, when the catalog entry names them. */
1726
1726
  scope: z.string().optional(),
1727
+ /** COMPAT(connectorOwnClient): accepted since v0.9.9; remove after 2027-03-12.
1728
+ * Parse the former caller-supplied registration shape, but the broker rejects it.
1729
+ * Native Google registration is publisher-owned and never supplied by the app. */
1730
+ oauthClient: z
1731
+ .object({
1732
+ clientId: z.string().min(1).max(1024),
1733
+ clientSecret: z.string().min(1).max(4096),
1734
+ })
1735
+ .optional(),
1727
1736
  });
1728
1737
  export const ConnectorsOauthAuthorizeResponseSchema = z.object({
1729
1738
  type: z.literal("connectors.oauth.authorize.response"),
@@ -4513,6 +4522,8 @@ export const ServerInfoStatusPayloadSchema = z
4513
4522
  // daemons have no broker and no way to hold a token, so the client hides
4514
4523
  // Connect / Disconnect and offers only the paste-a-token connectors.
4515
4524
  connectorOauth: z.boolean().optional(),
4525
+ connectorGoogleOauth: z.boolean().optional(),
4526
+ connectorNativeGoogle: z.boolean().optional(),
4516
4527
  // COMPAT(communications): added in v0.8.11, drop the gate when daemon floor >= v0.8.11.
4517
4528
  // The daemon owns the provider-neutral communications overview. An old
4518
4529
  // host must not receive a communications RPC from a newer frontend.
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import type { AgentProvider } from "./agent-types.js";
3
+ export { GOOGLE_CONNECTOR_SERVICES, GOOGLE_CONNECTOR_SOURCE, CONNECTOR_OAUTH_REDIRECT_URI, googleConnectorForUrl, googleConnectorForConfig, type GoogleConnectorService, } from "./google-connectors.js";
3
4
  export declare const ProviderCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4
5
  mode: z.ZodLiteral<"default">;
5
6
  }, z.core.$strip>, z.ZodObject<{
@@ -172,6 +173,7 @@ export declare const ConnectorOAuthClientSchema: z.ZodObject<{
172
173
  * is only for the interactive OAuth path.
173
174
  */
174
175
  export declare const ConnectorAuthStateSchema: z.ZodObject<{
176
+ resourceUrl: z.ZodOptional<z.ZodString>;
175
177
  kind: z.ZodLiteral<"oauth">;
176
178
  tokens: z.ZodOptional<z.ZodObject<{
177
179
  accessToken: z.ZodString;
@@ -207,6 +209,7 @@ export declare const ConnectorWorkspaceStateSchema: z.ZodObject<{
207
209
  * old configs and old daemons behaving exactly as before.
208
210
  */
209
211
  export declare const ConnectorConfigSchema: z.ZodObject<{
212
+ builtin: z.ZodOptional<z.ZodString>;
210
213
  id: z.ZodString;
211
214
  label: z.ZodOptional<z.ZodString>;
212
215
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -229,6 +232,7 @@ export declare const ConnectorConfigSchema: z.ZodObject<{
229
232
  enabled: z.ZodOptional<z.ZodBoolean>;
230
233
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
231
234
  auth: z.ZodOptional<z.ZodObject<{
235
+ resourceUrl: z.ZodOptional<z.ZodString>;
232
236
  kind: z.ZodLiteral<"oauth">;
233
237
  tokens: z.ZodOptional<z.ZodObject<{
234
238
  accessToken: z.ZodString;
@@ -256,6 +260,7 @@ export declare const ConnectorConfigSchema: z.ZodObject<{
256
260
  */
257
261
  export declare const ConnectorsConfigSchema: z.ZodObject<{
258
262
  connectors: z.ZodOptional<z.ZodArray<z.ZodObject<{
263
+ builtin: z.ZodOptional<z.ZodString>;
259
264
  id: z.ZodString;
260
265
  label: z.ZodOptional<z.ZodString>;
261
266
  server: z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -278,6 +283,7 @@ export declare const ConnectorsConfigSchema: z.ZodObject<{
278
283
  enabled: z.ZodOptional<z.ZodBoolean>;
279
284
  disabledTools: z.ZodOptional<z.ZodArray<z.ZodString>>;
280
285
  auth: z.ZodOptional<z.ZodObject<{
286
+ resourceUrl: z.ZodOptional<z.ZodString>;
281
287
  kind: z.ZodLiteral<"oauth">;
282
288
  tokens: z.ZodOptional<z.ZodObject<{
283
289
  accessToken: z.ZodString;
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { AgentProviderSchema, OTTO_BRAIN_PROVIDER_ID } from "./provider-manifest.js";
3
+ export { GOOGLE_CONNECTOR_SERVICES, GOOGLE_CONNECTOR_SOURCE, CONNECTOR_OAUTH_REDIRECT_URI, googleConnectorForUrl, googleConnectorForConfig, } from "./google-connectors.js";
3
4
  const ProviderCommandDefaultSchema = z.object({
4
5
  mode: z.literal("default"),
5
6
  });
@@ -282,6 +283,8 @@ export const ConnectorOAuthClientSchema = z.object({
282
283
  * is only for the interactive OAuth path.
283
284
  */
284
285
  export const ConnectorAuthStateSchema = z.object({
286
+ /** Binds new authorizations to the exact resource that owns them. */
287
+ resourceUrl: z.string().optional(),
285
288
  kind: z.literal("oauth"),
286
289
  tokens: ConnectorOAuthTokensSchema.optional(),
287
290
  client: ConnectorOAuthClientSchema.optional(),
@@ -310,6 +313,9 @@ export const ConnectorWorkspaceStateSchema = z.object({
310
313
  * old configs and old daemons behaving exactly as before.
311
314
  */
312
315
  export const ConnectorConfigSchema = z.object({
316
+ /** COMPAT(connectorBuiltin): added in v0.9.9, remove gate after 2027-03-12.
317
+ * Native implementation identity; transport union remains backward compatible. */
318
+ builtin: z.string().optional(),
313
319
  /** Stable key; doubles as the MCP server name used by the tool namespacer. */
314
320
  id: z.string().min(1),
315
321
  /** Human-facing name shown in the Connectors UI. Falls back to id when absent. */
@@ -6494,6 +6494,7 @@ export declare const WSOutboundMessageSchema: {
6494
6494
  }, import("zod/v4/core").$loose>>;
6495
6495
  }, import("zod/v4/core").$loose>>;
6496
6496
  connectors: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
6497
+ builtin: import("zod").ZodOptional<import("zod").ZodString>;
6497
6498
  id: import("zod").ZodString;
6498
6499
  label: import("zod").ZodOptional<import("zod").ZodString>;
6499
6500
  server: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
@@ -6516,6 +6517,7 @@ export declare const WSOutboundMessageSchema: {
6516
6517
  enabled: import("zod").ZodOptional<import("zod").ZodBoolean>;
6517
6518
  disabledTools: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
6518
6519
  auth: import("zod").ZodOptional<import("zod").ZodObject<{
6520
+ resourceUrl: import("zod").ZodOptional<import("zod").ZodString>;
6519
6521
  kind: import("zod").ZodLiteral<"oauth">;
6520
6522
  tokens: import("zod").ZodOptional<import("zod").ZodObject<{
6521
6523
  accessToken: import("zod").ZodString;
@@ -6871,6 +6873,7 @@ export declare const WSOutboundMessageSchema: {
6871
6873
  }, import("zod/v4/core").$loose>>;
6872
6874
  }, import("zod/v4/core").$loose>>;
6873
6875
  connectors: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
6876
+ builtin: import("zod").ZodOptional<import("zod").ZodString>;
6874
6877
  id: import("zod").ZodString;
6875
6878
  label: import("zod").ZodOptional<import("zod").ZodString>;
6876
6879
  server: import("zod").ZodDiscriminatedUnion<[import("zod").ZodObject<{
@@ -6893,6 +6896,7 @@ export declare const WSOutboundMessageSchema: {
6893
6896
  enabled: import("zod").ZodOptional<import("zod").ZodBoolean>;
6894
6897
  disabledTools: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
6895
6898
  auth: import("zod").ZodOptional<import("zod").ZodObject<{
6899
+ resourceUrl: import("zod").ZodOptional<import("zod").ZodString>;
6896
6900
  kind: import("zod").ZodLiteral<"oauth">;
6897
6901
  tokens: import("zod").ZodOptional<import("zod").ZodObject<{
6898
6902
  accessToken: import("zod").ZodString;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@otto-code/protocol",
3
- "version": "0.9.8",
3
+ "version": "0.9.9",
4
4
  "description": "Otto shared protocol schemas and wire types",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "files": [