@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
@@ -1,87 +0,0 @@
1
- import { renderFixPrompt } from "../fix-prompt.js";
2
- const CATALOGUE = {
3
- connector_unavailable: {
4
- problem: "A connector is unavailable: its status check or catalog load failed, or did not finish before the operator page's deadline.",
5
- steps: [
6
- "Confirm the connector's downstream URL or API base in the deployment config, and that the deployment can reach it from where it runs.",
7
- "Check the credentials or headers the connector sends; a rejected credential often surfaces as a failed status rather than as an authorization prompt.",
8
- "If the downstream is slow rather than down, review the connector's timeouts and the deployment's discovery.probeTimeoutMs.",
9
- ],
10
- },
11
- oauth_required: {
12
- problem: "A downstream OAuth connector needs authorization: no grant is stored, or the stored grant expired or was revoked and could not be refreshed.",
13
- steps: [
14
- "Reauthorize from the connector's Connection tab (Connect or Reconnect) or with authorize_connector. A lapsed grant needs no code change.",
15
- "If it needs reauthorizing again soon after, check that the OAuth client requests offline access or a refresh token, and that the storage holding OAuth tokens persists across restarts and is shared by every instance.",
16
- "If authorization cannot start at all, check the connector's OAuth client configuration and the deployment's publicUrl, which forms the /oauth/callback/<connector id> redirect URI.",
17
- ],
18
- },
19
- credential_required: {
20
- problem: "A connector with an operator-managed credential slot has no usable credential stored.",
21
- steps: [
22
- "With a credential vault configured, a maintainer adds a shared credential on the operator page, and a pool member saves their own personal one from their view of it; neither needs a code change. Without a vault, configure one first.",
23
- "If nobody can, list the person in the deployment's maintainers for shared auth, or in the members of a pool containing the connector for personal auth.",
24
- "Check that the connector's credential declaration (label and fields) matches what the downstream actually needs.",
25
- ],
26
- },
27
- auth_required: {
28
- problem: "A connector reports that it needs authorization, and its secret lives in deployment configuration rather than in an operator-managed slot.",
29
- steps: [
30
- "Find where the connector's secret is read (usually an environment variable or Worker secret passed into the connector config) and confirm it is set in the running environment.",
31
- "Rotate the secret at the provider if it expired or was revoked, then update the deployment's environment, not its source.",
32
- "If operators should manage this secret from the page instead, declare a credential slot on the connector and configure a credential vault.",
33
- ],
34
- },
35
- credential_mismatch: {
36
- problem: "The credential stored for a connector does not match the fields the connector currently declares, so it cannot be used.",
37
- steps: [
38
- "If the connector's credential fields changed on purpose, re-enter the credential on the operator page so the stored fields match.",
39
- "If they changed by accident, restore the previous field names in the connector's credential declaration.",
40
- ],
41
- },
42
- credential_unreadable: {
43
- problem: "A stored credential exists but could not be read or decrypted.",
44
- steps: [
45
- "Check that the credential vault's encryption key in the deployment environment is the one the credential was stored with; a rotated or missing key makes every stored value unreadable.",
46
- "Check the storage adapter backing the vault is reachable from the deployment.",
47
- "If the key was lost, remove and re-add the credential on the operator page; the old value cannot be recovered.",
48
- ],
49
- },
50
- credential_test_failed: {
51
- problem: "The test for a stored connector credential failed: the downstream rejected it, or the test could not reach the downstream.",
52
- steps: [
53
- "Confirm the stored value is current at the provider (not rotated, revoked, or scoped too narrowly), and replace it on the operator page if not.",
54
- "Check that the connector's credential test targets the same API base and auth scheme its tool calls use.",
55
- ],
56
- },
57
- oauth_action_failed: {
58
- problem: "Restarting or disconnecting a connector's downstream OAuth from the operator page failed.",
59
- steps: [
60
- "Check that the connector implements the hooks the action needs (startAuth, finishAuth, and verifyState to connect; disconnectAuth to disconnect), and that the storage holding its OAuth state is writable.",
61
- "Check the connector's OAuth client configuration, including the authorization server it discovers or is given.",
62
- "Confirm the person is a maintainer for shared auth, or a member of a pool containing the connector for personal auth.",
63
- ],
64
- },
65
- catalog_failed: {
66
- problem: "A connector reports itself connected, but loading its tool catalog failed, so none of its tools are being served.",
67
- steps: [
68
- "Check that the downstream still serves a complete tools list; connecta refuses a partial catalog rather than serving part of it.",
69
- "Check for tools the connector cannot accept: invalid schemas, missing descriptions, or names that collide.",
70
- "Pin or upgrade the @zackbart/connecta version if a maintained provider's catalog changed shape underneath it.",
71
- ],
72
- },
73
- catalog_drift: {
74
- problem: "A hosted provider's live catalog differs from the reviewed manifest shipped with connecta: new unclassified tools, unserved tools, annotation conflicts, or schema changes.",
75
- steps: [
76
- "Unclassified tools are withheld until a release classifies them. Check whether a newer @zackbart/connecta release has, and upgrade if so.",
77
- "If a tool the deployment depends on is now unserved or changed shape, review callers of it before upgrading.",
78
- "Report drift the release does not cover as an issue on the connecta repository, naming the provider and the kinds of drift but no tool data.",
79
- ],
80
- },
81
- };
82
- /** The clipboard text for one failure. Fixed by kind; see `CATALOGUE`. */
83
- export function fixPrompt(kind, connectorId) {
84
- return renderFixPrompt(CATALOGUE[kind], connectorId);
85
- }
86
- /** Every kind, so a test can walk the whole catalogue. */
87
- export const FIX_PROMPT_KINDS = Object.keys(CATALOGUE);
@@ -1,52 +0,0 @@
1
- /**
2
- * The next steady evidence. A settled connector takes its current row; one
3
- * being read again keeps its previous evidence when this identity has any.
4
- * Returns `previous` itself when nothing changed, so it can live in React
5
- * state. A new identity starts empty.
6
- */
7
- export function steadyHealth(state, previous) {
8
- const same = previous?.generation === state.generation ? previous : null;
9
- const contract = state.contract?.role === "maintainer" && state.data ? state.contract : null;
10
- // No contract on screen: keep what was shown until the next one arrives.
11
- if (!contract || !state.data)
12
- return same ?? { generation: state.generation, rows: Object.create(null) };
13
- const reading = new Set(state.data.connectors.filter((c) => c.status === "loading").map((c) => c.id));
14
- const held = same?.rows ?? Object.create(null);
15
- const rows = Object.create(null);
16
- let changed = !same || Object.keys(held).length !== contract.live.connectors.length;
17
- for (const live of contract.live.connectors) {
18
- const before = Object.hasOwn(held, live.id) ? held[live.id] : undefined;
19
- if (before && reading.has(live.id)) {
20
- rows[live.id] = before;
21
- continue;
22
- }
23
- const failed = Object.hasOwn(state.connectorFailures, live.id) && Boolean(state.connectorFailures[live.id]);
24
- if (before?.live === live && before.failed === failed)
25
- rows[live.id] = before;
26
- else {
27
- rows[live.id] = { live, failed };
28
- changed = true;
29
- }
30
- }
31
- return changed ? { generation: state.generation, rows } : same;
32
- }
33
- /** The contract each view renders health from, with every live row replaced by its steady evidence. */
34
- export function shownHealth(contract, health) {
35
- const signals = Object.create(null);
36
- if (!contract)
37
- return { contract, signals };
38
- let replaced = false;
39
- const connectors = contract.live.connectors.map((live) => {
40
- const row = Object.hasOwn(health.rows, live.id) ? health.rows[live.id] : undefined;
41
- if (row?.failed)
42
- signals[live.id] = { failed: true };
43
- if (!row || row.live === live)
44
- return live;
45
- replaced = true;
46
- return row.live;
47
- });
48
- return {
49
- contract: replaced ? { ...contract, live: { ...contract.live, connectors } } : contract,
50
- signals,
51
- };
52
- }
@@ -1,97 +0,0 @@
1
- import { connectorStatusLabel, connectorStatusTone } from "./view.js";
2
- /**
3
- * Whether the member's own partition holds a credential, read from `actions`
4
- * alone (P6b): `clear` is listed only when a value is stored. Connection
5
- * state says whether it works, never whether it exists.
6
- */
7
- function credentialStored(manage) {
8
- return manage.actions.includes("clear");
9
- }
10
- function controlsFor(manage, connection) {
11
- const can = (action) => (manage.kind === "none" ? false : manage.actions.includes(action));
12
- if (manage.kind === "oauth") {
13
- const connected = connection.state === "ok";
14
- const controls = [];
15
- if (!connected && can("connect")) {
16
- controls.push({ kind: "connect", label: connection.state === "auth_required" ? "Connect" : "Reconnect" });
17
- }
18
- if (connected && can("restart"))
19
- controls.push({ kind: "restart", label: "Reconnect" });
20
- if (connection.state !== "auth_required" && can("disconnect")) {
21
- controls.push({ kind: "disconnect", label: "Disconnect" });
22
- }
23
- return controls;
24
- }
25
- if (manage.kind === "credential") {
26
- // `save` without `clear`: nothing stored yet. `test` is listed only for a stored value.
27
- const stored = credentialStored(manage);
28
- return [
29
- ...(can("save")
30
- ? [{ kind: "save", label: stored ? "Replace" : "Add credential" }]
31
- : []),
32
- ...(can("test") ? [{ kind: "test", label: "Test" }] : []),
33
- ...(can("clear") ? [{ kind: "clear", label: "Clear" }] : []),
34
- ];
35
- }
36
- return [];
37
- }
38
- /**
39
- * A few words under the account's name, only where the badge alone would
40
- * leave something out: a saved credential that no longer fits, or one saved
41
- * but not working.
42
- */
43
- function summaryFor(manage, connection) {
44
- if (manage.kind !== "credential" || !credentialStored(manage))
45
- return null;
46
- if (connection.problem === "credential_mismatch")
47
- return "Saved credential no longer fits";
48
- return connection.state === "ok" ? null : "Saved, but not working";
49
- }
50
- const toolCount = (connector) => connector.tools.length;
51
- export function memberPage(contract) {
52
- if (contract?.role !== "member")
53
- return { endpoints: [], accounts: [], shared: [] };
54
- return {
55
- endpoints: contract.pools.map((pool) => ({ pool: pool.name, path: pool.humanPath })),
56
- accounts: contract.connectors
57
- .filter((connector) => connector.authScope === "personal")
58
- .map((connector) => {
59
- const connection = connector.connection ?? { state: "auth_required" };
60
- return {
61
- id: connector.id,
62
- title: connector.title || connector.id,
63
- toolCount: toolCount(connector),
64
- badge: connector.connection
65
- ? {
66
- label: connectorStatusLabel(connection.state, connection.problem),
67
- tone: connectorStatusTone(connection.state),
68
- }
69
- : null,
70
- summary: summaryFor(connector.manage, connection),
71
- manage: connector.manage,
72
- controls: controlsFor(connector.manage, connection),
73
- };
74
- }),
75
- // Names and counts only: a shared connector's state is not the member's to see.
76
- shared: contract.connectors
77
- .filter((connector) => connector.authScope === "shared")
78
- .map((connector) => ({
79
- id: connector.id,
80
- title: connector.title || connector.id,
81
- toolCount: toolCount(connector),
82
- })),
83
- };
84
- }
85
- export function toolCountLabel(count) {
86
- return `${count} ${count === 1 ? "tool" : "tools"}`;
87
- }
88
- /** The in-page question before a member's action that takes something away. */
89
- export function memberConfirmCopy(action, name) {
90
- if (action === "oauth_restart") {
91
- return { question: `Reconnect ${name}? It stops working until you finish in the new tab.`, confirm: "Reconnect" };
92
- }
93
- if (action === "oauth_disconnect") {
94
- return { question: `Disconnect your ${name} account? Its tools stop working for you.`, confirm: "Disconnect" };
95
- }
96
- return { question: `Clear your ${name} credential? Its tools stop working for you.`, confirm: "Clear" };
97
- }
@@ -1,123 +0,0 @@
1
- import { endpointRows } from "./endpoints.js";
2
- import { joinList } from "./connection-map.js";
3
- import { connectorVerdict } from "./view.js";
4
- const PROBLEM_TITLE = {
5
- connector_unavailable: "is unavailable",
6
- oauth_required: "needs authorization",
7
- credential_required: "needs a credential",
8
- auth_required: "needs a secret in the deployment",
9
- credential_mismatch: "can't use its saved credential",
10
- catalog_failed: "couldn't load its tools",
11
- };
12
- function affects(paths) {
13
- return paths.length ? `Affects ${joinList(paths)}` : "No endpoint serves it";
14
- }
15
- /**
16
- * One row per connector that is not healthy, in config order, then one per
17
- * agent that sits in an endpoint without a working token. Each row carries
18
- * the fix the rest of the UI already offers for it.
19
- */
20
- export function attentionItems(contract, options = {}) {
21
- if (contract.role !== "maintainer")
22
- return [];
23
- const rows = endpointRows(contract);
24
- const connectors = [];
25
- for (const config of contract.config?.connectors ?? []) {
26
- const live = contract.live.connectors.find((c) => c.id === config.id);
27
- if (!live)
28
- continue;
29
- const signals = options.signals && Object.hasOwn(options.signals, config.id) ? options.signals[config.id] : {};
30
- const verdict = connectorVerdict(live, signals);
31
- if ((verdict.tone !== "warn" && verdict.tone !== "danger") || !verdict.action)
32
- continue;
33
- const title = config.title ?? config.id;
34
- const id = encodeURIComponent(config.id);
35
- const paths = rows.filter((row) => row.groups.some((group) => group.config.id === config.id)).map((r) => r.path);
36
- const connection = `/connectors/${id}#connection`;
37
- const base = {
38
- key: `connector:${config.id}`,
39
- kind: "connector",
40
- tone: verdict.tone,
41
- subject: title,
42
- action: { label: verdict.action, href: connection, ariaLabel: `${verdict.action} ${title}` },
43
- href: connection,
44
- };
45
- // The server's problem code outranks a failed read on this page: the row
46
- // keeps its fix prompt and says the details didn't load. "Unavailable"
47
- // beside a failed read is the page's own (see connectorVerdict).
48
- const reported = live.problem ?? (live.status === "error" ? "connector_unavailable" : undefined);
49
- const problem = signals.failed && reported === "connector_unavailable" ? undefined : reported;
50
- if (problem) {
51
- connectors.push({
52
- ...base,
53
- problem: PROBLEM_TITLE[problem],
54
- body: signals.failed ? `Details didn't load · ${affects(paths)}` : affects(paths),
55
- fix: { kind: problem, connectorId: config.id },
56
- });
57
- }
58
- else if (signals.failed) {
59
- connectors.push({
60
- ...base,
61
- problem: "didn't load on this page",
62
- body: affects(paths),
63
- fix: null,
64
- });
65
- }
66
- else if (live.status !== "ok") {
67
- connectors.push({
68
- ...base,
69
- problem: verdict.label === "Authorization needed" ? "needs authorization" : "isn't connected",
70
- body: affects(paths),
71
- fix: null,
72
- });
73
- }
74
- }
75
- const agents = contract.agents
76
- .filter((agent) => agent.pools.length && agent.token.state !== "issued")
77
- .map((agent) => {
78
- // An agent connects only at a pool's agent URL.
79
- const paths = agent.pools.map((name) => contract.pools.find((pool) => pool.name === name)?.agentPath ?? `/agent/${name}`);
80
- const revoked = agent.token.state === "revoked";
81
- return {
82
- key: `agent:${agent.name}`,
83
- kind: "agent",
84
- tone: "warn",
85
- subject: agent.name,
86
- problem: revoked ? "has a revoked token" : "has no token",
87
- body: `Can't connect at ${joinList(paths)}`,
88
- action: options.tokensPage
89
- ? { label: "Issue token", href: "/tokens", ariaLabel: `Issue a token for ${agent.name}` }
90
- : null,
91
- href: options.tokensPage ? "/tokens" : null,
92
- fix: null,
93
- };
94
- });
95
- // Severity changes as individual details settle. Config order keeps surviving
96
- // rows in place without waiting for the slowest connector's read.
97
- return [...connectors, ...agents];
98
- }
99
- /** The numbers above the list, counted from the same map the page draws. */
100
- export function overviewHeadline(contract, map, items, signals = {}) {
101
- const bar = (contract.config?.connectors ?? []).flatMap((config) => {
102
- const live = contract.live.connectors.find((c) => c.id === config.id);
103
- if (!live)
104
- return [];
105
- const health = connectorVerdict(live, Object.hasOwn(signals, config.id) ? signals[config.id] : undefined);
106
- return [{ id: config.id, title: config.title ?? config.id, tone: health.tone, label: health.label }];
107
- });
108
- const healthy = bar.filter((entry) => entry.tone === "ok").length;
109
- const warn = bar.filter((entry) => entry.tone === "warn").length;
110
- const danger = bar.filter((entry) => entry.tone === "danger").length;
111
- const count = (kind) => map.nodes.filter((node) => node.kind === kind).length;
112
- return {
113
- connectors: bar.length,
114
- healthy,
115
- warn,
116
- danger,
117
- bar,
118
- endpoints: count("endpoint"),
119
- readOnlyEndpoints: map.nodes.filter((node) => node.kind === "endpoint" && node.readOnly).length,
120
- people: count("person"),
121
- agents: contract.agents.length,
122
- };
123
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * Client setup snippets for one MCP endpoint: the deployment's `/mcp` or a
3
- * `/mcp/<pool>`. Three formats and no more — Claude Code's CLI, Codex's CLI,
4
- * and the `mcpServers` JSON most other clients read — because a longer list
5
- * is a list to keep current.
6
- *
7
- * None of them carries a credential. A client authenticates through the
8
- * deployment's inbound auth — OAuth discovery where that is configured — and
9
- * a token pasted into a snippet on this page would be one rendered by it.
10
- */
11
- /**
12
- * The name a client files this server under. Derived from the deployment's
13
- * configured server name, reduced to the characters every client CLI accepts
14
- * unquoted, with the pool appended so two endpoints never collide.
15
- */
16
- export function clientServerName(serverName, pool) {
17
- const base = (serverName ?? "")
18
- .toLowerCase()
19
- .replace(/[^a-z0-9_-]+/g, "-")
20
- .replace(/-{2,}/g, "-")
21
- .replace(/^-+|-+$/g, "")
22
- .slice(0, 48) || "connecta";
23
- return pool ? `${base}-${pool}` : base;
24
- }
25
- /** The URL for a pool: `/mcp` plus its name, which config limits to `[a-z0-9_-]`. */
26
- export function poolEndpointUrl(mcpUrl, pool) {
27
- return `${mcpUrl.replace(/\/+$/, "")}/${encodeURIComponent(pool)}`;
28
- }
29
- /** POSIX single-quoting, only when the value needs it. */
30
- function shellWord(value) {
31
- return /^[A-Za-z0-9_./:@%+=,~-]+$/.test(value) ? value : `'${value.replace(/'/g, `'"'"'`)}'`;
32
- }
33
- export function clientSetupCommands(name, url) {
34
- return [
35
- {
36
- id: "claude",
37
- label: "Claude Code",
38
- text: `claude mcp add --transport http ${shellWord(name)} ${shellWord(url)}`,
39
- },
40
- {
41
- id: "codex",
42
- label: "Codex",
43
- text: `codex mcp add ${shellWord(name)} --url ${shellWord(url)}`,
44
- },
45
- {
46
- id: "json",
47
- label: "JSON config",
48
- text: JSON.stringify({ mcpServers: { [name]: { type: "http", url } } }, null, 2),
49
- },
50
- ];
51
- }