@desplega.ai/agent-swarm 2.3.0 → 2.4.1
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.
- package/README.md +1 -0
- package/dist/{acp-adapter-v85a2bqy.js → acp-adapter-zvzr538d.js} +9 -9
- package/dist/{actions-zgcxfspj.js → actions-jhtqdw69.js} +21 -19
- package/dist/{amp-adapter-jw9xfz42.js → amp-adapter-bd84rhs2.js} +4 -4
- package/dist/{app-4e1s4675.js → app-kreq1gwg.js} +3 -3
- package/dist/{assistant-v238n9dk.js → assistant-3k22sbsq.js} +23 -21
- package/dist/{boot-reembed-p666cw5n.js → boot-reembed-e53x6b9v.js} +1 -1
- package/dist/{boot-reembed-w6pm64j4.js → boot-reembed-f6z923ny.js} +1 -1
- package/dist/{boot-scrub-sweep-jcyjagn3.js → boot-scrub-sweep-0538vsb7.js} +4 -4
- package/dist/{boot-seeds-gbedmamp.js → boot-seeds-6wxqkfk2.js} +4 -4
- package/dist/{claude-adapter-q7wspzt8.js → claude-adapter-gfts5044.js} +9 -9
- package/dist/{claude-managed-adapter-n7ahjyx6.js → claude-managed-adapter-h2y889ge.js} +3 -3
- package/dist/{claude-managed-setup-wza784fb.js → claude-managed-setup-h00hsgtz.js} +2 -2
- package/dist/{claude-sdk-session-yf400ptr.js → claude-sdk-session-56besmfz.js} +13 -13
- package/dist/{cli-65q70v2v.js → cli-0bh477zn.js} +33 -6
- package/dist/{cli-4ync7m60.js → cli-0ebey9hg.js} +1 -1
- package/dist/{cli-665j3feb.js → cli-0xk505e8.js} +1 -1
- package/dist/{cli-7gh7020n.js → cli-1dmcq2eh.js} +1 -1
- package/dist/{cli-gzvb3d4a.js → cli-1jx0srjt.js} +3 -3
- package/dist/{cli-zj4d6afs.js → cli-1pa3rz69.js} +21 -6
- package/dist/{cli-7ayprxp7.js → cli-2dfbv8qr.js} +8 -0
- package/dist/{cli-30m5q8mc.js → cli-3kh4kpqy.js} +6 -6
- package/dist/{cli-qrwp40st.js → cli-3p8fqcnh.js} +2 -2
- package/dist/{cli-y3dvz6ge.js → cli-3r448dqn.js} +3 -3
- package/dist/{cli-a17tzmn0.js → cli-3tnpj2bh.js} +7 -7
- package/dist/{cli-ea7chd26.js → cli-471qk6s2.js} +93 -46
- package/dist/{cli-a49vpbf3.js → cli-5kqnemen.js} +1 -1
- package/dist/{cli-0rh20bp3.js → cli-6ncjvx55.js} +3 -3
- package/dist/{cli-fb6t92v8.js → cli-6x9ma5w5.js} +1 -1
- package/dist/{cli-k28p6xh7.js → cli-7225gwj7.js} +2 -2
- package/dist/{cli-8cvvytad.js → cli-8nyhf7za.js} +3 -3
- package/dist/{cli-e09hj50q.js → cli-8wkb09q5.js} +11 -11
- package/dist/{cli-j0v75y13.js → cli-a0kcty51.js} +4 -4
- package/dist/{cli-zes4tsbb.js → cli-a4gvwttf.js} +4 -4
- package/dist/{cli-jhp7w1fy.js → cli-a5ebc95n.js} +2 -2
- package/dist/{cli-5d1m1qca.js → cli-ash6xxk7.js} +2 -2
- package/dist/{cli-fp4xbw07.js → cli-axh29tyr.js} +14 -12
- package/dist/{cli-p22zdvnt.js → cli-bn0rewsy.js} +3 -3
- package/dist/{cli-hz64bcnj.js → cli-bn5kevnf.js} +11 -373
- package/dist/{cli-8jtrekpy.js → cli-d2mb5s8a.js} +7 -7
- package/dist/{cli-c5sbmw1v.js → cli-d82btycs.js} +94 -15
- package/dist/{cli-vjfpshn3.js → cli-ejs3m1sx.js} +1 -1
- package/dist/{cli-yv0vgscc.js → cli-fpmsqq59.js} +18 -2
- package/dist/cli-fz9kewbh.js +382 -0
- package/dist/{cli-4s1kqrqg.js → cli-g0hgtz4p.js} +6 -6
- package/dist/{cli-hn3pftj2.js → cli-gf0kfg81.js} +7 -7
- package/dist/{cli-d43xqzbe.js → cli-hqhzg1qq.js} +2 -2
- package/dist/{cli-azs9bhc5.js → cli-j4rqdf2n.js} +2 -2
- package/dist/{cli-wtg6edvd.js → cli-jh0qcrga.js} +1 -1
- package/dist/{cli-kqypty34.js → cli-k9z4zd4p.js} +6 -5
- package/dist/{cli-jhmjwqcg.js → cli-kmqgmcnb.js} +47 -14
- package/dist/{cli-8qsx817b.js → cli-kr2pmfqx.js} +583 -769
- package/dist/{cli-4g629sgr.js → cli-m2qgh5sv.js} +20 -1
- package/dist/{cli-9e9kjqsj.js → cli-mfe7f7b5.js} +2 -2
- package/dist/{cli-x3en6ct3.js → cli-nwyw3zhg.js} +1 -1
- package/dist/{cli-6vcyw6v7.js → cli-nx462e4v.js} +5 -3
- package/dist/{cli-tr24eeny.js → cli-p0rakbrk.js} +9 -9
- package/dist/{cli-4hmaheb6.js → cli-p6argxh9.js} +9 -9
- package/dist/{cli-3avfh5az.js → cli-pemywhfq.js} +2 -2
- package/dist/{cli-etvn5ej2.js → cli-pnp2j5zg.js} +2 -2
- package/dist/{cli-wk8ccrz6.js → cli-pw7v69vp.js} +2 -2
- package/dist/{cli-ka01m5rb.js → cli-rdq7tzwm.js} +17 -14
- package/dist/{cli-re4wkbzx.js → cli-rqqsfz30.js} +677 -104
- package/dist/{cli-xgn4rwyv.js → cli-s48yvzb8.js} +4 -4
- package/dist/{cli-zv4vy2b0.js → cli-s95dknxh.js} +1 -1
- package/dist/{cli-g6p7c2my.js → cli-sjyetj21.js} +2 -2
- package/dist/{cli-rdr166ht.js → cli-smvcw9z5.js} +1 -1
- package/dist/{cli-fhvqt2fp.js → cli-sv5gb0yb.js} +1 -1
- package/dist/{cli-yv3n83x8.js → cli-syhq378v.js} +2 -2
- package/dist/{cli-q1812jbw.js → cli-tbhwrxpt.js} +9 -9
- package/dist/{cli-w7z94e6c.js → cli-tx00c0h6.js} +4 -2
- package/dist/{cli-dxwh4j32.js → cli-vy0fay6k.js} +46 -37
- package/dist/{cli-ptkpaqfy.js → cli-wt645v7q.js} +1 -1
- package/dist/{cli-ppapy34w.js → cli-wxbn3yfx.js} +2 -2
- package/dist/{cli-cby329ny.js → cli-x5mq1fyq.js} +3 -3
- package/dist/{cli-rc3r0bnh.js → cli-xbzvet96.js} +6 -6
- package/dist/{cli-4mkvwgzr.js → cli-xf234ws8.js} +1 -1
- package/dist/{cli-6p7ddg72.js → cli-xftrvxag.js} +5 -5
- package/dist/cli-z071fb95.js +848 -0
- package/dist/{cli-1v8w782f.js → cli-z1ew8vbq.js} +14 -7
- package/dist/{cli-9td5ss65.js → cli-zfg9enh9.js} +3 -3
- package/dist/{cli-yxqag76b.js → cli-zw88zjba.js} +1 -1
- package/dist/cli.js +19 -19
- package/dist/{codex-adapter-nhjj2veb.js → codex-adapter-p6rmm7vv.js} +6 -6
- package/dist/{codex-hook-x6tm6y5m.js → codex-hook-x7nejyrr.js} +8 -5
- package/dist/{codex-login-35p4sk85.js → codex-login-m819c41r.js} +1 -1
- package/dist/{codex-session-runner-6hggrjbx.js → codex-session-runner-8vd5t9t0.js} +7 -7
- package/dist/{commands-mrw1ph2w.js → commands-7ems2p13.js} +2 -2
- package/dist/{controller-pt1zam5w.js → controller-m263fg43.js} +4 -4
- package/dist/{controllers-connect-ymw5541d.js → controllers-connect-bg33ae53.js} +28 -24
- package/dist/{cursor-adapter-cf4zh5x0.js → cursor-adapter-cz6nm6mj.js} +3 -3
- package/dist/{db-hy80219q.js → db-w505dwa8.js} +2 -2
- package/dist/{db-hhpy6m4x.js → db-ys2rbdft.js} +3 -2
- package/dist/{devin-adapter-7egzmt0k.js → devin-adapter-zgqadvnm.js} +1 -1
- package/dist/{dispatcher-6pdjtkr1.js → dispatcher-0s0mckqr.js} +20 -18
- package/dist/{docker-njavd3fb.js → docker-fkgtr75t.js} +2 -2
- package/dist/{dsh-adapter-fbx06re2.js → dsh-adapter-3n3net33.js} +3 -3
- package/dist/{e2b-5r6a5jeb.js → e2b-7am6tmq6.js} +2 -2
- package/dist/{e2b-pw1nvtmh.js → e2b-thdcxtjd.js} +2 -2
- package/dist/{easter-egg-3d-6hg2r942.js → easter-egg-3d-5cgynaja.js} +1 -1
- package/dist/{event-bus-101fenkh.js → event-bus-9vpk8gmq.js} +1 -1
- package/dist/{execute-bcqc69a5.js → execute-t4e6m3rw.js} +1 -1
- package/dist/{external-channel-j6vb6ya1.js → external-channel-5b23fv8z.js} +2 -2
- package/dist/{google-generative-ai-phpmwxvg.js → google-generative-ai-bmq8gkf3.js} +1 -1
- package/dist/{google-vertex-es9ybgdy.js → google-vertex-b1rvp52s.js} +1 -1
- package/dist/{grok-adapter-1193sprp.js → grok-adapter-q9fghe5q.js} +10 -10
- package/dist/handlers-mqrym347.js +39 -0
- package/dist/{heartbeat-h1w1ktce.js → heartbeat-tww6yx1w.js} +23 -21
- package/dist/{hook-ejja4bpe.js → hook-dx0pkvar.js} +16 -9
- package/dist/{hook-skrbja18.js → hook-pvmh9b6m.js} +6 -6
- package/dist/{http-mzh41mfj.js → http-k2ejbt05.js} +975 -292
- package/dist/{index-6rmnn89d.js → index-2z710v4x.js} +10 -10
- package/dist/{index-xmmkyx82.js → index-dgz61nff.js} +20 -18
- package/dist/{index-wgsw9xcz.js → index-g6tbb6ve.js} +1 -1
- package/dist/index-h2ek08d6.js +40 -0
- package/dist/index-pqfwh9nn.js +41 -0
- package/dist/{index-epr2gnbw.js → index-x5aktmp8.js} +1 -1
- package/dist/{index-x0q2a4f9.js → index-ysd45kgc.js} +1 -1
- package/dist/{index-g909y089.js → index-zgvqzjsw.js} +8 -8
- package/dist/{keepalive-4djvbm2j.js → keepalive-nhvpw10z.js} +4 -4
- package/dist/lead-jb6sf69z.js +78 -0
- package/dist/{maintenance-f3xhnjsm.js → maintenance-agakc519.js} +1 -1
- package/dist/{oauth-refresh-sweep-fpd6x6rw.js → oauth-refresh-sweep-4dcbhtn0.js} +3 -3
- package/dist/{onboard-196tjgyn.js → onboard-4n2kwa4v.js} +3 -3
- package/dist/{opencode-adapter-eeesgfqk.js → opencode-adapter-3s7ax02e.js} +7 -7
- package/dist/{otel-impl-g8fh4c21.js → otel-impl-tfa12080.js} +2 -2
- package/dist/{pi-mono-adapter-zasp3ze3.js → pi-mono-adapter-ytp7gz8b.js} +24 -13
- package/dist/{pricing-refresh-sdcf5yaz.js → pricing-refresh-3cqx3f3x.js} +3 -3
- package/dist/{rbac-roles-bsp5657v.js → rbac-roles-9fae5rnv.js} +5 -3
- package/dist/{rbac-roles-2x4g1wb5.js → rbac-roles-y6zbfzve.js} +2 -2
- package/dist/{render-v2-0pyb39bb.js → render-v2-emawjvc4.js} +3 -3
- package/dist/{resume-a86tkj6r.js → resume-zhgts7h7.js} +10 -8
- package/dist/{runtime-ar8310ba.js → runtime-xe3aqy4x.js} +1 -1
- package/dist/session-access-cm823e06.js +25 -0
- package/dist/{setup-ypbzcapd.js → setup-tkp99w1e.js} +1 -1
- package/dist/{virtual-modules-wzk6jf3a.js → virtual-modules-4r3zkc20.js} +2 -2
- package/dist/{work-objects-yjp8de12.js → work-objects-f722h263.js} +23 -21
- package/dist/worker-p7f336rq.js +78 -0
- package/dist/{x-8ewt8gxn.js → x-y45mthwn.js} +2 -2
- package/openapi.json +1086 -305
- package/package.json +2 -2
- package/src/apps/action-caller.ts +6 -0
- package/src/apps/action-runner.ts +146 -0
- package/src/apps/row-store.ts +4 -2
- package/src/apps/script-types.ts +17 -4
- package/src/be/db/active-sessions.ts +5 -0
- package/src/be/db/session-visibility.ts +29 -0
- package/src/be/db/tasks/read.ts +61 -3
- package/src/be/db/tasks/write.ts +15 -6
- package/src/be/db.ts +106 -37
- package/src/be/events.ts +11 -0
- package/src/be/fleet-benchmark-stats.ts +10 -5
- package/src/be/migrations/230_session_shares.sql +23 -0
- package/src/be/models-catalog.ts +4 -0
- package/src/be/onboarding.ts +6 -0
- package/src/be/rbac-roles.ts +2 -0
- package/src/be/scripts/typecheck.ts +13 -0
- package/src/be/session-shares.ts +244 -0
- package/src/be/swarm-config-guard.ts +33 -3
- package/src/be/telemetry-enable.ts +1 -1
- package/src/commands/provider-credentials.ts +12 -2
- package/src/commands/runner.ts +14 -0
- package/src/heartbeat/heartbeat.ts +2 -2
- package/src/hooks/codex-hook.ts +6 -2
- package/src/hooks/hook.ts +7 -0
- package/src/hooks/pr-body-guard.ts +38 -11
- package/src/hooks/pr-room-guard.ts +88 -0
- package/src/http/active-sessions.ts +13 -2
- package/src/http/agents.ts +11 -3
- package/src/http/all-routes.ts +1 -0
- package/src/http/api-keys.ts +3 -1
- package/src/http/approval-requests.ts +2 -1
- package/src/http/apps.ts +118 -190
- package/src/http/config.ts +3 -0
- package/src/http/context.ts +2 -0
- package/src/http/core.ts +39 -2
- package/src/http/events.ts +6 -2
- package/src/http/favorite-owner.ts +1 -1
- package/src/http/fleet-benchmark.ts +79 -30
- package/src/http/fs.ts +38 -3
- package/src/http/global-config.ts +7 -0
- package/src/http/index.ts +3 -1
- package/src/http/memory.ts +3 -1
- package/src/http/ranking.ts +351 -0
- package/src/http/realtime.ts +26 -21
- package/src/http/route-def.ts +77 -11
- package/src/http/script-runs.ts +2 -1
- package/src/http/scripts.ts +8 -0
- package/src/http/session-access.ts +179 -0
- package/src/http/session-data.ts +10 -2
- package/src/http/sessions.ts +212 -12
- package/src/http/stats.ts +7 -3
- package/src/http/tasks.ts +85 -8
- package/src/http/telemetry-ui.ts +1 -1
- package/src/http/used-by.ts +64 -20
- package/src/http/users.ts +2 -2
- package/src/prompts/session-templates.ts +3 -1
- package/src/providers/amp-adapter.ts +1 -1
- package/src/providers/pi-mono-adapter.ts +15 -0
- package/src/providers/reasoning-effort.ts +2 -1
- package/src/providers/types.ts +2 -0
- package/src/ranking/telemetry-ranking.ts +119 -0
- package/src/ranking/usage.ts +57 -0
- package/src/rbac/admission.ts +22 -7
- package/src/rbac/legacy-policy.ts +2 -0
- package/src/rbac/permissions.ts +9 -0
- package/src/realtime/auth.ts +69 -0
- package/src/realtime/tickets.ts +4 -1
- package/src/realtime/transport.ts +77 -9
- package/src/scripts-runtime/sdk-allowlist.ts +7 -0
- package/src/scripts-runtime/types/stdlib.d.ts +31 -0
- package/src/scripts-runtime/types/swarm-sdk.d.ts +31 -0
- package/src/server.ts +4 -0
- package/src/slack/blocks.ts +18 -0
- package/src/slack/dm.ts +29 -0
- package/src/telemetry-context.ts +19 -1
- package/src/telemetry-contract/EVENTS.md +45 -8
- package/src/telemetry-contract/SOURCE.json +38 -4
- package/src/telemetry-contract/catalog.json +294 -5
- package/src/telemetry-contract/ranking/fixtures/expected.json +30 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/bad-category.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/bad-claim.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/blank-description.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/blank-name.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/description-too-long.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/domain-uppercase.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/domain-with-scheme.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/domain-with-www.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/http-source-url.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/missing-description.json +10 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/missing-version.json +10 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/name-not-string.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/name-too-long.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/not-object.json +1 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/null.json +1 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/other-with-subcategory.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/oversize.json +1 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/short-claim.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/subcategory-other-category.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/trailing-data.json +1 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/unknown-field.json +12 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/unsupported-version.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/updated-at-not-date.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/updated-at-offset.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/invalid/wrong-case-field.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/valid/category-without-subcategory.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/valid/full.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/valid/minimal.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/valid/no-claim.json +10 -0
- package/src/telemetry-contract/ranking/fixtures/valid/padded-text.json +11 -0
- package/src/telemetry-contract/ranking/fixtures/valid/unicode-name.json +11 -0
- package/src/telemetry-contract/ranking/listing.v1.schema.json +61 -0
- package/src/telemetry-contract/ranking/taxonomy.json +8 -0
- package/src/telemetry-contract/ranking-taxonomy.gen.ts +11 -0
- package/src/telemetry-contract/types.gen.ts +963 -58
- package/src/telemetry-identity.ts +47 -9
- package/src/telemetry-snapshot.ts +9 -1
- package/src/telemetry-ui-events.ts +9 -2
- package/src/telemetry.ts +40 -5
- package/src/tests/app-action-run-tool.test.ts +178 -0
- package/src/tests/app-row-tools.test.ts +360 -0
- package/src/tests/apps-rbac.test.ts +189 -2
- package/src/tests/apps-script-types.test.ts +16 -3
- package/src/tests/credential-check.test.ts +38 -0
- package/src/tests/db-extraction-contract.test.ts +1 -0
- package/src/tests/db-task-read-contract.test.ts +1 -0
- package/src/tests/docs-index-footprint.test.js +2 -2
- package/src/tests/fleet-benchmark.test.ts +122 -2
- package/src/tests/http-users.test.ts +62 -1
- package/src/tests/model-catalog-table.test.ts +63 -0
- package/src/tests/model-profiles-api.test.ts +19 -7
- package/src/tests/models-catalog.test.ts +50 -0
- package/src/tests/onboarding.test.ts +21 -0
- package/src/tests/org-identity.test.ts +44 -0
- package/src/tests/org-website.test.ts +62 -0
- package/src/tests/pi-mono-adapter.test.ts +23 -0
- package/src/tests/pr-body-leaks.test.ts +4 -0
- package/src/tests/pr-room-guard.test.ts +242 -0
- package/src/tests/ranking-listing.test.ts +97 -0
- package/src/tests/ranking-route.test.ts +321 -0
- package/src/tests/ranking-usage.test.ts +50 -0
- package/src/tests/rbac-admission-e2e.test.ts +8 -0
- package/src/tests/rbac-admission.test.ts +38 -0
- package/src/tests/rbac-charact-http.test.ts +4 -3
- package/src/tests/rbac-engine.test.ts +2 -0
- package/src/tests/rbac-roles.test.ts +2 -0
- package/src/tests/realtime-room-surfaces.test.ts +3 -1
- package/src/tests/realtime-session-join-race.test.ts +142 -0
- package/src/tests/realtime-tickets.test.ts +24 -17
- package/src/tests/realtime-transport.test.ts +91 -0
- package/src/tests/reasoning-effort.test.ts +39 -3
- package/src/tests/runner-harness-telemetry-env.test.ts +56 -1
- package/src/tests/session-route-posture.test.ts +639 -0
- package/src/tests/session-sharing-routes.test.ts +282 -0
- package/src/tests/session-sharing.test.ts +526 -0
- package/src/tests/sessions-detail-batch.test.ts +7 -1
- package/src/tests/slack-tool-blocks.test.ts +101 -0
- package/src/tests/slack-update.test.ts +55 -0
- package/src/tests/slack-user-dm.test.ts +177 -0
- package/src/tests/swarm-tool-result-gate.test.ts +2 -4
- package/src/tests/telemetry-context.test.ts +128 -2
- package/src/tests/telemetry-ui-route.test.ts +123 -0
- package/src/tests/tool-annotations.test.ts +3 -2
- package/src/tests/used-by-route.test.ts +153 -9
- package/src/tests/workflow-agent-task-retry.test.ts +130 -4
- package/src/tests/workflow-wait-recovery.test.ts +116 -4
- package/src/tools/app-action-run.ts +63 -0
- package/src/tools/app-rows.ts +234 -0
- package/src/tools/model-catalog/index.ts +1 -1
- package/src/tools/slack-post.ts +18 -12
- package/src/tools/slack-read.ts +13 -1
- package/src/tools/slack-reply.ts +7 -10
- package/src/tools/slack-start-thread.ts +18 -11
- package/src/tools/slack-update.ts +2 -9
- package/src/tools/tool-config.ts +8 -0
- package/src/tools/utils.ts +1 -1
- package/src/tools/workflows/retry-workflow-run.ts +1 -1
- package/src/types.ts +52 -0
- package/src/utils/company-profile.ts +24 -0
- package/src/utils/org-identity.ts +33 -0
- package/src/utils/org-website.ts +58 -21
- package/src/workflows/recovery.ts +10 -22
- package/src/workflows/resume.ts +16 -0
- package/src/workflows/task-step-routing.ts +47 -7
- package/templates/skills/apps/SKILL.md +58 -2
- package/templates/skills/apps/content.md +58 -2
- package/dist/handlers-tb3xgjnm.js +0 -37
- package/dist/index-nyfcdpky.js +0 -39
- package/dist/index-vjn3wbzf.js +0 -38
- package/dist/lead-61kqp604.js +0 -76
- package/dist/worker-4ptnn1ge.js +0 -76
- package/dist/{cli-n5mrsg0f.js → cli-60cgh1rv.js} +3 -3
package/openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Agent Swarm API",
|
|
5
|
-
"version": "2.
|
|
5
|
+
"version": "2.4.1",
|
|
6
6
|
"description": "Multi-agent orchestration API for Claude Code, Codex, and Gemini CLI. Enables task distribution, agent communication, and service discovery.\n\nMCP tools are documented separately in [MCP.md](./MCP.md)."
|
|
7
7
|
},
|
|
8
8
|
"servers": [
|
|
@@ -613,6 +613,9 @@
|
|
|
613
613
|
"bedrock": {
|
|
614
614
|
"$ref": "#/components/schemas/AgentBedrockStatus"
|
|
615
615
|
},
|
|
616
|
+
"opencodeGo": {
|
|
617
|
+
"$ref": "#/components/schemas/AgentOpencodeGoStatus"
|
|
618
|
+
},
|
|
616
619
|
"acp": {
|
|
617
620
|
"$ref": "#/components/schemas/AgentAcpStatus"
|
|
618
621
|
}
|
|
@@ -766,6 +769,28 @@
|
|
|
766
769
|
"ready"
|
|
767
770
|
]
|
|
768
771
|
},
|
|
772
|
+
"AgentOpencodeGoStatus": {
|
|
773
|
+
"type": [
|
|
774
|
+
"object",
|
|
775
|
+
"null"
|
|
776
|
+
],
|
|
777
|
+
"properties": {
|
|
778
|
+
"probedAt": {
|
|
779
|
+
"type": "number"
|
|
780
|
+
},
|
|
781
|
+
"models": {
|
|
782
|
+
"type": "array",
|
|
783
|
+
"items": {
|
|
784
|
+
"type": "string"
|
|
785
|
+
},
|
|
786
|
+
"default": []
|
|
787
|
+
}
|
|
788
|
+
},
|
|
789
|
+
"default": null,
|
|
790
|
+
"required": [
|
|
791
|
+
"probedAt"
|
|
792
|
+
]
|
|
793
|
+
},
|
|
769
794
|
"AgentAcpStatus": {
|
|
770
795
|
"type": [
|
|
771
796
|
"object",
|
|
@@ -3945,6 +3970,67 @@
|
|
|
3945
3970
|
"cacheWriteTokens"
|
|
3946
3971
|
]
|
|
3947
3972
|
},
|
|
3973
|
+
"SessionOwner": {
|
|
3974
|
+
"type": [
|
|
3975
|
+
"object",
|
|
3976
|
+
"null"
|
|
3977
|
+
],
|
|
3978
|
+
"properties": {
|
|
3979
|
+
"id": {
|
|
3980
|
+
"type": "string"
|
|
3981
|
+
},
|
|
3982
|
+
"name": {
|
|
3983
|
+
"type": "string"
|
|
3984
|
+
}
|
|
3985
|
+
},
|
|
3986
|
+
"required": [
|
|
3987
|
+
"id",
|
|
3988
|
+
"name"
|
|
3989
|
+
]
|
|
3990
|
+
},
|
|
3991
|
+
"SessionShares": {
|
|
3992
|
+
"type": "object",
|
|
3993
|
+
"properties": {
|
|
3994
|
+
"everyone": {
|
|
3995
|
+
"type": "string",
|
|
3996
|
+
"enum": [
|
|
3997
|
+
"none",
|
|
3998
|
+
"read",
|
|
3999
|
+
"write"
|
|
4000
|
+
]
|
|
4001
|
+
},
|
|
4002
|
+
"users": {
|
|
4003
|
+
"type": "array",
|
|
4004
|
+
"items": {
|
|
4005
|
+
"type": "object",
|
|
4006
|
+
"properties": {
|
|
4007
|
+
"userId": {
|
|
4008
|
+
"type": "string"
|
|
4009
|
+
},
|
|
4010
|
+
"access": {
|
|
4011
|
+
"type": "string",
|
|
4012
|
+
"enum": [
|
|
4013
|
+
"read",
|
|
4014
|
+
"write"
|
|
4015
|
+
]
|
|
4016
|
+
},
|
|
4017
|
+
"createdAt": {
|
|
4018
|
+
"type": "string"
|
|
4019
|
+
}
|
|
4020
|
+
},
|
|
4021
|
+
"required": [
|
|
4022
|
+
"userId",
|
|
4023
|
+
"access",
|
|
4024
|
+
"createdAt"
|
|
4025
|
+
]
|
|
4026
|
+
}
|
|
4027
|
+
}
|
|
4028
|
+
},
|
|
4029
|
+
"required": [
|
|
4030
|
+
"everyone",
|
|
4031
|
+
"users"
|
|
4032
|
+
]
|
|
4033
|
+
},
|
|
3948
4034
|
"Skill": {
|
|
3949
4035
|
"type": "object",
|
|
3950
4036
|
"properties": {
|
|
@@ -15272,6 +15358,520 @@
|
|
|
15272
15358
|
}
|
|
15273
15359
|
}
|
|
15274
15360
|
},
|
|
15361
|
+
"/api/used-by": {
|
|
15362
|
+
"post": {
|
|
15363
|
+
"summary": "Grant or revoke the 'used by' logo consent",
|
|
15364
|
+
"description": "Records consent to show the organization's logo on agent-swarm.dev. A grant requires a valid contact email. It sends organization identity, contact details, and an optional quote to the proxy for manual review. This explicit admin action works when telemetry is off. A revoke clears the stored contact details and quote.",
|
|
15365
|
+
"tags": [
|
|
15366
|
+
"Telemetry"
|
|
15367
|
+
],
|
|
15368
|
+
"security": [
|
|
15369
|
+
{
|
|
15370
|
+
"bearerAuth": []
|
|
15371
|
+
}
|
|
15372
|
+
],
|
|
15373
|
+
"requestBody": {
|
|
15374
|
+
"content": {
|
|
15375
|
+
"application/json": {
|
|
15376
|
+
"schema": {
|
|
15377
|
+
"type": "object",
|
|
15378
|
+
"properties": {
|
|
15379
|
+
"granted": {
|
|
15380
|
+
"type": "boolean"
|
|
15381
|
+
},
|
|
15382
|
+
"contactEmail": {
|
|
15383
|
+
"type": "string",
|
|
15384
|
+
"maxLength": 320,
|
|
15385
|
+
"format": "email"
|
|
15386
|
+
},
|
|
15387
|
+
"contactFunction": {
|
|
15388
|
+
"type": "string",
|
|
15389
|
+
"enum": [
|
|
15390
|
+
"engineer",
|
|
15391
|
+
"eng_lead",
|
|
15392
|
+
"founder",
|
|
15393
|
+
"product",
|
|
15394
|
+
"ops",
|
|
15395
|
+
"other"
|
|
15396
|
+
]
|
|
15397
|
+
},
|
|
15398
|
+
"quote": {
|
|
15399
|
+
"type": "string",
|
|
15400
|
+
"maxLength": 280
|
|
15401
|
+
}
|
|
15402
|
+
},
|
|
15403
|
+
"required": [
|
|
15404
|
+
"granted"
|
|
15405
|
+
]
|
|
15406
|
+
}
|
|
15407
|
+
}
|
|
15408
|
+
}
|
|
15409
|
+
},
|
|
15410
|
+
"responses": {
|
|
15411
|
+
"200": {
|
|
15412
|
+
"description": "Consent recorded",
|
|
15413
|
+
"content": {
|
|
15414
|
+
"application/json": {
|
|
15415
|
+
"schema": {
|
|
15416
|
+
"type": "object",
|
|
15417
|
+
"properties": {
|
|
15418
|
+
"granted": {
|
|
15419
|
+
"type": "boolean"
|
|
15420
|
+
},
|
|
15421
|
+
"changedAt": {
|
|
15422
|
+
"type": "string"
|
|
15423
|
+
}
|
|
15424
|
+
},
|
|
15425
|
+
"required": [
|
|
15426
|
+
"granted",
|
|
15427
|
+
"changedAt"
|
|
15428
|
+
]
|
|
15429
|
+
}
|
|
15430
|
+
}
|
|
15431
|
+
}
|
|
15432
|
+
},
|
|
15433
|
+
"400": {
|
|
15434
|
+
"description": "Invalid contact details, or missing organization name or website",
|
|
15435
|
+
"content": {
|
|
15436
|
+
"application/json": {
|
|
15437
|
+
"schema": {
|
|
15438
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15439
|
+
}
|
|
15440
|
+
}
|
|
15441
|
+
}
|
|
15442
|
+
},
|
|
15443
|
+
"401": {
|
|
15444
|
+
"description": "Unauthorized",
|
|
15445
|
+
"content": {
|
|
15446
|
+
"application/json": {
|
|
15447
|
+
"schema": {
|
|
15448
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15449
|
+
}
|
|
15450
|
+
}
|
|
15451
|
+
}
|
|
15452
|
+
},
|
|
15453
|
+
"403": {
|
|
15454
|
+
"description": "Only a config admin can change the consent",
|
|
15455
|
+
"content": {
|
|
15456
|
+
"application/json": {
|
|
15457
|
+
"schema": {
|
|
15458
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15459
|
+
}
|
|
15460
|
+
}
|
|
15461
|
+
}
|
|
15462
|
+
},
|
|
15463
|
+
"502": {
|
|
15464
|
+
"description": "The telemetry proxy did not accept the consent",
|
|
15465
|
+
"content": {
|
|
15466
|
+
"application/json": {
|
|
15467
|
+
"schema": {
|
|
15468
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15469
|
+
}
|
|
15470
|
+
}
|
|
15471
|
+
}
|
|
15472
|
+
}
|
|
15473
|
+
}
|
|
15474
|
+
}
|
|
15475
|
+
},
|
|
15476
|
+
"/api/ranking": {
|
|
15477
|
+
"get": {
|
|
15478
|
+
"summary": "Public ranking state",
|
|
15479
|
+
"description": "Whether this install can join the public agent-swarm.dev ranking (telemetry on, organization name and website set), whether it is opted in, and its stored listing. Only a config admin can read it.",
|
|
15480
|
+
"tags": [
|
|
15481
|
+
"Telemetry"
|
|
15482
|
+
],
|
|
15483
|
+
"security": [
|
|
15484
|
+
{
|
|
15485
|
+
"bearerAuth": []
|
|
15486
|
+
}
|
|
15487
|
+
],
|
|
15488
|
+
"responses": {
|
|
15489
|
+
"200": {
|
|
15490
|
+
"description": "Ranking state",
|
|
15491
|
+
"content": {
|
|
15492
|
+
"application/json": {
|
|
15493
|
+
"schema": {
|
|
15494
|
+
"type": "object",
|
|
15495
|
+
"properties": {
|
|
15496
|
+
"eligible": {
|
|
15497
|
+
"type": "boolean"
|
|
15498
|
+
},
|
|
15499
|
+
"missing": {
|
|
15500
|
+
"type": "array",
|
|
15501
|
+
"items": {
|
|
15502
|
+
"type": "string",
|
|
15503
|
+
"enum": [
|
|
15504
|
+
"SWARM_ORG_NAME",
|
|
15505
|
+
"SWARM_ORG_WEBSITE"
|
|
15506
|
+
]
|
|
15507
|
+
}
|
|
15508
|
+
},
|
|
15509
|
+
"telemetryOn": {
|
|
15510
|
+
"type": "boolean"
|
|
15511
|
+
},
|
|
15512
|
+
"enabled": {
|
|
15513
|
+
"type": "boolean"
|
|
15514
|
+
},
|
|
15515
|
+
"name": {
|
|
15516
|
+
"type": [
|
|
15517
|
+
"string",
|
|
15518
|
+
"null"
|
|
15519
|
+
]
|
|
15520
|
+
},
|
|
15521
|
+
"domain": {
|
|
15522
|
+
"type": [
|
|
15523
|
+
"string",
|
|
15524
|
+
"null"
|
|
15525
|
+
]
|
|
15526
|
+
},
|
|
15527
|
+
"listing": {
|
|
15528
|
+
"type": [
|
|
15529
|
+
"object",
|
|
15530
|
+
"null"
|
|
15531
|
+
],
|
|
15532
|
+
"properties": {
|
|
15533
|
+
"v": {
|
|
15534
|
+
"type": "number",
|
|
15535
|
+
"enum": [
|
|
15536
|
+
1
|
|
15537
|
+
]
|
|
15538
|
+
},
|
|
15539
|
+
"name": {
|
|
15540
|
+
"type": "string"
|
|
15541
|
+
},
|
|
15542
|
+
"domain": {
|
|
15543
|
+
"type": "string"
|
|
15544
|
+
},
|
|
15545
|
+
"category": {
|
|
15546
|
+
"type": "string",
|
|
15547
|
+
"enum": [
|
|
15548
|
+
"engineering",
|
|
15549
|
+
"product",
|
|
15550
|
+
"marketing",
|
|
15551
|
+
"support",
|
|
15552
|
+
"operations",
|
|
15553
|
+
"other"
|
|
15554
|
+
]
|
|
15555
|
+
},
|
|
15556
|
+
"subcategory": {
|
|
15557
|
+
"type": [
|
|
15558
|
+
"string",
|
|
15559
|
+
"null"
|
|
15560
|
+
]
|
|
15561
|
+
},
|
|
15562
|
+
"description": {
|
|
15563
|
+
"type": [
|
|
15564
|
+
"string",
|
|
15565
|
+
"null"
|
|
15566
|
+
]
|
|
15567
|
+
},
|
|
15568
|
+
"sourceCodeUrl": {
|
|
15569
|
+
"type": [
|
|
15570
|
+
"string",
|
|
15571
|
+
"null"
|
|
15572
|
+
]
|
|
15573
|
+
},
|
|
15574
|
+
"updatedAt": {
|
|
15575
|
+
"type": "string"
|
|
15576
|
+
}
|
|
15577
|
+
},
|
|
15578
|
+
"required": [
|
|
15579
|
+
"v",
|
|
15580
|
+
"name",
|
|
15581
|
+
"domain",
|
|
15582
|
+
"category",
|
|
15583
|
+
"subcategory",
|
|
15584
|
+
"description",
|
|
15585
|
+
"sourceCodeUrl",
|
|
15586
|
+
"updatedAt"
|
|
15587
|
+
]
|
|
15588
|
+
},
|
|
15589
|
+
"listingMatchesDomain": {
|
|
15590
|
+
"type": "boolean"
|
|
15591
|
+
},
|
|
15592
|
+
"verifyUrl": {
|
|
15593
|
+
"type": [
|
|
15594
|
+
"string",
|
|
15595
|
+
"null"
|
|
15596
|
+
]
|
|
15597
|
+
}
|
|
15598
|
+
},
|
|
15599
|
+
"required": [
|
|
15600
|
+
"eligible",
|
|
15601
|
+
"missing",
|
|
15602
|
+
"telemetryOn",
|
|
15603
|
+
"enabled",
|
|
15604
|
+
"name",
|
|
15605
|
+
"domain",
|
|
15606
|
+
"listing",
|
|
15607
|
+
"listingMatchesDomain",
|
|
15608
|
+
"verifyUrl"
|
|
15609
|
+
]
|
|
15610
|
+
}
|
|
15611
|
+
}
|
|
15612
|
+
}
|
|
15613
|
+
},
|
|
15614
|
+
"401": {
|
|
15615
|
+
"description": "Unauthorized",
|
|
15616
|
+
"content": {
|
|
15617
|
+
"application/json": {
|
|
15618
|
+
"schema": {
|
|
15619
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15620
|
+
}
|
|
15621
|
+
}
|
|
15622
|
+
}
|
|
15623
|
+
},
|
|
15624
|
+
"403": {
|
|
15625
|
+
"description": "Only a config admin can read the ranking state",
|
|
15626
|
+
"content": {
|
|
15627
|
+
"application/json": {
|
|
15628
|
+
"schema": {
|
|
15629
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15630
|
+
}
|
|
15631
|
+
}
|
|
15632
|
+
}
|
|
15633
|
+
}
|
|
15634
|
+
}
|
|
15635
|
+
}
|
|
15636
|
+
},
|
|
15637
|
+
"/api/ranking/opt-in": {
|
|
15638
|
+
"post": {
|
|
15639
|
+
"summary": "Opt this install into the public ranking",
|
|
15640
|
+
"description": "Builds the telemetry_ranking listing from the organization name and website plus the chosen category, stores it, turns PUBLIC_RANKING_ENABLED on and sends ranking.opted_in. That is the whole opt-in: the install shows on agent-swarm.dev/ranking at the next hourly refresh.",
|
|
15641
|
+
"tags": [
|
|
15642
|
+
"Telemetry"
|
|
15643
|
+
],
|
|
15644
|
+
"security": [
|
|
15645
|
+
{
|
|
15646
|
+
"bearerAuth": []
|
|
15647
|
+
}
|
|
15648
|
+
],
|
|
15649
|
+
"requestBody": {
|
|
15650
|
+
"content": {
|
|
15651
|
+
"application/json": {
|
|
15652
|
+
"schema": {
|
|
15653
|
+
"type": "object",
|
|
15654
|
+
"properties": {
|
|
15655
|
+
"category": {
|
|
15656
|
+
"type": "string",
|
|
15657
|
+
"enum": [
|
|
15658
|
+
"engineering",
|
|
15659
|
+
"product",
|
|
15660
|
+
"marketing",
|
|
15661
|
+
"support",
|
|
15662
|
+
"operations",
|
|
15663
|
+
"other"
|
|
15664
|
+
]
|
|
15665
|
+
},
|
|
15666
|
+
"subcategory": {
|
|
15667
|
+
"type": [
|
|
15668
|
+
"string",
|
|
15669
|
+
"null"
|
|
15670
|
+
]
|
|
15671
|
+
},
|
|
15672
|
+
"description": {
|
|
15673
|
+
"type": [
|
|
15674
|
+
"string",
|
|
15675
|
+
"null"
|
|
15676
|
+
]
|
|
15677
|
+
},
|
|
15678
|
+
"sourceCodeUrl": {
|
|
15679
|
+
"type": [
|
|
15680
|
+
"string",
|
|
15681
|
+
"null"
|
|
15682
|
+
]
|
|
15683
|
+
}
|
|
15684
|
+
},
|
|
15685
|
+
"required": [
|
|
15686
|
+
"category"
|
|
15687
|
+
]
|
|
15688
|
+
}
|
|
15689
|
+
}
|
|
15690
|
+
}
|
|
15691
|
+
},
|
|
15692
|
+
"responses": {
|
|
15693
|
+
"200": {
|
|
15694
|
+
"description": "Opted in",
|
|
15695
|
+
"content": {
|
|
15696
|
+
"application/json": {
|
|
15697
|
+
"schema": {
|
|
15698
|
+
"type": "object",
|
|
15699
|
+
"properties": {
|
|
15700
|
+
"domain": {
|
|
15701
|
+
"type": "string"
|
|
15702
|
+
},
|
|
15703
|
+
"listing": {
|
|
15704
|
+
"type": "object",
|
|
15705
|
+
"properties": {
|
|
15706
|
+
"v": {
|
|
15707
|
+
"type": "number",
|
|
15708
|
+
"enum": [
|
|
15709
|
+
1
|
|
15710
|
+
]
|
|
15711
|
+
},
|
|
15712
|
+
"name": {
|
|
15713
|
+
"type": "string"
|
|
15714
|
+
},
|
|
15715
|
+
"domain": {
|
|
15716
|
+
"type": "string"
|
|
15717
|
+
},
|
|
15718
|
+
"category": {
|
|
15719
|
+
"type": "string",
|
|
15720
|
+
"enum": [
|
|
15721
|
+
"engineering",
|
|
15722
|
+
"product",
|
|
15723
|
+
"marketing",
|
|
15724
|
+
"support",
|
|
15725
|
+
"operations",
|
|
15726
|
+
"other"
|
|
15727
|
+
]
|
|
15728
|
+
},
|
|
15729
|
+
"subcategory": {
|
|
15730
|
+
"type": [
|
|
15731
|
+
"string",
|
|
15732
|
+
"null"
|
|
15733
|
+
]
|
|
15734
|
+
},
|
|
15735
|
+
"description": {
|
|
15736
|
+
"type": [
|
|
15737
|
+
"string",
|
|
15738
|
+
"null"
|
|
15739
|
+
]
|
|
15740
|
+
},
|
|
15741
|
+
"sourceCodeUrl": {
|
|
15742
|
+
"type": [
|
|
15743
|
+
"string",
|
|
15744
|
+
"null"
|
|
15745
|
+
]
|
|
15746
|
+
},
|
|
15747
|
+
"updatedAt": {
|
|
15748
|
+
"type": "string"
|
|
15749
|
+
}
|
|
15750
|
+
},
|
|
15751
|
+
"required": [
|
|
15752
|
+
"v",
|
|
15753
|
+
"name",
|
|
15754
|
+
"domain",
|
|
15755
|
+
"category",
|
|
15756
|
+
"subcategory",
|
|
15757
|
+
"description",
|
|
15758
|
+
"sourceCodeUrl",
|
|
15759
|
+
"updatedAt"
|
|
15760
|
+
]
|
|
15761
|
+
},
|
|
15762
|
+
"verifyUrl": {
|
|
15763
|
+
"type": "string"
|
|
15764
|
+
}
|
|
15765
|
+
},
|
|
15766
|
+
"required": [
|
|
15767
|
+
"domain",
|
|
15768
|
+
"listing",
|
|
15769
|
+
"verifyUrl"
|
|
15770
|
+
]
|
|
15771
|
+
}
|
|
15772
|
+
}
|
|
15773
|
+
}
|
|
15774
|
+
},
|
|
15775
|
+
"400": {
|
|
15776
|
+
"description": "A listing field is invalid",
|
|
15777
|
+
"content": {
|
|
15778
|
+
"application/json": {
|
|
15779
|
+
"schema": {
|
|
15780
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15781
|
+
}
|
|
15782
|
+
}
|
|
15783
|
+
}
|
|
15784
|
+
},
|
|
15785
|
+
"401": {
|
|
15786
|
+
"description": "Unauthorized",
|
|
15787
|
+
"content": {
|
|
15788
|
+
"application/json": {
|
|
15789
|
+
"schema": {
|
|
15790
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15791
|
+
}
|
|
15792
|
+
}
|
|
15793
|
+
}
|
|
15794
|
+
},
|
|
15795
|
+
"403": {
|
|
15796
|
+
"description": "Only a config admin can opt in",
|
|
15797
|
+
"content": {
|
|
15798
|
+
"application/json": {
|
|
15799
|
+
"schema": {
|
|
15800
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15801
|
+
}
|
|
15802
|
+
}
|
|
15803
|
+
}
|
|
15804
|
+
},
|
|
15805
|
+
"409": {
|
|
15806
|
+
"description": "telemetry_off: telemetry is off or the install has no ID. org_identity_missing: the organization name or website is not set (`missing` lists which).",
|
|
15807
|
+
"content": {
|
|
15808
|
+
"application/json": {
|
|
15809
|
+
"schema": {
|
|
15810
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15811
|
+
}
|
|
15812
|
+
}
|
|
15813
|
+
}
|
|
15814
|
+
}
|
|
15815
|
+
}
|
|
15816
|
+
}
|
|
15817
|
+
},
|
|
15818
|
+
"/api/ranking/opt-out": {
|
|
15819
|
+
"post": {
|
|
15820
|
+
"summary": "Leave the public ranking",
|
|
15821
|
+
"description": "Turns PUBLIC_RANKING_ENABLED off and sends ranking.opted_out, so workers stop sending ranking.usage. The install leaves agent-swarm.dev/ranking at the next hourly refresh.",
|
|
15822
|
+
"tags": [
|
|
15823
|
+
"Telemetry"
|
|
15824
|
+
],
|
|
15825
|
+
"security": [
|
|
15826
|
+
{
|
|
15827
|
+
"bearerAuth": []
|
|
15828
|
+
}
|
|
15829
|
+
],
|
|
15830
|
+
"responses": {
|
|
15831
|
+
"200": {
|
|
15832
|
+
"description": "Opted out",
|
|
15833
|
+
"content": {
|
|
15834
|
+
"application/json": {
|
|
15835
|
+
"schema": {
|
|
15836
|
+
"type": "object",
|
|
15837
|
+
"properties": {
|
|
15838
|
+
"enabled": {
|
|
15839
|
+
"type": "boolean",
|
|
15840
|
+
"enum": [
|
|
15841
|
+
false
|
|
15842
|
+
]
|
|
15843
|
+
}
|
|
15844
|
+
},
|
|
15845
|
+
"required": [
|
|
15846
|
+
"enabled"
|
|
15847
|
+
]
|
|
15848
|
+
}
|
|
15849
|
+
}
|
|
15850
|
+
}
|
|
15851
|
+
},
|
|
15852
|
+
"401": {
|
|
15853
|
+
"description": "Unauthorized",
|
|
15854
|
+
"content": {
|
|
15855
|
+
"application/json": {
|
|
15856
|
+
"schema": {
|
|
15857
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15858
|
+
}
|
|
15859
|
+
}
|
|
15860
|
+
}
|
|
15861
|
+
},
|
|
15862
|
+
"403": {
|
|
15863
|
+
"description": "Only a config admin can opt out",
|
|
15864
|
+
"content": {
|
|
15865
|
+
"application/json": {
|
|
15866
|
+
"schema": {
|
|
15867
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
15868
|
+
}
|
|
15869
|
+
}
|
|
15870
|
+
}
|
|
15871
|
+
}
|
|
15872
|
+
}
|
|
15873
|
+
}
|
|
15874
|
+
},
|
|
15275
15875
|
"/api/config/resolved": {
|
|
15276
15876
|
"get": {
|
|
15277
15877
|
"summary": "Get resolved config (merged global + agent + repo scopes)",
|
|
@@ -30613,7 +31213,7 @@
|
|
|
30613
31213
|
"/api/tasks": {
|
|
30614
31214
|
"get": {
|
|
30615
31215
|
"summary": "List tasks with filters",
|
|
30616
|
-
"description": "Returns tasks with the full `task` text replaced by a bounded `taskPreview` and completion/integration blobs dropped by default — list views only need the preview. Pass `fields=full` to restore the full `AgentTask`, or `fields=timeline` for the narrow shape the dashboard timeline draws. Fetch a single task in full via `GET /api/tasks/{id}`. `total` (the filtered row count, ignoring limit/offset) is computed only with `includeTotal=true`.",
|
|
31216
|
+
"description": "Returns tasks with the full `task` text replaced by a bounded `taskPreview` and completion/integration blobs dropped by default — list views only need the preview. Pass `fields=full` to restore the full `AgentTask`, or `fields=timeline` for the narrow shape the dashboard timeline draws. Every shape gives a user caller only tasks of sessions they can read. Fetch a single task in full via `GET /api/tasks/{id}`. `total` (the filtered row count, ignoring limit/offset) is computed only with `includeTotal=true`.",
|
|
30617
31217
|
"tags": [
|
|
30618
31218
|
"Tasks"
|
|
30619
31219
|
],
|
|
@@ -32293,6 +32893,16 @@
|
|
|
32293
32893
|
}
|
|
32294
32894
|
}
|
|
32295
32895
|
},
|
|
32896
|
+
"403": {
|
|
32897
|
+
"description": "A user caller cannot read the task's session",
|
|
32898
|
+
"content": {
|
|
32899
|
+
"application/json": {
|
|
32900
|
+
"schema": {
|
|
32901
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
32902
|
+
}
|
|
32903
|
+
}
|
|
32904
|
+
}
|
|
32905
|
+
},
|
|
32296
32906
|
"404": {
|
|
32297
32907
|
"description": "Task not found",
|
|
32298
32908
|
"content": {
|
|
@@ -36389,6 +36999,7 @@
|
|
|
36389
36999
|
"/api/realtime/ticket": {
|
|
36390
37000
|
"post": {
|
|
36391
37001
|
"summary": "Issue a one-shot dashboard realtime ticket",
|
|
37002
|
+
"description": "The ticket authorizes one dashboard socket for presence rooms: Comb drives (`comb.presence`) and sessions (`session.presence`). An operator-key tab's picked user (`X-Swarm-User-Id`) rides on the ticket so session presence can check that user's access.",
|
|
36392
37003
|
"tags": [
|
|
36393
37004
|
"Rooms"
|
|
36394
37005
|
],
|
|
@@ -36421,17 +37032,7 @@
|
|
|
36421
37032
|
}
|
|
36422
37033
|
},
|
|
36423
37034
|
"403": {
|
|
36424
|
-
"description": "
|
|
36425
|
-
"content": {
|
|
36426
|
-
"application/json": {
|
|
36427
|
-
"schema": {
|
|
36428
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
36429
|
-
}
|
|
36430
|
-
}
|
|
36431
|
-
}
|
|
36432
|
-
},
|
|
36433
|
-
"404": {
|
|
36434
|
-
"description": "Comb is not enabled",
|
|
37035
|
+
"description": "Presence is not allowed",
|
|
36435
37036
|
"content": {
|
|
36436
37037
|
"application/json": {
|
|
36437
37038
|
"schema": {
|
|
@@ -47134,6 +47735,18 @@
|
|
|
47134
47735
|
"required": false,
|
|
47135
47736
|
"name": "fields",
|
|
47136
47737
|
"in": "query"
|
|
47738
|
+
},
|
|
47739
|
+
{
|
|
47740
|
+
"schema": {
|
|
47741
|
+
"type": "string",
|
|
47742
|
+
"enum": [
|
|
47743
|
+
"mine",
|
|
47744
|
+
"shared"
|
|
47745
|
+
]
|
|
47746
|
+
},
|
|
47747
|
+
"required": false,
|
|
47748
|
+
"name": "scope",
|
|
47749
|
+
"in": "query"
|
|
47137
47750
|
}
|
|
47138
47751
|
],
|
|
47139
47752
|
"responses": {
|
|
@@ -47425,7 +48038,7 @@
|
|
|
47425
48038
|
],
|
|
47426
48039
|
"responses": {
|
|
47427
48040
|
"200": {
|
|
47428
|
-
"description": "Root task + chain (ordered by createdAt)",
|
|
48041
|
+
"description": "Root task + chain (ordered by createdAt), plus the caller's `access` and the session `owner`",
|
|
47429
48042
|
"content": {
|
|
47430
48043
|
"application/json": {
|
|
47431
48044
|
"schema": {
|
|
@@ -47623,11 +48236,24 @@
|
|
|
47623
48236
|
}
|
|
47624
48237
|
]
|
|
47625
48238
|
}
|
|
48239
|
+
},
|
|
48240
|
+
"access": {
|
|
48241
|
+
"type": "string",
|
|
48242
|
+
"enum": [
|
|
48243
|
+
"owner",
|
|
48244
|
+
"write",
|
|
48245
|
+
"read"
|
|
48246
|
+
]
|
|
48247
|
+
},
|
|
48248
|
+
"owner": {
|
|
48249
|
+
"$ref": "#/components/schemas/SessionOwner"
|
|
47626
48250
|
}
|
|
47627
48251
|
},
|
|
47628
48252
|
"required": [
|
|
47629
48253
|
"root",
|
|
47630
|
-
"chain"
|
|
48254
|
+
"chain",
|
|
48255
|
+
"access",
|
|
48256
|
+
"owner"
|
|
47631
48257
|
]
|
|
47632
48258
|
}
|
|
47633
48259
|
}
|
|
@@ -47643,6 +48269,16 @@
|
|
|
47643
48269
|
}
|
|
47644
48270
|
}
|
|
47645
48271
|
},
|
|
48272
|
+
"403": {
|
|
48273
|
+
"description": "The caller has no access to this session",
|
|
48274
|
+
"content": {
|
|
48275
|
+
"application/json": {
|
|
48276
|
+
"schema": {
|
|
48277
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48278
|
+
}
|
|
48279
|
+
}
|
|
48280
|
+
}
|
|
48281
|
+
},
|
|
47646
48282
|
"404": {
|
|
47647
48283
|
"description": "Root task not found",
|
|
47648
48284
|
"content": {
|
|
@@ -47656,6 +48292,203 @@
|
|
|
47656
48292
|
}
|
|
47657
48293
|
}
|
|
47658
48294
|
},
|
|
48295
|
+
"/api/sessions/{rootTaskId}/shares": {
|
|
48296
|
+
"get": {
|
|
48297
|
+
"summary": "List a session's active shares",
|
|
48298
|
+
"description": "Active shares only. `everyone` is the access every user has; `users` are per-person shares. A session with no shares is private to its owner.",
|
|
48299
|
+
"tags": [
|
|
48300
|
+
"Sessions"
|
|
48301
|
+
],
|
|
48302
|
+
"security": [
|
|
48303
|
+
{
|
|
48304
|
+
"bearerAuth": []
|
|
48305
|
+
}
|
|
48306
|
+
],
|
|
48307
|
+
"parameters": [
|
|
48308
|
+
{
|
|
48309
|
+
"schema": {
|
|
48310
|
+
"type": "string"
|
|
48311
|
+
},
|
|
48312
|
+
"required": true,
|
|
48313
|
+
"name": "rootTaskId",
|
|
48314
|
+
"in": "path"
|
|
48315
|
+
}
|
|
48316
|
+
],
|
|
48317
|
+
"responses": {
|
|
48318
|
+
"200": {
|
|
48319
|
+
"description": "Active shares",
|
|
48320
|
+
"content": {
|
|
48321
|
+
"application/json": {
|
|
48322
|
+
"schema": {
|
|
48323
|
+
"$ref": "#/components/schemas/SessionShares"
|
|
48324
|
+
}
|
|
48325
|
+
}
|
|
48326
|
+
}
|
|
48327
|
+
},
|
|
48328
|
+
"401": {
|
|
48329
|
+
"description": "Unauthorized",
|
|
48330
|
+
"content": {
|
|
48331
|
+
"application/json": {
|
|
48332
|
+
"schema": {
|
|
48333
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48334
|
+
}
|
|
48335
|
+
}
|
|
48336
|
+
}
|
|
48337
|
+
},
|
|
48338
|
+
"403": {
|
|
48339
|
+
"description": "The caller has no access to this session",
|
|
48340
|
+
"content": {
|
|
48341
|
+
"application/json": {
|
|
48342
|
+
"schema": {
|
|
48343
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48344
|
+
}
|
|
48345
|
+
}
|
|
48346
|
+
}
|
|
48347
|
+
},
|
|
48348
|
+
"404": {
|
|
48349
|
+
"description": "Root task not found",
|
|
48350
|
+
"content": {
|
|
48351
|
+
"application/json": {
|
|
48352
|
+
"schema": {
|
|
48353
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48354
|
+
}
|
|
48355
|
+
}
|
|
48356
|
+
}
|
|
48357
|
+
}
|
|
48358
|
+
}
|
|
48359
|
+
},
|
|
48360
|
+
"put": {
|
|
48361
|
+
"summary": "Set who can view or edit a session",
|
|
48362
|
+
"description": "Owner only. The body is the full desired state: users left out lose access. Changed targets have their active share revoked and a new one inserted in one transaction; shares are never deleted.",
|
|
48363
|
+
"tags": [
|
|
48364
|
+
"Sessions"
|
|
48365
|
+
],
|
|
48366
|
+
"security": [
|
|
48367
|
+
{
|
|
48368
|
+
"bearerAuth": []
|
|
48369
|
+
}
|
|
48370
|
+
],
|
|
48371
|
+
"parameters": [
|
|
48372
|
+
{
|
|
48373
|
+
"schema": {
|
|
48374
|
+
"type": "string"
|
|
48375
|
+
},
|
|
48376
|
+
"required": true,
|
|
48377
|
+
"name": "rootTaskId",
|
|
48378
|
+
"in": "path"
|
|
48379
|
+
}
|
|
48380
|
+
],
|
|
48381
|
+
"requestBody": {
|
|
48382
|
+
"content": {
|
|
48383
|
+
"application/json": {
|
|
48384
|
+
"schema": {
|
|
48385
|
+
"type": "object",
|
|
48386
|
+
"properties": {
|
|
48387
|
+
"everyone": {
|
|
48388
|
+
"type": "string",
|
|
48389
|
+
"enum": [
|
|
48390
|
+
"none",
|
|
48391
|
+
"read",
|
|
48392
|
+
"write"
|
|
48393
|
+
]
|
|
48394
|
+
},
|
|
48395
|
+
"users": {
|
|
48396
|
+
"type": "array",
|
|
48397
|
+
"items": {
|
|
48398
|
+
"type": "object",
|
|
48399
|
+
"properties": {
|
|
48400
|
+
"userId": {
|
|
48401
|
+
"type": "string",
|
|
48402
|
+
"minLength": 1
|
|
48403
|
+
},
|
|
48404
|
+
"access": {
|
|
48405
|
+
"type": "string",
|
|
48406
|
+
"enum": [
|
|
48407
|
+
"read",
|
|
48408
|
+
"write"
|
|
48409
|
+
]
|
|
48410
|
+
}
|
|
48411
|
+
},
|
|
48412
|
+
"required": [
|
|
48413
|
+
"userId",
|
|
48414
|
+
"access"
|
|
48415
|
+
]
|
|
48416
|
+
},
|
|
48417
|
+
"maxItems": 500
|
|
48418
|
+
}
|
|
48419
|
+
},
|
|
48420
|
+
"required": [
|
|
48421
|
+
"everyone",
|
|
48422
|
+
"users"
|
|
48423
|
+
]
|
|
48424
|
+
}
|
|
48425
|
+
}
|
|
48426
|
+
}
|
|
48427
|
+
},
|
|
48428
|
+
"responses": {
|
|
48429
|
+
"200": {
|
|
48430
|
+
"description": "Active shares after the change",
|
|
48431
|
+
"content": {
|
|
48432
|
+
"application/json": {
|
|
48433
|
+
"schema": {
|
|
48434
|
+
"$ref": "#/components/schemas/SessionShares"
|
|
48435
|
+
}
|
|
48436
|
+
}
|
|
48437
|
+
}
|
|
48438
|
+
},
|
|
48439
|
+
"400": {
|
|
48440
|
+
"description": "Validation error or unknown user",
|
|
48441
|
+
"content": {
|
|
48442
|
+
"application/json": {
|
|
48443
|
+
"schema": {
|
|
48444
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48445
|
+
}
|
|
48446
|
+
}
|
|
48447
|
+
}
|
|
48448
|
+
},
|
|
48449
|
+
"401": {
|
|
48450
|
+
"description": "Unauthorized",
|
|
48451
|
+
"content": {
|
|
48452
|
+
"application/json": {
|
|
48453
|
+
"schema": {
|
|
48454
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48455
|
+
}
|
|
48456
|
+
}
|
|
48457
|
+
}
|
|
48458
|
+
},
|
|
48459
|
+
"403": {
|
|
48460
|
+
"description": "Only the session owner can share it",
|
|
48461
|
+
"content": {
|
|
48462
|
+
"application/json": {
|
|
48463
|
+
"schema": {
|
|
48464
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48465
|
+
}
|
|
48466
|
+
}
|
|
48467
|
+
}
|
|
48468
|
+
},
|
|
48469
|
+
"404": {
|
|
48470
|
+
"description": "Root task not found",
|
|
48471
|
+
"content": {
|
|
48472
|
+
"application/json": {
|
|
48473
|
+
"schema": {
|
|
48474
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48475
|
+
}
|
|
48476
|
+
}
|
|
48477
|
+
}
|
|
48478
|
+
},
|
|
48479
|
+
"409": {
|
|
48480
|
+
"description": "The session has no owner, so it is already open to everyone",
|
|
48481
|
+
"content": {
|
|
48482
|
+
"application/json": {
|
|
48483
|
+
"schema": {
|
|
48484
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
48485
|
+
}
|
|
48486
|
+
}
|
|
48487
|
+
}
|
|
48488
|
+
}
|
|
48489
|
+
}
|
|
48490
|
+
}
|
|
48491
|
+
},
|
|
47659
48492
|
"/api/skills": {
|
|
47660
48493
|
"get": {
|
|
47661
48494
|
"summary": "List skills with optional filters",
|
|
@@ -53387,7 +54220,8 @@
|
|
|
53387
54220
|
"type": "string",
|
|
53388
54221
|
"enum": [
|
|
53389
54222
|
"banner",
|
|
53390
|
-
"settings"
|
|
54223
|
+
"settings",
|
|
54224
|
+
"benchmark"
|
|
53391
54225
|
],
|
|
53392
54226
|
"default": "banner"
|
|
53393
54227
|
}
|
|
@@ -54174,252 +55008,36 @@
|
|
|
54174
55008
|
}
|
|
54175
55009
|
}
|
|
54176
55010
|
},
|
|
54177
|
-
"/api/trackers/linear/callback": {
|
|
54178
|
-
"get": {
|
|
54179
|
-
"summary": "Handle Linear OAuth callback",
|
|
54180
|
-
"tags": [
|
|
54181
|
-
"Trackers"
|
|
54182
|
-
],
|
|
54183
|
-
"parameters": [
|
|
54184
|
-
{
|
|
54185
|
-
"schema": {
|
|
54186
|
-
"type": "string"
|
|
54187
|
-
},
|
|
54188
|
-
"required": true,
|
|
54189
|
-
"name": "code",
|
|
54190
|
-
"in": "query"
|
|
54191
|
-
},
|
|
54192
|
-
{
|
|
54193
|
-
"schema": {
|
|
54194
|
-
"type": "string"
|
|
54195
|
-
},
|
|
54196
|
-
"required": true,
|
|
54197
|
-
"name": "state",
|
|
54198
|
-
"in": "query"
|
|
54199
|
-
}
|
|
54200
|
-
],
|
|
54201
|
-
"responses": {
|
|
54202
|
-
"200": {
|
|
54203
|
-
"description": "OAuth complete"
|
|
54204
|
-
},
|
|
54205
|
-
"400": {
|
|
54206
|
-
"description": "Invalid state or code",
|
|
54207
|
-
"content": {
|
|
54208
|
-
"application/json": {
|
|
54209
|
-
"schema": {
|
|
54210
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
54211
|
-
}
|
|
54212
|
-
}
|
|
54213
|
-
}
|
|
54214
|
-
},
|
|
54215
|
-
"500": {
|
|
54216
|
-
"description": "Token exchange failed",
|
|
54217
|
-
"content": {
|
|
54218
|
-
"application/json": {
|
|
54219
|
-
"schema": {
|
|
54220
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
54221
|
-
}
|
|
54222
|
-
}
|
|
54223
|
-
}
|
|
54224
|
-
}
|
|
54225
|
-
}
|
|
54226
|
-
}
|
|
54227
|
-
},
|
|
54228
|
-
"/api/trackers/linear/status": {
|
|
54229
|
-
"get": {
|
|
54230
|
-
"summary": "Linear connection status, token expiry, workspace info, expected webhook URL",
|
|
54231
|
-
"tags": [
|
|
54232
|
-
"Trackers"
|
|
54233
|
-
],
|
|
54234
|
-
"security": [
|
|
54235
|
-
{
|
|
54236
|
-
"bearerAuth": []
|
|
54237
|
-
}
|
|
54238
|
-
],
|
|
54239
|
-
"responses": {
|
|
54240
|
-
"200": {
|
|
54241
|
-
"description": "Connection status",
|
|
54242
|
-
"content": {
|
|
54243
|
-
"application/json": {
|
|
54244
|
-
"schema": {
|
|
54245
|
-
"type": "object",
|
|
54246
|
-
"properties": {
|
|
54247
|
-
"provider": {
|
|
54248
|
-
"type": "string",
|
|
54249
|
-
"enum": [
|
|
54250
|
-
"linear"
|
|
54251
|
-
]
|
|
54252
|
-
},
|
|
54253
|
-
"connected": {
|
|
54254
|
-
"type": "boolean"
|
|
54255
|
-
},
|
|
54256
|
-
"tokenExpiry": {
|
|
54257
|
-
"type": [
|
|
54258
|
-
"string",
|
|
54259
|
-
"null"
|
|
54260
|
-
]
|
|
54261
|
-
},
|
|
54262
|
-
"scope": {
|
|
54263
|
-
"type": [
|
|
54264
|
-
"string",
|
|
54265
|
-
"null"
|
|
54266
|
-
]
|
|
54267
|
-
},
|
|
54268
|
-
"webhookUrl": {
|
|
54269
|
-
"type": "string"
|
|
54270
|
-
},
|
|
54271
|
-
"redirectUri": {
|
|
54272
|
-
"type": "string"
|
|
54273
|
-
}
|
|
54274
|
-
},
|
|
54275
|
-
"required": [
|
|
54276
|
-
"provider",
|
|
54277
|
-
"connected",
|
|
54278
|
-
"tokenExpiry",
|
|
54279
|
-
"scope",
|
|
54280
|
-
"webhookUrl",
|
|
54281
|
-
"redirectUri"
|
|
54282
|
-
]
|
|
54283
|
-
}
|
|
54284
|
-
}
|
|
54285
|
-
}
|
|
54286
|
-
},
|
|
54287
|
-
"503": {
|
|
54288
|
-
"description": "Linear integration not configured",
|
|
54289
|
-
"content": {
|
|
54290
|
-
"application/json": {
|
|
54291
|
-
"schema": {
|
|
54292
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
54293
|
-
}
|
|
54294
|
-
}
|
|
54295
|
-
}
|
|
54296
|
-
}
|
|
54297
|
-
}
|
|
54298
|
-
}
|
|
54299
|
-
},
|
|
54300
|
-
"/api/trackers/linear/refresh": {
|
|
54301
|
-
"post": {
|
|
54302
|
-
"summary": "Force a Linear OAuth token refresh and return the updated status payload. Useful when an agent observes an expired token and wants to recover without restarting the server or re-running OAuth.",
|
|
54303
|
-
"tags": [
|
|
54304
|
-
"Trackers"
|
|
54305
|
-
],
|
|
54306
|
-
"security": [
|
|
54307
|
-
{
|
|
54308
|
-
"bearerAuth": []
|
|
54309
|
-
}
|
|
54310
|
-
],
|
|
54311
|
-
"responses": {
|
|
54312
|
-
"200": {
|
|
54313
|
-
"description": "Token refreshed; returns same shape as /status",
|
|
54314
|
-
"content": {
|
|
54315
|
-
"application/json": {
|
|
54316
|
-
"schema": {
|
|
54317
|
-
"type": "object",
|
|
54318
|
-
"properties": {
|
|
54319
|
-
"provider": {
|
|
54320
|
-
"type": "string",
|
|
54321
|
-
"enum": [
|
|
54322
|
-
"linear"
|
|
54323
|
-
]
|
|
54324
|
-
},
|
|
54325
|
-
"connected": {
|
|
54326
|
-
"type": "boolean"
|
|
54327
|
-
},
|
|
54328
|
-
"tokenExpiry": {
|
|
54329
|
-
"type": [
|
|
54330
|
-
"string",
|
|
54331
|
-
"null"
|
|
54332
|
-
]
|
|
54333
|
-
},
|
|
54334
|
-
"scope": {
|
|
54335
|
-
"type": [
|
|
54336
|
-
"string",
|
|
54337
|
-
"null"
|
|
54338
|
-
]
|
|
54339
|
-
},
|
|
54340
|
-
"webhookUrl": {
|
|
54341
|
-
"type": "string"
|
|
54342
|
-
},
|
|
54343
|
-
"redirectUri": {
|
|
54344
|
-
"type": "string"
|
|
54345
|
-
}
|
|
54346
|
-
},
|
|
54347
|
-
"required": [
|
|
54348
|
-
"provider",
|
|
54349
|
-
"connected",
|
|
54350
|
-
"tokenExpiry",
|
|
54351
|
-
"scope",
|
|
54352
|
-
"webhookUrl",
|
|
54353
|
-
"redirectUri"
|
|
54354
|
-
]
|
|
54355
|
-
}
|
|
54356
|
-
}
|
|
54357
|
-
}
|
|
54358
|
-
},
|
|
54359
|
-
"409": {
|
|
54360
|
-
"description": "Linear not connected (no refresh token stored)",
|
|
54361
|
-
"content": {
|
|
54362
|
-
"application/json": {
|
|
54363
|
-
"schema": {
|
|
54364
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
54365
|
-
}
|
|
54366
|
-
}
|
|
54367
|
-
}
|
|
54368
|
-
},
|
|
54369
|
-
"500": {
|
|
54370
|
-
"description": "Refresh failed",
|
|
54371
|
-
"content": {
|
|
54372
|
-
"application/json": {
|
|
54373
|
-
"schema": {
|
|
54374
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
54375
|
-
}
|
|
54376
|
-
}
|
|
54377
|
-
}
|
|
54378
|
-
},
|
|
54379
|
-
"503": {
|
|
54380
|
-
"description": "Linear integration not configured",
|
|
54381
|
-
"content": {
|
|
54382
|
-
"application/json": {
|
|
54383
|
-
"schema": {
|
|
54384
|
-
"$ref": "#/components/schemas/ErrorResponse"
|
|
54385
|
-
}
|
|
54386
|
-
}
|
|
54387
|
-
}
|
|
54388
|
-
}
|
|
54389
|
-
}
|
|
54390
|
-
}
|
|
54391
|
-
},
|
|
54392
|
-
"/api/trackers/linear/webhook": {
|
|
54393
|
-
"post": {
|
|
54394
|
-
"summary": "Handle Linear webhook events (signature-verified)",
|
|
55011
|
+
"/api/trackers/linear/callback": {
|
|
55012
|
+
"get": {
|
|
55013
|
+
"summary": "Handle Linear OAuth callback",
|
|
54395
55014
|
"tags": [
|
|
54396
55015
|
"Trackers"
|
|
54397
55016
|
],
|
|
55017
|
+
"parameters": [
|
|
55018
|
+
{
|
|
55019
|
+
"schema": {
|
|
55020
|
+
"type": "string"
|
|
55021
|
+
},
|
|
55022
|
+
"required": true,
|
|
55023
|
+
"name": "code",
|
|
55024
|
+
"in": "query"
|
|
55025
|
+
},
|
|
55026
|
+
{
|
|
55027
|
+
"schema": {
|
|
55028
|
+
"type": "string"
|
|
55029
|
+
},
|
|
55030
|
+
"required": true,
|
|
55031
|
+
"name": "state",
|
|
55032
|
+
"in": "query"
|
|
55033
|
+
}
|
|
55034
|
+
],
|
|
54398
55035
|
"responses": {
|
|
54399
55036
|
"200": {
|
|
54400
|
-
"description": "
|
|
54401
|
-
"content": {
|
|
54402
|
-
"application/json": {
|
|
54403
|
-
"schema": {
|
|
54404
|
-
"type": "object",
|
|
54405
|
-
"properties": {
|
|
54406
|
-
"status": {
|
|
54407
|
-
"type": "string",
|
|
54408
|
-
"enum": [
|
|
54409
|
-
"duplicate",
|
|
54410
|
-
"accepted"
|
|
54411
|
-
]
|
|
54412
|
-
}
|
|
54413
|
-
},
|
|
54414
|
-
"required": [
|
|
54415
|
-
"status"
|
|
54416
|
-
]
|
|
54417
|
-
}
|
|
54418
|
-
}
|
|
54419
|
-
}
|
|
55037
|
+
"description": "OAuth complete"
|
|
54420
55038
|
},
|
|
54421
|
-
"
|
|
54422
|
-
"description": "Invalid
|
|
55039
|
+
"400": {
|
|
55040
|
+
"description": "Invalid state or code",
|
|
54423
55041
|
"content": {
|
|
54424
55042
|
"application/json": {
|
|
54425
55043
|
"schema": {
|
|
@@ -54428,8 +55046,8 @@
|
|
|
54428
55046
|
}
|
|
54429
55047
|
}
|
|
54430
55048
|
},
|
|
54431
|
-
"
|
|
54432
|
-
"description": "
|
|
55049
|
+
"500": {
|
|
55050
|
+
"description": "Token exchange failed",
|
|
54433
55051
|
"content": {
|
|
54434
55052
|
"application/json": {
|
|
54435
55053
|
"schema": {
|
|
@@ -54441,9 +55059,9 @@
|
|
|
54441
55059
|
}
|
|
54442
55060
|
}
|
|
54443
55061
|
},
|
|
54444
|
-
"/api/trackers/linear/
|
|
54445
|
-
"
|
|
54446
|
-
"summary": "
|
|
55062
|
+
"/api/trackers/linear/status": {
|
|
55063
|
+
"get": {
|
|
55064
|
+
"summary": "Linear connection status, token expiry, workspace info, expected webhook URL",
|
|
54447
55065
|
"tags": [
|
|
54448
55066
|
"Trackers"
|
|
54449
55067
|
],
|
|
@@ -54454,32 +55072,54 @@
|
|
|
54454
55072
|
],
|
|
54455
55073
|
"responses": {
|
|
54456
55074
|
"200": {
|
|
54457
|
-
"description": "
|
|
55075
|
+
"description": "Connection status",
|
|
54458
55076
|
"content": {
|
|
54459
55077
|
"application/json": {
|
|
54460
55078
|
"schema": {
|
|
54461
55079
|
"type": "object",
|
|
54462
55080
|
"properties": {
|
|
54463
|
-
"
|
|
54464
|
-
"type": "
|
|
55081
|
+
"provider": {
|
|
55082
|
+
"type": "string",
|
|
54465
55083
|
"enum": [
|
|
54466
|
-
|
|
55084
|
+
"linear"
|
|
54467
55085
|
]
|
|
54468
55086
|
},
|
|
54469
|
-
"
|
|
55087
|
+
"connected": {
|
|
54470
55088
|
"type": "boolean"
|
|
55089
|
+
},
|
|
55090
|
+
"tokenExpiry": {
|
|
55091
|
+
"type": [
|
|
55092
|
+
"string",
|
|
55093
|
+
"null"
|
|
55094
|
+
]
|
|
55095
|
+
},
|
|
55096
|
+
"scope": {
|
|
55097
|
+
"type": [
|
|
55098
|
+
"string",
|
|
55099
|
+
"null"
|
|
55100
|
+
]
|
|
55101
|
+
},
|
|
55102
|
+
"webhookUrl": {
|
|
55103
|
+
"type": "string"
|
|
55104
|
+
},
|
|
55105
|
+
"redirectUri": {
|
|
55106
|
+
"type": "string"
|
|
54471
55107
|
}
|
|
54472
55108
|
},
|
|
54473
55109
|
"required": [
|
|
54474
|
-
"
|
|
54475
|
-
"
|
|
55110
|
+
"provider",
|
|
55111
|
+
"connected",
|
|
55112
|
+
"tokenExpiry",
|
|
55113
|
+
"scope",
|
|
55114
|
+
"webhookUrl",
|
|
55115
|
+
"redirectUri"
|
|
54476
55116
|
]
|
|
54477
55117
|
}
|
|
54478
55118
|
}
|
|
54479
55119
|
}
|
|
54480
55120
|
},
|
|
54481
55121
|
"503": {
|
|
54482
|
-
"description": "Linear not configured",
|
|
55122
|
+
"description": "Linear integration not configured",
|
|
54483
55123
|
"content": {
|
|
54484
55124
|
"application/json": {
|
|
54485
55125
|
"schema": {
|
|
@@ -54491,60 +55131,67 @@
|
|
|
54491
55131
|
}
|
|
54492
55132
|
}
|
|
54493
55133
|
},
|
|
54494
|
-
"/api/
|
|
55134
|
+
"/api/trackers/linear/refresh": {
|
|
54495
55135
|
"post": {
|
|
54496
|
-
"summary": "
|
|
54497
|
-
"description": "Records whether agent-swarm.dev may show this organization's logo as a company that uses Agent Swarm. Sends the organization name and website to the telemetry proxy, where a person approves each logo by hand. An explicit admin action, so it is not gated by the telemetry opt-out.",
|
|
55136
|
+
"summary": "Force a Linear OAuth token refresh and return the updated status payload. Useful when an agent observes an expired token and wants to recover without restarting the server or re-running OAuth.",
|
|
54498
55137
|
"tags": [
|
|
54499
|
-
"
|
|
55138
|
+
"Trackers"
|
|
54500
55139
|
],
|
|
54501
55140
|
"security": [
|
|
54502
55141
|
{
|
|
54503
55142
|
"bearerAuth": []
|
|
54504
55143
|
}
|
|
54505
55144
|
],
|
|
54506
|
-
"requestBody": {
|
|
54507
|
-
"content": {
|
|
54508
|
-
"application/json": {
|
|
54509
|
-
"schema": {
|
|
54510
|
-
"type": "object",
|
|
54511
|
-
"properties": {
|
|
54512
|
-
"granted": {
|
|
54513
|
-
"type": "boolean"
|
|
54514
|
-
}
|
|
54515
|
-
},
|
|
54516
|
-
"required": [
|
|
54517
|
-
"granted"
|
|
54518
|
-
]
|
|
54519
|
-
}
|
|
54520
|
-
}
|
|
54521
|
-
}
|
|
54522
|
-
},
|
|
54523
55145
|
"responses": {
|
|
54524
55146
|
"200": {
|
|
54525
|
-
"description": "
|
|
55147
|
+
"description": "Token refreshed; returns same shape as /status",
|
|
54526
55148
|
"content": {
|
|
54527
55149
|
"application/json": {
|
|
54528
55150
|
"schema": {
|
|
54529
55151
|
"type": "object",
|
|
54530
55152
|
"properties": {
|
|
54531
|
-
"
|
|
55153
|
+
"provider": {
|
|
55154
|
+
"type": "string",
|
|
55155
|
+
"enum": [
|
|
55156
|
+
"linear"
|
|
55157
|
+
]
|
|
55158
|
+
},
|
|
55159
|
+
"connected": {
|
|
54532
55160
|
"type": "boolean"
|
|
54533
55161
|
},
|
|
54534
|
-
"
|
|
55162
|
+
"tokenExpiry": {
|
|
55163
|
+
"type": [
|
|
55164
|
+
"string",
|
|
55165
|
+
"null"
|
|
55166
|
+
]
|
|
55167
|
+
},
|
|
55168
|
+
"scope": {
|
|
55169
|
+
"type": [
|
|
55170
|
+
"string",
|
|
55171
|
+
"null"
|
|
55172
|
+
]
|
|
55173
|
+
},
|
|
55174
|
+
"webhookUrl": {
|
|
55175
|
+
"type": "string"
|
|
55176
|
+
},
|
|
55177
|
+
"redirectUri": {
|
|
54535
55178
|
"type": "string"
|
|
54536
55179
|
}
|
|
54537
55180
|
},
|
|
54538
55181
|
"required": [
|
|
54539
|
-
"
|
|
54540
|
-
"
|
|
55182
|
+
"provider",
|
|
55183
|
+
"connected",
|
|
55184
|
+
"tokenExpiry",
|
|
55185
|
+
"scope",
|
|
55186
|
+
"webhookUrl",
|
|
55187
|
+
"redirectUri"
|
|
54541
55188
|
]
|
|
54542
55189
|
}
|
|
54543
55190
|
}
|
|
54544
55191
|
}
|
|
54545
55192
|
},
|
|
54546
|
-
"
|
|
54547
|
-
"description": "
|
|
55193
|
+
"409": {
|
|
55194
|
+
"description": "Linear not connected (no refresh token stored)",
|
|
54548
55195
|
"content": {
|
|
54549
55196
|
"application/json": {
|
|
54550
55197
|
"schema": {
|
|
@@ -54553,8 +55200,60 @@
|
|
|
54553
55200
|
}
|
|
54554
55201
|
}
|
|
54555
55202
|
},
|
|
55203
|
+
"500": {
|
|
55204
|
+
"description": "Refresh failed",
|
|
55205
|
+
"content": {
|
|
55206
|
+
"application/json": {
|
|
55207
|
+
"schema": {
|
|
55208
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
55209
|
+
}
|
|
55210
|
+
}
|
|
55211
|
+
}
|
|
55212
|
+
},
|
|
55213
|
+
"503": {
|
|
55214
|
+
"description": "Linear integration not configured",
|
|
55215
|
+
"content": {
|
|
55216
|
+
"application/json": {
|
|
55217
|
+
"schema": {
|
|
55218
|
+
"$ref": "#/components/schemas/ErrorResponse"
|
|
55219
|
+
}
|
|
55220
|
+
}
|
|
55221
|
+
}
|
|
55222
|
+
}
|
|
55223
|
+
}
|
|
55224
|
+
}
|
|
55225
|
+
},
|
|
55226
|
+
"/api/trackers/linear/webhook": {
|
|
55227
|
+
"post": {
|
|
55228
|
+
"summary": "Handle Linear webhook events (signature-verified)",
|
|
55229
|
+
"tags": [
|
|
55230
|
+
"Trackers"
|
|
55231
|
+
],
|
|
55232
|
+
"responses": {
|
|
55233
|
+
"200": {
|
|
55234
|
+
"description": "Event accepted",
|
|
55235
|
+
"content": {
|
|
55236
|
+
"application/json": {
|
|
55237
|
+
"schema": {
|
|
55238
|
+
"type": "object",
|
|
55239
|
+
"properties": {
|
|
55240
|
+
"status": {
|
|
55241
|
+
"type": "string",
|
|
55242
|
+
"enum": [
|
|
55243
|
+
"duplicate",
|
|
55244
|
+
"accepted"
|
|
55245
|
+
]
|
|
55246
|
+
}
|
|
55247
|
+
},
|
|
55248
|
+
"required": [
|
|
55249
|
+
"status"
|
|
55250
|
+
]
|
|
55251
|
+
}
|
|
55252
|
+
}
|
|
55253
|
+
}
|
|
55254
|
+
},
|
|
54556
55255
|
"401": {
|
|
54557
|
-
"description": "
|
|
55256
|
+
"description": "Invalid signature",
|
|
54558
55257
|
"content": {
|
|
54559
55258
|
"application/json": {
|
|
54560
55259
|
"schema": {
|
|
@@ -54563,8 +55262,8 @@
|
|
|
54563
55262
|
}
|
|
54564
55263
|
}
|
|
54565
55264
|
},
|
|
54566
|
-
"
|
|
54567
|
-
"description": "
|
|
55265
|
+
"503": {
|
|
55266
|
+
"description": "Linear integration not configured",
|
|
54568
55267
|
"content": {
|
|
54569
55268
|
"application/json": {
|
|
54570
55269
|
"schema": {
|
|
@@ -54572,9 +55271,49 @@
|
|
|
54572
55271
|
}
|
|
54573
55272
|
}
|
|
54574
55273
|
}
|
|
55274
|
+
}
|
|
55275
|
+
}
|
|
55276
|
+
}
|
|
55277
|
+
},
|
|
55278
|
+
"/api/trackers/linear/disconnect": {
|
|
55279
|
+
"delete": {
|
|
55280
|
+
"summary": "Fully disconnect Linear: revoke OAuth grant + drop tokens",
|
|
55281
|
+
"tags": [
|
|
55282
|
+
"Trackers"
|
|
55283
|
+
],
|
|
55284
|
+
"security": [
|
|
55285
|
+
{
|
|
55286
|
+
"bearerAuth": []
|
|
55287
|
+
}
|
|
55288
|
+
],
|
|
55289
|
+
"responses": {
|
|
55290
|
+
"200": {
|
|
55291
|
+
"description": "Disconnected",
|
|
55292
|
+
"content": {
|
|
55293
|
+
"application/json": {
|
|
55294
|
+
"schema": {
|
|
55295
|
+
"type": "object",
|
|
55296
|
+
"properties": {
|
|
55297
|
+
"disconnected": {
|
|
55298
|
+
"type": "boolean",
|
|
55299
|
+
"enum": [
|
|
55300
|
+
true
|
|
55301
|
+
]
|
|
55302
|
+
},
|
|
55303
|
+
"revoked": {
|
|
55304
|
+
"type": "boolean"
|
|
55305
|
+
}
|
|
55306
|
+
},
|
|
55307
|
+
"required": [
|
|
55308
|
+
"disconnected",
|
|
55309
|
+
"revoked"
|
|
55310
|
+
]
|
|
55311
|
+
}
|
|
55312
|
+
}
|
|
55313
|
+
}
|
|
54575
55314
|
},
|
|
54576
|
-
"
|
|
54577
|
-
"description": "
|
|
55315
|
+
"503": {
|
|
55316
|
+
"description": "Linear not configured",
|
|
54578
55317
|
"content": {
|
|
54579
55318
|
"application/json": {
|
|
54580
55319
|
"schema": {
|
|
@@ -54589,7 +55328,7 @@
|
|
|
54589
55328
|
"/api/fleet-benchmark": {
|
|
54590
55329
|
"get": {
|
|
54591
55330
|
"summary": "Compare this swarm with similar swarms",
|
|
54592
|
-
"description": "
|
|
55331
|
+
"description": "Compares local task volume and success rate with fleet percentiles over the last 30 days. Comparisons require telemetry, an organization name, and a known proxy ingest date. A website, team size, and use case enable full comparisons with peer filters. The response includes the proxy's peer group when available. With telemetry off, it returns local DB counts without a proxy request. The fleet cache key includes the peer filters.",
|
|
54593
55332
|
"tags": [
|
|
54594
55333
|
"Telemetry"
|
|
54595
55334
|
],
|
|
@@ -54616,6 +55355,41 @@
|
|
|
54616
55355
|
"unavailable"
|
|
54617
55356
|
]
|
|
54618
55357
|
},
|
|
55358
|
+
"level": {
|
|
55359
|
+
"type": "string",
|
|
55360
|
+
"enum": [
|
|
55361
|
+
"basic",
|
|
55362
|
+
"full"
|
|
55363
|
+
]
|
|
55364
|
+
},
|
|
55365
|
+
"peerGroup": {
|
|
55366
|
+
"type": [
|
|
55367
|
+
"object",
|
|
55368
|
+
"null"
|
|
55369
|
+
],
|
|
55370
|
+
"properties": {
|
|
55371
|
+
"teamSize": {
|
|
55372
|
+
"type": [
|
|
55373
|
+
"string",
|
|
55374
|
+
"null"
|
|
55375
|
+
]
|
|
55376
|
+
},
|
|
55377
|
+
"useCase": {
|
|
55378
|
+
"type": [
|
|
55379
|
+
"string",
|
|
55380
|
+
"null"
|
|
55381
|
+
]
|
|
55382
|
+
},
|
|
55383
|
+
"orgs": {
|
|
55384
|
+
"type": "integer"
|
|
55385
|
+
}
|
|
55386
|
+
},
|
|
55387
|
+
"required": [
|
|
55388
|
+
"teamSize",
|
|
55389
|
+
"useCase",
|
|
55390
|
+
"orgs"
|
|
55391
|
+
]
|
|
55392
|
+
},
|
|
54619
55393
|
"local": {
|
|
54620
55394
|
"type": [
|
|
54621
55395
|
"object",
|
|
@@ -54721,6 +55495,8 @@
|
|
|
54721
55495
|
},
|
|
54722
55496
|
"required": [
|
|
54723
55497
|
"state",
|
|
55498
|
+
"level",
|
|
55499
|
+
"peerGroup",
|
|
54724
55500
|
"local",
|
|
54725
55501
|
"minFinishedTasks",
|
|
54726
55502
|
"generatedAt",
|
|
@@ -55010,7 +55786,8 @@
|
|
|
55010
55786
|
"minLength": 1
|
|
55011
55787
|
},
|
|
55012
55788
|
"email": {
|
|
55013
|
-
"type": "string"
|
|
55789
|
+
"type": "string",
|
|
55790
|
+
"format": "email"
|
|
55014
55791
|
},
|
|
55015
55792
|
"role": {
|
|
55016
55793
|
"type": "string"
|
|
@@ -55790,7 +56567,11 @@
|
|
|
55790
56567
|
"minLength": 1
|
|
55791
56568
|
},
|
|
55792
56569
|
"email": {
|
|
55793
|
-
"type":
|
|
56570
|
+
"type": [
|
|
56571
|
+
"string",
|
|
56572
|
+
"null"
|
|
56573
|
+
],
|
|
56574
|
+
"format": "email"
|
|
55794
56575
|
},
|
|
55795
56576
|
"role": {
|
|
55796
56577
|
"type": "string"
|