ltcai 9.0.0 → 9.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 (189) hide show
  1. package/README.md +88 -46
  2. package/auto_setup.py +7 -853
  3. package/desktop/electron/README.md +9 -0
  4. package/desktop/electron/main.cjs +5 -3
  5. package/docs/CHANGELOG.md +178 -2
  6. package/docs/COMMUNITY_AND_PLUGINS.md +4 -2
  7. package/docs/DEVELOPMENT.md +53 -14
  8. package/docs/LEGACY_COMPATIBILITY.md +4 -4
  9. package/docs/ONBOARDING.md +10 -2
  10. package/docs/OPERATIONS.md +8 -4
  11. package/docs/PRODUCT_DIRECTION_REVIEW.md +4 -0
  12. package/docs/TRUST_MODEL.md +5 -2
  13. package/docs/WHY_LATTICE.md +15 -10
  14. package/docs/WORKFLOW_DESIGNER.md +22 -0
  15. package/docs/kg-schema.md +13 -2
  16. package/docs/mcp-tools.md +17 -6
  17. package/docs/privacy.md +19 -3
  18. package/docs/public-deploy.md +32 -3
  19. package/docs/security-model.md +46 -11
  20. package/lattice_brain/__init__.py +1 -1
  21. package/lattice_brain/archive.py +1 -6
  22. package/lattice_brain/context.py +66 -9
  23. package/lattice_brain/graph/_kg_fsutil.py +1 -5
  24. package/lattice_brain/graph/discovery_index.py +174 -20
  25. package/lattice_brain/graph/documents.py +44 -9
  26. package/lattice_brain/graph/ingest.py +47 -20
  27. package/lattice_brain/graph/provenance.py +13 -6
  28. package/lattice_brain/graph/retrieval.py +140 -39
  29. package/lattice_brain/graph/retrieval_docgen.py +37 -4
  30. package/lattice_brain/ingestion.py +4 -7
  31. package/lattice_brain/portability.py +28 -14
  32. package/lattice_brain/runtime/agent_runtime.py +5 -9
  33. package/lattice_brain/runtime/hooks.py +30 -13
  34. package/lattice_brain/runtime/multi_agent.py +27 -8
  35. package/lattice_brain/runtime/statuses.py +10 -0
  36. package/lattice_brain/utils.py +20 -2
  37. package/lattice_brain/workflow.py +1 -5
  38. package/latticeai/__init__.py +1 -1
  39. package/latticeai/api/admin.py +1 -1
  40. package/latticeai/api/agent_registry.py +10 -8
  41. package/latticeai/api/agents.py +22 -3
  42. package/latticeai/api/auth.py +78 -16
  43. package/latticeai/api/browser.py +303 -34
  44. package/latticeai/api/chat.py +320 -850
  45. package/latticeai/api/chat_agent_http.py +356 -0
  46. package/latticeai/api/chat_contracts.py +54 -0
  47. package/latticeai/api/chat_documents.py +256 -0
  48. package/latticeai/api/chat_helpers.py +28 -1
  49. package/latticeai/api/chat_history.py +99 -0
  50. package/latticeai/api/chat_intents.py +316 -0
  51. package/latticeai/api/chat_stream.py +115 -0
  52. package/latticeai/api/computer_use.py +62 -9
  53. package/latticeai/api/health.py +9 -3
  54. package/latticeai/api/hooks.py +17 -6
  55. package/latticeai/api/knowledge_graph.py +78 -14
  56. package/latticeai/api/local_files.py +7 -2
  57. package/latticeai/api/mcp.py +102 -23
  58. package/latticeai/api/models.py +72 -33
  59. package/latticeai/api/network.py +5 -5
  60. package/latticeai/api/permissions.py +67 -26
  61. package/latticeai/api/plugins.py +21 -7
  62. package/latticeai/api/portability.py +5 -5
  63. package/latticeai/api/realtime.py +33 -5
  64. package/latticeai/api/setup.py +2 -2
  65. package/latticeai/api/static_routes.py +123 -24
  66. package/latticeai/api/tools.py +96 -14
  67. package/latticeai/api/workflow_designer.py +37 -0
  68. package/latticeai/api/workspace.py +2 -1
  69. package/latticeai/app_factory.py +110 -52
  70. package/latticeai/core/agent.py +50 -13
  71. package/latticeai/core/agent_prompts.py +5 -0
  72. package/latticeai/core/agent_registry.py +1 -5
  73. package/latticeai/core/config.py +23 -3
  74. package/latticeai/core/context_builder.py +21 -3
  75. package/latticeai/core/file_generation.py +451 -0
  76. package/latticeai/core/invitations.py +1 -4
  77. package/latticeai/core/io_utils.py +9 -1
  78. package/latticeai/core/legacy_compatibility.py +24 -3
  79. package/latticeai/core/marketplace.py +1 -1
  80. package/latticeai/core/plugins.py +15 -0
  81. package/latticeai/core/policy.py +1 -1
  82. package/latticeai/core/realtime.py +38 -15
  83. package/latticeai/core/sessions.py +7 -2
  84. package/latticeai/core/timeutil.py +10 -0
  85. package/latticeai/core/tool_registry.py +90 -18
  86. package/latticeai/core/users.py +1 -5
  87. package/latticeai/core/workspace_graph_trace.py +31 -5
  88. package/latticeai/core/workspace_memory.py +3 -1
  89. package/latticeai/core/workspace_os.py +18 -7
  90. package/latticeai/core/workspace_os_utils.py +0 -5
  91. package/latticeai/core/workspace_permissions.py +2 -1
  92. package/latticeai/core/workspace_plugins.py +1 -1
  93. package/latticeai/core/workspace_runs.py +14 -5
  94. package/latticeai/core/workspace_skills.py +1 -1
  95. package/latticeai/core/workspace_snapshots.py +2 -1
  96. package/latticeai/core/workspace_timeline.py +2 -1
  97. package/latticeai/integrations/telegram_bot.py +94 -43
  98. package/latticeai/models/router.py +130 -36
  99. package/latticeai/runtime/access_runtime.py +62 -4
  100. package/latticeai/runtime/automation_runtime.py +13 -7
  101. package/latticeai/runtime/brain_runtime.py +19 -7
  102. package/latticeai/runtime/chat_wiring.py +2 -0
  103. package/latticeai/runtime/config_runtime.py +58 -26
  104. package/latticeai/runtime/context_runtime.py +16 -4
  105. package/latticeai/runtime/hooks_runtime.py +1 -1
  106. package/latticeai/runtime/model_wiring.py +33 -5
  107. package/latticeai/runtime/namespace_runtime.py +62 -72
  108. package/latticeai/runtime/platform_runtime_wiring.py +4 -3
  109. package/latticeai/runtime/review_wiring.py +1 -1
  110. package/latticeai/runtime/router_registration.py +34 -1
  111. package/latticeai/runtime/security_runtime.py +110 -13
  112. package/latticeai/runtime/stages.py +27 -0
  113. package/latticeai/server_app.py +5 -1
  114. package/latticeai/services/architecture_readiness.py +74 -5
  115. package/latticeai/services/brain_automation.py +3 -26
  116. package/latticeai/services/chat_service.py +205 -15
  117. package/latticeai/services/local_knowledge.py +423 -0
  118. package/latticeai/services/memory_service.py +55 -21
  119. package/latticeai/services/model_engines.py +48 -33
  120. package/latticeai/services/model_errors.py +17 -0
  121. package/latticeai/services/model_loading.py +28 -25
  122. package/latticeai/services/model_runtime.py +228 -162
  123. package/latticeai/services/p_reinforce.py +22 -3
  124. package/latticeai/services/platform_runtime.py +83 -23
  125. package/latticeai/services/product_readiness.py +19 -17
  126. package/latticeai/services/review_queue.py +12 -0
  127. package/latticeai/services/router_context.py +1 -0
  128. package/latticeai/services/run_executor.py +4 -9
  129. package/latticeai/services/search_service.py +203 -28
  130. package/latticeai/services/tool_dispatch.py +28 -5
  131. package/latticeai/services/triggers.py +53 -4
  132. package/latticeai/services/upload_service.py +13 -2
  133. package/latticeai/setup/__init__.py +25 -0
  134. package/latticeai/setup/auto_setup.py +857 -0
  135. package/latticeai/setup/wizard.py +1264 -0
  136. package/latticeai/tools/__init__.py +278 -0
  137. package/{tools → latticeai/tools}/commands.py +67 -7
  138. package/{tools → latticeai/tools}/computer.py +1 -1
  139. package/{tools → latticeai/tools}/documents.py +1 -1
  140. package/{tools → latticeai/tools}/filesystem.py +3 -3
  141. package/latticeai/tools/knowledge.py +178 -0
  142. package/{tools → latticeai/tools}/local_files.py +1 -1
  143. package/{tools → latticeai/tools}/network.py +0 -1
  144. package/local_knowledge_api.py +4 -342
  145. package/package.json +22 -2
  146. package/scripts/brain_quality_eval.py +3 -1
  147. package/scripts/bump_version.py +3 -0
  148. package/scripts/capture_release_evidence.mjs +180 -0
  149. package/scripts/check_current_release_docs.mjs +142 -0
  150. package/scripts/check_i18n_literals.mjs +107 -31
  151. package/scripts/check_openapi_drift.mjs +56 -0
  152. package/scripts/export_openapi.py +67 -7
  153. package/scripts/i18n_literal_allowlist.json +22 -24
  154. package/scripts/run_integration_tests.mjs +72 -10
  155. package/scripts/validate_release_artifacts.py +49 -7
  156. package/scripts/wheel_smoke.py +5 -0
  157. package/setup_wizard.py +3 -1260
  158. package/src-tauri/Cargo.lock +1 -1
  159. package/src-tauri/Cargo.toml +1 -1
  160. package/src-tauri/tauri.conf.json +1 -1
  161. package/static/app/asset-manifest.json +11 -11
  162. package/static/app/assets/Act-C3dBrWE-.js +1 -0
  163. package/static/app/assets/Brain-DBYgdcjt.js +321 -0
  164. package/static/app/assets/Capture-Cf3hqRtN.js +1 -0
  165. package/static/app/assets/Library-CFfkNn3s.js +1 -0
  166. package/static/app/assets/System-BOurbT-v.js +1 -0
  167. package/static/app/assets/index-A3M9sElj.js +17 -0
  168. package/static/app/assets/index-Bmx9rzTc.css +2 -0
  169. package/static/app/assets/primitives-DcUUmhdC.js +1 -0
  170. package/static/app/assets/textarea-BklR6zN4.js +1 -0
  171. package/static/app/index.html +2 -2
  172. package/static/sw.js +1 -1
  173. package/tools/__init__.py +21 -269
  174. package/docs/CODE_REVIEW_2026-07-06.md +0 -764
  175. package/latticeai/runtime/app_context_runtime.py +0 -13
  176. package/latticeai/runtime/tail_wiring.py +0 -21
  177. package/scripts/com.pts.claudecode.discord.plist +0 -31
  178. package/scripts/pts-claudecode-discord-bridge.mjs +0 -207
  179. package/scripts/start-pts-claudecode-discord.sh +0 -51
  180. package/static/app/assets/Act-21lIXx2E.js +0 -1
  181. package/static/app/assets/Brain-BqUd5UJJ.js +0 -321
  182. package/static/app/assets/Capture-BA7Z2Q1u.js +0 -1
  183. package/static/app/assets/Library-bFMtyni3.js +0 -1
  184. package/static/app/assets/System-K6krGCqn.js +0 -1
  185. package/static/app/assets/index-C4R3ws30.js +0 -17
  186. package/static/app/assets/index-ChSeOB02.css +0 -2
  187. package/static/app/assets/primitives-sQU3it5I.js +0 -1
  188. package/static/app/assets/textarea-DK3Fd_lR.js +0 -1
  189. package/tools/knowledge.py +0 -95
