ltcai 4.1.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/README.md +33 -24
  2. package/docs/CHANGELOG.md +84 -0
  3. package/docs/V4_2_BRAIN_CORE_ARCHITECTURE.md +97 -0
  4. package/docs/V4_2_STORAGE_MIGRATION_REPORT.md +91 -0
  5. package/docs/V4_2_VALIDATION_REPORT.md +89 -0
  6. package/docs/V4_3_PORTABILITY_ARCHITECTURE.md +69 -0
  7. package/docs/V4_3_PRIVACY_AUDIT.md +60 -0
  8. package/docs/V4_3_PRODUCT_HARDENING_REPORT.md +53 -0
  9. package/docs/V4_3_VALIDATION_REPORT.md +58 -0
  10. package/docs/V4_DIGITAL_BRAIN_RECOVERY.md +31 -33
  11. package/frontend/openapi.json +449 -1
  12. package/frontend/src/api/client.ts +10 -0
  13. package/frontend/src/api/openapi.ts +542 -0
  14. package/frontend/src/pages/System.tsx +92 -0
  15. package/kg_schema.py +1 -1
  16. package/knowledge_graph.py +4 -4
  17. package/lattice_brain/__init__.py +70 -0
  18. package/lattice_brain/_kg_common.py +1 -0
  19. package/lattice_brain/archive.py +446 -0
  20. package/lattice_brain/context.py +3 -0
  21. package/lattice_brain/conversations.py +3 -0
  22. package/lattice_brain/core.py +82 -0
  23. package/lattice_brain/discovery.py +1 -0
  24. package/lattice_brain/documents.py +1 -0
  25. package/lattice_brain/embeddings.py +82 -0
  26. package/lattice_brain/identity.py +13 -0
  27. package/lattice_brain/ingest.py +1 -0
  28. package/lattice_brain/memory.py +3 -0
  29. package/lattice_brain/network.py +1 -0
  30. package/lattice_brain/projection.py +1 -0
  31. package/lattice_brain/provenance.py +1 -0
  32. package/lattice_brain/retrieval.py +1 -0
  33. package/lattice_brain/schema.py +1 -0
  34. package/lattice_brain/storage/__init__.py +22 -0
  35. package/lattice_brain/storage/base.py +72 -0
  36. package/lattice_brain/storage/docker.py +105 -0
  37. package/lattice_brain/storage/factory.py +31 -0
  38. package/lattice_brain/storage/migration.py +190 -0
  39. package/lattice_brain/storage/postgres.py +123 -0
  40. package/lattice_brain/storage/sqlite.py +128 -0
  41. package/lattice_brain/store.py +3 -0
  42. package/lattice_brain/write_master.py +1 -0
  43. package/latticeai/__init__.py +1 -1
  44. package/latticeai/api/admin.py +11 -0
  45. package/latticeai/api/portability.py +127 -1
  46. package/latticeai/app_factory.py +26 -10
  47. package/latticeai/brain/__init__.py +6 -6
  48. package/latticeai/brain/_kg_common.py +1 -1
  49. package/latticeai/brain/network.py +1 -1
  50. package/latticeai/brain/retrieval.py +15 -0
  51. package/latticeai/brain/store.py +22 -6
  52. package/latticeai/core/config.py +9 -1
  53. package/latticeai/core/marketplace.py +1 -1
  54. package/latticeai/core/multi_agent.py +1 -1
  55. package/latticeai/core/product_hardening.py +217 -0
  56. package/latticeai/core/workspace_os.py +1 -1
  57. package/latticeai/services/kg_portability.py +227 -3
  58. package/ltcai_cli.py +2 -1
  59. package/package.json +4 -3
  60. package/scripts/bump_version.py +3 -0
  61. package/scripts/clean_release_artifacts.mjs +27 -0
  62. package/scripts/lint_frontend.mjs +10 -0
  63. package/scripts/migrate_brain_storage.py +53 -0
  64. package/scripts/validate_release_artifacts.py +10 -0
  65. package/scripts/wheel_smoke.py +3 -0
  66. package/src-tauri/Cargo.lock +1 -1
  67. package/src-tauri/Cargo.toml +1 -1
  68. package/src-tauri/src/main.rs +113 -13
  69. package/src-tauri/tauri.conf.json +5 -2
  70. package/static/app/asset-manifest.json +5 -5
  71. package/static/app/assets/{index-CJRAzNnf.js → index-RiJTJliG.js} +3 -3
  72. package/static/app/assets/index-RiJTJliG.js.map +1 -0
  73. package/static/app/assets/index-yZswHE3d.css +2 -0
  74. package/static/app/index.html +2 -2
  75. package/static/app/assets/index-CJRAzNnf.js.map +0 -1
  76. package/static/app/assets/index-CSwBBgf4.css +0 -2
