Repository navigation
LLM-734: signup funnel — guide events, connection and tool-call stamps, admin view - #374
Merged
Merged
Conversation
…s, admin view We could not tell which client a new user picked, whether they connected, when they first used a tool, or whether they kept using it: request_log is purged after 7 days and nothing else recorded it. - MEM-150: signup_events table (guide shown / client tab / copy button); actors.first_connected_at, first_tool_call_at, last_tool_call_at, tool_call_count; config.signup_funnel_since. Backfill seeds only the last tool call and a partial count from request_log. - first_* are stamped only for accounts created after tracking began, so an old account's next use never reads as its first. - MCP auth heartbeat stamps the first connection; the tools/call handler stamps tool use (initialize / tools/list do not count). - POST /v1/agent/signup-event, called by the signup guide with the new API key; accepted only in the account's first 24 hours, capped at 100 events. - POST /v1/admin/funnel and a Signup Funnel sub-tab on the Access panel. Outside accounts = self-registered, not jeff, not zbbs-*, not virtual. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…g start Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… for the cap and boundary Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Owner
Author
|
Review round 2 follow-ups: a failed ROLLBACK now destroys the client ( |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
LLM-734
For any outside account we can now answer: which client did they pick on the signup guide, did they connect, when did they first use a tool, and are they still using it.
Data (migration MEM-150)
signup_events (actor_id, event, value, created_at):guide_shown(with the tab open at the time),client(tab picked),copy(button pressed). Insert-only, cascades on account delete.actors.first_connected_at,first_tool_call_at,last_tool_call_at,tool_call_count.config.signup_funnel_since= migration time.first_*are stamped only for accounts created at or after it, so an old account's next use never reads as its first. Backfill from the 7-dayrequest_logseeds onlylast_tool_call_atand a partial count (tool calls only: noinitialize,ping, or anyx/ymethod).Writers
first_connected_at.tools/callhandler stamps first/last/count, fire-and-forget, before the handler runs.POST /v1/agent/signup-event, called byregister.htmlwith the API key it was just handed. Fixed event names, value^[a-z][a-z0-9_-]{0,31}$, accepted only in the account's first 24 h, capped at 100 events per account (dropped events returnrecorded: false, not an error).Reader
POST /v1/admin/funnel(accessread permission) and a Signup Funnel sub-tab on the Access panel: stage counts (tracked accounts only, with all-time beside them) and one row per outside account. Outside = self-registered (created_by = id), notjeff, notzbbs-*, not virtual.first_connected_atonly — the guide's own events use the new key, so key use cannot count. Pre-tracking accounts fall back toagent_api_keys.last_used_at.Tests
signup-funnel.test.js(9): validation, tracking start, row mapping, connected rule, stage counts. Full suite 291 pass.access.htmlcompiles clean with@vue/compiler-dom;vite buildpasses.Agent: Home
🤖 Generated with Claude Code