@arbium/enterprise-agent-connect 0.1.2-dev.d2aa5ca → 0.2.1-dev.7b4e802

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 (163) hide show
  1. package/README.md +19 -7
  2. package/dist/connectors/adestra/connector.json +336 -0
  3. package/dist/connectors/adobe-admin-console/connector.json +212 -0
  4. package/dist/connectors/argo-cd/connector.json +210 -0
  5. package/dist/connectors/automox/connector.json +376 -0
  6. package/dist/connectors/churnzero/connector.json +238 -0
  7. package/dist/connectors/confluence/connector.json +168 -0
  8. package/dist/connectors/cvent/connector.json +287 -0
  9. package/dist/connectors/datadog/connector.json +188 -0
  10. package/dist/connectors/drata/connector.json +447 -0
  11. package/dist/connectors/druva/connector.json +258 -0
  12. package/dist/connectors/dynamics-365/connector.json +16 -1
  13. package/dist/connectors/dynamics-365/index.d.ts +1 -4
  14. package/dist/connectors/dynamics-365/index.js.map +1 -1
  15. package/dist/connectors/entra/index.d.ts +1 -1
  16. package/dist/connectors/forsta-decipher/connector.json +164 -0
  17. package/dist/connectors/gitlab/connector.json +263 -0
  18. package/dist/connectors/gong/vendor.d.ts +1 -1
  19. package/dist/connectors/gong/vendor.js +24 -32
  20. package/dist/connectors/gong/vendor.js.map +1 -1
  21. package/dist/connectors/grafana/connector.json +162 -0
  22. package/dist/connectors/http/index.d.ts +7 -7
  23. package/dist/connectors/http/index.js +66 -9
  24. package/dist/connectors/http/index.js.map +1 -1
  25. package/dist/connectors/http/openapi.d.ts +62 -0
  26. package/dist/connectors/http/openapi.js +342 -0
  27. package/dist/connectors/http/openapi.js.map +1 -0
  28. package/dist/connectors/intercom/connector.json +249 -0
  29. package/dist/connectors/intune/index.d.ts +1 -1
  30. package/dist/connectors/jamf/vendor.js +5 -1
  31. package/dist/connectors/jamf/vendor.js.map +1 -1
  32. package/dist/connectors/jira/connector.json +3 -3
  33. package/dist/connectors/jira/vendor.d.ts +1 -1
  34. package/dist/connectors/jira/vendor.js +8 -2
  35. package/dist/connectors/jira/vendor.js.map +1 -1
  36. package/dist/connectors/lusha/connector.json +59 -0
  37. package/dist/connectors/lusha/index.d.ts +8 -0
  38. package/dist/connectors/lusha/index.js +7 -0
  39. package/dist/connectors/lusha/index.js.map +1 -0
  40. package/dist/connectors/lusha/tools.d.ts +2 -0
  41. package/dist/connectors/lusha/tools.js +113 -0
  42. package/dist/connectors/lusha/tools.js.map +1 -0
  43. package/dist/connectors/lusha/vendor.d.ts +4 -0
  44. package/dist/connectors/lusha/vendor.js +72 -0
  45. package/dist/connectors/lusha/vendor.js.map +1 -0
  46. package/dist/connectors/microsoft/client.d.ts +11 -3
  47. package/dist/connectors/microsoft/client.js +62 -8
  48. package/dist/connectors/microsoft/client.js.map +1 -1
  49. package/dist/connectors/netsuite/connector.json +4 -2
  50. package/dist/connectors/netsuite/vendor.d.ts +1 -1
  51. package/dist/connectors/netsuite/vendor.js +5 -6
  52. package/dist/connectors/netsuite/vendor.js.map +1 -1
  53. package/dist/connectors/odata/index.d.ts +1 -4
  54. package/dist/connectors/odata/index.js +12 -5
  55. package/dist/connectors/odata/index.js.map +1 -1
  56. package/dist/connectors/okta/connector.json +3 -2
  57. package/dist/connectors/okta/vendor.d.ts +1 -1
  58. package/dist/connectors/okta/vendor.js +7 -6
  59. package/dist/connectors/okta/vendor.js.map +1 -1
  60. package/dist/connectors/outlook-calendar/index.d.ts +1 -1
  61. package/dist/connectors/outlook-mail/index.d.ts +1 -1
  62. package/dist/connectors/pagerduty/connector.json +247 -0
  63. package/dist/connectors/qualys/connector.json +271 -0
  64. package/dist/connectors/safebase/connector.json +221 -0
  65. package/dist/connectors/salesforce/vendor.d.ts +1 -1
  66. package/dist/connectors/salesforce/vendor.js +9 -3
  67. package/dist/connectors/salesforce/vendor.js.map +1 -1
  68. package/dist/connectors/sap-s4hana/connector.json +1 -0
  69. package/dist/connectors/servicenow/vendor.d.ts +0 -1
  70. package/dist/connectors/servicenow/vendor.js +7 -10
  71. package/dist/connectors/servicenow/vendor.js.map +1 -1
  72. package/dist/connectors/sharepoint-files/connector.json +34 -3
  73. package/dist/connectors/sharepoint-files/documents.d.ts +7 -0
  74. package/dist/connectors/sharepoint-files/documents.js +212 -0
  75. package/dist/connectors/sharepoint-files/documents.js.map +1 -0
  76. package/dist/connectors/sharepoint-files/docx-worker.d.ts +7 -0
  77. package/dist/connectors/sharepoint-files/docx-worker.js +41 -0
  78. package/dist/connectors/sharepoint-files/docx-worker.js.map +1 -0
  79. package/dist/connectors/sharepoint-files/docx.d.ts +96 -0
  80. package/dist/connectors/sharepoint-files/docx.js +823 -0
  81. package/dist/connectors/sharepoint-files/docx.js.map +1 -0
  82. package/dist/connectors/sharepoint-files/index.d.ts +1 -4
  83. package/dist/connectors/sharepoint-files/index.js +2 -1
  84. package/dist/connectors/sharepoint-files/index.js.map +1 -1
  85. package/dist/connectors/sharepoint-files/ooxml.d.ts +19 -0
  86. package/dist/connectors/sharepoint-files/ooxml.js +179 -0
  87. package/dist/connectors/sharepoint-files/ooxml.js.map +1 -0
  88. package/dist/connectors/sharepoint-files/paging.d.ts +15 -0
  89. package/dist/connectors/sharepoint-files/paging.js +87 -0
  90. package/dist/connectors/sharepoint-files/paging.js.map +1 -0
  91. package/dist/connectors/sharepoint-files/parse-host.mjs +78 -0
  92. package/dist/connectors/sharepoint-files/pdf-worker.mjs +108 -0
  93. package/dist/connectors/sharepoint-files/pdf.d.ts +16 -0
  94. package/dist/connectors/sharepoint-files/pdf.js +19 -0
  95. package/dist/connectors/sharepoint-files/pdf.js.map +1 -0
  96. package/dist/connectors/sharepoint-files/sandbox.d.ts +19 -0
  97. package/dist/connectors/sharepoint-files/sandbox.js +176 -0
  98. package/dist/connectors/sharepoint-files/sandbox.js.map +1 -0
  99. package/dist/connectors/sharepoint-files/tools.d.ts +6 -0
  100. package/dist/connectors/sharepoint-files/tools.js +79 -4
  101. package/dist/connectors/sharepoint-files/tools.js.map +1 -1
  102. package/dist/connectors/slack/vendor.d.ts +1 -1
  103. package/dist/connectors/slack/vendor.js +32 -38
  104. package/dist/connectors/slack/vendor.js.map +1 -1
  105. package/dist/connectors/soap/index.d.ts +1 -4
  106. package/dist/connectors/soap/index.js +4 -3
  107. package/dist/connectors/soap/index.js.map +1 -1
  108. package/dist/connectors/sonarqube/connector.json +165 -0
  109. package/dist/connectors/sprout-social/connector.json +158 -0
  110. package/dist/connectors/sql/index.d.ts +1 -4
  111. package/dist/connectors/sql/index.js +2 -0
  112. package/dist/connectors/sql/index.js.map +1 -1
  113. package/dist/connectors/synthesia/connector.json +113 -0
  114. package/dist/connectors/teams/index.d.ts +1 -1
  115. package/dist/connectors/teams/tools.d.ts +6 -1
  116. package/dist/connectors/teams/tools.js +3 -2
  117. package/dist/connectors/teams/tools.js.map +1 -1
  118. package/dist/connectors/wordpress/connector.json +203 -0
  119. package/dist/connectors/workday/connector.json +6 -4
  120. package/dist/connectors/workday/vendor.d.ts +1 -1
  121. package/dist/connectors/workday/vendor.js +8 -4
  122. package/dist/connectors/workday/vendor.js.map +1 -1
  123. package/dist/connectors/zephyr/connector.json +192 -0
  124. package/dist/packages/connector-kit/src/common.d.ts +4 -5
  125. package/dist/packages/connector-kit/src/common.js +4 -1
  126. package/dist/packages/connector-kit/src/common.js.map +1 -1
  127. package/dist/packages/connector-kit/src/connector.d.ts +82 -34
  128. package/dist/packages/connector-kit/src/connector.js +163 -21
  129. package/dist/packages/connector-kit/src/connector.js.map +1 -1
  130. package/dist/packages/connector-kit/src/fetch.d.ts +6 -0
  131. package/dist/packages/connector-kit/src/fetch.js +44 -0
  132. package/dist/packages/connector-kit/src/fetch.js.map +1 -0
  133. package/dist/packages/connector-kit/src/index.d.ts +3 -3
  134. package/dist/packages/connector-kit/src/index.js +1 -0
  135. package/dist/packages/connector-kit/src/index.js.map +1 -1
  136. package/dist/packages/connector-kit/src/oauth.d.ts +3 -1
  137. package/dist/packages/connector-kit/src/oauth.js +16 -6
  138. package/dist/packages/connector-kit/src/oauth.js.map +1 -1
  139. package/dist/packages/connector-kit/src/types.d.ts +4 -1
  140. package/dist/packages/connector-kit/src/types.js.map +1 -1
  141. package/dist/packages/server/migrations/0008_internal_apps.sql +16 -0
  142. package/dist/packages/server/migrations/rollback/to-legacy.sql +2 -0
  143. package/dist/packages/server/src/api.d.ts +2486 -257
  144. package/dist/packages/server/src/api.js +84 -1
  145. package/dist/packages/server/src/api.js.map +1 -1
  146. package/dist/packages/server/src/app.js +26 -1
  147. package/dist/packages/server/src/app.js.map +1 -1
  148. package/dist/packages/server/src/builtin.d.ts +7 -3
  149. package/dist/packages/server/src/builtin.js +32 -0
  150. package/dist/packages/server/src/builtin.js.map +1 -1
  151. package/dist/packages/server/src/events/runtime.js +17 -10
  152. package/dist/packages/server/src/events/runtime.js.map +1 -1
  153. package/dist/packages/server/src/events/store.d.ts +2 -2
  154. package/dist/packages/server/src/index.d.ts +3 -3
  155. package/dist/packages/server/src/index.js +32 -22
  156. package/dist/packages/server/src/index.js.map +1 -1
  157. package/dist/packages/server/src/service.d.ts +1134 -14
  158. package/dist/packages/server/src/service.js +266 -21
  159. package/dist/packages/server/src/service.js.map +1 -1
  160. package/dist/packages/server/src/store.d.ts +43 -4
  161. package/dist/packages/server/src/store.js +79 -0
  162. package/dist/packages/server/src/store.js.map +1 -1
  163. package/package.json +4 -1