@@ -0,0 +1,58 @@
1
+ # Lattice AI v4.3.0 Validation Report
2
+
3
+ > Status: passed for v4.3.0 RC artifacts on 2026-06-12. No package registry,
4
+ > marketplace, GitHub Release, or tag publish was performed.
5
+
6
+ ## Target Artifacts
7
+
8
+ - `dist/ltcai-4.3.0-py3-none-any.whl`
9
+ - `dist/ltcai-4.3.0.tar.gz`
10
+ - `ltcai-4.3.0.tgz`
11
+ - `dist/ltcai-4.3.0.vsix`
12
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_4.3.0_aarch64.dmg`
13
+
14
+ ## Validation Matrix
15
+
16
+ | Gate | Command | Result |
17
+ | --- | --- | --- |
18
+ | Python compile check | `npm run check:python` | PASS — compiled 238 modules |
19
+ | Ruff | `node scripts/run_python.mjs -m ruff check .` | PASS |
20
+ | Unit tests | `npm run test:unit` | PASS — 598 passed, 2 warnings |
21
+ | Integration tests | `LTCAI_TEST_BASE_URL=http://127.0.0.1:8899 npm run test:integration` | PASS — 9 passed, 1 skipped; backend was started on loopback with tunnel, Telegram, autoload, and network CORS disabled |
22
+ | Frontend lint | `npm run lint:frontend` | PASS — frontend TS, no-CDN scan, OpenAPI path guard; 318 paths |
23
+ | TypeScript typecheck | `npm run typecheck` | PASS — frontend and VS Code extension build |
24
+ | Playwright visual/offline | `npm run test:visual` | PASS — 12 passed |
25
+ | Tauri check | `npm run desktop:tauri:check` | PASS |
26
+ | Tauri build | `npm run release:artifacts` | PASS — built app and DMG through `desktop:tauri:build` |
27
+ | Archive export/import/restore | `tests/unit/test_v42_brain_storage.py`, `tests/unit/test_kg_portability.py` | PASS |
28
+ | Backup/restore corruption | `tests/unit/test_kg_portability.py` | PASS |
29
+ | Signature/version mismatch | `tests/unit/test_v42_brain_storage.py`, `tests/unit/test_t8_brain_network.py` | PASS |
30
+ | Default startup no-network | `tests/unit/test_config.py`, `tests/unit/test_v43_product_hardening.py`, `tests/unit/test_v43_cli_privacy.py`, integration startup banner | PASS |
31
+ | Release artifact validation | `npm run release:validate` | PASS — exact 4.3.0 files found; warning retained for historical artifacts in `dist/` |
32
+ | Wheel smoke | `node scripts/run_python.mjs scripts/wheel_smoke.py --wheel dist/ltcai-4.3.0-py3-none-any.whl` | PASS |
33
+ | npm pack dry-run | `npm pack --dry-run` | PASS |
34
+
35
+ ## Artifact Hashes
36
+
37
+ | Artifact | SHA-256 |
38
+ | --- | --- |
39
+ | `dist/ltcai-4.3.0-py3-none-any.whl` | `c6fb5457bff312ebf694ccf83e53f82124de2b6d83f7f988a4f672b39475cf27` |
40
+ | `dist/ltcai-4.3.0.tar.gz` | `c7830b7db62ea0e6e7de2107f3c0903d17546cf9bfa199596fdb930d372a0aaf` |
41
+ | `dist/ltcai-4.3.0.vsix` | `939a2839f2b5551136df14321fbfe3da0460e35f76be3a1fea5306628c640df0` |
42
+ | `ltcai-4.3.0.tgz` | `e4c94d6331482dd913525c24198d95fef693667a85df88b73548ec281ac1cb16` |
43
+ | `src-tauri/target/release/bundle/dmg/Lattice AI_4.3.0_aarch64.dmg` | `bda5020dd556cd918cc3ef448468f175934e95ab4a7665a37db195faac7fc5fb` |
44
+
45
+ ## Notes
46
+
47
+ - The v4.2 live Docker/pgvector integration test was skipped because no v4.3
48
+ Docker consent was requested for this release-candidate validation pass.
49
+ - A direct `npm run test:integration` without a live server fails by design; the
50
+ passing run above used the documented `LTCAI_TEST_BASE_URL` against an
51
+ isolated loopback server.
52
+ - Tauri/Cargo emitted a dependency future-incompatibility warning for `block
53
+ v0.1.6`; it did not fail `cargo check` or the release build.
54
+
55
+ ## Registry Policy
56
+
57
+ No PyPI, npm Registry, VS Code Marketplace, Open VSX, or other external
58
+ registry publish is part of this RC.
@@ -5,30 +5,28 @@
5
5
  > completed analysis. **Update this file before ending any phase and before any
