chiguyong
2c5e90104d
feat: message persistence, traceability and empty response auto-retry
2026-06-16 08:13:22 +08:00
chiguyong
16ac592855
feat(gateway): empty response auto-retry with fallback model chain
2026-06-16 08:07:21 +08:00
chiguyong
9caf332e9e
fix: ensure agent never returns empty result to user
2026-06-16 08:01:43 +08:00
chiguyong
87c59bb3e2
feat(tools): add SkillSearchTool and improve skill_install workflow
...
Add skill_search tool so agent can search for skills before installing.
Update skill_install description to guide LLM to search first.
Update system prompt to use skill_search -> skill_install flow.
This fixes the issue where agent returns empty when asked to find a skill.
2026-06-16 07:52:04 +08:00
chiguyong
f770d65c7b
merge: feat/simple-router-architecture - Replace 4-layer CostAwareRouter with SimpleRouter + prompt-based tool calling
2026-06-16 03:31:12 +08:00
chiguyong
c4257591d4
refactor(router): replace CostAwareRouter with SimpleRouter and prompt-based tool calling
2026-06-16 03:31:05 +08:00
chiguyong
a27eed3714
fix(config): unify config loading chain and protect ${VAR} references
...
- Settings API: reverse-resolve env vars to preserve ${VAR} refs in yaml,
write new API keys to .env instead of agentkit.yaml, extract env_key
from existing ${VAR} reference when updating providers
- Onboarding: merge-update instead of overwrite when config exists,
use config_arg to determine output path, .env merge instead of overwrite
- Unified templates: bailian-coding provider name, full model_aliases,
docker-compose with postgres, expanded .env.example
- Optional ruamel.yaml for comment/format preservation in Settings API
- clients.yaml: add _deep_resolve for ${VAR} env var references
- All CLI commands use load_config_with_dotenv() consistently
- Tests: mock find_config_path and CWD auto-discovery to avoid env leaks
2026-06-16 00:26:54 +08:00
chiguyong
dcdbfd85f2
merge: feat/router-optimization-round2 — Router intelligence upgrade (3rd iteration)
...
Key improvements:
- Fix low-complexity signal overriding high-complexity signal (P1)
- Enable SemanticRouter with lower threshold (0.6→0.4) + examples
- Short text LLM fallback for <20 char queries
- IntentRouter multi-candidate keyword scoring
- ExecutionMode enum extension (REWOO/REFLEXION/PLAN_EXEC)
- QualityGate 5th dimension: skill match validation
- Code review fixes: execution_mode resolution, name-based checks, validation
2026-06-16 00:24:40 +08:00
chiguyong
f99b3517d9
fix(review): apply code review fixes from ce-code-review
...
- P1: Use _resolve_execution_mode() instead of hardcoding SKILL_REACT
in semantic_low_complexity, semantic_high, and merged_llm paths
- P1: QualityGate escalation uses name-based check (c.name) instead
of identity check (c is) for robustness
- P2: Remove tautological complexity >= 0.3 in short_text_llm_hint
- P2: Add empty query guard in SemanticRouter.route()
- P2: Upgrade debug → warning log level for low-complexity fallback errors
- P2: Validate skill_hint against _SKILL_NAME_RE in _classify_merged
- P2: Rename has_high_signal → has_non_low_signal for clarity
2026-06-16 00:24:14 +08:00
chiguyong
11e2009cb8
feat(router): improve colloquial/mixed-lang routing, fix low-complexity IntentRouter bypass
...
Key improvements:
- Low-complexity queries (<0.3) now try IntentRouter keyword match
before falling back to DIRECT_CHAT, fixing 0% F1 on keyword_match
- SemanticRouter similarity_low lowered from 0.6 to 0.4
- Short text (<20 chars) uses effective_low = max(0.25, low - 0.15)
- Short text with no semantic match forces LLM classify fallback
- Added colloquial keywords to 7 skill YAMLs
- Fixed code_reviewer.yaml output_schema placement
- Fixed SemanticRouter build in e2e tests
- Fixed base_url detection for bailian-coding API keys
Results: keyword_match F1 0->60.87%, colloquial F1 0->100%, mixed_lang F1 0->100%
2026-06-15 23:54:57 +08:00
chiguyong
fa2a6dece2
feat(router): enable SemanticRouter + upgrade benchmark to L3/L5
...
- Enable SemanticRouter in agentkit.yaml (router.semantic.enabled: true)
- Integrate SemanticRouter into e2e backtest (_build_real_components)
- Add 8 new semantic test cases: 5 colloquial + 3 mixed-lang expressions
- Add L3 output quality evaluation framework (LLM-as-Judge, 1-5 score)
- Add L5 adaptive capability metrics (consistency rate from overfitting data)
- Add OutputQualityObservation model and evaluate_output_quality() method
- Report now includes L3 and L5 sections
Results: 52 tests pass, description_match F1=66.67%, L5 adaptive rate=100%
2026-06-15 23:02:47 +08:00
chiguyong
e984b4c462
feat(router): optimize routing intelligence — ExecutionMode expansion, multi-candidate scoring, quality gate skill match
...
- Expand ExecutionMode enum with REWOO/REFLEXION/PLAN_EXEC
- Add _resolve_execution_mode() to respect skill.config.execution_mode
- Rewrite IntentRouter._match_keywords() for multi-candidate scoring
- Add QualityGate 5th dimension: skill_match validation with warning escalation
- Calibrate HeuristicClassifier: low-complexity signals only when no high signals
- Fix negation regex for Chinese text (avoid matching past punctuation)
- Fix backtest mode_map normalization and .env loading
- Add 61 unit tests (21 HeuristicClassifier + 14 IntentRouter + 13 QualityGate + 13 existing)
Results: execution_mode_accuracy 9.09%→36.36%, skill_routing_F1 66.67%→77.78%
2026-06-15 22:43:13 +08:00
chiguyong
64d62a2b60
feat: autonomous task execution - connect PlanExecEngine + TeamOrchestrator
...
U1: TeamOrchestrator._execute_phase real execution (Expert.agent.execute)
U2: LLM-based merge strategies (BEST/VOTE/FUSION) with fallback
U3: ReActStepExecutor replacing _LLMStepAgent for tool-enabled steps
U4: SharedWorkspace integration for cross-phase/cross-execution state
U5: GoalPlanner prompt tuning with few-shot and verb pattern matching
U6: Replan-before-fallback in TeamOrchestrator
U7: End-to-end validation tests for multi-step research tasks
U8: WebSocket progress events (step_event_callback + new event types)
Code review fixes: P0 response.strip fix, P1 competitor status check,
milestone real impl, VOTE self-bias fix, confirmation_handler wiring,
ExpertTeam public API, DRY _build_result_summaries, replan tests
Also: geo_server.py refactor (ServerConfig.from_yaml), delete llm_config.yaml
2026-06-15 12:41:32 +08:00
chiguyong
0c63d813dc
fix: code review P0/P1 fixes — history param bug, llm dict access, WS ping
...
- Fix P0: _build_history_messages(conv.id, message_text) passed string as
limit param causing TypeError at runtime — removed erroneous second arg
- Fix P0: llm.py /llm/models used attribute access on dict (model_config.max_tokens)
causing AttributeError — changed to dict.get() access
- Fix P1: Portal WS ignored ping messages — added pong response handler
- Fix: composition.py f-string without placeholders
2026-06-15 08:30:49 +08:00
chiguyong
99fe4c99f7
fix: comprehensive code review fixes + WS test stability
2026-06-15 08:17:34 +08:00
chiguyong
7384ecb03e
feat: Expert Team Mode — plan-execute collaboration with conversation UI
...
Implements B+C hybrid Expert Team Mode with ExpertConfig, CollaborationPlan,
TeamOrchestrator, ExpertTeamRouter, HandoffTransport, SharedWorkspace, and
Expert wrapper. Frontend includes ExpertTeamView, ExpertMessage,
PlanVisualization, team store, and WS event handlers.
Code review fixes: sentinel-based close, per-phase retry, name validation,
Vue component integration, teamState dedup, Redis reset, plan reassign,
event_type validation, hmac timing-safe compare, message dedup,
reactive updatePhases, O(1) phase lookup, iterative DFS, bounded Queue.
232 unit tests passing.
2026-06-14 22:20:14 +08:00
chiguyong
baaa7089cd
docs: update README and knowledge graph for gap closure features
...
- README: add dark theme, LLM cache, semantic router, cascade detection, ComputerUseTool, @-mention
- build_kg.py: add 30+ module summaries for new modules
- knowledge-graph.json: rebuild (2496 nodes, 3328 edges)
- fingerprints.json: recalculate 524 file fingerprints
- meta.json: update gitCommitHash and analyzedAt
2026-06-14 16:54:12 +08:00
chiguyong
d9d1b16e59
merge: gap closure sprint — dark theme, @-mention, LocalComputerUse, test coverage, review fixes
2026-06-14 16:35:21 +08:00
chiguyong
94c4c8b887
feat: accumulated frontend enhancements, docs, and static assets
...
- Frontend view updates (ChatView, EvolutionView, SkillsView, etc.)
- Updated portal routes and chat store
- New frontend components (FilePreview, ToolCallCard, IconNav)
- Updated static build assets
- New test files (merged router, parallel tools, ReWOO fallback)
- Documentation and brainstorm files
- Codegraph and understand-anything artifacts
2026-06-14 16:35:01 +08:00
chiguyong
6e0e081f23
feat: gap closure sprint — dark theme, @-mention, LocalComputerUse, tests
...
P0: U4 UsageStore + U5 CascadeStateStore independent test files (57 tests)
P1: Dark theme — tokens.css [data-theme="dark"] + theme.ts Pinia store
+ TopNav toggle button + App.vue dynamic Ant Design theme
P1: @-mention — MentionDropdown.vue + /skills/mention-suggest API
+ ChatInput integration with @ detection
P2: LocalComputerUseSession — pyautogui + screencapture (replaces Docker stub)
P2: Integration tests for gap closure (12 tests)
Fix: create_cascade_state_store() now passes session_ttl to InMemory fallback
2026-06-14 16:16:50 +08:00
chiguyong
0ccef7be5c
feat: P0 production hardening — LLM cache, semantic routing, state persistence
...
U1: LLM Cache Core (exact + semantic match, InMemory + Redis backends)
U2: Cache integration into LLMGateway with CacheConfig
U3: Semantic Router as Layer 1.5 in CostAwareRouter
U4: UsageStore persistence (Redis Hash + InMemory fallback)
U5: CascadeStateStore persistence (Redis INCR + InMemory TTL)
U6: EvolutionStore interface unification (Protocol + PostgreSQL backend)
U7: Configuration integration + E2E tests
Code review fixes:
- P0: date iteration bug (day>=28), semantic router index never built,
Redis connection leak (per-call → persistent pool)
- P1: cache degradation recovery, semantic_search degradation,
double miss counting, asyncio.Lock for PG init, LIMIT on queries,
__import__ anti-pattern → _utcnow()
- P2: InMemory TTL cleanup, embedding preservation on put(),
data TTL = max(exact_ttl, semantic_ttl)
2026-06-14 15:16:00 +08:00
chiguyong
4707fd00ba
Merge feat/tauri-desktop-client: Tauri 2.x desktop client
2026-06-14 10:06:19 +08:00
chiguyong
bc43b962c7
feat(client): add Tauri 2.x desktop client with sidecar process management
...
- Tauri 2.x project scaffold with dual-window (splash + main)
- Rust sidecar management: spawn/kill Python backend, port discovery via stdout
- CancellationToken for graceful task cancellation on exit
- System tray with show/quit, close-to-tray behavior
- Frontend: dynamic baseURL, SplashScreen, TitleBar, Tauri IPC adapter
- PyInstaller build scripts for cross-platform sidecar packaging
- GitHub Actions CI for Win/Mac/Linux release builds
- CSP security policy, proper capabilities configuration
2026-06-14 10:06:12 +08:00
chiguyong
321c2333d6
fix(monitor): 对话完成后自动记录经验到监控面板
...
- portal.py: 对话完成后调用 _record_experience 记录经验到 dashboard
- portal.py: 修复 routing_result.skill → routing_result.skill_name 属性名
- 经验记录触发 experience_added 和 metrics_updated 事件广播
- metrics API 从 _experiences 内存列表计算 total_tasks/success_rate/avg_duration
2026-06-13 11:50:57 +08:00
chiguyong
6945b78c55
fix(server): 自动发现 CWD 下的 agentkit.yaml 和 .env
...
之前 create_app 只在 AGENTKIT_CONFIG_PATH 环境变量设置时才加载配置和 .env,
导致 uvicorn 直接启动时 LLM provider 未注册(No provider registered)。
现在当 AGENTKIT_CONFIG_PATH 未设置时,自动查找 CWD 下的 agentkit.yaml,
并加载同目录的 .env 文件注入环境变量。
2026-06-13 11:40:26 +08:00
chiguyong
905c1f6b18
fix(gui): 修复对话无skill时无法聊天、空对话列表、输入框清空、监控数据
...
- portal.py: 移除 all_skills 空检查,无 skill 时 fallback 到直接 LLM 对话
- portal.py: general 路径 agent 为 None 时也 fallback 到直接对话
- ChatView.vue: onMounted 自动创建默认对话
- ChatInput.vue: nextTick 清空输入框
- evolution_dashboard.py: usage API 从 LLMGateway.UsageTracker 读取真实数据
- DashboardOverview.vue: 活跃 agent 从 capabilities API 获取
2026-06-13 11:32:45 +08:00
chiguyong
d02a6d5200
fix(gui): 修复空对话列表、默认对话、输入框清空、监控数据
...
- portal.py: 延迟创建对话到第一条消息,避免空对话出现在历史列表
- portal.py: 添加用户消息到 ConversationStore 以支持历史注入
- ChatView.vue: onMounted 自动创建默认对话,无需手动点击新建
- ChatInput.vue: 输入框清空改用 nextTick 确保 Ant Design Vue v-model 同步
- evolution_dashboard.py: usage API 从 LLMGateway.UsageTracker 读取真实 token 数据
- DashboardOverview.vue: 活跃 agent 数从 capabilities API 获取
2026-06-13 11:11:00 +08:00
chiguyong
4c53dbaaeb
fix(gui): 修复对话上下文注入、输入框清空、对齐及工作流空状态居中
...
- portal.py: greeting/general 路径注入最近 20 条历史消息,解决对话记忆不连贯
- ChatInput.vue: 移除 disabled 提前 return,确保提交后清空输入框
- ChatInput.vue: textarea 设置 min-height: 40px,与按钮对齐
- WorkflowView.vue: 空状态 a-empty 垂直水平居中
- chat.ts: sendWsMessage 先检查 WS 状态避免重复消息
- types.ts: WsServerMessage 类型匹配后端嵌套 data 结构
- vite.config.ts: 代理添加 ws: true 支持 WebSocket
- portal.py/terminal.py: WebSocket accept 顺序修复
2026-06-13 10:48:06 +08:00
chiguyong
b89da90fd9
Merge branch 'refactor/gui-redesign': Agent-First GUI redesign with Design Token system
...
- U1: Design Token system (tokens.css + theme.ts)
- U2: Four-quadrant Agent-First layout with TopNav
- U3: Chat panel refactor (markdown-it + ToolCallIndicator)
- U4: Code/preview panel (CodeDiffViewer + FileTree)
- U5: Terminal panel refactor (One Dark Pro + Ant Design Modal)
- U6: Evolution panel simplification + grouped settings
- U7: Transitions + responsive breakpoints
- Color migration: 15+ components migrated to Design Tokens
- Code review fixes: ARIA a11y, XSS protection, touch/keyboard support,
path traversal protection, lazy-loading, ANSI span balance
2026-06-13 10:08:37 +08:00
chiguyong
af50cc7fe1
fix(api): support absolute paths in BaseApiClient.request()
...
When path starts with /api/, treat it as an absolute URL instead of
prepending baseUrl. This fixes installSkill/uninstallSkill URL
concatenation that produced /api/v1/skill-management/api/v1/skills/...
2026-06-13 10:03:56 +08:00
chiguyong
5b63214bc1
fix(gui): address all P1 code review findings
...
- AgentLayout: lazy-load views via defineAsyncComponent, wire route meta to quadrant tab switching
- QuadrantPanel: ARIA tablist/tab/tabpanel roles, keyboard nav, v-if via computed, expose setActiveTab
- SplitPane: touch support, keyboard resize, ARIA separator role
- ChatMessage: DOMPurify sanitization, anchor toolCalls regex to line start
- TerminalEmulator: fix ANSI span imbalance with depth tracking
- theme.ts: read CSS custom properties at runtime via readToken()
- responsive.css: fix bottom-right auto-collapse selector
- app.py: path traversal protection, exclude docs/openapi.json
- skills.ts: use BaseApiClient.request() for installSkill/uninstallSkill
2026-06-13 10:01:26 +08:00
chiguyong
f4e454b727
fix(review): address code review findings
...
- QuadrantPanel: persist activeTab and collapsed state to localStorage via watch
- TopNav: remove v-if="false" dead code for TaskSelector, remove unused ASelect import
- SplitPane: add null guard before containerRef.value access in onMouseDown
- Router: fix /agent/code route loading ChatView instead of WorkflowView
- Router: add default redirect for /legacy to /legacy/chat
2026-06-13 09:50:56 +08:00
chiguyong
14f548b56a
docs: mark GUI redesign plan as completed
...
All 7 implementation units (U1-U7) plus color migration audit are done.
2026-06-13 03:01:31 +08:00
chiguyong
c60e0b9971
refactor(gui): migrate hardcoded colors to Design Tokens across all components
...
- Migrate 15+ component files from Ant Design default colors to Design Token system
- Workflow nodes (Skill/Parallel/Condition/Approval): #1890ff→var(--color-primary), #52c41a→var(--color-success), etc.
- Evolution panels (Dashboard/Metrics/Usage/Timeline/Pitfall/PathOptimizer): all CSS colors→var() tokens
- Skills components (SkillCard/SkillDetail): link/text colors→Design Tokens
- KB component (SearchTest): bg/border/text colors→Design Tokens
- JS/inline styles use new palette hex values (#7c3aed primary, #10b981 success, #f59e0b warning)
- Provider brand colors (OpenAI/Anthropic/Azure/DeepSeek/Zhipu) preserved as-is
- Remaining ~27 hex values are in JS/template contexts where CSS vars cannot be used
2026-06-13 03:01:13 +08:00
chiguyong
4d051c2f25
feat(gui): add transitions, responsive breakpoints and bug fixes (U7)
...
- Add transitions.css with fade, slide, collapse, scale, stagger-list, skeleton-pulse, pulse-dot animations
- Add responsive.css with breakpoints (≥1440px full, 1280-1439px compact, <1280px prompt)
- Add small-screen prompt in AgentLayout with DesktopOutlined icon
- Fix SPA serving in app.py for Vue build output
- Fix TypeScript errors in kb.ts, skills.ts, workflow.ts, FlowCanvas.vue, SideNav.vue
- Fix unused imports in ExperienceTimeline, PathOptimizerPanel, PitfallPanel
2026-06-13 02:47:51 +08:00
chiguyong
db216a5cc4
feat(gui): streamline evolution panel and group settings (U6)
...
- EvolutionView: simplify from 6 sub-panels to 3 tabs (概览+指标, 经验+坑点, 用量)
- SettingsView: group into 4 tabs (LLM, 技能, 知识库, 系统), each with independent save
- SkillsView: replace hardcoded colors with Design Tokens
- All three views: replace hardcoded colors with Design Token references
2026-06-13 02:43:41 +08:00
chiguyong
3dc5c68135
feat(gui): refactor terminal panel with One Dark Pro theme and Ant Design Modal (U5)
...
- TerminalView: replace native HTML confirmation with Ant Design Modal,
make command history sidebar collapsible (default collapsed)
- TerminalEmulator: use One Dark Pro CSS variables for ANSI colors,
replace all hardcoded colors with Design Tokens
- CommandHistory: replace all hardcoded colors with Design Tokens
2026-06-13 02:41:46 +08:00
chiguyong
79a400afe8
feat(gui): add code/preview panel with diff viewer and file tree (U4)
...
- Create CodeDiffViewer.vue with line-level diff highlighting
- Create FileTree.vue with status badges (added/modified/deleted)
- Update WorkflowView.vue: replace hardcoded colors with Design Tokens
- Update KnowledgeBaseView.vue: replace hardcoded colors with Design Tokens
2026-06-13 02:40:14 +08:00
chiguyong
6d5a08cb0c
feat(gui): refactor chat panel with Markdown rendering and tool indicators (U3)
...
- ChatMessage: replace v-html with markdown-it, add ToolCallIndicator
- ChatInput: add ContextPill support for file/skill context
- ChatSidebar: make collapsible (default collapsed)
- Create ToolCallIndicator.vue with color-coded tool type badges
- Create ContextPill.vue for context references
- Replace all hardcoded colors with Design Token references
- Install markdown-it for Markdown rendering
2026-06-13 02:38:37 +08:00
chiguyong
9273612a5b
feat(gui): add four-quadrant Agent-First layout with top navigation (U2)
...
- Create AgentLayout.vue with CSS Grid four-quadrant layout
- Create SplitPane.vue with draggable divider and localStorage persistence
- Create TopNav.vue with logo, status indicator, and settings entry
- Create QuadrantPanel.vue with tab switching and collapse support
- Restructure router: /agent as main route, legacy routes redirect
- App.vue now uses router-view for layout switching
2026-06-13 02:35:28 +08:00
chiguyong
2988d3768e
feat(gui): add Design Token system and theme configuration (U1)
...
- Create tokens.css with CSS custom properties for colors, spacing,
radius, fonts, shadows, transitions, and code theme
- Create theme.ts mapping tokens to Ant Design Vue ConfigProvider
- Create styles/index.ts as unified entry point
- Inject theme into App.vue ConfigProvider
- Import styles in main.ts
Primary color unified to #7c3aed (purple gradient brand color).
2026-06-13 02:32:29 +08:00
chiguyong
09698d7a06
feat: frontend productization with code review fixes
...
- Workflow: visual canvas, undo/redo, drag-and-drop, real-time execution WebSocket
- Evolution: dashboard, ECharts metrics, experience timeline, pitfall warnings, usage panel
- KB: source CRUD, document upload, search test
- Terminal: interactive PTY WebSocket, whitelist security
- Security: hmac.compare_digest, API key auth on all endpoints, whitelist bypass fix
- Fixes: ECharts async init, WebSocket intentional disconnect, TOCTOU race, Pydantic models
2026-06-13 01:29:58 +08:00
chiguyong
3c6c41c140
merge: feat/chat-response-speed-optimization into main
2026-06-12 22:18:40 +08:00
chiguyong
5ef08a3b30
fix(review): comprehensive P0-P2 code review fixes
2026-06-12 22:18:25 +08:00
chiguyong
2e55aae775
fix(review): address code review findings for speed optimization
...
- P0: Rename WAL buffer to pending buffer, add crash-loss warning
- P1: Fix keyword substring false matches with word-boundary regex
- P1: Pass connection pool params in _build_llm_config
- P1: Change parallel_tools default to False (safer default)
- P1: Add classifier value validation in CostAwareRouter
- P2: Replace __import__ with proper datetime import
- P2: Add max_buffer_size enforcement in AsyncWriteQueue
2026-06-12 13:21:44 +08:00
chiguyong
a36bc3d1c1
feat: optimize chat response speed for sub-1s first token latency
...
- Add HeuristicClassifier to replace LLM quick_classify with zero-cost
local heuristic (keyword/length/code-pattern scoring), gated by
router.classifier config (default: heuristic)
- Add parallel tool execution in ReActEngine via asyncio.gather for
multiple independent tool_calls, gated by parallel_tools param
- Add AsyncWriteQueue for non-blocking session persistence with WAL
buffer, gated by async_writes param on SessionManager
- Add httpx.Limits connection pool config to all LLM providers
- Add router config section to ServerConfig and agentkit.yaml
- All optimizations have config switches for safe rollback
2026-06-12 13:15:06 +08:00
chiguyong
d3b792a9ec
merge: feat/pipeline-adversarial-loop into main
...
Pipeline-level adversarial loop (Worker ↔ Verifier) implementation:
- Schema: ReviewIssue, ReviewFeedback, AdversarialState models
- Engine: adversarial execution, feedback injection, escalation
- Config: code_reviewer skill + coding_harness pipeline
- Tests: 19 unit + 5 integration, all passing
- Code review fixes: 2 Critical + 5 Major issues resolved
2026-06-12 10:02:47 +08:00
chiguyong
8c365486e2
fix(pipeline): address code review findings for adversarial loop
...
Critical:
- C1: Add verifier_timeout_seconds for independent Verifier timeout
- C2: Verifier parse failure raises RuntimeError instead of dead-loop
Major:
- M1: Inject previous_output into Worker retry context
- M2: Add Pydantic ge/le constraint on ReviewFeedback.score
- M3: Use Literal type for feedback_mode enum validation
- M4: Use Literal types for ReviewIssue severity and category
- M5: Merge error messages when escalation agent also fails
Tests: 8 new test cases added (19 total), all passing
2026-06-12 10:02:37 +08:00
chiguyong
ddc735b078
test(pipeline): add coding harness integration tests
...
5 passing tests covering:
- Pipeline config loading and validation
- Review stage adversarial config verification
- Stage dependencies validation
- Code reviewer skill config and output schema
3 skipped tests (complex mock sequencing covered by unit tests)
2026-06-12 09:42:21 +08:00
chiguyong
3392413614
test(pipeline): add adversarial loop unit tests
...
11 test cases covering:
- PipelineSchemaAdversarial (4): verifier fields, backward compat, serialization, state tracking
- AdversarialExecution (3): no verifier passthrough, first round pass, max rounds exhausted
- FeedbackContext (3): structured+natural, structured, natural modes
- Escalation (1): no escalation configured
2026-06-12 09:40:19 +08:00