@desplega.ai/agent-swarm 2.2.0 → 2.4.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 (266) hide show
  1. package/README.md +1 -0
  2. package/dist/{acp-adapter-k0vwfyvn.js → acp-adapter-kedstxx6.js} +6 -6
  3. package/dist/{actions-w4pnb8vz.js → actions-vget6r1k.js} +18 -16
  4. package/dist/{amp-adapter-0cmxb2t5.js → amp-adapter-xeb5mktv.js} +2 -2
  5. package/dist/{app-zneem7g9.js → app-mqap8t8m.js} +3 -3
  6. package/dist/{assistant-wbzd2rnr.js → assistant-h0gv97mv.js} +20 -18
  7. package/dist/{boot-reembed-4kx69j3g.js → boot-reembed-qr8a894z.js} +1 -1
  8. package/dist/{boot-reembed-db0wwgy1.js → boot-reembed-rj85jjhw.js} +1 -1
  9. package/dist/{boot-scrub-sweep-tfv4d3mm.js → boot-scrub-sweep-eyfvn6v9.js} +3 -3
  10. package/dist/{boot-seeds-w2hmkxn5.js → boot-seeds-xs9a8dx1.js} +4 -4
  11. package/dist/{claude-adapter-5qrc2paq.js → claude-adapter-bm23cye7.js} +5 -5
  12. package/dist/{claude-managed-adapter-n7ahjyx6.js → claude-managed-adapter-1mwrsm9d.js} +2 -2
  13. package/dist/{claude-managed-setup-7ra32em4.js → claude-managed-setup-gkfgks4j.js} +1 -1
  14. package/dist/{claude-sdk-session-cd02gc76.js → claude-sdk-session-apb4ypz3.js} +5 -5
  15. package/dist/cli-02vhhssk.js +848 -0
  16. package/dist/{cli-4ync7m60.js → cli-0ebey9hg.js} +1 -1
  17. package/dist/{cli-665j3feb.js → cli-0xk505e8.js} +1 -1
  18. package/dist/{cli-8c1m9mhy.js → cli-1cevz46c.js} +5 -5
  19. package/dist/{cli-gzvb3d4a.js → cli-1jx0srjt.js} +3 -3
  20. package/dist/{cli-zj4d6afs.js → cli-1pa3rz69.js} +21 -6
  21. package/dist/{cli-vmbakbq0.js → cli-2rwet3r7.js} +1 -1
  22. package/dist/{cli-azs9bhc5.js → cli-3wjs22x3.js} +2 -2
  23. package/dist/{cli-tba8fxf9.js → cli-4fhyq711.js} +45 -36
  24. package/dist/{cli-ak4c12mh.js → cli-5ff2sjyt.js} +1 -1
  25. package/dist/{cli-6q7pyd3k.js → cli-5s5hx57y.js} +5 -3
  26. package/dist/{cli-h23mr2s6.js → cli-6ftrrwm1.js} +9 -371
  27. package/dist/{cli-9ac0mkg5.js → cli-8b9wvjps.js} +1 -1
  28. package/dist/cli-8cxkw1f5.js +382 -0
  29. package/dist/{cli-xhgtay7w.js → cli-8rwvksbc.js} +2 -2
  30. package/dist/{cli-e09hj50q.js → cli-8wkb09q5.js} +11 -11
  31. package/dist/{cli-ksrphveb.js → cli-a1esmmee.js} +14 -2
  32. package/dist/{cli-xnp2vkx7.js → cli-avmqhatn.js} +7 -7
  33. package/dist/{cli-xx13gqf3.js → cli-b80a1100.js} +1 -1
  34. package/dist/{cli-z1hh99j0.js → cli-bfc3k1x5.js} +3 -3
  35. package/dist/{cli-0k9rcwfy.js → cli-bhwa8rzc.js} +33 -15
  36. package/dist/{cli-8cvvytad.js → cli-bn26xbcs.js} +2 -2
  37. package/dist/{cli-k28p6xh7.js → cli-c8fwpgqb.js} +1 -1
  38. package/dist/{cli-rc3r0bnh.js → cli-ccn0eybf.js} +1 -1
  39. package/dist/{cli-9td5ss65.js → cli-dsgj3e7a.js} +2 -2
  40. package/dist/{cli-jrk8mj0t.js → cli-ecshf504.js} +2 -2
  41. package/dist/{cli-raejy0mp.js → cli-eqgfs202.js} +1 -1
  42. package/dist/{cli-ppapy34w.js → cli-f3nx1h8z.js} +2 -2
  43. package/dist/{cli-c9vrwcpb.js → cli-ffbrkh1r.js} +74 -35
  44. package/dist/{cli-mnry16kh.js → cli-kk2r80n5.js} +4 -4
  45. package/dist/{cli-c0dpzwnx.js → cli-kz116kvw.js} +3 -3
  46. package/dist/{cli-e5y285rg.js → cli-mvg2hf8p.js} +4 -4
  47. package/dist/{cli-2jm992rm.js → cli-mz1ezzzh.js} +2 -2
  48. package/dist/{cli-dw0njd9q.js → cli-nme7wery.js} +6 -6
  49. package/dist/{cli-mvsfbbgq.js → cli-nrrg0fvy.js} +18 -4
  50. package/dist/{cli-8jtrekpy.js → cli-p1m2b6gc.js} +7 -7
  51. package/dist/{cli-4c7k75rq.js → cli-rg7ntypm.js} +378 -84
  52. package/dist/{cli-z3dk189k.js → cli-rsd7ga7v.js} +10 -8
  53. package/dist/{cli-etvn5ej2.js → cli-sppc0cmw.js} +1 -1
  54. package/dist/{cli-8w65vwee.js → cli-tg9ksbn8.js} +1 -1
  55. package/dist/{cli-th8krqbf.js → cli-tgvpmnwz.js} +2 -2
  56. package/dist/{cli-hwc4a9xm.js → cli-tj4j2ts4.js} +6 -6
  57. package/dist/{cli-jhhb2v9n.js → cli-ttaz6c7m.js} +2 -2
  58. package/dist/{cli-w7z94e6c.js → cli-tx00c0h6.js} +4 -2
  59. package/dist/{cli-4g629sgr.js → cli-wrv09v7q.js} +20 -1
  60. package/dist/{cli-cby329ny.js → cli-wyrr38xm.js} +2 -2
  61. package/dist/{cli-5ks6x36q.js → cli-x1p5dhq2.js} +3 -3
  62. package/dist/{cli-bddxamg7.js → cli-x719j3vs.js} +220 -629
  63. package/dist/{cli-ztcxv5nv.js → cli-xfe63zx3.js} +1 -1
  64. package/dist/{cli-q6gw45wj.js → cli-ywyrffff.js} +1 -1
  65. package/dist/{cli-p46xdr1m.js → cli-zvze9rbm.js} +1 -1
  66. package/dist/cli.js +15 -15
  67. package/dist/{codex-adapter-m0fx3v3s.js → codex-adapter-pp2gq8gr.js} +3 -3
  68. package/dist/{codex-hook-x6tm6y5m.js → codex-hook-qwzccd64.js} +1 -1
  69. package/dist/{codex-session-runner-j9m2gfyy.js → codex-session-runner-0vzn09t8.js} +3 -3
  70. package/dist/{commands-ktnqwrv4.js → commands-psqhkttb.js} +2 -2
  71. package/dist/{controller-nex2he8v.js → controller-t20vz2k8.js} +2 -2
  72. package/dist/{controllers-connect-6yhwqv9v.js → controllers-connect-gkxmqw9d.js} +24 -20
  73. package/dist/{cursor-adapter-02s5ekva.js → cursor-adapter-3v542qe5.js} +1 -1
  74. package/dist/{db-jvr86v7f.js → db-2xbyenjr.js} +2 -2
  75. package/dist/{db-19tw9r5s.js → db-nc1rd869.js} +3 -2
  76. package/dist/{dispatcher-d3mnsg2y.js → dispatcher-ewceb8ts.js} +17 -15
  77. package/dist/{dsh-adapter-63rvej88.js → dsh-adapter-75xwh78t.js} +1 -1
  78. package/dist/{easter-egg-3d-6hg2r942.js → easter-egg-3d-xsc47jwf.js} +1 -1
  79. package/dist/{execute-bcqc69a5.js → execute-gzmw1mnw.js} +1 -1
  80. package/dist/{external-channel-44cwer32.js → external-channel-a5dsmxn4.js} +2 -2
  81. package/dist/{google-generative-ai-phpmwxvg.js → google-generative-ai-bmq8gkf3.js} +1 -1
  82. package/dist/{google-vertex-es9ybgdy.js → google-vertex-b1rvp52s.js} +1 -1
  83. package/dist/{grok-adapter-ysp907f6.js → grok-adapter-vj88xr23.js} +7 -7
  84. package/dist/handlers-zbs90bny.js +39 -0
  85. package/dist/{heartbeat-2etacsqq.js → heartbeat-t2m9r3wa.js} +20 -18
  86. package/dist/{hook-mzxxs5n2.js → hook-8femx1bg.js} +4 -4
  87. package/dist/{hook-3kvmax6d.js → hook-xa677f8r.js} +5 -5
  88. package/dist/{http-fn978m0g.js → http-xpmmq028.js} +940 -269
  89. package/dist/{index-e4tsa1h7.js → index-8pwc1jc8.js} +17 -15
  90. package/dist/{index-w2wr89xd.js → index-cdzyfrsp.js} +1 -1
  91. package/dist/{index-1r8hw4vd.js → index-dg2tmj99.js} +17 -15
  92. package/dist/index-nxa6me0q.js +41 -0
  93. package/dist/{index-039x2sag.js → index-s7ckdajq.js} +42 -14
  94. package/dist/{index-wgsw9xcz.js → index-syztqdt6.js} +1 -1
  95. package/dist/{index-x0q2a4f9.js → index-ysd45kgc.js} +1 -1
  96. package/dist/{index-g909y089.js → index-zgvqzjsw.js} +8 -8
  97. package/dist/{keepalive-d4nzs76x.js → keepalive-3nr4st3r.js} +3 -3
  98. package/dist/{lead-8h5n9k5f.js → lead-td8h2sfn.js} +33 -31
  99. package/dist/{maintenance-ea6jfw42.js → maintenance-verwpe2c.js} +1 -1
  100. package/dist/{oauth-refresh-sweep-3f25djq3.js → oauth-refresh-sweep-9q2t0y3q.js} +2 -2
  101. package/dist/{onboard-pvk7hdb2.js → onboard-aytqedmq.js} +2 -2
  102. package/dist/{opencode-adapter-eeesgfqk.js → opencode-adapter-f4hryjny.js} +4 -4
  103. package/dist/{otel-impl-qb7nhgdp.js → otel-impl-hckw4wt1.js} +1 -1
  104. package/dist/{pi-mono-adapter-zasp3ze3.js → pi-mono-adapter-hxby0ce1.js} +6 -6
  105. package/dist/{pricing-refresh-6ehwkcmp.js → pricing-refresh-5nvme3sm.js} +3 -3
  106. package/dist/{rbac-roles-km0f9cmm.js → rbac-roles-pd8c26m1.js} +5 -3
  107. package/dist/{rbac-roles-9648nh00.js → rbac-roles-vbpy21mg.js} +2 -2
  108. package/dist/{render-v2-xkze1wef.js → render-v2-7nqgvk2q.js} +3 -3
  109. package/dist/{resume-tq0bbvt5.js → resume-b6djcj3c.js} +6 -6
  110. package/dist/{runtime-ar8310ba.js → runtime-txrxc9za.js} +1 -1
  111. package/dist/session-access-fc3f9y12.js +25 -0
  112. package/dist/{setup-rnrazxvd.js → setup-n39szm6b.js} +1 -1
  113. package/dist/{virtual-modules-wzk6jf3a.js → virtual-modules-wyp2k6z3.js} +2 -2
  114. package/dist/{work-objects-e75q2rqs.js → work-objects-jem2fre0.js} +20 -18
  115. package/dist/{worker-4ww4hjef.js → worker-wr6xgfr2.js} +33 -31
  116. package/openapi.json +1011 -115
  117. package/package.json +2 -2
  118. package/src/apps/action-caller.ts +6 -0
  119. package/src/apps/script-types.ts +16 -3
  120. package/src/be/asset-key-audit.ts +4 -13
  121. package/src/be/db/active-sessions.ts +5 -0
  122. package/src/be/db/session-visibility.ts +29 -0
  123. package/src/be/db/tasks/read.ts +61 -3
  124. package/src/be/db/tasks/write.ts +15 -6
  125. package/src/be/db.ts +149 -66
  126. package/src/be/events.ts +11 -0
  127. package/src/be/migrations/227_inbox_item_state_last_read_at.sql +1 -0
  128. package/src/be/migrations/230_session_shares.sql +23 -0
  129. package/src/be/rbac-roles.ts +2 -0
  130. package/src/be/seed-scripts/catalog/heartbeat-jev-gate.ts +22 -4
  131. package/src/be/session-shares.ts +244 -0
  132. package/src/be/swarm-config-guard.ts +23 -2
  133. package/src/commands/runner.ts +11 -0
  134. package/src/heartbeat/heartbeat.ts +25 -7
  135. package/src/http/active-sessions.ts +13 -2
  136. package/src/http/agents.ts +10 -3
  137. package/src/http/all-routes.ts +1 -0
  138. package/src/http/api-keys.ts +3 -1
  139. package/src/http/approval-requests.ts +2 -1
  140. package/src/http/apps.ts +36 -11
  141. package/src/http/assets.ts +26 -4
  142. package/src/http/config.ts +3 -0
  143. package/src/http/context.ts +2 -0
  144. package/src/http/core.ts +39 -2
  145. package/src/http/events.ts +6 -2
  146. package/src/http/favorite-owner.ts +1 -1
  147. package/src/http/fs.ts +38 -3
  148. package/src/http/inbox-state.ts +58 -8
  149. package/src/http/index.ts +3 -1
  150. package/src/http/memory.ts +3 -1
  151. package/src/http/ranking.ts +367 -0
  152. package/src/http/realtime.ts +26 -21
  153. package/src/http/route-def.ts +77 -11
  154. package/src/http/script-runs.ts +2 -1
  155. package/src/http/scripts.ts +8 -0
  156. package/src/http/session-access.ts +179 -0
  157. package/src/http/session-data.ts +10 -2
  158. package/src/http/sessions.ts +212 -12
  159. package/src/http/stats.ts +7 -3
  160. package/src/http/tasks.ts +83 -7
  161. package/src/http/used-by.ts +11 -3
  162. package/src/kv-reserved-namespaces.ts +1 -0
  163. package/src/prompts/session-templates.ts +3 -1
  164. package/src/providers/amp-adapter.ts +1 -1
  165. package/src/ranking/telemetry-ranking.ts +147 -0
  166. package/src/ranking/usage.ts +57 -0
  167. package/src/rbac/admission.ts +22 -7
  168. package/src/rbac/legacy-policy.ts +2 -0
  169. package/src/rbac/permissions.ts +9 -0
  170. package/src/realtime/auth.ts +69 -0
  171. package/src/realtime/tickets.ts +4 -1
  172. package/src/realtime/transport.ts +77 -9
  173. package/src/slack/blocks.ts +18 -0
  174. package/src/slack/dm.ts +29 -0
  175. package/src/telemetry-contract/EVENTS.md +3 -0
  176. package/src/telemetry-contract/SOURCE.json +37 -4
  177. package/src/telemetry-contract/catalog.json +69 -0
  178. package/src/telemetry-contract/ranking/fixtures/expected.json +30 -0
  179. package/src/telemetry-contract/ranking/fixtures/invalid/bad-category.json +11 -0
  180. package/src/telemetry-contract/ranking/fixtures/invalid/bad-claim.json +11 -0
  181. package/src/telemetry-contract/ranking/fixtures/invalid/blank-description.json +11 -0
  182. package/src/telemetry-contract/ranking/fixtures/invalid/blank-name.json +11 -0
  183. package/src/telemetry-contract/ranking/fixtures/invalid/description-too-long.json +11 -0
  184. package/src/telemetry-contract/ranking/fixtures/invalid/domain-uppercase.json +11 -0
  185. package/src/telemetry-contract/ranking/fixtures/invalid/domain-with-scheme.json +11 -0
  186. package/src/telemetry-contract/ranking/fixtures/invalid/domain-with-www.json +11 -0
  187. package/src/telemetry-contract/ranking/fixtures/invalid/http-source-url.json +11 -0
  188. package/src/telemetry-contract/ranking/fixtures/invalid/missing-description.json +10 -0
  189. package/src/telemetry-contract/ranking/fixtures/invalid/missing-version.json +10 -0
  190. package/src/telemetry-contract/ranking/fixtures/invalid/name-not-string.json +11 -0
  191. package/src/telemetry-contract/ranking/fixtures/invalid/name-too-long.json +11 -0
  192. package/src/telemetry-contract/ranking/fixtures/invalid/not-object.json +1 -0
  193. package/src/telemetry-contract/ranking/fixtures/invalid/null.json +1 -0
  194. package/src/telemetry-contract/ranking/fixtures/invalid/other-with-subcategory.json +11 -0
  195. package/src/telemetry-contract/ranking/fixtures/invalid/oversize.json +1 -0
  196. package/src/telemetry-contract/ranking/fixtures/invalid/short-claim.json +11 -0
  197. package/src/telemetry-contract/ranking/fixtures/invalid/subcategory-other-category.json +11 -0
  198. package/src/telemetry-contract/ranking/fixtures/invalid/trailing-data.json +1 -0
  199. package/src/telemetry-contract/ranking/fixtures/invalid/unknown-field.json +12 -0
  200. package/src/telemetry-contract/ranking/fixtures/invalid/unsupported-version.json +11 -0
  201. package/src/telemetry-contract/ranking/fixtures/invalid/updated-at-not-date.json +11 -0
  202. package/src/telemetry-contract/ranking/fixtures/invalid/updated-at-offset.json +11 -0
  203. package/src/telemetry-contract/ranking/fixtures/invalid/wrong-case-field.json +11 -0
  204. package/src/telemetry-contract/ranking/fixtures/valid/category-without-subcategory.json +11 -0
  205. package/src/telemetry-contract/ranking/fixtures/valid/full.json +11 -0
  206. package/src/telemetry-contract/ranking/fixtures/valid/minimal.json +11 -0
  207. package/src/telemetry-contract/ranking/fixtures/valid/padded-text.json +11 -0
  208. package/src/telemetry-contract/ranking/fixtures/valid/unicode-name.json +11 -0
  209. package/src/telemetry-contract/ranking/listing.v1.schema.json +61 -0
  210. package/src/telemetry-contract/ranking/taxonomy.json +8 -0
  211. package/src/telemetry-contract/ranking-taxonomy.gen.ts +11 -0
  212. package/src/telemetry-contract/types.gen.ts +708 -1
  213. package/src/telemetry.ts +26 -2
  214. package/src/tests/apps-rbac.test.ts +189 -2
  215. package/src/tests/apps-script-types.test.ts +16 -3
  216. package/src/tests/asset-key-api.test.ts +128 -0
  217. package/src/tests/asset-key-invariants.test.ts +179 -3
  218. package/src/tests/asset-key-migration.test.ts +35 -0
  219. package/src/tests/check-pr-body.test.ts +23 -0
  220. package/src/tests/check-ranking-entry.test.ts +146 -0
  221. package/src/tests/db-extraction-contract.test.ts +1 -0
  222. package/src/tests/db-task-read-contract.test.ts +1 -0
  223. package/src/tests/docs-index-footprint.test.js +2 -2
  224. package/src/tests/heartbeat-checklist.test.ts +88 -0
  225. package/src/tests/heartbeat-jev-gate.test.ts +394 -10
  226. package/src/tests/inbox-state.test.ts +167 -0
  227. package/src/tests/kv-tool.test.ts +15 -0
  228. package/src/tests/org-identity.test.ts +44 -0
  229. package/src/tests/ranking-listing.test.ts +112 -0
  230. package/src/tests/ranking-route.test.ts +319 -0
  231. package/src/tests/ranking-usage.test.ts +50 -0
  232. package/src/tests/rbac-admission-e2e.test.ts +8 -0
  233. package/src/tests/rbac-admission.test.ts +38 -0
  234. package/src/tests/rbac-charact-http.test.ts +4 -3
  235. package/src/tests/rbac-engine.test.ts +2 -0
  236. package/src/tests/rbac-roles.test.ts +2 -0
  237. package/src/tests/realtime-room-surfaces.test.ts +3 -1
  238. package/src/tests/realtime-session-join-race.test.ts +142 -0
  239. package/src/tests/realtime-tickets.test.ts +24 -17
  240. package/src/tests/realtime-transport.test.ts +91 -0
  241. package/src/tests/script-connections.test.ts +2 -0
  242. package/src/tests/session-route-posture.test.ts +639 -0
  243. package/src/tests/session-sharing-routes.test.ts +282 -0
  244. package/src/tests/session-sharing.test.ts +526 -0
  245. package/src/tests/sessions-detail-batch.test.ts +7 -1
  246. package/src/tests/slack-tool-blocks.test.ts +101 -0
  247. package/src/tests/slack-update.test.ts +55 -0
  248. package/src/tests/slack-user-dm.test.ts +177 -0
  249. package/src/tests/used-by-route.test.ts +10 -0
  250. package/src/tools/slack-post.ts +18 -12
  251. package/src/tools/slack-read.ts +13 -1
  252. package/src/tools/slack-reply.ts +7 -10
  253. package/src/tools/slack-start-thread.ts +18 -11
  254. package/src/tools/slack-update.ts +2 -9
  255. package/src/types.ts +37 -0
  256. package/src/utils/org-identity.ts +33 -0
  257. package/templates/skills/apps/SKILL.md +17 -0
  258. package/templates/skills/apps/content.md +17 -0
  259. package/templates/skills/code-quality/content.md +2 -2
  260. package/templates/skills/pages/content.md +4 -0
  261. package/templates/skills/swarm-scripts/SKILL.md +6 -0
  262. package/templates/skills/swarm-scripts/content.md +6 -0
  263. package/dist/handlers-t5pbabwf.js +0 -37
  264. package/dist/index-qyjbb7br.js +0 -39
  265. package/dist/{cli-n5mrsg0f.js → cli-60cgh1rv.js} +3 -3
  266. /package/dist/{cli-j0v75y13.js → cli-y83zk5sb.js} +0 -0
