@zackbart/connecta 0.34.0 → 0.35.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 (428) hide show
  1. package/CHANGELOG.md +393 -0
  2. package/README.md +62 -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 +2051 -1160
  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 +663 -271
  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 +15 -7
  53. package/dist/connectors/api-connector.js +147 -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/option-shapes.js +1 -1
  58. package/dist/connectors/remote-mcp.d.ts +12 -30
  59. package/dist/connectors/remote-mcp.js +960 -564
  60. package/dist/d1.js +10 -243
  61. package/dist/derived-context.js +5 -0
  62. package/dist/describe-config.d.ts +5 -1
  63. package/dist/describe-config.js +3 -0
  64. package/dist/downstream-input.js +347 -260
  65. package/dist/errors.d.ts +87 -6
  66. package/dist/errors.js +114 -4
  67. package/dist/execute.js +87 -50
  68. package/dist/executor-admission.js +3 -0
  69. package/dist/executors/quickjs.js +163 -112
  70. package/dist/guarded-transport.js +50 -0
  71. package/dist/guest-runtime.js +1 -1
  72. package/dist/http/client.js +439 -0
  73. package/dist/http/errors.js +558 -0
  74. package/dist/http/fields.js +49 -0
  75. package/dist/http/hatch-paging.js +318 -0
  76. package/dist/http/hatch.js +1279 -0
  77. package/dist/http/json-schema.js +267 -0
  78. package/dist/http/node-transport.js +241 -0
  79. package/dist/http/oauth.js +162 -0
  80. package/dist/http/paging.js +228 -0
  81. package/dist/http/provider.js +221 -0
  82. package/dist/http/safety.js +82 -0
  83. package/dist/http/services.js +79 -0
  84. package/dist/http/tools.js +383 -0
  85. package/dist/http/vendor-index.js +138 -0
  86. package/dist/http/vendor.js +448 -0
  87. package/dist/http/write-request.js +66 -0
  88. package/dist/http-policy.d.ts +11 -0
  89. package/dist/http-policy.js +45 -0
  90. package/dist/inbound-credential.js +1 -1
  91. package/dist/index.d.ts +2 -2
  92. package/dist/index.js +4 -0
  93. package/dist/invocation-auth.js +30 -19
  94. package/dist/invocation.js +221 -87
  95. package/dist/mcp-result.js +0 -4
  96. package/dist/membership.d.ts +4 -0
  97. package/dist/meta-output.js +1 -1
  98. package/dist/meta-tools.js +534 -408
  99. package/dist/native-recovery.js +52 -0
  100. package/dist/native-tools.js +382 -0
  101. package/dist/node.d.ts +4 -3
  102. package/dist/node.js +45 -8
  103. package/dist/oauth-handoff.js +177 -104
  104. package/dist/oauth-partition.js +6 -20
  105. package/dist/oauth-sealing.js +6 -7
  106. package/dist/operation-vocabulary.js +101 -0
  107. package/dist/operator-record.d.ts +2 -2
  108. package/dist/operator-record.js +17 -4
  109. package/dist/operator-ui/agents.d.ts +5 -4
  110. package/dist/operator-ui/agents.js +17 -7
  111. package/dist/operator-ui/config-summary.js +8 -4
  112. package/dist/operator-ui/connection-map.js +9 -6
  113. package/dist/operator-ui/contract.d.ts +7 -3
  114. package/dist/operator-ui/endpoints.js +5 -14
  115. package/dist/operator-ui/fix-prompts.d.ts +1 -1
  116. package/dist/operator-ui/fix-prompts.js +0 -8
  117. package/dist/operator-ui/generated.js +3 -3
  118. package/dist/operator-ui/health.js +52 -0
  119. package/dist/operator-ui/model.d.ts +2 -3
  120. package/dist/operator-ui/overview.js +11 -19
  121. package/dist/operator-ui/setup-commands.js +0 -4
  122. package/dist/operator-ui/view.d.ts +5 -29
  123. package/dist/operator-ui/view.js +3 -59
  124. package/dist/program-writes.js +47 -26
  125. package/dist/provider-call-facts.d.ts +115 -0
  126. package/dist/provider-call-facts.js +182 -0
  127. package/dist/provider-call.d.ts +112 -0
  128. package/dist/provider-call.js +271 -0
  129. package/dist/provider.d.ts +71 -32
  130. package/dist/provider.js +134 -40
  131. package/dist/providers/_shared/google/hatch.js +91 -0
  132. package/dist/providers/_shared/google/kit.js +537 -0
  133. package/dist/providers/_shared/google/result-size.js +15 -2
  134. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  135. package/dist/providers/_shared/google/service-account.js +8 -4
  136. package/dist/providers/_shared/google/workspace.d.ts +8 -209
  137. package/dist/providers/_shared/google/workspace.js +7 -426
  138. package/dist/providers/_shared/rest/compact-index.js +86 -0
  139. package/dist/providers/_shared/rest/dispatch.js +3 -23
  140. package/dist/providers/_shared/rest/kit.js +546 -0
  141. package/dist/providers/_shared/rest/operation-index.js +230 -14
  142. package/dist/providers/_shared/rest/response-media.js +11 -0
  143. package/dist/providers/_shared/rest/tools.js +101 -78
  144. package/dist/providers/_shared/rest/value-safety.js +353 -195
  145. package/dist/providers/_shared/sensitive-fields.js +27 -0
  146. package/dist/providers/breeze/api.js +584 -0
  147. package/dist/providers/breeze/index.d.ts +3 -3
  148. package/dist/providers/breeze/index.js +67 -1420
  149. package/dist/providers/breeze/openapi.generated.js +60 -0
  150. package/dist/providers/breeze/skill.generated.js +2 -6
  151. package/dist/providers/breeze/tools.js +696 -0
  152. package/dist/providers/ccb/api.js +496 -0
  153. package/dist/providers/ccb/index.d.ts +17 -37
  154. package/dist/providers/ccb/index.js +77 -1702
  155. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  156. package/dist/providers/ccb/lib/constants.js +74 -0
  157. package/dist/providers/ccb/lib/guide.js +9 -0
  158. package/dist/providers/ccb/lib/verdicts.js +387 -0
  159. package/dist/providers/ccb/openapi.generated.js +397 -0
  160. package/dist/providers/ccb/safety.js +295 -0
  161. package/dist/providers/ccb/skill.generated.js +2 -6
  162. package/dist/providers/ccb/tools.js +853 -0
  163. package/dist/providers/cloudflare/api.js +1066 -0
  164. package/dist/providers/cloudflare/index.d.ts +7 -22
  165. package/dist/providers/cloudflare/index.js +80 -194
  166. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  167. package/dist/providers/cloudflare/lib/config.js +2 -0
  168. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  169. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  170. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  171. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  172. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  173. package/dist/providers/cloudflare/openapi.generated.js +3299 -3208
  174. package/dist/providers/cloudflare/{value-safety.js → safety.js} +538 -18
  175. package/dist/providers/cloudflare/skill.generated.js +2 -10
  176. package/dist/providers/cloudflare/tools.js +360 -0
  177. package/dist/providers/docs/api.js +51 -0
  178. package/dist/providers/docs/index.d.ts +1 -12
  179. package/dist/providers/docs/index.js +53 -1165
  180. package/dist/providers/docs/lib/constants.d.ts +18 -0
  181. package/dist/providers/docs/lib/constants.js +18 -0
  182. package/dist/providers/docs/lib/discovery.js +26 -0
  183. package/dist/providers/docs/lib/requests.js +48 -0
  184. package/dist/providers/docs/lib/schemas.js +168 -0
  185. package/dist/providers/docs/openapi.generated.js +16 -0
  186. package/dist/providers/docs/safety.js +54 -0
  187. package/dist/providers/docs/skill.generated.js +2 -6
  188. package/dist/providers/docs/tools.js +802 -0
  189. package/dist/providers/drive/api.js +177 -0
  190. package/dist/providers/drive/index.d.ts +1 -12
  191. package/dist/providers/drive/index.js +38 -1448
  192. package/dist/providers/drive/lib/constants.d.ts +6 -0
  193. package/dist/providers/drive/lib/constants.js +6 -0
  194. package/dist/providers/drive/lib/contracts.js +532 -0
  195. package/dist/providers/drive/lib/hatch.js +197 -0
  196. package/dist/providers/drive/openapi.generated.js +77 -0
  197. package/dist/providers/drive/safety.js +90 -0
  198. package/dist/providers/drive/skill.generated.js +2 -6
  199. package/dist/providers/drive/tools.js +1290 -0
  200. package/dist/providers/forms/api.js +71 -0
  201. package/dist/providers/forms/index.d.ts +1 -12
  202. package/dist/providers/forms/index.js +49 -1145
  203. package/dist/providers/forms/lib/constants.d.ts +14 -0
  204. package/dist/providers/forms/lib/constants.js +19 -0
  205. package/dist/providers/forms/lib/hatch.js +72 -0
  206. package/dist/providers/forms/openapi.generated.js +23 -0
  207. package/dist/providers/forms/safety.js +34 -0
  208. package/dist/providers/forms/skill.generated.js +2 -8
  209. package/dist/providers/forms/tools.js +1024 -0
  210. package/dist/providers/github/api.js +150 -0
  211. package/dist/providers/github/index.d.ts +4 -5
  212. package/dist/providers/github/index.js +30 -87
  213. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  214. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  215. package/dist/providers/github/lib/discovery.js +132 -0
  216. package/dist/providers/github/lib/operations.js +58 -0
  217. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  218. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  219. package/dist/providers/github/openapi.generated.js +1216 -0
  220. package/dist/providers/github/safety.js +216 -0
  221. package/dist/providers/github/skill.generated.js +2 -5
  222. package/dist/providers/github/tools.js +506 -0
  223. package/dist/providers/gmail/api.js +114 -0
  224. package/dist/providers/gmail/index.d.ts +1 -12
  225. package/dist/providers/gmail/index.js +73 -1621
  226. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  227. package/dist/providers/gmail/lib/constants.js +16 -0
  228. package/dist/providers/gmail/lib/index.js +173 -0
  229. package/dist/providers/gmail/lib/schemas.js +176 -0
  230. package/dist/providers/gmail/lib/threading.js +120 -0
  231. package/dist/providers/gmail/openapi.generated.js +92 -0
  232. package/dist/providers/gmail/safety.js +21 -0
  233. package/dist/providers/gmail/skill.generated.js +2 -6
  234. package/dist/providers/gmail/tools.js +1435 -0
  235. package/dist/providers/overflow/api.js +1008 -0
  236. package/dist/providers/overflow/index.d.ts +3 -17
  237. package/dist/providers/overflow/index.js +60 -1488
  238. package/dist/providers/overflow/skill.generated.js +2 -5
  239. package/dist/providers/overflow/tools.js +873 -0
  240. package/dist/providers/planning-center/api.js +467 -0
  241. package/dist/providers/planning-center/index.d.ts +6 -35
  242. package/dist/providers/planning-center/index.js +69 -2445
  243. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  244. package/dist/providers/planning-center/lib/constants.js +83 -0
  245. package/dist/providers/planning-center/lib/discovery.js +40 -0
  246. package/dist/providers/planning-center/lib/guide.js +39 -0
  247. package/dist/providers/planning-center/lib/json-api.js +83 -0
  248. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  249. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  250. package/dist/providers/planning-center/safety.js +188 -0
  251. package/dist/providers/planning-center/skill.generated.js +2 -27
  252. package/dist/providers/planning-center/tools.js +1010 -0
  253. package/dist/providers/sheets/api.js +133 -0
  254. package/dist/providers/sheets/index.d.ts +4 -16
  255. package/dist/providers/sheets/index.js +61 -1172
  256. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  257. package/dist/providers/sheets/lib/constants.js +14 -0
  258. package/dist/providers/sheets/lib/hatch.js +163 -0
  259. package/dist/providers/sheets/lib/requests.js +105 -0
  260. package/dist/providers/sheets/lib/schemas.js +138 -0
  261. package/dist/providers/sheets/openapi.generated.js +30 -0
  262. package/dist/providers/sheets/safety.js +27 -0
  263. package/dist/providers/sheets/skill.generated.js +2 -7
  264. package/dist/providers/sheets/tools.js +734 -0
  265. package/dist/providers/slides/api.js +147 -0
  266. package/dist/providers/slides/index.d.ts +2 -10
  267. package/dist/providers/slides/index.js +48 -2555
  268. package/dist/providers/slides/lib/constants.d.ts +11 -0
  269. package/dist/providers/slides/lib/constants.js +11 -0
  270. package/dist/providers/slides/lib/requests.js +60 -0
  271. package/dist/providers/slides/lib/schemas.js +565 -0
  272. package/dist/providers/slides/openapi.generated.js +18 -0
  273. package/dist/providers/slides/skill.generated.js +2 -6
  274. package/dist/providers/slides/tools.js +1968 -0
  275. package/dist/providers/stripe/api.js +401 -0
  276. package/dist/providers/stripe/index.d.ts +7 -27
  277. package/dist/providers/stripe/index.js +75 -191
  278. package/dist/providers/stripe/lib/config.d.ts +4 -0
  279. package/dist/providers/stripe/lib/config.js +2 -0
  280. package/dist/providers/stripe/openapi.generated.js +4 -3
  281. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  282. package/dist/providers/stripe/skill.generated.js +2 -10
  283. package/dist/providers/stripe/tools.js +77 -0
  284. package/dist/providers/tithely/api.js +531 -0
  285. package/dist/providers/tithely/index.d.ts +19 -0
  286. package/dist/providers/tithely/index.js +86 -965
  287. package/dist/providers/tithely/skill.generated.js +2 -5
  288. package/dist/providers/tithely/tools.js +426 -0
  289. package/dist/providers/vercel/api.js +551 -0
  290. package/dist/providers/vercel/index.d.ts +11 -25
  291. package/dist/providers/vercel/index.js +67 -261
  292. package/dist/providers/vercel/lib/config.d.ts +2 -0
  293. package/dist/providers/vercel/lib/config.js +2 -0
  294. package/dist/providers/vercel/lib/index.js +117 -0
  295. package/dist/providers/vercel/lib/logs.js +100 -0
  296. package/dist/providers/vercel/lib/pin.js +270 -0
  297. package/dist/providers/vercel/openapi.generated.js +398 -376
  298. package/dist/providers/vercel/{value-safety.js → safety.js} +261 -42
  299. package/dist/providers/vercel/skill.generated.js +2 -7
  300. package/dist/providers/vercel/tools.js +642 -0
  301. package/dist/redaction-identity.js +47 -0
  302. package/dist/redaction-marker.js +125 -0
  303. package/dist/registry.d.ts +30 -28
  304. package/dist/registry.js +446 -413
  305. package/dist/routes/access-tokens.js +1 -1
  306. package/dist/routes/actor-labels.js +1 -1
  307. package/dist/routes/connect.js +1 -1
  308. package/dist/routes/dispatch.js +103 -0
  309. package/dist/routes/mcp.js +170 -79
  310. package/dist/routes/oauth.js +3 -1
  311. package/dist/routes/operator.js +2 -2
  312. package/dist/routes/shared.d.ts +5 -4
  313. package/dist/routes/shared.js +244 -177
  314. package/dist/routes/skills.js +10 -8
  315. package/dist/routes/ui-config.js +27 -3
  316. package/dist/routes/ui-data.js +29 -22
  317. package/dist/routes/ui.js +1 -1
  318. package/dist/runtime/call-admission.js +0 -26
  319. package/dist/runtime/call-entry.js +30 -0
  320. package/dist/runtime/call.js +556 -0
  321. package/dist/runtime/connector-scope.js +7 -0
  322. package/dist/runtime/credential-probe.js +34 -0
  323. package/dist/runtime/executor.js +40 -0
  324. package/dist/runtime/native-storage.js +63 -0
  325. package/dist/runtime/registry.js +27 -0
  326. package/dist/runtime/request-scope.js +72 -0
  327. package/dist/runtime/run.js +15 -7
  328. package/dist/runtime/shared-read.js +34 -5
  329. package/dist/runtime/storage.js +34 -21
  330. package/dist/sent-secrets.d.ts +194 -37
  331. package/dist/sent-secrets.js +1743 -340
  332. package/dist/server.js +5 -56
  333. package/dist/skills.js +330 -224
  334. package/dist/sqlite.js +15 -14
  335. package/dist/storage/d1-copy.js +255 -0
  336. package/dist/storage/d1-driver.js +15 -0
  337. package/dist/storage/keys.js +28 -0
  338. package/dist/storage/sql-driver.js +88 -0
  339. package/dist/storage/sql-native.js +544 -0
  340. package/dist/storage/sql-schema.d.ts +6 -0
  341. package/dist/storage/sql-schema.js +15 -0
  342. package/dist/storage/sql.d.ts +14 -20
  343. package/dist/storage/sql.js +29 -535
  344. package/dist/timeout.js +0 -26
  345. package/dist/tool-safety.js +20 -10
  346. package/dist/types.d.ts +11 -99
  347. package/dist/upward.js +3 -0
  348. package/dist/usage-guide.js +3 -1
  349. package/dist/validate.d.ts +4 -2
  350. package/dist/validate.js +86 -9
  351. package/dist/version.d.ts +1 -1
  352. package/dist/version.js +1 -1
  353. package/dist/worker.js +312 -292
  354. package/dist/workspace-subject.js +5 -1
  355. package/dist/write-outcome.js +454 -34
  356. package/documentation/README.md +27 -7
  357. package/documentation/architecture.md +2550 -186
  358. package/documentation/auth.md +821 -98
  359. package/documentation/code-mode.md +56 -21
  360. package/documentation/deploying.md +164 -20
  361. package/documentation/hosted-mcp-migration.md +460 -0
  362. package/documentation/integrating.md +144 -105
  363. package/documentation/meta-tools.md +411 -34
  364. package/documentation/operating.md +28 -4
  365. package/documentation/operator-tests.md +11 -2
  366. package/documentation/operator-ui.md +103 -33
  367. package/documentation/provider-auth-migration.md +38 -63
  368. package/documentation/provider-migration-0.29.md +10 -5
  369. package/documentation/provider-migration-0.35.md +975 -0
  370. package/documentation/providers.md +965 -0
  371. package/examples/worker/AGENTS.md +23 -9
  372. package/examples/worker/README.md +254 -135
  373. package/examples/worker/alchemy.run.ts +116 -0
  374. package/examples/worker/gitignore +10 -0
  375. package/examples/worker/src/connecta.config.ts +23 -21
  376. package/examples/worker/wrangler.jsonc +14 -5
  377. package/guides/connecting-agents.md +157 -0
  378. package/guides/how-it-works.md +156 -0
  379. package/guides/safety-and-trust.md +153 -0
  380. package/package.json +27 -42
  381. package/templates/node/.env.example +3 -0
  382. package/templates/node/README.md +22 -2
  383. package/templates/node/docker-compose.yml +1 -0
  384. package/templates/node/package.json +3 -2
  385. package/templates/node/src/connecta.config.ts +8 -0
  386. package/dist/catalog-drift.d.ts +0 -134
  387. package/dist/catalog-drift.js +0 -493
  388. package/dist/providers/_shared/request-token.js +0 -83
  389. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  390. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  391. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  392. package/dist/providers/basecamp/index.d.ts +0 -43
  393. package/dist/providers/basecamp/index.js +0 -997
  394. package/dist/providers/basecamp/skill.generated.js +0 -9
  395. package/dist/providers/cloudflare/rest.d.ts +0 -37
  396. package/dist/providers/cloudflare/rest.js +0 -1078
  397. package/dist/providers/github/hosted.js +0 -218
  398. package/dist/providers/github/rest.js +0 -321
  399. package/dist/providers/infisical/index.d.ts +0 -7
  400. package/dist/providers/infisical/index.js +0 -713
  401. package/dist/providers/infisical/skill.generated.js +0 -8
  402. package/dist/providers/linear/index.d.ts +0 -55
  403. package/dist/providers/linear/index.js +0 -352
  404. package/dist/providers/linear/skill.generated.js +0 -8
  405. package/dist/providers/mixpanel/index.d.ts +0 -57
  406. package/dist/providers/mixpanel/index.js +0 -468
  407. package/dist/providers/mixpanel/operations.js +0 -20
  408. package/dist/providers/mixpanel/rest.js +0 -603
  409. package/dist/providers/mixpanel/skill.generated.js +0 -10
  410. package/dist/providers/mixpanel/value-safety.js +0 -16
  411. package/dist/providers/notion/index.d.ts +0 -65
  412. package/dist/providers/notion/index.js +0 -368
  413. package/dist/providers/notion/openapi.generated.js +0 -75
  414. package/dist/providers/notion/rest.d.ts +0 -24
  415. package/dist/providers/notion/rest.js +0 -1226
  416. package/dist/providers/notion/skill.generated.js +0 -11
  417. package/dist/providers/notion/value-safety.js +0 -56
  418. package/dist/providers/revenuecat/index.d.ts +0 -49
  419. package/dist/providers/revenuecat/index.js +0 -557
  420. package/dist/providers/revenuecat/skill.generated.js +0 -11
  421. package/dist/providers/stripe/rest.d.ts +0 -14
  422. package/dist/providers/stripe/rest.js +0 -402
  423. package/dist/providers/vercel/rest.d.ts +0 -20
  424. package/dist/providers/vercel/rest.js +0 -1020
  425. package/dist/providers/wispr-flow/index.d.ts +0 -14
  426. package/dist/providers/wispr-flow/index.js +0 -117
  427. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  428. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -0,0 +1,11 @@
