@zackbart/connecta 0.34.1 → 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 (429) hide show
  1. package/CHANGELOG.md +363 -0
  2. package/README.md +62 -106
  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 +12 -7
  53. package/dist/connectors/api-connector.js +142 -56
  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 +228 -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 +383 -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/agents.d.ts +5 -4
  109. package/dist/operator-ui/agents.js +17 -7
  110. package/dist/operator-ui/config-summary.js +5 -4
  111. package/dist/operator-ui/connection-map.js +7 -5
  112. package/dist/operator-ui/contract.d.ts +7 -3
  113. package/dist/operator-ui/endpoints.js +4 -13
  114. package/dist/operator-ui/fix-prompts.d.ts +1 -1
  115. package/dist/operator-ui/fix-prompts.js +0 -8
  116. package/dist/operator-ui/generated.js +3 -3
  117. package/dist/operator-ui/model.d.ts +2 -3
  118. package/dist/operator-ui/overview.js +5 -2
  119. package/dist/operator-ui/setup-commands.js +0 -4
  120. package/dist/operator-ui/view.d.ts +2 -25
  121. package/dist/operator-ui/view.js +2 -76
  122. package/dist/program-writes.js +47 -26
  123. package/dist/provider-call-facts.d.ts +115 -0
  124. package/dist/provider-call-facts.js +182 -0
  125. package/dist/provider-call.d.ts +112 -0
  126. package/dist/provider-call.js +271 -0
  127. package/dist/provider.d.ts +65 -31
  128. package/dist/provider.js +116 -39
  129. package/dist/providers/_shared/google/hatch.js +91 -0
  130. package/dist/providers/_shared/google/kit.js +537 -0
  131. package/dist/providers/_shared/google/result-size.js +15 -2
  132. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  133. package/dist/providers/_shared/google/service-account.js +8 -4
  134. package/dist/providers/_shared/google/workspace.d.ts +6 -210
  135. package/dist/providers/_shared/google/workspace.js +6 -425
  136. package/dist/providers/_shared/rest/compact-index.js +86 -0
  137. package/dist/providers/_shared/rest/dispatch.js +3 -23
  138. package/dist/providers/_shared/rest/kit.js +546 -0
  139. package/dist/providers/_shared/rest/operation-index.js +230 -14
  140. package/dist/providers/_shared/rest/response-media.js +11 -0
  141. package/dist/providers/_shared/rest/tools.js +101 -78
  142. package/dist/providers/_shared/rest/value-safety.js +353 -195
  143. package/dist/providers/_shared/sensitive-fields.js +27 -0
  144. package/dist/providers/breeze/api.js +584 -0
  145. package/dist/providers/breeze/index.d.ts +1 -3
  146. package/dist/providers/breeze/index.js +67 -1420
  147. package/dist/providers/breeze/openapi.generated.js +60 -0
  148. package/dist/providers/breeze/skill.generated.js +2 -6
  149. package/dist/providers/breeze/tools.js +696 -0
  150. package/dist/providers/ccb/api.js +496 -0
  151. package/dist/providers/ccb/index.d.ts +15 -37
  152. package/dist/providers/ccb/index.js +77 -1702
  153. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  154. package/dist/providers/ccb/lib/constants.js +74 -0
  155. package/dist/providers/ccb/lib/guide.js +9 -0
  156. package/dist/providers/ccb/lib/verdicts.js +387 -0
  157. package/dist/providers/ccb/openapi.generated.js +397 -0
  158. package/dist/providers/ccb/safety.js +295 -0
  159. package/dist/providers/ccb/skill.generated.js +2 -6
  160. package/dist/providers/ccb/tools.js +853 -0
  161. package/dist/providers/cloudflare/api.js +1066 -0
  162. package/dist/providers/cloudflare/index.d.ts +5 -22
  163. package/dist/providers/cloudflare/index.js +79 -197
  164. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  165. package/dist/providers/cloudflare/lib/config.js +2 -0
  166. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  167. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  168. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  169. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  170. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  171. package/dist/providers/cloudflare/openapi.generated.js +4 -3
  172. package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
  173. package/dist/providers/cloudflare/skill.generated.js +2 -10
  174. package/dist/providers/cloudflare/tools.js +360 -0
  175. package/dist/providers/docs/api.js +51 -0
  176. package/dist/providers/docs/index.d.ts +1 -12
  177. package/dist/providers/docs/index.js +53 -1165
  178. package/dist/providers/docs/lib/constants.d.ts +18 -0
  179. package/dist/providers/docs/lib/constants.js +18 -0
  180. package/dist/providers/docs/lib/discovery.js +26 -0
  181. package/dist/providers/docs/lib/requests.js +48 -0
  182. package/dist/providers/docs/lib/schemas.js +168 -0
  183. package/dist/providers/docs/openapi.generated.js +16 -0
  184. package/dist/providers/docs/safety.js +54 -0
  185. package/dist/providers/docs/skill.generated.js +2 -6
  186. package/dist/providers/docs/tools.js +802 -0
  187. package/dist/providers/drive/api.js +177 -0
  188. package/dist/providers/drive/index.d.ts +1 -12
  189. package/dist/providers/drive/index.js +38 -1448
  190. package/dist/providers/drive/lib/constants.d.ts +6 -0
  191. package/dist/providers/drive/lib/constants.js +6 -0
  192. package/dist/providers/drive/lib/contracts.js +532 -0
  193. package/dist/providers/drive/lib/hatch.js +197 -0
  194. package/dist/providers/drive/openapi.generated.js +77 -0
  195. package/dist/providers/drive/safety.js +90 -0
  196. package/dist/providers/drive/skill.generated.js +2 -6
  197. package/dist/providers/drive/tools.js +1290 -0
  198. package/dist/providers/forms/api.js +71 -0
  199. package/dist/providers/forms/index.d.ts +1 -12
  200. package/dist/providers/forms/index.js +49 -1145
  201. package/dist/providers/forms/lib/constants.d.ts +14 -0
  202. package/dist/providers/forms/lib/constants.js +19 -0
  203. package/dist/providers/forms/lib/hatch.js +72 -0
  204. package/dist/providers/forms/openapi.generated.js +23 -0
  205. package/dist/providers/forms/safety.js +34 -0
  206. package/dist/providers/forms/skill.generated.js +2 -8
  207. package/dist/providers/forms/tools.js +1024 -0
  208. package/dist/providers/github/api.js +150 -0
  209. package/dist/providers/github/index.d.ts +4 -5
  210. package/dist/providers/github/index.js +30 -87
  211. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  212. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  213. package/dist/providers/github/lib/discovery.js +132 -0
  214. package/dist/providers/github/lib/operations.js +58 -0
  215. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  216. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  217. package/dist/providers/github/openapi.generated.js +1216 -0
  218. package/dist/providers/github/safety.js +216 -0
  219. package/dist/providers/github/skill.generated.js +2 -5
  220. package/dist/providers/github/tools.js +506 -0
  221. package/dist/providers/gmail/api.js +114 -0
  222. package/dist/providers/gmail/index.d.ts +1 -12
  223. package/dist/providers/gmail/index.js +73 -1621
  224. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  225. package/dist/providers/gmail/lib/constants.js +16 -0
  226. package/dist/providers/gmail/lib/index.js +173 -0
  227. package/dist/providers/gmail/lib/schemas.js +176 -0
  228. package/dist/providers/gmail/lib/threading.js +120 -0
  229. package/dist/providers/gmail/openapi.generated.js +92 -0
  230. package/dist/providers/gmail/safety.js +21 -0
  231. package/dist/providers/gmail/skill.generated.js +2 -6
  232. package/dist/providers/gmail/tools.js +1435 -0
  233. package/dist/providers/overflow/api.js +1008 -0
  234. package/dist/providers/overflow/index.d.ts +1 -17
  235. package/dist/providers/overflow/index.js +60 -1488
  236. package/dist/providers/overflow/skill.generated.js +2 -5
  237. package/dist/providers/overflow/tools.js +873 -0
  238. package/dist/providers/planning-center/api.js +467 -0
  239. package/dist/providers/planning-center/index.d.ts +4 -35
  240. package/dist/providers/planning-center/index.js +69 -2445
  241. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  242. package/dist/providers/planning-center/lib/constants.js +83 -0
  243. package/dist/providers/planning-center/lib/discovery.js +40 -0
  244. package/dist/providers/planning-center/lib/guide.js +39 -0
  245. package/dist/providers/planning-center/lib/json-api.js +83 -0
  246. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  247. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  248. package/dist/providers/planning-center/safety.js +188 -0
  249. package/dist/providers/planning-center/skill.generated.js +2 -27
  250. package/dist/providers/planning-center/tools.js +1010 -0
  251. package/dist/providers/sheets/api.js +133 -0
  252. package/dist/providers/sheets/index.d.ts +4 -16
  253. package/dist/providers/sheets/index.js +61 -1172
  254. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  255. package/dist/providers/sheets/lib/constants.js +14 -0
  256. package/dist/providers/sheets/lib/hatch.js +163 -0
  257. package/dist/providers/sheets/lib/requests.js +105 -0
  258. package/dist/providers/sheets/lib/schemas.js +138 -0
  259. package/dist/providers/sheets/openapi.generated.js +30 -0
  260. package/dist/providers/sheets/safety.js +27 -0
  261. package/dist/providers/sheets/skill.generated.js +2 -7
  262. package/dist/providers/sheets/tools.js +734 -0
  263. package/dist/providers/slides/api.js +147 -0
  264. package/dist/providers/slides/index.d.ts +2 -10
  265. package/dist/providers/slides/index.js +48 -2555
  266. package/dist/providers/slides/lib/constants.d.ts +11 -0
  267. package/dist/providers/slides/lib/constants.js +11 -0
  268. package/dist/providers/slides/lib/requests.js +60 -0
  269. package/dist/providers/slides/lib/schemas.js +565 -0
  270. package/dist/providers/slides/openapi.generated.js +18 -0
  271. package/dist/providers/slides/skill.generated.js +2 -6
  272. package/dist/providers/slides/tools.js +1968 -0
  273. package/dist/providers/stripe/api.js +401 -0
  274. package/dist/providers/stripe/index.d.ts +5 -27
  275. package/dist/providers/stripe/index.js +74 -210
  276. package/dist/providers/stripe/lib/config.d.ts +4 -0
  277. package/dist/providers/stripe/lib/config.js +2 -0
  278. package/dist/providers/stripe/openapi.generated.js +4 -3
  279. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  280. package/dist/providers/stripe/skill.generated.js +2 -11
  281. package/dist/providers/stripe/tools.js +77 -0
  282. package/dist/providers/tithely/api.js +531 -0
  283. package/dist/providers/tithely/index.d.ts +17 -0
  284. package/dist/providers/tithely/index.js +86 -965
  285. package/dist/providers/tithely/skill.generated.js +2 -5
  286. package/dist/providers/tithely/tools.js +426 -0
  287. package/dist/providers/vercel/api.js +551 -0
  288. package/dist/providers/vercel/index.d.ts +9 -25
  289. package/dist/providers/vercel/index.js +66 -260
  290. package/dist/providers/vercel/lib/config.d.ts +2 -0
  291. package/dist/providers/vercel/lib/config.js +2 -0
  292. package/dist/providers/vercel/lib/index.js +117 -0
  293. package/dist/providers/vercel/lib/logs.js +100 -0
  294. package/dist/providers/vercel/lib/pin.js +270 -0
  295. package/dist/providers/vercel/openapi.generated.js +10 -5
  296. package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
  297. package/dist/providers/vercel/skill.generated.js +2 -7
  298. package/dist/providers/vercel/tools.js +642 -0
  299. package/dist/redaction-identity.js +47 -0
  300. package/dist/redaction-marker.js +125 -0
  301. package/dist/registry.d.ts +21 -15
  302. package/dist/registry.js +409 -376
  303. package/dist/routes/access-tokens.js +1 -1
  304. package/dist/routes/actor-labels.js +1 -1
  305. package/dist/routes/connect.js +1 -1
  306. package/dist/routes/dispatch.js +103 -0
  307. package/dist/routes/mcp.js +170 -79
  308. package/dist/routes/oauth.js +3 -1
  309. package/dist/routes/operator.js +2 -2
  310. package/dist/routes/shared.d.ts +5 -4
  311. package/dist/routes/shared.js +244 -177
  312. package/dist/routes/skills.js +10 -8
  313. package/dist/routes/ui-config.js +27 -3
  314. package/dist/routes/ui-data.js +21 -20
  315. package/dist/routes/ui.js +1 -1
  316. package/dist/runtime/call-admission.js +0 -26
  317. package/dist/runtime/call-entry.js +30 -0
  318. package/dist/runtime/call.js +556 -0
  319. package/dist/runtime/connector-scope.js +7 -0
  320. package/dist/runtime/credential-probe.js +34 -0
  321. package/dist/runtime/executor.js +40 -0
  322. package/dist/runtime/native-storage.js +63 -0
  323. package/dist/runtime/registry.js +27 -0
  324. package/dist/runtime/request-scope.js +72 -0
  325. package/dist/runtime/run.js +15 -7
  326. package/dist/runtime/shared-read.js +34 -5
  327. package/dist/runtime/storage.js +34 -21
  328. package/dist/sent-secrets.d.ts +194 -37
  329. package/dist/sent-secrets.js +1743 -340
  330. package/dist/server.js +5 -56
  331. package/dist/skills.js +322 -222
  332. package/dist/sqlite.js +15 -14
  333. package/dist/storage/d1-copy.js +255 -0
  334. package/dist/storage/d1-driver.js +15 -0
  335. package/dist/storage/keys.js +28 -0
  336. package/dist/storage/sql-driver.js +88 -0
  337. package/dist/storage/sql-native.js +544 -0
  338. package/dist/storage/sql-schema.d.ts +6 -0
  339. package/dist/storage/sql-schema.js +15 -0
  340. package/dist/storage/sql.d.ts +14 -20
  341. package/dist/storage/sql.js +29 -535
  342. package/dist/timeout.js +0 -26
  343. package/dist/tool-safety.js +20 -10
  344. package/dist/types.d.ts +7 -109
  345. package/dist/upward.js +3 -0
  346. package/dist/usage-guide.js +3 -1
  347. package/dist/validate.d.ts +4 -2
  348. package/dist/validate.js +86 -9
  349. package/dist/version.d.ts +1 -1
  350. package/dist/version.js +1 -1
  351. package/dist/worker.js +312 -292
  352. package/dist/workspace-subject.js +5 -1
  353. package/dist/write-outcome.js +454 -34
  354. package/documentation/README.md +27 -7
  355. package/documentation/architecture.md +2547 -226
  356. package/documentation/auth.md +821 -98
  357. package/documentation/code-mode.md +49 -16
  358. package/documentation/deploying.md +164 -20
  359. package/documentation/hosted-mcp-migration.md +460 -0
  360. package/documentation/integrating.md +129 -144
  361. package/documentation/meta-tools.md +409 -32
  362. package/documentation/operating.md +27 -3
  363. package/documentation/operator-tests.md +3 -0
  364. package/documentation/operator-ui.md +68 -45
  365. package/documentation/provider-auth-migration.md +16 -63
  366. package/documentation/provider-migration-0.29.md +10 -5
  367. package/documentation/provider-migration-0.35.md +975 -0
  368. package/documentation/providers.md +965 -0
  369. package/examples/worker/AGENTS.md +23 -9
  370. package/examples/worker/README.md +254 -135
  371. package/examples/worker/alchemy.run.ts +116 -0
  372. package/examples/worker/gitignore +10 -0
  373. package/examples/worker/src/connecta.config.ts +23 -21
  374. package/examples/worker/wrangler.jsonc +14 -5
  375. package/guides/connecting-agents.md +157 -0
  376. package/guides/how-it-works.md +156 -0
  377. package/guides/safety-and-trust.md +153 -0
  378. package/package.json +27 -46
  379. package/templates/node/.env.example +3 -0
  380. package/templates/node/README.md +22 -2
  381. package/templates/node/docker-compose.yml +1 -0
  382. package/templates/node/package.json +3 -2
  383. package/templates/node/src/connecta.config.ts +8 -0
  384. package/dist/catalog-drift.d.ts +0 -138
  385. package/dist/catalog-drift.js +0 -578
  386. package/dist/providers/_shared/request-token.js +0 -83
  387. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  388. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  389. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  390. package/dist/providers/basecamp/index.d.ts +0 -45
  391. package/dist/providers/basecamp/index.js +0 -997
  392. package/dist/providers/basecamp/skill.generated.js +0 -9
  393. package/dist/providers/cloudflare/rest.d.ts +0 -37
  394. package/dist/providers/cloudflare/rest.js +0 -1097
  395. package/dist/providers/github/hosted.js +0 -218
  396. package/dist/providers/github/rest.js +0 -321
  397. package/dist/providers/infisical/index.d.ts +0 -7
  398. package/dist/providers/infisical/index.js +0 -713
  399. package/dist/providers/infisical/skill.generated.js +0 -8
  400. package/dist/providers/intercom/index.d.ts +0 -24
  401. package/dist/providers/intercom/index.js +0 -121
  402. package/dist/providers/intercom/skill.generated.js +0 -8
  403. package/dist/providers/linear/index.d.ts +0 -55
  404. package/dist/providers/linear/index.js +0 -537
  405. package/dist/providers/linear/skill.generated.js +0 -8
  406. package/dist/providers/mixpanel/index.d.ts +0 -59
  407. package/dist/providers/mixpanel/index.js +0 -472
  408. package/dist/providers/mixpanel/operations.js +0 -20
  409. package/dist/providers/mixpanel/rest.js +0 -603
  410. package/dist/providers/mixpanel/skill.generated.js +0 -10
  411. package/dist/providers/mixpanel/value-safety.js +0 -16
  412. package/dist/providers/notion/index.d.ts +0 -67
  413. package/dist/providers/notion/index.js +0 -368
  414. package/dist/providers/notion/openapi.generated.js +0 -75
  415. package/dist/providers/notion/rest.d.ts +0 -24
  416. package/dist/providers/notion/rest.js +0 -1226
  417. package/dist/providers/notion/skill.generated.js +0 -11
  418. package/dist/providers/notion/value-safety.js +0 -56
  419. package/dist/providers/revenuecat/index.d.ts +0 -51
  420. package/dist/providers/revenuecat/index.js +0 -697
  421. package/dist/providers/revenuecat/skill.generated.js +0 -11
  422. package/dist/providers/stripe/rest.d.ts +0 -14
  423. package/dist/providers/stripe/rest.js +0 -402
  424. package/dist/providers/vercel/rest.d.ts +0 -20
  425. package/dist/providers/vercel/rest.js +0 -1020
  426. package/dist/providers/wispr-flow/index.d.ts +0 -14
  427. package/dist/providers/wispr-flow/index.js +0 -117
  428. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  429. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -1,537 +0,0 @@