6
6
  > likely session/context/usage limit.**
7
7
  >
8
- > Last updated: 2026-06-12 — v4.1.0 frontend/desktop rebuild RC; Remaining Gaps remain empty
8
+ > Last updated: 2026-06-12 — v4.3.0 Portability/Product Hardening RC; Remaining Gaps remain empty
9
9
 
10
10
  ---
11
11
 
12
- ## 0. RC STATUS (v4.1.0 RC)
13
-
14
- **v4.1.0 replaces the frontend implementation and desktop shell on top of
15
- `main @ v4.0.1`; implementation gaps remain empty.**
16
- Latest implementation milestone: `/app` is now a React + TypeScript + Vite SPA
17
- with TanStack Query, Zustand, generated OpenAPI client usage, Cytoscape.js
18
- Brain graph, React Flow Act graph, Tailwind CSS, and local shadcn-style
19
- primitives. Tauri 2.0 is the primary desktop shell; Electron is fallback only.
20
- The existing FastAPI backend, Brain Core, storage architecture, and
21
- agent/workflow runtime remain the source of truth.
22
- The v4.1.0 RC process builds and validates local artifacts only. It does not
23
- publish to PyPI, npm Registry, VS Code Marketplace, Open VSX, or production
24
- deployment targets.
25
- v4.1.0 validation completed: OpenAPI generation (308 paths), Python compile,
26
- ruff, 585 unit tests, 9 live integration tests, frontend lint/no-CDN/API
27
- compatibility, TypeScript build, 12 Playwright visual/offline tests, Tauri
28
- cargo check, Tauri `.app` + DMG build, Electron fallback syntax/version check,
29
- Python wheel/sdist build, npm tgz build, VSIX build, release artifact
30
- validation, wheel smoke, and npm pack dry-run all passed. See
31
- `docs/V4_1_VALIDATION_REPORT.md`.
12
+ ## 0. RELEASE STATUS (v4.3.0 RC)
13
+
14
+ **v4.3.0 hardens the v4.2 Brain Core/storage architecture into a portable,
15
+ user-safe desktop release candidate; implementation gaps remain empty.**
16
+ Latest implementation milestone: `.latticebrain` archive format v2 is the
17
+ primary portable brain format and carries encrypted graph DB, blobs, portable
18
+ JSON state, signed bundles, storage metadata, provenance, public device identity
19
+ metadata, manifest hashes, inspect, verify, import, restore, and dry-run restore.
20
+ Restore/import requires explicit confirmation unless dry-run. Live
21
+ SQLite-to-Postgres migration now creates and verifies a pre-migration backup
22
+ before copying data. Tauri exposes backend status/restart/shutdown and starts
23
+ the sidecar with loopback/default-off guards. Admin product hardening status
24
+ reports local-only startup posture, storage, backup health, device identity,
25
+ permissions, and opt-in external integration state.
26
+ The v4.3.0 RC process builds validated artifacts only. It does not tag, create a
27
+ GitHub Release, publish to PyPI, npm Registry, VS Code Marketplace, Open VSX, or
28
+ deploy to production targets.
29
+ v4.3.0 validation report: `docs/V4_3_VALIDATION_REPORT.md`.
32
30
  Remaining implementation gaps: **none**.
