@desplega.ai/agent-swarm 2.4.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 -1
- package/dist/{acp-adapter-kedstxx6.js → acp-adapter-zvzr538d.js} +9 -9
- package/dist/{actions-vget6r1k.js → actions-jhtqdw69.js} +21 -21
- package/dist/{amp-adapter-xeb5mktv.js → amp-adapter-bd84rhs2.js} +4 -4
- package/dist/{app-mqap8t8m.js → app-kreq1gwg.js} +3 -3
- package/dist/{assistant-h0gv97mv.js → assistant-3k22sbsq.js} +22 -22
- package/dist/{boot-reembed-qr8a894z.js → boot-reembed-e53x6b9v.js} +1 -1
- package/dist/{boot-reembed-rj85jjhw.js → boot-reembed-f6z923ny.js} +1 -1
- package/dist/{boot-scrub-sweep-eyfvn6v9.js → boot-scrub-sweep-0538vsb7.js} +4 -4
- package/dist/{boot-seeds-xs9a8dx1.js → boot-seeds-6wxqkfk2.js} +4 -4
- package/dist/{claude-adapter-bm23cye7.js → claude-adapter-gfts5044.js} +9 -9
- package/dist/{claude-managed-adapter-1mwrsm9d.js → claude-managed-adapter-h2y889ge.js} +2 -2
- package/dist/{claude-managed-setup-gkfgks4j.js → claude-managed-setup-h00hsgtz.js} +2 -2
- package/dist/{claude-sdk-session-apb4ypz3.js → claude-sdk-session-56besmfz.js} +13 -13
- package/dist/{cli-nrrg0fvy.js → cli-0bh477zn.js} +18 -5
- package/dist/{cli-7gh7020n.js → cli-1dmcq2eh.js} +1 -1
- package/dist/{cli-7ayprxp7.js → cli-2dfbv8qr.js} +8 -0
- package/dist/{cli-1cevz46c.js → cli-3kh4kpqy.js} +6 -6
- package/dist/{cli-tg9ksbn8.js → cli-3p8fqcnh.js} +2 -2
- package/dist/{cli-x1p5dhq2.js → cli-3r448dqn.js} +3 -3
- package/dist/{cli-ecshf504.js → cli-3tnpj2bh.js} +7 -7
- package/dist/{cli-ffbrkh1r.js → cli-471qk6s2.js} +46 -38
- package/dist/{cli-a49vpbf3.js → cli-5kqnemen.js} +1 -1
- package/dist/{cli-zvze9rbm.js → cli-6ncjvx55.js} +3 -3
- package/dist/{cli-fb6t92v8.js → cli-6x9ma5w5.js} +1 -1
- package/dist/{cli-c8fwpgqb.js → cli-7225gwj7.js} +2 -2
- package/dist/{cli-bn26xbcs.js → cli-8nyhf7za.js} +1 -1
- package/dist/{cli-y83zk5sb.js → cli-a0kcty51.js} +4 -4
- package/dist/{cli-8b9wvjps.js → cli-a4gvwttf.js} +4 -4
- package/dist/{cli-jhp7w1fy.js → cli-a5ebc95n.js} +2 -2
- package/dist/{cli-mz1ezzzh.js → cli-ash6xxk7.js} +2 -2
- package/dist/{cli-rsd7ga7v.js → cli-axh29tyr.js} +11 -11
- package/dist/{cli-p22zdvnt.js → cli-bn0rewsy.js} +3 -3
- package/dist/{cli-6ftrrwm1.js → cli-bn5kevnf.js} +5 -5
- package/dist/{cli-p1m2b6gc.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-a1esmmee.js → cli-fpmsqq59.js} +7 -2
- package/dist/{cli-8cxkw1f5.js → cli-fz9kewbh.js} +2 -2
- package/dist/{cli-8rwvksbc.js → cli-g0hgtz4p.js} +5 -5
- package/dist/{cli-kz116kvw.js → cli-gf0kfg81.js} +7 -7
- package/dist/{cli-eqgfs202.js → cli-hqhzg1qq.js} +2 -2
- package/dist/{cli-3wjs22x3.js → cli-j4rqdf2n.js} +2 -2
- package/dist/{cli-ywyrffff.js → cli-jh0qcrga.js} +1 -1
- package/dist/{cli-ttaz6c7m.js → cli-k9z4zd4p.js} +6 -5
- package/dist/{cli-nme7wery.js → cli-kmqgmcnb.js} +46 -13
- package/dist/{cli-x719j3vs.js → cli-kr2pmfqx.js} +392 -168
- package/dist/{cli-wrv09v7q.js → cli-m2qgh5sv.js} +1 -1
- package/dist/{cli-xfe63zx3.js → cli-mfe7f7b5.js} +2 -2
- package/dist/{cli-x3en6ct3.js → cli-nwyw3zhg.js} +1 -1
- package/dist/{cli-5s5hx57y.js → cli-nx462e4v.js} +1 -1
- package/dist/{cli-bfc3k1x5.js → cli-p0rakbrk.js} +9 -9
- package/dist/{cli-avmqhatn.js → cli-p6argxh9.js} +8 -8
- package/dist/{cli-3avfh5az.js → cli-pemywhfq.js} +2 -2
- package/dist/{cli-sppc0cmw.js → cli-pnp2j5zg.js} +2 -2
- package/dist/{cli-wk8ccrz6.js → cli-pw7v69vp.js} +2 -2
- package/dist/{cli-bhwa8rzc.js → cli-rdq7tzwm.js} +13 -12
- package/dist/{cli-rg7ntypm.js → cli-rqqsfz30.js} +379 -87
- package/dist/{cli-kk2r80n5.js → cli-s48yvzb8.js} +4 -4
- package/dist/{cli-zv4vy2b0.js → cli-s95dknxh.js} +1 -1
- package/dist/{cli-b80a1100.js → cli-sjyetj21.js} +2 -2
- package/dist/{cli-rdr166ht.js → cli-smvcw9z5.js} +1 -1
- package/dist/{cli-2rwet3r7.js → cli-sv5gb0yb.js} +1 -1
- package/dist/{cli-5ff2sjyt.js → cli-syhq378v.js} +2 -2
- package/dist/{cli-tj4j2ts4.js → cli-tbhwrxpt.js} +8 -8
- package/dist/{cli-4fhyq711.js → cli-vy0fay6k.js} +13 -13
- package/dist/{cli-ptkpaqfy.js → cli-wt645v7q.js} +1 -1
- package/dist/{cli-f3nx1h8z.js → cli-wxbn3yfx.js} +2 -2
- package/dist/{cli-wyrr38xm.js → cli-x5mq1fyq.js} +1 -1
- package/dist/{cli-ccn0eybf.js → cli-xbzvet96.js} +6 -6
- package/dist/{cli-4mkvwgzr.js → cli-xf234ws8.js} +1 -1
- package/dist/{cli-tgvpmnwz.js → cli-xftrvxag.js} +5 -5
- package/dist/{cli-02vhhssk.js → cli-z071fb95.js} +5 -5
- package/dist/{cli-mvg2hf8p.js → cli-z1ew8vbq.js} +14 -7
- package/dist/{cli-dsgj3e7a.js → cli-zfg9enh9.js} +2 -2
- package/dist/{cli-yxqag76b.js → cli-zw88zjba.js} +1 -1
- package/dist/cli.js +19 -19
- package/dist/{codex-adapter-pp2gq8gr.js → codex-adapter-p6rmm7vv.js} +6 -6
- package/dist/{codex-hook-qwzccd64.js → codex-hook-x7nejyrr.js} +7 -4
- package/dist/{codex-login-35p4sk85.js → codex-login-m819c41r.js} +1 -1
- package/dist/{codex-session-runner-0vzn09t8.js → codex-session-runner-8vd5t9t0.js} +7 -7
- package/dist/{commands-psqhkttb.js → commands-7ems2p13.js} +2 -2
- package/dist/{controller-t20vz2k8.js → controller-m263fg43.js} +4 -4
- package/dist/{controllers-connect-gkxmqw9d.js → controllers-connect-bg33ae53.js} +23 -23
- package/dist/{cursor-adapter-3v542qe5.js → cursor-adapter-cz6nm6mj.js} +3 -3
- package/dist/{db-2xbyenjr.js → db-w505dwa8.js} +2 -2
- package/dist/{db-nc1rd869.js → db-ys2rbdft.js} +3 -3
- package/dist/{devin-adapter-7egzmt0k.js → devin-adapter-zgqadvnm.js} +1 -1
- package/dist/{dispatcher-ewceb8ts.js → dispatcher-0s0mckqr.js} +20 -20
- package/dist/{docker-njavd3fb.js → docker-fkgtr75t.js} +2 -2
- package/dist/{dsh-adapter-75xwh78t.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-xsc47jwf.js → easter-egg-3d-5cgynaja.js} +1 -1
- package/dist/{event-bus-101fenkh.js → event-bus-9vpk8gmq.js} +1 -1
- package/dist/{execute-gzmw1mnw.js → execute-t4e6m3rw.js} +1 -1
- package/dist/{external-channel-a5dsmxn4.js → external-channel-5b23fv8z.js} +2 -2
- package/dist/{grok-adapter-vj88xr23.js → grok-adapter-q9fghe5q.js} +10 -10
- package/dist/handlers-mqrym347.js +39 -0
- package/dist/{heartbeat-t2m9r3wa.js → heartbeat-tww6yx1w.js} +23 -23
- package/dist/{hook-xa677f8r.js → hook-dx0pkvar.js} +16 -9
- package/dist/{hook-8femx1bg.js → hook-pvmh9b6m.js} +6 -6
- package/dist/{http-xpmmq028.js → http-k2ejbt05.js} +199 -131
- package/dist/{index-s7ckdajq.js → index-2z710v4x.js} +10 -10
- package/dist/{index-dg2tmj99.js → index-dgz61nff.js} +20 -20
- package/dist/{index-syztqdt6.js → index-g6tbb6ve.js} +1 -1
- package/dist/index-h2ek08d6.js +40 -0
- package/dist/index-pqfwh9nn.js +41 -0
- package/dist/{index-cdzyfrsp.js → index-x5aktmp8.js} +1 -1
- package/dist/{keepalive-3nr4st3r.js → keepalive-nhvpw10z.js} +4 -4
- package/dist/lead-jb6sf69z.js +78 -0
- package/dist/{maintenance-verwpe2c.js → maintenance-agakc519.js} +1 -1
- package/dist/{oauth-refresh-sweep-9q2t0y3q.js → oauth-refresh-sweep-4dcbhtn0.js} +3 -3
- package/dist/{onboard-aytqedmq.js → onboard-4n2kwa4v.js} +3 -3
- package/dist/{opencode-adapter-f4hryjny.js → opencode-adapter-3s7ax02e.js} +7 -7
- package/dist/{otel-impl-hckw4wt1.js → otel-impl-tfa12080.js} +2 -2
- package/dist/{pi-mono-adapter-hxby0ce1.js → pi-mono-adapter-ytp7gz8b.js} +22 -11
- package/dist/{pricing-refresh-5nvme3sm.js → pricing-refresh-3cqx3f3x.js} +3 -3
- package/dist/{rbac-roles-pd8c26m1.js → rbac-roles-9fae5rnv.js} +1 -1
- package/dist/{rbac-roles-vbpy21mg.js → rbac-roles-y6zbfzve.js} +2 -2
- package/dist/{render-v2-7nqgvk2q.js → render-v2-emawjvc4.js} +3 -3
- package/dist/{resume-b6djcj3c.js → resume-zhgts7h7.js} +10 -8
- package/dist/{runtime-txrxc9za.js → runtime-xe3aqy4x.js} +1 -1
- package/dist/{session-access-fc3f9y12.js → session-access-cm823e06.js} +4 -4
- package/dist/{setup-n39szm6b.js → setup-tkp99w1e.js} +1 -1
- package/dist/{virtual-modules-wyp2k6z3.js → virtual-modules-4r3zkc20.js} +2 -2
- package/dist/{work-objects-jem2fre0.js → work-objects-f722h263.js} +23 -23
- package/dist/worker-p7f336rq.js +78 -0
- package/dist/{x-8ewt8gxn.js → x-y45mthwn.js} +2 -2
- package/openapi.json +99 -52
- package/package.json +2 -2
- package/src/apps/action-runner.ts +146 -0
- package/src/apps/row-store.ts +4 -2
- package/src/apps/script-types.ts +1 -1
- package/src/be/db.ts +14 -4
- package/src/be/fleet-benchmark-stats.ts +10 -5
- package/src/be/models-catalog.ts +4 -0
- package/src/be/onboarding.ts +6 -0
- package/src/be/scripts/typecheck.ts +13 -0
- package/src/be/swarm-config-guard.ts +10 -1
- package/src/be/telemetry-enable.ts +1 -1
- package/src/commands/provider-credentials.ts +12 -2
- package/src/commands/runner.ts +3 -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/agents.ts +1 -0
- package/src/http/apps.ts +84 -181
- package/src/http/fleet-benchmark.ts +79 -30
- package/src/http/global-config.ts +7 -0
- package/src/http/ranking.ts +24 -40
- package/src/http/tasks.ts +2 -1
- package/src/http/telemetry-ui.ts +1 -1
- package/src/http/used-by.ts +55 -19
- package/src/http/users.ts +2 -2
- 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 +5 -33
- 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/telemetry-context.ts +19 -1
- package/src/telemetry-contract/EVENTS.md +42 -8
- package/src/telemetry-contract/SOURCE.json +6 -5
- package/src/telemetry-contract/catalog.json +225 -5
- package/src/telemetry-contract/ranking/fixtures/valid/no-claim.json +10 -0
- package/src/telemetry-contract/ranking/listing.v1.schema.json +2 -2
- package/src/telemetry-contract/types.gen.ts +225 -27
- 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 +14 -3
- package/src/tests/app-action-run-tool.test.ts +178 -0
- package/src/tests/app-row-tools.test.ts +360 -0
- package/src/tests/check-pr-body.test.ts +0 -23
- package/src/tests/credential-check.test.ts +38 -0
- 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-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 +8 -23
- package/src/tests/ranking-route.test.ts +49 -47
- package/src/tests/reasoning-effort.test.ts +39 -3
- package/src/tests/runner-harness-telemetry-env.test.ts +56 -1
- 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 +144 -10
- 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/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 +17 -0
- package/src/utils/company-profile.ts +24 -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 +41 -2
- package/templates/skills/apps/content.md +41 -2
- package/dist/handlers-zbs90bny.js +0 -39
- package/dist/index-8pwc1jc8.js +0 -40
- package/dist/index-nxa6me0q.js +0 -41
- package/dist/lead-td8h2sfn.js +0 -78
- package/dist/worker-wr6xgfr2.js +0 -78
- package/src/tests/check-ranking-entry.test.ts +0 -146
package/src/telemetry-context.ts
CHANGED
|
@@ -9,6 +9,12 @@
|
|
|
9
9
|
import { createHash, randomBytes } from "node:crypto";
|
|
10
10
|
import { type EventContext, TRIGGER_SURFACES, type TriggerSurface } from "./telemetry-contract";
|
|
11
11
|
import catalog from "./telemetry-contract/catalog.json";
|
|
12
|
+
import {
|
|
13
|
+
COMPANY_ACQUISITION_SOURCES,
|
|
14
|
+
COMPANY_TEAM_SIZES,
|
|
15
|
+
COMPANY_USE_CASES,
|
|
16
|
+
USER_FUNCTIONS,
|
|
17
|
+
} from "./utils/company-profile";
|
|
12
18
|
|
|
13
19
|
/** `org_` + 16 lowercase hex (self-host, minted here) or 27 alphanumerics (cloud). Same pattern the proxy enforces. */
|
|
14
20
|
const ORG_ID_PATTERN = /^org_([0-9a-f]{16}|[A-Za-z0-9]{27})$/;
|
|
@@ -97,6 +103,9 @@ export interface ContextInput {
|
|
|
97
103
|
installMethod?: string | null;
|
|
98
104
|
installPreset?: string | null;
|
|
99
105
|
acquisitionSource?: string | null;
|
|
106
|
+
teamSize?: string | null;
|
|
107
|
+
useCase?: string | null;
|
|
108
|
+
userFunction?: string | null;
|
|
100
109
|
}
|
|
101
110
|
|
|
102
111
|
/** Build the top-level `context` object of a schema_version 2 event. */
|
|
@@ -105,6 +114,11 @@ export function buildContext(input: ContextInput): EventContext {
|
|
|
105
114
|
const orgName = input.orgName?.trim();
|
|
106
115
|
const orgDomain = validOrgDomain(input.orgDomain);
|
|
107
116
|
const orgWebsite = validOrgDomain(input.orgWebsite);
|
|
117
|
+
const teamSize = COMPANY_TEAM_SIZES.find((value) => value === input.teamSize);
|
|
118
|
+
const useCase = COMPANY_USE_CASES.find((value) => value === input.useCase);
|
|
119
|
+
const userFunction = userId
|
|
120
|
+
? USER_FUNCTIONS.find((value) => value === input.userFunction)
|
|
121
|
+
: undefined;
|
|
108
122
|
return {
|
|
109
123
|
org_id: input.orgId,
|
|
110
124
|
org_name: orgName ? orgName : null,
|
|
@@ -116,10 +130,14 @@ export function buildContext(input: ContextInput): EventContext {
|
|
|
116
130
|
swarm_version: input.swarmVersion,
|
|
117
131
|
install_method: input.installMethod ?? null,
|
|
118
132
|
install_preset: input.installPreset ?? null,
|
|
119
|
-
acquisition_source:
|
|
133
|
+
acquisition_source:
|
|
134
|
+
COMPANY_ACQUISITION_SOURCES.find((value) => value === input.acquisitionSource) ?? null,
|
|
120
135
|
// Optional in the catalog: left out, not null, when unset, so an ingest
|
|
121
136
|
// that predates the field keeps accepting events from installs without one.
|
|
122
137
|
...(orgWebsite ? { org_website: orgWebsite } : {}),
|
|
138
|
+
...(teamSize ? { team_size: teamSize } : {}),
|
|
139
|
+
...(useCase ? { use_case: useCase } : {}),
|
|
140
|
+
...(userFunction ? { user_function: userFunction } : {}),
|
|
123
141
|
};
|
|
124
142
|
}
|
|
125
143
|
|
|
@@ -4,18 +4,48 @@
|
|
|
4
4
|
|
|
5
5
|
Every event the ingest accepts with `schema_version: 2`. A v2 event that is not listed here, or that sends a property not listed for it, is rejected with a typed 400. `Emitter` is the envelope `source`.
|
|
6
6
|
|
|
7
|
+
## `acquisition_source`
|
|
8
|
+
|
|
9
|
+
How the organization found Agent Swarm.
|
|
10
|
+
|
|
11
|
+
Values: `search`, `github`, `social`, `colleague`, `newsletter`, `event`, `ai_assistant`, `hacker_news`, `other`.
|
|
12
|
+
|
|
13
|
+
## `notification_moment`
|
|
14
|
+
|
|
15
|
+
Moment that made the Slack Connect invite relevant.
|
|
16
|
+
|
|
17
|
+
Values: `task_failed`, `first_workflow`, `default`.
|
|
18
|
+
|
|
7
19
|
## `popup`
|
|
8
20
|
|
|
9
21
|
Dashboard pop-up that a popup.* event is about.
|
|
10
22
|
|
|
11
23
|
Values: `feedback`, `org_name`, `used_by`.
|
|
12
24
|
|
|
25
|
+
## `team_size`
|
|
26
|
+
|
|
27
|
+
Size of the organization team.
|
|
28
|
+
|
|
29
|
+
Values: `1`, `2-10`, `11-50`, `51+`.
|
|
30
|
+
|
|
13
31
|
## `trigger_surface`
|
|
14
32
|
|
|
15
33
|
Surface that started a chain of work: agent-swarm's AgentTaskSourceSchema values plus other.
|
|
16
34
|
|
|
17
35
|
Values: `slack`, `ui`, `api`, `mcp`, `github`, `gitlab`, `linear`, `jira`, `agentmail`, `schedule`, `workflow`, `system`, `other`.
|
|
18
36
|
|
|
37
|
+
## `use_case`
|
|
38
|
+
|
|
39
|
+
Primary use of the swarm.
|
|
40
|
+
|
|
41
|
+
Values: `features`, `bugs`, `review`, `ops`, `docs`, `data`.
|
|
42
|
+
|
|
43
|
+
## `user_function`
|
|
44
|
+
|
|
45
|
+
Job function of a user, separate from the RBAC user_role.
|
|
46
|
+
|
|
47
|
+
Values: `engineer`, `eng_lead`, `founder`, `product`, `ops`, `other`.
|
|
48
|
+
|
|
19
49
|
## `agent-fs`
|
|
20
50
|
|
|
21
51
|
| Event | Emitter | Since | Description | Properties |
|
|
@@ -44,12 +74,15 @@ Common properties, allowed on every event of this product:
|
|
|
44
74
|
| `agent.registered` | api-server | 2026-09-30 | An agent registered or reconnected. | `capabilities` (array, required)<br>`isReconnect` (boolean, required)<br>`role` (string) |
|
|
45
75
|
| `compaction.triggered` | worker | 2026-09-30 | The harness compacted a session context. | `compactTrigger` (string, required)<br>`contextTotalTokens` (integer, required)<br>`preCompactTokens` (integer, required) |
|
|
46
76
|
| `feature.used` | ui | 2026-09-30 | A dashboard feature was used. | `feature` (string, required) |
|
|
47
|
-
| `fleet_benchmark.
|
|
77
|
+
| `fleet_benchmark.unlocked` | ui | 2026-10-18 | An admin supplied the company profile fields for the full benchmark. | `fields` (array of website \| team_size \| use_case, required) |
|
|
78
|
+
| `fleet_benchmark.viewed` | ui | 2026-10-12 | The fleet benchmark card was shown. | `has_org_name` (boolean, required)<br>`level` (basic \| full) |
|
|
79
|
+
| `identity.lookup` | ui | 2026-10-18 | A dashboard identity lookup matched an existing user or found no match. | `matched` (boolean, required) |
|
|
80
|
+
| `identity.user_created` | ui | 2026-10-18 | A user created a dashboard identity. Email and personal names stay out of telemetry. | `email_kind` (work \| personal, required)<br>`has_company` (boolean, required)<br>`has_function` (boolean, required)<br>`surface` (identity_modal \| setup, required) |
|
|
48
81
|
| `integration.connected` | api-server | 2026-09-30 | An integration was connected. | `first_of_type` (boolean, required)<br>`provider` (string)<br>`type` (string, required) |
|
|
49
82
|
| `lead.captured` | api-server | 2026-09-30 | A consented lead (Teams waitlist or private-beta sign-up). The email stays in feedback_submissions. | `channel` (string, required)<br>`consent` (boolean, required)<br>`submission_id` (string, required) |
|
|
50
|
-
| `notification.dismissed` | ui | 2026-09-30 | A notification-centre item was dismissed. | `key` (string, required) |
|
|
51
|
-
| `notification.submitted` | ui | 2026-09-30 | A notification-centre item was submitted. | `email_domain` (string)<br>`key` (string, required) |
|
|
52
|
-
| `notification.viewed` | ui | 2026-09-30 | A notification-centre item was shown. | `key` (string, required) |
|
|
83
|
+
| `notification.dismissed` | ui | 2026-09-30 | A notification-centre item was dismissed. | `key` (string, required)<br>`moment` (task_failed \| first_workflow \| default) |
|
|
84
|
+
| `notification.submitted` | ui | 2026-09-30 | A notification-centre item was submitted. | `email_domain` (string)<br>`key` (string, required)<br>`moment` (task_failed \| first_workflow \| default)<br>`user_function` (engineer \| eng_lead \| founder \| product \| ops \| other) |
|
|
85
|
+
| `notification.viewed` | ui | 2026-09-30 | A notification-centre item was shown. | `key` (string, required)<br>`moment` (task_failed \| first_workflow \| default) |
|
|
53
86
|
| `onboarding.completed` | api-server | 2026-09-30 | Onboarding was completed. | `seconds_since_install` (integer)<br>`seconds_since_start` (integer, required) |
|
|
54
87
|
| `onboarding.dismissed` | api-server | 2026-09-30 | Onboarding was dismissed. | `seconds_since_install` (integer)<br>`seconds_since_start` (integer, required) |
|
|
55
88
|
| `onboarding.first_task_completed` | api-server | 2026-09-30 | The first task after onboarding completed. | `method` (string)<br>`seconds_since_install` (integer)<br>`seconds_since_start` (integer, required) |
|
|
@@ -58,12 +91,12 @@ Common properties, allowed on every event of this product:
|
|
|
58
91
|
| `onboarding.step_failed` | api-server | 2026-09-30 | An onboarding step failed. | `error_class` (string, required)<br>`seconds_since_install` (integer)<br>`seconds_since_start` (integer, required)<br>`step` (string, required) |
|
|
59
92
|
| `onboarding.step_skipped` | api-server | 2026-09-30 | An onboarding step was skipped. | `seconds_since_install` (integer)<br>`seconds_since_start` (integer, required)<br>`step` (string, required) |
|
|
60
93
|
| `onboarding.step_viewed` | api-server | 2026-09-30 | An onboarding step was shown. | `seconds_since_install` (integer)<br>`seconds_since_start` (integer, required)<br>`step` (string, required) |
|
|
61
|
-
| `org.profile_updated` | ui | 2026-10-12 | An admin changed the org profile. Lists which fields changed, never their values. | `fields` (array, required)<br>`surface` (
|
|
94
|
+
| `org.profile_updated` | ui | 2026-10-12 | An admin changed the org profile. Lists which fields changed, never their values. | `fields` (array of name \| website \| team_size \| use_case \| acquisition_source, required)<br>`surface` (enum, required) |
|
|
62
95
|
| `org.snapshot` | api-server | 2026-09-30 | Daily per-install user and agent counts. Counts only: no names, emails or IDs. | `agents_total` (integer ≥0, required)<br>`users_active_7d` (integer ≥0, required)<br>`users_admin` (integer ≥0, required)<br>`users_linked_github` (integer ≥0, required)<br>`users_linked_gitlab` (integer ≥0, required)<br>`users_linked_jira` (integer ≥0, required)<br>`users_linked_linear` (integer ≥0, required)<br>`users_linked_other` (integer ≥0, required)<br>`users_linked_slack` (integer ≥0, required)<br>`users_suspended` (integer ≥0, required)<br>`users_total` (integer ≥0, required)<br>`users_with_login` (integer ≥0, required) |
|
|
63
96
|
| `page.viewed` | ui | 2026-09-30 | A dashboard page was viewed. | `route_template` (string, required) |
|
|
64
97
|
| `popup.dismissed` | ui | 2026-10-12 | A dashboard pop-up was closed without submitting. | `method` (later \| close \| escape, required)<br>`popup` (feedback \| org_name \| used_by, required) |
|
|
65
98
|
| `popup.shown` | ui | 2026-10-12 | A dashboard pop-up was shown. Telemetry-gated: never sent while telemetry is off. | `popup` (feedback \| org_name \| used_by, required)<br>`trigger` (task_failed \| tasks_completed \| workflow_completed \| quarterly \| missing_org_name, required) |
|
|
66
|
-
| `popup.submitted` | ui | 2026-10-12 | A dashboard pop-up was submitted. Content stays out of telemetry: only flags for what was filled. | `has_contact` (boolean, required)<br>`has_message` (boolean, required)<br>`popup` (feedback \| org_name \| used_by, required)<br>`score` (integer ≥0) |
|
|
99
|
+
| `popup.submitted` | ui | 2026-10-12 | A dashboard pop-up was submitted. Content stays out of telemetry: only flags for what was filled. | `answered` (integer ≥0)<br>`has_contact` (boolean, required)<br>`has_message` (boolean, required)<br>`perks` (array of used_by \| slack_connect)<br>`popup` (feedback \| org_name \| used_by, required)<br>`score` (integer ≥0) |
|
|
67
100
|
| `ranking.opted_in` | api-server | 2026-10-18 | An admin opted the install into the public ranking, or the API rebuilt its listing after an org identity change. | `listing` (string, required) |
|
|
68
101
|
| `ranking.opted_out` | api-server | 2026-10-18 | The install left the public ranking: the admin turned it off, or the org name or website was cleared or changed. | `domain` (string, required) |
|
|
69
102
|
| `ranking.usage` | worker | 2026-10-18 | Token usage of one session on an install opted into the public ranking. Sent next to session.cost. | `cacheReadTokens` (integer ≥0)<br>`cacheWriteTokens` (integer ≥0)<br>`inputTokens` (integer ≥0, required)<br>`model` (string)<br>`outputTokens` (integer ≥0, required)<br>`provider` (string)<br>`totalTokens` (integer ≥0, required) |
|
|
@@ -77,6 +110,7 @@ Common properties, allowed on every event of this product:
|
|
|
77
110
|
| `session.failure` | worker | 2026-09-30 | A session failed. | `agentId` (string, required)<br>`durationMs` (integer, required)<br>`errorCategory` (string, required)<br>`model` (string, required)<br>`provider` (string, required)<br>`taskId` (string, nullable, required)<br>`trigger_surface` (enum, nullable, required)<br>`wasRateLimited` (boolean, required) |
|
|
78
111
|
| `session.started` | worker | 2026-09-30 | A worker or lead session started. | `agentId` (string, required)<br>`harnessProvider` (string, required)<br>`model` (string)<br>`role` (string, required)<br>`taskId` (string, nullable, required)<br>`trigger_surface` (enum, nullable, required) |
|
|
79
112
|
| `session.steered` | api-server | 2026-09-30 | A running session received a steering message. | `by_kind` (string, required)<br>`trigger_surface` (enum, nullable, required) |
|
|
113
|
+
| `setup.worker_command_copied` | ui | 2026-10-18 | An admin copied a worker command from the setup health popover. | `harness` (enum, required)<br>`target` (compose \| docker \| kubernetes, required) |
|
|
80
114
|
| `skill.invoked` | worker | 2026-09-30 | A skill was invoked in a session. | `skill_name` (string, required)<br>`skill_source` (string, required)<br>`trigger_surface` (enum, nullable, required) |
|
|
81
115
|
| `task.cancelled` | api-server | 2026-09-30 | A task was cancelled. | `agentId` (string)<br>`durationMs` (integer)<br>`previousStatus` (string, required)<br>`taskId` (string, required)<br>`task_source` (enum, required)<br>`trigger_surface` (enum, required) |
|
|
82
116
|
| `task.claimed` | api-server | 2026-09-30 | An agent claimed a task. | `agentId` (string, required)<br>`taskId` (string, required)<br>`task_source` (enum, required)<br>`trigger_surface` (enum, required) |
|
|
@@ -86,9 +120,9 @@ Common properties, allowed on every event of this product:
|
|
|
86
120
|
| `task.session_completed` | worker | 2026-09-30 | A worker session for a task finished. | `agentId` (string, required)<br>`durationMs` (integer, required)<br>`exitCode` (integer, required)<br>`harnessVariant` (string)<br>`harnessVersion` (string)<br>`isError` (boolean, required)<br>`model` (string, required)<br>`provider` (string, required)<br>`taskId` (string, nullable, required)<br>`trigger_surface` (enum, nullable, required) |
|
|
87
121
|
| `task.started` | api-server | 2026-09-30 | A task started running. | `agentId` (string, required)<br>`taskId` (string, required)<br>`task_source` (enum, required)<br>`trigger_surface` (enum, required) |
|
|
88
122
|
| `task.superseded` | api-server | 2026-09-30 | A task was superseded by another task. | `agentId` (string)<br>`durationMs` (integer)<br>`harnessVariant` (string)<br>`harnessVersion` (string)<br>`provider` (string)<br>`reason` (string, required)<br>`taskId` (string, required)<br>`task_source` (enum, required)<br>`trigger_surface` (enum, required) |
|
|
89
|
-
| `telemetry.enabled` | api-server | 2026-10-12 | Telemetry was turned on. Sent once, on the first boot or re-init after opting in. | `via` (banner \| settings \| env, required) |
|
|
123
|
+
| `telemetry.enabled` | api-server | 2026-10-12 | Telemetry was turned on. Sent once, on the first boot or re-init after opting in. | `via` (banner \| settings \| env \| benchmark, required) |
|
|
90
124
|
| `ui.session_started` | ui | 2026-09-30 | A dashboard session started. | none |
|
|
91
|
-
| `used_by.consent_changed` | ui | 2026-10-12 | An admin granted or revoked the "used by" logo consent. The request itself goes to /v1/used-by. | `granted` (boolean, required) |
|
|
125
|
+
| `used_by.consent_changed` | ui | 2026-10-12 | An admin granted or revoked the "used by" logo consent. The request itself goes to /v1/used-by. | `granted` (boolean, required)<br>`has_function` (boolean)<br>`has_quote` (boolean) |
|
|
92
126
|
| `workflow.completed` | api-server | 2026-09-30 | A workflow run completed. | `durationMs` (integer)<br>`stepsCompleted` (integer, required)<br>`stepsFailed` (integer, required)<br>`workflowId` (string, required) |
|
|
93
127
|
| `workflow.created` | api-server | 2026-09-30 | A workflow was created. | `nodeCount` (integer, required)<br>`via` (api \| mcp)<br>`workflowId` (string, required) |
|
|
94
128
|
| `workflow.deleted` | api-server | 2026-09-30 | A workflow was deleted. | `via` (api \| mcp)<br>`workflowId` (string, required) |
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"repo": "desplega-ai/proxy",
|
|
3
|
-
"commit": "
|
|
3
|
+
"commit": "cc593585467a920dcb8731993d092639372dc7af",
|
|
4
4
|
"files": {
|
|
5
|
-
"types.gen.ts": "
|
|
6
|
-
"catalog.json": "
|
|
7
|
-
"EVENTS.md": "
|
|
5
|
+
"types.gen.ts": "aa8a682f1d875515d63cf5bd3fa667dcb06cd851f8b2b798482a4c71cd775444",
|
|
6
|
+
"catalog.json": "595654f288ae2a7cbb265b6b2a72392acc33f5acde365d72829101912525a891",
|
|
7
|
+
"EVENTS.md": "51ee5491c633d684b163d727a369a08b5c1d3f4ba453277d840526449a0bad0c",
|
|
8
8
|
"ranking/fixtures/expected.json": "6d506546f48d99a089666bed2a4c08752ebb63a029392c76ffd057e9520adc70",
|
|
9
9
|
"ranking/fixtures/invalid/bad-category.json": "a4c36da6079c36d15e5e8c8e6322fc97b172de015a80a26cee8cab699f666236",
|
|
10
10
|
"ranking/fixtures/invalid/bad-claim.json": "cee14d465545d057cfb61922301a5119187ba17d70efabb16528a5e305d7b065",
|
|
@@ -34,9 +34,10 @@
|
|
|
34
34
|
"ranking/fixtures/valid/category-without-subcategory.json": "45c5b872aec232bdcba791e6ba1a7aba698c825f389e194a38e96ad141f56e5a",
|
|
35
35
|
"ranking/fixtures/valid/full.json": "d6d93c4a6159e814c3f089c69083df700fb19359f127ccd2b71529a058dfe5e9",
|
|
36
36
|
"ranking/fixtures/valid/minimal.json": "de6629d6ee2c4b67598abfc5ec7f6470a93dd9893b07e6e7c93d018cf5445593",
|
|
37
|
+
"ranking/fixtures/valid/no-claim.json": "fa5c08ec50c1b602f404cf36ce8b1c03d131111379d914699378dd448431cb84",
|
|
37
38
|
"ranking/fixtures/valid/padded-text.json": "db71248bf83bb1ffb639208ec467a0228e5c37f604299d09838ab25dc61986a3",
|
|
38
39
|
"ranking/fixtures/valid/unicode-name.json": "01a9d2cc8c5fec128af3eef35bf16696286f28636dac21b9dec107b28fddf743",
|
|
39
|
-
"ranking/listing.v1.schema.json": "
|
|
40
|
+
"ranking/listing.v1.schema.json": "f839b669abadb25e031515a5cc2abd3aa2024e85e6117cae83133fc9dfbb769d",
|
|
40
41
|
"ranking/taxonomy.json": "c6abe7e437635c9a3c1a82a3477a8757ba6c0cb7cbeae86c8c3d175fb37f402c"
|
|
41
42
|
}
|
|
42
43
|
}
|
|
@@ -27,6 +27,64 @@
|
|
|
27
27
|
"org_name",
|
|
28
28
|
"used_by"
|
|
29
29
|
]
|
|
30
|
+
},
|
|
31
|
+
"team_size": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"description": "Size of the organization team.",
|
|
34
|
+
"enum": [
|
|
35
|
+
"1",
|
|
36
|
+
"2-10",
|
|
37
|
+
"11-50",
|
|
38
|
+
"51+"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"use_case": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"description": "Primary use of the swarm.",
|
|
44
|
+
"enum": [
|
|
45
|
+
"features",
|
|
46
|
+
"bugs",
|
|
47
|
+
"review",
|
|
48
|
+
"ops",
|
|
49
|
+
"docs",
|
|
50
|
+
"data"
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"acquisition_source": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"description": "How the organization found Agent Swarm.",
|
|
56
|
+
"enum": [
|
|
57
|
+
"search",
|
|
58
|
+
"github",
|
|
59
|
+
"social",
|
|
60
|
+
"colleague",
|
|
61
|
+
"newsletter",
|
|
62
|
+
"event",
|
|
63
|
+
"ai_assistant",
|
|
64
|
+
"hacker_news",
|
|
65
|
+
"other"
|
|
66
|
+
]
|
|
67
|
+
},
|
|
68
|
+
"user_function": {
|
|
69
|
+
"type": "string",
|
|
70
|
+
"description": "Job function of a user, separate from the RBAC user_role.",
|
|
71
|
+
"enum": [
|
|
72
|
+
"engineer",
|
|
73
|
+
"eng_lead",
|
|
74
|
+
"founder",
|
|
75
|
+
"product",
|
|
76
|
+
"ops",
|
|
77
|
+
"other"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
"notification_moment": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"description": "Moment that made the Slack Connect invite relevant.",
|
|
83
|
+
"enum": [
|
|
84
|
+
"task_failed",
|
|
85
|
+
"first_workflow",
|
|
86
|
+
"default"
|
|
87
|
+
]
|
|
30
88
|
}
|
|
31
89
|
},
|
|
32
90
|
"common_properties": {
|
|
@@ -1125,6 +1183,9 @@
|
|
|
1125
1183
|
"key": {
|
|
1126
1184
|
"type": "string",
|
|
1127
1185
|
"required": true
|
|
1186
|
+
},
|
|
1187
|
+
"moment": {
|
|
1188
|
+
"ref": "notification_moment"
|
|
1128
1189
|
}
|
|
1129
1190
|
}
|
|
1130
1191
|
},
|
|
@@ -1138,6 +1199,9 @@
|
|
|
1138
1199
|
"key": {
|
|
1139
1200
|
"type": "string",
|
|
1140
1201
|
"required": true
|
|
1202
|
+
},
|
|
1203
|
+
"moment": {
|
|
1204
|
+
"ref": "notification_moment"
|
|
1141
1205
|
}
|
|
1142
1206
|
}
|
|
1143
1207
|
},
|
|
@@ -1155,6 +1219,12 @@
|
|
|
1155
1219
|
"email_domain": {
|
|
1156
1220
|
"type": "string",
|
|
1157
1221
|
"description": "Domain of the email typed into the item, never the address."
|
|
1222
|
+
},
|
|
1223
|
+
"moment": {
|
|
1224
|
+
"ref": "notification_moment"
|
|
1225
|
+
},
|
|
1226
|
+
"user_function": {
|
|
1227
|
+
"ref": "user_function"
|
|
1158
1228
|
}
|
|
1159
1229
|
}
|
|
1160
1230
|
},
|
|
@@ -1167,7 +1237,8 @@
|
|
|
1167
1237
|
"properties": {
|
|
1168
1238
|
"feature": {
|
|
1169
1239
|
"type": "string",
|
|
1170
|
-
"required": true
|
|
1240
|
+
"required": true,
|
|
1241
|
+
"description": "Feature identifier, including health_popover and kickoff_call_opened. Existing identifiers remain accepted."
|
|
1171
1242
|
}
|
|
1172
1243
|
}
|
|
1173
1244
|
},
|
|
@@ -1222,7 +1293,8 @@
|
|
|
1222
1293
|
"properties": {
|
|
1223
1294
|
"channel": {
|
|
1224
1295
|
"type": "string",
|
|
1225
|
-
"required": true
|
|
1296
|
+
"required": true,
|
|
1297
|
+
"description": "Lead channel, including setup_help and fleet_report. Existing channels remain accepted."
|
|
1226
1298
|
},
|
|
1227
1299
|
"submission_id": {
|
|
1228
1300
|
"type": "string",
|
|
@@ -1305,6 +1377,22 @@
|
|
|
1305
1377
|
"type": "boolean",
|
|
1306
1378
|
"required": true,
|
|
1307
1379
|
"description": "A name or email was left. The values go to /v1/feedback, never here."
|
|
1380
|
+
},
|
|
1381
|
+
"answered": {
|
|
1382
|
+
"type": "integer",
|
|
1383
|
+
"minimum": 0,
|
|
1384
|
+
"description": "Number of profile follow-up questions answered, never their values."
|
|
1385
|
+
},
|
|
1386
|
+
"perks": {
|
|
1387
|
+
"type": "array",
|
|
1388
|
+
"items": {
|
|
1389
|
+
"type": "string",
|
|
1390
|
+
"enum": [
|
|
1391
|
+
"used_by",
|
|
1392
|
+
"slack_connect"
|
|
1393
|
+
]
|
|
1394
|
+
},
|
|
1395
|
+
"description": "Perks the admin explicitly selected."
|
|
1308
1396
|
}
|
|
1309
1397
|
}
|
|
1310
1398
|
},
|
|
@@ -1317,8 +1405,18 @@
|
|
|
1317
1405
|
"properties": {
|
|
1318
1406
|
"fields": {
|
|
1319
1407
|
"type": "array",
|
|
1408
|
+
"items": {
|
|
1409
|
+
"type": "string",
|
|
1410
|
+
"enum": [
|
|
1411
|
+
"name",
|
|
1412
|
+
"website",
|
|
1413
|
+
"team_size",
|
|
1414
|
+
"use_case",
|
|
1415
|
+
"acquisition_source"
|
|
1416
|
+
]
|
|
1417
|
+
},
|
|
1320
1418
|
"required": true,
|
|
1321
|
-
"description": "Changed field names
|
|
1419
|
+
"description": "Changed profile field names, never their values."
|
|
1322
1420
|
},
|
|
1323
1421
|
"surface": {
|
|
1324
1422
|
"type": "string",
|
|
@@ -1326,7 +1424,12 @@
|
|
|
1326
1424
|
"enum": [
|
|
1327
1425
|
"prompt",
|
|
1328
1426
|
"setup",
|
|
1329
|
-
"settings"
|
|
1427
|
+
"settings",
|
|
1428
|
+
"org_name_popup",
|
|
1429
|
+
"feedback",
|
|
1430
|
+
"fleet_benchmark",
|
|
1431
|
+
"telemetry_banner",
|
|
1432
|
+
"identity_modal"
|
|
1330
1433
|
],
|
|
1331
1434
|
"description": "Where the change was made. Not trigger_surface: that key fills the raw_events.trigger_surface column."
|
|
1332
1435
|
}
|
|
@@ -1342,6 +1445,12 @@
|
|
|
1342
1445
|
"granted": {
|
|
1343
1446
|
"type": "boolean",
|
|
1344
1447
|
"required": true
|
|
1448
|
+
},
|
|
1449
|
+
"has_quote": {
|
|
1450
|
+
"type": "boolean"
|
|
1451
|
+
},
|
|
1452
|
+
"has_function": {
|
|
1453
|
+
"type": "boolean"
|
|
1345
1454
|
}
|
|
1346
1455
|
}
|
|
1347
1456
|
},
|
|
@@ -1358,7 +1467,8 @@
|
|
|
1358
1467
|
"enum": [
|
|
1359
1468
|
"banner",
|
|
1360
1469
|
"settings",
|
|
1361
|
-
"env"
|
|
1470
|
+
"env",
|
|
1471
|
+
"benchmark"
|
|
1362
1472
|
]
|
|
1363
1473
|
}
|
|
1364
1474
|
}
|
|
@@ -1373,6 +1483,13 @@
|
|
|
1373
1483
|
"has_org_name": {
|
|
1374
1484
|
"type": "boolean",
|
|
1375
1485
|
"required": true
|
|
1486
|
+
},
|
|
1487
|
+
"level": {
|
|
1488
|
+
"type": "string",
|
|
1489
|
+
"enum": [
|
|
1490
|
+
"basic",
|
|
1491
|
+
"full"
|
|
1492
|
+
]
|
|
1376
1493
|
}
|
|
1377
1494
|
}
|
|
1378
1495
|
},
|
|
@@ -1554,6 +1671,109 @@
|
|
|
1554
1671
|
"required": true
|
|
1555
1672
|
}
|
|
1556
1673
|
}
|
|
1674
|
+
},
|
|
1675
|
+
{
|
|
1676
|
+
"product": "agent-swarm",
|
|
1677
|
+
"event": "identity.lookup",
|
|
1678
|
+
"description": "A dashboard identity lookup matched an existing user or found no match.",
|
|
1679
|
+
"since": "2026-10-18",
|
|
1680
|
+
"source": "ui",
|
|
1681
|
+
"properties": {
|
|
1682
|
+
"matched": {
|
|
1683
|
+
"type": "boolean",
|
|
1684
|
+
"required": true
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
},
|
|
1688
|
+
{
|
|
1689
|
+
"product": "agent-swarm",
|
|
1690
|
+
"event": "identity.user_created",
|
|
1691
|
+
"description": "A user created a dashboard identity. Email and personal names stay out of telemetry.",
|
|
1692
|
+
"since": "2026-10-18",
|
|
1693
|
+
"source": "ui",
|
|
1694
|
+
"properties": {
|
|
1695
|
+
"surface": {
|
|
1696
|
+
"type": "string",
|
|
1697
|
+
"required": true,
|
|
1698
|
+
"enum": [
|
|
1699
|
+
"identity_modal",
|
|
1700
|
+
"setup"
|
|
1701
|
+
]
|
|
1702
|
+
},
|
|
1703
|
+
"email_kind": {
|
|
1704
|
+
"type": "string",
|
|
1705
|
+
"required": true,
|
|
1706
|
+
"enum": [
|
|
1707
|
+
"work",
|
|
1708
|
+
"personal"
|
|
1709
|
+
]
|
|
1710
|
+
},
|
|
1711
|
+
"has_function": {
|
|
1712
|
+
"type": "boolean",
|
|
1713
|
+
"required": true
|
|
1714
|
+
},
|
|
1715
|
+
"has_company": {
|
|
1716
|
+
"type": "boolean",
|
|
1717
|
+
"required": true
|
|
1718
|
+
}
|
|
1719
|
+
}
|
|
1720
|
+
},
|
|
1721
|
+
{
|
|
1722
|
+
"product": "agent-swarm",
|
|
1723
|
+
"event": "fleet_benchmark.unlocked",
|
|
1724
|
+
"description": "An admin supplied the company profile fields for the full benchmark.",
|
|
1725
|
+
"since": "2026-10-18",
|
|
1726
|
+
"source": "ui",
|
|
1727
|
+
"properties": {
|
|
1728
|
+
"fields": {
|
|
1729
|
+
"type": "array",
|
|
1730
|
+
"items": {
|
|
1731
|
+
"type": "string",
|
|
1732
|
+
"enum": [
|
|
1733
|
+
"website",
|
|
1734
|
+
"team_size",
|
|
1735
|
+
"use_case"
|
|
1736
|
+
]
|
|
1737
|
+
},
|
|
1738
|
+
"required": true,
|
|
1739
|
+
"description": "Profile fields supplied, never their values."
|
|
1740
|
+
}
|
|
1741
|
+
}
|
|
1742
|
+
},
|
|
1743
|
+
{
|
|
1744
|
+
"product": "agent-swarm",
|
|
1745
|
+
"event": "setup.worker_command_copied",
|
|
1746
|
+
"description": "An admin copied a worker command from the setup health popover.",
|
|
1747
|
+
"since": "2026-10-18",
|
|
1748
|
+
"source": "ui",
|
|
1749
|
+
"properties": {
|
|
1750
|
+
"target": {
|
|
1751
|
+
"type": "string",
|
|
1752
|
+
"required": true,
|
|
1753
|
+
"enum": [
|
|
1754
|
+
"compose",
|
|
1755
|
+
"docker",
|
|
1756
|
+
"kubernetes"
|
|
1757
|
+
]
|
|
1758
|
+
},
|
|
1759
|
+
"harness": {
|
|
1760
|
+
"type": "string",
|
|
1761
|
+
"required": true,
|
|
1762
|
+
"enum": [
|
|
1763
|
+
"claude",
|
|
1764
|
+
"codex",
|
|
1765
|
+
"pi",
|
|
1766
|
+
"devin",
|
|
1767
|
+
"claude-managed",
|
|
1768
|
+
"opencode",
|
|
1769
|
+
"acp",
|
|
1770
|
+
"dsh",
|
|
1771
|
+
"amp",
|
|
1772
|
+
"cursor",
|
|
1773
|
+
"grok"
|
|
1774
|
+
]
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1557
1777
|
}
|
|
1558
1778
|
]
|
|
1559
1779
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"description": "The telemetry_ranking listing, version 1. agent-swarm stores it stringified in the global swarm_config key telemetry_ranking and sends the same string as the listing property of ranking.opted_in. The string must not exceed 2048 bytes. The ingest also requires name to equal context.org_name and domain to equal context.org_website. Text fields are trimmed before their length is checked; lengths count UTF-16 code units, as JavaScript does.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": false,
|
|
8
|
-
"required": ["v", "
|
|
8
|
+
"required": ["v", "name", "domain", "category", "subcategory", "description", "sourceCodeUrl", "updatedAt"],
|
|
9
9
|
"properties": {
|
|
10
10
|
"v": {
|
|
11
11
|
"const": 1,
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"claim": {
|
|
15
15
|
"type": "string",
|
|
16
16
|
"pattern": "^rk_[0-9a-f]{32}$",
|
|
17
|
-
"description": "
|
|
17
|
+
"description": "Optional and ignored. agent-swarm v2.4.0 mints it for a ranking PR flow that no longer exists; the proxy still checks its pattern when present, but ranks from telemetry alone. Never served publicly."
|
|
18
18
|
},
|
|
19
19
|
"name": {
|
|
20
20
|
"type": "string",
|