Commit Graph
1681 Commits
Author SHA1 Message Date
Matthew Meszaros 5b7d29c766 Merge pull request #70 from warmbly/domain-inbox-placement
feat: deliverability score + per-provider/per-domain inbox placement on the dashboard
2026-07-16 18:02:02 +02:00
Matthew Meszaros 1e1e357c06 feat: add a 0-100 deliverability score plus per-provider seed placement and per-domain warmup placement breakdowns to GET /analytics/deliverability, surface them on a customizable deliverability dashboard (toggleable sections + persisted view), and document the new fields in the guides and API reference 2026-07-16 17:55:34 +02:00
Matthew Meszaros 26b0c47148 Merge pull request #69 from warmbly/dev-quick-start 2026-07-16 09:54:39 +02:00
Matthew Meszaros fe6d3769cc feat: document make dev at the top of the AGENTS.md local development targets (readiness waits, seeding, seeded login, Ctrl-C leaves infra up) 2026-07-16 09:51:32 +02:00
Matthew Meszaros 968e43cf2d feat: collapse the sandbox quick start from six terminals to four by starting the core stack with make dev instead of infra+run+web 2026-07-16 09:51:32 +02:00
Matthew Meszaros f7ae908439 feat: rework the local development docs around make dev - new One command section with SEED/AI_PROVIDER variants, Rust/Elixir moved to optional prerequisites, and the stale manual-env-exports-plus-air native section rewritten around the pre-wired make targets 2026-07-16 09:51:32 +02:00
Matthew Meszaros c8126d945d feat: lead the README quick start with make dev - one command from clone to a seeded running stack with the dev@warmbly.com login, keeping the infra/run/web split and the all-docker make up as noted alternatives 2026-07-16 09:51:32 +02:00
Matthew Meszaros fa3672464a feat: add one-command make dev target - brings up docker infra and polls real readiness (pg_isready plus kafka/schema-registry/localstack init one-shot exit codes, failing loudly with a make logs hint), applies migrations, loads seed fixtures (SEED=false to skip), installs web deps on first run, then runs backend + consumer + both shared workers + dashboard in one terminal with Ctrl-C teardown 2026-07-16 09:51:20 +02:00
Matthew Meszaros b40148c482 Merge pull request #68 from warmbly/ai-platform 2026-07-16 08:58:47 +02:00
Matthew Meszaros d0e8bc1c97 feat: add one-command MCP OAuth connect on api.warmbly.com/v1/mcp — RFC 7591 dynamic client registration for public PKCE clients (dcr.go), RFC 9728 protected-resource metadata + WWW-Authenticate challenge via MCPAuthMiddleware, /v1/mcp now accepts an API key or OAuth token, public-client auth with no secret and mandatory PKCE reusing the existing OAuth 2.1 server (nullable-org clients, migration 000066), executable-redirect-scheme hardening on the open register endpoint, plus mcp/oauth/authentication/endpoints docs 2026-07-16 08:57:19 +02:00
Matthew Meszaros 30e8d3c13a feat: restyle the docs site without decorative sidebar icons (frontmatter icons dropped, lucide source plugin disabled, AGENTS.md conventions updated), add LangTab language-logo code tabs, and document the new agent tools plus panel resize/placement/shortcuts in the assistant guide and MCP reference 2026-07-16 07:50:24 +02:00
Matthew Meszaros e4a391c8a4 feat: make the assistant panel fully placeable: drag the inner edge to resize (360-720px, persisted), dock to the left or right screen edge from the header (persisted, dock bar follows), and panel-scoped shortcuts (Cmd/Ctrl+]/[ switch tabs, Alt+N new chat, Alt+W close tab, Alt+M minimize) listed in the shortcuts dialog 2026-07-16 07:50:24 +02:00
Matthew Meszaros fabb1d2a42 feat: broaden the agent tool registry: list_campaign_leads (derived lead statuses + totals, the correct source for cold-lead/follow-up questions), set_campaign_status (approval-gated start/stop), get_dashboard_analytics, list_mailboxes (health + warmup), list_pipelines, list_deals, add_contact_note, and a list_threads description that steers the model to list_campaign_leads and to retry unfiltered before concluding the inbox is empty 2026-07-16 07:50:24 +02:00
Matthew Meszaros 73c80530c3 feat: adapt the OpenAI-compatible provider to the gpt-5.x/o-series request shape at runtime: a 400 naming max_tokens or temperature flips a sticky per-provider flag (max_completion_tokens / omit temperature) and retries, so newer OpenAI models work while Ollama/Groq/OpenRouter keep the legacy params 2026-07-16 07:25:08 +02:00
Matthew Meszaros 0b073bbe8a feat: redraw AgentMark as the recognizable AI glyph (large spark + small companion spark, filled) and bump the header assistant icon to w-4 so it reads clearly as the AI agent 2026-07-16 07:18:56 +02:00
Matthew Meszaros fd0be6e5ff feat: log the real provider error (org, session, provider, model) and transcript-persist failures server-side when an agent run fails, instead of swallowing them behind the generic provider_error SSE message 2026-07-16 07:18:56 +02:00
Matthew Meszaros 602f0d2d0c feat: animate the notifications dropdown open/close with the house framer-motion pattern (AnimatePresence fade + 4px slide, 120ms) instead of popping in instantly 2026-07-16 07:05:06 +02:00
Matthew Meszaros 4830fb9631 feat: drop the black tile behind the assistant logomark; the AgentMark spark now renders bare in sky-600 in the panel header, empty state, and minimized dock 2026-07-16 07:02:38 +02:00
Matthew Meszaros 619b63715d feat: force the dashboard light-only (theme resolver and ThemeProvider never apply the .dark root class) and drop the dark/system theme commands from the command palette, fixing the palette rendering dark inside the all-white app on a dark-mode OS 2026-07-16 07:02:38 +02:00
Matthew Meszaros c2bd4a7301 feat: animate the sidebar READY status with a dedicated status-breathe keyframe (halo swells 0.6x to 1.4x and fades on a 2.2s cycle, honoring prefers-reduced-motion) since animate-pulse on the tiny halo was imperceptible; CONNECTING dot pulses too 2026-07-16 07:02:38 +02:00
Matthew Meszaros b03964ac29 feat: give the sidebar READY status a slow breathing emerald glow instead of a static ring and pulse the CONNECTING dot, so a quiet-but-connected workspace visibly reads as alive 2026-07-16 06:56:13 +02:00
Matthew Meszaros d64c1ddcf7 feat: give the assistant a serious monochrome AgentMark logomark (panel header, empty state, top bar), center single-line composer text against the send button, add minimize-to-dock with a live bottom-right status bar (working/step count, needs approval, response ready), unseen dots on tabs, and a live status badge on the header spark button 2026-07-16 06:52:30 +02:00
Matthew Meszaros e87adf1251 feat: add agentMinimized and per-tab unseen state to agentSlice and make Cmd+I dock-aware (restores a minimized panel instead of closing it) 2026-07-16 06:52:30 +02:00
Matthew Meszaros a913e73837 feat: seed the sandbox org's AI-credit ledger (plan monthly allowance + a 5000-credit purchased top-up with idempotent grant transactions) so the assistant never reports out-of-credits in the demo; re-seeding refills both pools 2026-07-16 06:52:30 +02:00
Matthew Meszaros e64b0b161d feat: sweep stale OPENAI_API_KEY/AI_LOCAL_MODEL mentions out of comments, the provider-not-configured and warmup-admin error strings, env.example, and the deployment guide now that AI_* is the only config surface 2026-07-16 06:39:07 +02:00
Matthew Meszaros 29e3bb3a64 feat: drop the legacy OPENAI_*/ANTHROPIC_API_KEY/AI_LOCAL_MODEL env fallbacks (no prod deployments exist): AI_PROVIDER/AI_API_KEY/AI_MODEL/AI_BASE_URL/AI_FREE are the only AI vars, empty provider means openai, the anthropic preset and writing client key off AI_API_KEY, and the warmup Batch generator runs only when the selected provider is OpenAI 2026-07-16 06:39:06 +02:00
Matthew Meszaros d0e8daf763 feat: fix agent panel interaction bugs: stick-to-bottom scrolling with a Latest pill, per-tab drafts, IME-safe Enter, double-send guard, send lock during history hydration, inert+Escape when closed, autoresizing composer, editor-style tabs (middle-click close, active scroll-into-view, tablist a11y), focus management, memoized turns, centered transcript in expanded mode 2026-07-16 06:28:29 +02:00
Matthew Meszaros de3aed0a9b feat: keep the unsent composer draft per agent tab in agentSlice and respawn a fresh tab when the last one closes so the panel is never blank 2026-07-16 06:28:29 +02:00
Matthew Meszaros d8475a1896 feat: render assistant replies as markdown with a dependency-free React renderer (bold, lists, inline code, safe links, fenced code) and prompt the agent to emit that simple subset 2026-07-16 06:28:29 +02:00
Matthew Meszaros afc5e9d6e5 feat: document AI_PROVIDER-based provider selection (presets, OpenRouter model switching, free local model) across the deployment guide, local development, AI credits, and env reference 2026-07-16 06:14:19 +02:00
Matthew Meszaros 647a1965f2 feat: replace the AI_LOCAL boolean with an AI_PROVIDER/AI_KEY/AI_MODEL/AI_BASE_URL/AI_FREE passthrough on the backend, consumer, and run targets so make run picks the provider too 2026-07-16 06:14:19 +02:00
Matthew Meszaros 917451b105 feat: select the AI provider via AI_PROVIDER + AI_* vars in the backend and consumer (legacy OPENAI_*/ANTHROPIC_API_KEY still honored as fallbacks), logging a clear message when the provider is misconfigured 2026-07-16 06:14:19 +02:00
Matthew Meszaros 9d76685fb2 feat: add generation.Resolve mapping an AI_PROVIDER preset (openai/openrouter/groq/ollama/anthropic/custom) plus AI_API_KEY/AI_MODEL/AI_BASE_URL/AI_FREE into a provider config, erroring on a base-less custom provider instead of leaking the key to OpenAI 2026-07-16 06:14:19 +02:00
Matthew Meszaros 42b770f0dc feat: add config.GetBoolPtr returning nil when an optional boolean env is unset, so a caller can fall back to its own default 2026-07-16 06:14:19 +02:00
Matthew Meszaros e28d2f6d88 feat: deactivate the base-fixture Acme/Globex demo mailboxes in the sandbox so the worker reconciler stops failing to decrypt their placeholder credentials, leaving only the real Sunrise mailboxes active 2026-07-15 19:19:35 +02:00
Matthew Meszaros 2a3b91cde1 feat: document the free local model path across the deployment guide, local development, the AI assistant guide, and AI credits, and fix the assistant voice-profile link 2026-07-15 18:52:07 +02:00
Matthew Meszaros 4afe593b57 feat: show a free-model notice in the assistant footer and hide the credit counter when the run is on a free/local model 2026-07-15 18:52:07 +02:00
Matthew Meszaros 652ddf6ff4 feat: track a per-tab freeModel flag in the AI agent workspace store 2026-07-15 18:52:07 +02:00
Matthew Meszaros 79c43e2168 feat: add free_model to the agent stream event and transcript client types 2026-07-15 18:52:07 +02:00
Matthew Meszaros f7e798e4ad feat: document the AI provider and free/local model env vars (OPENAI_*, ANTHROPIC_API_KEY, AI_LOCAL_MODEL, SEARCH_*) in the env reference 2026-07-15 18:52:07 +02:00
Matthew Meszaros 0b1037843d feat: add a make AI_LOCAL=1 toggle that runs the backend and consumer against a local Ollama model (OLLAMA_HOST/OLLAMA_MODEL overridable), off by default 2026-07-15 18:52:07 +02:00
Matthew Meszaros a22a51ebcb feat: skip credits for automation AI nodes when running on a free/local model 2026-07-15 18:52:07 +02:00
Matthew Meszaros 8bc782f098 feat: skip credits (and the unpaid-draft unwind) for the inbox agent when running on a free/local model 2026-07-15 18:52:07 +02:00
Matthew Meszaros 96b8e9dcd6 feat: skip credits for contact research runs when running on a free/local model 2026-07-15 18:52:07 +02:00
Matthew Meszaros 44797191b8 feat: skip credits for reply drafts when running on a free/local model 2026-07-15 18:52:07 +02:00
Matthew Meszaros 18a98944ae feat: skip credits for the writing assistant when running on a free/local model, returning the unchanged balance 2026-07-15 18:52:07 +02:00
Matthew Meszaros d94bd70f88 feat: wire AI_LOCAL_MODEL into the backend and consumer provider config and pass the agent voice preamble into the dashboard agent service 2026-07-15 18:51:51 +02:00
Matthew Meszaros 59044aedf2 feat: the dashboard agent runs un-metered on a free/local model, streams a free_model signal, and injects the org voice profile into its system prompt so its writing sounds human 2026-07-15 18:51:51 +02:00
Matthew Meszaros b49b07d0f2 feat: persist a free_model flag on the agent session context so a reopened assistant tab keeps the free-model notice 2026-07-15 18:51:51 +02:00
Matthew Meszaros 42f2a9bf77 feat: add generation.BuildAgentVoiceRules - the shared humanizer bans plus the org voice grounding, scoped for the dashboard agent so it does not hijack the agent role 2026-07-15 18:51:51 +02:00