@@ -1,5 +1,8 @@
1
+ import { lookup } from "node:dns/promises";
2
+ import { isIP } from "node:net";
1
3
  import { z } from "zod";
2
4
  import { audited, Denied, json, listLimit, VendorFailed, } from "../../packages/connector-kit/src/common.js";
5
+ import { checkHost, fillAddress, } from "../../packages/connector-kit/src/connector.js";
3
6
  import { clientCredentials, vendorError } from "../../packages/connector-kit/src/oauth.js";
4
7
  import { ConnectError, } from "../../packages/connector-kit/src/types.js";
5
8
  // The generic module behind every connector.json with an `http` block: an app described as
@@ -8,6 +11,20 @@ export const MAX_RESPONSE_BYTES = 1024 * 1024;
8
11
  export const MAX_BODY_BYTES = 256 * 1024;
9
12
  export const MAX_TARGET_BYTES = 8 * 1024;
10
13
  const TIMEOUT_MS = 30_000;
14
+ // Cloud metadata services (169.254.169.254, fd00:ec2::254) hand out the server's own credentials,
15
+ // and no app is served from a link-local address, so an address that resolves there is refused.
16
+ // ponytail: checked at lookup, so a DNS answer that changes before the connect is not caught.
17
+ // IPv4-mapped IPv6 comes back from URL as hex: ::ffff:a9fe:a9fe is 169.254.169.254.
18
+ const LINK_LOCAL = /^(169\.254\.|::ffff:(169\.254\.|a9fe:)|fe[89ab][0-9a-f]:|fd00:ec2::254$)/i;
19
+ async function refuseLinkLocal(hostname) {
20
+ const host = hostname.replace(/^\[|\]$/g, "");
21
+ // A name that does not resolve is left to the call itself to fail on.
22
+ const addresses = isIP(host)
23
+ ? [host]
24
+ : await lookup(host, { all: true }).then((all) => all.map((a) => a.address), () => []);
25
+ if (addresses.some((a) => LINK_LOCAL.test(a)))
26
+ throw new ConnectError(`${hostname} is a link-local address, which no app is reached at`);
27
+ }
11
28
  // fetch that reaches only `allowed` origins, follows no redirect, gives up after TIMEOUT_MS and