1
+ /** The Slides API root. Every path beneath it names a presentation by id. */
2
+ export declare const SLIDES_API_BASE_URL = "https://slides.googleapis.com/v1";
3
+ /**
4
+ * Exactly the scope this connection requests, and exactly what the Admin
5
+ * console's domain-wide delegation entry must list for it. `presentations`
6
+ * reads and writes every deck the user can open; Slides offers nothing
7
+ * narrower that can also write.
8
+ */
9
+ export declare const SLIDES_SCOPES: readonly ["https://www.googleapis.com/auth/presentations"];
10
+ /** A bounded whole presentation, including structural hatch reads. */
11
+ export declare const SLIDES_MAX_RESPONSE_BYTES: number;
@@ -0,0 +1,11 @@
1
+ /** The Slides API root. Every path beneath it names a presentation by id. */
2
+ export const SLIDES_API_BASE_URL = "https://slides.googleapis.com/v1";
3
+ /**
4
+ * Exactly the scope this connection requests, and exactly what the Admin
5
+ * console's domain-wide delegation entry must list for it. `presentations`
6
+ * reads and writes every deck the user can open; Slides offers nothing
7
+ * narrower that can also write.
8
+ */
9
+ export const SLIDES_SCOPES = ["https://www.googleapis.com/auth/presentations"];
10
+ /** A bounded whole presentation, including structural hatch reads. */
11
+ export const SLIDES_MAX_RESPONSE_BYTES = 16 * 1024 * 1024;
@@ -0,0 +1,60 @@
1
+ // Reviewed Request kinds from the archived Slides Discovery pin. No additional preview methods.
2
+ export const REQUEST_KINDS = [
3
+ "addCommentReply",
4
+ "createImage",
5
+ "createLine",
6
+ "createParagraphBullets",
7
+ "createShape",
8
+ "createSheetsChart",
9
+ "createSlide",
10
+ "createTable",
11
+ "createVideo",
12
+ "deleteComment",
13
+ "deleteCommentReply",
14
+ "deleteObject",
15
+ "deleteParagraphBullets",
16
+ "deleteTableColumn",
17
+ "deleteTableRow",
18
+ "deleteText",
19
+ "duplicateObject",
20
+ "groupObjects",
21
+ "insertComment",
22
+ "insertTableColumns",
23
+ "insertTableRows",
24
+ "insertText",
25
+ "mergeTableCells",
26
+ "refreshSheetsChart",
27
+ "replaceAllShapesWithImage",
28
+ "replaceAllShapesWithSheetsChart",
29
+ "replaceAllText",
30
+ "replaceImage",
31
+ "rerouteLine",
32
+ "ungroupObjects",
33
+ "unmergeTableCells",
34
+ "updateCommentPost",
35
+ "updateImageProperties",
36
+ "updateLineCategory",
37
+ "updateLineProperties",
38
+ "updatePageElementAltText",
39
+ "updatePageElementTransform",
40
+ "updatePageElementsZOrder",
41
+ "updatePageProperties",
42
+ "updateParagraphStyle",
43
+ "updateShapeProperties",
44
+ "updateSlideProperties",
45
+ "updateSlidesPosition",
46
+ "updateTableBorderProperties",
47
+ "updateTableCellProperties",
48
+ "updateTableColumnProperties",
49
+ "updateTableRowProperties",
50
+ "updateTextStyle",
51
+ "updateVideoProperties",
52
+ ];
53
+ export const COMMENT_KINDS = new Set([
54
+ "addCommentReply",
55
+ "deleteComment",
56
+ "deleteCommentReply",
57
+ "insertComment",
58
+ "updateCommentPost",
59
+ ]);
60
+ export const COMMENTS_UNSAVED = "Slides accepted the write but did not report its comment changes saved (commentUpdateState), so it was not all or none: other changes may have applied. Do not repeat it; re-read with list_comments to see what saved.";
@@ -0,0 +1,565 @@
1
+ // Google Slides named input/output contracts. Effect schemas own decoding and catalog rendering.
2
+ import { Schema } from "effect";
3
+ import { Integer, isMinChars, isMaxChars } from "../../../http/json-schema.js";
4
+ const matchesPattern = (pattern) => Schema.makeFilter((value) => pattern.test(value), {
5
+ expected: `a string matching ${pattern.source}`,
6
+ toJsonSchema: () => ({ pattern: pattern.source }),
7
+ });
8
+ export const get_presentation = {
9
+ input: Schema.Struct({
10
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
11
+ "limit": Schema.optionalKey(Integer.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(100)).annotate({
12
+ "default": 20,
13
+ "description": "Slides per page, 1 to 100; defaults to 20. A page also ends before ~192 KB.",
14
+ })),
15
+ "cursor": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(4096), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({
16
+ "description": "Opaque page.nextCursor, or a textCursor-style cursor, this connection returned. Pass it back unchanged.",
17
+ })),
18
+ "maxCharsPerSlide": Schema.optionalKey(Integer.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(50000)).annotate({
19
+ "description": "Text kept per slide (notes apart), 0 to 50000; defaults to 4000. A cut gives a get_page cursor for the rest.",
20
+ })),
21
+ }),
22
+ output: Schema.Struct({
23
+ "presentationId": Schema.optionalKey(Schema.String),
24
+ "title": Schema.optionalKey(Schema.String),
25
+ "revisionId": Schema.optionalKey(Schema.String),
26
+ "url": Schema.optionalKey(Schema.String),
27
+ "locale": Schema.optionalKey(Schema.String),
28
+ "canvasSize": Schema.optionalKey(Schema.Struct({
29
+ "width": Schema.optionalKey(Schema.Struct({ "magnitude": Schema.optionalKey(Schema.Finite), "unit": Schema.optionalKey(Schema.String) })),
30
+ "height": Schema.optionalKey(Schema.Struct({ "magnitude": Schema.optionalKey(Schema.Finite), "unit": Schema.optionalKey(Schema.String) })),
31
+ })),
32
+ "slideCount": Schema.optionalKey(Integer),
33
+ "notesMasterId": Schema.optionalKey(Schema.String),
34
+ "layouts": Schema.optionalKey(Schema.Array(Schema.Struct({
35
+ "objectId": Schema.optionalKey(Schema.String),
36
+ "kind": Schema.optionalKey(Schema.Literals(["master", "layout"])),
37
+ "name": Schema.optionalKey(Schema.String),
38
+ "displayName": Schema.optionalKey(Schema.String),
39
+ "masterId": Schema.optionalKey(Schema.String),
40
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
41
+ }))),
42
+ "layoutsCursor": Schema.optionalKey(Schema.String),
43
+ "slides": Schema.optionalKey(Schema.Array(Schema.Struct({
44
+ "objectId": Schema.optionalKey(Schema.String),
45
+ "index": Schema.optionalKey(Integer),
46
+ "layout": Schema.optionalKey(Schema.String),
47
+ "layoutId": Schema.optionalKey(Schema.String),
48
+ "skipped": Schema.optionalKey(Schema.Boolean),
49
+ "title": Schema.optionalKey(Schema.String),
50
+ "elements": Schema.optionalKey(Schema.Array(Schema.Struct({
51
+ "objectId": Schema.optionalKey(Schema.String),
52
+ "kind": Schema.optionalKey(Schema.Literals(["shape", "table", "wordArt", "image", "video", "chart", "line", "other"])),
53
+ "placeholder": Schema.optionalKey(Schema.String),
54
+ "text": Schema.optionalKey(Schema.String),
55
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
56
+ "textCursor": Schema.optionalKey(Schema.String),
57
+ "altText": Schema.optionalKey(Schema.String),
58
+ "spreadsheetId": Schema.optionalKey(Schema.String),
59
+ }))),
60
+ "omittedElements": Schema.optionalKey(Integer),
61
+ "elementsCursor": Schema.optionalKey(Schema.String),
62
+ "notesPageId": Schema.optionalKey(Schema.String),
63
+ "notes": Schema.optionalKey(Schema.String),
64
+ "notesCursor": Schema.optionalKey(Schema.String),
65
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
66
+ }))),
67
+ "page": Schema.optionalKey(Schema.Struct({ "hasMore": Schema.optionalKey(Schema.Boolean), "nextCursor": Schema.optionalKey(Schema.String) })),
68
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
69
+ }),
70
+ };
71
+ export const get_page = {
72
+ input: Schema.Struct({
73
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
74
+ "pageObjectId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_][A-Za-z0-9_:-]*$"))).annotate({ "description": "A slide's, layout's, master's, or notes page's objectId." }),
75
+ "limit": Schema.optionalKey(Integer.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(500)).annotate({
76
+ "default": 50,
77
+ "description": "Elements per page, 1 to 500; defaults to 50. A page also ends before ~192 KB.",
78
+ })),
79
+ "cursor": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(4096), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({
80
+ "description": "Opaque page.nextCursor, or a textCursor-style cursor, this connection returned. Pass it back unchanged.",
81
+ })),
82
+ }),
83
+ output: Schema.Struct({
84
+ "presentationId": Schema.optionalKey(Schema.String),
85
+ "pageObjectId": Schema.optionalKey(Schema.String),
86
+ "revisionId": Schema.optionalKey(Schema.String),
87
+ "pageType": Schema.optionalKey(Schema.String),
88
+ "layoutId": Schema.optionalKey(Schema.String),
89
+ "masterId": Schema.optionalKey(Schema.String),
90
+ "notesPageId": Schema.optionalKey(Schema.String),
91
+ "skipped": Schema.optionalKey(Schema.Boolean),
92
+ "speakerNotesObjectId": Schema.optionalKey(Schema.String),
93
+ "name": Schema.optionalKey(Schema.String),
94
+ "displayName": Schema.optionalKey(Schema.String),
95
+ "elementCount": Schema.optionalKey(Integer),
96
+ "properties": Schema.optionalKey(Schema.Record(Schema.String, Schema.Unknown)),
97
+ "elements": Schema.optionalKey(Schema.Array(Schema.Struct({
98
+ "objectId": Schema.optionalKey(Schema.String),
99
+ "kind": Schema.optionalKey(Schema.Literals(["shape", "table", "wordArt", "image", "video", "chart", "line", "other"])),
100
+ "groupId": Schema.optionalKey(Schema.String),
101
+ "placeholder": Schema.optionalKey(Schema.String),
102
+ "placeholderIndex": Schema.optionalKey(Integer),
103
+ "placeholderParentId": Schema.optionalKey(Schema.String),
104
+ "text": Schema.optionalKey(Schema.String),
105
+ "textOffset": Schema.optionalKey(Integer),
106
+ "textLength": Schema.optionalKey(Integer),
107
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
108
+ "altText": Schema.optionalKey(Schema.String),
109
+ "spreadsheetId": Schema.optionalKey(Schema.String),
110
+ }))),
111
+ "page": Schema.optionalKey(Schema.Struct({ "hasMore": Schema.optionalKey(Schema.Boolean), "nextCursor": Schema.optionalKey(Schema.String) })),
112
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
113
+ }),
114
+ };
115
+ export const list_layouts = {
116
+ input: Schema.Struct({
117
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
118
+ "limit": Schema.optionalKey(Integer.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(500)).annotate({
119
+ "default": 100,
120
+ "description": "Masters and layouts per page, 1 to 500; defaults to 100. A page also ends before ~192 KB.",
121
+ })),
122
+ "cursor": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(4096), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({
123
+ "description": "Opaque page.nextCursor, or a textCursor-style cursor, this connection returned. Pass it back unchanged.",
124
+ })),
125
+ }),
126
+ output: Schema.Struct({
127
+ "presentationId": Schema.String,
128
+ "revisionId": Schema.optionalKey(Schema.String),
129
+ "notesMasterId": Schema.optionalKey(Schema.String),
130
+ "page": Schema.Struct({
131
+ "hasMore": Schema.Boolean,
132
+ "nextCursor": Schema.optionalKey(Schema.String),
133
+ "total": Schema.optionalKey(Integer),
134
+ }),
135
+ "items": Schema.Array(Schema.Struct({
136
+ "objectId": Schema.optionalKey(Schema.String),
137
+ "kind": Schema.optionalKey(Schema.Literals(["master", "layout"])),
138
+ "name": Schema.optionalKey(Schema.String),
139
+ "displayName": Schema.optionalKey(Schema.String),
140
+ "masterId": Schema.optionalKey(Schema.String),
141
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
142
+ })),
143
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
144
+ }),
145
+ };
146
+ export const list_comments = {
147
+ input: Schema.Struct({
148
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
149
+ "pageObjectId": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_][A-Za-z0-9_:-]*$"))).annotate({ "description": "Only this slide's or notes page's threads; omit for the whole deck." })),
150
+ "limit": Schema.optionalKey(Integer.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(500)).annotate({
151
+ "default": 50,
152
+ "description": "Threads per page, 1 to 500; defaults to 50. A page also ends before ~192 KB.",
153
+ })),
154
+ "cursor": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(4096), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({
155
+ "description": "Opaque page.nextCursor, or a textCursor-style cursor, this connection returned. Pass it back unchanged.",
156
+ })),
157
+ }),
158
+ output: Schema.Struct({
159
+ "presentationId": Schema.String,
160
+ "pageObjectId": Schema.optionalKey(Schema.String),
161
+ "revisionId": Schema.optionalKey(Schema.String),
162
+ "page": Schema.Struct({
163
+ "hasMore": Schema.Boolean,
164
+ "nextCursor": Schema.optionalKey(Schema.String),
165
+ "total": Schema.optionalKey(Integer),
166
+ }),
167
+ "items": Schema.Array(Schema.Struct({
168
+ "commentId": Schema.optionalKey(Schema.String),
169
+ "anchorId": Schema.optionalKey(Schema.String),
170
+ "status": Schema.optionalKey(Schema.String),
171
+ "pageObjectIds": Schema.optionalKey(Schema.Array(Schema.String)),
172
+ "objectIds": Schema.optionalKey(Schema.Array(Schema.String)),
173
+ "replyCount": Schema.optionalKey(Integer),
174
+ "quote": Schema.optionalKey(Schema.String),
175
+ "quoteOffset": Schema.optionalKey(Integer),
176
+ "quoteLength": Schema.optionalKey(Integer),
177
+ "headPost": Schema.optionalKey(Schema.Struct({
178
+ "postId": Schema.optionalKey(Schema.String),
179
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
180
+ "author": Schema.optionalKey(Schema.Struct({
181
+ "user": Schema.optionalKey(Schema.String),
182
+ "displayName": Schema.optionalKey(Schema.String),
183
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
184
+ "me": Schema.optionalKey(Schema.Boolean),
185
+ "anonymous": Schema.optionalKey(Schema.Boolean),
186
+ })),
187
+ "content": Schema.optionalKey(Schema.String),
188
+ "contentOffset": Schema.optionalKey(Integer),
189
+ "contentLength": Schema.optionalKey(Integer),
190
+ "commentAction": Schema.optionalKey(Schema.String),
191
+ "assigneeEmail": Schema.optionalKey(Schema.String),
192
+ "createTime": Schema.optionalKey(Schema.String),
193
+ "updateTime": Schema.optionalKey(Schema.String),
194
+ "deleted": Schema.optionalKey(Schema.Boolean),
195
+ "imported": Schema.optionalKey(Schema.Boolean),
196
+ })),
197
+ "replies": Schema.optionalKey(Schema.Array(Schema.Struct({
198
+ "postId": Schema.optionalKey(Schema.String),
199
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
200
+ "author": Schema.optionalKey(Schema.Struct({
201
+ "user": Schema.optionalKey(Schema.String),
202
+ "displayName": Schema.optionalKey(Schema.String),
203
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
204
+ "me": Schema.optionalKey(Schema.Boolean),
205
+ "anonymous": Schema.optionalKey(Schema.Boolean),
206
+ })),
207
+ "content": Schema.optionalKey(Schema.String),
208
+ "contentOffset": Schema.optionalKey(Integer),
209
+ "contentLength": Schema.optionalKey(Integer),
210
+ "commentAction": Schema.optionalKey(Schema.String),
211
+ "assigneeEmail": Schema.optionalKey(Schema.String),
212
+ "createTime": Schema.optionalKey(Schema.String),
213
+ "updateTime": Schema.optionalKey(Schema.String),
214
+ "deleted": Schema.optionalKey(Schema.Boolean),
215
+ "imported": Schema.optionalKey(Schema.Boolean),
216
+ }))),
217
+ "repliesOffset": Schema.optionalKey(Integer),
218
+ "continued": Schema.optionalKey(Schema.Boolean),
219
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
220
+ "idsNotShown": Schema.optionalKey(Schema.Boolean),
221
+ })),
222
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
223
+ }),
224
+ };
225
+ export const get_slide_thumbnail = {
226
+ input: Schema.Struct({
227
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
228
+ "slideObjectId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_][A-Za-z0-9_:-]*$"))).annotate({ "description": "Slide objectId from get_presentation." }),
229
+ "size": Schema.optionalKey(Schema.Literals(["SMALL", "MEDIUM", "LARGE", "WIDTH2000_PX"]).annotate({
230
+ "description": "Width: SMALL 200px, MEDIUM 800px, LARGE 1600px, WIDTH2000_PX 2000px; Slides chooses when omitted.",
231
+ })),
232
+ }),
233
+ output: Schema.Struct({
234
+ "contentUrl": Schema.optionalKey(Schema.String),
235
+ "width": Schema.optionalKey(Integer),
236
+ "height": Schema.optionalKey(Integer),
237
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
238
+ }),
239
+ };
240
+ export const create_presentation = {
241
+ input: Schema.Struct({
242
+ "title": Schema.String.check(isMinChars(1), isMaxChars(1000), matchesPattern(new RegExp("^[^\\r\\n]*$"))).annotate({
243
+ "description": "The deck's title, as Drive shows it.",
244
+ }),
245
+ }),
246
+ output: Schema.Struct({
247
+ "presentationId": Schema.String,
248
+ "revisionId": Schema.optionalKey(Schema.String),
249
+ "title": Schema.optionalKey(Schema.String),
250
+ "url": Schema.optionalKey(Schema.String),
251
+ "slideObjectIds": Schema.optionalKey(Schema.Array(Schema.String)),
252
+ "slideObjectIdsNotShown": Schema.optionalKey(Integer),
253
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
254
+ }),
255
+ };
256
+ export const create_slide = {
257
+ input: Schema.Struct({
258
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
259
+ "layout": Schema.optionalKey(Schema.Literals([
260
+ "BLANK",
261
+ "CAPTION_ONLY",
262
+ "TITLE",
263
+ "TITLE_AND_BODY",
264
+ "TITLE_AND_TWO_COLUMNS",
265
+ "TITLE_ONLY",
266
+ "SECTION_HEADER",
267
+ "SECTION_TITLE_AND_DESCRIPTION",
268
+ "ONE_COLUMN_TEXT",
269
+ "MAIN_POINT",
270
+ "BIG_NUMBER",
271
+ ]).annotate({
272
+ "description": "Predefined layout; the deck's theme must have it. Omit both layout and layoutId for BLANK.",
273
+ })),
274
+ "layoutId": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_][A-Za-z0-9_:-]*$"))).annotate({ "description": "A layouts[].objectId from get_presentation, instead of layout." })),
275
+ "insertionIndex": Schema.optionalKey(Integer.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(100000)).annotate({
276
+ "description": "0-based position, as get_presentation numbers slides; omit to append.",
277
+ })),
278
+ }),
279
+ output: Schema.Struct({
280
+ "presentationId": Schema.String,
281
+ "revisionId": Schema.optionalKey(Schema.String),
282
+ "slideObjectId": Schema.String,
283
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
284
+ }),
285
+ };
286
+ export const replace_all_text = {
287
+ input: Schema.Struct({
288
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
289
+ "replacements": Schema.Array(Schema.Struct({
290
+ "find": Schema.String.check(isMinChars(1), isMaxChars(1000)).annotate({
291
+ "description": "Literal text to find.",
292
+ }),
293
+ "replace": Schema.String.check(isMaxChars(10000)).annotate({
294
+ "description": "Replacement; empty deletes the match.",
295
+ }),
296
+ "matchCase": Schema.optionalKey(Schema.Boolean.annotate({ "description": "Case-sensitive; defaults to true." })),
297
+ }).annotate({ "description": "One find-and-replace." }))
298
+ .check(Schema.isMinLength(1), Schema.isMaxLength(50))
299
+ .annotate({ "description": "Applied in order, 1 to 50 (connecta's bound)." }),
300
+ "slideObjectIds": Schema.optionalKey(Schema.Array(Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_][A-Za-z0-9_:-]*$"))).annotate({ "description": "A slide objectId." }))
301
+ .check(Schema.isMinLength(1), Schema.isMaxLength(500))
302
+ .annotate({ "description": "Limit to these slides; omit for every slide." })),
303
+ "requiredRevisionId": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(512), matchesPattern(new RegExp("^[^\\s]+$"))).annotate({
304
+ "description": "revisionId from get_presentation; the write is refused, unapplied, if the deck changed since.",
305
+ })),
306
+ }),
307
+ output: Schema.Struct({
308
+ "presentationId": Schema.String,
309
+ "revisionId": Schema.optionalKey(Schema.String),
310
+ "occurrencesChanged": Integer,
311
+ "replacements": Schema.Array(Schema.Struct({ "find": Schema.optionalKey(Schema.String), "occurrencesChanged": Schema.optionalKey(Integer) })),
312
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
313
+ }),
314
+ };
315
+ export const create_comment = {
316
+ input: Schema.Struct({
317
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
318
+ "objectId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_][A-Za-z0-9_:-]*$"))).annotate({ "description": "The page or element to comment on: the shape or table, for text or a cell." }),
319
+ "content": Schema.String.check(isMinChars(1), isMaxChars(2048)).annotate({
320
+ "description": "Plain text; Slides' cap is 2048 UTF-8 bytes.",
321
+ }),
322
+ "textRange": Schema.optionalKey(Schema.Struct({
323
+ "startIndex": Integer.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(10000000)).annotate({
324
+ "description": "First character.",
325
+ }),
326
+ "endIndex": Integer.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(10000000)).annotate({
327
+ "description": "One past the last.",
328
+ }),
329
+ }).annotate({ "description": "Anchor to this text of the shape, or of the cell: 0-based, end exclusive." })),
330
+ "cell": Schema.optionalKey(Schema.Struct({
331
+ "rowIndex": Integer.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(100000)).annotate({
332
+ "description": "Row.",
333
+ }),
334
+ "columnIndex": Integer.check(Schema.isGreaterThanOrEqualTo(0), Schema.isLessThanOrEqualTo(100000)).annotate({
335
+ "description": "Column.",
336
+ }),
337
+ }).annotate({ "description": "A table cell, 0-based: with textRange, that text in it; else the whole cell." })),
338
+ "assigneeEmail": Schema.optionalKey(Schema.String.check(isMinChars(3), isMaxChars(320), matchesPattern(new RegExp("^[^\\s@]+@[^\\s@]+$"))).annotate({
339
+ "description": "Assign the thread to this address; Slides notifies them.",
340
+ })),
341
+ "requiredRevisionId": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(512), matchesPattern(new RegExp("^[^\\s]+$"))).annotate({
342
+ "description": "Refuse, unapplied, if the deck changed since this revision.",
343
+ })),
344
+ }),
345
+ output: Schema.Struct({
346
+ "presentationId": Schema.String,
347
+ "revisionId": Schema.optionalKey(Schema.String),
348
+ "commentUpdateState": Schema.optionalKey(Schema.String),
349
+ "note": Schema.optionalKey(Schema.String),
350
+ "commentId": Schema.optionalKey(Schema.String),
351
+ "anchorId": Schema.optionalKey(Schema.String),
352
+ "status": Schema.optionalKey(Schema.String),
353
+ "quote": Schema.optionalKey(Schema.String),
354
+ "headPost": Schema.optionalKey(Schema.Struct({
355
+ "postId": Schema.optionalKey(Schema.String),
356
+ "author": Schema.optionalKey(Schema.Struct({
357
+ "user": Schema.optionalKey(Schema.String),
358
+ "displayName": Schema.optionalKey(Schema.String),
359
+ "me": Schema.optionalKey(Schema.Boolean),
360
+ "anonymous": Schema.optionalKey(Schema.Boolean),
361
+ })),
362
+ "content": Schema.optionalKey(Schema.String),
363
+ "contentOffset": Schema.optionalKey(Integer),
364
+ "contentLength": Schema.optionalKey(Integer),
365
+ "commentAction": Schema.optionalKey(Schema.String),
366
+ "assigneeEmail": Schema.optionalKey(Schema.String),
367
+ "createTime": Schema.optionalKey(Schema.String),
368
+ "updateTime": Schema.optionalKey(Schema.String),
369
+ "deleted": Schema.optionalKey(Schema.Boolean),
370
+ "imported": Schema.optionalKey(Schema.Boolean),
371
+ })),
372
+ "replies": Schema.optionalKey(Schema.Array(Schema.Struct({
373
+ "postId": Schema.optionalKey(Schema.String),
374
+ "author": Schema.optionalKey(Schema.Struct({
375
+ "user": Schema.optionalKey(Schema.String),
376
+ "displayName": Schema.optionalKey(Schema.String),
377
+ "me": Schema.optionalKey(Schema.Boolean),
378
+ "anonymous": Schema.optionalKey(Schema.Boolean),
379
+ })),
380
+ "content": Schema.optionalKey(Schema.String),
381
+ "contentOffset": Schema.optionalKey(Integer),
382
+ "contentLength": Schema.optionalKey(Integer),
383
+ "commentAction": Schema.optionalKey(Schema.String),
384
+ "assigneeEmail": Schema.optionalKey(Schema.String),
385
+ "createTime": Schema.optionalKey(Schema.String),
386
+ "updateTime": Schema.optionalKey(Schema.String),
387
+ "deleted": Schema.optionalKey(Schema.Boolean),
388
+ "imported": Schema.optionalKey(Schema.Boolean),
389
+ }))),
390
+ "idsNotShown": Schema.optionalKey(Schema.Boolean),
391
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
392
+ }),
393
+ };
394
+ export const create_comment_reply = {
395
+ input: Schema.Struct({
396
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
397
+ "commentId": Schema.String.check(isMinChars(1), isMaxChars(1024), matchesPattern(new RegExp("^\\S+$"))).annotate({
398
+ "description": "commentId from list_comments or create_comment.",
399
+ }),
400
+ "content": Schema.String.check(isMinChars(1), isMaxChars(2048)).annotate({
401
+ "description": "Plain text, up to 2048 UTF-8 bytes.",
402
+ }),
403
+ }),
404
+ output: Schema.Struct({
405
+ "presentationId": Schema.String,
406
+ "revisionId": Schema.optionalKey(Schema.String),
407
+ "commentUpdateState": Schema.optionalKey(Schema.String),
408
+ "note": Schema.optionalKey(Schema.String),
409
+ "commentId": Schema.String,
410
+ "post": Schema.optionalKey(Schema.Struct({
411
+ "postId": Schema.optionalKey(Schema.String),
412
+ "author": Schema.optionalKey(Schema.Struct({
413
+ "user": Schema.optionalKey(Schema.String),
414
+ "displayName": Schema.optionalKey(Schema.String),
415
+ "me": Schema.optionalKey(Schema.Boolean),
416
+ "anonymous": Schema.optionalKey(Schema.Boolean),
417
+ })),
418
+ "content": Schema.optionalKey(Schema.String),
419
+ "contentOffset": Schema.optionalKey(Integer),
420
+ "contentLength": Schema.optionalKey(Integer),
421
+ "commentAction": Schema.optionalKey(Schema.String),
422
+ "assigneeEmail": Schema.optionalKey(Schema.String),
423
+ "createTime": Schema.optionalKey(Schema.String),
424
+ "updateTime": Schema.optionalKey(Schema.String),
425
+ "deleted": Schema.optionalKey(Schema.Boolean),
426
+ "imported": Schema.optionalKey(Schema.Boolean),
427
+ })),
428
+ "idsNotShown": Schema.optionalKey(Schema.Boolean),
429
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
430
+ }),
431
+ };
432
+ export const update_comment_thread = {
433
+ input: Schema.Struct({
434
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
435
+ "commentId": Schema.String.check(isMinChars(1), isMaxChars(1024), matchesPattern(new RegExp("^\\S+$"))).annotate({
436
+ "description": "commentId from list_comments or create_comment.",
437
+ }),
438
+ "status": Schema.optionalKey(Schema.Literals(["RESOLVED", "OPEN"]).annotate({ "description": "Resolve the thread, or reopen it." })),
439
+ "assigneeEmail": Schema.optionalKey(Schema.String.check(isMinChars(3), isMaxChars(320), matchesPattern(new RegExp("^[^\\s@]+@[^\\s@]+$"))).annotate({
440
+ "description": "Reassign an assigned thread instead; needs content.",
441
+ })),
442
+ "content": Schema.optionalKey(Schema.String.check(isMinChars(1), isMaxChars(2048)).annotate({
443
+ "description": "Note posted with it, up to 2048 UTF-8 bytes; required to reassign.",
444
+ })),
445
+ }),
446
+ output: Schema.Struct({
447
+ "presentationId": Schema.String,
448
+ "revisionId": Schema.optionalKey(Schema.String),
449
+ "commentUpdateState": Schema.optionalKey(Schema.String),
450
+ "note": Schema.optionalKey(Schema.String),
451
+ "commentId": Schema.String,
452
+ "post": Schema.optionalKey(Schema.Struct({
453
+ "postId": Schema.optionalKey(Schema.String),
454
+ "author": Schema.optionalKey(Schema.Struct({
455
+ "user": Schema.optionalKey(Schema.String),
456
+ "displayName": Schema.optionalKey(Schema.String),
457
+ "me": Schema.optionalKey(Schema.Boolean),
458
+ "anonymous": Schema.optionalKey(Schema.Boolean),
459
+ })),
460
+ "content": Schema.optionalKey(Schema.String),
461
+ "contentOffset": Schema.optionalKey(Integer),
462
+ "contentLength": Schema.optionalKey(Integer),
463
+ "commentAction": Schema.optionalKey(Schema.String),
464
+ "assigneeEmail": Schema.optionalKey(Schema.String),
465
+ "createTime": Schema.optionalKey(Schema.String),
466
+ "updateTime": Schema.optionalKey(Schema.String),
467
+ "deleted": Schema.optionalKey(Schema.Boolean),
468
+ "imported": Schema.optionalKey(Schema.Boolean),
469
+ })),
470
+ "idsNotShown": Schema.optionalKey(Schema.Boolean),
471
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
472
+ }),
473
+ };
474
+ export const update_comment_post = {
475
+ input: Schema.Struct({
476
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
477
+ "commentId": Schema.String.check(isMinChars(1), isMaxChars(1024), matchesPattern(new RegExp("^\\S+$"))).annotate({
478
+ "description": "commentId from list_comments or create_comment.",
479
+ }),
480
+ "postId": Schema.String.check(isMinChars(1), isMaxChars(1024), matchesPattern(new RegExp("^\\S+$"))).annotate({
481
+ "description": "postId of the post, from list_comments.",
482
+ }),
483
+ "content": Schema.String.check(isMinChars(1), isMaxChars(2048)).annotate({
484
+ "description": "The new plain text, up to 2048 UTF-8 bytes.",
485
+ }),
486
+ }),
487
+ output: Schema.Struct({
488
+ "presentationId": Schema.String,
489
+ "revisionId": Schema.optionalKey(Schema.String),
490
+ "commentUpdateState": Schema.optionalKey(Schema.String),
491
+ "note": Schema.optionalKey(Schema.String),
492
+ "commentId": Schema.String,
493
+ "postId": Schema.String,
494
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
495
+ }),
496
+ };
497
+ export const delete_comment = {
498
+ input: Schema.Struct({
499
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
500
+ "commentId": Schema.String.check(isMinChars(1), isMaxChars(1024), matchesPattern(new RegExp("^\\S+$"))).annotate({
501
+ "description": "commentId from list_comments or create_comment.",
502
+ }),
503
+ }),
504
+ output: Schema.Struct({
505
+ "presentationId": Schema.String,
506
+ "revisionId": Schema.optionalKey(Schema.String),
507
+ "commentUpdateState": Schema.optionalKey(Schema.String),
508
+ "note": Schema.optionalKey(Schema.String),
509
+ "commentId": Schema.String,
510
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
511
+ }),
512
+ };
513
+ export const delete_comment_reply = {
514
+ input: Schema.Struct({
515
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
516
+ "commentId": Schema.String.check(isMinChars(1), isMaxChars(1024), matchesPattern(new RegExp("^\\S+$"))).annotate({
517
+ "description": "commentId from list_comments or create_comment.",
518
+ }),
519
+ "postId": Schema.String.check(isMinChars(1), isMaxChars(1024), matchesPattern(new RegExp("^\\S+$"))).annotate({
520
+ "description": "postId of the reply, from list_comments.",
521
+ }),
522
+ }),
523
+ output: Schema.Struct({
524
+ "presentationId": Schema.String,
525
+ "revisionId": Schema.optionalKey(Schema.String),
526
+ "commentUpdateState": Schema.optionalKey(Schema.String),
527
+ "note": Schema.optionalKey(Schema.String),
528
+ "commentId": Schema.String,
529
+ "postId": Schema.String,
530
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
531
+ }),
532
+ };
533
+ export const batch_update_presentation = {
534
+ input: Schema.Struct({
535
+ "presentationId": Schema.String.check(isMinChars(1), isMaxChars(256), matchesPattern(new RegExp("^[A-Za-z0-9_-]+$"))).annotate({ "description": "Presentation id: the part after /presentation/d/ in its URL, or from Drive." }),
536
+ "requiredRevisionId": Schema.String.check(isMinChars(1), isMaxChars(512), matchesPattern(new RegExp("^[^\\s]+$"))).annotate({
537
+ "description": "revisionId from get_presentation; the write is refused, unapplied, if the deck changed since.",
538
+ }),
539
+ "requests": Schema.Array(Schema.Record(Schema.String, Schema.Unknown)
540
+ .check(Schema.makeFilter((value) => Object.keys(value).length >= 1, {
541
+ expected: "minProperties 1",
542
+ toJsonSchema: () => ({ minProperties: 1 }),
543
+ }), Schema.makeFilter((value) => Object.keys(value).length <= 1, {
544
+ expected: "maxProperties 1",
545
+ toJsonSchema: () => ({ maxProperties: 1 }),
546
+ }))
547
+ .annotate({
548
+ "description": 'One Request with one key, as the Slides reference defines it: {"insertText": {...}}.',
549
+ }))
550
+ .check(Schema.isMinLength(1), Schema.isMaxLength(100))
551
+ .annotate({
552
+ "description": "Slides Request objects, applied in order, all or none but comments; 1 to 100 (connecta's bound).",
553
+ }),
554
+ }),
555
+ output: Schema.Struct({
556
+ "presentationId": Schema.String,
557
+ "revisionId": Schema.optionalKey(Schema.String),
558
+ "replies": Schema.Array(Schema.Struct({ "truncated": Schema.optionalKey(Schema.Array(Schema.String)) })),
559
+ "commentUpdateState": Schema.optionalKey(Schema.String),
560
+ "note": Schema.optionalKey(Schema.String),
561
+ "truncated": Schema.optionalKey(Schema.Array(Schema.String)),
562
+ }),
563
+ };
564
+ export const LayoutRow = list_layouts.output.fields.items.value;
565
+ export const CommentRow = list_comments.output.fields.items.value;