package/README.md CHANGED
@@ -1,9 +1,28 @@
1
1
  # Lattice AI
2
2
 
3
- **Lattice AI 9.0.0 is the local-first Digital Brain platform. This release closes the July 8 code-review follow-up, hardens chat/runtime reliability, pays down cleanup debt across runtime utilities and setup detection, and keeps package, desktop, extension, static app, and documentation metadata synchronized to the 9.0.0 line.**
3
+ **Lattice AI 9.2.0 is the local-first Digital Brain platform. Model-Agnostic File Generation makes "create a file" work reliably with any loaded LLM: file requests run through a strict extension-aware prompt, robust extraction, per-type validation, one corrective retry, and a deterministic repair fallback, so even small local models (gemma/qwen class) always produce a structurally valid HTML, JSON, or code file.**
4
4
 
5
5
  **Lattice AI는 모델이 바뀌어도 내 지식과 맥락을 보존하는 로컬 우선 AI 브레인입니다.**
6
6
 
7
+ > The 9.2.0 release hardens file creation end to end: chat file requests are
8
+ > routed to a deterministic direct-write path (including type-only requests
9
+ > like "html 파일 만들어줘"), model replies are treated as untrusted content
10
+ > and cleaned of fences, reasoning blocks, and chat framing, and the agent
11
+ > JSON loop tolerates small-model formatting slips instead of aborting.
12
+ > The 9.1.0 release added request-scoped model routing,
13
+ > workspace-isolated graph identities and frontend caches, fail-closed admin
14
+ > gates, SSRF-safe web capture, private local state permissions, and reproducible
15
+ > release/test isolation. The same release introduced a human-first UI:
16
+ > a visible knowledge journey from conversation or source capture into the
17
+ > living Brain, its real relationship graph, and memory-grounded automation;
18
+ > the empty Brain home now keeps that complete loop inside one viewport, with
19
+ > continuous vital motion and behavior-driven listening, recall, synthesis,
20
+ > and action states. Task navigation and technical detail stay calm and
21
+ > approachable.
22
+ > Telegram access requires an explicit chat allowlist and server session token;
23
+ > public invitation access uses signed, expiring authorization instead of a
24
+ > static cookie; and unknown or unreadable Knowledge Graph scope fails closed.
25
+
7
26
  Your model is the voice you use today. Your Brain is the asset you keep.
