Commit ef96f4f
Phase 06: Status pipeline + lead-store · catch-all tool-call view + showcase
Two themes folded together (no separate commits — both were uncommitted
WIP across the parent checkout and the v2a-fixup-wt worktree):
A. Local lead-store + Status pipeline + intelligence cleanup
- agent/src/lead_store.py: seed-or-Notion store; /api/leads/reset wipes
the local cache. boots cleanly without NOTION_TOKEN.
- agent/src/intelligence_cleanup.py: wipes Intelligence Postgres
orphan threads on agent boot so 'Message not found' rxjs traces
stop surfacing.
- Lead.status field, STATUSES = "Not started" | "In progress" | "Done";
PipelineBoard now groups by Status (was Workshop). LeadGrid and the
"grid" view are removed.
- agent/scripts/csv_to_seed.py + agent/data/leads.seed.json bundle 50
synthetic leads so the canvas is non-empty out of the box.
B. Catch-all wildcard tool-call view + lead-triage component showcase
- src/components/copilot/CopilotKitProviderShell.tsx wraps the v2
provider client-side and registers
renderToolCalls=[{ name: "*", args: z.any(), render: ToolCallView }]
so the zod schema doesn't cross the server→client boundary.
- ToolCallView: 3 lifecycle states + smart result summarization
(rows[] / row_count / warning / error / first scalar) + expand-for-
details; the runtime path through CopilotKit's chat doesn't fire yet
— tracked in .chalk/issues/v2a/007.
- 6 visual review surfaces under /components: enrichment-review,
charts-review, hitl-review, render-tools-review, tool-calls-review,
plus _review-shared building blocks. Legacy bento preserved at
bottom.
- Charts: LeadRadar (5-axis vs ICP), TierDonut, ScoreDistribution
(with .toFixed(2) snapping for hydration stability).
- Enrichment: EnrichmentCell, EnrichmentDetailCard, EnrichmentStream
(sheet), EnrichmentPill (compact); .enrichment-shimmer keyframes in
globals.css.
- HITL: RubricProposalCard (soft, with ▲▼ deltas) + SendQueueModal
(hard, via useInterrupt on send_gate events).
- Inline: EmailDraftCard with tone toggle.
- 7 new useFrontendTool({ render }) registrations on page.tsx:
renderEnrichmentStream, renderEnrichmentPill, renderLeadRadar,
renderTierDonut, renderScoreDistribution, renderRubricProposal,
renderEmailDraft. Plus useInterrupt({ enabled: isSendGateEvent })
for SendQueueModal.
- AgentState gains an enrichment field; mergeState deep-merges
enrichment.perLead so per-lead ticks compose cleanly.
Verification: tsc --noEmit clean; dev server boots; / and /components
serve 200.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 90e83a9 commit ef96f4f
43 files changed
Lines changed: 6863 additions & 332 deletions
File tree
- agent
- data
- scripts
- src
- src
- app
- api/leads/reset
- components
- components
- copilot
- leads
- charts
- enrichment
- hitl
- inline
- lib/leads
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
22 | 29 | | |
23 | 30 | | |
24 | 31 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
52 | 52 | | |
53 | 53 | | |
54 | 54 | | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
60 | 58 | | |
61 | | - | |
| 59 | + | |
62 | 60 | | |
63 | 61 | | |
64 | 62 | | |
| |||
492 | 490 | | |
493 | 491 | | |
494 | 492 | | |
495 | | - | |
496 | | - | |
497 | | - | |
498 | | - | |
499 | | - | |
500 | | - | |
501 | | - | |
502 | 493 | | |
503 | 494 | | |
504 | 495 | | |
| |||
0 commit comments