@tickernelz/paperclip-pro-shared 2026.1006.0 → 2026.1006.2

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 (302) hide show
  1. package/dist/.paperclip-build-complete +1 -1
  2. package/dist/aggregator-app-catalog.d.ts +26 -0
  3. package/dist/aggregator-app-catalog.d.ts.map +1 -0
  4. package/dist/aggregator-app-catalog.js +72 -0
  5. package/dist/aggregator-app-catalog.js.map +1 -0
  6. package/dist/aggregator-app-catalog.test.d.ts +2 -0
  7. package/dist/aggregator-app-catalog.test.d.ts.map +1 -0
  8. package/dist/aggregator-app-catalog.test.js +45 -0
  9. package/dist/aggregator-app-catalog.test.js.map +1 -0
  10. package/dist/aggregator-apps.d.ts +41 -0
  11. package/dist/aggregator-apps.d.ts.map +1 -0
  12. package/dist/aggregator-apps.js +34 -0
  13. package/dist/aggregator-apps.js.map +1 -0
  14. package/dist/ai-connection-router.d.ts +352 -0
  15. package/dist/ai-connection-router.d.ts.map +1 -0
  16. package/dist/ai-connection-router.js +55 -0
  17. package/dist/ai-connection-router.js.map +1 -0
  18. package/dist/ai-connection-usage.d.ts +48 -0
  19. package/dist/ai-connection-usage.d.ts.map +1 -0
  20. package/dist/ai-connection-usage.js +6 -0
  21. package/dist/ai-connection-usage.js.map +1 -0
  22. package/dist/ai-connections.d.ts +7 -0
  23. package/dist/ai-connections.d.ts.map +1 -1
  24. package/dist/ai-connections.js +7 -5
  25. package/dist/ai-connections.js.map +1 -1
  26. package/dist/app-definitions/agentmail.json +1 -1
  27. package/dist/app-definitions/airtable.json +10 -1
  28. package/dist/app-definitions/api-key-generic.json +2 -1
  29. package/dist/app-definitions/asana.json +37 -6
  30. package/dist/app-definitions/beehiiv.json +5 -1
  31. package/dist/app-definitions/bitly.json +2 -1
  32. package/dist/app-definitions/brex.json +23 -1
  33. package/dist/app-definitions/browser-use-cloud.json +53 -0
  34. package/dist/app-definitions/candid.json +6 -1
  35. package/dist/app-definitions/clickhouse.json +8 -1
  36. package/dist/app-definitions/cloudflare.json +7 -2
  37. package/dist/app-definitions/cloudinary.json +10 -1
  38. package/dist/app-definitions/coda.json +6 -2
  39. package/dist/app-definitions/cognee.json +76 -0
  40. package/dist/app-definitions/embat.json +7 -1
  41. package/dist/app-definitions/fireflies.json +2 -1
  42. package/dist/app-definitions/github-code-review-bot.json +57 -0
  43. package/dist/app-definitions/github.json +4 -43
  44. package/dist/app-definitions/google-calendar.json +0 -2
  45. package/dist/app-definitions/google-docs.json +0 -6
  46. package/dist/app-definitions/google-sheets.json +0 -6
  47. package/dist/app-definitions/google-slides.json +0 -6
  48. package/dist/app-definitions/honcho.json +73 -0
  49. package/dist/app-definitions/hugging-face.json +4 -1
  50. package/dist/app-definitions/kernel.json +6 -2
  51. package/dist/app-definitions/linear.json +2 -1
  52. package/dist/app-definitions/local-falcon.json +5 -1
  53. package/dist/app-definitions/manufact.json +7 -1
  54. package/dist/app-definitions/mem0.json +12 -6
  55. package/dist/app-definitions/miro.json +7 -1
  56. package/dist/app-definitions/mixpanel.json +27 -1
  57. package/dist/app-definitions/neon.json +155 -0
  58. package/dist/app-definitions/netlify.json +6 -1
  59. package/dist/app-definitions/notion.json +4 -1
  60. package/dist/app-definitions/oreilly.json +7 -2
  61. package/dist/app-definitions/pagerduty.json +4 -2
  62. package/dist/app-definitions/planetscale.json +12 -2
  63. package/dist/app-definitions/posthog.json +2 -1
  64. package/dist/app-definitions/postman.json +6 -3
  65. package/dist/app-definitions/razorpay.json +2 -1
  66. package/dist/app-definitions/resend.json +4 -1
  67. package/dist/app-definitions/sanity.json +6 -2
  68. package/dist/app-definitions/sentry.json +8 -1
  69. package/dist/app-definitions/similarweb.json +2 -1
  70. package/dist/app-definitions/slack.json +28 -1
  71. package/dist/app-definitions/stripe.json +6 -2
  72. package/dist/app-definitions/supabase.json +22 -4
  73. package/dist/app-definitions/supermemory.json +55 -0
  74. package/dist/app-definitions/ticktick.json +5 -1
  75. package/dist/app-definitions/todoist.json +4 -1
  76. package/dist/app-definitions/vercel.json +4 -1
  77. package/dist/app-definitions/wix.json +4 -1
  78. package/dist/app-definitions/youcom.json +7 -2
  79. package/dist/app-definitions/zep.json +54 -0
  80. package/dist/app-definitions-url.test.js +4 -2
  81. package/dist/app-definitions-url.test.js.map +1 -1
  82. package/dist/app-definitions.d.ts +5 -1
  83. package/dist/app-definitions.d.ts.map +1 -1
  84. package/dist/app-definitions.generated.d.ts.map +1 -1
  85. package/dist/app-definitions.generated.js +78 -71
  86. package/dist/app-definitions.generated.js.map +1 -1
  87. package/dist/app-definitions.js +18 -7
  88. package/dist/app-definitions.js.map +1 -1
  89. package/dist/app-definitions.test.js +173 -46
  90. package/dist/app-definitions.test.js.map +1 -1
  91. package/dist/arcade-app-catalog.json +1602 -0
  92. package/dist/asana-connectors.d.ts +7 -0
  93. package/dist/asana-connectors.d.ts.map +1 -0
  94. package/dist/asana-connectors.js +8 -0
  95. package/dist/asana-connectors.js.map +1 -0
  96. package/dist/browser-use.d.ts +107 -0
  97. package/dist/browser-use.d.ts.map +1 -0
  98. package/dist/browser-use.js +98 -0
  99. package/dist/browser-use.js.map +1 -0
  100. package/dist/composio-app-setup.d.ts +65 -0
  101. package/dist/composio-app-setup.d.ts.map +1 -0
  102. package/dist/composio-app-setup.js +17 -0
  103. package/dist/composio-app-setup.js.map +1 -0
  104. package/dist/composio-search-catalog.json +1589 -0
  105. package/dist/connection-instructions.d.ts +34 -0
  106. package/dist/connection-instructions.d.ts.map +1 -0
  107. package/dist/connection-instructions.js +48 -0
  108. package/dist/connection-instructions.js.map +1 -0
  109. package/dist/connection-instructions.test.d.ts +2 -0
  110. package/dist/connection-instructions.test.d.ts.map +1 -0
  111. package/dist/connection-instructions.test.js +84 -0
  112. package/dist/connection-instructions.test.js.map +1 -0
  113. package/dist/connection-intent-guidance.d.ts +2 -2
  114. package/dist/connection-intent-guidance.d.ts.map +1 -1
  115. package/dist/connection-intent-guidance.js +7 -20
  116. package/dist/connection-intent-guidance.js.map +1 -1
  117. package/dist/connection-intent-guidance.test.js +15 -54
  118. package/dist/connection-intent-guidance.test.js.map +1 -1
  119. package/dist/connection-routing.d.ts +33 -0
  120. package/dist/connection-routing.d.ts.map +1 -0
  121. package/dist/connection-routing.js +309 -0
  122. package/dist/connection-routing.js.map +1 -0
  123. package/dist/connection-routing.test.d.ts +2 -0
  124. package/dist/connection-routing.test.d.ts.map +1 -0
  125. package/dist/connection-routing.test.js +73 -0
  126. package/dist/connection-routing.test.js.map +1 -0
  127. package/dist/connection-search.d.ts +15 -0
  128. package/dist/connection-search.d.ts.map +1 -0
  129. package/dist/connection-search.js +75 -0
  130. package/dist/connection-search.js.map +1 -0
  131. package/dist/connection-search.test.d.ts +2 -0
  132. package/dist/connection-search.test.d.ts.map +1 -0
  133. package/dist/connection-search.test.js +37 -0
  134. package/dist/connection-search.test.js.map +1 -0
  135. package/dist/connection-setup-state.d.ts +32 -0
  136. package/dist/connection-setup-state.d.ts.map +1 -0
  137. package/dist/connection-setup-state.js +74 -0
  138. package/dist/connection-setup-state.js.map +1 -0
  139. package/dist/connection-setup-state.test.d.ts +2 -0
  140. package/dist/connection-setup-state.test.d.ts.map +1 -0
  141. package/dist/connection-setup-state.test.js +92 -0
  142. package/dist/connection-setup-state.test.js.map +1 -0
  143. package/dist/constants.d.ts +2 -2
  144. package/dist/constants.d.ts.map +1 -1
  145. package/dist/constants.js +2 -1
  146. package/dist/constants.js.map +1 -1
  147. package/dist/feature-catalog.d.ts.map +1 -1
  148. package/dist/feature-catalog.js +24 -5
  149. package/dist/feature-catalog.js.map +1 -1
  150. package/dist/github-skill-repository.d.ts +7 -0
  151. package/dist/github-skill-repository.d.ts.map +1 -0
  152. package/dist/github-skill-repository.js +29 -0
  153. package/dist/github-skill-repository.js.map +1 -0
  154. package/dist/google-workspace-connectors.js +7 -7
  155. package/dist/google-workspace-connectors.js.map +1 -1
  156. package/dist/heartbeat-inbox.d.ts +5 -0
  157. package/dist/heartbeat-inbox.d.ts.map +1 -0
  158. package/dist/heartbeat-inbox.js +10 -0
  159. package/dist/heartbeat-inbox.js.map +1 -0
  160. package/dist/index.d.ts +26 -4
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +23 -3
  163. package/dist/index.js.map +1 -1
  164. package/dist/issue-thread-interactions.test.js +53 -0
  165. package/dist/issue-thread-interactions.test.js.map +1 -1
  166. package/dist/memory-connectors.d.ts +5 -0
  167. package/dist/memory-connectors.d.ts.map +1 -0
  168. package/dist/memory-connectors.js +6 -0
  169. package/dist/memory-connectors.js.map +1 -0
  170. package/dist/memory-connectors.test.d.ts +2 -0
  171. package/dist/memory-connectors.test.d.ts.map +1 -0
  172. package/dist/memory-connectors.test.js +33 -0
  173. package/dist/memory-connectors.test.js.map +1 -0
  174. package/dist/question-set.d.ts +4 -0
  175. package/dist/question-set.d.ts.map +1 -0
  176. package/dist/question-set.js +48 -0
  177. package/dist/question-set.js.map +1 -0
  178. package/dist/remote-mcp-connectors.test.js +4 -4
  179. package/dist/remote-mcp-connectors.test.js.map +1 -1
  180. package/dist/self-serve-mcp-research.json +7 -2
  181. package/dist/settings-visibility-catalog-growth.test.d.ts +2 -0
  182. package/dist/settings-visibility-catalog-growth.test.d.ts.map +1 -0
  183. package/dist/settings-visibility-catalog-growth.test.js +15 -0
  184. package/dist/settings-visibility-catalog-growth.test.js.map +1 -0
  185. package/dist/settings-visibility.d.ts +13 -5
  186. package/dist/settings-visibility.d.ts.map +1 -1
  187. package/dist/settings-visibility.js +27 -5
  188. package/dist/settings-visibility.js.map +1 -1
  189. package/dist/settings-visibility.test.js +37 -0
  190. package/dist/settings-visibility.test.js.map +1 -1
  191. package/dist/slack-tools.d.ts +57 -3
  192. package/dist/slack-tools.d.ts.map +1 -1
  193. package/dist/slack-tools.js +25 -4
  194. package/dist/slack-tools.js.map +1 -1
  195. package/dist/telemetry/generated/paperclip-telemetry.d.ts +3 -0
  196. package/dist/telemetry/generated/paperclip-telemetry.d.ts.map +1 -1
  197. package/dist/telemetry/generated/paperclip-telemetry.js.map +1 -1
  198. package/dist/types/agent.d.ts +67 -1
  199. package/dist/types/agent.d.ts.map +1 -1
  200. package/dist/types/agent.js.map +1 -1
  201. package/dist/types/app-definition.d.ts +5 -0
  202. package/dist/types/app-definition.d.ts.map +1 -1
  203. package/dist/types/asset.d.ts +1 -0
  204. package/dist/types/asset.d.ts.map +1 -1
  205. package/dist/types/company-skill.d.ts +6 -0
  206. package/dist/types/company-skill.d.ts.map +1 -1
  207. package/dist/types/connection-intent.d.ts +27 -1
  208. package/dist/types/connection-intent.d.ts.map +1 -1
  209. package/dist/types/email.d.ts +13 -0
  210. package/dist/types/email.d.ts.map +1 -1
  211. package/dist/types/execution-continuation.d.ts +5 -0
  212. package/dist/types/execution-continuation.d.ts.map +1 -1
  213. package/dist/types/execution-projection.d.ts +9 -0
  214. package/dist/types/execution-projection.d.ts.map +1 -1
  215. package/dist/types/execution-projection.js.map +1 -1
  216. package/dist/types/index.d.ts +4 -1
  217. package/dist/types/index.d.ts.map +1 -1
  218. package/dist/types/index.js +1 -0
  219. package/dist/types/index.js.map +1 -1
  220. package/dist/types/instance.d.ts +6 -2
  221. package/dist/types/instance.d.ts.map +1 -1
  222. package/dist/types/instance.js.map +1 -1
  223. package/dist/types/issue.d.ts +39 -2
  224. package/dist/types/issue.d.ts.map +1 -1
  225. package/dist/types/plugin.d.ts +12 -0
  226. package/dist/types/plugin.d.ts.map +1 -1
  227. package/dist/types/project.d.ts +16 -0
  228. package/dist/types/project.d.ts.map +1 -1
  229. package/dist/types/skill-source.d.ts +135 -0
  230. package/dist/types/skill-source.d.ts.map +1 -0
  231. package/dist/types/skill-source.js +2 -0
  232. package/dist/types/skill-source.js.map +1 -0
  233. package/dist/types/tool-access.d.ts +3 -0
  234. package/dist/types/tool-access.d.ts.map +1 -1
  235. package/dist/types/tool-access.js.map +1 -1
  236. package/dist/validators/agent.d.ts +38 -11
  237. package/dist/validators/agent.d.ts.map +1 -1
  238. package/dist/validators/agent.js +15 -4
  239. package/dist/validators/agent.js.map +1 -1
  240. package/dist/validators/app-definition.d.ts +19 -0
  241. package/dist/validators/app-definition.d.ts.map +1 -1
  242. package/dist/validators/app-definition.js +13 -2
  243. package/dist/validators/app-definition.js.map +1 -1
  244. package/dist/validators/artifact.d.ts +1 -0
  245. package/dist/validators/artifact.d.ts.map +1 -1
  246. package/dist/validators/artifact.js +2 -0
  247. package/dist/validators/artifact.js.map +1 -1
  248. package/dist/validators/company-portability.d.ts +24 -0
  249. package/dist/validators/company-portability.d.ts.map +1 -1
  250. package/dist/validators/company-skill.d.ts +27 -0
  251. package/dist/validators/company-skill.d.ts.map +1 -1
  252. package/dist/validators/company-skill.js +8 -0
  253. package/dist/validators/company-skill.js.map +1 -1
  254. package/dist/validators/connection-intent.d.ts +5 -0
  255. package/dist/validators/connection-intent.d.ts.map +1 -1
  256. package/dist/validators/connection-intent.js +6 -1
  257. package/dist/validators/connection-intent.js.map +1 -1
  258. package/dist/validators/connection-intent.test.js +22 -0
  259. package/dist/validators/connection-intent.test.js.map +1 -1
  260. package/dist/validators/email.d.ts +5 -0
  261. package/dist/validators/email.d.ts.map +1 -1
  262. package/dist/validators/email.js +4 -0
  263. package/dist/validators/email.js.map +1 -1
  264. package/dist/validators/index.d.ts +4 -2
  265. package/dist/validators/index.d.ts.map +1 -1
  266. package/dist/validators/index.js +4 -2
  267. package/dist/validators/index.js.map +1 -1
  268. package/dist/validators/instance.d.ts +9 -2
  269. package/dist/validators/instance.d.ts.map +1 -1
  270. package/dist/validators/instance.js +5 -2
  271. package/dist/validators/instance.js.map +1 -1
  272. package/dist/validators/issue.d.ts +274 -7
  273. package/dist/validators/issue.d.ts.map +1 -1
  274. package/dist/validators/issue.js +81 -10
  275. package/dist/validators/issue.js.map +1 -1
  276. package/dist/validators/issue.test.js +10 -1
  277. package/dist/validators/issue.test.js.map +1 -1
  278. package/dist/validators/plugin.d.ts +11 -0
  279. package/dist/validators/plugin.d.ts.map +1 -1
  280. package/dist/validators/plugin.js +5 -0
  281. package/dist/validators/plugin.js.map +1 -1
  282. package/dist/validators/plugin.test.js +14 -0
  283. package/dist/validators/plugin.test.js.map +1 -1
  284. package/dist/validators/project.d.ts +4 -0
  285. package/dist/validators/project.d.ts.map +1 -1
  286. package/dist/validators/project.js +4 -0
  287. package/dist/validators/project.js.map +1 -1
  288. package/dist/validators/skill-source.d.ts +29 -0
  289. package/dist/validators/skill-source.d.ts.map +1 -0
  290. package/dist/validators/skill-source.js +26 -0
  291. package/dist/validators/skill-source.js.map +1 -0
  292. package/dist/validators/tool-access.d.ts +35 -0
  293. package/dist/validators/tool-access.d.ts.map +1 -1
  294. package/dist/validators/tool-access.js +4 -0
  295. package/dist/validators/tool-access.js.map +1 -1
  296. package/dist/workspace-restore.d.ts +8 -0
  297. package/dist/workspace-restore.d.ts.map +1 -0
  298. package/dist/workspace-restore.js +28 -0
  299. package/dist/workspace-restore.js.map +1 -0
  300. package/dist/worktree-port-registry.test.js +162 -31
  301. package/dist/worktree-port-registry.test.js.map +1 -1
  302. package/package.json +1 -1
