@zackbart/connecta 0.34.1 → 0.36.0

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 (441) hide show
  1. package/CHANGELOG.md +418 -0
  2. package/README.md +65 -105
  3. package/SECURITY.md +3 -2
  4. package/bin/connecta.mjs +41 -16
  5. package/bin/version.mjs +1 -1
  6. package/dist/access-tokens.d.ts +2 -1
  7. package/dist/access-tokens.js +66 -30
  8. package/dist/activity.d.ts +1 -1
  9. package/dist/activity.js +2 -0
  10. package/dist/agent-config.d.ts +23 -0
  11. package/dist/agent-config.js +59 -0
  12. package/dist/agent-description.js +16 -0
  13. package/dist/agent-identity.js +4 -4
  14. package/dist/agent-observation.js +39 -0
  15. package/dist/auth/clerk-sdk/client.d.ts +2 -0
  16. package/dist/auth/clerk-sdk/generated.js +554 -563
  17. package/dist/auth/clerk-transport.js +70 -3
  18. package/dist/auth/clerk.d.ts +13 -0
  19. package/dist/auth/clerk.js +653 -246
  20. package/dist/auth/cloudflare-access.js +46 -42
  21. package/dist/auth/downstream-client-metadata.js +2 -2
  22. package/dist/auth/downstream-oauth.js +2044 -1161
  23. package/dist/auth/downstream-revocation.js +88 -88
  24. package/dist/auth/native-call.js +20 -0
  25. package/dist/auth/native.js +184 -0
  26. package/dist/auth/oauth-start-reset.js +11 -5
  27. package/dist/auth/oauth-token-response.js +121 -102
  28. package/dist/auth/oauth-v2-migration.js +97 -78
  29. package/dist/auth/renewable-grant.js +10 -0
  30. package/dist/auth/static-oauth.js +751 -281
  31. package/dist/auth/vercel-agent.js +266 -0
  32. package/dist/auth-admission.js +204 -0
  33. package/dist/auth-elicitation.js +350 -241
  34. package/dist/authorization-handoff.js +164 -90
  35. package/dist/call-admission-context.js +3 -10
  36. package/dist/call-admission.js +2 -0
  37. package/dist/call-classification.js +9 -0
  38. package/dist/call-recovery.js +32 -13
  39. package/dist/canonical-json.js +8 -0
  40. package/dist/catalog-cache.js +369 -213
  41. package/dist/catalog-service.js +659 -530
  42. package/dist/catalog.js +5 -1
  43. package/dist/concurrency.js +0 -25
  44. package/dist/config-defaults.d.ts +1 -0
  45. package/dist/config-defaults.js +1 -0
  46. package/dist/config-schema.d.ts +3 -1
  47. package/dist/config-schema.js +13 -3
  48. package/dist/config.d.ts +40 -6
  49. package/dist/config.js +40 -26
  50. package/dist/connector-caller.d.ts +4 -0
  51. package/dist/connector-caller.js +17 -4
  52. package/dist/connectors/api-connector.d.ts +29 -7
  53. package/dist/connectors/api-connector.js +145 -57
  54. package/dist/connectors/guarded-fetch.d.ts +51 -17
  55. package/dist/connectors/guarded-fetch.js +215 -121
  56. package/dist/connectors/negotiation-cache.js +20 -10
  57. package/dist/connectors/remote-mcp.d.ts +10 -30
  58. package/dist/connectors/remote-mcp.js +955 -563
  59. package/dist/d1.js +10 -243
  60. package/dist/derived-context.js +5 -0
  61. package/dist/describe-config.d.ts +3 -1
  62. package/dist/describe-config.js +2 -0
  63. package/dist/downstream-input.js +347 -260
  64. package/dist/errors.d.ts +87 -6
  65. package/dist/errors.js +114 -4
  66. package/dist/execute.js +87 -50
  67. package/dist/executor-admission.js +3 -0
  68. package/dist/executors/quickjs.js +163 -112
  69. package/dist/guarded-transport.js +50 -0
  70. package/dist/guest-runtime.js +1 -1
  71. package/dist/http/client.js +439 -0
  72. package/dist/http/errors.js +558 -0
  73. package/dist/http/fields.js +49 -0
  74. package/dist/http/hatch-paging.js +318 -0
  75. package/dist/http/hatch.js +1279 -0
  76. package/dist/http/json-schema.js +267 -0
  77. package/dist/http/node-transport.js +241 -0
  78. package/dist/http/oauth.js +162 -0
  79. package/dist/http/paging.js +227 -0
  80. package/dist/http/provider.js +221 -0
  81. package/dist/http/safety.js +82 -0
  82. package/dist/http/services.js +79 -0
  83. package/dist/http/tools.js +379 -0
  84. package/dist/http/vendor-index.js +138 -0
  85. package/dist/http/vendor.js +448 -0
  86. package/dist/http/write-request.js +66 -0
  87. package/dist/http-policy.d.ts +11 -0
  88. package/dist/http-policy.js +45 -0
  89. package/dist/inbound-credential.js +1 -1
  90. package/dist/index.d.ts +2 -2
  91. package/dist/index.js +4 -0
  92. package/dist/invocation-auth.js +30 -19
  93. package/dist/invocation.js +218 -85
  94. package/dist/mcp-result.js +0 -4
  95. package/dist/membership.d.ts +4 -0
  96. package/dist/meta-output.js +1 -1
  97. package/dist/meta-tools.js +531 -406
  98. package/dist/native-recovery.js +52 -0
  99. package/dist/native-tools.js +382 -0
  100. package/dist/node.d.ts +4 -3
  101. package/dist/node.js +45 -8
  102. package/dist/oauth-handoff.js +177 -104
  103. package/dist/oauth-partition.js +6 -20
  104. package/dist/oauth-sealing.js +6 -7
  105. package/dist/operation-vocabulary.js +101 -0
  106. package/dist/operator-record.d.ts +2 -2
  107. package/dist/operator-record.js +17 -4
  108. package/dist/operator-ui/contract.d.ts +8 -3
  109. package/dist/operator-ui/generated.js +4 -4
  110. package/dist/operator-ui/model.d.ts +2 -3
  111. package/dist/program-writes.js +47 -26
  112. package/dist/provider-call-facts.d.ts +115 -0
  113. package/dist/provider-call-facts.js +182 -0
  114. package/dist/provider-call.d.ts +112 -0
  115. package/dist/provider-call.js +271 -0
  116. package/dist/provider.d.ts +65 -31
  117. package/dist/provider.js +116 -39
  118. package/dist/providers/_shared/google/hatch.js +91 -0
  119. package/dist/providers/_shared/google/kit.js +427 -0
  120. package/dist/providers/_shared/google/result-size.js +15 -2
  121. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  122. package/dist/providers/_shared/google/service-account.js +8 -4
  123. package/dist/providers/_shared/google/workspace.d.ts +6 -210
  124. package/dist/providers/_shared/google/workspace.js +6 -425
  125. package/dist/providers/_shared/rest/compact-index.js +86 -0
  126. package/dist/providers/_shared/rest/kit.js +146 -0
  127. package/dist/providers/_shared/rest/operation-index.js +230 -14
  128. package/dist/providers/_shared/rest/response-media.js +11 -0
  129. package/dist/providers/_shared/rest/value-safety.js +353 -195
  130. package/dist/providers/_shared/sensitive-fields.js +27 -0
  131. package/dist/providers/breeze/api.js +584 -0
  132. package/dist/providers/breeze/index.d.ts +1 -3
  133. package/dist/providers/breeze/index.js +67 -1420
  134. package/dist/providers/breeze/openapi.generated.js +60 -0
  135. package/dist/providers/breeze/skill.generated.js +2 -6
  136. package/dist/providers/breeze/tools.js +696 -0
  137. package/dist/providers/ccb/api.js +496 -0
  138. package/dist/providers/ccb/index.d.ts +15 -37
  139. package/dist/providers/ccb/index.js +77 -1702
  140. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  141. package/dist/providers/ccb/lib/constants.js +74 -0
  142. package/dist/providers/ccb/lib/guide.js +9 -0
  143. package/dist/providers/ccb/lib/verdicts.js +387 -0
  144. package/dist/providers/ccb/openapi.generated.js +397 -0
  145. package/dist/providers/ccb/safety.js +295 -0
  146. package/dist/providers/ccb/skill.generated.js +2 -6
  147. package/dist/providers/ccb/tools.js +853 -0
  148. package/dist/providers/cloudflare/api.js +1066 -0
  149. package/dist/providers/cloudflare/index.d.ts +5 -22
  150. package/dist/providers/cloudflare/index.js +79 -197
  151. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  152. package/dist/providers/cloudflare/lib/config.js +2 -0
  153. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  154. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  155. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  156. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  157. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  158. package/dist/providers/cloudflare/openapi.generated.js +4 -3
  159. package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
  160. package/dist/providers/cloudflare/skill.generated.js +2 -10
  161. package/dist/providers/cloudflare/tools.js +360 -0
  162. package/dist/providers/docs/api.js +51 -0
  163. package/dist/providers/docs/index.d.ts +1 -12
  164. package/dist/providers/docs/index.js +53 -1165
  165. package/dist/providers/docs/lib/constants.d.ts +18 -0
  166. package/dist/providers/docs/lib/constants.js +18 -0
  167. package/dist/providers/docs/lib/discovery.js +26 -0
  168. package/dist/providers/docs/lib/requests.js +48 -0
  169. package/dist/providers/docs/lib/schemas.js +168 -0
  170. package/dist/providers/docs/openapi.generated.js +16 -0
  171. package/dist/providers/docs/safety.js +54 -0
  172. package/dist/providers/docs/skill.generated.js +2 -6
  173. package/dist/providers/docs/tools.js +801 -0
  174. package/dist/providers/drive/api.js +177 -0
  175. package/dist/providers/drive/index.d.ts +1 -12
  176. package/dist/providers/drive/index.js +38 -1448
  177. package/dist/providers/drive/lib/constants.d.ts +6 -0
  178. package/dist/providers/drive/lib/constants.js +6 -0
  179. package/dist/providers/drive/lib/contracts.js +532 -0
  180. package/dist/providers/drive/lib/hatch.js +197 -0
  181. package/dist/providers/drive/openapi.generated.js +77 -0
  182. package/dist/providers/drive/safety.js +90 -0
  183. package/dist/providers/drive/skill.generated.js +2 -6
  184. package/dist/providers/drive/tools.js +1290 -0
  185. package/dist/providers/forms/api.js +71 -0
  186. package/dist/providers/forms/index.d.ts +1 -12
  187. package/dist/providers/forms/index.js +49 -1145
  188. package/dist/providers/forms/lib/constants.d.ts +14 -0
  189. package/dist/providers/forms/lib/constants.js +19 -0
  190. package/dist/providers/forms/lib/hatch.js +72 -0
  191. package/dist/providers/forms/openapi.generated.js +23 -0
  192. package/dist/providers/forms/safety.js +34 -0
  193. package/dist/providers/forms/skill.generated.js +2 -8
  194. package/dist/providers/forms/tools.js +1023 -0
  195. package/dist/providers/github/api.js +150 -0
  196. package/dist/providers/github/index.d.ts +4 -5
  197. package/dist/providers/github/index.js +30 -87
  198. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  199. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  200. package/dist/providers/github/lib/discovery.js +132 -0
  201. package/dist/providers/github/lib/operations.js +58 -0
  202. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  203. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  204. package/dist/providers/github/openapi.generated.js +1216 -0
  205. package/dist/providers/github/safety.js +216 -0
  206. package/dist/providers/github/skill.generated.js +2 -5
  207. package/dist/providers/github/tools.js +506 -0
  208. package/dist/providers/gmail/api.js +114 -0
  209. package/dist/providers/gmail/index.d.ts +1 -12
  210. package/dist/providers/gmail/index.js +73 -1621
  211. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  212. package/dist/providers/gmail/lib/constants.js +16 -0
  213. package/dist/providers/gmail/lib/index.js +173 -0
  214. package/dist/providers/gmail/lib/schemas.js +176 -0
  215. package/dist/providers/gmail/lib/threading.js +120 -0
  216. package/dist/providers/gmail/openapi.generated.js +92 -0
  217. package/dist/providers/gmail/safety.js +21 -0
  218. package/dist/providers/gmail/skill.generated.js +2 -6
  219. package/dist/providers/gmail/tools.js +1435 -0
  220. package/dist/providers/overflow/api.js +1008 -0
  221. package/dist/providers/overflow/index.d.ts +1 -17
  222. package/dist/providers/overflow/index.js +60 -1488
  223. package/dist/providers/overflow/skill.generated.js +2 -5
  224. package/dist/providers/overflow/tools.js +873 -0
  225. package/dist/providers/planning-center/api.js +467 -0
  226. package/dist/providers/planning-center/index.d.ts +4 -35
  227. package/dist/providers/planning-center/index.js +69 -2445
  228. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  229. package/dist/providers/planning-center/lib/constants.js +83 -0
  230. package/dist/providers/planning-center/lib/discovery.js +40 -0
  231. package/dist/providers/planning-center/lib/guide.js +39 -0
  232. package/dist/providers/planning-center/lib/json-api.js +83 -0
  233. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  234. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  235. package/dist/providers/planning-center/safety.js +188 -0
  236. package/dist/providers/planning-center/skill.generated.js +2 -27
  237. package/dist/providers/planning-center/tools.js +1010 -0
  238. package/dist/providers/quickbooks/api.js +299 -0
  239. package/dist/providers/quickbooks/index.d.ts +13 -0
  240. package/dist/providers/quickbooks/index.js +93 -0
  241. package/dist/providers/quickbooks/lib/query.js +118 -0
  242. package/dist/providers/quickbooks/lib/writes.js +168 -0
  243. package/dist/providers/quickbooks/safety.js +222 -0
  244. package/dist/providers/quickbooks/skill.generated.js +5 -0
  245. package/dist/providers/quickbooks/tools.js +117 -0
  246. package/dist/providers/sheets/api.js +133 -0
  247. package/dist/providers/sheets/index.d.ts +4 -16
  248. package/dist/providers/sheets/index.js +61 -1172
  249. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  250. package/dist/providers/sheets/lib/constants.js +14 -0
  251. package/dist/providers/sheets/lib/hatch.js +163 -0
  252. package/dist/providers/sheets/lib/requests.js +105 -0
  253. package/dist/providers/sheets/lib/schemas.js +138 -0
  254. package/dist/providers/sheets/openapi.generated.js +30 -0
  255. package/dist/providers/sheets/safety.js +27 -0
  256. package/dist/providers/sheets/skill.generated.js +2 -7
  257. package/dist/providers/sheets/tools.js +733 -0
  258. package/dist/providers/slides/api.js +147 -0
  259. package/dist/providers/slides/index.d.ts +2 -10
  260. package/dist/providers/slides/index.js +48 -2555
  261. package/dist/providers/slides/lib/constants.d.ts +11 -0
  262. package/dist/providers/slides/lib/constants.js +11 -0
  263. package/dist/providers/slides/lib/requests.js +60 -0
  264. package/dist/providers/slides/lib/schemas.js +565 -0
  265. package/dist/providers/slides/openapi.generated.js +18 -0
  266. package/dist/providers/slides/skill.generated.js +2 -6
  267. package/dist/providers/slides/tools.js +1968 -0
  268. package/dist/providers/stripe/api.js +401 -0
  269. package/dist/providers/stripe/index.d.ts +5 -27
  270. package/dist/providers/stripe/index.js +74 -210
  271. package/dist/providers/stripe/lib/config.d.ts +4 -0
  272. package/dist/providers/stripe/lib/config.js +2 -0
  273. package/dist/providers/stripe/openapi.generated.js +4 -3
  274. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  275. package/dist/providers/stripe/skill.generated.js +2 -11
  276. package/dist/providers/stripe/tools.js +77 -0
  277. package/dist/providers/tithely/api.js +531 -0
  278. package/dist/providers/tithely/index.d.ts +17 -0
  279. package/dist/providers/tithely/index.js +86 -965
  280. package/dist/providers/tithely/skill.generated.js +2 -5
  281. package/dist/providers/tithely/tools.js +426 -0
  282. package/dist/providers/vercel/api.js +551 -0
  283. package/dist/providers/vercel/index.d.ts +9 -25
  284. package/dist/providers/vercel/index.js +65 -260
  285. package/dist/providers/vercel/lib/config.d.ts +2 -0
  286. package/dist/providers/vercel/lib/config.js +2 -0
  287. package/dist/providers/vercel/lib/index.js +117 -0
  288. package/dist/providers/vercel/lib/logs.js +100 -0
  289. package/dist/providers/vercel/lib/pin.js +270 -0
  290. package/dist/providers/vercel/openapi.generated.js +10 -5
  291. package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
  292. package/dist/providers/vercel/skill.generated.js +2 -7
  293. package/dist/providers/vercel/tools.js +642 -0
  294. package/dist/redaction-identity.js +47 -0
  295. package/dist/redaction-marker.js +125 -0
  296. package/dist/registry.d.ts +21 -15
  297. package/dist/registry.js +409 -376
  298. package/dist/routes/access-tokens.js +1 -1
  299. package/dist/routes/actor-labels.js +1 -1
  300. package/dist/routes/connect.js +1 -1
  301. package/dist/routes/dispatch.js +103 -0
  302. package/dist/routes/mcp.js +170 -79
  303. package/dist/routes/oauth.js +6 -1
  304. package/dist/routes/operator.js +2 -2
  305. package/dist/routes/shared.d.ts +5 -4
  306. package/dist/routes/shared.js +244 -177
  307. package/dist/routes/skills.js +10 -8
  308. package/dist/routes/ui-config.js +27 -3
  309. package/dist/routes/ui-data.js +21 -20
  310. package/dist/routes/ui.js +1 -1
  311. package/dist/runtime/call-admission.js +0 -26
  312. package/dist/runtime/call-entry.js +30 -0
  313. package/dist/runtime/call.js +552 -0
  314. package/dist/runtime/connector-scope.js +7 -0
  315. package/dist/runtime/credential-probe.js +34 -0
  316. package/dist/runtime/executor.js +40 -0
  317. package/dist/runtime/native-storage.js +63 -0
  318. package/dist/runtime/registry.js +27 -0
  319. package/dist/runtime/request-scope.js +72 -0
  320. package/dist/runtime/run.js +15 -7
  321. package/dist/runtime/shared-read.js +34 -5
  322. package/dist/runtime/storage.js +34 -21
  323. package/dist/sent-secrets.d.ts +194 -37
  324. package/dist/sent-secrets.js +1743 -340
  325. package/dist/server.js +5 -56
  326. package/dist/skills.js +322 -223
  327. package/dist/sqlite.js +15 -14
  328. package/dist/storage/d1-copy.js +255 -0
  329. package/dist/storage/d1-driver.js +15 -0
  330. package/dist/storage/keys.js +28 -0
  331. package/dist/storage/sql-driver.js +88 -0
  332. package/dist/storage/sql-native.js +544 -0
  333. package/dist/storage/sql-schema.d.ts +6 -0
  334. package/dist/storage/sql-schema.js +15 -0
  335. package/dist/storage/sql.d.ts +14 -20
  336. package/dist/storage/sql.js +29 -535
  337. package/dist/timeout.js +0 -26
  338. package/dist/tool-safety.js +20 -10
  339. package/dist/types.d.ts +9 -109
  340. package/dist/ui.d.ts +1 -1
  341. package/dist/ui.js +0 -1
  342. package/dist/upward.js +3 -0
  343. package/dist/usage-guide.js +3 -1
  344. package/dist/validate.d.ts +4 -2
  345. package/dist/validate.js +86 -9
  346. package/dist/version.d.ts +1 -1
  347. package/dist/version.js +1 -1
  348. package/dist/worker.js +312 -292
  349. package/dist/workspace-subject.js +5 -1
  350. package/dist/write-outcome.js +454 -34
  351. package/documentation/README.md +28 -7
  352. package/documentation/architecture.md +2409 -255
  353. package/documentation/auth.md +867 -114
  354. package/documentation/code-mode.md +49 -16
  355. package/documentation/deploying.md +164 -20
  356. package/documentation/hosted-mcp-migration.md +460 -0
  357. package/documentation/integrating.md +129 -144
  358. package/documentation/meta-tools.md +409 -32
  359. package/documentation/operating.md +27 -3
  360. package/documentation/operator-tests.md +3 -0
  361. package/documentation/operator-ui.md +84 -48
  362. package/documentation/provider-auth-migration.md +16 -63
  363. package/documentation/provider-migration-0.29.md +10 -5
  364. package/documentation/provider-migration-0.35.md +975 -0
  365. package/documentation/providers.md +1347 -0
  366. package/examples/worker/AGENTS.md +23 -9
  367. package/examples/worker/README.md +254 -135
  368. package/examples/worker/alchemy.run.ts +116 -0
  369. package/examples/worker/gitignore +10 -0
  370. package/examples/worker/src/connecta.config.ts +23 -21
  371. package/examples/worker/wrangler.jsonc +14 -5
  372. package/guides/connecting-agents.md +157 -0
  373. package/guides/how-it-works.md +156 -0
  374. package/guides/safety-and-trust.md +153 -0
  375. package/package.json +30 -50
  376. package/templates/node/.env.example +3 -0
  377. package/templates/node/README.md +22 -2
  378. package/templates/node/docker-compose.yml +1 -0
  379. package/templates/node/package.json +3 -2
  380. package/templates/node/src/connecta.config.ts +8 -0
  381. package/dist/catalog-drift.d.ts +0 -138
  382. package/dist/catalog-drift.js +0 -578
  383. package/dist/operator-ui/agents.d.ts +0 -74
  384. package/dist/operator-ui/agents.js +0 -104
  385. package/dist/operator-ui/config-summary.js +0 -565
  386. package/dist/operator-ui/connection-map.js +0 -376
  387. package/dist/operator-ui/endpoints.js +0 -221
  388. package/dist/operator-ui/fix-prompts.d.ts +0 -18
  389. package/dist/operator-ui/fix-prompts.js +0 -87
  390. package/dist/operator-ui/health.js +0 -52
  391. package/dist/operator-ui/member-page.js +0 -97
  392. package/dist/operator-ui/overview.js +0 -123
  393. package/dist/operator-ui/setup-commands.js +0 -51
  394. package/dist/operator-ui/view.d.ts +0 -401
  395. package/dist/operator-ui/view.js +0 -705
  396. package/dist/providers/_shared/request-token.js +0 -83
  397. package/dist/providers/_shared/rest/dispatch.js +0 -41
  398. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  399. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  400. package/dist/providers/_shared/rest/tools.js +0 -569
  401. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  402. package/dist/providers/basecamp/index.d.ts +0 -45
  403. package/dist/providers/basecamp/index.js +0 -997
  404. package/dist/providers/basecamp/skill.generated.js +0 -9
  405. package/dist/providers/cloudflare/rest.d.ts +0 -37
  406. package/dist/providers/cloudflare/rest.js +0 -1097
  407. package/dist/providers/github/hosted.js +0 -218
  408. package/dist/providers/github/rest.js +0 -321
  409. package/dist/providers/infisical/index.d.ts +0 -7
  410. package/dist/providers/infisical/index.js +0 -713
  411. package/dist/providers/infisical/skill.generated.js +0 -8
  412. package/dist/providers/intercom/index.d.ts +0 -24
  413. package/dist/providers/intercom/index.js +0 -121
  414. package/dist/providers/intercom/skill.generated.js +0 -8
  415. package/dist/providers/linear/index.d.ts +0 -55
  416. package/dist/providers/linear/index.js +0 -537
  417. package/dist/providers/linear/skill.generated.js +0 -8
  418. package/dist/providers/mixpanel/index.d.ts +0 -59
  419. package/dist/providers/mixpanel/index.js +0 -472
  420. package/dist/providers/mixpanel/operations.js +0 -20
  421. package/dist/providers/mixpanel/rest.js +0 -603
  422. package/dist/providers/mixpanel/skill.generated.js +0 -10
  423. package/dist/providers/mixpanel/value-safety.js +0 -16
  424. package/dist/providers/notion/index.d.ts +0 -67
  425. package/dist/providers/notion/index.js +0 -368
  426. package/dist/providers/notion/openapi.generated.js +0 -75
  427. package/dist/providers/notion/rest.d.ts +0 -24
  428. package/dist/providers/notion/rest.js +0 -1226
  429. package/dist/providers/notion/skill.generated.js +0 -11
  430. package/dist/providers/notion/value-safety.js +0 -56
  431. package/dist/providers/revenuecat/index.d.ts +0 -51
  432. package/dist/providers/revenuecat/index.js +0 -697
  433. package/dist/providers/revenuecat/skill.generated.js +0 -11
  434. package/dist/providers/stripe/rest.d.ts +0 -14
  435. package/dist/providers/stripe/rest.js +0 -402
  436. package/dist/providers/vercel/rest.d.ts +0 -20
  437. package/dist/providers/vercel/rest.js +0 -1020
  438. package/dist/providers/wispr-flow/index.d.ts +0 -14
  439. package/dist/providers/wispr-flow/index.js +0 -117
  440. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  441. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Gmail's API root, confined to the delegated user's own mailbox: `me` is the