@@ -49,6 +49,141 @@ export interface paths {
49
49
  patch?: never;
50
50
  trace?: never;
51
51
  };
52
+ "/v1/used-by": {
53
+ parameters: {
54
+ query?: never;
55
+ header?: never;
56
+ path?: never;
57
+ cookie?: never;
58
+ };
59
+ get?: never;
60
+ put?: never;
61
+ /**
62
+ * Record a "used by" logo consent change
63
+ * @description Stores one grant or revoke of an install's consent to show its org's logo
64
+ * on agent-swarm.dev, then posts it to the feedback Slack channel. Nothing is
65
+ * published automatically: a human approves each logo by hand. Called
66
+ * server-to-server by the agent-swarm API; there is no read endpoint. The
67
+ * JSON body must not exceed 4 KB.
68
+ */
69
+ post: operations["submitUsedByConsent"];
70
+ delete?: never;
71
+ options?: never;
72
+ head?: never;
73
+ patch?: never;
74
+ trace?: never;
75
+ };
76
+ "/v1/logo": {
77
+ parameters: {
78
+ query?: never;
79
+ header?: never;
80
+ path?: never;
81
+ cookie?: never;
82
+ };
83
+ /**
84
+ * Fetch an org logo by website hostname
85
+ * @description Returns a 128 px PNG logo for `domain`, fetched from logo.dev with a key held
86
+ * only by this service, so dashboards (self-hosted included) can show their
87
+ * org's logo without the key reaching their config or UI bundle. Unknown
88
+ * domains get logo.dev's generated monogram. Answers are cached in memory for a
89
+ * day (a 404 for an hour), and browsers may cache the image for a day. Rate
90
+ * limited per IP: a burst of 60, then one per second.
91
+ */
92
+ get: operations["getOrgLogo"];
93
+ put?: never;
94
+ post?: never;
95
+ delete?: never;
96
+ options?: never;
97
+ head?: never;
98
+ patch?: never;
99
+ trace?: never;
100
+ };
101
+ "/v1/fleet/benchmarks": {
102
+ parameters: {
103
+ query?: never;
104
+ header?: never;
105
+ path?: never;
106
+ cookie?: never;
107
+ };
108
+ /**
109
+ * Fleet percentiles for tasks per week and task success rate
110
+ * @description Percentiles over production agent-swarm installs with at least 10 finished
111
+ * tasks in the last 30 days, overall and by agent count (`1`, `2-5`, `6+`).
112
+ * Internal, QA, test and E2B installs are excluded. Aggregates only: no install
113
+ * ID or org name, and any bucket or metric with fewer than 20 installs is
114
+ * omitted. Recomputed hourly from `raw_events`; the request carries no install
115
+ * ID. Called server to server by agent-swarm API servers, so the response sends
116
+ * no CORS headers. Rate limited per IP: a burst of 10, then 10 per minute.
117
+ */
118
+ get: operations["getFleetBenchmarks"];
119
+ put?: never;
120
+ post?: never;
121
+ delete?: never;
122
+ options?: never;
123
+ head?: never;
124
+ patch?: never;
125
+ trace?: never;
126
+ };
127
+ "/v1/ranking": {
128
+ parameters: {
129
+ query?: never;
130
+ header?: never;
131
+ path?: never;
132
+ cookie?: never;
133
+ };
134
+ /**
135
+ * Opted-in agent-swarm installs ranked by tokens
136
+ * @description Copies OpenRouter's app-ranking category response
137
+ * (`/api/frontend/v1/apps/marketplace/category`) key for key, so an
138
+ * OpenRouter-style client reads it unchanged, and adds the other OpenRouter
139
+ * app pages' fields under their OpenRouter names. Without `domain`:
140
+ * `chart` and `titleMap` (the category chart, stacked by app) and
141
+ * `trending` (the index page's fastest growing apps). With `domain`: `chart`
142
+ * stacked by model, `totalTokens`, `rank`, `modelsUsed` and
143
+ * `appModelAnalytics` (the app page). Tokens are the only metric served:
144
+ * `total_requests` is always 0. An install is listed when its
145
+ * `community/ranking/<domain>.json` file is merged into agent-swarm `main`, it
146
+ * sent a valid `ranking.opted_in` listing with that file's claim first, it has
147
+ * not opted out since, it is not an internal, test, E2B or non-production
148
+ * install, and its bound `ranking.usage` has tokens in the period. Recomputed
149
+ * hourly. Called server to server by the landing, so the response sends no
150
+ * CORS headers. Rate limited per IP: a burst of 10, then 10 per minute.
151
+ */
152
+ get: operations["getRanking"];
153
+ put?: never;
154
+ post?: never;
155
+ delete?: never;
156
+ options?: never;
157
+ head?: never;
158
+ patch?: never;
159
+ trace?: never;
160
+ };
161
+ "/v1/ranking/verify": {
162
+ parameters: {
163
+ query?: never;
164
+ header?: never;
165
+ path?: never;
166
+ cookie?: never;
167
+ };
168
+ /**
169
+ * Check a proposed ranking entry for the agent-swarm PR check
170
+ * @description Reads the telemetry store live (no cache) and reports whether an install
171
+ * sent a valid `ranking.opted_in` listing with this claim and domain first,
172
+ * has not opted out since, is not excluded, sent telemetry in the last 7
173
+ * days, and still declares this domain as its website. `listing` shows the
174
+ * reviewer what the ranking would display; it never includes the claim.
175
+ * Sends no CORS headers. Rate limited per IP: a burst of 10, then 10 per
176
+ * minute.
177
+ */
178
+ get: operations["verifyRankingEntry"];
179
+ put?: never;
180
+ post?: never;
181
+ delete?: never;
182
+ options?: never;
183
+ head?: never;
184
+ patch?: never;
185
+ trace?: never;
186
+ };
52
187
  }
