Split reset_agent_config into two independent methods for getting and resetting model parameters
Add functionality to read quota configuration from environment variables to the default free tier
Add a public subscription plan list endpoint that can be accessed without authentication. Enhance the returned subscription plan information fields, including multi-language support and default free plan fallback logic. Additionally, implement automatic model binding for the knowledge base service.
* release/v0.3.0: (44 commits)
Revert "fix(web): prompt editor"
fix(web): prompt editor
fix(prompt-optimizer): handle escaped quotes in JSON parsing
fix(custom-tools): remove parameter coercion in custom tool base class
fix(core): conditionally apply thinking parameters based on model support
refactor(custom-tools): coerce query and request body parameters to schema types
fix(prompt-optimizer): support list content type in prompt optimizer
refactor(memory): unify user placeholder names and harden alias sync logic
fix(rag): replace semicolon separators with newlines in Excel parser output
fix(web): Compatible with Windows whitespace
fix(memory): make PgSQL the single source of truth for user entity aliases
refactor(rag): simplify Excel parsing logic and remove redundant chunk_token_num assignment
fix(web): Hide error message when workflow node error message equals empty string
ci(wechat-notify): add Sourcery summary extraction with Qwen fallback
fix(http-request,embedding,naive): tighten form-data validation, reduce truncation length to 8000, and disable chunking for Excel
fix(web): adjust the value of End User Name
fix(http-request): support array and file variables in form-data files upload
fix(web): change http body key name
fix(web): header user name
fix(web): calculate using the filtered breadcrumbs length
...
# Conflicts:
# web/src/views/UserMemoryDetail/Neo4j.tsx
# web/src/views/UserMemoryDetail/components/EndUserProfile.tsx
# web/src/views/UserMemoryDetail/types.ts
- Add `default_free_plan.py` to define the configuration for the Community Free Plan.
- Refactor `quota_stub.py` as a unified entry point, delegating checks to `core/quota_manager`.
- Implement core logic in `quota_manager.py` to support retrieving quotas from the premium module or configuration files.
- Update `tenant_subscription_controller` to return Community Free Plan information.
feat(app): support file metadata in chat messages and DSL app overwrite
- Extended chat message file objects with `name`, `size`, and `file_type` fields across app_chat_service and workflow_service
- Added ability to overwrite existing app configurations via DSL import in app_dsl_service, including type validation and config update logic for AgentConfig, MultiAgentConfig, and WorkflowConfig
- Trigger opening statement on new conversation in run/run_stream
- Fix /opening endpoint to support workflow app type
- Fix features field missing in workflow config release snapshot
- Knowledge node returns citations alongside chunks
- Aggregate citations from all knowledge nodes in result builder
- Filter citations based on features.citation.enabled switch
- Fix WorkflowConfigCreate circular import in app_schema
- Remove unused TaskStatusResponse import from memory_api_schema
- Add _sanitize_task_result() helper function to convert non-serializable types (UUID, datetime) to strings
- Update get_write_task_status endpoint to use sanitization instead of TaskStatusResponse validation
- Update get_read_task_status endpoint to use sanitization instead of TaskStatusResponse validation
- Ensures Celery task results are properly JSON-serializable before returning to clients
- Rename endpoints from write_api_service/read_api_service to write/read for clarity
- Add async task-based endpoints (/write, /read) that dispatch to Celery with fair locking
- Add task status polling endpoints (/write/status, /read/status) to check async operation results
- Add synchronous endpoints (/write/sync, /read/sync) for blocking operations with direct results
- Introduce TaskStatusResponse schema for task status polling responses
- Add MemoryWriteSyncResponse and MemoryReadSyncResponse schemas for sync operations
- Implement write_memory_sync and read_memory_sync methods in MemoryAPIService
- Remove await from async service calls in task-based endpoints (now handled by Celery)
- Add Query parameter import for task_id in status endpoints
- Update docstrings to clarify async vs sync behavior and task polling workflow
- Integrate task_service for retrieving Celery task results
- Create new memory_config_api_controller.py for dedicated memory configuration management
- Add /end_user/info GET endpoint to retrieve end user information (aliases, metadata)
- Add /end_user/info/update POST endpoint to update end user details
- Move /memory/configs endpoint from memory_api_controller to memory_config_api_controller
- Extract _get_current_user helper function to build user context from API key auth
- Support optional app_id parameter in end user creation with UUID validation
- Update service controller imports with alphabetical ordering and multi-line formatting
- Register memory_config_api_controller router in service module initialization
- Refactor memory_api_controller imports for consistency and clarity