12
29
  // reads at most MAX_RESPONSE_BYTES of JSON or text (or what `types` matches). Its refusals are
13
30
  // ConnectError.
@@ -18,6 +35,7 @@ passed = "JSON or text") {
18
35
  const url = new URL(input instanceof Request ? input.url : input);
19
36
  if (!allowed.includes(url.origin))
20
37
  throw new ConnectError(`${url.origin} is not this app's address`);
38
+ await refuseLinkLocal(url.hostname);
21
39
  const res = await fetchImpl(url, {
22
40
  ...init,
23
41
  redirect: "manual",
@@ -67,25 +85,50 @@ export function authHeaders(auth, c) {
67
85
  };
68
86
  return {};
69
87
  }
70
- // The connect form's values: plain fields into config, secret ones into secret; all required.
88
+ // The connect form's values: plain fields into config, secret ones into secret; required
89
+ // unless `optional`.
71
90
  export function formValues(connector, fields) {
72
91
  const config = {};
73
92
  const secret = {};
74
93
  for (const f of connector.fields) {
75
94
  const value = fields[f.id]?.trim() ?? "";
95
+ if (!value && f.optional)
96
+ continue;
76
97
  if (!value)
77
98
  throw new ConnectError(`Enter ${f.label}`);
78
99
  (f.secret ? secret : config)[f.id] = value;
79
100
  }
80
101
  return { config, secret };
81
102
  }
103
+ // An app's address filled in for one connection (its {field}s), and the guarded fetch reaching
104
+ // only that origin (and the token service's), kept per origin so a token cache survives calls.
105
+ export function connectionAddress(connector, address, allowedHosts, tokenUrl, fetchImpl, types, passed) {
106
+ const label = (id) => connector.fields.find((f) => f.id === id)?.label ?? id;
107
+ const fetches = new Map();
108
+ return (c) => {
109
+ const url = new URL(fillAddress(address, c.config, label));
110
+ checkHost(url, allowedHosts);
111
+ let safe = fetches.get(url.origin);
112
+ if (!safe) {
113
+ const origins = [url.origin, ...(tokenUrl ? [new URL(tokenUrl).origin] : [])];
114
+ safe = guardedFetch(origins, fetchImpl, types, passed);
115
+ fetches.set(url.origin, safe);
116
+ }
117
+ return { url, safe };
118
+ };
119
+ }
82
120
  export function httpVendor(connector, fetchImpl = fetch) {
83
121
  const http = connector.http;
84
- const base = new URL(http.baseUrl);
85
- const prefix = base.pathname.replace(/\/+$/, "");
86
122
  const auth = http.auth;
87
- const safe = guardedFetch([base.origin, ...(auth.type === "oauth2" ? [new URL(auth.tokenUrl).origin] : [])], fetchImpl);
88
- const oauth = auth.type === "oauth2" ? clientCredentials(connector.name, safe) : null;
123
+ const addressOf = connectionAddress(connector, http.baseUrl, http.allowedHosts, auth.type === "oauth2" ? auth.tokenUrl : null, fetchImpl);
124
+ const clients = new Map();
125
+ const oauthFor = (origin, safe) => {
126
+ if (auth.type !== "oauth2")
127
+ return null;
128
+ if (!clients.has(origin))
129
+ clients.set(origin, clientCredentials(connector.name, safe));
130
+ return clients.get(origin);
131
+ };
89
132
  // Lower-case, so a configured Accept replaces the default rather than joining it.
90
133
  const fixed = Object.fromEntries(Object.entries(http.headers).map(([k, v]) => [k.toLowerCase(), v]));
91
134
  const oauthCreds = (c) => auth.type === "oauth2"
@@ -94,9 +137,22 @@ export function httpVendor(connector, fetchImpl = fetch) {
94
137
  clientId: c.config[auth.clientId],
95
138
  clientSecret: c.secret[auth.clientSecret],
96
139
  scope: auth.scope,
140
+ clientAuth: auth.clientAuth,
141
+ audience: auth.audience,
97
142
  }
98
143
  : null;
144
+ const fieldHeaders = (c) => Object.fromEntries(Object.entries(http.fieldHeaders).flatMap(([name, id]) => {
145
+ const value = c.secret[id] ?? c.config[id];
146
+ if (!value)
147
+ return [];
148
+ if (!/^[\x20-\x7E]*$/.test(value))
149
+ throw new ConnectError(`${name} can only hold plain letters, digits and symbols`);
150
+ return [[name.toLowerCase(), value]];
151
+ }));
99
152
  const call = async (c, request) => {
153
+ const { url: base, safe } = addressOf(c);
154
+ const prefix = base.pathname.replace(/\/+$/, "");
155
+ const oauth = oauthFor(base.origin, safe);
100
156
  // The path is the tool's, already encoded; it must stay under baseUrl's path.
101
157
  const url = new URL(`${base.origin}${prefix}${request.path}`);
102
158
  if (url.origin !== base.origin || !`${url.pathname}/`.startsWith(`${prefix}/`))
@@ -108,13 +164,14 @@ export function httpVendor(connector, fetchImpl = fetch) {
108
164
  path: `${url.pathname}${url.search}`,
109
165
  body: request.body,
110
166
  };
167
+ const headers = { ...fixed, ...fieldHeaders(c) };
111
168
  if (oauth)
112
- return oauth.call(oauthCreds(c), base.origin, req, fixed);
169
+ return oauth.call(oauthCreds(c), base.origin, req, headers);
113
170
  const res = await safe(`${base.origin}${req.path}`, {
114
171
  method: req.method,
115
172
  headers: {
116
173
  accept: "application/json",
117
- ...fixed,
174
+ ...headers,
118
175
  ...authHeaders(auth, c),
119
176
  ...(req.body === undefined ? {} : { "content-type": "application/json" }),
120
177
  },
@@ -130,9 +187,9 @@ export function httpVendor(connector, fetchImpl = fetch) {
130
187
  return {
131
188
  async connect(fields) {
132
189
  const { config, secret } = formValues(connector, fields);
190
+ const { url: base, safe } = addressOf({ config });
133
191
  const conn = { config: { host: base.host, ...config }, secret };
134
- if (oauth)
135
- await oauth.signIn(oauthCreds(conn));
192
+ await oauthFor(base.origin, safe)?.signIn(oauthCreds(conn));
136
193
  return { ...conn, accountLabel: conn.config[connector.accountKey] ?? base.host };
137
194
  },
138
195
  call,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,OAAO,EACP,MAAM,EACN,IAAI,EACJ,SAAS,EACT,YAAY,GAEb,MAAM,4CAA4C,CAAC;AAUpD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,EACL,YAAY,GAMb,MAAM,2CAA2C,CAAC;AAGnD,2FAA2F;AAC3F,8FAA8F;AAE9F,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAAC;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC;AACzC,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,gGAAgG;AAChG,+FAA+F;AAC/F,gBAAgB;AAChB,MAAM,UAAU,YAAY,CAC1B,OAAiB,EACjB,YAAmB,KAAK,EACxB,KAAK,GAAG,2CAA2C;AACnD,8CAA8C;AAC9C,MAAM,GAAG,cAAc;IAEvB,OAAO,CAAC,KAAK,EAAE,KAA6B,EAAE,IAAkB,EAAE,EAAE;QAClE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAC/B,MAAM,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,MAAM,4BAA4B,CAAC,CAAC;QACpE,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE;YAC/B,GAAG,IAAI;YACP,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;SACxC,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG;YACvC,MAAM,IAAI,YAAY,CACpB,qCAAqC,GAAG,CAAC,MAAM,0BAA0B,CAC1E,CAAC;QACJ,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/E,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,YAAY,CACpB,oBAAoB,IAAI,IAAI,wBAAwB,UAAU,MAAM,eAAe,CACpF,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,MAAM,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,MAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1E,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;YAC3B,IAAI,IAAI,GAAG,kBAAkB,EAAE,CAAC;gBAC9B,MAAM,MAAO,CAAC,MAAM,EAAE,CAAC;gBACvB,MAAM,IAAI,YAAY,CAAC,mCAAmC,kBAAkB,GAAG,IAAI,KAAK,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,0DAA0D;QAC1D,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjF,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAU,CAAC;AACd,CAAC;AAED,SAAS,KAAK,CAAC,GAAW;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,mCAAmC;AACnC,MAAM,UAAU,WAAW,CAAC,IAAc,EAAE,CAAmB;IAC7D,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QACxB,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACxF,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACvF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QACvB,OAAO;YACL,aAAa,EAAE,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;SAClH,CAAC;IACJ,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,UAAU,CAAC,SAAoB,EAAE,MAA8B;IAC7E,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,SAAoB,EAAE,YAAmB,KAAK;IACvE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAK,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,IAAI,GAAG,YAAY,CACvB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACjF,SAAS,CACV,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,kFAAkF;IAClF,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CACnE,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,CAAmB,EAAE,EAAE,CACzC,IAAI,CAAC,IAAI,KAAK,QAAQ;QACpB,CAAC,CAAC;YACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;YACjC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YACzC,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB;QACH,CAAC,CAAC,IAAK,CAAC;IAEZ,MAAM,IAAI,GAAmB,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE;QAChD,8EAA8E;QAC9E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,IAAI,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;YAC5E,MAAM,IAAI,YAAY,CAAC,oCAAoC,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACrF,MAAM,GAAG,GAAkB;YACzB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,IAAI,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE;YACpC,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC;QACF,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE;YAClD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE;gBACP,MAAM,EAAE,kBAAkB;gBAC1B,GAAG,KAAK;gBACR,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvB,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;aAC1E;YACD,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;SACpE,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;YAC7B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC;SACzC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACzD,MAAM,IAAI,GAAqB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC;YAClF,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAChD,OAAO,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACnF,CAAC;QACD,IAAI;KACL,CAAC;AACJ,CAAC;AAED,+FAA+F;AAC/F,WAAW;AACX,SAAS,QAAQ,CAAC,IAAa,EAAE,IAAc;IAC7C,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5F,OAAO,QAAQ,CAAE,IAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,IAAY,EAAE,MAAgB;IACxE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,CACL,KAAK,KAAK,IAAI;QACd,KAAK,CAAC,KAAK,CACT,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CACtF,CACF,CAAC;AACJ,CAAC;AAED,0FAA0F;AAC1F,SAAS,IAAI,CAAC,IAAa,EAAE,IAAc;IACzC,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACrE,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACjG,OAAO,IAAI,CAAE,IAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,IAAI,CAAC,IAAa,EAAE,MAAuC;IAClE,8DAA8D;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACjC,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,EAAE,CAC7B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,yDAAyD;AACzD,SAAS,UAAU,CAAC,IAAc,EAAE,GAAmB;IACrD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAO,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,IAAa,CAAC;IAClB,IAAI,MAAM,IAAI,MAAM;QAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;SAC/D,IAAI,QAAQ,IAAI,MAAM;QAAE,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;;QAE7E,KAAK,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YAClF,IAAI,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;gBACxE,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IACpF,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,CAAC;AAED,8FAA8F;AAC9F,kDAAkD;AAClD,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,MAA0C,EAC1C,IAA6B;IAE7B,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClE,IAAI,CAAC,aAAa;YAAE,SAAS;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,mEAAmE;QACnE,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM;YACvC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,oDAAoD,CAAC,CAAC;QAChF,KAAK,MAAM,CAAC,IAAI,MAAM;YACpB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC;AAEF,SAAS,SAAS,CAAC,CAAY;IAC7B,MAAM,GAAG,GAAG,CAAC,IAA0B,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,IAAI,GAAc,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAC1F,CAAC,CAAC,WAAW,CACd,CAAC;IACF,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5D,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO;YAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACtC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAC9B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;gBACF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;gBACjE,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,IAAI,EACT;oBACE,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE;oBACrC,WAAW,EAAE;wBACX,YAAY,EAAE,IAAI,CAAC,MAAM,KAAK,KAAK;wBACnC,eAAe,EAAE,WAAW;wBAC5B,aAAa,EAAE,IAAI;qBACpB;iBACF,EACD,CAAC,IAA6B,EAAE,EAAE,CAChC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBACzE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,IAAY,EAAE,EAAE;wBAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;wBACjC,4DAA4D;wBAC5D,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;4BACjD,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;wBACnD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBACnC,CAAC,CAAC,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;oBACpC,MAAM,IAAI,GAA4B,EAAE,CAAC;oBACzC,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;wBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;wBACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;wBAC5B,IAAI,KAAK,KAAK,SAAS;4BAAE,SAAS;wBAClC,IAAI,CAAC,CAAC,EAAE,KAAK,MAAM;4BAAE,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;6BACnC,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO;4BAAE,SAAS;6BAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;4BAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;6BAC1D,IAAI,CAAC,CAAC,IAAI;4BAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;4BAChD,KAAK,MAAM,CAAC,IAAI,KAAK;gCAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5D,CAAC;oBACD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;oBACtD,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,gBAAgB;wBAC9C,MAAM,IAAI,MAAM,CAAC,8BAA8B,gBAAgB,GAAG,IAAI,KAAK,CAAC,CAAC;oBAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;oBACxE,IAAI,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,cAAc;wBACrE,MAAM,IAAI,MAAM,CAAC,8BAA8B,cAAc,GAAG,IAAI,KAAK,CAAC,CAAC;oBAC7E,IAAI,GAAG,CAAC;oBACR,IAAI,CAAC;wBACH,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;4BACnB,MAAM,EAAE,IAAI,CAAC,MAAM;4BACnB,IAAI,EAAE,MAAM;4BACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC7B,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,IAAI,KAAK,YAAY,YAAY;4BAAE,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC9E,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACjB,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;wBAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACrC,MAAM,IAAI,YAAY,CACpB,GAAG,CAAC,MAAM,EACV,oBAAoB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/D,CAAC;oBACJ,CAAC;oBACD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;wBAC9C,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC;4BACpD,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,iCAAiC,CAAC,CAAC;oBAC/E,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;wBAC9B,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;4BACjC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE;4BACjD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACrB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;wBAC9B,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,sCAAsC,CAAC,CAAC;oBAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;oBAClE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACjF,CAAC,CAAC,CACL,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,yFAAyF;AACzF,eAAe;IACb,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC;QAC7B,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,IAAK,CAAC;KACpC,CAAC;CACuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../connectors/http/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ type Json = Record<string, unknown>;
2
+ export type DraftOptions = {
3
+ id: string;
4
+ operations?: string[];
5
+ tags?: string[];
6
+ source?: string;
7
+ };
8
+ export declare function draftConnector(spec: Json, options: DraftOptions): {
9
+ connector: {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ logo: string;
14
+ identity: string;
15
+ accountKey: string;
16
+ connectionKind: string;
17
+ setup: {
18
+ title: string;
19
+ body: string;
20
+ }[];
21
+ afterConnect: never[];
22
+ fields: Json[];
23
+ capabilities: {
24
+ scopes: never[];
25
+ permissions: never[];
26
+ tools: string[];
27
+ destructive?: boolean | undefined;
28
+ id: string;
29
+ label: string;
30
+ description: string;
31
+ }[];
32
+ limits: never[];
33
+ verify: {
34
+ method: string;
35
+ path: string;
36
+ label: string;
37
+ show: string;
38
+ };
39
+ revoke: string;
40
+ http: {
41
+ auth: Json;
42
+ tools: {
43
+ result?: {
44
+ fields: string[];
45
+ items?: undefined;
46
+ } | {
47
+ items: string;
48
+ fields: string[];
49
+ } | undefined;
50
+ name: string;
51
+ description: string;
52
+ method: string;
53
+ path: string;
54
+ params: Record<string, Json>;
55
+ }[];
56
+ allowInsecureHttp?: boolean | undefined;
57
+ baseUrl: string;
58
+ };
59
+ };
60
+ notes: string[];
61
+ };
62
+ export {};
@@ -0,0 +1,342 @@
1
+ // Drafts a connector.json for the http connector from an OpenAPI 3.x spec (JSON), for
2
+ // scripts/openapi-to-connector.ts and the admin API's internal app drafts. The draft loads, but
3
+ // a person finishes it: copy, capabilities, limits, answer limits.
4
+ const METHODS = ["get", "post", "put", "patch", "delete"];
5
+ const SCALARS = new Set(["string", "number", "integer", "boolean"]);
6
+ const snake = (s) => s
7
+ .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
8
+ .toLowerCase()
9
+ .replace(/[^a-z0-9]+/g, "_")
10
+ .replace(/^[^a-z]+|_+$/g, "");
11
+ const firstLine = (s) => typeof s === "string"
12
+ ? s
13
+ .trim()
14
+ .split(/\n\s*\n|\r?\n/)[0]
15
+ .slice(0, 300)
16
+ : "";
17
+ export function draftConnector(spec, options) {
18
+ const notes = [];
19
+ if (typeof spec.openapi !== "string" || !spec.openapi.startsWith("3."))
20
+ throw new Error("This takes an OpenAPI 3.x spec (its openapi field starts with 3.)");
21
+ // Follows local $refs (#/components/...); other specs' refs are left out.
22
+ const resolve = (node, seen = 0) => {
23
+ if (!node || typeof node !== "object")
24
+ return {};
25
+ const ref = node.$ref;
26
+ if (typeof ref !== "string")
27
+ return node;
28
+ if (!ref.startsWith("#/") || seen > 20) {
29
+ notes.push(`Left out ${ref}: only references inside the spec are followed`);
30
+ return {};
31
+ }
32
+ const target = ref
33
+ .slice(2)
34
+ .split("/")
35
+ .reduce((at, key) => at?.[key.replace(/~1/g, "/").replace(/~0/g, "~")], spec);
36
+ return resolve(target, seen + 1);
37
+ };
38
+ const objectOf = (raw) => {
39
+ const s = resolve(raw);
40
+ const parts = Array.isArray(s.allOf) ? s.allOf.map((p) => objectOf(p)) : [];
41
+ return {
42
+ properties: Object.assign({}, ...parts.map((p) => p.properties), s.properties ?? {}),
43
+ required: [
44
+ ...parts.flatMap((p) => p.required),
45
+ ...(Array.isArray(s.required) ? s.required : []),
46
+ ],
47
+ };
48
+ };
49
+ const typeOf = (s) => (Array.isArray(s.type) ? s.type.find((t) => t !== "null") : s.type);
50
+ // The http connector's param fields for a schema, or null for one it cannot take (an object).
51
+ const shape = (raw) => {
52
+ const s = resolve(raw);
53
+ const type = typeOf(s);
54
+ const items = type === "array" ? resolve(s.items) : null;
55
+ const scalar = items ? typeOf(items) : type;
56
+ if (!scalar || !SCALARS.has(scalar))
57
+ return null;
58
+ const fits = (v) => scalar === "integer"
59
+ ? Number.isInteger(v)
60
+ : typeof v === (scalar === "integer" ? "number" : scalar);
61
+ const values = (items ?? s).enum;
62
+ const allowed = Array.isArray(values) && values.length && values.every(fits) ? values : undefined;
63
+ const ok = (v) => fits(v) && (!allowed || allowed.includes(v));
64
+ const noDefault = s.default === undefined ||
65
+ (items ? !Array.isArray(s.default) || !s.default.every(ok) : !ok(s.default));
66
+ return {
67
+ type: items ? "array" : scalar,
68
+ ...(items ? { items: scalar } : {}),
69
+ ...(allowed ? { enum: allowed } : {}),
70
+ ...(noDefault ? {} : { default: s.default }),
71
+ };
72
+ };
73
+ const scalarFields = (raw) => Object.entries(objectOf(raw).properties)
74
+ .filter(([, p]) => SCALARS.has(typeOf(resolve(p)) ?? ""))
75
+ .map(([k]) => k);
76
+ const resultOf = (op) => {
77
+ const responses = resolve(op.responses);
78
+ const ok = Object.keys(responses).find((code) => /^2/.test(code));
79
+ const schema = ok && resolve(resolve(resolve(responses[ok]).content)["application/json"]).schema;
80
+ if (!schema)
81
+ return undefined;
82
+ const s = resolve(schema);
83
+ if (typeOf(s) === "array") {
84
+ const fields = scalarFields(s.items);
85
+ return fields.length ? { fields } : undefined;
86
+ }
87
+ const props = objectOf(s).properties;
88
+ // A list of records inside an object is taken as the page, e.g. {issues: [...], next}.
89
+ const lists = Object.entries(props)
90
+ .filter(([, p]) => typeOf(resolve(p)) === "array")
91
+ .map(([k, p]) => [k, scalarFields(resolve(p).items)])
92
+ .filter(([, fields]) => fields.length);
93
+ if (lists.length === 1)
94
+ return { items: lists[0][0], fields: lists[0][1] };
95
+ const fields = scalarFields(s);
96
+ return fields.length ? { fields } : undefined;
97
+ };
98
+ const app = snake(options.id);
99
+ const info = resolve(spec.info);
100
+ const title = typeof info.title === "string" && info.title.trim() ? info.title.trim() : options.id;
101
+ const picked = [];
102
+ for (const [path, rawItem] of Object.entries(resolve(spec.paths))) {
103
+ const item = resolve(rawItem);
104
+ for (const method of METHODS) {
105
+ const op = item[method];
106
+ if (!op)
107
+ continue;
108
+ const tags = Array.isArray(op.tags) ? op.tags : [];
109
+ if (options.operations?.includes(op.operationId) ||
110
+ options.tags?.some((t) => tags.includes(t)))
111
+ picked.push({ path, method, op, shared: item.parameters ?? [] });
112
+ }
113
+ }
114
+ const missing = (options.operations ?? []).filter((id) => !picked.some((p) => p.op.operationId === id));
115
+ if (missing.length)
116
+ throw new Error(`No operation has the id ${missing.join(", ")}`);
117
+ if (!picked.length)
118
+ throw new Error("No operation matched: name operations or tags");
119
+ const tools = picked.map(({ path, method, op, shared }) => {
120
+ const opId = typeof op.operationId === "string" ? op.operationId : `${method} ${path}`;
121
+ const base = snake(opId);
122
+ const name = base.startsWith(`${app}_`) ? base : `${app}_${base}`;
123
+ const params = {};
124
+ const add = (key, param, why) => {
125
+ if (params[key])
126
+ notes.push(`${name}: left out ${why}, its name is taken by another param`);
127
+ else
128
+ params[key] = param;
129
+ };
130
+ const byPlace = new Map();
131
+ for (const raw of [...shared, ...(op.parameters ?? [])]) {
132
+ const p = resolve(raw);
133
+ byPlace.set(`${p.in}:${p.name}`, p);
134
+ }
135
+ let template = path;
136
+ for (const p of byPlace.values()) {
137
+ const wire = String(p.name);
138
+ if (p.in !== "path" && p.in !== "query") {
139
+ notes.push(`${name}: left out the ${p.in} param ${wire} (a fixed header goes in http.headers)`);
140
+ continue;
141
+ }
142
+ const fields = shape(p.schema);
143
+ if (!fields) {
144
+ notes.push(`${name}: left out ${wire}, whose type the http connector cannot take`);
145
+ continue;
146
+ }
147
+ const key = snake(wire) || "param";
148
+ if (p.in === "path")
149
+ template = template.replaceAll(`{${wire}}`, `{${key}}`);
150
+ if (p.in === "path")
151
+ delete fields.default;
152
+ const style = p.style ?? "form";
153
+ const join = fields.type === "array" && p.in === "query"
154
+ ? style === "spaceDelimited"
155
+ ? " "
156
+ : style === "pipeDelimited"
157
+ ? "|"
158
+ : p.explode === false
159
+ ? ","
160
+ : undefined
161
+ : undefined;
162
+ add(key, {
163
+ ...fields,
164
+ description: firstLine(p.description) || firstLine(resolve(p.schema).description) || wire,
165
+ in: p.in,
166
+ ...(key === wire || p.in === "path" ? {} : { name: wire }),
167
+ ...(p.in === "path" || p.required === true || fields.default !== undefined
168
+ ? {}
169
+ : { required: false }),
170
+ ...(join ? { join } : {}),
171
+ }, `query param ${wire}`);
172
+ }
173
+ const body = resolve(op.requestBody);
174
+ const content = resolve(body.content);
175
+ if (method === "get" && op.requestBody)
176
+ notes.push(`${name}: left out its request body (a GET)`);
177
+ else if (op.requestBody && !content["application/json"])
178
+ notes.push(`${name}: left out its request body, which is not JSON`);
179
+ else if (op.requestBody) {
180
+ const { properties, required } = objectOf(resolve(content["application/json"]).schema);
181
+ if (!Object.keys(properties).length)
182
+ notes.push(`${name}: its request body has no listed fields, so it sends none`);
183
+ for (const [wire, raw] of Object.entries(properties)) {
184
+ const prop = resolve(raw);
185
+ if (prop.readOnly)
186
+ continue;
187
+ const fields = shape(prop);
188
+ if (!fields) {
189
+ notes.push(`${name}: left out body field ${wire}, an object or a type not supported`);
190
+ continue;
191
+ }
192
+ const key = snake(wire) || "field";
193
+ add(key, {
194
+ ...fields,
195
+ description: firstLine(prop.description) || wire,
196
+ in: "body",
197
+ ...(key === wire ? {} : { name: wire }),
198
+ ...(required.includes(wire) || fields.default !== undefined ? {} : { required: false }),
199
+ }, `body field ${wire}`);
200
+ }
201
+ }
202
+ const result = method === "get" ? resultOf(op) : undefined;
203
+ if (result)
204
+ notes.push(`${name}: its answer is trimmed to fields guessed from the spec; check them`);
205
+ return {
206
+ name,
207
+ description: firstLine(op.summary) || firstLine(op.description) || `${method.toUpperCase()} ${path}`,
208
+ method: method.toUpperCase(),
209
+ path: template,
210
+ params,
211
+ ...(result ? { result } : {}),
212
+ };
213
+ });
214
+ const baseUrl = (() => {
215
+ const server = resolve(spec.servers?.[0]);
216
+ let url = typeof server.url === "string" ? server.url : "";
217
+ for (const [name, v] of Object.entries(resolve(server.variables)))
218
+ url = url.replaceAll(`{${name}}`, String(resolve(v).default ?? ""));
219
+ if (!url || !URL.canParse(url, options.source)) {
220
+ notes.push("The spec names no server address: set http.baseUrl");
221
+ return "https://app.example.com";
222
+ }
223
+ return new URL(url, options.source).href.replace(/\/+$/, "");
224
+ })();
225
+ const auth = authOf();
226
+ function authOf() {
227
+ const requirement = [
228
+ ...(picked[0].op.security ?? spec.security ?? []),
229
+ ][0];
230
+ const schemeName = requirement && Object.keys(requirement)[0];
231
+ const scheme = schemeName
232
+ ? resolve(resolve(resolve(spec.components).securitySchemes)[schemeName])
233
+ : {};
234
+ const secret = (id, label) => ({ id, label, secret: true });
235
+ const plain = (id, label) => ({ id, label, secret: false });
236
+ if (scheme.type === "apiKey" && scheme.in === "header") {
237
+ if (String(scheme.name).toLowerCase() === "authorization")
238
+ notes.push("The key goes in Authorization: add auth.prefix if a word comes before it");
239
+ return {
240
+ auth: { type: "header", header: scheme.name, value: "api_key" },
241
+ fields: [secret("api_key", "API key")],
242
+ credential: "an API key",
243
+ };
244
+ }
245
+ if (scheme.type === "apiKey" && scheme.in === "query")
246
+ return {
247
+ auth: { type: "query", param: scheme.name, value: "api_key" },
248
+ fields: [secret("api_key", "API key")],
249
+ credential: "an API key",
250
+ };
251
+ if (scheme.type === "http" && String(scheme.scheme).toLowerCase() === "basic")
252
+ return {
253
+ auth: { type: "basic", username: "username", password: "password" },
254
+ fields: [plain("username", "Username"), secret("password", "Password")],
255
+ credential: "a username and password",
256
+ };
257
+ const flow = resolve(resolve(scheme.flows).clientCredentials);
258
+ if (scheme.type === "oauth2" && typeof flow.tokenUrl === "string")
259
+ return {
260
+ auth: {
261
+ type: "oauth2",
262
+ tokenUrl: new URL(flow.tokenUrl, baseUrl).href,
263
+ clientId: "client_id",
264
+ clientSecret: "client_secret",
265
+ },
266
+ fields: [plain("client_id", "Client ID"), secret("client_secret", "Client secret")],
267
+ credential: "a client ID and secret",
268
+ };
269
+ if (!(scheme.type === "http" && String(scheme.scheme).toLowerCase() === "bearer"))
270
+ notes.push(schemeName
271
+ ? `Sign-in ${schemeName} (${String(scheme.type)}) does not map to one the http connector has; the draft uses a token, which may work if the app issues tokens for services`
272
+ : "The spec names no sign-in; the draft uses a token");
273
+ return {
274
+ auth: { type: "bearer", token: "token" },
275
+ fields: [secret("token", "Token")],
276
+ credential: "a token",
277
+ };
278
+ }
279
+ const insecure = !baseUrl.startsWith("https://");
280
+ if (insecure)
281
+ notes.push("The address is plain http: allowInsecureHttp is on, check that it must be");
282
+ const group = (label, id, description, list, destructive = false) => list.length
283
+ ? [
284
+ {
285
+ id,
286
+ label,
287
+ description,
288
+ ...(destructive ? { destructive: true } : {}),
289
+ scopes: [],
290
+ permissions: [],
291
+ tools: list.map((t) => t.name),
292
+ },
293
+ ]
294
+ : [];
295
+ const reads = tools.filter((t) => t.method === "GET");
296
+ const writes = tools.filter((t) => !["GET", "DELETE"].includes(t.method));
297
+ if (writes.length)
298
+ notes.push("Writes: mark any tool that overwrites data destructive, and move it with the deletes");
299
+ const check = reads.find((t) => Object.values(t.params).every((p) => p.required === false || p.default !== undefined));
300
+ if (!check)
301
+ notes.push("No read without required params to check the connection with: set verify.path");
302
+ const shown = check?.result?.fields?.[0] ?? "id";
303
+ const connector = {
304
+ id: options.id,
305
+ name: title,
306
+ description: firstLine(info.description) || `Let agents use ${title}.`,
307
+ logo: `/brand/registry/${options.id}.svg`,
308
+ identity: `${auth.credential.replace(/^\w/, (c) => c.toUpperCase())} for ${title}.`,
309
+ accountKey: "host",
310
+ connectionKind: "guided",
311
+ setup: [
312
+ {
313
+ title: "Create a credential for agents",
314
+ body: `In ${title}, create ${auth.credential} for agents, with only the access they need.`,
315
+ },
316
+ ],
317
+ afterConnect: [],
318
+ fields: auth.fields,
319
+ capabilities: [
320
+ ...group("Read", "read", `Look things up in ${title}.`, reads),
321
+ ...group("Make changes", "write", `Create and change things in ${title}.`, writes),
322
+ ...group("Delete", "delete", `Delete things in ${title}.`, tools.filter((t) => t.method === "DELETE"), true),
323
+ ],
324
+ limits: [],
325
+ verify: {
326
+ method: "GET",
327
+ path: check?.path ?? "/",
328
+ label: `${title} answers`,
329
+ show: shown,
330
+ },
331
+ revoke: `Delete the credential in ${title}.`,
332
+ http: {
333
+ baseUrl,
334
+ ...(insecure ? { allowInsecureHttp: true } : {}),
335
+ auth: auth.auth,
336
+ tools,
337
+ },
338
+ };
339
+ notes.push("Add limits (and answerLimits on reads by id) for the values agents may be narrowed to", "Add paging to list tools that take a cursor or page number", "Rewrite the name, description, setup and revoke copy in plain words for the admin");
340
+ return { connector, notes };
341
+ }
342
+ //# sourceMappingURL=openapi.js.map