Commit Graph

283 Commits

Author SHA1 Message Date
zl-q c9a2c75c35 fix: 增强云端 Supabase 认证可靠性,修复验证码失败可观测性
- JWT 验证器新增 apikey 参数,支持云端 JWKS 认证头
- Auth 网关新增上游超时/错误映射为 503 状态码
- Auth 网关新增重定向 URL 校验,阻断开放重定向风险
- 用户依赖传递 anon_key 给 JWT 验证器
- 新增相关单元测试覆盖 JWKS 头、503 映射、重定向校验
- 新增实现计划文档
2026-03-10 09:11:27 +08:00
qzl 6fe2e7b6c3 refactor: 迁移本地 Supabase 到云端,使用 JWKS 进行 JWT 验证
- 新增 JwtVerifier 支持 RS256 + JWKS 验证
- 简化 docker-compose,删除本地 Supabase 服务(kong/auth/storage等)
- 删除冗余的 Supabase 配置文件(volumes目录)
- 适配测试用例以支持新配置方式
- 更新运行时文档和迁移计划
2026-03-09 18:03:04 +08:00
zl-q 3ac09475ad feat(agent): add voice input capability and standardize tool naming
- Add voice recording with transcribe endpoint (ASR) for multimodal input
- Android: add RECORD_AUDIO and INTERNET permissions
- Refactor tool naming: frontend tools use 'front.' prefix, backend tools use 'back.'
- Migrate calendar tools: create_calendar_event -> back.mutate/list/delete events
- Add calendar_event_list.v1 and calendar_operation.v1 UI card types
- Update all Flutter and Python tests to match new tool naming conventions
- Add record package dependency for voice recording
2026-03-09 00:10:09 +08:00
zl-q 6c83e35a69 merge: integrate feature/agent-live-e2e into dev 2026-03-08 22:44:21 +08:00
zl-q 2980213a5b fix(agent): stabilize live e2e tool execution and loop isolation 2026-03-08 22:41:59 +08:00
zl-q 14508c52f6 merge: integrate feature/tasks-8-9-multimodal-asr into dev 2026-03-08 17:35:53 +08:00
zl-q 1060503a2d feat(agent): support multimodal intent input and ASR transcribe endpoint 2026-03-08 17:34:28 +08:00
zl-q 44a0e15950 docs(agent): mark architecture implementation plan completed 2026-03-08 17:07:49 +08:00
zl-q daa1c86d02 feat(agent): complete task4-6 tool result persistence flow 2026-03-08 17:07:09 +08:00
zl-q 5ada60e834 docs(agent): add Task2/Task3 architecture and implementation artifacts 2026-03-08 16:03:02 +08:00
zl-q 8a23018b6d feat(agent): migrate to native CrewAI tool loop and async resume enqueue 2026-03-08 16:01:16 +08:00
zl-q 120df903d2 feat: AG-UI 协议对齐与路由导航功能
- 前端: 添加 SSE 流式支持、stateSnapshot 事件、路由导航工具
- 前端: 实现工具调用审批流程,支持 pending 状态展示
- 后端: Agent 状态管理与会话持久化相关重构
- 文档: 新增 agent-agui-full-alignance 设计文档
- 测试: 补充相关单元测试和集成测试
2026-03-07 17:30:20 +08:00
zl-q ec33bb0cee refactor: 统一认证端点并删除冗余 profile 模块
- 合并 auth 端点: /verifications/verify → /verify, /verifications/resend → /resend
- 整合密码重置到 /verify 端点 (type=recovery)
- 移除未使用的 /auth/users 端点
- 添加 redirect URL 白名单验证 (site_url + additional_redirect_urls)
- 限流改用 Redis + IP 标识,替代内存锁
- 删除 v1/profile 死代码模块
- 更新前端 auth_api 适配新端点
- 添加 supabase site_url 和 additional_redirect_urls 配置
2026-03-07 14:55:00 +08:00
qzl 1f6cb1a48f refactor: 删除未使用的 api_external_url 配置并完善 runtime 文档
- 删除 SupabaseSettings 中未使用的 api_external_url computed field
- 更新测试文件移除相关测试用例
- backend/AGENTS.md 新增软删除设计规则
- runtime-database.md 更新表结构(删除 user_agents,表名更新为 agent_chat_sessions/messages,system_agents)
- runtime-frontend.md 补充路由结构和功能模块说明
- 根 AGENTS.md 清理过时技能路径引用
2026-03-06 18:25:18 +08:00
qzl 105e7849fe refactor: Web 服务器从 gunicorn 迁移到 uvicorn 2026-03-06 17:55:01 +08:00
qzl b6087fd195 chore: checkpoint current backend/runtime changes 2026-03-06 17:28:17 +08:00
qzl 2c59fe5ee2 refactor: 统一 Redis 连接管理,改用 RedisService
- App 启动时初始化 RedisService,关闭时释放连接
- Celery worker 通过 worker_process_init 钩子初始化 Redis
- Agent 端点改用 RedisService 替代直接创建连接
- Celery task 改为 async def,使用统一连接
- 删除无用的 infra 模块和 core/http/models
- 日志脱敏,不记录 Redis 密码
- 初始化失败时 fail-fast
- 异常发布添加二级保护
2026-03-06 16:11:43 +08:00
qzl c5ccfc4b88 feat(agent): add redis short-term user context cache and align tests 2026-03-06 12:02:10 +08:00
zl-q fb8f21bcf3 docs: update user-agent-context-profile-settings-crewai-flow design v2 2026-03-06 09:16:10 +08:00
qzl db158de39c feat(agent): 实现 Agent Runtime LLM 配置与消息元数据结构化支持 2026-03-05 18:25:51 +08:00
qzl c07d339a5f docs(plan): add closed-loop implementation plan 2026-03-05 15:43:58 +08:00
qzl 2c369bb094 Merge branch 'feature/agent-runtime-closed-loop' into dev 2026-03-05 15:35:56 +08:00
qzl b486e78ff3 feat(agent): complete closed-loop runtime and pricing fallback 2026-03-05 15:34:37 +08:00
qzl b02a322bf3 refactor: 移除 crewai agent 架构相关代码并更新 LLM 配置 2026-03-04 11:37:09 +08:00
qzl 87399f74c8 fix(alembic): update imports for agent architecture changes 2026-03-04 11:12:41 +08:00
qzl 5bbfec52ab refactor(config): rename user_agent_catalog to system_agents 2026-03-04 11:07:49 +08:00
qzl 2d410e8e84 feat(db): add migration to simplify agent architecture
- Add migration to delete user_agents table and memories.agent_id
- Rename user_agent_catalog to system_agents
- Remove UserAgents model
- Rename UserAgentCatalog to SystemAgents model
2026-03-04 11:04:13 +08:00
qzl 7cc333a862 docs: add agent architecture simplification implementation plan 2026-03-04 10:49:59 +08:00
qzl 5599477e2a docs: add agent architecture simplification design 2026-03-04 10:47:37 +08:00
qzl 80cbb3512f refactor: 切换到 litellm,删除未使用的代码
- 添加 litellm 依赖,统一 LLM 调用层
- 新增 litellm_client.py 支持多厂商
- 更新 llm_catalog.yaml 添加 litellm_model 映射
- 删除旧的 cost_tracker.py (litellm 内置 cost 追踪)
- 删除未使用的 multimodal.py 和 storage_adapter.py
- 删除空文件 crewai/__init__.py, tools/__init__.py
- 更新测试以适配新代码
2026-03-03 17:52:34 +08:00
qzl a4f684466c chore: 清理opencode技能文件、旧设计文档并更新配置文档 2026-03-03 17:29:01 +08:00
qzl 30a4a1af5d fix(agent): polish interrupt-resume flow for merge readiness 2026-03-03 17:26:04 +08:00
qzl 7be8669144 refactor(agent): extract magic numbers to constants 2026-03-03 16:28:12 +08:00
qzl 9aefb76c9e fix(agent): address CRITICAL/HIGH security and validation issues
- Fix SSE JSON injection: use json.dumps for safe serialization
- Add tool validation to dispatcher with allowlist
- Add field validation to tool_registry with proper error handling
- Add run_id consistency check (409 on mismatch)
- Add RunAgentInput constraints: min_length, extra=forbid
- Fix crewai_flow: use Field(default_factory), prefix unused params
2026-03-03 16:25:43 +08:00
qzl ff85c1ab08 test(agent): update tool registry test to match security policy 2026-03-03 16:02:32 +08:00
qzl f7df9d679f fix(agent): enforce tool security checks and audit logging 2026-03-03 16:01:04 +08:00
qzl 6a4c98bb63 feat(agent): close interrupt resume tool result loop 2026-03-03 16:00:11 +08:00
qzl 5bac134506 feat(agent): add sse run/resume endpoints with auth 2026-03-03 15:55:38 +08:00
qzl c76d4d415f fix(agent): serialize crewai flow stages and remove nested asyncio.run 2026-03-03 15:49:03 +08:00
qzl 3a64410641 feat(agent): add interrupt-aware tool dispatcher 2026-03-03 15:44:41 +08:00
qzl dedd23fdf9 fix(agent): enforce idempotent resume transition 2026-03-03 15:43:10 +08:00
qzl cff1436bc6 feat(agent): persist pending tool call in session snapshot 2026-03-03 15:39:56 +08:00
qzl e03923e593 feat(agent): add tool registry domain validation 2026-03-03 15:30:53 +08:00
qzl 17e6de177c refactor(agent): align chat schema with full run agent input 2026-03-03 15:29:46 +08:00
qzl 5e169251fe refactor(apps): simplify API layer by removing redundant wrapper classes
- Remove ApiClientWrapper and MockApiClientWrapper
- Simplify IApiClient interface
- Update dependency injection configuration
- Optimize calendar service and AG-UI chat models
2026-03-03 10:12:46 +08:00
qzl 9b9b8fcbdd Merge branch 'feature/calendar-create-event' into dev
# Conflicts:
#	apps/lib/features/calendar/ui/screens/calendar_event_detail_screen.dart
2026-03-02 17:29:21 +08:00
qzl 6fb527eb7b fix: 修复日历事件详情页布局问题并添加底部输入框
- 修复 Row 中 Flexible 在无界宽度约束下的布局崩溃问题
- 用 Expanded 包裹内层 Row 提供有界宽度约束
- 添加底部输入框组件(+按钮、输入框、麦克风图标)
- 实现事件详情页动态数据展示
- 添加编辑和删除事件功能
- 添加事件不存在时的错误页面
2026-03-02 17:28:21 +08:00
qzl ca1ce3d84a docs: 添加 ag-ui 和 crewai 项目 skills 及更新文档 2026-03-02 17:02:09 +08:00
qzl 6fdbc34526 docs(backlog): update TRIGGER-001 and TOKEN-001 status to resolved 2026-03-02 16:49:45 +08:00
qzl 05f972e98a refactor(apps): migrate hardcoded colors to AppColors tokens
- Replace Color(0xFFF8FAFC) with AppColors.surfaceSecondary (11 uses)
- Replace Color(0xFFF8FAFF) with AppColors.surfaceTertiary (9 uses)
- Replace Color(0xFFE2E8F0) with AppColors.borderSecondary (5 uses)
- Replace Color(0xFFDCE5F4) with AppColors.borderTertiary (5 uses)
- Replace Color(0xFFCFE1FB) with AppColors.borderQuaternary (5 uses)
- Replace Color(0xFFF59E0B) with AppColors.warning (4 uses)
- Replace Color(0xFFEAF3FF) with AppColors.surfaceInfo (4 uses)
- Replace Color(0xFF10B981) with AppColors.success (4 uses)
- Replace Color(0xFFEF4444) with AppColors.error (3 uses)
- Replace Color(0xFFF3F7FF) with AppColors.surfaceInfoLight (3 uses)

Files migrated:
- settings_screen.dart (7 colors migrated)
- contacts_screen.dart (3 colors migrated)
- calendar_event_detail_screen.dart (10 colors migrated)
- features_screen.dart (3 colors migrated)
- toast_type_config.dart (3 colors migrated)
- memory_screen.dart (4 colors migrated)
- account_screen.dart (3 colors migrated)
- add_contact_screen.dart (2 colors migrated)

Total: 37 hardcoded colors replaced with design tokens

Verification:
- flutter analyze: passed
- flutter test: passed
2026-03-02 16:34:33 +08:00