1
- import { skill } from "./skill.generated.js";
2
- import { remoteMcp, withCredentialDefaults } from "../../connectors/remote-mcp.js";
3
- import { keys, optionsOf } from "../../config-schema.js";
4
- import { REMOTE_MCP_AUTH } from "../../connectors/option-shapes.js";
5
- import { reviewedCatalog } from "../../catalog-drift.js";
6
- import { defineProvider, PROVIDER_COMMON } from "../../provider.js";
7
- /**
8
- * Linear publishes two hosted endpoints. `read-only` is not a client-side
9
- * filter: it advertises the `read` scope alone, so the token minted for it
10
- * cannot reach Linear's write APIs at all. The deprecated `/sse` transport is
11
- * deliberately absent — it now answers 404.
12
- */
13
- export const LINEAR_MCP_ENDPOINTS = {
14
- "read-write": "https://mcp.linear.app/mcp",
15
- "read-only": "https://mcp.linear.app/mcp/readonly",
16
- };
17
- /**
18
- * Every `save_*` is destructive because Linear's `save_*` tools are upserts:
19
- * omitting a record id creates, supplying one overwrites in place, and the
20
- * schema cannot tell them apart.
21
- */
22
- const UPSERT = "An upsert: supplying a record id overwrites that record in place, and the schema cannot tell a create from an update.";
23
- /**
24
- * The release-reviewed classification (P5), used both to classify a live tool
25
- * and as the record the drift check compares against, so the annotation a
26
- * caller gets and the verdict a check reads can never disagree. It is a
27
- * superset: Linear's hosted `tools/list` varies by plan and enabled features,
28
- * so a name this workspace never returns costs nothing, while an unlisted new
29
- * one without an explicit read annotation fails closed. The genuine creates —
30
- * the `create_*_label` and attachment tools — are plain writes rather than
31
- * destructive.
32
- */
33
- const LINEAR_CLASSIFICATION = {
34
- tools: {
35
- // Issues
36
- list_issues: {
37
- schemaDigest: "sha256:294b644db541de9f1f4cec011164fe7cec29153aa12d5d94d0748fe35fe973d4",
38
- "verdict": "read",
39
- "reason": "Reads existing Linear list issues data without changing workspace state.",
40
- },
41
- get_issue: {
42
- schemaDigest: "sha256:33b204248ae63119751ed4cbade909b05cfbd9aa241cd39e4cec5690d062688e",
43
- "verdict": "read",
44
- "reason": "Reads existing Linear get issue data without changing workspace state.",
45
- },
46
- list_issue_statuses: {
47
- schemaDigest: "sha256:8a740e800811796eab16dee1c22db5d8e3c971bebf3ccec7d7d2ee36157f4316",
48
- "verdict": "read",
49
- "reason": "Reads existing Linear list issue statuses data without changing workspace state.",
50
- },
51
- get_issue_status: {
52
- schemaDigest: "sha256:ea4e287dc5fc9b930b790430ca02f221a75444d789a252d87aff838767ce4f05",
53
- "verdict": "read",
54
- "reason": "Reads existing Linear get issue status data without changing workspace state.",
55
- },
56
- list_issue_labels: {
57
- schemaDigest: "sha256:5eb361d26464fcaef257499c150bf9cb9349308d03ef31c119e826752cbc998e",
58
- "verdict": "read",
59
- "reason": "Reads existing Linear list issue labels data without changing workspace state.",
60
- },
61
- save_issue: {
62
- schemaDigest: "sha256:23a22fd38cd3234f3a112c460daf04779034e54e45ed00ca27232574f3d60547",
63
- verdict: "destructive",
64
- reason: UPSERT,
65
- },
66
- save_issue_label: {
67
- schemaDigest: "sha256:a39c5e1194b33f1a07139c6c2219a991a818f7027b26aef059959bc67248d528",
68
- verdict: "destructive",
69
- reason: UPSERT,
70
- },
71
- retire_issue_label: {
72
- schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
73
- verdict: "destructive",
74
- reason: "Retires an existing issue label or group, including child labels, so it cannot be applied to new records.",
75
- },
76
- restore_issue_label: {
77
- schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
78
- verdict: "destructive",
79
- reason: "Restores an existing issue label or group and every child label, including children retired separately.",
80
- },
81
- create_issue_label: {
82
- schemaDigest: "sha256:92a9bbefc33410795f6c23ae609b1cb61d6168b36b5b60f4563090e468c7f53c",
83
- "verdict": "write",
84
- "reason": "Creates Linear state through create_issue_label; the reviewed operation only appends.",
85
- },
86
- // Projects
87
- list_projects: {
88
- schemaDigest: "sha256:3cadc9d39d1372e89bf671ae44b88aee4d7bc0d23af24979e2401facedd0253f",
89
- "verdict": "read",
90
- "reason": "Reads existing Linear list projects data without changing workspace state.",
91
- },
92
- get_project: {
93
- schemaDigest: "sha256:e752476aabfdf9d25b03a57f682f6fcb187b10d823a3c6371abe49f7dda8a6e0",
94
- "verdict": "read",
95
- "reason": "Reads existing Linear get project data without changing workspace state.",
96
- },
97
- list_project_labels: {
98
- schemaDigest: "sha256:5eb361d26464fcaef257499c150bf9cb9349308d03ef31c119e826752cbc998e",
99
- "verdict": "read",
100
- "reason": "Reads existing Linear list project labels data without changing workspace state.",
101
- },
102
- save_project: {
103
- schemaDigest: "sha256:2531c09aba662f0793dad42fa43d32708fe68047479cf2c00b32f368e1014413",
104
- verdict: "destructive",
105
- reason: UPSERT,
106
- },
107
- save_project_label: {
108
- schemaDigest: "sha256:703b141f537e40c693fd6cf5e6fc8ba97359830f943e022f4b32414562e72719",
109
- verdict: "destructive",
110
- reason: UPSERT,
111
- },
112
- retire_project_label: {
113
- schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
114
- verdict: "destructive",
115
- reason: "Retires an existing project label or group, including child labels, so it cannot be applied to new records.",
116
- },
117
- restore_project_label: {
118
- schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
119
- verdict: "destructive",
120
- reason: "Restores an existing project label or group and every child label, including children retired separately.",
121
- },
122
- // Milestones
123
- list_milestones: {
124
- schemaDigest: "sha256:97e2d99f903538f1a99d7aef71bb8215dc99279e4395310c14a1c5c67852444a",
125
- "verdict": "read",
126
- "reason": "Reads existing Linear list milestones data without changing workspace state.",
127
- },
128
- get_milestone: {
129
- schemaDigest: "sha256:5631cd5fdcd020ad3b57ee65dc92ec32a8be0df06136a7bcb1a83e5fb333df71",
130
- "verdict": "read",
131
- "reason": "Reads existing Linear get milestone data without changing workspace state.",
132
- },
133
- save_milestone: {
134
- schemaDigest: "sha256:d55f3018b2e8693c950e71751a6769f056f85cc51f351c1df26674f45eda4974",
135
- verdict: "destructive",
136
- reason: UPSERT,
137
- },
138
- // Initiatives
139
- list_initiatives: {
140
- schemaDigest: "sha256:7d4bf3b546207ae0e41e215dc1f115ae05c61125b3299335a290e42498a63704",
141
- "verdict": "read",
142
- "reason": "Reads existing Linear list initiatives data without changing workspace state.",
143
- },
144
- get_initiative: {
145
- schemaDigest: "sha256:dda5376b85019b51df65b94ed0baed0bf2715d59567ff6169bbcf67c6794ba81",
146
- "verdict": "read",
147
- "reason": "Reads existing Linear get initiative data without changing workspace state.",
148
- },
149
- list_initiative_labels: {
150
- schemaDigest: "sha256:8c844c2f031db6e3c2665dac47e3ea8b006330b4bcc6df4b6479055e57ee057d",
151
- "verdict": "read",
152
- "reason": "Reads existing Linear list initiative labels data without changing workspace state.",
153
- },
154
- save_initiative: {
155
- schemaDigest: "sha256:65a4b02ead7630b12db3d9811192fb2595b8a34c79e1146a19318d640bf8b104",
156
- verdict: "destructive",
157
- reason: UPSERT,
158
- },
159
- save_initiative_label: {
160
- schemaDigest: "sha256:23a42a87a9420428381a719b5a64d4514c5edd97bddb885517ade6306d36bbe0",
161
- verdict: "destructive",
162
- reason: UPSERT,
163
- },
164
- retire_initiative_label: {
165
- schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
166
- verdict: "destructive",
167
- reason: "Retires an existing initiative label or group, including child labels, so it cannot be applied to new records.",
168
- },
169
- restore_initiative_label: {
170
- schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
171
- verdict: "destructive",
172
- reason: "Restores an existing initiative label or group and every child label, including children retired separately.",
173
- },
174
- create_initiative_label: {
175
- schemaDigest: "sha256:442e098c4e81e46071f13f9359dd296acd1cb03eee0c71d68fc7a329cc503277",
176
- "verdict": "write",
177
- "reason": "Creates Linear state through create_initiative_label; the reviewed operation only appends.",
178
- },
179
- // Saved views
180
- list_custom_views: {
181
- schemaDigest: "sha256:ec3cbc000f325d82c0b4949acf6995cf4c11d4b4084c84037ee5aa5801eea92d",
182
- verdict: "read",
183
- reason: "Lists accessible saved view metadata without changing views or their matching records.",
184
- },
185
- // Cycles
186
- list_cycles: {
187
- schemaDigest: "sha256:39d0ade50e1bbe3e68f366b12b9ce001d4ab39dda416e061cc670c402963237f",
188
- "verdict": "read",
189
- "reason": "Reads existing Linear list cycles data without changing workspace state.",
190
- },
191
- // Comments
192
- list_comments: {
193
- schemaDigest: "sha256:cd004335be5c0e9dfcd7997be16527cbaaf1eafddfa1ff0c367d904fb4c7372b",
194
- "verdict": "read",
195
- "reason": "Reads existing Linear list comments data without changing workspace state.",
196
- },
197
- save_comment: {
198
- schemaDigest: "sha256:795f5d486218ccfe5d2d3480d8624feecb0af92cbff80804c3030a994aa343aa",
199
- verdict: "destructive",
200
- reason: UPSERT,
201
- },
202
- delete_comment: {
203
- schemaDigest: "sha256:2c78afdc6b2a0e16421b88ad51e84fcc86f64ae7b551eae01a2f3c8437ebbb2b",
204
- "verdict": "destructive",
205
- "reason": "Changes or removes existing Linear state through delete_comment.",
206
- },
207
- // Documents
208
- list_documents: {
209
- schemaDigest: "sha256:0c34f1ad0045ed166a200790b80cc274357f8dd916bade75267ce17ad3a0cd70",
210
- "verdict": "read",
211
- "reason": "Reads existing Linear list documents data without changing workspace state.",
212
- },
213
- get_document: {
214
- schemaDigest: "sha256:3cb4635f04b8a5b10b6973a579123b0ff38b9942a4e5c019140c94c67bd23c29",
215
- "verdict": "read",
216
- "reason": "Reads existing Linear get document data without changing workspace state.",
217
- },
218
- save_document: {
219
- schemaDigest: "sha256:a1022c0e1a427aca42a5032acc1fe798eb41a6b503a9b8f2b0b1842bcc42b77a",
220
- verdict: "destructive",
221
- reason: UPSERT,
222
- },
223
- // Inbox
224
- get_notifications: {
225
- schemaDigest: "sha256:eae99e7b6395842bd0aa3008dc4b8b75c12be444bca1111f68352127db852750",
226
- verdict: "read",
227
- reason: "Lists the authenticated user's inbox notifications without marking or snoozing them.",
228
- },
229
- mark_notification: {
230
- schemaDigest: "sha256:96190ee9b29c980c1df2bf741ec1eebc49eed9a87f6db74d89bfa87b800b7fac",
231
- verdict: "write",
232
- reason: "Changes read/unread or snooze state in the authenticated user's inbox; the reviewed operation removes no workspace record.",
233
- },
234
- // Teams and users
235
- list_teams: {
236
- schemaDigest: "sha256:35496fcc47293f7976a418f5babd99f063465c9b614606b1feb0ab13879a4048",
237
- "verdict": "read",
238
- "reason": "Reads existing Linear list teams data without changing workspace state.",
239
- },
240
- get_team: {
241
- schemaDigest: "sha256:4e62e3954a183e2256921cd40450335d3fcd6b4ba52354854a4257efabebf256",
242
- "verdict": "read",
243
- "reason": "Reads existing Linear get team data without changing workspace state.",
244
- },
245
- list_users: {
246
- schemaDigest: "sha256:2ce638c3be81ff50ac7a4f2c929cce39a62a011aad006ba9a26569a45ad095e5",
247
- "verdict": "read",
248
- "reason": "Reads existing Linear list users data without changing workspace state.",
249
- },
250
- get_user: {
251
- schemaDigest: "sha256:5046c1d7d44be9142585a2fbd71785fb6f5832b99d723763251913e1a4ccc6f9",
252
- "verdict": "read",
253
- "reason": "Reads existing Linear get user data without changing workspace state.",
254
- },
255
- get_workspace: {
256
- schemaDigest: "sha256:caa1215d2278f303733e5fcb008a09853e2bc0e4d5545416a1f40eb4e3ba29fe",
257
- "verdict": "read",
258
- "reason": "Reads existing Linear get workspace data without changing workspace state.",
259
- },
260
- get_triage_responsibility: {
261
- schemaDigest: "sha256:8ee4f3c9799a763001089d1a56691020fac5bf9866b80bdbc21495702051737b",
262
- verdict: "read",
263
- reason: "Reads a team's current triage responsibility and upcoming rotation shifts without changing assignments.",
264
- },
265
- // Templates
266
- list_templates: {
267
- schemaDigest: "sha256:387aea405fd7d1ebd9b44228865f55dcc03cdbf1ff82dfe6a6766994177b3531",
268
- "verdict": "read",
269
- "reason": "Reads existing Linear list templates data without changing workspace state.",
270
- },
271
- get_template: {
272
- schemaDigest: "sha256:b5feb94b620c9466a87c0feb232e19223e73abb1965579208c1aa47e6ef2b082",
273
- "verdict": "read",
274
- "reason": "Reads existing Linear get template data without changing workspace state.",
275
- },
276
- // Status updates
277
- get_status_updates: {
278
- schemaDigest: "sha256:af40904370cffcca265f1a05bff133d561c7009f6960a84096025cf8163663f3",
279
- "verdict": "read",
280
- "reason": "Reads existing Linear get status updates data without changing workspace state.",
281
- },
282
- save_status_update: {
283
- schemaDigest: "sha256:5078fdc9f3ea4ee104d05def28e45949083d4f2ff6f2435bd6b856abccbece75",
284
- verdict: "destructive",
285
- reason: UPSERT,
286
- },
287
- delete_status_update: {
288
- schemaDigest: "sha256:5e4e4cdac2d818bdc2a572947a11a28b251797e59affea97aa3b853f5439bf7f",
289
- "verdict": "destructive",
290
- "reason": "Changes or removes existing Linear state through delete_status_update.",
291
- },
292
- // Releases
293
- list_release_pipelines: {
294
- schemaDigest: "sha256:7a20220ffbd895f834a0bd85ab6a444fbe7d71ee5b1d5dcbf8c109c7451984e0",
295
- "verdict": "read",
296
- "reason": "Reads existing Linear list release pipelines data without changing workspace state.",
297
- },
298
- list_releases: {
299
- schemaDigest: "sha256:c9c6fa51eb980c3304a37f64e2a73f6e2e03e252330fcdb4ab9fc2e995c949cc",
300
- "verdict": "read",
301
- "reason": "Reads existing Linear list releases data without changing workspace state.",
302
- },
303
- get_release: {
304
- schemaDigest: "sha256:6adeb4b4a0cb4888cfb45bf0a0d047f6de516dc05b7067912f5ba77025155fdb",
305
- "verdict": "read",
306
- "reason": "Reads existing Linear get release data without changing workspace state.",
307
- },
308
- list_release_notes: {
309
- schemaDigest: "sha256:b0f1da15034143f29d44d949ea08bdfec2509ef196175a7a8ee5db11b655b06a",
310
- "verdict": "read",
311
- "reason": "Reads existing Linear list release notes data without changing workspace state.",
312
- },
313
- get_release_note: {
314
- schemaDigest: "sha256:d28c0187ad65bca21b32451f8ab1d4a1c1a26efb485b9d4395e9b3d41555f532",
315
- "verdict": "read",
316
- "reason": "Reads existing Linear get release note data without changing workspace state.",
317
- },
318
- save_release: {
319
- schemaDigest: "sha256:97db7fa9246750a0533d07ed73d633fadc3fe2f27f2bf95deb6ea86bbcb2bc4b",
320
- verdict: "destructive",
321
- reason: UPSERT,
322
- },
323
- save_release_note: {
324
- schemaDigest: "sha256:933c46faa3bb1edb4e9cc89299ab7dbcdaafab4bee6615aa43d538703fe4dab7",
325
- verdict: "destructive",
326
- reason: UPSERT,
327
- },
328
- // Code review
329
- list_diffs: {
330
- schemaDigest: "sha256:1eccf293d83cd2d962e6f840cd42dac43eaee1a15cbf7ea6b78bd6b55fe94313",
331
- "verdict": "read",
332
- "reason": "Reads existing Linear list diffs data without changing workspace state.",
333
- },
334
- get_diff: {
335
- schemaDigest: "sha256:692aaf3e4a1adb0b82e38bf01574b6615747f48619e295f0377255cf2fd3dbaa",
336
- "verdict": "read",
337
- "reason": "Reads existing Linear get diff data without changing workspace state.",
338
- },
339
- get_diff_threads: {
340
- schemaDigest: "sha256:98b66ecda18665bf883e70169c472802105fc113c0f39d3e25da76824b3e3457",
341
- "verdict": "read",
342
- "reason": "Reads existing Linear get diff threads data without changing workspace state.",
343
- },
344
- save_diff_comment: {
345
- schemaDigest: "sha256:29a06cce756a5f3a6987693129a260659cad50083f7400723fb0b8bc9dd2b8bb",
346
- verdict: "destructive",
347
- reason: UPSERT,
348
- },
349
- resolve_diff_thread: {
350
- schemaDigest: "sha256:e493a5e74c1fd7e7bf104dbed8032c721c15209991aa12686c7f46b82a49ab2e",
351
- "verdict": "destructive",
352
- "reason": "Changes or removes existing Linear state through resolve_diff_thread.",
353
- },
354
- delete_diff_comment: {
355
- schemaDigest: "sha256:88db600198790b6c99b6e9397d26649f49d48b0deaa758dc64e6f8b516d817c7",
356
- "verdict": "destructive",
357
- "reason": "Changes or removes existing Linear state through delete_diff_comment.",
358
- },
359
- submit_diff_review: {
360
- schemaDigest: "sha256:97aa13f00d23db8d16191104dae0ddd2a3dd1c047415bf770474be0180320acf",
361
- "verdict": "destructive",
362
- "reason": "Changes or removes existing Linear state through submit_diff_review.",
363
- },
364
- update_diff: {
365
- schemaDigest: "sha256:8e5b77961d3d344b99a68cb82901d3764f6fb4c700f42c3c2fc59ea12a490f27",
366
- verdict: "destructive",
367
- reason: "Changes an existing diff's metadata, review requests, issue links or status; combined updates can partially succeed.",
368
- },
369
- merge_diff: {
370
- schemaDigest: "sha256:e809bf0416c3cfb99794448eb66f69f83bbd7a451604faec7f622f47025f17fc",
371
- "verdict": "destructive",
372
- "reason": "Changes or removes existing Linear state through merge_diff.",
373
- },
374
- // Attachments
375
- get_attachment: {
376
- schemaDigest: "sha256:158ac0e0add99d9a9109a4f3549266be8f2d1eb5fa0832c861a4c56c20708a3b",
377
- "verdict": "read",
378
- "reason": "Reads existing Linear get attachment data without changing workspace state.",
379
- },
380
- prepare_attachment_upload: {
381
- schemaDigest: "sha256:641559612992b1f6c1cd69fec3c66b898c12d2a21bc58973589be81fc2612c9c",
382
- verdict: "write",
383
- reason: "Mints an upload URL: a side effect, but it changes no existing record.",
384
- },
385
- create_attachment_from_upload: {
386
- schemaDigest: "sha256:10818ba9327b9b70816512fd557ed3b4b85776f47cf8ca498f0d3ba17953dc2a",
387
- "verdict": "write",
388
- "reason": "Creates Linear state through create_attachment_from_upload; the reviewed operation only appends.",
389
- },
390
- create_attachment: {
391
- schemaDigest: "sha256:0a4e4d5f6b62b5fbfd52d466d8b3167005e3574f3d00cf92e2fbfbbe769d8a1e",
392
- "verdict": "write",
393
- "reason": "Creates Linear state through create_attachment; the reviewed operation only appends.",
394
- },
395
- delete_attachment: {
396
- schemaDigest: "sha256:ef21d1c1a7d09827b3c44bdefe18fc2dec28af468d19d2060f97df0a0f76bd0e",
397
- "verdict": "destructive",
398
- "reason": "Changes or removes existing Linear state through delete_attachment.",
399
- },
400
- // Explicit issue access.
401
- share_issue: {
402
- schemaDigest: "sha256:f41410b4cf5effc62a03ad26bcf76ba792a1f7bea52a78da9183b5279b4a0433",
403
- verdict: "destructive",
404
- reason: "Changes who can see an existing issue.",
405
- },
406
- unshare_issue: {
407
- schemaDigest: "sha256:f41410b4cf5effc62a03ad26bcf76ba792a1f7bea52a78da9183b5279b4a0433",
408
- verdict: "destructive",
409
- reason: "Changes who can see an existing issue.",
410
- },
411
- // Agent skills
412
- list_agent_skills: {
413
- schemaDigest: "sha256:38fc34a53e932314e0bf6abc6493bca1256d37a951befceb95c1fe13bfa46ebd",
414
- "verdict": "read",
415
- "reason": "Reads existing Linear list agent skills data without changing workspace state.",
416
- },
417
- get_agent_skill: {
418
- schemaDigest: "sha256:deb4296f3f7612ffb1af1e6ec75976acdc04ba12aff6c129a92b5a87e7a9ee09",
419
- "verdict": "read",
420
- "reason": "Reads existing Linear get agent skill data without changing workspace state.",
421
- },
422
- // Documentation search
423
- search_documentation: {
424
- schemaDigest: "sha256:c2b89b06275e7b0cb63b73af749ae88b694446066058584e65c9208e33339efa",
425
- "verdict": "read",
426
- "reason": "Reads existing Linear search documentation data without changing workspace state.",
427
- },
428
- // Customer requests (plan-gated)
429
- list_customers: {
430
- "verdict": "read",
431
- optional: true,
432
- "reason": "Reads existing Linear list customers data without changing workspace state.",
433
- },
434
- list_customer_needs: {
435
- verdict: "read",
436
- optional: true,
437
- reason: "Lists customer requests for an issue, project or initiative; announced in Linear's 2026-10-08 changelog and plan-gated in hosted catalogs.",
438
- },
439
- save_customer: { verdict: "destructive", optional: true, reason: UPSERT },
440
- delete_customer: {
441
- "verdict": "destructive",
442
- optional: true,
443
- "reason": "Changes or removes existing Linear state through delete_customer.",
444
- },
445
- save_customer_need: { verdict: "destructive", optional: true, reason: UPSERT },
446
- delete_customer_need: {
447
- "verdict": "destructive",
448
- optional: true,
449
- "reason": "Changes or removes existing Linear state through delete_customer_need.",
450
- },
451
- // Markdown helper.
452
- extract_images: {
453
- schemaDigest: "sha256:1d7273f64621448fd901fb4ac94ee3b29a4c4a833f0b27083775bd685f8a401c",
454
- verdict: "read",
455
- reason: "Reads images out of content it is handed and touches no workspace state; the hosted server ships it annotated readOnlyHint: true and idempotentHint: true.",
456
- },
457
- },
458
- };
459
- /**
460
- * Connection-independent conventions. The access note and purpose lead the
461
- * rendered guide; deployment instructions follow it.
462
- */
463
- /** The closed options linear() accepts, checked against LinearOptions. */
464
- const LINEAR_OPTIONS = optionsOf()({
465
- ...PROVIDER_COMMON,
466
- ...keys("access"),
467
- auth: REMOTE_MCP_AUTH,
468
- });
469
- /** A maintained Linear hosted-MCP connection. */
470
- export const linear = defineProvider({
471
- name: "linear",
472
- title: "Linear",
473
- kind: "mcp",
474
- readme: "Linear",
475
- bundle: { "baselineGzip": 127244, "maxGzip": 187244 },
476
- skill,
477
- options: LINEAR_OPTIONS,
478
- classify: LINEAR_CLASSIFICATION,
479
- create(id, options, provider) {
480
- const access = options.access;
481
- if (access !== "read-write" && access !== "read-only") {
482
- throw new Error(`linear("${id}") requires access "read-write" or "read-only".`);
483
- }
484
- // Leads the guide because discovery summarizes a connector by its first
485
- // content line: whether this connection can write at all is the one thing
486
- // an agent must know before it opens the guide, and `search_tools` shows
487
- // the summary without the description.
488
- const accessNote = access === "read-only"
489
- ? "Read-only connection: bound to Linear's read-only endpoint, whose token is scope-limited downstream, so every write fails at Linear regardless of arguments. Route writes to a connector configured for read-write access."
490
- : "Read-write connection: treat every `save_`, `create_`, `delete_`, `retire_`, `restore_`, `mark_`, `update_`, `resolve_`, `submit_`, `share_`, `unshare_`, `prepare_`, and `merge_` operation as a write. Connecta classifies the maintained writes explicitly, and a read-only endpoint refuses them. Unknown tools without an explicit, uncontradicted read annotation fail closed.";
491
- return remoteMcp(id, {
492
- url: LINEAR_MCP_ENDPOINTS[access],
493
- ...provider.connectorOptions,
494
- // The title is what browse-time discovery renders; a read-only
495
- // connection says so there rather than only in a description the caller
496
- // may not see.
497
- title: options.title ?? (access === "read-only" ? "Linear (read-only)" : "Linear"),
498
- description: access === "read-only"
499
- ? `Linear issue tracking and project planning (read-only) — ${options.purpose}`
500
- : `Linear issue tracking and project planning — ${options.purpose}`,
501
- // Linear's MCP endpoint takes an API key the same way it takes an OAuth
502
- // token — `Authorization: Bearer <yourtoken>` — so only the slot copy is
503
- // provider-specific and the bearer framing default stands. The
504
- // bare-header convention belongs to Linear's GraphQL API, not to this
505
- // endpoint.
506
- auth: withCredentialDefaults(options.auth ?? { type: "oauth" }, {
507
- credential: {
508
- label: "Personal API key",
509
- description: "A Linear personal API key. It carries the issuing user's full workspace access and is stored encrypted; the read-only endpoint still limits what it can reach.",
510
- placeholder: "lin_api_…",
511
- },
512
- }),
513
- requireHttps: true,
514
- classify: provider.classify,
515
- usageGuide: provider.usageGuide({
516
- context: [accessNote, `Workspace purpose: ${options.purpose}`],
517
- // Explicit rather than derived. The derived summary would truncate the
518
- // access note mid-sentence at 120 characters, and the one thing a
519
- // browsing agent must not get wrong is whether this connection can
520
- // write at all ([#342](https://github.com/zackbart/connecta/issues/342)).
521
- // Not `required`: Linear's own schemas describe each call correctly;
522
- // the guide adds cross-tool sequence advice worth reading before a
523
- // write, not before every read.
524
- summary: access === "read-only"
525
- ? "Read-only: every write fails at Linear. Id resolution, upsert semantics, and cursor paging."
526
- : "Read-write. Id resolution, `save_*` upsert semantics, plan-gated areas, and cursor paging.",
527
- }),
528
- });
529
- },
530
- });
531
- /**
532
- * The reviewed classification in the legacy manifest form.
533
- *
534
- * @deprecated Read `linear.definition.classify` instead. This alias is derived
535
- * from it and retained for existing public imports.
536
- */
537
- export const LINEAR_VETTED_CATALOG = reviewedCatalog(linear.definition.classify, 'defineProvider("linear")');
@@ -1,8 +0,0 @@
1
- // Generated by scripts/generate-providers.mjs; do not edit.
2
- export const skill = {
3
- "content": "- Issue arguments use `state`, not `status`. Resolve team-specific states through `list_issue_statuses` and use the value format required by the live input schema.\n- Resolve identity before acting. `list_teams`, `list_users`, `list_projects`, `list_issue_statuses`, and `list_issue_labels` return the ids that create and update arguments expect; do not guess a team, status, label, or assignee id.\n- Issues carry a human identifier like `ENG-123` — team key, dash, number — alongside a UUID. Use the identifier the request gave you and resolve it with `get_issue` or `list_issues` when a tool wants an id; never fabricate an identifier or renumber one.\n- `save_*` tools are upserts: omit the record id to create, supply it to update in place. Read the record first when you mean to update, and send only the fields you intend to change — an upsert overwrites what you restate.\n- Prefer `save_issue_label`, `save_project_label`, and `save_initiative_label` for label upserts. The deprecated `create_issue_label` and `create_initiative_label` remain create-only writes. Resolve existing labels with the corresponding `list_*_labels`; when updating issue or project labels, `teamId` disambiguates a name and cannot move the label to another team.\n- `retire_*_label` prevents new uses while preserving labels on existing records. Retiring a group retires its children; restoring a group restores every child, including children retired separately. Check the group and child scope before either lifecycle write.\n- `get_notifications` only reads the authenticated user's inbox. `mark_notification` writes read/unread or snooze state; resolve notification ids from that inbox before marking.\n- Read `get_diff` before `update_diff` and send only intended changes. Combined updates can partially succeed: inspect the result and reread before deciding whether any remaining change needs another call; never blindly replay the whole write. Use `merge_diff` to merge and `submit_diff_review` to approve or request changes.\n- Projects, milestones, and initiatives nest: initiatives contain projects, projects contain milestones and issues, and cycles are per-team time boxes. Scope a search by team or project rather than listing the workspace and filtering afterwards.\n- List tools paginate with a cursor. Thread the returned cursor for the next page instead of raising the page size, and reduce pages inside `execute_code` before returning them.\n- This workspace's catalog is not the whole product. Customer requests, releases, and code review are plan- and feature-gated, so search the catalog for what this connector actually exposes rather than assuming a tool exists.\n- Linear meters the underlying API per user per hour, shared with everything else that credential does. Reuse discovery results within a run and avoid speculative fan-out.\n- An `auth_required` failure means this connector's Linear authorization is missing or expired: run `authorize_connector` for this connector id, then retry the same call unchanged.",
4
- "instructionsHeading": "Workspace instructions",
5
- "fragments": {
6
- "content": "- Issue arguments use `state`, not `status`. Resolve team-specific states through `list_issue_statuses` and use the value format required by the live input schema.\n- Resolve identity before acting. `list_teams`, `list_users`, `list_projects`, `list_issue_statuses`, and `list_issue_labels` return the ids that create and update arguments expect; do not guess a team, status, label, or assignee id.\n- Issues carry a human identifier like `ENG-123` — team key, dash, number — alongside a UUID. Use the identifier the request gave you and resolve it with `get_issue` or `list_issues` when a tool wants an id; never fabricate an identifier or renumber one.\n- `save_*` tools are upserts: omit the record id to create, supply it to update in place. Read the record first when you mean to update, and send only the fields you intend to change — an upsert overwrites what you restate.\n- Prefer `save_issue_label`, `save_project_label`, and `save_initiative_label` for label upserts. The deprecated `create_issue_label` and `create_initiative_label` remain create-only writes. Resolve existing labels with the corresponding `list_*_labels`; when updating issue or project labels, `teamId` disambiguates a name and cannot move the label to another team.\n- `retire_*_label` prevents new uses while preserving labels on existing records. Retiring a group retires its children; restoring a group restores every child, including children retired separately. Check the group and child scope before either lifecycle write.\n- `get_notifications` only reads the authenticated user's inbox. `mark_notification` writes read/unread or snooze state; resolve notification ids from that inbox before marking.\n- Read `get_diff` before `update_diff` and send only intended changes. Combined updates can partially succeed: inspect the result and reread before deciding whether any remaining change needs another call; never blindly replay the whole write. Use `merge_diff` to merge and `submit_diff_review` to approve or request changes.\n- Projects, milestones, and initiatives nest: initiatives contain projects, projects contain milestones and issues, and cycles are per-team time boxes. Scope a search by team or project rather than listing the workspace and filtering afterwards.\n- List tools paginate with a cursor. Thread the returned cursor for the next page instead of raising the page size, and reduce pages inside `execute_code` before returning them.\n- This workspace's catalog is not the whole product. Customer requests, releases, and code review are plan- and feature-gated, so search the catalog for what this connector actually exposes rather than assuming a tool exists.\n- Linear meters the underlying API per user per hour, shared with everything else that credential does. Reuse discovery results within a run and avoid speculative fan-out.\n- An `auth_required` failure means this connector's Linear authorization is missing or expired: run `authorize_connector` for this connector id, then retry the same call unchanged."
7
- }
8
- };
@@ -1,59 +0,0 @@
1
- import { type RemoteMcpAuth } from "../../connectors/remote-mcp.js";
2
- import type { ConnectorCallAdmissionPolicy } from "../../types.js";
3
- export type MixpanelRegion = "us" | "eu" | "in";
4
- export declare const MIXPANEL_MCP_ENDPOINTS: Readonly<Record<MixpanelRegion, string>>;
5
- interface MixpanelCommonOptions {
6
- /**
7
- * Human-readable display name; defaults to "Mixpanel (<region>)". The region
8
- * rides the title because a project lives in exactly one residency and
9
- * discovery shows the title before anything else.
10
- */
11
- title?: string;
12
- /** Downstream auth ownership. Defaults to one shared deployment grant. */
13
- authScope?: "shared" | "personal";
14
- /** Who should use this account and for what decisions. */
15
- purpose: string;
16
- /**
17
- * Data residency region, selecting the matching official endpoint. A wrong
18
- * region answers empty rather than wrong, which reads as an empty project.
19
- */
20
- region?: MixpanelRegion;
21
- /** Account-specific conventions appended to the maintained provider guide. */
22
- instructions?: string;
23
- /** Connector-specific inline result limit; omit to inherit the deployment. */
24
- maxResultBytes?: number;
25
- /** Serve only read-classified tools on every endpoint. Defaults to false. */
26
- readOnly?: boolean;
27
- /**
28
- * Optional per-runtime policy. API mode defaults to 60 calls/hour and five
29
- * concurrent calls across all tools and projects. MCP mode has no default:
30
- * its per-user hourly quota cannot be modeled by one per-runtime counter.
31
- */
32
- callAdmission?: ConnectorCallAdmissionPolicy;
33
- }
34
- /** The default hosted MCP connection. Existing auth configurations still work. */
35
- export interface MixpanelMcpOptions extends MixpanelCommonOptions {
36
- via?: "mcp";
37
- /**
38
- * OAuth by default; static headers support Mixpanel service accounts, and
39
- * `{ type: "credential" }` takes the same service account as an
40
- * operator-managed `username:secret` that Connecta frames for the endpoint.
41
- */
42
- auth?: RemoteMcpAuth;
43
- defaultProjectId?: never;
44
- }
45
- /** REST APIs using an operator-managed username:secret service account. */
46
- export interface MixpanelApiOptions extends MixpanelCommonOptions {
47
- via: "api";
48
- auth: {
49
- type: "credential";
50
- };
51
- /** Fills an omitted project_id. Explicit ids still reach other granted projects. */
52
- defaultProjectId?: number;
53
- }
54
- export type MixpanelOptions = MixpanelMcpOptions | MixpanelApiOptions;
55
- /** Mixpanel hosted MCP by default, or service-account REST with via: "api". */
56
- export declare const mixpanel: import("../../provider.js").ProviderFactory<MixpanelOptions>;
57
- /** @deprecated Read `mixpanel.definition.classify` instead. Kept for existing imports. */
58
- export declare const MIXPANEL_VETTED_CATALOG: import("../../catalog-drift.js").VettedCatalog;
59
- export {};