3
+ * token's subject, and no path can climb out of it.
4
+ */
5
+ export declare const GMAIL_API_BASE_URL = "https://gmail.googleapis.com/gmail/v1/users/me";
6
+ /**
7
+ * Exactly the scopes this connection requests, and exactly what the Admin
8
+ * console's domain-wide delegation entry must list (comma-separated there).
9
+ * `gmail.compose` technically permits sending; the tool surface does not.
10
+ */
11
+ export declare const GMAIL_SCOPES: readonly ["https://www.googleapis.com/auth/gmail.readonly", "https://www.googleapis.com/auth/gmail.compose"];
12
+ /** A full thread without attachment bodies; Gmail's message cap is 25 MB. */
13
+ export declare const GMAIL_MAX_RESPONSE_BYTES: number;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Gmail's API root, confined to the delegated user's own mailbox: `me` is the
3
+ * token's subject, and no path can climb out of it.
4
+ */
5
+ export const GMAIL_API_BASE_URL = "https://gmail.googleapis.com/gmail/v1/users/me";
6
+ /**
7
+ * Exactly the scopes this connection requests, and exactly what the Admin
8
+ * console's domain-wide delegation entry must list (comma-separated there).
9
+ * `gmail.compose` technically permits sending; the tool surface does not.
10
+ */
11
+ export const GMAIL_SCOPES = [
12
+ "https://www.googleapis.com/auth/gmail.readonly",
13
+ "https://www.googleapis.com/auth/gmail.compose",
14
+ ];
15
+ /** A full thread without attachment bodies; Gmail's message cap is 25 MB. */
16
+ export const GMAIL_MAX_RESPONSE_BYTES = 16 * 1024 * 1024;
@@ -0,0 +1,173 @@
1
+ // Reviewed frozen Gmail v1 inventory: 79 indexed keys, eleven executable reads.
2
+ import { OperationIndex } from "../../_shared/rest/operation-index.js";
3
+ import { googlePageToken } from "../../../http/hatch-paging.js";
4
+ import { openapi } from "../openapi.generated.js";
5
+ export const index = new OperationIndex(openapi, { vendor: "gmail", title: "Gmail", pathMatching: "uri-template" });
6
+ export const verdicts = {
7
+ "GET /drafts": "read",
8
+ "POST /drafts": "refuse",
9
+ "POST /drafts/send": "refuse",
10
+ "DELETE /drafts/{id}": "refuse",
11
+ "GET /drafts/{id}": "read",
12
+ "PUT /drafts/{id}": "refuse",
13
+ "GET /history": "read",
14
+ "GET /labels": "read",
15
+ "POST /labels": "refuse",
16
+ "DELETE /labels/{id}": "refuse",
17
+ "GET /labels/{id}": "read",
18
+ "PATCH /labels/{id}": "refuse",
19
+ "PUT /labels/{id}": "refuse",
20
+ "GET /messages": "read",
21
+ "POST /messages": "refuse",
22
+ "POST /messages/batchDelete": "refuse",
23
+ "POST /messages/batchModify": "refuse",
24
+ "POST /messages/import": "refuse",
25
+ "POST /messages/send": "refuse",
26
+ "DELETE /messages/{id}": "refuse",
27
+ "GET /messages/{id}": "read",
28
+ "POST /messages/{id}/modify": "refuse",
29
+ "POST /messages/{id}/trash": "refuse",
30
+ "POST /messages/{id}/untrash": "refuse",
31
+ "GET /messages/{messageId}/attachments/{id}": "read",
32
+ "GET /profile": "read",
33
+ "GET /settings/autoForwarding": "refuse",
34
+ "PUT /settings/autoForwarding": "refuse",
35
+ "GET /settings/cse/identities": "refuse",
36
+ "POST /settings/cse/identities": "refuse",
37
+ "DELETE /settings/cse/identities/{cseEmailAddress}": "refuse",
38
+ "GET /settings/cse/identities/{cseEmailAddress}": "refuse",
39
+ "PATCH /settings/cse/identities/{emailAddress}": "refuse",
40
+ "GET /settings/cse/keypairs": "refuse",
41
+ "POST /settings/cse/keypairs": "refuse",
42
+ "GET /settings/cse/keypairs/{keyPairId}": "refuse",
43
+ "POST /settings/cse/keypairs/{keyPairId}:disable": "refuse",
44
+ "POST /settings/cse/keypairs/{keyPairId}:enable": "refuse",
45
+ "POST /settings/cse/keypairs/{keyPairId}:obliterate": "refuse",
46
+ "GET /settings/delegates": "refuse",
47
+ "POST /settings/delegates": "refuse",
48
+ "DELETE /settings/delegates/{delegateEmail}": "refuse",
49
+ "GET /settings/delegates/{delegateEmail}": "refuse",
50
+ "GET /settings/filters": "refuse",
51
+ "POST /settings/filters": "refuse",
52
+ "DELETE /settings/filters/{id}": "refuse",
53
+ "GET /settings/filters/{id}": "refuse",
54
+ "GET /settings/forwardingAddresses": "refuse",
55
+ "POST /settings/forwardingAddresses": "refuse",
56
+ "DELETE /settings/forwardingAddresses/{forwardingEmail}": "refuse",
57
+ "GET /settings/forwardingAddresses/{forwardingEmail}": "refuse",
58
+ "GET /settings/imap": "refuse",
59
+ "PUT /settings/imap": "refuse",
60
+ "GET /settings/language": "refuse",
61
+ "PUT /settings/language": "refuse",
62
+ "GET /settings/pop": "refuse",
63
+ "PUT /settings/pop": "refuse",
64
+ "GET /settings/sendAs": "refuse",
65
+ "POST /settings/sendAs": "refuse",
66
+ "DELETE /settings/sendAs/{sendAsEmail}": "refuse",
67
+ "GET /settings/sendAs/{sendAsEmail}": "refuse",
68
+ "PATCH /settings/sendAs/{sendAsEmail}": "refuse",
69
+ "PUT /settings/sendAs/{sendAsEmail}": "refuse",
70
+ "GET /settings/sendAs/{sendAsEmail}/smimeInfo": "refuse",
71
+ "POST /settings/sendAs/{sendAsEmail}/smimeInfo": "refuse",
72
+ "DELETE /settings/sendAs/{sendAsEmail}/smimeInfo/{id}": "refuse",
73
+ "GET /settings/sendAs/{sendAsEmail}/smimeInfo/{id}": "refuse",
74
+ "POST /settings/sendAs/{sendAsEmail}/smimeInfo/{id}/setDefault": "refuse",
75
+ "POST /settings/sendAs/{sendAsEmail}/verify": "refuse",
76
+ "GET /settings/vacation": "refuse",
77
+ "PUT /settings/vacation": "refuse",
78
+ "POST /stop": "refuse",
79
+ "GET /threads": "read",
80
+ "DELETE /threads/{id}": "refuse",
81
+ "GET /threads/{id}": "read",
82
+ "POST /threads/{id}/modify": "refuse",
83
+ "POST /threads/{id}/trash": "refuse",
84
+ "POST /threads/{id}/untrash": "refuse",
85
+ "POST /watch": "refuse",
86
+ };
87
+ export const named = {
88
+ "GET /threads": "search_threads",
89
+ "GET /threads/{id}": "get_thread",
90
+ "GET /messages/{id}": "get_message",
91
+ "GET /messages/{messageId}/attachments/{id}": "get_attachment",
92
+ "GET /labels": "list_labels",
93
+ "GET /drafts": "list_drafts",
94
+ "GET /drafts/{id}": "get_draft",
95
+ "POST /drafts": "create_draft",
96
+ "PUT /drafts/{id}": "update_draft",
97
+ };
98
+ export const pages = {
99
+ "GET /threads": googlePageToken,
100
+ "GET /messages": googlePageToken,
101
+ "GET /drafts": googlePageToken,
102
+ "GET /history": googlePageToken,
103
+ };
104
+ export const refusalReasons = {
105
+ "POST /drafts": "Draft writes are available only through create_draft, which builds guarded reply MIME.",
106
+ "POST /drafts/send": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
107
+ "DELETE /drafts/{id}": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
108
+ "PUT /drafts/{id}": "Draft writes are available only through update_draft, which preserves headers and refuses attachments.",
109
+ "POST /labels": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
110
+ "DELETE /labels/{id}": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
111
+ "PATCH /labels/{id}": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
112
+ "PUT /labels/{id}": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
113
+ "POST /messages": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
114
+ "POST /messages/batchDelete": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
115
+ "POST /messages/batchModify": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
116
+ "POST /messages/import": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
117
+ "POST /messages/send": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
118
+ "DELETE /messages/{id}": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
119
+ "POST /messages/{id}/modify": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
120
+ "POST /messages/{id}/trash": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
121
+ "POST /messages/{id}/untrash": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
122
+ "GET /settings/autoForwarding": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
123
+ "PUT /settings/autoForwarding": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
124
+ "GET /settings/cse/identities": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
125
+ "POST /settings/cse/identities": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
126
+ "DELETE /settings/cse/identities/{cseEmailAddress}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
127
+ "GET /settings/cse/identities/{cseEmailAddress}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
128
+ "PATCH /settings/cse/identities/{emailAddress}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
129
+ "GET /settings/cse/keypairs": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
130
+ "POST /settings/cse/keypairs": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
131
+ "GET /settings/cse/keypairs/{keyPairId}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
132
+ "POST /settings/cse/keypairs/{keyPairId}:disable": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
133
+ "POST /settings/cse/keypairs/{keyPairId}:enable": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
134
+ "POST /settings/cse/keypairs/{keyPairId}:obliterate": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
135
+ "GET /settings/delegates": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
136
+ "POST /settings/delegates": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
137
+ "DELETE /settings/delegates/{delegateEmail}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
138
+ "GET /settings/delegates/{delegateEmail}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
139
+ "GET /settings/filters": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
140
+ "POST /settings/filters": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
141
+ "DELETE /settings/filters/{id}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
142
+ "GET /settings/filters/{id}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
143
+ "GET /settings/forwardingAddresses": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
144
+ "POST /settings/forwardingAddresses": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
145
+ "DELETE /settings/forwardingAddresses/{forwardingEmail}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
146
+ "GET /settings/forwardingAddresses/{forwardingEmail}": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
147
+ "GET /settings/imap": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
148
+ "PUT /settings/imap": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
149
+ "GET /settings/language": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
150
+ "PUT /settings/language": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
151
+ "GET /settings/pop": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
152
+ "PUT /settings/pop": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
153
+ "GET /settings/sendAs": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
154
+ "POST /settings/sendAs": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
155
+ "DELETE /settings/sendAs/{sendAsEmail}": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
156
+ "GET /settings/sendAs/{sendAsEmail}": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
157
+ "PATCH /settings/sendAs/{sendAsEmail}": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
158
+ "PUT /settings/sendAs/{sendAsEmail}": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
159
+ "GET /settings/sendAs/{sendAsEmail}/smimeInfo": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
160
+ "POST /settings/sendAs/{sendAsEmail}/smimeInfo": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
161
+ "DELETE /settings/sendAs/{sendAsEmail}/smimeInfo/{id}": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
162
+ "GET /settings/sendAs/{sendAsEmail}/smimeInfo/{id}": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
163
+ "POST /settings/sendAs/{sendAsEmail}/smimeInfo/{id}/setDefault": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
164
+ "POST /settings/sendAs/{sendAsEmail}/verify": "Sending is never available; use create_draft or update_draft to save a draft for review in Gmail.",
165
+ "GET /settings/vacation": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
166
+ "PUT /settings/vacation": "Mailbox settings, forwarding, delegation, CSE and S/MIME are outside this draft-only connection; use create_draft or update_draft for drafts.",
167
+ "POST /stop": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
168
+ "DELETE /threads/{id}": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
169
+ "POST /threads/{id}/modify": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
170
+ "POST /threads/{id}/trash": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
171
+ "POST /threads/{id}/untrash": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
172
+ "POST /watch": "This operation is outside the reviewed read allowlist; use create_draft or update_draft for draft writes. Sending is never available.",
173
+ };
@@ -0,0 +1,176 @@
1
+ // Real Effect declarations for Gmail's curated surface. MIME interpretation stays in tools.ts.
2
+ import { Schema } from "effect";
3
+ import { Integer, isMinChars, isMaxChars } from "../../../http/json-schema.js";
4
+ import { StandardPage } from "../../../http/paging.js";
5
+ import { fieldsInput } from "../../../http/fields.js";
6
+ const optional = Schema.optionalKey;
7
+ const pattern = (regex) => Schema.makeFilter((value) => regex.test(value), { toJsonSchema: () => ({ pattern: regex.source }) });
8
+ const string = (description, max, min = 0) => Schema.String.check(isMinChars(min), isMaxChars(max)).annotate({ description });
9
+ const id = (description) => string(description, 256, 1).check(pattern(/^[A-Za-z0-9_-]+$/));
10
+ const cursor = optional(string("Opaque page.nextCursor from the same call. Pass it back unchanged.", 4096, 1));
11
+ const limit = optional(Integer.check(Schema.isBetween({ minimum: 1, maximum: 25 })).annotate({
12
+ default: 10,
13
+ description: "Rows per page, default 10, at most 25. Each summary costs a metadata read.",
14
+ }));
15
+ const query = optional(string("Gmail search syntax: from:, subject:, label:, is:unread, newer_than:7d. Omit for everything.", 2048));
16
+ const bodyChars = (value) => optional(Integer.check(Schema.isBetween({ minimum: 0, maximum: 100000 })).annotate({
17
+ default: value,
18
+ description: "Body characters kept per message; size cuts appear in truncated.",
19
+ }));
20
+ const recipients = (description) => optional(Schema.Array(string("Address or Name <address@example.com>.", 320, 3).check(pattern(/^[^\r\n]*$/)))
21
+ .check(Schema.isMaxLength(100))
22
+ .annotate({ description }));
23
+ const compose = {
24
+ to: recipients("To recipients; replies default to Reply-To, else From."),
25
+ cc: recipients("Cc recipients."),
26
+ bcc: recipients("Bcc recipients."),
27
+ subject: optional(string("Subject; replies default to Re: and the original subject.", 900).check(pattern(/^[^\r\n]*$/))),
28
+ body: string("Full new plain-text body.", 200000),
29
+ htmlBody: optional(string("Optional HTML alternative to the plain-text body.", 500000)),
30
+ replyToMessageId: optional(id("Message to reply to; sets its thread and guarded In-Reply-To/References.")),
31
+ };
32
+ const resultFields = optional(fieldsInput("Dot paths to keep in the result. It only narrows the result."));
33
+ const itemFields = optional(fieldsInput("Dot paths to keep in each item. It only narrows the projection."));
34
+ export const inputs = {
35
+ search_threads: Schema.Struct({
36
+ query,
37
+ includeSpamTrash: optional(Schema.Boolean),
38
+ limit,
39
+ cursor,
40
+ fields: itemFields,
41
+ }),
42
+ get_thread: Schema.Struct({
43
+ threadId: id("Thread id from search_threads or a message."),
44
+ maxBodyChars: bodyChars(3000),
45
+ cursor,
46
+ fields: resultFields,
47
+ }),
48
+ get_message: Schema.Struct({
49
+ messageId: id("Message id from a thread or draft."),
50
+ maxBodyChars: bodyChars(12000),
51
+ fields: resultFields,
52
+ }),
53
+ get_attachment: Schema.Struct({
54
+ fields: resultFields,
55
+ messageId: id("Message carrying the attachment."),
56
+ partId: optional(string("Immutable partId from the attachment listing, including an empty root id. Takes precedence over attachmentId.", 256)),
57
+ attachmentId: optional(string("Alternative rotating attachmentId from a fresh listing; prefer partId.", 2048, 1).check(pattern(/^[A-Za-z0-9_-]+$/))),
58
+ maxChars: optional(Integer.check(Schema.isBetween({ minimum: 1, maximum: 100000 })).annotate({
59
+ default: 12000,
60
+ description: "Text code points kept; ignored for binaries.",
61
+ })),
62
+ maxBytes: optional(Integer.check(Schema.isBetween({ minimum: 65536, maximum: 4194304 })).annotate({
63
+ default: 196608,
64
+ description: "Whole-result byte budget. Raise only for a direct call_tool; execute_code cannot receive large results.",
65
+ })),
66
+ }),
67
+ list_labels: Schema.Struct({ fields: itemFields }),
68
+ list_drafts: Schema.Struct({ query, limit, cursor, fields: itemFields }),
69
+ get_draft: Schema.Struct({
70
+ fields: resultFields,
71
+ draftId: id("Stable draft id from list_drafts or create_draft."),
72
+ maxBodyChars: bodyChars(12000),
73
+ }),
74
+ create_draft: Schema.Struct(compose),
75
+ update_draft: Schema.Struct({
76
+ draftId: id("Draft to replace; attachments and inline images are refused."),
77
+ ...compose,
78
+ }),
79
+ };
80
+ const loose = (fields) => Schema.Struct(Object.fromEntries(Object.entries(fields).map(([key, value]) => [key, optional(value)])));
81
+ const truncated = optional(Schema.Array(Schema.String));
82
+ const Attachment = loose({
83
+ filename: Schema.String,
84
+ mimeType: Schema.String,
85
+ size: Integer,
86
+ attachmentId: Schema.String,
87
+ partId: Schema.String,
88
+ });
89
+ const messageFields = {
90
+ id: Schema.String,
91
+ threadId: Schema.String,
92
+ labelIds: Schema.Array(Schema.String),
93
+ date: Schema.String,
94
+ from: Schema.String,
95
+ to: Schema.String,
96
+ cc: Schema.String,
97
+ bcc: Schema.String,
98
+ replyTo: Schema.String,
99
+ subject: Schema.String,
100
+ messageIdHeader: Schema.String,
101
+ inReplyTo: Schema.String,
102
+ snippet: Schema.String,
103
+ body: Schema.String,
104
+ bodyFormat: Schema.Literals(["text", "html", "none", "unavailable"]),
105
+ bodyNote: Schema.String,
106
+ attachments: Schema.Array(Attachment),
107
+ };
108
+ const Message = loose(messageFields);
109
+ const { id: _id, ...draftFields } = messageFields;
110
+ export const rows = {
111
+ search_threads: loose({
112
+ id: Schema.String,
113
+ subject: Schema.String,
114
+ from: Schema.String,
115
+ lastFrom: Schema.String,
116
+ messageCount: Integer,
117
+ lastMessageAt: Schema.String,
118
+ unread: Schema.Boolean,
119
+ labelIds: Schema.Array(Schema.String),
120
+ snippet: Schema.String,
121
+ }),
122
+ list_labels: loose({ id: Schema.String, name: Schema.String, type: Schema.Literals(["system", "user"]) }),
123
+ list_drafts: loose({
124
+ draftId: Schema.String,
125
+ messageId: Schema.String,
126
+ threadId: Schema.String,
127
+ subject: Schema.String,
128
+ to: Schema.String,
129
+ updatedAt: Schema.String,
130
+ snippet: Schema.String,
131
+ }),
132
+ };
133
+ const listOutput = (row) => Schema.Struct({ items: Schema.Array(row), page: StandardPage, truncated });
134
+ const Saved = Schema.Struct({
135
+ draftId: optional(Schema.String),
136
+ messageId: optional(Schema.String),
137
+ threadId: optional(Schema.String),
138
+ saved: Schema.Literal(true),
139
+ sent: Schema.Literal(false),
140
+ note: optional(Schema.String),
141
+ truncated,
142
+ });
143
+ export const outputs = {
144
+ search_threads: listOutput(rows.search_threads),
145
+ list_labels: Schema.Struct({
146
+ items: Schema.Array(rows.list_labels),
147
+ page: Schema.Struct({ hasMore: Schema.Literal(false) }),
148
+ truncated,
149
+ }),
150
+ list_drafts: listOutput(rows.list_drafts),
151
+ get_thread: loose({
152
+ id: Schema.String,
153
+ messageCount: Integer,
154
+ messages: Schema.Array(Message),
155
+ page: loose({ hasMore: Schema.Boolean, nextCursor: Schema.String }),
156
+ truncated: Schema.Array(Schema.String),
157
+ }),
158
+ get_message: Schema.Struct({ ...Message.fields, truncated }),
159
+ get_draft: Schema.Struct({
160
+ ...loose({ draftId: Schema.String, messageId: Schema.String, ...draftFields }).fields,
161
+ truncated,
162
+ }),
163
+ get_attachment: loose({
164
+ messageId: Schema.String,
165
+ partId: Schema.String,
166
+ filename: Schema.String,
167
+ mimeType: Schema.String,
168
+ size: Integer,
169
+ format: Schema.Literals(["text", "base64", "unavailable"]),
170
+ content: Schema.String,
171
+ note: Schema.String,
172
+ truncated: Schema.Array(Schema.String),
173
+ }),
174
+ create_draft: Saved,
175
+ update_draft: Saved,
176
+ };
@@ -0,0 +1,120 @@
1
+ import { ConnectorCallError } from "../../../errors.js";
2
+ /** RFC 5322 sections 3.6.4/4.5.4, with H8's stricter ASCII/control boundary. */
3
+ export function threadingIds(value, legacyPhrases = false) {
4
+ if (value === undefined)
5
+ return [];
6
+ const fail = () => {
7
+ throw new ConnectorCallError("invalid_args", "The copied Message-ID, In-Reply-To or References header is malformed or withheld. No draft was changed; repair its threading in Gmail.");
8
+ };
9
+ // Unfold before parsing; a bare CR/LF, control, non-ASCII or withheld lane
10
+ // must never become a different, apparently usable threading token.
11
+ const source = value.replace(/\r\n(?=[ \t])/g, "");
12
+ if (value.length > 32768 || !/^[\x20-\x7e\t]*$/.test(source) || source.includes("[redacted]"))
13
+ fail();
14
+ let at = 0;
15
+ const atom = () => {
16
+ const start = at;
17
+ while (at < source.length && /[A-Za-z0-9!#$%&'*+\-/=?^_`{|}~]/.test(source[at]))
18
+ at++;
19
+ if (at === start)
20
+ fail();
21
+ };
22
+ const quoted = (close) => {
23
+ at++;
24
+ while (at < source.length) {
25
+ const character = source[at++];
26
+ if (character === close)
27
+ return;
28
+ if (character === "\\") {
29
+ if (at === source.length)
30
+ fail();
31
+ at++;
32
+ }
33
+ else if (close === "]" && character === "[")
34
+ fail();
35
+ }
36
+ fail();
37
+ };
38
+ const cfws = () => {
39
+ while (at < source.length) {
40
+ if (source[at] === " " || source[at] === "\t")
41
+ at++;
42
+ else if (source[at] === "(") {
43
+ let depth = 1;
44
+ at++;
45
+ while (depth && at < source.length) {
46
+ const character = source[at++];
47
+ if (character === "\\") {
48
+ if (at === source.length)
49
+ fail();
50
+ at++;
51
+ }
52
+ else if (character === "(")
53
+ depth++;
54
+ else if (character === ")")
55
+ depth--;
56
+ }
57
+ if (depth)
58
+ fail();
59
+ }
60
+ else
61
+ return;
62
+ }
63
+ };
64
+ const word = () => {
65
+ if (source[at] === '"')
66
+ quoted('"');
67
+ else
68
+ atom();
69
+ };
70
+ const side = (left) => {
71
+ cfws();
72
+ if (!left && source[at] === "[")
73
+ quoted("]");
74
+ else {
75
+ if (left)
76
+ word();
77
+ else
78
+ atom();
79
+ cfws();
80
+ while (source[at] === ".") {
81
+ at++;
82
+ cfws();
83
+ if (left)
84
+ word();
85
+ else
86
+ atom();
87
+ cfws();
88
+ }
89
+ }
90
+ cfws();
91
+ };
92
+ const ids = [];
93
+ while (at < source.length) {
94
+ cfws();
95
+ if (at === source.length)
96
+ break;
97
+ if (source[at] === "<") {
98
+ const start = at++;
99
+ side(true);
100
+ if (source[at++] !== "@")
101
+ fail();
102
+ side(false);
103
+ if (source[at++] !== ">")
104
+ fail();
105
+ const id = source.slice(start, at);
106
+ if (id.length > 998)
107
+ fail();
108
+ ids.push(id);
109
+ }
110
+ else if (legacyPhrases && (source[at] === "," || source[at] === "."))
111
+ at++;
112
+ else if (legacyPhrases)
113
+ word();
114
+ else
115
+ fail();
116
+ }
117
+ if (!legacyPhrases && ids.length !== 1)
118
+ fail();
119
+ return ids;
120
+ }