53
188
  export type webhooks = Record<string, never>;
54
189
  export interface components {
@@ -225,6 +360,26 @@ export interface components {
225
360
  */
226
361
  submitted_at: string;
227
362
  };
363
+ UsedByConsent: {
364
+ /** @description Agent-swarm installation identifier. Omit it when the install has none (telemetry off). */
365
+ install_id?: string | null;
366
+ org_name: string;
367
+ /** @description Lowercase hostname the admin declared, without scheme, `www.`, path or port. */
368
+ org_website: string;
369
+ /** @description The admin's email domain. The Slack post says whether it matches `org_website`. */
370
+ org_domain?: string | null;
371
+ /** @description true grants consent, false revokes it. */
372
+ granted: boolean;
373
+ /**
374
+ * Format: date-time
375
+ * @description When the admin changed the setting (RFC3339).
376
+ */
377
+ changed_at: string;
378
+ };
379
+ UsedByAcceptedResponse: {
380
+ /** @constant */
381
+ status: "accepted";
382
+ };
228
383
  FeedbackAcceptedResponse: {
229
384
  /** @constant */
230
385
  status: "accepted";
@@ -242,6 +397,144 @@ export interface components {
242
397
  /** @description Human-readable detail, such as the offending property name. */
243
398
  message: string;
244
399
  };
400
+ FleetBenchmarks: {
401
+ /** @enum {string} */
402
+ window: "30d";
403
+ /** Format: date-time */
404
+ generatedAt: string;
405
+ /** @description k-anonymity floor. Buckets and metrics below it are omitted. */
406
+ minInstallsPerBucket: number;
407
+ /** @description An install needs this many completed or failed tasks in the window to count. */
408
+ minFinishedTasks: number;
409
+ overall: components["schemas"]["FleetBenchmarkBlock"];
410
+ /** @description Keyed by `1`, `2-5` or `6+`. A bucket with fewer than `minInstallsPerBucket` installs is absent. */
411
+ byAgentCount: {
412
+ [key: string]: components["schemas"]["FleetBenchmarkBlock"];
413
+ };
414
+ };
415
+ FleetBenchmarkBlock: {
416
+ installs: number;
417
+ tasksPerWeek: components["schemas"]["FleetMetric"];
418
+ taskSuccessRate: components["schemas"]["FleetMetric"];
419
+ };
420
+ /** @description Linear-interpolated percentiles. Below the floor, only `n` and `omitted` are present. */
421
+ FleetMetric: {
422
+ /** @description Installs contributing to this metric. */
423
+ n: number;
424
+ p25?: number;
425
+ p50?: number;
426
+ p75?: number;
427
+ p90?: number;
428
+ omitted?: string;
429
+ };
430
+ RankingResponse: {
431
+ data: {
432
+ apps: components["schemas"]["RankingRow"][];
433
+ /** @description The `group` query value, or `agent-swarm` for every category. */
434
+ group: string;
435
+ /** @description The `subcategory` query value, or null. */
436
+ subcategory: string | null;
437
+ /** @description Subcategories in the group with 3 or more listed entries in the period, most entries first. */
438
+ subcategories: string[];
439
+ /** @description Subcategories in the group with 1 or 2 listed entries in the period. */
440
+ lowCountSubcategories: string[];
441
+ chart?: components["schemas"]["RankingChart"];
442
+ /** @description Without `domain`. The title of every `app_id` key in `chart`, like OpenRouter's category-chart `titleMap`. */
443
+ titleMap?: {
444
+ [key: string]: string;
445
+ };
446
+ /** @description Without `domain`. Listed apps (within `group` and `subcategory`) whose period tokens grew against the previous period of the same length, most tokens gained first. An app with no tokens in the previous period has no baseline and is left out. */
447
+ trending?: components["schemas"]["RankingTrending"][];
448
+ /** @description With `domain`. Every counted day's tokens (held days excluded). */
449
+ totalTokens?: number;
450
+ /** @description With `domain`. The daily global rank (`period=day`), or null with no tokens today. */
451
+ rank?: number | null;
452
+ /** @description With `domain`. Models with tokens in the last 30 days, `unknown` included; may exceed the length of `appModelAnalytics`. */
453
+ modelsUsed?: number;
454
+ /** @description With `domain`. Tokens per model over the last 30 days, most first. */
455
+ appModelAnalytics?: components["schemas"]["RankingModelAnalytics"][];
456
+ };
457
+ };
458
+ RankingTrending: {
459
+ appAnalytics: components["schemas"]["RankingRow"];
460
+ /** @description Period tokens against the previous period of the same length, as a rounded percent increase. */
461
+ growthPercent: number;
462
+ };
463
+ RankingModelAnalytics: {
464
+ /**
465
+ * Format: date
466
+ * @description Today (UTC), the end of the 30-day window.
467
+ */
468
+ date: string;
469
+ /** @description The `ranking.usage` model, or `unknown`. */
470
+ model_permaslug: string;
471
+ /** @description Not an OpenRouter field. The provider that carried most of the model's tokens, or `unknown`. */
472
+ provider: string;
473
+ total_tokens: number;
474
+ };
475
+ RankingRow: {
476
+ /** @description Stable entry ID derived from the domain. Never an install or org ID. */
477
+ app_id: number;
478
+ /** @description Sum of `ranking.usage.totalTokens` in the period, as a decimal string like OpenRouter's. */
479
+ total_tokens: string;
480
+ /**
481
+ * @description Always 0. Tokens are the only public metric; the key stays for OpenRouter schema parity.
482
+ * @constant
483
+ */
484
+ total_requests: 0;
485
+ /** @description Position by tokens among every listed entry in the period, without gaps. A filtered list keeps the global rank. */
486
+ rank: number;
487
+ app: components["schemas"]["RankingApp"];
488
+ };
489
+ RankingApp: {
490
+ id: number;
491
+ /**
492
+ * Format: date-time
493
+ * @description When the entry was first served.
494
+ */
495
+ created_at: string;
496
+ description: string | null;
497
+ /** @description The listing name (the install's SWARM_ORG_NAME). */
498
+ title: string;
499
+ main_url: string | null;
500
+ origin_url: string | null;
501
+ /** @description The entry's domain. */
502
+ slug: string | null;
503
+ source_code_url: string | null;
504
+ icon_class_name: string;
505
+ /** @description This service's `GET /v1/logo` for the domain. */
506
+ favicon_url: string;
507
+ /** @description The listing subcategory, or empty. */
508
+ categories: string[];
509
+ related_apps: number[];
510
+ };
511
+ /** @description OpenRouter's `{x, ys}` chart, oldest point first. `daily` is today and the 30 days before, with `x` as `YYYY-MM-DD 00:00:00`. `weekly` is Monday-based with `x` as `YYYY-MM-DD`: 52 weeks without `domain`, and from the entry's first week (first served or first counted day) with `domain`, at most 52. With `domain`, `ys` keys are models (the top 10 of the point); without it, `app_id`s as strings (the top 9). The rest sum into `Others`. A series with no tokens is left out, so `ys` can be empty. An unknown or hidden `domain` gets empty `daily` and `weekly`. */
512
+ RankingChart: {
513
+ daily: components["schemas"]["RankingChartPoint"][];
514
+ weekly: components["schemas"]["RankingChartPoint"][];
515
+ };
516
+ RankingChartPoint: {
517
+ x: string;
518
+ ys: {
519
+ [key: string]: number;
520
+ };
521
+ };
522
+ RankingVerification: {
523
+ verified: boolean;
524
+ reasons: ("no_listing" | "opted_out" | "excluded_install" | "telemetry_inactive_7d" | "website_mismatch")[];
525
+ telemetryActive7d: boolean;
526
+ /** @description The install's newest event declares this domain as its org_website. */
527
+ websiteMatchesDomain: boolean;
528
+ listing: components["schemas"]["RankingPublicListing"] | null;
529
+ };
530
+ RankingPublicListing: {
531
+ name: string;
532
+ domain: string;
533
+ category: string;
534
+ subcategory: string | null;
535
+ description: string | null;
536
+ sourceCodeUrl: string | null;
537
+ };
245
538
  ProblemResponse: {
246
539
  code: string;
247
540
  message: string;
@@ -1075,6 +1368,107 @@ export interface components {
1075
1368
  product: "agent-swarm";
1076
1369
  properties: components["schemas"]["AgentSwarmPopupSubmittedProperties"];
1077
1370
  };
1371
+ AgentSwarmRankingOptedInProperties: {
1372
+ /** @description An email channel is configured. */
1373
+ has_email_channel?: boolean;
1374
+ /** @description An embedding API key is configured. */
1375
+ has_embedding_key?: boolean;
1376
+ /** @description A notification channel is configured. */
1377
+ has_notification_channel?: boolean;
1378
+ /** @description A Slack channel is configured. */
1379
+ has_slack_channel?: boolean;
1380
+ /** @description Legacy key kept during the v1 window; v2 carries context.install_method. */
1381
+ install_method?: string;
1382
+ /** @description Legacy key kept during the v1 window; v2 carries context.deployment. */
1383
+ is_cloud?: boolean;
1384
+ /** @description Legacy key kept during the v1 window; v2 carries context.deployment. */
1385
+ is_e2b?: boolean;
1386
+ /** @description The stringified telemetry_ranking listing (contracts/telemetry/ranking/listing.v1.schema.json). The ingest also requires its name and domain to equal context.org_name and context.org_website. */
1387
+ listing: string;
1388
+ /** @description agent-swarm version. Legacy key kept during the v1 window; v2 carries context.swarm_version. */
1389
+ swarmVersion?: string;
1390
+ };
1391
+ /** @description An admin opted the install into the public ranking, or the API rebuilt its listing after an org identity change. (emitter: api-server, since 2026-10-18) */
1392
+ AgentSwarmRankingOptedInEvent: {
1393
+ /**
1394
+ * @description discriminator enum property added by openapi-typescript
1395
+ * @enum {string}
1396
+ */
1397
+ event: "ranking.opted_in";
1398
+ /** @constant */
1399
+ product: "agent-swarm";
1400
+ properties: components["schemas"]["AgentSwarmRankingOptedInProperties"];
1401
+ };
1402
+ AgentSwarmRankingOptedOutProperties: {
1403
+ /** @description The listing domain that leaves the ranking: a lowercase hostname. */
1404
+ domain: string;
1405
+ /** @description An email channel is configured. */
1406
+ has_email_channel?: boolean;
1407
+ /** @description An embedding API key is configured. */
1408
+ has_embedding_key?: boolean;
1409
+ /** @description A notification channel is configured. */
1410
+ has_notification_channel?: boolean;
1411
+ /** @description A Slack channel is configured. */
1412
+ has_slack_channel?: boolean;
1413
+ /** @description Legacy key kept during the v1 window; v2 carries context.install_method. */
1414
+ install_method?: string;
1415
+ /** @description Legacy key kept during the v1 window; v2 carries context.deployment. */
1416
+ is_cloud?: boolean;
1417
+ /** @description Legacy key kept during the v1 window; v2 carries context.deployment. */
1418
+ is_e2b?: boolean;
1419
+ /** @description agent-swarm version. Legacy key kept during the v1 window; v2 carries context.swarm_version. */
1420
+ swarmVersion?: string;
1421
+ };
1422
+ /** @description The install left the public ranking: the admin turned it off, or the org name or website was cleared or changed. (emitter: api-server, since 2026-10-18) */
1423
+ AgentSwarmRankingOptedOutEvent: {
1424
+ /**
1425
+ * @description discriminator enum property added by openapi-typescript
1426
+ * @enum {string}
1427
+ */
1428
+ event: "ranking.opted_out";
1429
+ /** @constant */
1430
+ product: "agent-swarm";
1431
+ properties: components["schemas"]["AgentSwarmRankingOptedOutProperties"];
1432
+ };
1433
+ AgentSwarmRankingUsageProperties: {
1434
+ cacheReadTokens?: number;
1435
+ cacheWriteTokens?: number;
1436
+ /** @description An email channel is configured. */
1437
+ has_email_channel?: boolean;
1438
+ /** @description An embedding API key is configured. */
1439
+ has_embedding_key?: boolean;
1440
+ /** @description A notification channel is configured. */
1441
+ has_notification_channel?: boolean;
1442
+ /** @description A Slack channel is configured. */
1443
+ has_slack_channel?: boolean;
1444
+ inputTokens: number;
1445
+ /** @description Legacy key kept during the v1 window; v2 carries context.install_method. */
1446
+ install_method?: string;
1447
+ /** @description Legacy key kept during the v1 window; v2 carries context.deployment. */
1448
+ is_cloud?: boolean;
1449
+ /** @description Legacy key kept during the v1 window; v2 carries context.deployment. */
1450
+ is_e2b?: boolean;
1451
+ /** @description The session's model, the same value as session.cost.model. Usage without it, or with a value the ranking does not accept, is shown as the model unknown. */
1452
+ model?: string;
1453
+ outputTokens: number;
1454
+ /** @description The session's provider, the same value as session.cost.provider. Missing means unknown. */
1455
+ provider?: string;
1456
+ /** @description agent-swarm version. Legacy key kept during the v1 window; v2 carries context.swarm_version. */
1457
+ swarmVersion?: string;
1458
+ /** @description inputTokens + cacheReadTokens + cacheWriteTokens + outputTokens. The ranking sums this. */
1459
+ totalTokens: number;
1460
+ };
1461
+ /** @description Token usage of one session on an install opted into the public ranking. Sent next to session.cost. (emitter: worker, since 2026-10-18) */
1462
+ AgentSwarmRankingUsageEvent: {
1463
+ /**
1464
+ * @description discriminator enum property added by openapi-typescript
1465
+ * @enum {string}
1466
+ */
1467
+ event: "ranking.usage";
1468
+ /** @constant */
1469
+ product: "agent-swarm";
1470
+ properties: components["schemas"]["AgentSwarmRankingUsageProperties"];
1471
+ };
1078
1472
  AgentSwarmScheduleErrorProperties: {
1079
1473
  consecutiveErrors: number;
1080
1474
  /** @description An email channel is configured. */
@@ -2034,7 +2428,7 @@ export interface components {
2034
2428
  product: "agent-swarm";
2035
2429
  properties: components["schemas"]["AgentSwarmWorkflowStartedProperties"];
2036
2430
  };
2037
- AgentSwarmCatalogEvent: components["schemas"]["AgentSwarmAgentRegisteredEvent"] | components["schemas"]["AgentSwarmCompactionTriggeredEvent"] | components["schemas"]["AgentSwarmFeatureUsedEvent"] | components["schemas"]["AgentSwarmFleetBenchmarkViewedEvent"] | components["schemas"]["AgentSwarmIntegrationConnectedEvent"] | components["schemas"]["AgentSwarmLeadCapturedEvent"] | components["schemas"]["AgentSwarmNotificationDismissedEvent"] | components["schemas"]["AgentSwarmNotificationSubmittedEvent"] | components["schemas"]["AgentSwarmNotificationViewedEvent"] | components["schemas"]["AgentSwarmOnboardingCompletedEvent"] | components["schemas"]["AgentSwarmOnboardingDismissedEvent"] | components["schemas"]["AgentSwarmOnboardingFirstTaskCompletedEvent"] | components["schemas"]["AgentSwarmOnboardingStartedEvent"] | components["schemas"]["AgentSwarmOnboardingStepCompletedEvent"] | components["schemas"]["AgentSwarmOnboardingStepFailedEvent"] | components["schemas"]["AgentSwarmOnboardingStepSkippedEvent"] | components["schemas"]["AgentSwarmOnboardingStepViewedEvent"] | components["schemas"]["AgentSwarmOrgProfileUpdatedEvent"] | components["schemas"]["AgentSwarmOrgSnapshotEvent"] | components["schemas"]["AgentSwarmPageViewedEvent"] | components["schemas"]["AgentSwarmPopupDismissedEvent"] | components["schemas"]["AgentSwarmPopupShownEvent"] | components["schemas"]["AgentSwarmPopupSubmittedEvent"] | components["schemas"]["AgentSwarmScheduleErrorEvent"] | components["schemas"]["AgentSwarmScheduleExecutedEvent"] | components["schemas"]["AgentSwarmServerShutdownEvent"] | components["schemas"]["AgentSwarmServerStartedEvent"] | components["schemas"]["AgentSwarmSessionCancelledEvent"] | components["schemas"]["AgentSwarmSessionCostEvent"] | components["schemas"]["AgentSwarmSessionEndedEvent"] | components["schemas"]["AgentSwarmSessionFailureEvent"] | components["schemas"]["AgentSwarmSessionStartedEvent"] | components["schemas"]["AgentSwarmSessionSteeredEvent"] | components["schemas"]["AgentSwarmSkillInvokedEvent"] | components["schemas"]["AgentSwarmTaskCancelledEvent"] | components["schemas"]["AgentSwarmTaskClaimedEvent"] | components["schemas"]["AgentSwarmTaskCompletedEvent"] | components["schemas"]["AgentSwarmTaskCreatedEvent"] | components["schemas"]["AgentSwarmTaskFailedEvent"] | components["schemas"]["AgentSwarmTaskSessionCompletedEvent"] | components["schemas"]["AgentSwarmTaskStartedEvent"] | components["schemas"]["AgentSwarmTaskSupersededEvent"] | components["schemas"]["AgentSwarmTelemetryEnabledEvent"] | components["schemas"]["AgentSwarmUiSessionStartedEvent"] | components["schemas"]["AgentSwarmUsedByConsentChangedEvent"] | components["schemas"]["AgentSwarmWorkflowCompletedEvent"] | components["schemas"]["AgentSwarmWorkflowCreatedEvent"] | components["schemas"]["AgentSwarmWorkflowDeletedEvent"] | components["schemas"]["AgentSwarmWorkflowFailedEvent"] | components["schemas"]["AgentSwarmWorkflowStartedEvent"];
2431
+ AgentSwarmCatalogEvent: components["schemas"]["AgentSwarmAgentRegisteredEvent"] | components["schemas"]["AgentSwarmCompactionTriggeredEvent"] | components["schemas"]["AgentSwarmFeatureUsedEvent"] | components["schemas"]["AgentSwarmFleetBenchmarkViewedEvent"] | components["schemas"]["AgentSwarmIntegrationConnectedEvent"] | components["schemas"]["AgentSwarmLeadCapturedEvent"] | components["schemas"]["AgentSwarmNotificationDismissedEvent"] | components["schemas"]["AgentSwarmNotificationSubmittedEvent"] | components["schemas"]["AgentSwarmNotificationViewedEvent"] | components["schemas"]["AgentSwarmOnboardingCompletedEvent"] | components["schemas"]["AgentSwarmOnboardingDismissedEvent"] | components["schemas"]["AgentSwarmOnboardingFirstTaskCompletedEvent"] | components["schemas"]["AgentSwarmOnboardingStartedEvent"] | components["schemas"]["AgentSwarmOnboardingStepCompletedEvent"] | components["schemas"]["AgentSwarmOnboardingStepFailedEvent"] | components["schemas"]["AgentSwarmOnboardingStepSkippedEvent"] | components["schemas"]["AgentSwarmOnboardingStepViewedEvent"] | components["schemas"]["AgentSwarmOrgProfileUpdatedEvent"] | components["schemas"]["AgentSwarmOrgSnapshotEvent"] | components["schemas"]["AgentSwarmPageViewedEvent"] | components["schemas"]["AgentSwarmPopupDismissedEvent"] | components["schemas"]["AgentSwarmPopupShownEvent"] | components["schemas"]["AgentSwarmPopupSubmittedEvent"] | components["schemas"]["AgentSwarmRankingOptedInEvent"] | components["schemas"]["AgentSwarmRankingOptedOutEvent"] | components["schemas"]["AgentSwarmRankingUsageEvent"] | components["schemas"]["AgentSwarmScheduleErrorEvent"] | components["schemas"]["AgentSwarmScheduleExecutedEvent"] | components["schemas"]["AgentSwarmServerShutdownEvent"] | components["schemas"]["AgentSwarmServerStartedEvent"] | components["schemas"]["AgentSwarmSessionCancelledEvent"] | components["schemas"]["AgentSwarmSessionCostEvent"] | components["schemas"]["AgentSwarmSessionEndedEvent"] | components["schemas"]["AgentSwarmSessionFailureEvent"] | components["schemas"]["AgentSwarmSessionStartedEvent"] | components["schemas"]["AgentSwarmSessionSteeredEvent"] | components["schemas"]["AgentSwarmSkillInvokedEvent"] | components["schemas"]["AgentSwarmTaskCancelledEvent"] | components["schemas"]["AgentSwarmTaskClaimedEvent"] | components["schemas"]["AgentSwarmTaskCompletedEvent"] | components["schemas"]["AgentSwarmTaskCreatedEvent"] | components["schemas"]["AgentSwarmTaskFailedEvent"] | components["schemas"]["AgentSwarmTaskSessionCompletedEvent"] | components["schemas"]["AgentSwarmTaskStartedEvent"] | components["schemas"]["AgentSwarmTaskSupersededEvent"] | components["schemas"]["AgentSwarmTelemetryEnabledEvent"] | components["schemas"]["AgentSwarmUiSessionStartedEvent"] | components["schemas"]["AgentSwarmUsedByConsentChangedEvent"] | components["schemas"]["AgentSwarmWorkflowCompletedEvent"] | components["schemas"]["AgentSwarmWorkflowCreatedEvent"] | components["schemas"]["AgentSwarmWorkflowDeletedEvent"] | components["schemas"]["AgentSwarmWorkflowFailedEvent"] | components["schemas"]["AgentSwarmWorkflowStartedEvent"];
2038
2432
  /** @description Every catalogued (product, event) pair with its property schema. Generated from contracts/telemetry/catalog/events.json. */
2039
2433
  CatalogEvent: components["schemas"]["AgentFsCatalogEvent"] | components["schemas"]["AgentSwarmCatalogEvent"];
2040
2434
  };
@@ -2212,4 +2606,317 @@ export interface operations {
2212
2606
  204: components["responses"]["CORSPreflightResponse"];
2213
2607
  };
2214
2608
  };
2609
+ submitUsedByConsent: {
2610
+ parameters: {
2611
+ query?: never;
2612
+ header?: never;
2613
+ path?: never;
2614
+ cookie?: never;
2615
+ };
2616
+ requestBody: {
2617
+ content: {
2618
+ "application/json": components["schemas"]["UsedByConsent"];
2619
+ };
2620
+ };
2621
+ responses: {
2622
+ /** @description Consent change persisted; the Slack post is best-effort. */
2623
+ 202: {
2624
+ headers: {
2625
+ [name: string]: unknown;
2626
+ };
2627
+ content: {
2628
+ "application/json": components["schemas"]["UsedByAcceptedResponse"];
2629
+ };
2630
+ };
2631
+ /** @description Request body is invalid JSON or failed field validation. */
2632
+ 400: {
2633
+ headers: {
2634
+ [name: string]: unknown;
2635
+ };
2636
+ content: {
2637
+ "application/json": components["schemas"]["ProblemResponse"];
2638
+ };
2639
+ };
2640
+ /** @description Request body exceeds 4 KB. */
2641
+ 413: {
2642
+ headers: {
2643
+ [name: string]: unknown;
2644
+ };
2645
+ content: {
2646
+ "application/json": components["schemas"]["ProblemResponse"];
2647
+ };
2648
+ };
2649
+ /** @description The source IP exceeded 5 requests per minute. */
2650
+ 429: {
2651
+ headers: {
2652
+ /** @description Seconds to wait before retrying. */
2653
+ "Retry-After"?: string;
2654
+ [name: string]: unknown;
2655
+ };
2656
+ content: {
2657
+ "application/json": components["schemas"]["ProblemResponse"];
2658
+ };
2659
+ };
2660
+ /** @description The consent change could not be persisted. */
2661
+ 500: {
2662
+ headers: {
2663
+ [name: string]: unknown;
2664
+ };
2665
+ content: {
2666
+ "application/json": components["schemas"]["ProblemResponse"];
2667
+ };
2668
+ };
2669
+ /** @description Used-by storage is not configured. */
2670
+ 503: {
2671
+ headers: {
2672
+ [name: string]: unknown;
2673
+ };
2674
+ content: {
2675
+ "application/json": components["schemas"]["ProblemResponse"];
2676
+ };
2677
+ };
2678
+ };
2679
+ };
2680
+ getOrgLogo: {
2681
+ parameters: {
2682
+ query: {
2683
+ /** @description Lowercase website hostname, without scheme, `www.`, path or port. IP literals are refused. */
2684
+ domain: string;
2685
+ };
2686
+ header?: never;
2687
+ path?: never;
2688
+ cookie?: never;
2689
+ };
2690
+ requestBody?: never;
2691
+ responses: {
2692
+ /** @description The logo image. */
2693
+ 200: {
2694
+ headers: {
2695
+ /** @description `public, max-age=86400`. */
2696
+ "Cache-Control"?: string;
2697
+ [name: string]: unknown;
2698
+ };
2699
+ content: {
2700
+ "image/png": string;
2701
+ };
2702
+ };
2703
+ /** @description `domain` is missing or not a hostname (code `invalid_domain`). */
2704
+ 400: {
2705
+ headers: {
2706
+ [name: string]: unknown;
2707
+ };
2708
+ content: {
2709
+ "application/json": components["schemas"]["ProblemResponse"];
2710
+ };
2711
+ };
2712
+ /** @description logo.dev has no image for this domain (code `logo_not_found`). */
2713
+ 404: {
2714
+ headers: {
2715
+ [name: string]: unknown;
2716
+ };
2717
+ content: {
2718
+ "application/json": components["schemas"]["ProblemResponse"];
2719
+ };
2720
+ };
2721
+ /** @description The source IP exceeded the logo rate limit. */
2722
+ 429: {
2723
+ headers: {
2724
+ /** @description Seconds to wait before retrying. */
2725
+ "Retry-After"?: string;
2726
+ [name: string]: unknown;
2727
+ };
2728
+ content: {
2729
+ "application/json": components["schemas"]["ProblemResponse"];
2730
+ };
2731
+ };
2732
+ /** @description logo.dev failed or returned something other than a raster image under 256 KB (code `logo_upstream_failed`). Not cached. */
2733
+ 502: {
2734
+ headers: {
2735
+ [name: string]: unknown;
2736
+ };
2737
+ content: {
2738
+ "application/json": components["schemas"]["ProblemResponse"];
2739
+ };
2740
+ };
2741
+ /** @description `LOGO_DEV_TOKEN` is not set (code `logo_unavailable`). */
2742
+ 503: {
2743
+ headers: {
2744
+ [name: string]: unknown;
2745
+ };
2746
+ content: {
2747
+ "application/json": components["schemas"]["ProblemResponse"];
2748
+ };
2749
+ };
2750
+ };
2751
+ };
2752
+ getFleetBenchmarks: {
2753
+ parameters: {
2754
+ query?: {
2755
+ /** @description Only `30d` is supported. */
2756
+ window?: "30d";
2757
+ };
2758
+ header?: never;
2759
+ path?: never;
2760
+ cookie?: never;
2761
+ };
2762
+ requestBody?: never;
2763
+ responses: {
2764
+ /** @description The latest computed benchmark. */
2765
+ 200: {
2766
+ headers: {
2767
+ /** @description `public, max-age=3600`. */
2768
+ "Cache-Control"?: string;
2769
+ [name: string]: unknown;
2770
+ };
2771
+ content: {
2772
+ "application/json": components["schemas"]["FleetBenchmarks"];
2773
+ };
2774
+ };
2775
+ /** @description `window` is not `30d` (code `invalid_window`). */
2776
+ 400: {
2777
+ headers: {
2778
+ [name: string]: unknown;
2779
+ };
2780
+ content: {
2781
+ "application/json": components["schemas"]["ProblemResponse"];
2782
+ };
2783
+ };
2784
+ /** @description The source IP exceeded the benchmark rate limit. */
2785
+ 429: {
2786
+ headers: {
2787
+ /** @description Seconds to wait before retrying. */
2788
+ "Retry-After"?: string;
2789
+ [name: string]: unknown;
2790
+ };
2791
+ content: {
2792
+ "application/json": components["schemas"]["ProblemResponse"];
2793
+ };
2794
+ };
2795
+ /** @description No benchmark has been computed yet, for example right after boot (code `benchmarks_unavailable`). */
2796
+ 503: {
2797
+ headers: {
2798
+ [name: string]: unknown;
2799
+ };
2800
+ content: {
2801
+ "application/json": components["schemas"]["ProblemResponse"];
2802
+ };
2803
+ };
2804
+ };
2805
+ };
2806
+ getRanking: {
2807
+ parameters: {
2808
+ query?: {
2809
+ /** @description The last 1, 7 or 30 UTC days, today included. */
2810
+ period?: "day" | "week" | "month";
2811
+ /** @description A category from `contracts/telemetry/ranking/taxonomy.json`. `agent-swarm` or absent means every category. */
2812
+ group?: string;
2813
+ /** @description A subcategory from the taxonomy, inside `group` when one is given. */
2814
+ subcategory?: string;
2815
+ /** @description Return only this entry and its app page fields. An unknown or hidden domain returns an empty `apps` list, an empty chart, zero totals and a null `rank`. */
2816
+ domain?: string;
2817
+ /** @description Accepted for parity with OpenRouter's collector. Only `tokens` is supported. */
2818
+ sortBy?: "tokens";
2819
+ };
2820
+ header?: never;
2821
+ path?: never;
2822
+ cookie?: never;
2823
+ };
2824
+ requestBody?: never;
2825
+ responses: {
2826
+ /** @description The ranking for the period and filters. */
2827
+ 200: {
2828
+ headers: {
2829
+ /** @description `public, max-age=3600`. */
2830
+ "Cache-Control"?: string;
2831
+ [name: string]: unknown;
2832
+ };
2833
+ content: {
2834
+ "application/json": components["schemas"]["RankingResponse"];
2835
+ };
2836
+ };
2837
+ /** @description A query value is not allowed (codes `invalid_period`, `invalid_group`, `invalid_subcategory`, `invalid_domain`, `invalid_sort`). */
2838
+ 400: {
2839
+ headers: {
2840
+ [name: string]: unknown;
2841
+ };
2842
+ content: {
2843
+ "application/json": components["schemas"]["ProblemResponse"];
2844
+ };
2845
+ };
2846
+ /** @description The source IP exceeded the ranking rate limit. */
2847
+ 429: {
2848
+ headers: {
2849
+ /** @description Seconds to wait before retrying. */
2850
+ "Retry-After"?: string;
2851
+ [name: string]: unknown;
2852
+ };
2853
+ content: {
2854
+ "application/json": components["schemas"]["ProblemResponse"];
2855
+ };
2856
+ };
2857
+ /** @description The ranking has not been computed yet, for example right after boot (code `ranking_unavailable`). */
2858
+ 503: {
2859
+ headers: {
2860
+ [name: string]: unknown;
2861
+ };
2862
+ content: {
2863
+ "application/json": components["schemas"]["ProblemResponse"];
2864
+ };
2865
+ };
2866
+ };
2867
+ };
2868
+ verifyRankingEntry: {
2869
+ parameters: {
2870
+ query: {
2871
+ domain: string;
2872
+ claim: string;
2873
+ };
2874
+ header?: never;
2875
+ path?: never;
2876
+ cookie?: never;
2877
+ };
2878
+ requestBody?: never;
2879
+ responses: {
2880
+ /** @description The verification result. A failed check is still a 200 with `verified` false. */
2881
+ 200: {
2882
+ headers: {
2883
+ /** @description `no-store`. */
2884
+ "Cache-Control"?: string;
2885
+ [name: string]: unknown;
2886
+ };
2887
+ content: {
2888
+ "application/json": components["schemas"]["RankingVerification"];
2889
+ };
2890
+ };
2891
+ /** @description `domain` or `claim` is malformed (codes `invalid_domain`, `invalid_claim`). */
2892
+ 400: {
2893
+ headers: {
2894
+ [name: string]: unknown;
2895
+ };
2896
+ content: {
2897
+ "application/json": components["schemas"]["ProblemResponse"];
2898
+ };
2899
+ };
2900
+ /** @description The source IP exceeded the verify rate limit. */
2901
+ 429: {
2902
+ headers: {
2903
+ /** @description Seconds to wait before retrying. */
2904
+ "Retry-After"?: string;
2905
+ [name: string]: unknown;
2906
+ };
2907
+ content: {
2908
+ "application/json": components["schemas"]["ProblemResponse"];
2909
+ };
2910
+ };
2911
+ /** @description The telemetry store could not be read (code `ranking_unavailable`). */
2912
+ 503: {
2913
+ headers: {
2914
+ [name: string]: unknown;
2915
+ };
2916
+ content: {
2917
+ "application/json": components["schemas"]["ProblemResponse"];
2918
+ };
2919
+ };
2920
+ };
2921
+ };
2215
2922
  }