Replaces the three remaining Pattern B placeholder routes
(/settings/telephony, /settings/ai, /settings/widget) with real forms
backed by the sidecar config endpoints introduced in Phase 1. Each page
loads the current config on mount, round-trips edits via PUT, and
supports reset-to-defaults. Changes take effect immediately since the
TelephonyConfigService / AiConfigService / WidgetConfigService all keep
in-memory caches that all consumers read through.
- src/components/forms/telephony-form.tsx — Ozonetel + SIP + Exotel
sections; honours the '***masked***' sentinel for secrets
- src/components/forms/ai-form.tsx — provider/model/temperature/prompt
with per-provider model suggestions
- src/components/forms/widget-form.tsx — enabled/url/embed toggles plus
an allowedOrigins chip list
- src/pages/telephony-settings.tsx — loads masked config, marks the
telephony wizard step complete when all required Ozonetel fields
are filled
- src/pages/ai-settings.tsx — clamps temperature to 0..2 on save,
marks the ai wizard step complete on successful save
- src/pages/widget-settings.tsx — uses the admin endpoint
(/api/config/widget/admin), exposes rotate-key + copy-to-clipboard
for the site key, and separates the read-only key card from the
editable config card
- src/main.tsx — swaps the three placeholder routes for the real pages
- src/pages/settings-placeholder.tsx — removed; no longer referenced
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>