ltcai 8.1.0 → 8.2.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 (110) hide show
  1. package/README.md +20 -41
  2. package/docs/CHANGELOG.md +38 -874
  3. package/docs/DEVELOPMENT.md +26 -3
  4. package/docs/LEGACY_COMPATIBILITY.md +3 -1
  5. package/docs/TRUST_MODEL.md +26 -26
  6. package/docs/WHY_LATTICE.md +28 -25
  7. package/docs/kg-schema.md +6 -4
  8. package/lattice_brain/__init__.py +1 -1
  9. package/lattice_brain/graph/schema.py +6 -0
  10. package/lattice_brain/runtime/multi_agent.py +1 -1
  11. package/latticeai/__init__.py +1 -1
  12. package/latticeai/api/computer_use.py +2 -0
  13. package/latticeai/api/memory.py +13 -0
  14. package/latticeai/app_factory.py +30 -28
  15. package/latticeai/brain/__init__.py +1 -1
  16. package/latticeai/core/config.py +10 -0
  17. package/latticeai/core/marketplace.py +1 -1
  18. package/latticeai/core/tool_registry.py +10 -0
  19. package/latticeai/core/workspace_graph_trace.py +132 -0
  20. package/latticeai/core/workspace_memory.py +75 -0
  21. package/latticeai/core/workspace_os.py +135 -1283
  22. package/latticeai/core/workspace_os_utils.py +132 -0
  23. package/latticeai/core/workspace_permissions.py +99 -0
  24. package/latticeai/core/workspace_plugins.py +97 -0
  25. package/latticeai/core/workspace_runs.py +612 -0
  26. package/latticeai/core/workspace_skills.py +114 -0
  27. package/latticeai/core/workspace_snapshots.py +195 -0
  28. package/latticeai/core/workspace_timeline.py +107 -0
  29. package/latticeai/runtime/audit_runtime.py +64 -0
  30. package/latticeai/runtime/config_runtime.py +4 -0
  31. package/latticeai/runtime/sso_runtime.py +52 -0
  32. package/latticeai/services/architecture_readiness.py +3 -3
  33. package/latticeai/services/memory_service.py +215 -7
  34. package/latticeai/services/model_capability_registry.py +68 -0
  35. package/latticeai/services/model_engines.py +603 -0
  36. package/latticeai/services/model_loading.py +482 -0
  37. package/latticeai/services/model_recommendation.py +5 -0
  38. package/latticeai/services/model_runtime.py +141 -866
  39. package/latticeai/services/product_readiness.py +19 -18
  40. package/package.json +1 -1
  41. package/src-tauri/Cargo.lock +1 -1
  42. package/src-tauri/Cargo.toml +1 -1
  43. package/src-tauri/tauri.conf.json +1 -1
  44. package/static/app/asset-manifest.json +11 -11
  45. package/static/app/assets/{Act-BOO66G-c.js → Act-D9jIknFd.js} +1 -1
  46. package/static/app/assets/{Brain-C6lEYiD7.js → Brain-CFOtWbPN.js} +1 -1
  47. package/static/app/assets/{Capture-TATXBRDw.js → Capture-Q4WYzwr5.js} +1 -1
  48. package/static/app/assets/{Library-DK4FIp8a.js → Library-C5Q2yWee.js} +1 -1
  49. package/static/app/assets/{System-Bgs6Ql7x.js → System-BLbjdr1_.js} +1 -1
  50. package/static/app/assets/index-BqammyNu.js +16 -0
  51. package/static/app/assets/index-ty1iGgZu.css +2 -0
  52. package/static/app/assets/{primitives-B70WOra0.js → primitives-Br8uSfZ4.js} +1 -1
  53. package/static/app/assets/{textarea-Czrd9gwM.js → textarea-BnhNs1_X.js} +1 -1
  54. package/static/app/index.html +2 -2
  55. package/static/sw.js +1 -1
  56. package/tools/__init__.py +2 -1
  57. package/tools/computer.py +21 -0
  58. package/docs/CARRYOVER_AUDIT_v3.6.0.md +0 -61
  59. package/docs/HANDOVER_v3.6.0.md +0 -46
  60. package/docs/RUNTIME_HOOK_COVERAGE_v3.5.0.md +0 -56
  61. package/docs/RUNTIME_HOOK_COVERAGE_v3.6.0.md +0 -49
  62. package/docs/V2_ARCHITECTURE.md +0 -561
  63. package/docs/V3_2_AUDIT.md +0 -82
  64. package/docs/V3_BACKEND_ARCHITECTURE.md +0 -138
  65. package/docs/V3_FRONTEND.md +0 -146
  66. package/docs/V4_1_FRONTEND_ARCHITECTURE_REVIEW.md +0 -65
  67. package/docs/V4_1_FRONTEND_MIGRATION_REPORT.md +0 -70
  68. package/docs/V4_1_VALIDATION_REPORT.md +0 -47
  69. package/docs/V4_2_BRAIN_CORE_ARCHITECTURE.md +0 -97
  70. package/docs/V4_2_STORAGE_MIGRATION_REPORT.md +0 -91
  71. package/docs/V4_2_VALIDATION_REPORT.md +0 -89
  72. package/docs/V4_3_2_DEADCODE_AUDIT_REPORT.md +0 -174
  73. package/docs/V4_3_2_DOCUMENTATION_CLEANUP_REPORT.md +0 -81
  74. package/docs/V4_3_2_GITHUB_VERCEL_CHECK_REPORT.md +0 -75
  75. package/docs/V4_3_2_GRAPH_UX_REPORT.md +0 -48
  76. package/docs/V4_3_2_INDEPENDENT_AUDIT_PACKAGE.md +0 -209
  77. package/docs/V4_3_2_PRODUCT_POLISH_REPORT.md +0 -57
  78. package/docs/V4_3_2_SELF_AUDIT_REPORT.md +0 -63
  79. package/docs/V4_3_2_VALIDATION_REPORT.md +0 -97
  80. package/docs/V4_3_3_VALIDATION_REPORT.md +0 -46
  81. package/docs/V4_3_PORTABILITY_ARCHITECTURE.md +0 -69
  82. package/docs/V4_3_PRIVACY_AUDIT.md +0 -60
  83. package/docs/V4_3_PRODUCT_HARDENING_REPORT.md +0 -53
  84. package/docs/V4_3_VALIDATION_REPORT.md +0 -58
  85. package/docs/V4_4_0_EXTRACTION_REPORT.md +0 -239
  86. package/docs/V4_5_0_GEMMA_RUNTIME_COMPATIBILITY_REPORT.md +0 -49
  87. package/docs/V4_5_0_GRAPH_UX_REPORT.md +0 -34
  88. package/docs/V4_5_0_MODEL_RUNTIME_UX_REPORT.md +0 -40
  89. package/docs/V4_5_0_ONBOARDING_REPORT.md +0 -31
  90. package/docs/V4_5_0_PRODUCT_EXPERIENCE_RECOVERY_REPORT.md +0 -49
  91. package/docs/V4_5_0_VALIDATION_REPORT.md +0 -60
  92. package/docs/V4_5_1_GRAPH_EXPERIENCE_REPORT.md +0 -33
  93. package/docs/V4_5_1_MODEL_EXPERIENCE_REPORT.md +0 -37
  94. package/docs/V4_5_1_NAVIGATION_REPORT.md +0 -37
  95. package/docs/V4_5_1_ONBOARDING_REPORT.md +0 -29
  96. package/docs/V4_5_1_PRODUCT_REIMAGINING_REPORT.md +0 -61
  97. package/docs/V4_5_1_RC_ARTIFACTS.md +0 -44
  98. package/docs/V4_5_1_UX_REPORT.md +0 -45
  99. package/docs/V4_5_1_VALIDATION_REPORT.md +0 -55
  100. package/docs/V4_5_1_VISUAL_DESIGN_REPORT.md +0 -30
  101. package/docs/V4_6_0_LIVING_BRAIN_EXPERIENCE_REPORT.md +0 -72
  102. package/docs/V4_6_1_RELEASE_REFRESH_REPORT.md +0 -42
  103. package/docs/V4_7_0_ADMIN_SEPARATION_REPORT.md +0 -42
  104. package/docs/V4_7_1_ADMIN_OPERATIONS_REPORT.md +0 -49
  105. package/docs/V4_7_2_INTUITIVE_BRAIN_UX_REPORT.md +0 -62
  106. package/docs/V4_BRAIN_ARCHITECTURE.md +0 -322
  107. package/docs/V4_DIGITAL_BRAIN_RECOVERY.md +0 -555
  108. package/docs/V4_IMPLEMENTATION_PLAN.md +0 -470
  109. package/static/app/assets/index-Bvv79nre.js +0 -16
  110. package/static/app/assets/index-Dslqglia.css +0 -2
