ltcai 3.4.0 → 3.5.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.
- package/README.md +175 -225
- package/docs/RUNTIME_HOOK_COVERAGE_v3.5.0.md +56 -0
- package/docs/assets/v3.4.1/e2e_runtime_log.txt +42 -0
- package/docs/assets/v3.4.1/hooks-dispatch.png +0 -0
- package/docs/assets/v3.4.1/local-agent.png +0 -0
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/auth.py +37 -9
- package/latticeai/api/chat.py +6 -1
- package/latticeai/api/computer_use.py +21 -8
- package/latticeai/api/local_files.py +76 -10
- package/latticeai/api/tools.py +35 -35
- package/latticeai/core/agent.py +13 -2
- package/latticeai/core/builtin_hooks.py +106 -0
- package/latticeai/core/config.py +3 -0
- package/latticeai/core/hooks.py +76 -2
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/multi_agent.py +1 -1
- package/latticeai/core/oidc.py +205 -0
- package/latticeai/core/security.py +59 -5
- package/latticeai/core/workflow_engine.py +3 -3
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/server_app.py +22 -34
- package/latticeai/services/platform_runtime.py +18 -6
- package/latticeai/services/tool_dispatch.py +2 -0
- package/latticeai/services/upload_service.py +24 -4
- package/local_knowledge_api.py +27 -1
- package/package.json +3 -3
- package/requirements.txt +1 -0
- package/scripts/check_python.py +87 -0
- package/static/css/reference/account.css +1 -1
- package/static/css/reference/admin.css +1 -1
- package/static/css/reference/base.css +8 -5
- package/static/css/reference/chat.css +8 -8
- package/static/css/reference/graph.css +2 -2
- package/static/css/responsive.css +2 -2
- package/static/v3/asset-manifest.json +9 -9
- package/static/v3/css/{lattice.shell.6ceea7c8.css → lattice.shell.8fcc9d33.css} +2 -1
- package/static/v3/css/lattice.shell.css +2 -1
- package/static/v3/js/{app.c4acfdd8.js → app.d086489d.js} +1 -1
- package/static/v3/js/core/{components.35f02e4c.js → components.f25b3b93.js} +1 -1
- package/static/v3/js/core/components.js +1 -1
- package/static/v3/js/core/{shell.80a6ad82.js → shell.d05266f5.js} +1 -1
- package/static/v3/js/views/{hooks.13845954.js → hooks.37895880.js} +12 -7
- package/static/v3/js/views/hooks.js +12 -7
- package/static/v3/js/views/{my-computer.c3ef5283.js → my-computer.d9d9ae1c.js} +7 -4
- package/static/v3/js/views/my-computer.js +7 -4
- package/static/workspace.css +1 -1
- package/tools/__init__.py +276 -0
- package/tools/commands.py +188 -0
- package/tools/computer.py +185 -0
- package/tools/documents.py +243 -0
- package/tools/filesystem.py +560 -0
- package/tools/knowledge.py +97 -0
- package/tools/local_files.py +69 -0
- package/tools/network.py +66 -0
- package/tools.py +0 -1525
package/README.md
CHANGED
|
@@ -3,11 +3,10 @@
|
|
|
3
3
|
|
|
4
4
|
# Lattice AI
|
|
5
5
|
|
|
6
|
-
**
|
|
6
|
+
**Local-first AI workspace for your files, chats, knowledge, models, and agents.**
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Basic / Advanced / Admin modes.
|
|
8
|
+
Keep your work context on your own machine. Connect documents, conversations,
|
|
9
|
+
local models, graph memory, and agent workflows in one self-hosted workspace.
|
|
11
10
|
</div>
|
|
12
11
|
|
|
13
12
|
<div align="center">
|
|
@@ -23,7 +22,96 @@
|
|
|
23
22
|
|
|
24
23
|
</div>
|
|
25
24
|
|
|
26
|
-

|
|
25
|
+

