reflectt-node 0.1.5 → 0.1.7
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 +50 -42
- package/defaults/TEAM-ROLES.yaml +221 -31
- package/dist/activationEvents.d.ts +13 -2
- package/dist/activationEvents.d.ts.map +1 -1
- package/dist/activationEvents.js +172 -38
- package/dist/activationEvents.js.map +1 -1
- package/dist/activity.d.ts +72 -0
- package/dist/activity.d.ts.map +1 -0
- package/dist/activity.js +510 -0
- package/dist/activity.js.map +1 -0
- package/dist/alert-preflight.d.ts +6 -1
- package/dist/alert-preflight.d.ts.map +1 -1
- package/dist/alert-preflight.js +52 -14
- package/dist/alert-preflight.js.map +1 -1
- package/dist/assignment.d.ts.map +1 -1
- package/dist/assignment.js +11 -6
- package/dist/assignment.js.map +1 -1
- package/dist/canvas-slots.d.ts +1 -1
- package/dist/channels.d.ts +1 -1
- package/dist/chat.d.ts +13 -0
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +54 -1
- package/dist/chat.js.map +1 -1
- package/dist/cli.js +162 -6
- package/dist/cli.js.map +1 -1
- package/dist/cloud.js +7 -5
- package/dist/cloud.js.map +1 -1
- package/dist/dashboard.d.ts.map +1 -1
- package/dist/dashboard.js +30 -3
- package/dist/dashboard.js.map +1 -1
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +24 -1
- package/dist/db.js.map +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +15 -2
- package/dist/events.js.map +1 -1
- package/dist/executionSweeper.d.ts +2 -0
- package/dist/executionSweeper.d.ts.map +1 -1
- package/dist/executionSweeper.js +48 -4
- package/dist/executionSweeper.js.map +1 -1
- package/dist/focus.d.ts +20 -0
- package/dist/focus.d.ts.map +1 -0
- package/dist/focus.js +57 -0
- package/dist/focus.js.map +1 -0
- package/dist/health.d.ts +1 -0
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +17 -8
- package/dist/health.js.map +1 -1
- package/dist/index.js +113 -10
- package/dist/index.js.map +1 -1
- package/dist/insight-mutation.d.ts +26 -0
- package/dist/insight-mutation.d.ts.map +1 -1
- package/dist/insight-mutation.js +103 -12
- package/dist/insight-mutation.js.map +1 -1
- package/dist/insights.d.ts +20 -0
- package/dist/insights.d.ts.map +1 -1
- package/dist/insights.js +129 -4
- package/dist/insights.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +3 -2
- package/dist/mcp.js.map +1 -1
- package/dist/openclaw.d.ts.map +1 -1
- package/dist/openclaw.js +3 -2
- package/dist/openclaw.js.map +1 -1
- package/dist/prAutoMerge.d.ts.map +1 -1
- package/dist/prAutoMerge.js +23 -0
- package/dist/prAutoMerge.js.map +1 -1
- package/dist/presence.d.ts +16 -1
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +97 -9
- package/dist/presence.js.map +1 -1
- package/dist/pulse.d.ts +60 -0
- package/dist/pulse.d.ts.map +1 -0
- package/dist/pulse.js +139 -0
- package/dist/pulse.js.map +1 -0
- package/dist/release.d.ts +2 -0
- package/dist/release.d.ts.map +1 -1
- package/dist/release.js +14 -1
- package/dist/release.js.map +1 -1
- package/dist/scopeOverlap.d.ts +32 -0
- package/dist/scopeOverlap.d.ts.map +1 -0
- package/dist/scopeOverlap.js +219 -0
- package/dist/scopeOverlap.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +520 -71
- package/dist/server.js.map +1 -1
- package/dist/tasks-next-diagnostics.d.ts +15 -0
- package/dist/tasks-next-diagnostics.d.ts.map +1 -0
- package/dist/tasks-next-diagnostics.js +33 -0
- package/dist/tasks-next-diagnostics.js.map +1 -0
- package/dist/tasks.d.ts +2 -1
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +33 -11
- package/dist/tasks.js.map +1 -1
- package/dist/team-config.d.ts.map +1 -1
- package/dist/team-config.js +20 -0
- package/dist/team-config.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +16 -0
- package/dist/version.js.map +1 -0
- package/package.json +5 -1
- package/public/dashboard.js +97 -14
- package/public/docs.md +52 -7
package/README.md
CHANGED
|
@@ -5,28 +5,23 @@
|
|
|
5
5
|
[](https://github.com/reflectt/reflectt-node)
|
|
6
6
|
[](https://discord.gg/gMbWskMkbT)
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
Running multiple AI agents? The coordination overhead is the part nobody warns you about.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Once you have 3+ agents working in parallel, you're spending real time managing them: figuring out who owns what, preventing two agents from finishing the same task, tracking what's blocked. That work should be infrastructure, not you.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
reflectt-node is the coordination server your agents talk to - shared task board, presence tracking, reviewer handoffs, team chat. Any agent in any framework can connect via HTTP.
|
|
13
13
|
|
|
14
|
-
> Running in production: 8 agents, 3 nodes, 1,362 tasks
|
|
14
|
+
> Running in production: 8 agents, 3 nodes, 1,362 tasks - 1,344 done.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## Install
|
|
19
|
-
|
|
20
|
-
### Quick try (no global install)
|
|
16
|
+

|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
npx reflectt-node
|
|
24
|
-
```
|
|
18
|
+
**See it live first → [app.reflectt.ai/preview](https://app.reflectt.ai/preview)**
|
|
25
19
|
|
|
26
|
-
|
|
20
|
+
---
|
|
27
21
|
|
|
28
|
-
|
|
22
|
+
## Get running in 3 steps
|
|
29
23
|
|
|
24
|
+
### 1. Install and start
|
|
30
25
|
|
|
31
26
|
```bash
|
|
32
27
|
npm install -g reflectt-node
|
|
@@ -34,56 +29,69 @@ reflectt init
|
|
|
34
29
|
reflectt start
|
|
35
30
|
```
|
|
36
31
|
|
|
37
|
-
Open [http://localhost:4445/dashboard](http://localhost:4445/dashboard)
|
|
38
|
-
|
|
39
|
-
## First 5 minutes (GitHub quickstart)
|
|
32
|
+
Open **[http://localhost:4445/dashboard](http://localhost:4445/dashboard)** — a starter team and first task are already there.
|
|
40
33
|
|
|
41
|
-
|
|
42
|
-
- **See it without installing (optional):** https://app.reflectt.ai/preview
|
|
43
|
-
- **Connect to cloud (optional):** get a join token at https://app.reflectt.ai and run:
|
|
44
|
-
```bash
|
|
45
|
-
reflectt host connect --join-token <token> --cloud-url https://app.reflectt.ai
|
|
46
|
-
```
|
|
34
|
+
> Just want to try it first? `npx reflectt-node` starts immediately, no install required.
|
|
47
35
|
|
|
48
|
-
|
|
36
|
+
---
|
|
49
37
|
|
|
50
|
-
|
|
51
|
-
**In under 60 seconds, a human can answer:** what’s being worked on, by whom, what’s blocked, and what needs review — from the product UI.
|
|
38
|
+
### 2. Connect your agent
|
|
52
39
|
|
|
53
|
-
|
|
54
|
-
- Tasks: http://127.0.0.1:4445/tasks
|
|
55
|
-
- Agents: http://127.0.0.1:4445/agents
|
|
56
|
-
- Reviews: http://127.0.0.1:4445/reviews
|
|
40
|
+
Point your agent at `http://localhost:4445`. The API is documented at `/capabilities` — your agent can self-discover from there.
|
|
57
41
|
|
|
58
|
-
|
|
42
|
+
```bash
|
|
43
|
+
# Agent claims its next task
|
|
44
|
+
curl "http://localhost:4445/tasks/next?agent=myagent"
|
|
59
45
|
|
|
60
|
-
|
|
46
|
+
# Agent sends a message
|
|
47
|
+
curl -X POST http://localhost:4445/chat/messages \
|
|
48
|
+
-H 'Content-Type: application/json' \
|
|
49
|
+
-d '{"from":"myagent","channel":"general","content":"on it"}'
|
|
61
50
|
|
|
62
|
-
|
|
51
|
+
# Agent checks in (returns compact status — ~200 tokens)
|
|
52
|
+
curl http://localhost:4445/heartbeat/myagent
|
|
63
53
|
```
|
|
64
|
-
|
|
54
|
+
|
|
55
|
+
The full API reference is at `http://localhost:4445/capabilities` once the server is running.
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
### 3. See results
|
|
60
|
+
|
|
61
|
+
Open the dashboard: **[http://localhost:4445/dashboard](http://localhost:4445/dashboard)**
|
|
62
|
+
|
|
63
|
+
You'll see which agents are active, what's claimed, what's in review, and what's done. Add more agents and they coordinate automatically — no duplication, no dropped handoffs.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
curl http://localhost:4445/tasks # current task board
|
|
67
|
+
curl http://localhost:4445/health/team # active agents + presence
|
|
68
|
+
curl http://localhost:4445/pulse # team health snapshot
|
|
65
69
|
```
|
|
66
70
|
|
|
71
|
+
**Not ready to self-host?** See a live demo at [app.reflectt.ai/preview](https://app.reflectt.ai/preview).
|
|
72
|
+
|
|
67
73
|
---
|
|
68
74
|
|
|
69
75
|
## What it gives your agents
|
|
70
76
|
|
|
71
|
-
- **Shared task board**
|
|
72
|
-
- **Per-agent inboxes**
|
|
73
|
-
- **Presence + heartbeats**
|
|
74
|
-
- **Reflections**
|
|
75
|
-
- **Live dashboard**
|
|
76
|
-
- **REST + WebSocket API**
|
|
77
|
+
- **Shared task board** - one source of truth. Agents claim tasks, nothing gets done twice.
|
|
78
|
+
- **Per-agent inboxes** - async messaging between agents without going through you.
|
|
79
|
+
- **Presence + heartbeats** - the team knows who's active and what they're working on.
|
|
80
|
+
- **Reflections** - agents capture learnings after each task. Patterns surface as insights.
|
|
81
|
+
- **Live dashboard** - tasks, chat, health, reviews in one place.
|
|
82
|
+
- **REST + WebSocket API** - any agent in any framework can connect.
|
|
77
83
|
|
|
78
84
|
---
|
|
79
85
|
|
|
80
86
|
## Connect to cloud (optional)
|
|
81
87
|
|
|
88
|
+
One node is a team. Multiple nodes are an org.
|
|
89
|
+
|
|
82
90
|
```bash
|
|
83
91
|
reflectt host connect --join-token <token>
|
|
84
92
|
```
|
|
85
93
|
|
|
86
|
-
Get your token at [app.reflectt.ai](https://app.reflectt.ai). Your
|
|
94
|
+
Get your token at [app.reflectt.ai](https://app.reflectt.ai). Your node syncs to the cloud dashboard — and if you run separate nodes for different products, clients, or departments, the cloud is how they see each other. Free. Optional.
|
|
87
95
|
|
|
88
96
|
---
|
|
89
97
|
|
|
@@ -111,7 +119,7 @@ curl http://localhost:4445/capabilities # full API reference
|
|
|
111
119
|
|
|
112
120
|
## Links
|
|
113
121
|
|
|
114
|
-
- **
|
|
122
|
+
- **API reference:** `http://localhost:4445/capabilities` (once running)
|
|
115
123
|
- **Cloud dashboard:** [app.reflectt.ai](https://app.reflectt.ai)
|
|
116
124
|
- **Discord:** [discord.gg/gMbWskMkbT](https://discord.gg/gMbWskMkbT)
|
|
117
125
|
|
package/defaults/TEAM-ROLES.yaml
CHANGED
|
@@ -1,67 +1,242 @@
|
|
|
1
|
-
# TEAM-ROLES.yaml — Agent role configuration
|
|
2
|
-
#
|
|
3
|
-
# This is the default starter config. Customize it for your team:
|
|
4
|
-
# cp defaults/TEAM-ROLES.yaml ~/.reflectt/TEAM-ROLES.yaml
|
|
5
|
-
# nano ~/.reflectt/TEAM-ROLES.yaml
|
|
6
|
-
#
|
|
7
|
-
# reflectt-node hot-reloads changes — no restart needed.
|
|
8
|
-
# See docs/TEAM-ROLES.md for full reference.
|
|
9
|
-
|
|
10
1
|
agents:
|
|
11
|
-
- name:
|
|
2
|
+
- name: link
|
|
12
3
|
role: builder
|
|
13
|
-
description:
|
|
4
|
+
description: Core implementation owner for backend/api/integration work.
|
|
14
5
|
affinityTags:
|
|
15
6
|
- backend
|
|
16
7
|
- api
|
|
17
8
|
- integration
|
|
18
9
|
- bug
|
|
19
10
|
- test
|
|
11
|
+
- webhook
|
|
12
|
+
- server
|
|
13
|
+
- fastify
|
|
20
14
|
- typescript
|
|
15
|
+
- task-lifecycle
|
|
16
|
+
- watchdog
|
|
17
|
+
- database
|
|
18
|
+
alwaysRoute:
|
|
19
|
+
- backend
|
|
20
|
+
- integration
|
|
21
|
+
- api
|
|
22
|
+
neverRoute:
|
|
23
|
+
- brand-copy
|
|
21
24
|
wipCap: 2
|
|
22
|
-
|
|
23
|
-
- name: agent-2
|
|
25
|
+
- name: pixel
|
|
24
26
|
role: designer
|
|
25
|
-
description:
|
|
27
|
+
description: UX and dashboard experience owner.
|
|
26
28
|
affinityTags:
|
|
27
|
-
-
|
|
29
|
+
- dashboard
|
|
28
30
|
- ui
|
|
29
31
|
- css
|
|
30
32
|
- visual
|
|
33
|
+
- animation
|
|
31
34
|
- frontend
|
|
35
|
+
- layout
|
|
36
|
+
- ux
|
|
37
|
+
- modal
|
|
38
|
+
- chart
|
|
32
39
|
routingMode: opt-in
|
|
40
|
+
neverRouteUnlessLane: design
|
|
33
41
|
alwaysRoute:
|
|
34
42
|
- design
|
|
43
|
+
- user-facing
|
|
44
|
+
- reflectt-node
|
|
45
|
+
- reflectt-cloud-app
|
|
46
|
+
- reflectt.ai
|
|
47
|
+
- app.reflectt.ai
|
|
35
48
|
- ui
|
|
36
49
|
- ux
|
|
50
|
+
- dashboard
|
|
51
|
+
- a11y
|
|
37
52
|
- css
|
|
38
53
|
- visual
|
|
54
|
+
- copy
|
|
55
|
+
- brand
|
|
56
|
+
- marketing
|
|
39
57
|
neverRoute:
|
|
40
|
-
- ops
|
|
41
58
|
- infra
|
|
42
|
-
-
|
|
59
|
+
- ws-pairing
|
|
60
|
+
- pairing
|
|
61
|
+
- preflight
|
|
62
|
+
- auth
|
|
63
|
+
- provisioning
|
|
43
64
|
- deploy
|
|
44
|
-
-
|
|
45
|
-
- backend
|
|
46
|
-
- api
|
|
65
|
+
- ci
|
|
47
66
|
- docker
|
|
48
|
-
-
|
|
49
|
-
-
|
|
67
|
+
- ssh
|
|
68
|
+
- gateway
|
|
69
|
+
- token
|
|
70
|
+
- compliance
|
|
50
71
|
wipCap: 1
|
|
51
|
-
|
|
52
|
-
- name: agent-3
|
|
72
|
+
- name: sage
|
|
53
73
|
role: ops
|
|
54
|
-
description:
|
|
74
|
+
description: Process/ops strategist focused on reliability and execution quality.
|
|
55
75
|
affinityTags:
|
|
56
76
|
- ci
|
|
57
77
|
- deploy
|
|
58
78
|
- ops
|
|
79
|
+
- merge
|
|
80
|
+
- infra
|
|
81
|
+
- github-actions
|
|
59
82
|
- docker
|
|
60
|
-
-
|
|
83
|
+
- pipeline
|
|
84
|
+
- release
|
|
85
|
+
- codeowners
|
|
86
|
+
alwaysRoute:
|
|
87
|
+
- ops
|
|
88
|
+
- ci
|
|
89
|
+
- release
|
|
90
|
+
neverRoute:
|
|
91
|
+
- visual-polish
|
|
61
92
|
protectedDomains:
|
|
62
93
|
- deploy
|
|
63
94
|
- ci
|
|
64
|
-
|
|
95
|
+
- release
|
|
96
|
+
wipCap: 1
|
|
97
|
+
- name: echo
|
|
98
|
+
role: voice
|
|
99
|
+
description: Content and messaging execution owner.
|
|
100
|
+
affinityTags:
|
|
101
|
+
- content
|
|
102
|
+
- docs
|
|
103
|
+
- landing
|
|
104
|
+
- copy
|
|
105
|
+
- brand
|
|
106
|
+
- marketing
|
|
107
|
+
- social
|
|
108
|
+
- blog
|
|
109
|
+
- readme
|
|
110
|
+
- onboarding
|
|
111
|
+
# Content is opt-in: Echo should not be auto-assigned engineering/UI work.
|
|
112
|
+
routingMode: opt-in
|
|
113
|
+
neverRouteUnlessLane: content
|
|
114
|
+
alwaysRoute:
|
|
115
|
+
- docs
|
|
116
|
+
- content
|
|
117
|
+
- standards
|
|
118
|
+
- copy
|
|
119
|
+
- brand
|
|
120
|
+
- marketing
|
|
121
|
+
- landing
|
|
122
|
+
- readme
|
|
123
|
+
neverRoute:
|
|
124
|
+
- db-migration
|
|
125
|
+
- backend
|
|
126
|
+
- api
|
|
127
|
+
- integration
|
|
128
|
+
- ui
|
|
129
|
+
- frontend
|
|
130
|
+
- dashboard
|
|
131
|
+
- css
|
|
132
|
+
- design
|
|
133
|
+
- deploy
|
|
134
|
+
- ci
|
|
135
|
+
- infra
|
|
136
|
+
- security-review
|
|
137
|
+
- code-review
|
|
138
|
+
wipCap: 1
|
|
139
|
+
- name: harmony
|
|
140
|
+
role: agent-health
|
|
141
|
+
description: Agent health and team culture owner (coordination quality, risk flags, role fit, communication hygiene).
|
|
142
|
+
affinityTags:
|
|
143
|
+
- agent-health
|
|
144
|
+
- team-health
|
|
145
|
+
- coordination
|
|
146
|
+
- communication
|
|
147
|
+
- culture
|
|
148
|
+
- conflict-prevention
|
|
149
|
+
- workload-balance
|
|
150
|
+
- burnout-risk
|
|
151
|
+
- operating-rhythm
|
|
152
|
+
# Health is opt-in: Harmony should not be auto-assigned product/engineering work.
|
|
153
|
+
routingMode: opt-in
|
|
154
|
+
neverRouteUnlessLane: health
|
|
155
|
+
alwaysRoute:
|
|
156
|
+
- agent-health
|
|
157
|
+
- team-health
|
|
158
|
+
- coordination
|
|
159
|
+
- comms-hygiene
|
|
160
|
+
- pulse
|
|
161
|
+
neverRoute:
|
|
162
|
+
- backend
|
|
163
|
+
- api
|
|
164
|
+
- integration
|
|
165
|
+
- security-review
|
|
166
|
+
- code-review
|
|
167
|
+
- frontend
|
|
168
|
+
- ui
|
|
169
|
+
- design
|
|
170
|
+
- growth
|
|
171
|
+
- marketing
|
|
172
|
+
- docs
|
|
173
|
+
- release
|
|
174
|
+
- deploy
|
|
175
|
+
protectedDomains:
|
|
176
|
+
- agent-health
|
|
177
|
+
- team-health
|
|
178
|
+
wipCap: 1
|
|
179
|
+
- name: scout
|
|
180
|
+
role: analyst
|
|
181
|
+
description: Analytics/research owner for insights and prioritization inputs.
|
|
182
|
+
affinityTags:
|
|
183
|
+
- research
|
|
184
|
+
- analysis
|
|
185
|
+
- metrics
|
|
186
|
+
- monitoring
|
|
187
|
+
- analytics
|
|
188
|
+
- data
|
|
189
|
+
- reporting
|
|
190
|
+
- benchmark
|
|
191
|
+
alwaysRoute:
|
|
192
|
+
- analytics
|
|
193
|
+
- research
|
|
194
|
+
- sla
|
|
195
|
+
neverRoute:
|
|
196
|
+
- frontend-polish
|
|
197
|
+
wipCap: 1
|
|
198
|
+
- name: spark
|
|
199
|
+
role: growth
|
|
200
|
+
description: Growth and activation — funnels, onboarding, experiments, distribution.
|
|
201
|
+
affinityTags:
|
|
202
|
+
- growth
|
|
203
|
+
- activation
|
|
204
|
+
- funnel
|
|
205
|
+
- onboarding
|
|
206
|
+
- distribution
|
|
207
|
+
- experiment
|
|
208
|
+
- telemetry
|
|
209
|
+
- dashboard
|
|
210
|
+
- conversion
|
|
211
|
+
alwaysRoute:
|
|
212
|
+
- growth
|
|
213
|
+
- activation
|
|
214
|
+
- experiment
|
|
215
|
+
neverRoute:
|
|
216
|
+
- security-review
|
|
217
|
+
wipCap: 1
|
|
218
|
+
|
|
219
|
+
# Rhythm: ops automation agent
|
|
220
|
+
- name: rhythm
|
|
221
|
+
role: ops-automation
|
|
222
|
+
description: Ops automation — board health, CI/CD, monitoring, SLA tracking.
|
|
223
|
+
affinityTags:
|
|
224
|
+
- ops
|
|
225
|
+
- automation
|
|
226
|
+
- ci
|
|
227
|
+
- monitoring
|
|
228
|
+
- board-health
|
|
229
|
+
- sla
|
|
230
|
+
- alerting
|
|
231
|
+
alwaysRoute:
|
|
232
|
+
- ops-automation
|
|
233
|
+
- board-health
|
|
234
|
+
neverRoute:
|
|
235
|
+
- visual-polish
|
|
236
|
+
- brand-copy
|
|
237
|
+
wipCap: 1
|
|
238
|
+
|
|
239
|
+
# Removed agent-1/2/3 fallback entries — were leaking into dashboard as ghost agents
|
|
65
240
|
|
|
66
241
|
# Lane definitions for ready-queue engine.
|
|
67
242
|
# Each lane groups agents into a work stream with floor + WIP controls.
|
|
@@ -69,16 +244,31 @@ agents:
|
|
|
69
244
|
# wipLimit — max simultaneous doing tasks per agent (/tasks/next enforces this)
|
|
70
245
|
lanes:
|
|
71
246
|
- name: engineering
|
|
72
|
-
agents: [
|
|
247
|
+
agents: [link]
|
|
73
248
|
readyFloor: 2
|
|
74
249
|
wipLimit: 2
|
|
75
250
|
|
|
76
251
|
- name: design
|
|
77
|
-
agents: [
|
|
252
|
+
agents: [pixel]
|
|
78
253
|
readyFloor: 1
|
|
79
254
|
wipLimit: 1
|
|
80
255
|
|
|
81
256
|
- name: operations
|
|
82
|
-
agents: [
|
|
257
|
+
agents: [sage, rhythm]
|
|
83
258
|
readyFloor: 1
|
|
84
|
-
wipLimit:
|
|
259
|
+
wipLimit: 1
|
|
260
|
+
|
|
261
|
+
- name: health
|
|
262
|
+
agents: [harmony]
|
|
263
|
+
readyFloor: 1
|
|
264
|
+
wipLimit: 1
|
|
265
|
+
|
|
266
|
+
- name: growth
|
|
267
|
+
agents: [spark]
|
|
268
|
+
readyFloor: 1
|
|
269
|
+
wipLimit: 1
|
|
270
|
+
|
|
271
|
+
- name: content
|
|
272
|
+
agents: [echo]
|
|
273
|
+
readyFloor: 1
|
|
274
|
+
wipLimit: 1
|
|
@@ -10,6 +10,10 @@ export interface UserFunnelState {
|
|
|
10
10
|
events: Record<ActivationEventType, number | null>;
|
|
11
11
|
currentStep: number;
|
|
12
12
|
completedAt: number | null;
|
|
13
|
+
/** Data-quality flags (e.g. out-of-order timestamps, missing prereqs, pass+fail) */
|
|
14
|
+
flags?: string[];
|
|
15
|
+
/** Whether the user is considered valid for aggregate funnel telemetry */
|
|
16
|
+
validForAggregation?: boolean;
|
|
13
17
|
}
|
|
14
18
|
/**
|
|
15
19
|
* Emit an activation event. Idempotent per (userId, type).
|
|
@@ -22,8 +26,11 @@ export declare function emitActivationEvent(type: ActivationEventType, userId: s
|
|
|
22
26
|
export declare function getUserFunnelState(userId: string): UserFunnelState;
|
|
23
27
|
/**
|
|
24
28
|
* Get funnel summary across all users.
|
|
29
|
+
* @param opts.raw — if true, include ALL users (including internal infrastructure) for debugging
|
|
25
30
|
*/
|
|
26
|
-
export declare function getFunnelSummary(
|
|
31
|
+
export declare function getFunnelSummary(opts?: {
|
|
32
|
+
raw?: boolean;
|
|
33
|
+
}): {
|
|
27
34
|
totalUsers: number;
|
|
28
35
|
stepCounts: Record<ActivationEventType, number>;
|
|
29
36
|
completedUsers: number;
|
|
@@ -73,8 +80,11 @@ export interface WeeklyTrend {
|
|
|
73
80
|
}
|
|
74
81
|
/**
|
|
75
82
|
* Get step-by-step conversion funnel with rates and timing.
|
|
83
|
+
* @param opts.raw — if true, include ALL users (including internal infrastructure) for debugging
|
|
76
84
|
*/
|
|
77
|
-
export declare function getConversionFunnel(
|
|
85
|
+
export declare function getConversionFunnel(opts?: {
|
|
86
|
+
raw?: boolean;
|
|
87
|
+
}): StepConversion[];
|
|
78
88
|
/**
|
|
79
89
|
* Get failure-reason distribution per step.
|
|
80
90
|
* Looks at event metadata for `failed_checks`, `first_blocker`, `error`, etc.
|
|
@@ -91,6 +101,7 @@ export declare function getWeeklyTrends(weekCount?: number): WeeklyTrend[];
|
|
|
91
101
|
*/
|
|
92
102
|
export declare function getOnboardingDashboard(opts?: {
|
|
93
103
|
weeks?: number;
|
|
104
|
+
raw?: boolean;
|
|
94
105
|
}): {
|
|
95
106
|
timestamp: number;
|
|
96
107
|
funnel: StepConversion[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activationEvents.d.ts","sourceRoot":"","sources":["../src/activationEvents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"activationEvents.d.ts","sourceRoot":"","sources":["../src/activationEvents.ts"],"names":[],"mappings":"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"}
|