33
31
  Owner-only blockers: pptx history rewrite (requires force-push/owner decision)
34
32
  and consent-gated production embedder provisioning (silent default download is
@@ -36,12 +34,12 @@ not permitted).
36
34
 
37
35
  ## Remaining Gaps
38
36
 
39
- None. v4.1.0 closes the frontend/desktop rebuild on top of the already-empty
40
- v4.0.1 gap list: legacy static v3 frontend assets are removed, `/app` is served
41
- from `static/app`, Brain/Ask/Capture/Act/Library/System cover the existing
42
- capability surface, and every visible control either calls an existing backend
43
- API or presents an honest unavailable/error state. Owner-only blockers above
44
- are intentionally not implementation gaps.
37
+ None. v4.3.0 preserves the already-empty v4.2.0 gap list and closes the
38
+ portability/product-hardening work: `.latticebrain` archives are verified,
39
+ inspectable, dry-runnable, and confirmation-gated; default startup is local-only
40
+ and token-inert; backup health and product hardening are admin-visible; release
41
+ artifact validation includes the exact Tauri DMG. Owner-only blockers above are
42
+ intentionally not implementation gaps.
45
43
 
46
44
  ## 1. Program Charter (from the user's v4.0.0 directive)
47
45
 
@@ -227,9 +225,9 @@ Track log (update at every track boundary):
227
225
  and KG provenance coverage. en/ko i18n runtime backs routes, shell, and new
228
226
  parity views; `scripts/lint_v3.mjs` gates it. Visual coverage moved to the
229
227
  v3 surface and legacy-page specs were retired.
230
- - T9-canvas agent left static/v3/js/views/graph-canvas.js (509 lines,
231
- node --check passes) but NEVER rewired knowledge-graph.js file kept
232
- uncommitted in tree; integration outstanding.
228
+ - Superseded note: an early T9-canvas handoff left a static v3 graph-canvas file
229
+ unrewired, but this is no longer active work. v4.1.0 removed `static/v3` and
230
+ replaced the graph surface with the React/Vite/Cytoscape Brain view.
233
231
  - NOTE: The old T3d queue is closed. T9 parity surfaces remain active with
234
232
  full contracts in this file + the plan.
235
233
  - **T3e**: docs/kg-schema.md regenerated from enums.
@@ -285,9 +283,9 @@ the canonical Phase A record.**
285
283
  services, 27 API routers + `server_app.py` at 1,554 lines). Legacy root
286
284
  modules ~6,720 lines incl. `knowledge_graph.py` **4,633 lines**,
287
285
  `kg_schema.py` 521, `llm_router.py` 775, `mcp_registry.py` 791.
288
- - Frontend: `/app` v3 SPA (`static/v3/`, token-native) is primary; legacy
289
- static HTML pages were later removed and compatibility routes redirect
290
- into `/app`.
286
+ - Historical frontend baseline: `/app` static v3 SPA (`static/v3/`,
287
+ token-native) was primary at v3.6.0. v4.1.0 later replaced it with the
288
+ React/Vite SPA in `frontend/` and `static/app/`.
291
289
  - Repo root clutter: ~30 `ltcai-*.tgz` tarballs, `ltcai-0.3.1/` extracted copy,