|
|
26
|
+
|
|
27
|
+
> **Lattice AI is a self-hosted AI workspace that keeps your files, chats, knowledge, local models, and agents together on your own machine.**
|
|
28
|
+
|
|
29
|
+
It isn't another chat window. It's a workspace built around your work — local-first
|
|
30
|
+
by default, cloud only when you choose.
|
|
31
|
+
|
|
32
|
+
## Why install Lattice AI?
|
|
33
|
+
|
|
34
|
+
Most AI tools only answer questions in a chat window. Lattice AI gives you a
|
|
35
|
+
workspace around the work itself:
|
|
36
|
+
|
|
37
|
+
- **Keep everything in one place** — files, notes, chats, and decisions live
|
|
38
|
+
together instead of scattered across tabs and apps.
|
|
39
|
+
- **Turn documents into knowledge** — uploads and connected folders become
|
|
40
|
+
searchable, linked context you can reuse.
|
|
41
|
+
- **Search the way you think** — fuse keyword, vector, and knowledge-graph
|
|
42
|
+
signals in a single query.
|
|
43
|
+
- **Stay private and offline-capable** — run local models through MLX, Ollama, or
|
|
44
|
+
LM Studio; nothing leaves your machine unless you opt in.
|
|
45
|
+
- **Use cloud models only when you choose** — bring an API key for cloud LLMs
|
|
46
|
+
when you want them, not by default.
|
|
47
|
+
- **Automate with agents you can inspect** — workflows leave behind plans,
|
|
48
|
+
reviews, retries, and results you can replay.
|
|
49
|
+
|
|
50
|
+
Lattice AI is not a clone of ChatGPT, Claude, Cursor, Obsidian, or Notion. It
|
|
51
|
+
sits in a different place: a **workspace** that ties local/self-hosted AI, your
|
|
52
|
+
files, project knowledge, hybrid search, local and optional cloud models, agents,
|
|
53
|
+
and workflows together — and runs on your own hardware.
|
|
54
|
+
|
|
55
|
+
## What can you do with it?
|
|
56
|
+
|
|
57
|
+
- Build a private AI workspace for a project, scoped to your machine.
|
|
58
|
+
- Chat with your local files, images, and workspace memory.
|
|
59
|
+
- Upload documents — or connect a folder — and turn them into searchable knowledge.
|
|
60
|
+
- Explore how files, decisions, conversations, and entities connect in a
|
|
61
|
+
Knowledge Graph.
|
|
62
|
+
- Run local models through MLX, Ollama, or LM Studio, and use cloud LLMs only when
|
|
63
|
+
you want to.
|
|
64
|
+
- Create repeatable agent workflows for research, coding, analysis, and
|
|
65
|
+
documentation.
|
|
66
|
+
- Separate personal work from organization work.
|
|
67
|
+
- Switch between Basic, Advanced, and Admin modes depending on your role.
|
|
68
|
+
|
|
69
|
+
## Product Tour
|
|
70
|
+
|
|
71
|
+
### Start from the workspace home
|
|
72
|
+
|
|
73
|
+

|
|
74
|
+
|
|
75
|
+
The home view shows workspace readiness, model state, retrieval status, and the
|
|
76
|
+
main entry points — derived from real local state, never placeholder counters.
|
|
77
|
+
|
|
78
|
+
### Chat with files, images, and workspace context
|
|
79
|
+
|
|
80
|
+

|
|
81
|
+
|
|
82
|
+
Chat is wired to your files, graph context, memory, and model routing — including
|
|
83
|
+
vision-capable image input by attach, drag-and-drop, or paste.
|
|
84
|
+
|
|
85
|
+
### Bring documents into the workspace
|
|
86
|
+
|
|
87
|
+

|
|
88
|
+
|
|
89
|
+
Uploads and connected folders become indexed workspace context, searchable from
|
|
90
|
+
chat and hybrid search.
|
|
91
|
+
|
|
92
|
+
### Understand knowledge visually
|
|
93
|
+
|
|
94
|
+

|
|
95
|
+
|
|
96
|
+
The Knowledge Graph shows how files, decisions, conversations, and entities
|
|
97
|
+
connect — context that stays useful even when you switch models.
|
|
98
|
+
|
|
99
|
+
### Run agent workflows
|
|
100
|
+
|
|
101
|
+

