Session/internal caller context, app gate, provenance and the gateway call runtime
Candidate walk with failover, one-shot parameter fallback and metered streaming
Provider credentials never reach the log, the usage row or the rethrown error; a failed provider-health write never costs an answer; an interrupt stops the walk...
Map a Studio config onto job-title charter items
SalesAgentCharterMapper maps a Sales Agent's AgentConfig onto job-title charter items (spec 4.7.8) for the fold-in, and the six Studio templates onto the A9 per...
Compile a charter into an operating brief and a job description
RRuleText words every rule CharterRRule accepts (month-day and monthly weekday lists, an hourly rule's days) and quotes one it cannot read, so a single stored r...
Chat, routing and the model picker run on the registry; capability backfill replaces the pricing backfill
Catalog and coverage, platform console API, internal registration and attestation, health sweep
Model endpoints — manual models, capability edits and verify, price rows, retire-not-delete
A context edit keeps an enabled LONG_CONTEXT in step, so the next capability write no longer restores the old value; a listed capability that needs details is r...
Provider endpoints on the registry — draft test, sync, verify, retire-not-delete, Provided-by-Kamo opt-out
Live capability probes — VERIFIED only from a passing probe; batch verify capped at 200
A chat probe fails on a 200 that is not a completion, names a failure as the connection check does (TLS included), cancels a call that runs out of time, and a 4...
Credentials from env or vault, org/platform visibility, platform-right authz, safe views, internal auth
Capability source precedence, the single capability writer, and the batch capability index
An adapter that denies TEXT_GENERATION speaks for the whole chat family; a switched-off LONG_CONTEXT never overwrites a reported context; remove leaves a tombst...
Deepgram, ElevenLabs, AssemblyAI, Cartesia families and the per-type adapter registry
Beyond the plan: the Perplexity chat check classifies failures as every other check does (spec 4.7.3); ElevenLabs and Cartesia refuse a missing voice and a voic...
Real model discovery for OpenAI-style, Anthropic, Google, Hugging Face, Ollama and catalogue-only vendors
Known-model catalogue (hints + unchanged prices) and name-hint classifier
The sales agent honours the organization's email opt-out list
Before any email touch the outbound gate now asks the organization's email opt-out ledger about the contact's address. The address is the one the contact key po...
Lock the shared sweeps, and run two pods
Every @Scheduled sweep here whose effect is shared now takes a named distributed lease through SingletonTaskRunner before it does anything, so it runs once acro...
Unreviewed-response counts and a mark-read
Keyed by session guid, which is what a tool window carries. Not audited as a disclosure: it returns counts and never a word of a transcript, and recording a bad...
Point at YugabyteDB and use PostgreSQLDialect
CockroachDB has been replaced by YugabyteDB. Connection strings move from cockroachdb-public:26257 to yb-tserver-service:5433, and the Hibernate dialect from **...
Persist AI conversation PHI access trail to phi_access_log
Stored assistant conversations are the reads least able to afford a 14-day, unqueryable log stream: the module sits outside the compliance boundary, so prompts ...
Record PHI access on every read of stored AI conversation history
Wires the shared §164.312(b) spine into the paths that read persisted prompts and completions. The assistant is the module the compliance assessment put OUTSIDE...
Per-agent scorecard
What each agent actually did: conversations, how often a person had to take over and why, outreach outcomes including the ones held back, and what it cost. Eve...
Model pricing catalog, write path and backfill
Cost accounting could never work: AiModel has price columns, AiModelController reads them and ChatOrchestrationService reads them to compute costEstimate - but ...
Agent-initiated handoff to a human, with context
The AI could not previously ask for a person: escalation rules reached the model via the compiled prompt, but there was no machine-readable signal back, so the ...
Outbound triggers, scheduler and web-chat dispatch
Makes the outreach spine actually fire. The gate, contact state, consent and audit already existed; nothing caused a touch to be evaluated. - NATS enabled for ...
Persist org-wide required text and apply it immediately
AiOrgSettings gained forcedPreamble/forcedFooter and SalesAgentCompiler already folds them into every agent, but the settings controller neither read nor wrote ...
Sales-agent compiler, versioning, outreach gate; fix tool replay
Structured agent config compiles to the system prompt, freezes per published version, and gains the gate an agent must pass before initiating contact. Compiler...
Sales-agent CRUD, mortgage template, and agent-driven chat prompt
- AiSalesAgentController (/api/ai/sales-agents): org-scoped CRUD + GET /templates - SalesAgentTemplateRegistry: built-in starter templates, beginning with a m...
Inline image vision + tier fallback that prefers stronger over weaker
Two limits made org-configured vision unusable for whole classes of caller. 1. Vision was URL-ONLY. Every caller had to stand up public, provider-fetchable ser...
Per-integration public AI prompt + session attribution
Upgrade the public-chat system-prompt waterfall from per-org to per-integration: PublicAiChatController now reads the X-Public-Chat-Key-Hash header (nullable) f...
Per-org public prompt, human-handoff on no provider, anon daily message cap
Tier-aware internal text completion (POST /api/ai/internal/text)
Mirrors the vision path: selectTextProvider picks the org's active provider tagged with the requested cost tier (LIGHT/MEDIUM/HEAVY), falling back by priority; ...
Provider cost-tier/vision passthrough + internal one-shot vision endpoint
AiProviderController reads/echoes costTier + supportsVision. ProviderRoutingService gains selectVisionProvider(orgId, tier). **************** runs a one-shot vi...
Add public AI chat endpoints with RAG integration for anonymous visitors
Adds /api/ai/public/sessions endpoints for anonymous AI chat on marketing sites. Bypasses OTK auth filter for public paths. Uses public-facing system prompt and...
Pass memberType through RAG search for audience-scoped KB results
Resolve member type from MemberRepository and include it in RAG search requests so the vector DB can filter KB articles by audience visibility.
Structured citation post-processing ensures RAG sources are always cited
Wire ConversationContextService for sliding window context management
Trims conversation history to fit model's context window before sending to LLM. Keeps recent messages verbatim, summarizes older ones.
Like what you see shipping?
All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.