@@ -1 +1 @@
1
- {"sources":"39ff0878b3ea12341aff89b77b62966bef1d8599d28a5d998b3f7aa254892e41","outputs":"e32437c012e535a2fa2593d80a8cdfa8a103b15f7e99c8642d925c024a5d9b66"}
1
+ {"sources":"938cbaef130fc45b10e110d08ccf70260de63ad82440bcf1b09a93ec55cf4a0f","outputs":"c19912197af3f669ce01f11c61aecac4c1be7e4587880bba0c06c297fdde91c9"}
@@ -0,0 +1,26 @@
1
+ export type AppCatalogAggregator = "composio" | "arcade" | "executor";
2
+ export interface AggregatorAppRoute {
3
+ provider: AppCatalogAggregator;
4
+ toolkit: string;
5
+ logoUrl: string;
6
+ docsUrl: string;
7
+ }
8
+ export interface AggregatorAppCatalogEntry {
9
+ slug: string;
10
+ name: string;
11
+ aliases: string[];
12
+ routes: AggregatorAppRoute[];
13
+ }
14
+ /** Public discovery metadata only. A listing does not establish app authorization. */
15
+ export declare function aggregatorAppIdentity(value: string): string;
16
+ export declare const AGGREGATOR_APP_CATALOG: AggregatorAppCatalogEntry[];
17
+ /** Include provider variants and native overlaps when checking existing accounts. */
18
+ export declare const COMPOSIO_APP_TOOLKITS: string[];
19
+ export declare function findComposioCatalogApp(toolkit: string): AggregatorAppCatalogEntry | undefined;
20
+ export declare function findAggregatorApp(provider: string, toolkit: string | null | undefined): AggregatorAppCatalogEntry | undefined;
21
+ /** Executor supports custom integrations. Only exact known service identities share branding. */
22
+ export declare function resolveAggregatorApp(provider: AppCatalogAggregator, toolkit: string, name?: string): {
23
+ slug: string;
24
+ name: string;
25
+ };
26
+ //# sourceMappingURL=aggregator-app-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator-app-catalog.d.ts","sourceRoot":"","sources":["../src/aggregator-app-catalog.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAYD,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI3D;AA8BD,eAAO,MAAM,sBAAsB,6BAC2D,CAAC;AAE/F,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,UAAgD,CAAC;AAEnF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,yCAGrD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,yCAKrF;AAED,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;;;EAWlG"}
@@ -0,0 +1,72 @@
1
+ import composio from "./composio-search-catalog.json" with { type: "json" };
2
+ import arcade from "./arcade-app-catalog.json" with { type: "json" };
3
+ // The public catalogs use different brand names for these same services.
4
+ const SERVICE_IDENTITY_ALIASES = new Map([
5
+ ["closeio", "close"],
6
+ ["microsoftexcel", "excel"],
7
+ ["microsoftonedrive", "onedrive"],
8
+ ["microsoftsharepoint", "sharepoint"],
9
+ ["squareup", "square"],
10
+ ["x", "twitter"],
11
+ ]);
12
+ /** Public discovery metadata only. A listing does not establish app authorization. */
13
+ export function aggregatorAppIdentity(value) {
14
+ const identity = value.toLowerCase().replace(/\s+(mcp|api)$/i, "")
15
+ .replace(/[^a-z0-9]/g, "");
16
+ return SERVICE_IDENTITY_ALIASES.get(identity) ?? identity;
17
+ }
18
+ const entries = new Map();
19
+ function add(name, slug, aliases, route) {
20
+ const identity = aggregatorAppIdentity(name);
21
+ const existing = entries.get(identity);
22
+ if (existing) {
23
+ existing.aliases = [...new Set([...existing.aliases, name, slug, ...aliases])];
24
+ // Prefer the ordinary toolkit over an API/MCP variant from the same provider.
25
+ if (!existing.routes.some((candidate) => candidate.provider === route.provider)) {
26
+ existing.routes.push(route);
27
+ }
28
+ return;
29
+ }
30
+ entries.set(identity, { slug, name: name.replace(/\s+(MCP|API)$/i, ""), aliases, routes: [route] });
31
+ }
32
+ for (const [toolkit, name] of composio.toolkits) {
33
+ add(name, toolkit.replaceAll("_", "-").replace(/^-+/, ""), [toolkit], {
34
+ provider: "composio", toolkit,
35
+ logoUrl: `https://logos.composio.dev/api/${toolkit}`,
36
+ docsUrl: `https://docs.composio.dev/toolkits/${toolkit}`,
37
+ });
38
+ }
39
+ for (const app of arcade.apps) {
40
+ add(app.name, app.slug, app.aliases, {
41
+ provider: "arcade", toolkit: app.toolkit, logoUrl: app.logoUrl, docsUrl: app.docsUrl,
42
+ });
43
+ }
44
+ export const AGGREGATOR_APP_CATALOG = [...entries.values()].sort((a, b) => a.name.localeCompare(b.name, "en", { sensitivity: "base" }) || a.slug.localeCompare(b.slug));
45
+ /** Include provider variants and native overlaps when checking existing accounts. */
46
+ export const COMPOSIO_APP_TOOLKITS = composio.toolkits.map(([toolkit]) => toolkit);
47
+ export function findComposioCatalogApp(toolkit) {
48
+ return AGGREGATOR_APP_CATALOG.find(app => app.routes.some(route => route.provider === "composio")
49
+ && (app.aliases.includes(toolkit) || app.routes.some(route => route.provider === "composio" && route.toolkit === toolkit)));
50
+ }
51
+ export function findAggregatorApp(provider, toolkit) {
52
+ if (!toolkit)
53
+ return undefined;
54
+ return AGGREGATOR_APP_CATALOG.find((app) => app.routes.some((route) => route.provider === provider)
55
+ && (app.routes.some(route => route.provider === provider && route.toolkit === toolkit) || app.aliases.includes(toolkit)));
56
+ }
57
+ /** Executor supports custom integrations. Only exact known service identities share branding. */
58
+ export function resolveAggregatorApp(provider, toolkit, name) {
59
+ const known = provider === "composio" ? findComposioCatalogApp(toolkit) : findAggregatorApp(provider, toolkit)
60
+ ?? AGGREGATOR_APP_CATALOG.find(app => app.routes.some(route => route.provider === provider)
61
+ && [app.slug, ...app.aliases].some(alias => aggregatorAppIdentity(alias) === aggregatorAppIdentity(toolkit)));
62
+ if (known)
63
+ return { slug: known.slug, name: known.name };
64
+ if (provider === "executor") {
65
+ const identity = aggregatorAppIdentity(toolkit);
66
+ const match = AGGREGATOR_APP_CATALOG.find(app => [app.slug, ...app.aliases].some(alias => aggregatorAppIdentity(alias) === identity));
67
+ if (match)
68
+ return { slug: match.slug, name: match.name };
69
+ }
70
+ return { slug: `${provider}:${toolkit}`, name: name || toolkit };
71
+ }
72
+ //# sourceMappingURL=aggregator-app-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator-app-catalog.js","sourceRoot":"","sources":["../src/aggregator-app-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=aggregator-app-catalog.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator-app-catalog.test.d.ts","sourceRoot":"","sources":["../src/aggregator-app-catalog.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { AGGREGATOR_APP_CATALOG, COMPOSIO_APP_TOOLKITS, findComposioCatalogApp, findAggregatorApp } from "./aggregator-app-catalog.js";
3
+ describe("public aggregator app catalog", () => {
4
+ it("indexes the full snapshots and merges provider routes for the same app", () => {
5
+ expect(AGGREGATOR_APP_CATALOG.length).toBeGreaterThan(1500);
6
+ const hubspot = findAggregatorApp("composio", "hubspot");
7
+ expect(hubspot.routes.map((route) => route.provider)).toEqual(["composio", "arcade"]);
8
+ expect(findAggregatorApp("arcade", "hubspot")).toBe(hubspot);
9
+ expect(findAggregatorApp("composio", "made-up-toolkit")).toBeUndefined();
10
+ expect(findAggregatorApp("executor", "hubspot")).toBeUndefined();
11
+ });
12
+ it("retains every upstream toolkit variant for discovery and maps it to an app card", () => {
13
+ expect(COMPOSIO_APP_TOOLKITS.length).toBeGreaterThan(1500);
14
+ expect(COMPOSIO_APP_TOOLKITS.every(toolkit => findComposioCatalogApp(toolkit))).toBe(true);
15
+ expect(findComposioCatalogApp("circleback_mcp")?.name).toBe("Circleback");
16
+ expect(findComposioCatalogApp("notion")?.name).toBe("Notion");
17
+ expect(findComposioCatalogApp("made-up-toolkit")).toBeUndefined();
18
+ });
19
+ it("keeps real provider toolkit identifiers and public logo/evidence URLs", () => {
20
+ expect(findAggregatorApp("composio", "active_campaign")?.routes[0]).toMatchObject({
21
+ toolkit: "active_campaign", logoUrl: "https://logos.composio.dev/api/active_campaign",
22
+ });
23
+ for (const app of AGGREGATOR_APP_CATALOG) {
24
+ expect(app.name).toBeTruthy();
25
+ expect(new Set(app.routes.map((route) => route.provider)).size).toBe(app.routes.length);
26
+ for (const route of app.routes) {
27
+ expect(new URL(route.logoUrl).protocol).toBe("https:");
28
+ expect(new URL(route.docsUrl).hostname).toBe(`docs.${route.provider}.dev`);
29
+ }
30
+ }
31
+ });
32
+ it.each([
33
+ ["close", "closeio"],
34
+ ["excel", "microsoft-excel"],
35
+ ["one_drive", "microsoft-onedrive"],
36
+ ["share_point", "microsoft-sharepoint"],
37
+ ["square", "squareup-api"],
38
+ ["twitter", "x"],
39
+ ])("merges the same service despite different provider branding (%s)", (composioToolkit, arcadeToolkit) => {
40
+ const app = findAggregatorApp("composio", composioToolkit);
41
+ expect(findAggregatorApp("arcade", arcadeToolkit)).toBe(app);
42
+ expect(app.routes.map((route) => route.provider)).toEqual(["composio", "arcade"]);
43
+ });
44
+ });
45
+ //# sourceMappingURL=aggregator-app-catalog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator-app-catalog.test.js","sourceRoot":"","sources":["../src/aggregator-app-catalog.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import type { ComposioAppSnapshot, ComposioAppSyncState } from "./composio-app-setup.js";
3
+ import type { AppCatalogAggregator } from "./aggregator-app-catalog.js";
4
+ export declare const AGGREGATOR_NAMES: {
5
+ readonly composio: "Composio";
6
+ readonly arcade: "Arcade";
7
+ readonly executor: "Executor";
8
+ };
9
+ export declare function isAppAggregator(value: unknown): value is AppCatalogAggregator;
10
+ /** Cached upstream observations. These neither grant access nor create tool connections. */
11
+ export interface AggregatorAppSnapshot extends ComposioAppSnapshot {
12
+ provider: AppCatalogAggregator;
13
+ appSlug: string;
14
+ appName: string;
15
+ freshness: "fresh" | "stale";
16
+ }
17
+ export interface AggregatorAppsResponse {
18
+ provider: AppCatalogAggregator;
19
+ apps: AggregatorAppSnapshot[];
20
+ discovery: {
21
+ availability: "available" | "setup_required" | "unsupported" | "disabled";
22
+ message: string | null;
23
+ };
24
+ sync: Omit<ComposioAppSyncState, "coverage"> & {
25
+ coverage: "supported_catalog" | "gateway_tools" | "visible_accounts";
26
+ };
27
+ }
28
+ export declare const aggregatorAppsSyncSchema: z.ZodObject<{
29
+ force: z.ZodDefault<z.ZodBoolean>;
30
+ }, z.core.$strict>;
31
+ export declare const aggregatorAppsRefreshSchema: z.ZodObject<{
32
+ toolkits: z.ZodDefault<z.ZodArray<z.ZodString>>;
33
+ }, z.core.$strict>;
34
+ export declare const arcadeDiscoverySetupSchema: z.ZodObject<{
35
+ apiKey: z.ZodString;
36
+ userId: z.ZodString;
37
+ }, z.core.$strict>;
38
+ export type ArcadeDiscoverySetupInput = z.infer<typeof arcadeDiscoverySetupSchema>;
39
+ /** Only trustworthy browser destinations; never expose URL credentials or active schemes. */
40
+ export declare function aggregatorManagementUrl(provider: AppCatalogAggregator, configured?: string | null): string | null;
41
+ //# sourceMappingURL=aggregator-apps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator-apps.d.ts","sourceRoot":"","sources":["../src/aggregator-apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,eAAO,MAAM,gBAAgB;aAAK,QAAQ,EAAE,UAAU;aAAE,MAAM,EAAE,QAAQ;aAAE,QAAQ,EAAE,UAAU;CAAW,CAAC;AAC1G,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAE7E;AAED,4FAA4F;AAC5F,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC;CAC9B;AACD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,IAAI,EAAE,qBAAqB,EAAE,CAAC;IAC9B,SAAS,EAAE;QACT,YAAY,EAAE,WAAW,GAAG,gBAAgB,GAAG,aAAa,GAAG,UAAU,CAAC;QAC1E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;IACF,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC,GAAG;QAC7C,QAAQ,EAAE,mBAAmB,GAAG,eAAe,GAAG,kBAAkB,CAAC;KACtE,CAAC;CACH;AACD,eAAO,MAAM,wBAAwB;;kBAA2D,CAAC;AACjG,eAAO,MAAM,2BAA2B;;kBAE7B,CAAC;AACZ,eAAO,MAAM,0BAA0B;;;kBAG5B,CAAC;AACZ,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAEnF,6FAA6F;AAC7F,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAYjH"}
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ export const AGGREGATOR_NAMES = { composio: "Composio", arcade: "Arcade", executor: "Executor" };
3
+ export function isAppAggregator(value) {
4
+ return typeof value === "string" && Object.hasOwn(AGGREGATOR_NAMES, value);
5
+ }
6
+ export const aggregatorAppsSyncSchema = z.object({ force: z.boolean().default(false) }).strict();
7
+ export const aggregatorAppsRefreshSchema = z.object({
8
+ toolkits: z.array(z.string().min(1).max(200)).max(64).default([]),
9
+ }).strict();
10
+ export const arcadeDiscoverySetupSchema = z.object({
11
+ apiKey: z.string().trim().min(1).max(8192),
12
+ userId: z.string().trim().min(1).max(500),
13
+ }).strict();
14
+ /** Only trustworthy browser destinations; never expose URL credentials or active schemes. */
15
+ export function aggregatorManagementUrl(provider, configured) {
16
+ if (configured) {
17
+ try {
18
+ const url = new URL(configured);
19
+ if (url.protocol !== "https:" || url.username || url.password || [...url.searchParams.keys()].some(key => /token|secret|api.?key|authorization|code/i.test(key)))
20
+ return null;
21
+ if (provider === "composio" && url.hostname !== "dashboard.composio.dev")
22
+ return null;
23
+ if (provider === "arcade" && url.hostname !== "app.arcade.dev")
24
+ return null;
25
+ return url.toString();
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ return provider === "composio" ? "https://dashboard.composio.dev/~/org/connect/apps"
32
+ : provider === "arcade" ? "https://app.arcade.dev/" : null;
33
+ }
34
+ //# sourceMappingURL=aggregator-apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregator-apps.js","sourceRoot":"","sources":["../src/aggregator-apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAW,CAAC;AAC1G,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC7E,CAAC;AAoBD,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AACjG,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAClE,CAAC,CAAC,MAAM,EAAE,CAAC;AACZ,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC1C,CAAC,CAAC,MAAM,EAAE,CAAC;AAGZ,6FAA6F;AAC7F,MAAM,UAAU,uBAAuB,CAAC,QAA8B,EAAE,UAA0B;IAChG,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9K,IAAI,QAAQ,KAAK,UAAU,IAAI,GAAG,CAAC,QAAQ,KAAK,wBAAwB;gBAAE,OAAO,IAAI,CAAC;YACtF,IAAI,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,gBAAgB;gBAAE,OAAO,IAAI,CAAC;YAC5E,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IAC1B,CAAC;IACD,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,mDAAmD;QAClF,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,352 @@
1
+ import { z } from "zod";
2
+ import { type AiConnectionBinding } from "./ai-connections.js";
3
+ import type { AiConnectionUsage } from "./ai-connection-usage.js";
4
+ export declare const aiConnectionRouterBindingSchema: z.ZodObject<{
5
+ mode: z.ZodLiteral<"router">;
6
+ connectionId: z.ZodString;
7
+ }, z.core.$strict>;
8
+ export declare const aiRuntimeConnectionBindingSchema: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
9
+ provider: z.ZodEnum<{
10
+ anthropic: "anthropic";
11
+ openai: "openai";
12
+ openrouter: "openrouter";
13
+ xai: "xai";
14
+ }>;
15
+ method: z.ZodEnum<{
16
+ api_key: "api_key";
17
+ subscription: "subscription";
18
+ }>;
19
+ mode: z.ZodLiteral<"responsible_user">;
20
+ }, z.core.$strict>, z.ZodObject<{
21
+ provider: z.ZodEnum<{
22
+ anthropic: "anthropic";
23
+ openai: "openai";
24
+ openrouter: "openrouter";
25
+ xai: "xai";
26
+ }>;
27
+ method: z.ZodEnum<{
28
+ api_key: "api_key";
29
+ subscription: "subscription";
30
+ }>;
31
+ mode: z.ZodLiteral<"shared">;
32
+ connectionId: z.ZodString;
33
+ grantId: z.ZodString;
34
+ }, z.core.$strict>, z.ZodObject<{
35
+ provider: z.ZodEnum<{
36
+ anthropic: "anthropic";
37
+ openai: "openai";
38
+ openrouter: "openrouter";
39
+ xai: "xai";
40
+ }>;
41
+ method: z.ZodEnum<{
42
+ api_key: "api_key";
43
+ subscription: "subscription";
44
+ }>;
45
+ mode: z.ZodLiteral<"delegated">;
46
+ connectionId: z.ZodString;
47
+ grantId: z.ZodString;
48
+ }, z.core.$strict>], "mode">, z.ZodObject<{
49
+ mode: z.ZodLiteral<"router">;
50
+ connectionId: z.ZodString;
51
+ }, z.core.$strict>]>;
52
+ export type AiRuntimeConnectionBinding = z.infer<typeof aiRuntimeConnectionBindingSchema>;
53
+ export declare const aiConnectionPoolMemberSchema: z.ZodObject<{
54
+ id: z.ZodString;
55
+ binding: z.ZodDiscriminatedUnion<[z.ZodObject<{
56
+ provider: z.ZodEnum<{
57
+ anthropic: "anthropic";
58
+ openai: "openai";
59
+ openrouter: "openrouter";
60
+ xai: "xai";
61
+ }>;
62
+ method: z.ZodEnum<{
63
+ api_key: "api_key";
64
+ subscription: "subscription";
65
+ }>;
66
+ mode: z.ZodLiteral<"responsible_user">;
67
+ }, z.core.$strict>, z.ZodObject<{
68
+ provider: z.ZodEnum<{
69
+ anthropic: "anthropic";
70
+ openai: "openai";
71
+ openrouter: "openrouter";
72
+ xai: "xai";
73
+ }>;
74
+ method: z.ZodEnum<{
75
+ api_key: "api_key";
76
+ subscription: "subscription";
77
+ }>;
78
+ mode: z.ZodLiteral<"shared">;
79
+ connectionId: z.ZodString;
80
+ grantId: z.ZodString;
81
+ }, z.core.$strict>, z.ZodObject<{
82
+ provider: z.ZodEnum<{
83
+ anthropic: "anthropic";
84
+ openai: "openai";
85
+ openrouter: "openrouter";
86
+ xai: "xai";
87
+ }>;
88
+ method: z.ZodEnum<{
89
+ api_key: "api_key";
90
+ subscription: "subscription";
91
+ }>;
92
+ mode: z.ZodLiteral<"delegated">;
93
+ connectionId: z.ZodString;
94
+ grantId: z.ZodString;
95
+ }, z.core.$strict>], "mode"> & z.ZodType<{
96
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
97
+ method: "api_key" | "subscription";
98
+ mode: "shared";
99
+ connectionId: string;
100
+ grantId: string;
101
+ } | {
102
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
103
+ method: "api_key" | "subscription";
104
+ mode: "delegated";
105
+ connectionId: string;
106
+ grantId: string;
107
+ }, {
108
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
109
+ method: "api_key" | "subscription";
110
+ mode: "responsible_user";
111
+ } | {
112
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
113
+ method: "api_key" | "subscription";
114
+ mode: "shared";
115
+ connectionId: string;
116
+ grantId: string;
117
+ } | {
118
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
119
+ method: "api_key" | "subscription";
120
+ mode: "delegated";
121
+ connectionId: string;
122
+ grantId: string;
123
+ }, z.core.$ZodTypeInternals<{
124
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
125
+ method: "api_key" | "subscription";
126
+ mode: "shared";
127
+ connectionId: string;
128
+ grantId: string;
129
+ } | {
130
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
131
+ method: "api_key" | "subscription";
132
+ mode: "delegated";
133
+ connectionId: string;
134
+ grantId: string;
135
+ }, {
136
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
137
+ method: "api_key" | "subscription";
138
+ mode: "responsible_user";
139
+ } | {
140
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
141
+ method: "api_key" | "subscription";
142
+ mode: "shared";
143
+ connectionId: string;
144
+ grantId: string;
145
+ } | {
146
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
147
+ method: "api_key" | "subscription";
148
+ mode: "delegated";
149
+ connectionId: string;
150
+ grantId: string;
151
+ }>>;
152
+ profile: z.ZodObject<{
153
+ provider: z.ZodEnum<{
154
+ acpx: "acpx";
155
+ codex: "codex";
156
+ opencode: "opencode";
157
+ }>;
158
+ acpxAgent: z.ZodOptional<z.ZodEnum<{
159
+ claude: "claude";
160
+ grok: "grok";
161
+ }>>;
162
+ model: z.ZodString;
163
+ effort: z.ZodOptional<z.ZodString>;
164
+ }, z.core.$strict>;
165
+ }, z.core.$strict>;
166
+ export declare const aiConnectionPoolConfigSchema: z.ZodObject<{
167
+ name: z.ZodString;
168
+ enabled: z.ZodDefault<z.ZodBoolean>;
169
+ mode: z.ZodDefault<z.ZodEnum<{
170
+ round_robin: "round_robin";
171
+ usage_aware: "usage_aware";
172
+ }>>;
173
+ thresholdPercent: z.ZodDefault<z.ZodNumber>;
174
+ members: z.ZodArray<z.ZodObject<{
175
+ id: z.ZodString;
176
+ binding: z.ZodDiscriminatedUnion<[z.ZodObject<{
177
+ provider: z.ZodEnum<{
178
+ anthropic: "anthropic";
179
+ openai: "openai";
180
+ openrouter: "openrouter";
181
+ xai: "xai";
182
+ }>;
183
+ method: z.ZodEnum<{
184
+ api_key: "api_key";
185
+ subscription: "subscription";
186
+ }>;
187
+ mode: z.ZodLiteral<"responsible_user">;
188
+ }, z.core.$strict>, z.ZodObject<{
189
+ provider: z.ZodEnum<{
190
+ anthropic: "anthropic";
191
+ openai: "openai";
192
+ openrouter: "openrouter";
193
+ xai: "xai";
194
+ }>;
195
+ method: z.ZodEnum<{
196
+ api_key: "api_key";
197
+ subscription: "subscription";
198
+ }>;
199
+ mode: z.ZodLiteral<"shared">;
200
+ connectionId: z.ZodString;
201
+ grantId: z.ZodString;
202
+ }, z.core.$strict>, z.ZodObject<{
203
+ provider: z.ZodEnum<{
204
+ anthropic: "anthropic";
205
+ openai: "openai";
206
+ openrouter: "openrouter";
207
+ xai: "xai";
208
+ }>;
209
+ method: z.ZodEnum<{
210
+ api_key: "api_key";
211
+ subscription: "subscription";
212
+ }>;
213
+ mode: z.ZodLiteral<"delegated">;
214
+ connectionId: z.ZodString;
215
+ grantId: z.ZodString;
216
+ }, z.core.$strict>], "mode"> & z.ZodType<{
217
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
218
+ method: "api_key" | "subscription";
219
+ mode: "shared";
220
+ connectionId: string;
221
+ grantId: string;
222
+ } | {
223
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
224
+ method: "api_key" | "subscription";
225
+ mode: "delegated";
226
+ connectionId: string;
227
+ grantId: string;
228
+ }, {
229
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
230
+ method: "api_key" | "subscription";
231
+ mode: "responsible_user";
232
+ } | {
233
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
234
+ method: "api_key" | "subscription";
235
+ mode: "shared";
236
+ connectionId: string;
237
+ grantId: string;
238
+ } | {
239
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
240
+ method: "api_key" | "subscription";
241
+ mode: "delegated";
242
+ connectionId: string;
243
+ grantId: string;
244
+ }, z.core.$ZodTypeInternals<{
245
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
246
+ method: "api_key" | "subscription";
247
+ mode: "shared";
248
+ connectionId: string;
249
+ grantId: string;
250
+ } | {
251
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
252
+ method: "api_key" | "subscription";
253
+ mode: "delegated";
254
+ connectionId: string;
255
+ grantId: string;
256
+ }, {
257
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
258
+ method: "api_key" | "subscription";
259
+ mode: "responsible_user";
260
+ } | {
261
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
262
+ method: "api_key" | "subscription";
263
+ mode: "shared";
264
+ connectionId: string;
265
+ grantId: string;
266
+ } | {
267
+ provider: "anthropic" | "openai" | "openrouter" | "xai";
268
+ method: "api_key" | "subscription";
269
+ mode: "delegated";
270
+ connectionId: string;
271
+ grantId: string;
272
+ }>>;
273
+ profile: z.ZodObject<{
274
+ provider: z.ZodEnum<{
275
+ acpx: "acpx";
276
+ codex: "codex";
277
+ opencode: "opencode";
278
+ }>;
279
+ acpxAgent: z.ZodOptional<z.ZodEnum<{
280
+ claude: "claude";
281
+ grok: "grok";
282
+ }>>;
283
+ model: z.ZodString;
284
+ effort: z.ZodOptional<z.ZodString>;
285
+ }, z.core.$strict>;
286
+ }, z.core.$strict>>;
287
+ }, z.core.$strict>;
288
+ export type AiConnectionPoolMember = z.infer<typeof aiConnectionPoolMemberSchema>;
289
+ export type AiConnectionPoolConfig = z.infer<typeof aiConnectionPoolConfigSchema>;
290
+ export interface AiConnectionPool extends AiConnectionPoolConfig {
291
+ id: string;
292
+ companyId: string;
293
+ pluginKey: string;
294
+ revision: number;
295
+ }
296
+ /** Host-authorized metadata only. No credentials or raw provider responses. */
297
+ export interface AiConnectionRouterRequest {
298
+ companyId: string;
299
+ pool: AiConnectionPool;
300
+ agentId: string;
301
+ taskKey: string;
302
+ lastMemberId: string | null;
303
+ cursorVersion: number;
304
+ /** Opaque IDs preserve order without exposing unauthorized account metadata. */
305
+ memberOrder: string[];
306
+ pinnedMemberId?: string;
307
+ candidates: Array<{
308
+ member: AiConnectionPoolMember;
309
+ runtimeConfig: Record<string, unknown>;
310
+ notes: string[];
311
+ usage?: AiConnectionUsage;
312
+ }>;
313
+ now: string;
314
+ }
315
+ export type AiConnectionRouterResult = {
316
+ kind: "selected";
317
+ memberId: string;
318
+ skipped?: Record<string, string>;
319
+ } | {
320
+ kind: "exhausted";
321
+ retryAt: string;
322
+ skipped: Record<string, string>;
323
+ } | {
324
+ kind: "unavailable";
325
+ skipped: Record<string, string>;
326
+ };
327
+ export interface AiConnectionPoolSaveInput {
328
+ companyId: string;
329
+ id?: string;
330
+ expectedRevision?: number;
331
+ config: AiConnectionPoolConfig;
332
+ }
333
+ export interface AiConnectionRouterSelection {
334
+ poolId: string;
335
+ memberId: string;
336
+ binding: AiConnectionBinding;
337
+ runtimeConfig: Record<string, unknown>;
338
+ notes: string[];
339
+ }
340
+ /** Stable, collision-free catalog identity across plugin reinstallations. */
341
+ export declare function aiConnectionRouterSlug(pluginKey: string): string;
342
+ export declare function aiConnectionRouterAppDefinition(pluginKey: string, descriptor: {
343
+ name: string;
344
+ description: string;
345
+ }, availability?: {
346
+ available: boolean;
347
+ reason?: string;
348
+ }): import("./types/app-definition.js").AppDefinition;
349
+ export declare function aiConnectionRouterPluginKey(connection: {
350
+ config?: Record<string, unknown> | null;
351
+ }): string | null;
352
+ //# sourceMappingURL=ai-connection-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-connection-router.d.ts","sourceRoot":"","sources":["../src/ai-connection-router.ts"],"names":[],"mappings":"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"}