|
|
102
|
+
|
|
103
|
+
Agents turn a goal into an inspectable run — roles, logs, review, and retry — that
|
|
104
|
+
you can read back step by step.
|
|
105
|
+
|
|
106
|
+
### Extend with hooks and the local runtime
|
|
107
|
+
|
|
108
|
+

|
|
109
|
+
|
|
110
|
+

|
|
111
|
+
|
|
112
|
+
Advanced users wire lifecycle hooks into runs, tools, workflows, uploads, and
|
|
113
|
+
indexing — and see the on-device local runtime's real status, handshake, and
|
|
114
|
+
folder-watch activity.
|
|
27
115
|
|
|
28
116
|
## Install
|
|
29
117
|
|
|
@@ -65,254 +153,116 @@ Then open:
|
|
|
65
153
|
http://127.0.0.1:4825/app
|
|
66
154
|
```
|
|
67
155
|
|
|
68
|
-
|
|
156
|
+
Working from a development checkout:
|
|
69
157
|
|
|
70
158
|
```bash
|
|
71
159
|
npm install
|
|
72
160
|
npm run dev
|
|
73
161
|
```
|
|
74
162
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- **
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- **
|
|
94
|
-
|
|
95
|
-
- **
|
|
96
|
-
|
|
97
|
-
- **
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
Most AI tools split your work across a chat window, a model picker, loose files,
|
|
114
|
-
and disconnected automations. Lattice AI keeps those parts together:
|
|
115
|
-
|
|
116
|
-
- files and conversations become graph context;
|
|
117
|
-
- graph context feeds pipelines and coding actions;
|
|
118
|
-
- model cards disclose country, company, run mode, internet usage, and model
|
|
119
|
-
identity;
|
|
120
|
-
- personal and organization workspaces keep team workflows separate from local
|
|
121
|
-
work;
|
|
122
|
-
- multi-agent workflows leave behind replayable plans, reviews, retries, and
|
|
123
|
-
outcomes.
|
|
124
|
-
|
|
125
|
-
## v3.4.0 Highlights
|
|
126
|
-
|
|
127
|
-
Lattice AI v3.4.0 is the **platform completion** release: it closes the remaining
|
|
128
|
-
non-enterprise functionality gaps the v3.3.0 honesty audit flagged, so the
|
|
129
|
-
local-first workspace is complete and demonstrable end-to-end. Each item below is
|
|
130
|
-
runtime-verified on a live server, not only wired in source.
|
|
131
|
-
|
|
132
|
-
- **Hooks now execute.** A real dispatch engine (`run_hook` / `run_hooks` /
|
|
133
|
-
`fire_hook` + `HookContext` / `HookResult`) runs hooks at genuine lifecycle
|
|
134
|
-
points — agents (pre/post-run), workflows (start/end), tools (pre/post-tool),
|
|
135
|
-
and the upload pipeline. `pre_*` hooks can gate (block) an action; every
|
|
136
|
-
dispatch is recorded to a persisted run log surfaced in the Hooks view.
|
|
137
|
-
- **Uploads appear in Files.** Uploaded documents are listed with live ingest →
|
|
138
|
-
index state (`/knowledge-graph/documents`), completing upload → Files →
|
|
139
|
-
Knowledge Graph → Hybrid Search → Chat.
|
|
140
|
-
- **Vision (VLM) image input.** The Chat composer accepts images by attach,
|
|
141
|
-
drag-and-drop, or paste, with a preview and a **Vision Enabled / Disabled**
|
|
142
|
-
badge driven by the active model's capability.
|
|
143
|
-
- **Run agents from the Agents view.** A Run console (goal + roles → Run / Stop /
|
|
144
|
-
Status / Queue / Logs) executes the multi-agent pipeline locally; it runs
|
|
145
|
-
without a model and fires its pre/post-run hooks.
|
|
146
|
-
- **On-device Local Agent + Connect Folder + Folder Watch.** My Computer reports
|
|
147
|
-
the real local-runtime agent status and handshake; folders can be connected and
|
|
148
|
-
watched (debounced reindex on change) through the existing on-device endpoints.
|
|
149
|
-
- **Enterprise stays honestly disabled.** SSO, SCIM, DLP, Private VPC, SIEM, and
|
|
150
|
-
enterprise RBAC remain off with honest "not available in this build" states.
|
|
151
|
-
|
|
152
|
-
See [RELEASE_NOTES_v3.4.0.md](RELEASE_NOTES_v3.4.0.md),
|
|
153
|
-
[PLATFORM_COMPLETION_REPORT_v3.4.0.md](PLATFORM_COMPLETION_REPORT_v3.4.0.md), and
|
|
154
|
-
the evidence-traced [FEATURE_STATUS.md](FEATURE_STATUS.md).
|
|
155
|
-
|
|
156
|
-
## v3.3.1 Highlights
|
|
157
|
-
|
|
158
|
-
Lattice AI v3.3.1 rebuilds the visible `/app` product experience while
|
|
159
|
-
preserving the existing local-first runtime. The app now presents Chat, Files,
|
|
160
|
-
Search, Knowledge, Memory, Models, Settings, Advanced tooling, and Admin
|
|
161
|
-
workflows with clearer navigation and honest live/unavailable states.
|
|
162
|
-
|
|
163
|
-
- **Visual product rebuild** — compact rail navigation, quieter topbar,
|
|
164
|
-
command-palette search, retrieval readiness footer, and denser controls.
|
|
165
|
-
- **Truthful Home dashboard** — backend, model, retrieval, memory, source, and
|
|
166
|
-
trace readiness are derived from real endpoints instead of fabricated counts.
|
|
167
|
-
- **Basic / Advanced / Admin navigation** — Basic focuses on core workspace
|
|
168
|
-
workflows; Advanced exposes agents, workflows, skills, hooks, and MCP; Admin
|
|
169
|
-
keeps organization controls separate.
|
|
170
|
-
- **Files and Settings clarity** — manual upload is available immediately,
|
|
171
|
-
folder watching is explicitly tied to the desktop local agent, and Settings
|
|
172
|
-
shows backend, agent, model, telemetry, and embedding readiness.
|
|
173
|
-
- **Design system refresh** — cooler neutral light/dark tokens, tighter 8px
|
|
174
|
-
radius discipline, compact cards/tables/stats/buttons, and regenerated
|
|
175
|
-
hashed v3 assets.
|
|
176
|
-
|
|
177
|
-
The v3.2.0 platform remains the feature-complete foundation: multi-agent
|
|
178
|
-
collaboration, Agent Registry, Marketplace templates, Workflow Agents,
|
|
179
|
-
Autonomous Planning, Long-Term Memory, Skills, Hooks, Tool Registry, MCP
|
|
180
|
-
Manager, production embedding profiles, and hash-manifested `/app` assets.
|
|
181
|
-
Release audit: [docs/V3_2_AUDIT.md](docs/V3_2_AUDIT.md).
|
|
182
|
-
|
|
183
|
-
## Screenshots
|
|
184
|
-
|
|
185
|
-
All screenshots are the v3.4.0 `/app` shell. Live model output (VLM inference,
|
|
186
|
-
agent-generated text) requires a loaded local model and is not depicted.
|
|
187
|
-
|
|
188
|
-
### Home
|
|
189
|
-
|
|
190
|
-

|
|
191
|
-
|
|
192
|
-
### Chat with Vision (VLM) image input
|
|
193
|
-
|
|
194
|
-

|
|
195
|
-
|
|
196
|
-
### Files — uploaded documents + Connect Folder
|
|
197
|
-
|
|
198
|
-

|
|
199
|
-
|
|
200
|
-
### Run agents from the Agents view
|
|
201
|
-
|
|
202
|
-

|
|
203
|
-
|
|
204
|
-
### Hooks dispatch + run log
|
|
205
|
-
|
|
206
|
-

|
|
207
|
-
|
|
208
|
-
### Local Agent (on-device runtime)
|
|
209
|
-
|
|
210
|
-

|
|
211
|
-
|
|
212
|
-
### Knowledge Graph
|
|
213
|
-
|
|
214
|
-

|
|
215
|
-
|
|
216
|
-
## Knowledge Graph Flow
|
|
163
|
+
## Core Features
|
|
164
|
+
|
|
165
|
+
- **Local-first workspace** — your data, models, and workspace state live on your
|
|
166
|
+
machine by default; cloud is opt-in.
|
|
167
|
+
- **Files and connected folders** — upload documents or connect a local folder;
|
|
168
|
+
Lattice indexes them and watches connected folders for changes.
|
|
169
|
+
- **Chat with workspace context** — conversations are grounded in your files,
|
|
170
|
+
knowledge graph, and memory, with vision-capable image input.
|
|
171
|
+
- **Knowledge Graph** — files, images, notes, conversations, and decisions become
|
|
172
|
+
linked entities and relationships you can explore.
|
|
173
|
+
- **Hybrid Search** — keyword, vector, and graph signals are fused into one ranked
|
|
174
|
+
result set.
|
|
175
|
+
- **Local model support** — run multimodal models locally via MLX, Ollama, or LM
|
|
176
|
+
Studio, with hardware-aware recommendations and source disclosure.
|
|
177
|
+
- **Optional cloud model routing** — add OpenAI-compatible or other cloud models
|
|
178
|
+
when you choose; model cards disclose origin, run mode, and internet use.
|
|
179
|
+
- **Multi-agent workflows** — turn goals into runs with roles, handoffs, review,
|
|
180
|
+
retries, and replayable timelines.
|
|
181
|
+
- **Skills, hooks, tools, and MCP** — extend the workspace with skills, lifecycle
|
|
182
|
+
hooks, a governed tool registry, and Model Context Protocol servers.
|
|
183
|
+
- **Personal / Organization workspaces** — keep personal work separate from team
|
|
184
|
+
work with role-aware views.
|
|
185
|
+
- **Basic / Advanced / Admin modes** — show only what each role needs, from core
|
|
186
|
+
workflows to agent tooling to administration.
|
|
187
|
+
|
|
188
|
+
## Latest Release
|
|
189
|
+
|
|
190
|
+
### v3.4.1 — Runtime Completion
|
|
191
|
+
|
|
192
|
+
- Full hooks lifecycle across HTTP, agent, workflow, upload, and indexing paths.
|
|
193
|
+
- Real Local Agent probes instead of hardcoded readiness.
|
|
194
|
+
- Connect Folder verified end-to-end.
|
|
195
|
+
- Folder Watch verified, including restore after restart.
|
|
196
|
+
|
|
197
|
+
See [RELEASE_NOTES_v3.4.1.md](RELEASE_NOTES_v3.4.1.md) and
|
|
198
|
+
[FEATURE_STATUS.md](FEATURE_STATUS.md).
|
|
199
|
+
|
|
200
|
+
## How it works
|
|
217
201
|
|
|
218
202
|
```text
|
|
219
|
-
files /
|
|
220
|
-
->
|
|
221
|
-
->
|
|
222
|
-
->
|
|
223
|
-
->
|
|
224
|
-
->
|
|
225
|
-
-> coding actions / analysis / documents / team workflows
|
|
203
|
+
files / chats / notes / images / decisions
|
|
204
|
+
-> workspace memory
|
|
205
|
+
-> knowledge graph
|
|
206
|
+
-> hybrid search
|
|
207
|
+
-> chat / agents / workflows
|
|
208
|
+
-> reusable outputs
|
|
226
209
|
```
|
|
227
210
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
211
|
+
- Your content stays on your machine and becomes durable workspace memory.
|
|
212
|
+
- Memory is organized into a knowledge graph of entities and relationships.
|
|
213
|
+
- Hybrid search fuses keyword, vector, and graph signals over that context.
|
|
214
|
+
- Chat, agents, and workflows draw on the same grounded context.
|
|
215
|
+
- Outputs — documents, analysis, and decisions — feed back into the workspace.
|
|
231
216
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
graph data while adding derived vector rows that can be rebuilt at any time.
|
|
217
|
+
For the deeper design, see [ARCHITECTURE.md](ARCHITECTURE.md) and
|
|
218
|
+
[docs/architecture.md](docs/architecture.md).
|
|
235
219
|
|
|
236
|
-
|
|
237
|
-
`GET /api/embeddings/providers`, while `lattice-local-hash-v1` remains a
|
|
238
|
-
deterministic fallback for offline indexing and tests. It is never presented as
|
|
239
|
-
a production semantic embedding model.
|
|
240
|
-
|
|
241
|
-
Core API contracts:
|
|
220
|
+
## Documentation
|
|
242
221
|
|
|
243
|
-
|
|
244
|
-
- `GET /api/search/keyword?q=...`
|
|
245
|
-
- `GET /api/search/vector?q=...`
|
|
246
|
-
- `GET /api/graph`
|
|
247
|
-
- `GET /api/graph/node?node_id=...`
|
|
248
|
-
- `GET /api/graph/relationship`
|
|
249
|
-
- `GET /api/index/status`
|
|
250
|
-
- `POST /api/index/rebuild`
|
|
222
|
+
### Product and principles
|
|
251
223
|
|
|
252
|
-
|
|
253
|
-
|
|
224
|
+
- [PROJECT_PRINCIPLES.md](PROJECT_PRINCIPLES.md) — product principles
|
|
225
|
+
- [AI_PHILOSOPHY.md](AI_PHILOSOPHY.md) — how AI is used in the workspace
|
|
226
|
+
- [MODEL_POLICY.md](MODEL_POLICY.md) — local model recommendation policy
|
|
254
227
|
|
|
255
|
-
|
|
228
|
+
### Architecture
|
|
256
229
|
|
|
257
|
-
|
|
258
|
-
|
|
230
|
+
- [ARCHITECTURE.md](ARCHITECTURE.md) — workspace, graph, pipeline, and model overview
|
|
231
|
+
- [docs/architecture.md](docs/architecture.md) — full architecture reference
|
|
232
|
+
- [docs/V3_BACKEND_ARCHITECTURE.md](docs/V3_BACKEND_ARCHITECTURE.md) — backend storage, search, and retrieval
|
|
259
233
|
|
|
260
|
-
|
|
261
|
-
| --- | --- | --- |
|
|
262
|
-
| Gemma 4 | Default Google multimodal family | `mlx-community/gemma-4-12b-it-4bit` |
|
|
263
|
-
| Gemma 4 large | Higher-quality local multimodal work | `mlx-community/gemma-4-31b-it-4bit` |
|
|
264
|
-
| Qwen3-VL | Smaller, balanced multimodal options | `mlx-community/Qwen3-VL-4B-Instruct-4bit` |
|
|
265
|
-
| Llama 4 | Meta multimodal option | `mlx-community/Llama-4-Scout-17B-16E-Instruct-4bit` |
|
|
234
|
+
### Knowledge and retrieval
|
|
266
235
|
|
|
267
|
-
|
|
268
|
-
internet requirement, and model name. See [MODEL_POLICY.md](MODEL_POLICY.md).
|
|
236
|
+
- [KNOWLEDGE_GRAPH.md](KNOWLEDGE_GRAPH.md) — graph model and behavior
|
|
269
237
|
|
|
270
|
-
|
|
238
|
+
### Agents and workflows
|
|
271
239
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
-> files, chats, screenshots, model choices, workflow events
|
|
275
|
-
-> Knowledge Graph
|
|
276
|
-
-> AI Pipeline
|
|
277
|
-
-> Multi-Agent Workflow
|
|
278
|
-
-> coding actions, documents, analysis, team handoffs
|
|
279
|
-
```
|
|
240
|
+
- [docs/MULTI_AGENT_RUNTIME.md](docs/MULTI_AGENT_RUNTIME.md) — multi-agent workflow runtime
|
|
241
|
+
- [docs/WORKFLOW_DESIGNER.md](docs/WORKFLOW_DESIGNER.md) — AI pipeline designer
|
|
280
242
|
|
|
281
|
-
|
|
243
|
+
### Extensions
|
|
282
244
|
|
|
283
|
-
-
|
|
284
|
-
- Knowledge Graph storage and graph APIs
|
|
285
|
-
- AI pipeline and workflow designer
|
|
286
|
-
- Multi-agent handoff, review, retry, and replay records
|
|
287
|
-
- Local model management and model recommendation catalog
|
|
288
|
-
- VS Code / Cursor / VSCodium extension surface
|
|
289
|
-
- Personal and organization workspace boundaries
|
|
245
|
+
- [docs/PLUGIN_SDK.md](docs/PLUGIN_SDK.md) — plugin SDK
|
|
290
246
|
|
|
291
|
-
|
|
247
|
+
### Releases
|
|
292
248
|
|
|
293
|
-
- [
|
|
294
|
-
- [
|
|
295
|
-
- [
|
|
296
|
-
- [
|
|
297
|
-
- [
|
|
298
|
-
- [KNOWLEDGE_GRAPH.md](KNOWLEDGE_GRAPH.md) — graph model and behavior
|
|
299
|
-
- [docs/MULTI_AGENT_RUNTIME.md](docs/MULTI_AGENT_RUNTIME.md) — multi-agent workflow runtime
|
|
300
|
-
- [docs/WORKFLOW_DESIGNER.md](docs/WORKFLOW_DESIGNER.md) — AI pipeline designer
|
|
301
|
-
- [docs/REALTIME_COLLABORATION.md](docs/REALTIME_COLLABORATION.md) — realtime workspace events
|
|
302
|
-
- [docs/ENTERPRISE.md](docs/ENTERPRISE.md) — organization workspaces and SSO
|
|
303
|
-
- [docs/PLUGIN_SDK.md](docs/PLUGIN_SDK.md) — plugin SDK
|
|
304
|
-
- [RELEASE_NOTES.md](RELEASE_NOTES.md) and [docs/CHANGELOG.md](docs/CHANGELOG.md)
|
|
249
|
+
- [RELEASE_NOTES.md](RELEASE_NOTES.md) — current release notes
|
|
250
|
+
- [RELEASE_NOTES_v3.4.1.md](RELEASE_NOTES_v3.4.1.md)
|
|
251
|
+
- [RELEASE_NOTES_v3.4.0.md](RELEASE_NOTES_v3.4.0.md)
|
|
252
|
+
- [RELEASE_NOTES_v3.3.0.md](RELEASE_NOTES_v3.3.0.md)
|
|
253
|
+
- [CHANGELOG.md](CHANGELOG.md) and [docs/CHANGELOG.md](docs/CHANGELOG.md)
|
|
305
254
|
|
|
306
|
-
## Release
|
|
255
|
+
## Release History
|
|
307
256
|
|
|
308
257
|
| Version | Theme |
|
|
309
258
|
| --- | --- |
|
|
310
|
-
| **3.4.
|
|
311
|
-
| 3.
|
|
312
|
-
|
|
|
313
|
-
| 3.
|
|
314
|
-
| 3.
|
|
315
|
-
| 3.0
|
|
259
|
+
| **3.4.1** | Runtime completion — full hooks lifecycle, real Local Agent probes, Connect Folder and Folder Watch verified end-to-end |
|
|
260
|
+
| 3.4.0 | Platform completion — hooks execution, uploads in Files, vision image input, agent run trigger, on-device Local Agent / Connect Folder / Folder Watch |
|
|
261
|
+
| 3.3.1 | Visual product rebuild — rebuilt `/app` shell, Basic/Advanced/Admin navigation, refreshed design system |
|
|
262
|
+
| **3.3.0** | Product quality & honesty release — evidence-based feature audit, single-source version truth, working document upload, documented design system |
|
|
263
|
+
| 3.2.0 | Feature-complete platform — multi-agent collaboration, agent registry, marketplace + templates, workflow agents, long-term memory, skills/hooks/tool registries, MCP manager |
|
|
264
|
+
| 3.1.0 | Mainline platform completion — native `/app` workflows, production embedding profiles, AgentRuntime/registries, hashed v3 assets |
|
|
265
|
+
| 3.0.1 | Release-blocker remediation — provider-backed embeddings, unified AgentRuntime boundary, every v3 surface connected or clearly unavailable |
|
|
316
266
|
| 3.0.0 | v3 local-first AI workspace platform — `/app`, Native Chat, Knowledge Graph, Vector Index, Hybrid Search, workspace modes |
|
|
317
267
|
| 2.2.7 | Visual system stabilization — cohesive dark/light screens, crisp chat composer, dark graph canvas, Workspace OS polish |
|
|
318
268
|
| 2.2.6 | Token-native CSS foundation |
|
|
@@ -0,0 +1,56 @@
|
|
|
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%**.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
login: 200 session_cookie=True
|
|
2
|
+
----------------------------------------------------------------------
|
|
3
|
+
A) LOCAL AGENT — real probe
|
|
4
|
+
mode=online online=True pid=31230 version=3.4.0
|
|
5
|
+
filesystem_access=True watcher_available=True
|
|
6
|
+
handshake.ok=True latency_ms=0.85 graph_reachable=True
|
|
7
|
+
error=None connected_folders=1 watched_folders=1
|
|
8
|
+
----------------------------------------------------------------------
|
|
9
|
+
B) HOOKS — tool lifecycle (pre_tool + post_tool) via /tools/list_dir
|
|
10
|
+
post_tool e2e-observe-post_tool status=advisory out=
|
|
11
|
+
post_tool e2e-observe-post_tool status=advisory out=
|
|
12
|
+
pre_tool Sensitive-data guard status=ok out=sensitivity=none labels=none
|
|
13
|
+
pre_tool Tool permission gate status=ok out=policy[list_dir]: risk=low approval=False
|
|
14
|
+
----------------------------------------------------------------------
|
|
15
|
+
C) HOOKS — agent run fires pre_run + post_run
|
|
16
|
+
run status=ok pre_run.ran=1 post_run.ran=1
|
|
17
|
+
----------------------------------------------------------------------
|
|
18
|
+
D) HOOKS — upload fires pre_upload/post_upload + pre_index/post_index
|
|
19
|
+
graph_node=file:e9d3a2e2aa886585c05fbcc8 upload lifecycle kinds: ['post_index', 'post_upload', 'pre_index', 'pre_upload']
|
|
20
|
+
----------------------------------------------------------------------
|
|
21
|
+
E) CONNECT FOLDER — real local folder through approval + index
|
|
22
|
+
token=yes approve=None indexed=None watch=True
|
|
23
|
+
connect index lifecycle kinds: ['post_index', 'pre_index']
|
|
24
|
+
----------------------------------------------------------------------
|
|
25
|
+
F) FILES + RETRIEVAL + HYBRID over connected folder content
|
|
26
|
+
documents total=5 files=['upload_test.md', 'fresh.txt', 'readme.md', 'notes.txt', 'upload_test.md']
|
|
27
|
+
connected source watch_active=True indexed=None
|
|
28
|
+
hybrid matches=25 top=upload_test.md
|
|
29
|
+
----------------------------------------------------------------------
|
|
30
|
+
G) FOLDER WATCH — create file -> debounced reindex -> post_index(folder.reindex)
|
|
31
|
+
created fresh.txt; waiting ~8s for debounced reindex...
|
|
32
|
+
folder.reindex hooks: before=2 after=5 watcher active=['source:f5800c5cb0681b6f19ae59e2'] available=True
|
|
33
|
+
----------------------------------------------------------------------
|
|
34
|
+
E2E RESULTS:
|
|
35
|
+
PASS local_agent_probed
|
|
36
|
+
PASS tool_hooks_fire
|
|
37
|
+
PASS agent_run_hooks
|
|
38
|
+
PASS upload_hooks
|
|
39
|
+
PASS connect_folder
|
|
40
|
+
PASS retrieval
|
|
41
|
+
PASS folder_watch
|
|
42
|
+
RESTORE-ON-RESTART (after a prior reboot): active sources = ['source:f5800c5cb0681b6f19ae59e2'] -> PASS
|
|
Binary file
|
|
Binary file
|
package/latticeai/__init__.py
CHANGED