292
290
  logs, `chat_history.json`, 15MB pptx — most likely untracked; verify with
293
291
  `git ls-files` before cleaning.
@@ -686,6 +686,121 @@
686
686
  "title": "CuTypeRequest",
687
687
  "type": "object"
688
688
  },
689
+ "DockerPostgresRequest": {
690
+ "properties": {
691
+ "consent": {
692
+ "default": false,
693
+ "title": "Consent",
694
+ "type": "boolean"
695
+ },
696
+ "dry_run": {
697
+ "default": false,
698
+ "title": "Dry Run",
699
+ "type": "boolean"
700
+ },
701
+ "port": {
702
+ "default": 5432,
703
+ "title": "Port",
704
+ "type": "integer"
705
+ }
706
+ },
707
+ "title": "DockerPostgresRequest",
708
+ "type": "object"
709
+ },
710
+ "EncryptedArchiveRequest": {
711
+ "properties": {
712
+ "passphrase": {
713
+ "title": "Passphrase",
714
+ "type": "string"
715
+ },
716
+ "path": {
717
+ "anyOf": [
718
+ {
719
+ "type": "string"
720
+ },
721
+ {
722
+ "type": "null"
723
+ }
724
+ ],
725
+ "title": "Path"
726
+ }
727
+ },
728
+ "required": [
729
+ "passphrase"
730
+ ],
731
+ "title": "EncryptedArchiveRequest",
732
+ "type": "object"
733
+ },
734
+ "EncryptedInspectRequest": {
735
+ "properties": {
736
+ "passphrase": {
737
+ "anyOf": [
738
+ {
739
+ "type": "string"
740
+ },
741
+ {
742
+ "type": "null"
743
+ }
744
+ ],
745
+ "title": "Passphrase"
746
+ },
747
+ "path": {
748
+ "title": "Path",
749
+ "type": "string"
750
+ }
751
+ },
752
+ "required": [
753
+ "path"
754
+ ],
755
+ "title": "EncryptedInspectRequest",
756
+ "type": "object"
757
+ },
758
+ "EncryptedRestoreRequest": {
759
+ "properties": {
760
+ "confirm": {
761
+ "default": false,
762
+ "title": "Confirm",
763
+ "type": "boolean"
764
+ },
765
+ "dry_run": {
766
+ "default": false,
767
+ "title": "Dry Run",
768
+ "type": "boolean"
769
+ },
770
+ "passphrase": {
771
+ "title": "Passphrase",
772
+ "type": "string"
773
+ },
774
+ "path": {
775
+ "title": "Path",
776
+ "type": "string"
777
+ }
778
+ },
779
+ "required": [
780
+ "path",
781
+ "passphrase"
782
+ ],
783
+ "title": "EncryptedRestoreRequest",
784
+ "type": "object"
785
+ },
786
+ "EncryptedVerifyRequest": {
787
+ "properties": {
788
+ "passphrase": {
789
+ "title": "Passphrase",
790
+ "type": "string"
791
+ },
792
+ "path": {
793
+ "title": "Path",
794
+ "type": "string"
795
+ }
796
+ },
797
+ "required": [
798
+ "path",
799
+ "passphrase"
800
+ ],
801
+ "title": "EncryptedVerifyRequest",
802
+ "type": "object"
803
+ },
689
804
  "ExportRequest": {
690
805
  "properties": {
691
806
  "filters": {
@@ -1883,6 +1998,16 @@
1883
1998
  },
1884
1999
  "RestoreRequest": {
1885
2000
  "properties": {
2001
+ "confirm": {
2002
+ "default": false,
2003
+ "title": "Confirm",
2004
+ "type": "boolean"
2005
+ },
2006
+ "dry_run": {
2007
+ "default": false,
2008
+ "title": "Dry Run",
2009
+ "type": "boolean"
2010
+ },
1886
2011
  "path": {
1887
2012
  "title": "Path",
1888
2013
  "type": "string"
@@ -1899,6 +2024,29 @@
1899
2024
  "title": "RestoreRequest",
1900
2025
  "type": "object"
1901
2026
  },
2027
+ "SQLiteToPostgresRequest": {
2028
+ "properties": {
2029
+ "dry_run": {
2030
+ "default": true,
2031
+ "title": "Dry Run",
2032
+ "type": "boolean"
2033
+ },
2034
+ "dsn": {
2035
+ "title": "Dsn",
2036
+ "type": "string"
2037
+ },
2038
+ "schema_name": {
2039
+ "default": "lattice_brain",
2040
+ "title": "Schema Name",
2041
+ "type": "string"
2042
+ }
2043
+ },
2044
+ "required": [
2045
+ "dsn"
2046
+ ],
2047
+ "title": "SQLiteToPostgresRequest",
2048
+ "type": "object"
2049
+ },
1902
2050
  "SearchRequest": {
1903
2051
  "properties": {
1904
2052
  "limit": {
@@ -3395,7 +3543,7 @@
3395
3543
  },
3396
3544
  "info": {
3397
3545
  "title": "Lattice AI Server (local)",
3398
- "version": "4.1.0"
3546
+ "version": "4.3.0"
3399
3547
  },
3400
3548
  "openapi": "3.1.0",
3401
3549
  "paths": {
@@ -3677,6 +3825,22 @@
3677
3825
  "summary": "Admin Policies"
3678
3826
  }
3679
3827
  },
3828
+ "/admin/product-hardening": {
3829
+ "get": {
3830
+ "operationId": "admin_product_hardening_admin_product_hardening_get",
3831
+ "responses": {
3832
+ "200": {
3833
+ "content": {
3834
+ "application/json": {
3835
+ "schema": {}
3836
+ }
3837
+ },
3838
+ "description": "Successful Response"
3839
+ }
3840
+ },
3841
+ "summary": "Admin Product Hardening"
3842
+ }
3843
+ },
3680
3844
  "/admin/roles": {
3681
3845
  "get": {
3682
3846
  "operationId": "admin_roles_admin_roles_get",
@@ -5102,6 +5266,94 @@
5102
5266
  "summary": "Agent Runtime Status"
5103
5267
  }
5104
5268
  },
5269
+ "/api/brain/storage": {
5270
+ "get": {
5271
+ "operationId": "brain_storage_status_api_brain_storage_get",
5272
+ "responses": {
5273
+ "200": {
5274
+ "content": {
5275
+ "application/json": {
5276
+ "schema": {}
5277
+ }
5278
+ },
5279
+ "description": "Successful Response"
5280
+ }
5281
+ },
5282
+ "summary": "Brain Storage Status"
5283
+ }
5284
+ },
5285
+ "/api/brain/storage/migrate-postgres": {
5286
+ "post": {
5287
+ "operationId": "migrate_sqlite_to_postgres_api_brain_storage_migrate_postgres_post",
5288
+ "requestBody": {
5289
+ "content": {
5290
+ "application/json": {
5291
+ "schema": {
5292
+ "$ref": "#/components/schemas/SQLiteToPostgresRequest"
5293
+ }
5294
+ }
5295
+ },
5296
+ "required": true
5297
+ },
5298
+ "responses": {
5299
+ "200": {
5300
+ "content": {
5301
+ "application/json": {
5302
+ "schema": {}
5303
+ }
5304
+ },
5305
+ "description": "Successful Response"
5306
+ },
5307
+ "422": {
5308
+ "content": {
5309
+ "application/json": {
5310
+ "schema": {
5311
+ "$ref": "#/components/schemas/HTTPValidationError"
5312
+ }
5313
+ }
5314
+ },
5315
+ "description": "Validation Error"
5316
+ }
5317
+ },
5318
+ "summary": "Migrate Sqlite To Postgres"
5319
+ }
5320
+ },
5321
+ "/api/brain/storage/postgres/docker": {
5322
+ "post": {
5323
+ "operationId": "setup_postgres_docker_api_brain_storage_postgres_docker_post",
5324
+ "requestBody": {
5325
+ "content": {
5326
+ "application/json": {
5327
+ "schema": {
5328
+ "$ref": "#/components/schemas/DockerPostgresRequest"
5329
+ }
5330
+ }
5331
+ },
5332
+ "required": true
5333
+ },
5334
+ "responses": {
5335
+ "200": {
5336
+ "content": {
5337
+ "application/json": {
5338
+ "schema": {}
5339
+ }
5340
+ },
5341
+ "description": "Successful Response"
5342
+ },
5343
+ "422": {
5344
+ "content": {
5345
+ "application/json": {
5346
+ "schema": {
5347
+ "$ref": "#/components/schemas/HTTPValidationError"
5348
+ }
5349
+ }
5350
+ },
5351
+ "description": "Validation Error"
5352
+ }
5353
+ },
5354
+ "summary": "Setup Postgres Docker"
5355
+ }
5356
+ },
5105
5357
  "/api/browser/ingest-current-tab": {
5106
5358
  "post": {
5107
5359
  "description": "Ingest a payload captured from the local browser extension.",
@@ -5946,6 +6198,186 @@
5946
6198
  "summary": "Index Status"
5947
6199
  }
5948
6200
  },
6201
+ "/api/knowledge-graph/archive": {
6202
+ "post": {
6203
+ "operationId": "encrypted_archive_api_knowledge_graph_archive_post",
6204
+ "requestBody": {
6205
+ "content": {
6206
+ "application/json": {
6207
+ "schema": {
6208
+ "$ref": "#/components/schemas/EncryptedArchiveRequest"
6209
+ }
6210
+ }
6211
+ },
6212
+ "required": true
6213
+ },
6214
+ "responses": {
6215
+ "200": {
6216
+ "content": {
6217
+ "application/json": {
6218
+ "schema": {}
6219
+ }
6220
+ },
6221
+ "description": "Successful Response"
6222
+ },
6223
+ "422": {
6224
+ "content": {
6225
+ "application/json": {
6226
+ "schema": {
6227
+ "$ref": "#/components/schemas/HTTPValidationError"
6228
+ }
6229
+ }
6230
+ },
6231
+ "description": "Validation Error"
6232
+ }
6233
+ },
6234
+ "summary": "Encrypted Archive"
6235
+ }
6236
+ },
6237
+ "/api/knowledge-graph/archive/import": {
6238
+ "post": {
6239
+ "operationId": "import_encrypted_archive_api_knowledge_graph_archive_import_post",
6240
+ "requestBody": {
6241
+ "content": {
6242
+ "application/json": {
6243
+ "schema": {
6244
+ "$ref": "#/components/schemas/EncryptedRestoreRequest"
6245
+ }
6246
+ }
6247
+ },
6248
+ "required": true
6249
+ },
6250
+ "responses": {
6251
+ "200": {
6252
+ "content": {
6253
+ "application/json": {
6254
+ "schema": {}
6255
+ }
6256
+ },
6257
+ "description": "Successful Response"
6258
+ },
6259
+ "422": {
6260
+ "content": {
6261
+ "application/json": {
6262
+ "schema": {
6263
+ "$ref": "#/components/schemas/HTTPValidationError"
6264
+ }
6265
+ }
6266
+ },
6267
+ "description": "Validation Error"
6268
+ }
6269
+ },
6270
+ "summary": "Import Encrypted Archive"
6271
+ }
6272
+ },
6273
+ "/api/knowledge-graph/archive/inspect": {
6274
+ "post": {
6275
+ "operationId": "inspect_encrypted_archive_api_knowledge_graph_archive_inspect_post",
6276
+ "requestBody": {
6277
+ "content": {
6278
+ "application/json": {
6279
+ "schema": {
6280
+ "$ref": "#/components/schemas/EncryptedInspectRequest"
6281
+ }
6282
+ }
6283
+ },
6284
+ "required": true
6285
+ },
6286
+ "responses": {
6287
+ "200": {
6288
+ "content": {
6289
+ "application/json": {
6290
+ "schema": {}
6291
+ }
6292
+ },
6293
+ "description": "Successful Response"
6294
+ },
6295
+ "422": {
6296
+ "content": {
6297
+ "application/json": {
6298
+ "schema": {
6299
+ "$ref": "#/components/schemas/HTTPValidationError"
6300
+ }
6301
+ }
6302
+ },
6303
+ "description": "Validation Error"
6304
+ }
6305
+ },
6306
+ "summary": "Inspect Encrypted Archive"
6307
+ }
6308
+ },
6309
+ "/api/knowledge-graph/archive/restore": {
6310
+ "post": {
6311
+ "operationId": "restore_encrypted_archive_api_knowledge_graph_archive_restore_post",
6312
+ "requestBody": {
6313
+ "content": {
6314
+ "application/json": {
6315
+ "schema": {
6316
+ "$ref": "#/components/schemas/EncryptedRestoreRequest"
6317
+ }
6318
+ }
6319
+ },
6320
+ "required": true
6321
+ },
6322
+ "responses": {
6323
+ "200": {
6324
+ "content": {
6325
+ "application/json": {
6326
+ "schema": {}
6327
+ }
6328
+ },
6329
+ "description": "Successful Response"
6330
+ },
6331
+ "422": {
6332
+ "content": {
6333
+ "application/json": {
6334
+ "schema": {
6335
+ "$ref": "#/components/schemas/HTTPValidationError"
6336
+ }
6337
+ }
6338
+ },
6339
+ "description": "Validation Error"
6340
+ }
6341
+ },
6342
+ "summary": "Restore Encrypted Archive"
6343
+ }
6344
+ },
6345
+ "/api/knowledge-graph/archive/verify": {
6346
+ "post": {
6347
+ "operationId": "verify_encrypted_archive_api_knowledge_graph_archive_verify_post",
6348
+ "requestBody": {
6349
+ "content": {
6350
+ "application/json": {
6351
+ "schema": {
6352
+ "$ref": "#/components/schemas/EncryptedVerifyRequest"
6353
+ }
6354
+ }
6355
+ },
6356
+ "required": true
6357
+ },
6358
+ "responses": {
6359
+ "200": {
6360
+ "content": {
6361
+ "application/json": {
6362
+ "schema": {}
6363
+ }
6364
+ },
6365
+ "description": "Successful Response"
6366
+ },
6367
+ "422": {
6368
+ "content": {
6369
+ "application/json": {
6370
+ "schema": {
6371
+ "$ref": "#/components/schemas/HTTPValidationError"
6372
+ }
6373
+ }
6374
+ },
6375
+ "description": "Validation Error"
6376
+ }
6377
+ },
6378
+ "summary": "Verify Encrypted Archive"
6379
+ }
6380
+ },
5949
6381
  "/api/knowledge-graph/backup": {
5950
6382
  "post": {
5951
6383
  "operationId": "backup_graph_api_knowledge_graph_backup_post",
@@ -5982,6 +6414,22 @@
5982
6414
  "summary": "Backup Graph"
5983
6415
  }
5984
6416
  },
6417
+ "/api/knowledge-graph/backup-health": {
6418
+ "get": {
6419
+ "operationId": "backup_health_api_knowledge_graph_backup_health_get",
6420
+ "responses": {
6421
+ "200": {
6422
+ "content": {
6423
+ "application/json": {
6424
+ "schema": {}
6425
+ }
6426
+ },
6427
+ "description": "Successful Response"
6428
+ }
6429
+ },
6430
+ "summary": "Backup Health"
6431
+ }
6432
+ },
5985
6433
  "/api/knowledge-graph/export": {
5986
6434
  "post": {
5987
6435
  "description": "Logical JSON export of the whole graph (read-only).",