feat(config): improve rollback transparency and post-restart UX - #85
Open
Teingi wants to merge 39 commits into
Open
feat(config): improve rollback transparency and post-restart UX#85Teingi wants to merge 39 commits into
Teingi wants to merge 39 commits into
Conversation
Add the new design diagram to both English and Chinese README files near the top so visitors can quickly see the current proposed architecture. Co-authored-by: Cursor <cursoragent@cursor.com>
Update uv.lock to include the new dashscope-related dependency graph and keep unit test formatting aligned with the current code style. Co-authored-by: Cursor <cursoragent@cursor.com>
Synchronize Chinese and English README structure and examples, and remove explicit record_utility usage from public-facing learning-loop docs in favor of runtime auto-attribution plus optional feedback. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
…and plan Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
…ager Append-only rollback creates a new version with the target's payload; redo re-applies the version a rollback reverted. diff/blame/verify/status provide introspection and tamper-detection over the versioned store. Co-Authored-By: Claude <noreply@anthropic.com>
Render an effective config dict into the .env and config.json files the existing loaders (ContextSeekSettings, load_runtime_config) already read. dry_run_validate constructs both loaders from the effective payload before writing (env mutation guarded by try/finally; RuntimeConfig via temp file). detect_drift compares on-disk sha256 against expected hashes. _extra_env keys pass through verbatim so migration rewrites never drop untracked vars. Co-Authored-By: Claude <noreply@anthropic.com>
Adds ConfigManager.apply(materializer) which delegates to materializer.materialize(current.effective). The Materializer already dry-run-validates and raises ValueError on invalid config without writing files, so a failed apply leaves previously materialized files intact. Co-Authored-By: Claude <noreply@anthropic.com>
Migrated from the agentseek-contextseek contrib's reflective env-aliasing into a declarative, testable mapping table with provider detection. - AGENTSEEK_MAPPING: agentseek key → (dotted path, transform fn, provider hint) - PROVIDER_CREDS / PROVIDER_CLASS_PATH: provider credential + class-path tables - detect_provider / strip_provider_prefix: provider inference helpers - project_agentseek_env: projects agentseek env into a contextseek projected payload only when contextseek LLM is enabled; returns stable source_ref hash Co-Authored-By: Claude <noreply@anthropic.com>
Wire a `config` subcommand group into the main CLI: registration in build_parser and an early dispatch in run_cli (before ContextSeekSettings) so config commands work without a storage backend. Co-Authored-By: Claude <noreply@anthropic.com>
Adds `import_existing` (builds a native payload from .env/config.json, reflecting env vars back to section.field paths and parking untracked keys under `_extra_env`) and `migrate_into` (commits v1 with origin=migration, no-op when the store is non-empty). Wires the `config import` subcommand into cli.py. Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Reroute GET/PUT /config through ConfigManager via register_config_routes, extract _build_config_snapshot helper, and add version-management endpoints (history, version, diff, blame, rollback, redo, status, verify, ingest). Preserve dashboard embedding-provider validation UX in the rerouted PUT. Co-Authored-By: Claude <noreply@anthropic.com>
…utes Co-Authored-By: Claude <noreply@anthropic.com>
…ngest Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
…ates Resolve merge conflicts in CLI and HTTP server while preserving both config-routing and plug runtime command paths. Co-authored-by: Cursor <cursoragent@cursor.com>
Expose rollback targets end-to-end and surface post-rollback diffs/restart state so users can quickly verify what changed and when services are back online. This also closes remaining i18n gaps in config history and related panels for a consistent localized UX. Co-authored-by: Cursor <cursoragent@cursor.com>
…t collection Reintroduce desktop restart scheduling in the versioned /config update path so desktop runtime behavior matches existing server expectations. Also skip config HTTP tests when fastapi is not installed to prevent import-time failures in minimal test environments. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
rollback_target_version_idin config version metadata and HTTP responses.target -> rollback), and making rollback target versions clickable for direct navigation.Test plan
pytest tests/unit_tests/test_config_manager.py tests/unit_tests/test_config_http.pycd dashboard && npm run buildNotes