fix(agent-chat): streaming state leak, document parser magic bytes, HITL flow
### Bugfixes — Agent Chat 'Думаю' State Leak - fix(agent-chat): loadHistory() now resets streamingState/idle + cancels stale submission — prevents 'Думаю' state leak across conversation switches - fix(agent-chat): onDisconnected/onDisconnectedPermanent cascade to streamingState — prevents permanent hang on connection loss during stream - fix(agent-chat): guard on isLoadingHistory — prevents false commit of 'agent unavailable' fallback when switching conversations - fix(agent-chat): remove race in _sendNow empty-response check vs Svelte microtask (duplicate logic removed, handles correctly) - fix(stream-processor): confirm_resolved now appends msg.text to partialText instead of dropping it ### Bugfixes — Backend PDF Upload - fix(document-parser): _detect_format_by_magic() — reads file header magic bytes as fallback when Gradio loses filename - fix(document-parser): improved name extraction — tries orig_name, path stem - fix(document-parser): @RELATION AgentChatTypes -> AgentChat.Types ### HITL Flow & Agent Chat Improvements - feat(agent): HITL resume confirm/deny with userId/userJwt/envId propagation - feat(agent): confirm_required metadata fallback via aget_state() after 'Event loop is closed' error during interrupt - feat(agent): interrupt_before re-enabled via AGENT_CONFIRM_TOOLS env var - feat(frontend): debug panel with connection/stream state monitoring - feat(frontend): AgentChatModel constructor options + onBeforeSend callback - feat(frontend): crypto.randomUUID() for local conversation ID on first send ### Backend Agent Refactoring - refactor(agent): langgraph_setup — monkey-patch for PydanticSerializationError - refactor(agent): tools.py — dual identity headers, expanded tool set - refactor(agent): run.py — _find_free_port, Gradio server port fallback - refactor(agent): app.py — file size validation, message truncation, HITL path ### Frontend - feat(dashboard-hub): DashboardHubModel with filters, pagination, git actions - feat(ui): DateRangeFilter component - feat(i18n): new dashboard keys; cache tooltips fix - fix(i18n): full run tooltips — cache is NOT ignored ### Semantic Protocol - chore(agents): update all agents with canonical format - chore(skills): sync semantics-core, semantics-contracts, molecular-cot-logging ### Housekeeping - chore: remove stale semantic reports (10 files, Jan 2026) - chore: update 033-gradio-agent-chat specs, contracts, UX, tasks, tests - chore: add .agents/ directory (mirrors .opencode/ agent layouts) - chore: update run.sh with DEV_MODE, port management
This commit is contained in:
@@ -73,12 +73,13 @@ Load and follow these skills (MANDATORY):
|
||||
16. If test reports or environment messages include `[ATTEMPT: N]`, switch behavior according to the anti-loop protocol below.
|
||||
|
||||
## Axiom MCP Tools
|
||||
See `semantics-core` §VI for the canonical tool reference. For Python backend work, the most common are:
|
||||
- `axiom_semantic_discovery search_contracts` / `read_outline` — contract lookup
|
||||
- `axiom_semantic_context local_context` — contract + dependencies in one call
|
||||
- `axiom_contract_metadata update_metadata` / `axiom_contract_patch` — safe mutation (checkpoints)
|
||||
- `axiom_semantic_validation impact_analysis` — upstream/downstream dependency graph
|
||||
- `axiom_semantic_index rebuild rebuild_mode="full"` — reindex after feature completion
|
||||
See `semantics-core` §VI for the canonical tool reference. Axiom MCP exposes 2 read-only tools (`search` and `audit`). For Python backend work:
|
||||
|
||||
- `search` tool: `search_contracts` / `read_outline` / `local_context` / `status` / `rebuild`
|
||||
- `audit` tool: `audit_contracts` / `audit_belief_protocol` / `impact_analysis`
|
||||
|
||||
**Mutation (metadata, anchors, relations) uses `edit`** — Axiom MCP has NO mutation tools.
|
||||
After feature completion: `rebuild` via search tool.
|
||||
|
||||
---
|
||||
|
||||
@@ -209,12 +210,12 @@ request:
|
||||
|
||||
## Semantic Safety
|
||||
Follow the canonical anti-corruption protocol in `semantics-contracts` §VIII. Key rules for Python:
|
||||
- Before editing: `axiom_semantic_discovery read_outline` on the target file
|
||||
- Before editing: `search` tool with `operation="read_outline"` on the target file
|
||||
- Never: insert code between `#region` and first metadata line; remove/move/duplicate `#endregion`; add `@COMPLEXITY N` or `@C N` (use `[C:N]` in anchor)
|
||||
- After editing: verify `read_outline` — all `#region`/`#endregion` pairs must match
|
||||
- Corrupted → rollback immediately; do not continue editing
|
||||
- Corrupted → rollback via `git checkout`; do not continue editing
|
||||
- ONE file at a time; verify between files
|
||||
- After feature completion: `axiom_semantic_index rebuild rebuild_mode="full"`
|
||||
- After feature completion: `search` tool with `operation="rebuild" rebuild_mode="full"`
|
||||
|
||||
## Recursive Delegation
|
||||
- If you cannot complete the task within the step limit or if the task is too complex, you MUST spawn a new subagent of the same type (or appropriate type) to continue the work or handle a subset of the task.
|
||||
|
||||
Reference in New Issue
Block a user