Files
ss-tools/specs/035-agent-chat-context/contracts/ux/decisions.md
busya ff60865183 feat(agent-chat): 035-agent-chat-context — контекст, guardrails, tools, database discovery
== User stories ==
US1: Контекст с дашборда/датасета → /agent с URL params
US2: Guardrails card — env badge, 7 risk tones, countdown, permission_denied
US3: Tools optimization — retry, timeout, summarise, RBAC + context affinity

== Backend ==
- _context.py (NEW): UIContext validation (7 checks)
- _tool_filter.py (NEW): RBAC + context affinity pipeline
- _confirmation.py: build_confirmation_contract_v2, permission_denied_payload
- tools.py: superset_list_databases, retry/summarise/timeout wrappers
- app.py: _inject_uicontext, _inject_env_id_into_tools, database
  prefetch в runtime context
- _persistence.py: prefetch_databases()
- agent_superset_explore.py: GET /databases endpoint
- _llm_async_http.py, _persistence.py: fix double /v1 в LLM URL
  (LM Studio Unexpected endpoint)

== Frontend ==
- AgentChatModel.svelte.ts: 5 atoms, 3 actions, countdown, context
- AgentChat.svelte: production banner, process steps, debug panel
- ConfirmationCard.svelte: 7 risk tones, permission_denied, countdown
- ToolCallCard.svelte: retrying/timeout/cancelled states
- StreamProcessor.svelte.ts: tool_retry, timeout, permission_denied
- TopNavbar: sparkles icon + Ассистент
- sidebarNavigation: AI section
- DashboardHeader, datasets/+page: contextual AI buttons
- Icon: sparkles, brain, cpu icons
- tailwind: assistant category colors
- i18n: en/ru nav keys

== Tests ==
- 159 backend agent tests (+16 US3: retry, timeout, summarise, contracts)
- 2544 frontend tests (+11 model + component tests)
- 15 JSON fixtures (10 API + 5 model)

== Specs ==
- specs/035-agent-chat-context/: spec, UX, plan, tasks, research,
  data-model, contracts, quickstart, traceability, fixtures, checklists

Closes #035
2026-07-04 22:47:17 +03:00

2.0 KiB
Raw Blame History

#region UxDecisions [C:3] [TYPE ADR] [SEMANTICS ux,decisions,agent-chat] @defgroup Ux Final UX design decisions for 035-agent-chat-context.

Agent Chat Panel

  • Context: Route-level — передаётся при переходе на /agent; статичен на странице
  • Indicator: Пилюля «Контекст» в process steps bar (существующий элемент, расширенная функциональность)
  • Prod warning: Реактивный $derived от model.envId — bg-warning-light + красная полоса сверху
  • Env switch: EnvSelector на странице агента обновляет контекст реактивно

ConfirmationCard

  • Risk visual: border/background по риску инструмента; dangerous всегда destructive
  • Environment: бейдж в заголовке карточки
  • Dangerous protection: 10-секундный таймер с обратным отсчётом на кнопке подтверждения
  • Permission denied: карточка → закрыть → сообщение агента с альтернативами
  • States: read, write_staging, write_prod, dangerous_any, permission_denied, loading_confirm, loading_deny

ToolCallCard

  • Retry: бэкенд 1 авто-ретрай (1s backoff) + ручная кнопка «Повторить» при исчерпании
  • Timeout: ⏱️ иконка + сообщение + кнопка «Повторить»
  • New states: retrying, timeout, cancelled
  • New SSE events: tool_timeout, tool_retry

Debug Panel

  • Новые секции: UIContext (JSON + objectName) и ContextToolAffinity (/ список)
  • Интегрировано в существующую debug-панель (isDebugPanelOpen)

Accessibility

  • Process steps: role="status" aria-live="polite"
  • Dangerous countdown: aria-live="assertive" каждые 5 секунд
  • Prod background: aria-live="polite" при активации
  • All touch targets ≥ 44×44px

#endregion UxDecisions