8
27
  Lattice AI preserves conversations, documents, decisions, project context,
9
28
  relationships, and workflows on your computer by default. Cloud models, model
@@ -11,7 +30,9 @@ downloads, update checks, and other external communication happen only after
11
30
  explicit consent.
12
31
 
13
32
  It is not a ChatGPT clone, a model launcher, a graph database, or a note app.
14
- It is the finished private AI memory layer wrapped in a Living Brain experience with desktop source capture that uses native folder selection, ToolRegistry readiness, Config-driven DI for automation, and continued AgentRuntime/Tool wiring seams.
33
+ It is a Living Brain: chatting or adding a file, folder, note, or web page grows
34
+ durable memory; the real graph shows how that knowledge connects; and reviewed,
35
+ user-enabled automations can act from the same evidence.
15
36
 
16
37
  [![PyPI Version](https://img.shields.io/pypi/v/ltcai?label=PyPI)](https://pypi.org/project/ltcai/)
17
38
  [![npm Version](https://img.shields.io/npm/v/ltcai?label=npm)](https://www.npmjs.com/package/ltcai)
@@ -43,10 +64,13 @@ You need Lattice AI when:
43
64
  session as disposable.
44
65
  - Add documents, selected local folders, notes, screenshots, and web pages with
45
66
  source-aware memory.
46
- - See recent memories, older memories, topics, relationships, and the full
47
- knowledge graph when you want deeper structure.
48
- - Create consent-first Brain automation drafts for memory digests, project
49
- reviews, and follow-up suggestions before any schedule is enabled.
67
+ - Watch new knowledge enter the Brain and appear in a lightweight, real
68
+ relationship graph before opening the full graph explorer.
69
+ - See the Brain breathe, pulse, listen, recall, synthesize, and act while the
70
+ source, graph, composer, and next memory-grounded action remain visible in a
71
+ single desktop or mobile viewport.
72
+ - Create evidence-linked Brain automation drafts for memory digests, project
73
+ reviews, and follow-up suggestions, then explicitly enable them when ready.
50
74
  - Use a recommended local model without learning model internals first.
51
75
  - Keep advanced controls, audit logs, roles, and retention in a separate Admin
52
76
  surface.
@@ -58,18 +82,21 @@ You need Lattice AI when:
58
82
  2. Create or open a local profile.
59
83
  3. Let Lattice explain what this computer can run.
60
84
  4. Start with the recommended model as the Brain's voice, or skip and choose later.
61
- 5. Talk to your Brain.
62
- 6. Use the memory rings to move from current context to the full knowledge graph.
63
- 7. Back up, inspect, export, or restore the Brain when you need ownership actions.
85
+ 5. Talk to your Brain or add a file, folder, note, or web page.
86
+ 6. Watch the source become memory and connect to the visible knowledge graph.
87
+ 7. Ask, delegate, review, or explicitly enable a memory-grounded automation.
88
+ 8. Back up, inspect, export, or restore the Brain when you need ownership actions.
64
89
 
65
90
  ## Living Brain Flow
66
91
 
67
92
  The screenshots below are the latest checked-in visual evidence captures. They
68
93
  keep the first-run Brain flow, memory graph, source capture, model library,
69
94
  system view, admin console, and review center visible as release gates while
70
- 9.0.0 focuses on code-review closure, chat/runtime reliability,
71
- AgentRuntime and ToolRegistry maintainability, release artifact correctness,
72
- and frontend/runtime cleanup.
95
+ 9.2.0 makes file generation model-agnostic: chat file requests always end in
96
+ a structurally valid file regardless of which LLM is loaded, backed by
97
+ extraction, validation, corrective retry, and deterministic repair. The
98
+ captures below are the checked-in 9.2.0 visual release evidence for that
99
+ product flow.
73
100
 
74
101
  ### 1. Wake Brain
75
102
 
@@ -81,36 +108,40 @@ confirm owner, check the computer, choose the Brain voice.
81
108
  Choose the owner of the Brain. The profile is not a SaaS account by default; it
82
109
  is the local identity for the knowledge you keep.
83
110
 
84
- ![Login](output/release/v8.7.0/screenshots/01-login.png)
111
+ ![Login](output/release/v9.2.0/screenshots/01-login.png)
85
112
 
86
113
  ### 3. Recommended Models
87
114
 
88
115
  Start with a short list: safest recommendation, faster model, stronger model.
89
116
  Advanced details stay available without overwhelming first-time users.
90
117
 
91
- ![Recommended Models](output/release/v8.7.0/screenshots/02-recommended-models.png)
118
+ ![Recommended Models](output/release/v9.2.0/screenshots/02-recommended-models.png)
92
119
 
93
120
  ### 4. Install And Load
94
121
 
95
122
  Download and load only after consent. Lattice explains model size, local
96
123
  execution, and network use before work starts.
97
124
 
98
- ![Install and Load](output/release/v8.7.0/screenshots/03-install-load-progress.png)
125
+ ![Install and Load](output/release/v9.2.0/screenshots/03-install-load-progress.png)
99
126
 
100
127
  ### 5. Brain Chat
101
128
 
102
- Talk normally. Useful decisions and context become memory, then appear later as
103
- topics, relationships, graph structure, and the concentric memory rings around
104
- the Brain.
129
+ Talk normally or add a source from a single, living canvas. The default home
130
+ fits the complete knowledge lifecycle into one viewport: source controls feed
131
+ the breathing Brain, real nodes and animated relationships stay visible beside
132
+ it, and the composer plus grounded next action remain within reach. Brain motion
133
+ and its visible life signal follow real listening, recall, synthesis, and action
134
+ state. Detailed memory rings, provenance, conversation history, and
135
+ model/runtime proof open as overlays only when requested.
105
136
 
106
- ![Brain Brief Home](output/release/v8.7.0/screenshots/04-brain-chat-home.png)
137
+ ![One-viewport Living Brain Home](output/release/v9.2.0/screenshots/04-brain-chat-home.png)
107
138
 
108
139
  ### 6. Review Center
109
140
 
110
141
  Automation results are staged for review before they become durable decisions.
111
142
  Snooze, unsnooze, run now, approve, and dismiss actions stay explicit.
112
143
 
113
- ![Review Center](output/release/v8.7.0/screenshots/12-review-center.png)
144
+ ![Review Center](output/release/v9.2.0/screenshots/12-review-center.png)
114
145
 
115
146
  ## Brain Depths
116
147
 
@@ -126,10 +157,10 @@ The user travels inward from everyday memory to deeper structure:
126
157
 
127
158
  Walkthrough:
128
159
 
129
- ![v8.7.0 Living Brain walkthrough](output/release/v8.7.0/gifs/v8.7.0-living-brain-walkthrough.gif)
160
+ ![v9.2.0 Living Brain walkthrough](output/release/v9.2.0/gifs/v9.2.0-living-brain-walkthrough.gif)
130
161
 
131
162
  Screenshot index and capture notes:
132
- [output/release/v8.7.0/SCREENSHOT_INDEX.md](output/release/v8.7.0/SCREENSHOT_INDEX.md)
163
+ [output/release/v9.2.0/SCREENSHOT_INDEX.md](output/release/v9.2.0/SCREENSHOT_INDEX.md)
133
164
 
134
165
  ## Install
135
166
 
@@ -164,7 +195,11 @@ pip install "ltcai[local]"
164
195
  - **Product category**: local-first Digital Brain.
165
196
  - **Core capability**: private AI memory layer for conversations, documents,
166
197
  decisions, relationships, workflows, and project context.
167
- - **UX metaphor**: Living Brain.
198
+ - **UX metaphor**: a visible source-to-memory-to-graph-to-automation journey
199
+ centered on the Living Brain, not a generic chat or operations dashboard.
200
+ - **Product navigation**: desktop task navigation and a mobile bottom bar expose
201
+ Chat, Sources, Memory, and Work; model, workspace, and admin controls live in
202
+ the secondary menu.
168
203
  - **Desktop shell**: Tauri 2 starts a localhost sidecar.
169
204
  - **Frontend**: React, TypeScript, Vite, TanStack Query, Zustand, Cytoscape.js,
170
205
  React Flow, and generated OpenAPI types.
@@ -210,38 +245,43 @@ See [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for developer workflow details.
210
245
 
211
246
  ## Current Release
212
247
 
213
- The current release is **9.0.0 — Code Review Closure & Runtime Cleanup**:
214
-
215
- - July 8 code-review follow-ups are fixed across chat, agent runs, permissions,
216
- Telegram integration, runtime audit timestamps, embeddings, and Brain UI copy.
217
- - Chat/document streaming now preserves terminal SSE events and history/trace
218
- persistence when generation fails mid-stream.
219
- - Runtime audit appends use JSONL while legacy JSON reads remain compatible.
220
- - Shared JSON/ISO/hash, setup detection, and frontend helper utilities replace
221
- duplicated implementations across runtime, Brain Core, setup, and React code.
222
- - The legacy `server_app` namespace is allowlist-based instead of exposing all
223
- app-factory locals.
224
- - The main `/chat` handler now routes through focused intent handlers and shared
225
- response epilogues for lower future regression risk.
226
-
227
- Expected artifacts for 9.0.0 release must use exact filenames:
228
-
229
- - `dist/ltcai-9.0.0-py3-none-any.whl`
230
- - `dist/ltcai-9.0.0.tar.gz`
231
- - `ltcai-9.0.0.tgz`
232
- - `dist/ltcai-9.0.0.vsix`
233
- - `src-tauri/target/release/bundle/dmg/Lattice AI_9.0.0_aarch64.dmg`
248
+ The current release is **9.2.0 — Model-Agnostic File Generation**:
249
+
250
+ - A new `latticeai.core.file_generation` pipeline treats every model reply as
251
+ untrusted content: extension-aware strict prompting, extraction of the real
252
+ payload from fences/`<think>` blocks/chat framing, per-type structural
253
+ validation (complete HTML documents, parseable JSON, CSS rule blocks), one
254
+ corrective retry that tells the model what was wrong, and a deterministic
255
+ repair fallback that guarantees a valid file.
256
+ - Type-only requests without an explicit filename ("html 파일 만들어줘",
257
+ "웹페이지 만들어줘") now resolve to an inferred target and use the
258
+ deterministic direct-write path instead of the model-driven agent loop.
259
+ - The agent executor tolerates small-model formatting slips: `<think>` blocks
260
+ and trailing commas are stripped from action JSON, and parse failures feed a
261
+ corrective format reminder back to the model instead of aborting the run.
262
+ - The executor prompt pins exact file-content rules for `write_file` so
263
+ agent-created files are complete and fence-free.
264
+ - File writes report whether content was generated cleanly, retried, or
265
+ auto-repaired in the response payload (`generation` metadata).
266
+
267
+ Expected artifacts for 9.2.0 release must use exact filenames:
268
+
269
+ - `dist/ltcai-9.2.0-py3-none-any.whl`
270
+ - `dist/ltcai-9.2.0.tar.gz`
271
+ - `ltcai-9.2.0.tgz`
272
+ - `dist/ltcai-9.2.0.vsix`
273
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_9.2.0_aarch64.dmg`
234
274
 
235
275
  Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
236
276
 
237
277
  See [docs/ROADMAP_RECOMMENDATIONS.md](docs/ROADMAP_RECOMMENDATIONS.md) for the
238
- strategic roadmap slices applied through 9.0.0 and the follow-up tracks.
278
+ strategic roadmap slices applied through 9.2.0 and the follow-up tracks.
239
279
 
240
280
  ## Known Limitations
241
281
 
242
282
  - External package registries are owner-published and can lag behind GitHub.
243
283
  - PostgreSQL/pgvector is optional scale/migration tooling. SQLite remains the
244
- live local Brain store in 9.0.0.
284
+ live local Brain store in 9.2.0.
245
285
  - Docker, model downloads, cloud model calls, Telegram, Brain Network, and update
246
286
  checks require explicit user action.
247
287
  - Conversation does not fabricate answers when no model is loaded.
@@ -253,6 +293,8 @@ strategic roadmap slices applied through 9.0.0 and the follow-up tracks.
253
293
 
254
294
  | Version | Theme |
255
295
  | --- | --- |
296
+ | 9.2.0 | Model-Agnostic File Generation: chat file requests always produce structurally valid files with any LLM via extraction, per-type validation, corrective retry, deterministic repair, inferred file targets, and a fault-tolerant agent JSON loop |
297
+ | 9.1.0 | Code Review Completion & Fail-Closed Runtime: all July 11 review findings closed across fail-closed security, typed runtime/model/chat boundaries, honest frontend failures and tests, and repository hygiene |
256
298
  | 9.0.0 | Code Review Closure & Runtime Cleanup: July 8 code-review follow-ups fixed, chat/runtime reliability improved, duplicated utility surfaces consolidated, runtime audit append paths moved to JSONL, and release metadata/artifacts synchronized |
257
299
  | 8.9.0 | Scoped Memory & Tool Policy Hardening: authenticated history/KG reads are workspace-scoped, direct Tool API paths enforce registry policy, local approvals hash tokens at rest, AgentRuntime approval semantics are explicit, and frontend/runtime seams are split |
258
300
  | 8.8.0 | Brain Core Extraction & Recall Proof Hardening: internal-only Brain shim layers are removed, AgentRuntime run contracts/retry budgets are tighter, Brain Chat gains conversation controls, and citation recall exposes matched evidence |