@@ -1,46 +0,0 @@
1
- # Lattice AI v3.6.0 — Completion Record (Knowledge Graph First)
2
-
3
- **Status: ✅ RELEASED — 2026-06-10.** All planned scopes implemented, tested,
4
- committed, pushed, CI green, tagged, and published. No external publish/deploy.
5
-
6
- - **Tag:** `v3.6.0` → commit `3c85675`
7
- - **GitHub Release:** https://github.com/TaeSooPark-PTS/LatticeAI/releases/tag/v3.6.0
8
- (published, not draft; assets: `ltcai-3.6.0-py3-none-any.whl`,
9
- `ltcai-3.6.0.tar.gz`, `ltcai-3.6.0.tgz`, `ltcai-3.6.0.vsix`)
10
- - **CI:** main CI ✓, Visual Smoke ✓, release.yml (tag) ✓
11
- - **Tests:** unit 455 passing · lint 64/64 · check:python 153 (3.11/3.12/3.14) ·
12
- release artifacts built + validated
13
-
14
- ## Commits (v3.5.0 → v3.6.0)
15
-
16
- | Commit | Scope |
17
- |---|---|
18
- | `baa2bf6` | chore(audit) — v3.5.0 carry-over (0 blocking) |
19
- | `5a6a7d4` | feat(kg) — entities/relationships schema |
20
- | `135e81a` | feat(kg) — unified ingestion pipeline + provenance |
21
- | `b548885` | feat(browser) — browser/web ingestion + MV3 extension |
22
- | `39a7a0c` | feat(kg) — export/import/backup/restore |
23
- | `21cfb97` | fix(runtime) — hook coverage for ingestion paths |
24
- | `7009e39` | fix(ui) — Knowledge Graph as primary surface |
25
- | `fa89a84` | docs(philosophy) — Digital Brain Platform rewrite |
26
- | `aa011a5` | release: v3.6.0 (version bump) |
27
- | `3c85675` | fix(ci) — 3.11-compatible f-string (PEP 701 quote reuse) |
28
-
29
- ## Carry-over audit result
30
-
31
- Zero blocking items. Settled postures preserved: Vercel landing-only, OIDC
32
- RSA-only, legacy `/account` `/admin` out of scope. The one honest v3.5.0 gap (KG
33
- ingestion not firing tool hooks) is **closed**. Full detail:
34
- `docs/CARRYOVER_AUDIT_v3.6.0.md`.
35
-
36
- ## Key facts for future work
37
-
38
- - New seams: `latticeai/services/ingestion.py` (single write-side entrypoint),
39
- `latticeai/services/kg_portability.py`, `latticeai/api/browser.py`,
40
- `latticeai/api/portability.py`, provenance in `knowledge_graph.py`.
41
- - **Gotcha:** PEP 701 f-string quote reuse (`f'{x or ''}'`) compiles on 3.12+ but
42
- is a SyntaxError on 3.11 — always run `python3.11 scripts/check_python.py`
43
- before pushing (CI tests on 3.11 + 3.12).
44
- - Version canonical: `WORKSPACE_OS_VERSION`; mirrors enforced by
45
- `test_version_consistency.py`.
46
- - Local tests need `.venv/bin/python` (system `python3` lacks fastapi).
@@ -1,56 +0,0 @@
1
- # Runtime Hook Coverage — v3.5.0
2
-
3
- Every place Lattice AI executes a real tool or agent action, and whether it runs
4
- through the unified lifecycle. The single tool path is
5
- `dispatch_tool(hooks, name, args, run_fn)` in `latticeai/core/hooks.py`
6
- (`pre_tool → execute → post_tool`); the HTTP helper `_tool_response`
7
- (`latticeai/api/tools.py`) wraps it; uploads use the parallel
8
- `pre_upload/post_upload/pre_index/post_index` lifecycle
9
- (`latticeai/services/upload_service.py`); agent runs use `pre_run/post_run`.
10
-
11
- **Method.** Routers/services were enumerated by a 6-way parallel audit and then
12
- each genuine execution path was verified by reading the call site. A path is a
13
- *bypass* only if a real tool/agent action skips its lifecycle. Read-only metadata
14
- endpoints (status, list-permissions, config) execute no tool and are not bypasses.
15
-
16
- **Result.** All discovered tool/agent execution paths are covered. The four
17
- remaining "uncovered" rows are deliberate, documented design decisions (service
18
- maintenance ops + an action already inside the upload lifecycle), not gaps.
19
-
20
- ## Tool / agent execution paths
21
-
22
- | Entrypoint | Execution | Lifecycle path | pre fired | post fired | Test |
23
- |---|---|---|---|---|---|
24
- | `POST /tools/list_dir`, `workspace_tree`, `write_file`, `search_files`, `todo_*`, `inspect_html`, `preview_url`, `create_*`, `read_document`, `knowledge_*`, `obsidian_*`, `network_status` | tool fn | `_tool_response`→`dispatch_tool` | yes (`pre_tool`) | yes (`post_tool`) | `test_hooks_dispatch`, `test_runtime_coverage` |
25
- | `POST /tools/read_file` | `read_file` (kwargs) | `_tool_response` (kwargs-aware) ✅v3.5.0 | yes | yes | `test_runtime_coverage` |
26
- | `POST /tools/edit_file` | `edit_file` (kwargs) | `_tool_response` ✅v3.5.0 | yes | yes | `test_runtime_coverage` |
27
- | `POST /tools/grep` | `grep` (kwargs) | `_tool_response` ✅v3.5.0 | yes | yes | `test_runtime_coverage` |
28
- | `POST /tools/clear_history` | `clear_history` | `_dispatch`→`dispatch_tool` ✅v3.5.0 | yes | yes | `test_runtime_coverage` |
29
- | `POST /tools/git_*`, `run_command`, `build_project`, `deploy_project` | tool fn | `_tool_response` | yes | yes | `test_route_compatibility` |
30
- | `POST /local/*` (list/read/write) | `local_*` | `tool_response` | yes | yes | `test_route_compatibility` |
31
- | `GET/POST /cu/*` (open_app/url/click/type/key/scroll/move/drag) | `computer_*` | `tool_response` | yes | yes | `test_runtime_coverage` |
32
- | `GET /cu/status`, `/cu/screenshot` | `computer_status/screenshot` | `_dispatch` ✅v3.5.0 | yes | yes | `test_runtime_coverage` |
33
- | `POST /cu/agent` (agent loop) | `execute_tool(name,args)` per step + Chrome shortcut | `_dispatch`→`dispatch_tool` ✅v3.5.0 | yes | yes | `test_runtime_coverage` |
34
- | `POST /agent/eval` | `execute_tool` per eval case | `dispatch_tool` ✅v3.5.0 | yes | yes | (covered via dispatch_tool) |
35
- | Single-agent runtime tool calls | `execute_tool` via `AgentDeps` | `core/agent.py`→`dispatch_tool` | yes | yes | `test_hooks_dispatch` |
36
- | Agent run (start→finish) | orchestrator run | `agent_runtime` `pre_run`/`post_run` | yes (`pre_run`) | yes (`post_run`) | `test_hooks_dispatch` |
37
- | Workflow tool node | `dispatch_tool` | `platform_runtime` | yes | yes | `test_hooks_dispatch` |
38
- | Workflow run (start→end) | engine run | `WorkflowEngine` `pre_workflow`/`post_workflow` | yes | yes | `test_hooks_dispatch` |
39
- | `POST /upload/document` | `process_uploaded_document` | upload lifecycle | `pre_upload` | `post_upload` | existing upload tests |
40
- | Document indexing (upload + folder watch) | embed/graph build | `pre_index`/`post_index` | yes | yes | existing |
41
-
42
- ## Intentionally outside the tool lifecycle (documented, not gaps)
43
-
44
- | Entrypoint | Why not `pre_tool`/`post_tool` |
45
- |---|---|
46
- | `read_document` inside `process_uploaded_document` (`upload_service.py`) | Already inside the upload lifecycle (`pre_upload`→`post_upload`); wrapping it again would double-dispatch the same user action. |
47
- | `POST /api/memory/{prune,compact,rebuild,clear}` | Knowledge/memory **service** maintenance operations, not registry tools; they have their own audit events. Not part of the agent tool vocabulary. |
48
- | `clear_history` inside `core/agent.py` executor | Runs inside an agent run already bracketed by `pre_run`/`post_run`; not re-wrapped to avoid nested dispatch. |
49
- | Read-only status/config endpoints (`/tools/permissions`, `/obsidian/status`, model/catalog reads) | Execute no tool — nothing to gate. |
50
-
51
- ## Summary
52
-
53
- - Genuine tool/agent execution paths discovered: **all enumerated routers + services**.
54
- - Bypasses found and closed in v3.5.0: **read_file, edit_file, grep, clear_history, computer-use agent loop (+ /cu/status, /cu/screenshot), skill-eval**.
55
- - Bypasses remaining: **none** (the four rows above are deliberate, documented design decisions).
56
- - Coverage of discovered tool/agent execution paths: **100%**.
@@ -1,49 +0,0 @@
1
- # Runtime Hook Coverage — v3.6.0
2
-
3
- v3.6.0 makes the Knowledge Graph the primary architecture and adds new
4
- **ingestion** paths (web URL, browser tab, unified text/file pipeline) plus
5
- **portability** ops (export/import/backup/restore). This doc extends
6
- [`RUNTIME_HOOK_COVERAGE_v3.5.0.md`](./RUNTIME_HOOK_COVERAGE_v3.5.0.md) and records
7
- that the new data-mutating paths run through the unified lifecycle.
8
-
9
- The single tool path is `dispatch_tool(hooks, name, args, run_fn)` in
10
- `latticeai/core/hooks.py` (`pre_tool → execute → post_tool`). v3.5.0's one honest
11
- gap was that **KG ingestion did not fire hooks**. v3.6.0 closes it: every source
12
- now flows through `IngestionPipeline.ingest` (`latticeai/services/ingestion.py`),
13
- which wraps the store write in `dispatch_tool(..., source="ingestion")`.
14
-
15
- **Result.** All v3.5.0 coverage is preserved (no regression), and every new
16
- v3.6.0 ingestion path is covered. Portability admin/maintenance ops follow the
17
- v3.5.0 convention for service maintenance (own audit events), documented below.
18
-
19
- ## New v3.6.0 execution paths
20
-
21
- | Entrypoint | Execution | Lifecycle path | pre fired | post fired | Test |
22
- |---|---|---|---|---|---|
23
- | `IngestionPipeline.ingest` (any source) | `ingest_source` / `ingest_document` | `dispatch_tool(name="kg_ingest.<type>", source="ingestion")` | yes (`pre_tool`) | yes (`post_tool`) | `test_ingestion_pipeline` |
24
- | `POST /api/browser/read-url` | fetch URL → `pipeline.ingest` (web_url) | pipeline → `dispatch_tool` | yes | yes | `test_browser_ingestion`, `test_runtime_coverage_v36` |
25
- | `POST /api/browser/ingest-current-tab` | sanitize → `pipeline.ingest` (browser_tab) | pipeline → `dispatch_tool` | yes | yes | `test_browser_ingestion`, `test_runtime_coverage_v36` |
26
- | Local file / upload via pipeline | `ingest_document` | pipeline → `dispatch_tool` | yes | yes | `test_ingestion_pipeline` |
27
- | Provenance write per ingestion | `record_provenance` | inside the bracketed `dispatch_tool` run_fn | (bracketed) | (bracketed) | `test_ingestion_pipeline` |
28
-
29
- A blocking `pre_tool` hook makes ingestion return `status="blocked"` (the
30
- `PermissionError` from `dispatch_tool` is caught and surfaced honestly), exactly
31
- mirroring how a blocked tool call is handled — verified in
32
- `test_runtime_coverage_v36` and `test_ingestion_pipeline`.
33
-
34
- ## Intentionally outside the tool lifecycle (documented, not gaps)
35
-
36
- | Entrypoint | Why not `pre_tool`/`post_tool` |
37
- |---|---|
38
- | `POST /api/knowledge-graph/{export,export-file,backup,restore,import}` | Admin **portability/maintenance** operations over the whole machine-global graph, not agent-vocabulary tools. They are admin-gated (`require_admin`) and recorded via the platform audit trail — same convention as the v3.5.0 memory maintenance ops (`prune/compact/rebuild/clear`). Wrapping a whole-store backup in `pre_tool` would misrepresent it as a per-action agent tool. |
39
- | `read_document` inside upload (`upload_service.py`) | Already inside the `pre_upload`→`post_upload` lifecycle (unchanged from v3.5.0). |
40
- | `POST /api/memory/{prune,compact,rebuild,clear}` | Unchanged from v3.5.0 — service maintenance with own audit events. |
41
- | Read-only KG reads (`/knowledge-graph/{stats,graph,search,...}`, `/api/knowledge-graph/portability` status) | Execute no mutation — nothing to gate. |
42
-
43
- ## Summary
44
-
45
- - v3.5.0 coverage of tool/agent execution paths: **100%, preserved** (no regression).
46
- - v3.6.0 gap closed: **KG ingestion now fires `pre_tool`/`post_tool`** via the unified pipeline (the one honest carry-over note from v3.5.0).
47
- - New ingestion paths (unified pipeline, `read-url`, `ingest-current-tab`): **covered**.
48
- - Portability admin ops: **documented as audit-gated maintenance**, consistent with the v3.5.0 convention — not bypasses.
49
- - Coverage of discovered mutating ingestion paths: **100%**.