ltcai 2.2.1 → 2.2.7
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 +183 -140
- package/codex_telegram_bot.py +6 -2
- package/docs/CHANGELOG.md +100 -23
- package/docs/EDITION_STRATEGY.md +8 -8
- package/docs/ENTERPRISE.md +5 -5
- package/docs/PLUGIN_SDK.md +4 -4
- package/docs/V2_ARCHITECTURE.md +9 -9
- package/docs/architecture.md +18 -17
- package/docs/images/admin-dashboard.png +0 -0
- package/docs/images/knowledge-graph.png +0 -0
- package/docs/images/lattice-ai-demo.gif +0 -0
- package/docs/images/lattice-ai-hero.png +0 -0
- package/docs/images/mobile-responsive.png +0 -0
- package/docs/images/pipeline.png +0 -0
- package/docs/images/workspace-dark.png +0 -0
- package/docs/images/workspace-light.png +0 -0
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/static_routes.py +10 -0
- package/latticeai/core/logging_safety.py +62 -0
- package/latticeai/core/workspace_os.py +1 -1
- package/package.json +10 -5
- package/static/account.html +9 -4
- package/static/activity.html +4 -4
- package/static/admin.html +8 -3
- package/static/agents.html +4 -4
- package/static/chat.html +15 -10
- package/static/css/reference/account.css +303 -0
- package/static/css/reference/admin.css +610 -0
- package/static/css/reference/base.css +1658 -0
- package/static/{lattice-reference.css → css/reference/chat.css} +243 -3599
- package/static/css/reference/graph.css +1016 -0
- package/static/css/responsive.css +226 -4
- package/static/css/tokens.css +16 -5
- package/static/favicon.ico +0 -0
- package/static/graph.html +9 -4
- package/static/platform.css +1 -1
- package/static/plugins.html +4 -4
- package/static/scripts/chat.js +187 -69
- package/static/scripts/ux.js +1 -1
- package/static/sw.js +5 -3
- package/static/workflows.html +4 -4
- package/static/workspace.css +75 -14
- package/static/workspace.html +5 -5
- package/telegram_bot.py +18 -14
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,77 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.2.7] - 2026-06-05
|
|
4
|
+
|
|
5
|
+
> Visual Stabilization Release — browser-rendered screens were reviewed and
|
|
6
|
+
> polished until Chat, onboarding, graph, Workspace OS, and operational panels
|
|
7
|
+
> felt like one product.
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **Chat composer haze** — removed the dark-mode white/milky bottom composer
|
|
12
|
+
effect and the legacy inner textarea border; the shell now owns the focus
|
|
13
|
+
state and the attachment/send controls stay readable.
|
|
14
|
+
- **Knowledge Graph canvas** — replaced the washed-out light graph work surface
|
|
15
|
+
with an intentional dark canvas treatment.
|
|
16
|
+
- **Workspace OS dark surfaces** — relationship/list cards, inputs, tags,
|
|
17
|
+
health cards, and capability cards no longer fall back to hardcoded white.
|
|
18
|
+
- **Onboarding/modals** — workspace select, PC environment analysis,
|
|
19
|
+
recommendation result, auto setup, mode select, pipeline, My Computer,
|
|
20
|
+
profile, settings, Private VPC, and model-state panels now share the same
|
|
21
|
+
dark panel language.
|
|
22
|
+
- **Account dark contrast** — account/register logo text, inputs, and window
|
|
23
|
+
controls remain readable in dark mode.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- **Cache-busting** — all versioned frontend assets now use `?v=2.2.7`,
|
|
28
|
+
including `/static/scripts/chat.js?v=2.2.7`.
|
|
29
|
+
- **Version sync** — Python package, npm package, VS Code extension, Workspace
|
|
30
|
+
OS, lockfiles, and runtime metadata aligned at `2.2.7`.
|
|
31
|
+
|
|
32
|
+
### Validation
|
|
33
|
+
|
|
34
|
+
- Release target includes Python compile/pytest, npm lint/typecheck/test/build,
|
|
35
|
+
Python build + twine check, npm pack, VSIX package, and Playwright visual QA.
|
|
36
|
+
- Package-store publishing remains manual; release artifacts are version-scoped
|
|
37
|
+
and must use exact `2.2.7` filenames.
|
|
38
|
+
|
|
39
|
+
## [2.2.5] - 2026-06-04
|
|
40
|
+
|
|
41
|
+
> Release Hygiene Hotfix — dark-mode overlay clarity, modal state protection,
|
|
42
|
+
> static asset version alignment, favicon routing, and Telegram log redaction.
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- **Modal manager** — Chat overlays now share one blocking-modal controller with
|
|
47
|
+
Escape close, backdrop close, pagehide/navigation cleanup, and body scroll-lock
|
|
48
|
+
restoration.
|
|
49
|
+
- **Favicon asset** — `static/favicon.ico` is packaged and served by
|
|
50
|
+
`/favicon.ico`.
|
|
51
|
+
- **Sensitive-log helper** — Telegram bot tokens are normalized to
|
|
52
|
+
`bot123:REDACTED` before HTTP, exception, or response text reaches logs.
|
|
53
|
+
- **Validation coverage** — unit tests for token masking and static release
|
|
54
|
+
hygiene, plus Playwright checks for modal stack behavior and favicon response.
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- **Overlay theme tokens** — full-screen overlays use `--overlay-scrim` and no
|
|
59
|
+
blur-heavy backdrop, preventing washed-out dark-mode UI.
|
|
60
|
+
- **Surface token coverage** — modal, drawer, file manager, My Computer,
|
|
61
|
+
onboarding, model switcher, pipeline, and admin surfaces are remapped to
|
|
62
|
+
semantic tokens (`--modal`, `--surface`, `--surface-elevated`, `--input`).
|
|
63
|
+
- **Cache-busting** — all versioned frontend assets now use `?v=2.2.5`, including
|
|
64
|
+
`/static/scripts/chat.js?v=2.2.5`.
|
|
65
|
+
- **Version sync** — Python package, npm package, VS Code extension, Workspace
|
|
66
|
+
OS, lockfiles, and runtime metadata aligned at `2.2.5`.
|
|
67
|
+
|
|
68
|
+
### Validation
|
|
69
|
+
|
|
70
|
+
- Release target includes Python compile/pytest, npm lint/typecheck/test/build,
|
|
71
|
+
Python build + twine check, npm pack, VSIX package, and Playwright visual QA.
|
|
72
|
+
- Package-store publishing remains manual; release artifacts are version-scoped
|
|
73
|
+
and must use exact `2.2.5` filenames.
|
|
74
|
+
|
|
3
75
|
## [2.2.1] - 2026-06-04
|
|
4
76
|
|
|
5
77
|
> Frontend / UX Overhaul Release — Lattice AI keeps feature behavior stable
|
|
@@ -30,6 +102,11 @@
|
|
|
30
102
|
plain language.
|
|
31
103
|
- **Manual release scripts** — local publish scripts now build exact-version
|
|
32
104
|
artifacts before upload and validate the same artifact set used by CI.
|
|
105
|
+
- **Marketplace positioning** — README, VS Code Marketplace/Open VSX README,
|
|
106
|
+
npm metadata, VSIX metadata, and release copy now use the local-first AI
|
|
107
|
+
workspace / AI pipeline / Knowledge Graph / multi-agent workflow positioning.
|
|
108
|
+
- **Release media refresh** — v2.2.1 screenshots and demo GIF regenerated from
|
|
109
|
+
the live local app under `docs/images/`.
|
|
33
110
|
|
|
34
111
|
### Validation
|
|
35
112
|
|
|
@@ -58,7 +135,7 @@
|
|
|
58
135
|
### Changed
|
|
59
136
|
|
|
60
137
|
- **README / architecture rewrite** — current docs now describe Lattice AI as an
|
|
61
|
-
AI Knowledge
|
|
138
|
+
AI Knowledge Graph workspace rather than a chat app or model launcher.
|
|
62
139
|
- **Multimodal recommendation logic** — local recommendation catalogs and setup
|
|
63
140
|
flows use current multimodal model families only: Gemma 4, Qwen3-VL, and
|
|
64
141
|
Llama 4.
|
|
@@ -122,7 +199,7 @@
|
|
|
122
199
|
|
|
123
200
|
### Changed
|
|
124
201
|
|
|
125
|
-
- Python package, npm package, VS Code extension,
|
|
202
|
+
- Python package, npm package, VS Code extension, workspace, FastAPI app, and
|
|
126
203
|
`/health` version metadata aligned at `2.1.0`.
|
|
127
204
|
- Multi-Agent Runtime, Plugin SDK, Workflow Engine, and Realtime surface
|
|
128
205
|
versions now report `2.1.0`.
|
|
@@ -139,13 +216,13 @@
|
|
|
139
216
|
|
|
140
217
|
## [2.0.0] - 2026-06-01
|
|
141
218
|
|
|
142
|
-
>
|
|
219
|
+
> Multi-Agent Workflow Platform — Lattice AI becomes a local-first **Agentic
|
|
143
220
|
> Workspace Platform** with four integrated subsystems: Plugin SDK, Workflow
|
|
144
221
|
> Designer, Multi-Agent Runtime 2.0, and Realtime Collaboration. Backward
|
|
145
222
|
> compatible and additive: API paths/schemas, `server:app`,
|
|
146
223
|
> `latticeai.server_app.app`, CLI, Workspace/Chat/Model/MCP/KG APIs, existing
|
|
147
224
|
> skills/snapshots/memories/agent & workflow history, and VS Code extension
|
|
148
|
-
> commands remain stable. New
|
|
225
|
+
> commands remain stable. New workspace state keys (`plugin_registry`,
|
|
149
226
|
> `workflow_runs`) are backfilled on load via deep-merge — no destructive
|
|
150
227
|
> migration.
|
|
151
228
|
|
|
@@ -173,7 +250,7 @@
|
|
|
173
250
|
`/agents/api/*`, page `/agents`.
|
|
174
251
|
- **Realtime Collaboration** (`latticeai/core/realtime.py`,
|
|
175
252
|
`latticeai/api/realtime.py`) — in-process pub/sub bus, presence, and an
|
|
176
|
-
activity feed over SSE. Wired as the
|
|
253
|
+
activity feed over SSE. Wired as the workspace `event_sink`, so every
|
|
177
254
|
timeline event flows to the feed automatically. Workspace isolation enforced;
|
|
178
255
|
single-user local mode preserved. Routes `/realtime/stream` (SSE),
|
|
179
256
|
`/realtime/feed`, `/realtime/presence*`, page `/activity`.
|
|
@@ -191,7 +268,7 @@
|
|
|
191
268
|
|
|
192
269
|
### Changed
|
|
193
270
|
|
|
194
|
-
- Python package, npm package, VS Code extension,
|
|
271
|
+
- Python package, npm package, VS Code extension, workspace, FastAPI app, and
|
|
195
272
|
`/health` version metadata aligned at `2.0.0`.
|
|
196
273
|
- `server_app` cross-system wiring extracted into
|
|
197
274
|
`latticeai/services/platform_runtime.py` to keep the assembly file lean.
|
|
@@ -234,7 +311,7 @@
|
|
|
234
311
|
|
|
235
312
|
### Changed
|
|
236
313
|
|
|
237
|
-
- Python package, npm package, VS Code extension,
|
|
314
|
+
- Python package, npm package, VS Code extension, workspace, FastAPI app, and
|
|
238
315
|
`/health` version metadata aligned at `1.7.0`.
|
|
239
316
|
- CI package validation is version-scoped instead of a broad `dist/*` check.
|
|
240
317
|
|
|
@@ -255,7 +332,7 @@
|
|
|
255
332
|
|
|
256
333
|
### Added
|
|
257
334
|
|
|
258
|
-
- **Knowledge Graph Explorer (
|
|
335
|
+
- **Knowledge Graph Explorer (workspace)** — an Entity Explorer (importance-
|
|
259
336
|
ranked entity cards + search) with a detail panel showing inbound/outbound
|
|
260
337
|
relationships, related entities, and the shortest path back to you; plus a
|
|
261
338
|
Recent Activity feed and a Workspace Memory feed. Built entirely on the existing
|
|
@@ -271,7 +348,7 @@
|
|
|
271
348
|
- **Skill Marketplace tabs** — Recommended / Popular / Installed / Updates tabs
|
|
272
349
|
with version, category, and source, plus install / enable / disable actions on
|
|
273
350
|
the existing skill lifecycle API.
|
|
274
|
-
- **Enterprise capability panel** — a 12-capability status matrix in
|
|
351
|
+
- **Enterprise capability panel** — a 12-capability status matrix in the workspace
|
|
275
352
|
(Community reports all disabled; nothing gates a Community feature).
|
|
276
353
|
|
|
277
354
|
### Changed
|
|
@@ -373,7 +450,7 @@
|
|
|
373
450
|
lines. The file now owns FastAPI construction, lifespan, middleware, static
|
|
374
451
|
mount, router wiring, and compatibility globals only.
|
|
375
452
|
- **Chat/history/agent extracted** — `/chat`, `/history*`, `/agent*`, streaming
|
|
376
|
-
generator, document-generation session handling, Graph
|
|
453
|
+
generator, document-generation session handling, Knowledge Graph context trace recording,
|
|
377
454
|
and AgentRuntime wiring moved to `latticeai/api/chat.py` with behavior and
|
|
378
455
|
SSE chunk format preserved.
|
|
379
456
|
- **Model runtime/provider extracted** — provider catalogs, engine aliases,
|
|
@@ -449,7 +526,7 @@
|
|
|
449
526
|
|
|
450
527
|
- **server_app.py modularization (phase 2)** — reduced
|
|
451
528
|
`latticeai/server_app.py` from ~6,585 to ~5,948 lines by extracting the
|
|
452
|
-
|
|
529
|
+
workspace / Organization API and the health/engine-summary endpoints into
|
|
453
530
|
dedicated routers backed by a new service layer. `server_app` now focuses on
|
|
454
531
|
app assembly, lifespan, middleware, and router include. The historical
|
|
455
532
|
`server:app` import path, all API paths, and request/response shapes are
|
|
@@ -496,7 +573,7 @@
|
|
|
496
573
|
|
|
497
574
|
### Added
|
|
498
575
|
|
|
499
|
-
- **Organization Workspace foundation** —
|
|
576
|
+
- **Organization Workspace foundation** — workspace now distinguishes
|
|
500
577
|
`personal` and `organization` workspace types. A full workspace model
|
|
501
578
|
(`workspace_id`, `name`, `type`, `owner_user_id`, `members`, `roles`,
|
|
502
579
|
`settings`, `created_at`, `updated_at`, `status`) is stored in the existing
|
|
@@ -524,9 +601,9 @@
|
|
|
524
601
|
verifies that exactly the expected `whl`/`tar.gz`/`vsix`/`tgz` exist for a
|
|
525
602
|
single version, that internal versions match, that the VSIX contains
|
|
526
603
|
`extension/out/extension.js`, and warns when `dist/` mixes other versions.
|
|
527
|
-
- **
|
|
604
|
+
- **workspace UI** — Personal/Organization workspace switcher, current
|
|
528
605
|
workspace indicator, and a minimal organization create / member / role panel
|
|
529
|
-
wired into the existing
|
|
606
|
+
wired into the existing workspace command center.
|
|
530
607
|
|
|
531
608
|
### Changed
|
|
532
609
|
|
|
@@ -535,7 +612,7 @@
|
|
|
535
612
|
`actions/setup-node@v5`, `actions/setup-python@v6`. Artifact upload and
|
|
536
613
|
`twine check` are now scoped to the tagged version only — never a `dist/*`
|
|
537
614
|
glob — and the build runs the release artifact validator before upload.
|
|
538
|
-
- Existing 1.0.x
|
|
615
|
+
- Existing 1.0.x workspace state is migrated non-destructively to the v1.1
|
|
539
616
|
workspace model on load; legacy records map to the Personal workspace.
|
|
540
617
|
- Release metadata aligned to `1.1.0` across Python, npm, VS Code extension,
|
|
541
618
|
FastAPI app metadata, and `/health`.
|
|
@@ -563,18 +640,18 @@
|
|
|
563
640
|
|
|
564
641
|
## [1.0.0] - 2026-05-31
|
|
565
642
|
|
|
566
|
-
> AI
|
|
643
|
+
> AI workspace integration release.
|
|
567
644
|
|
|
568
645
|
### Added
|
|
569
646
|
|
|
570
|
-
- **
|
|
647
|
+
- **workspace foundation** — new `/workspace` UI and `/workspace/*` API surface
|
|
571
648
|
organize LatticeAI around Graph, Snapshot, Memory, Agent, Workflow, Skills,
|
|
572
649
|
and Timeline areas while preserving existing chat, graph, admin, CLI, and MCP
|
|
573
650
|
compatibility.
|
|
574
651
|
- **First-run onboarding wizard** — reentrant step state, completion API,
|
|
575
652
|
hardware scan, model recommendations, folder connection state, and recovery
|
|
576
653
|
from failed/skipped steps.
|
|
577
|
-
- **Graph
|
|
654
|
+
- **Knowledge Graph context answer trace** — each generated answer records source files,
|
|
578
655
|
graph nodes, graph edges, confidence, retrieval metadata, graph jumps, and
|
|
579
656
|
source jumps.
|
|
580
657
|
- **Local indexing dashboard** — indexed folder status, watcher state, success
|
|
@@ -594,7 +671,7 @@
|
|
|
594
671
|
- **Local Computer Memory** — defaults OFF, requires explicit approval, tracks
|
|
595
672
|
activity summaries only after consent, and links approved records to graph.
|
|
596
673
|
- **Skill Marketplace registry** — install, uninstall, update, enable, disable,
|
|
597
|
-
version tracking, and metadata state surfaced in
|
|
674
|
+
version tracking, and metadata state surfaced in the workspace.
|
|
598
675
|
- **Workflow Graph** — stores workflow timelines and searchable workflow graphs
|
|
599
676
|
for repeatable actions such as Upload -> Summarize -> Generate -> Export.
|
|
600
677
|
- **VS Code workflow** — added Refactor Selection, Generate Tests, Send To
|
|
@@ -1142,7 +1219,7 @@ latticeai/
|
|
|
1142
1219
|
`언급함` · `포함함` · `해결함` · `의존함` · `설명함` · `비교함` · `사용함` · `연결함` · `확장함` · `생성함` · `대체함` · `지원함` · `발생함` · `관련됨` · `작성함` · `업로드함`
|
|
1143
1220
|
|
|
1144
1221
|
**핵심 개선**
|
|
1145
|
-
- `_extract_concepts()` — 고유명사·복합어·기술 용어 추출 (Lattice AI, Graph
|
|
1222
|
+
- `_extract_concepts()` — 고유명사·복합어·기술 용어 추출 (Lattice AI, Knowledge Graph context, VS Code 등)
|
|
1146
1223
|
- `_classify_node_type()` — 개념별 노드 타입 자동 분류 (윈도우 컨텍스트 기반)
|
|
1147
1224
|
- `_infer_edge()` — 문장 내 동사·조사 패턴으로 엣지 레이블 자동 결정
|
|
1148
1225
|
- `_extract_triples()` — 문장 단위 개념 쌍 → (주어, 동사, 목적어) 트리플 추출
|
|
@@ -1230,7 +1307,7 @@ latticeai/
|
|
|
1230
1307
|
#### VS Code 익스텐션 메타데이터 개선
|
|
1231
1308
|
- **카테고리** `Other` → `AI, Machine Learning, Chat, Other` (Marketplace 검색 노출 증가)
|
|
1232
1309
|
- **키워드** 8개 → 16개 추가 (`copilot`, `apple-silicon`, `groq`, `graph-rag` 등)
|
|
1233
|
-
- **설명 문구** 구체화 — 핵심 차별점(MLX, MCP, Graph
|
|
1310
|
+
- **설명 문구** 구체화 — 핵심 차별점(MLX, MCP, Knowledge Graph context, local-first data handling) 명시
|
|
1234
1311
|
- **익스텐션 README 전면 재작성** — 기능표 · 빠른 시작 · 단축키 · 지원 모델 · 설정 · 비교표 포함
|
|
1235
1312
|
|
|
1236
1313
|
#### 리포지터리 정리
|
|
@@ -1290,7 +1367,7 @@ latticeai/
|
|
|
1290
1367
|
- clear 동작을 `ClearEvent` 노드로 그래프에 기록 (언제 누가 clear 했는지 감사 추적)
|
|
1291
1368
|
- **민감정보 검사** — 문서 업로드 텍스트를 감사 로그에 기록
|
|
1292
1369
|
|
|
1293
|
-
### Graph
|
|
1370
|
+
### Knowledge Graph context / Data Graph
|
|
1294
1371
|
|
|
1295
1372
|
- **한국어 단어 검색 개선** — 2글자 키워드(`문서`, `모델` 등) RAG 검색 누락 문제 수정
|
|
1296
1373
|
- **`graph.html` 독립 페이지 유지** — 채팅 사이드바 `Data Graph` 버튼으로 연결, New Chat 버튼은 대화 검색 아래로 이동
|
|
@@ -1587,7 +1664,7 @@ latticeai/
|
|
|
1587
1664
|
|
|
1588
1665
|
### Added
|
|
1589
1666
|
- **Data Graph** — 채팅·AI 답변·업로드 문서를 SQLite 지식 그래프로 자동 구조화, `/graph`에서 Canvas 기반 Force-directed 시각화
|
|
1590
|
-
- **Graph
|
|
1667
|
+
- **Knowledge Graph context** — 그래프 검색 결과를 채팅 컨텍스트에 자동 주입하여 이전 대화·문서 참조 능력 강화
|
|
1591
1668
|
- **Telegram 원격 제어** — 인라인 키보드 메뉴로 상태 조회, 모델 관리, 스크린샷, 그래프 통계, 문서 업로드 등 원격 제어
|
|
1592
1669
|
- `knowledge_graph.py` — KnowledgeGraphStore (node/edge/chunk/event), `ingest_message()`, `ingest_document()`, `context_for_query()`, `search()`, `neighbors()`
|
|
1593
1670
|
- `static/graph.html` — 타입별 색상, 줌/패닝, 핀치 줌, 이웃 하이라이트, 노드 상세 정보, 채팅 연결 링크
|
package/docs/EDITION_STRATEGY.md
CHANGED
|
@@ -5,12 +5,12 @@ the boundary stays predictable for contributors and users.
|
|
|
5
5
|
|
|
6
6
|
## Editions
|
|
7
7
|
|
|
8
|
-
- **Community** — this repository, MIT licensed. Local-first **
|
|
9
|
-
|
|
10
|
-
workspaces, role-based membership, snapshots,
|
|
11
|
-
skills, the auditable timeline, and the full v2
|
|
12
|
-
**Workflow Designer**, **Multi-Agent Runtime
|
|
13
|
-
Collaboration**. Community is a complete product.
|
|
8
|
+
- **Community** — this repository, MIT licensed. Local-first **AI workspace
|
|
9
|
+
platform**: local models, knowledge graph, Personal **and** Organization
|
|
10
|
+
workspaces, role-based membership, snapshots, durable context, AI pipelines,
|
|
11
|
+
multi-agent workflows, skills, the auditable timeline, and the full v2
|
|
12
|
+
platform — **Plugin SDK**, **Workflow Designer**, **Multi-Agent Runtime**, and
|
|
13
|
+
**Realtime Collaboration**. Community is a complete product.
|
|
14
14
|
- **Enterprise** — a separately-distributed plugin adding organization-scale
|
|
15
15
|
governance, identity, compliance, and deployment capabilities. Distributed and
|
|
16
16
|
licensed separately. See [ENTERPRISE.md](ENTERPRISE.md).
|
|
@@ -40,7 +40,7 @@ the boundary stays predictable for contributors and users.
|
|
|
40
40
|
|--------|------------------------|------------------------|
|
|
41
41
|
| Personal & Organization workspaces | ✅ | — |
|
|
42
42
|
| Base roles (owner/admin/member/viewer) | ✅ | — |
|
|
43
|
-
| Snapshots /
|
|
43
|
+
| Snapshots / durable context / AI pipelines / multi-agent workflows / skills | ✅ | — |
|
|
44
44
|
| Plugin SDK (manifest, lifecycle, permission boundary) | ✅ | RBAC/ABAC over plugin permissions |
|
|
45
45
|
| Workflow Designer (build/run/run-history) | ✅ | Org approval gates, scheduled triggers |
|
|
46
46
|
| Multi-Agent Runtime 2.0 (roles/handoff/retry) | ✅ | Policy-bounded autonomous runs |
|
|
@@ -55,7 +55,7 @@ the boundary stays predictable for contributors and users.
|
|
|
55
55
|
## Detecting edition at runtime
|
|
56
56
|
|
|
57
57
|
- `GET /workspace/editions` → edition + per-capability matrix.
|
|
58
|
-
- `GET /workspace/os` → `edition` block in the
|
|
58
|
+
- `GET /workspace/os` → `edition` block in the workspace summary.
|
|
59
59
|
- `/admin#enterprise` → Admin policy, audit export, SIEM preview,
|
|
60
60
|
organization settings, and capability status UI.
|
|
61
61
|
- `GET /admin/enterprise` and `GET /admin/enterprise/siem-export` → descriptive
|
package/docs/ENTERPRISE.md
CHANGED
|
@@ -8,10 +8,10 @@
|
|
|
8
8
|
Lattice AI follows an **open-core** model:
|
|
9
9
|
|
|
10
10
|
- **Community** (this repository, MIT) is fully functional on its own: local
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
models, knowledge graph, Personal and Organization workspaces, roles,
|
|
12
|
+
snapshots, durable context, AI pipelines, multi-agent workflows, skills, the
|
|
13
|
+
auditable timeline, and the full v2 workspace platform (Plugin SDK, Workflow
|
|
14
|
+
Designer, Multi-Agent Runtime, Realtime Collaboration).
|
|
15
15
|
- **Enterprise** is a separately-distributed plugin that attaches advanced,
|
|
16
16
|
organization-scale governance and deployment capabilities through a stable
|
|
17
17
|
runtime seam. It is never bundled into the Community build.
|
|
@@ -36,7 +36,7 @@ Community code consults the seam at extension points via
|
|
|
36
36
|
always `False`, so the Community code path is taken and nothing is gated off.
|
|
37
37
|
|
|
38
38
|
The live edition + capability matrix is exposed at `GET /workspace/editions`,
|
|
39
|
-
surfaced in the
|
|
39
|
+
surfaced in the workspace summary (`GET /workspace/os` → `edition`), and
|
|
40
40
|
shown in the Enterprise Admin UI at `/admin#enterprise`.
|
|
41
41
|
|
|
42
42
|
Community also exposes descriptive admin surfaces at `GET /admin/enterprise`
|
package/docs/PLUGIN_SDK.md
CHANGED
|
@@ -14,7 +14,7 @@ through the existing skill registry rather than owning a parallel one.
|
|
|
14
14
|
|
|
15
15
|
> **Compatibility.** v1.x data and APIs are preserved. The Plugin SDK adds new
|
|
16
16
|
> code (`latticeai/core/plugins.py`, `latticeai/api/plugins.py`) and new
|
|
17
|
-
> persisted state (`plugin_registry` inside the
|
|
17
|
+
> persisted state (`plugin_registry` inside the workspace store). Nothing in
|
|
18
18
|
> the v1.x contract changes. The new HTTP routes live under `/plugins/registry`
|
|
19
19
|
> and friends, which do **not** collide with the pre-existing
|
|
20
20
|
> `/plugins/directory` marketplace routes.
|
|
@@ -28,7 +28,7 @@ PLUGIN_SDK_VERSION = "2.2.0"
|
|
|
28
28
|
## v2.2 additions
|
|
29
29
|
|
|
30
30
|
- `execute_action(...)` emits `plugin_started`, `plugin_completed`, and
|
|
31
|
-
`execution_failed` through the existing
|
|
31
|
+
`execution_failed` through the existing workspace timeline/realtime feed.
|
|
32
32
|
- Plugin outputs can be carried inside agent context packets and replayed from
|
|
33
33
|
agent/workflow run history.
|
|
34
34
|
- The local template catalog (`latticeai.core.marketplace`) adds Plugin,
|
|
@@ -228,7 +228,7 @@ discover -> validate -> install -> enable / disable -> uninstall
|
|
|
228
228
|
```
|
|
229
229
|
|
|
230
230
|
Lifecycle *state* (installed / enabled / version / status) is delegated to the
|
|
231
|
-
|
|
231
|
+
workspace store via a small `store` port, so plugins reuse the same
|
|
232
232
|
local-first JSON persistence, workspace scoping, and timeline events as skills.
|
|
233
233
|
The registry itself owns only manifest parsing and the execution boundary.
|
|
234
234
|
|
|
@@ -355,7 +355,7 @@ A persisted entry looks like:
|
|
|
355
355
|
}
|
|
356
356
|
```
|
|
357
357
|
|
|
358
|
-
Each lifecycle mutation also records a
|
|
358
|
+
Each lifecycle mutation also records a workspace timeline event
|
|
359
359
|
(`plugin_installed`, `plugin_uninstalled`, `plugin_enabled`, `plugin_disabled`)
|
|
360
360
|
under the `plugins` channel.
|
|
361
361
|
|
package/docs/V2_ARCHITECTURE.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
# Lattice AI v2 Architecture —
|
|
1
|
+
# Lattice AI v2 Architecture — AI Workspace, Pipeline, and Workflow Platform
|
|
2
2
|
|
|
3
|
-
Lattice AI v2.0.0
|
|
4
|
-
|
|
5
|
-
layer: explicit handoffs, context
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
Graph.
|
|
3
|
+
Lattice AI v2.0.0 introduced the local-first AI workspace, AI pipeline,
|
|
4
|
+
Knowledge Graph, and multi-agent workflow foundation. v2.2.1 keeps that
|
|
5
|
+
architecture and matures the operational layer: explicit handoffs, context
|
|
6
|
+
packets, review/retry loops, durable context snapshots, planning records,
|
|
7
|
+
replay, marketplace templates, and realtime workflow observability all compose
|
|
8
|
+
over the same local-first JSON store and Knowledge Graph.
|
|
9
9
|
|
|
10
10
|
This document describes how the v2 platform pillars fit together, the small set of
|
|
11
11
|
**additive integration seams** that wire them, the cross-integration matrix that
|
|
@@ -47,7 +47,7 @@ templates / actions under one versioned, permissioned unit.
|
|
|
47
47
|
|
|
48
48
|
Design rules enforced by the module: no import-time I/O (the filesystem is only
|
|
49
49
|
touched on `discover()`), no FastAPI and no globals (lifecycle state lives in the
|
|
50
|
-
|
|
50
|
+
workspace store), and permissions are an allow-list — the execution boundary
|
|
51
51
|
refuses any capability a plugin did not declare *and* was not granted.
|
|
52
52
|
|
|
53
53
|
A validated `plugin.json` manifest:
|
|
@@ -213,7 +213,7 @@ class RealtimeBus:
|
|
|
213
213
|
v2.2.0 adds a local marketplace foundation rather than a cloud marketplace
|
|
214
214
|
service. `TemplateCatalog` manages Plugin, Workflow, and Agent templates with
|
|
215
215
|
metadata, export/import, install hooks, and a template registry stored through
|
|
216
|
-
|
|
216
|
+
workspace. Marketplace templates are local extension points for the existing
|
|
217
217
|
Plugin SDK, Workflow Engine, and Multi-Agent Runtime; they do not bypass plugin
|
|
218
218
|
permissions, workflow execution guards, or workspace scoping.
|
|
219
219
|
|
package/docs/architecture.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
# Lattice AI Architecture
|
|
2
2
|
|
|
3
|
-
Lattice AI is a local-first **AI
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
operate on top of
|
|
3
|
+
Lattice AI is a local-first **AI workspace, AI pipeline platform, Knowledge
|
|
4
|
+
Graph platform, and multi-agent workflow platform**. The architecture is
|
|
5
|
+
organized around one durable center: the Knowledge Graph. Models, tools,
|
|
6
|
+
agents, workflows, and UI modes are replaceable layers that operate on top of
|
|
7
|
+
workspace and graph context.
|
|
7
8
|
|
|
8
9
|
## Architecture Goals
|
|
9
10
|
|
|
@@ -15,7 +16,7 @@ operate on top of the graph.
|
|
|
15
16
|
- Keep basic and advanced modes feature-equivalent.
|
|
16
17
|
- Keep admin-only capabilities explicit and auditable.
|
|
17
18
|
|
|
18
|
-
##
|
|
19
|
+
## Workspace View
|
|
19
20
|
|
|
20
21
|
```mermaid
|
|
21
22
|
flowchart TD
|
|
@@ -24,9 +25,9 @@ flowchart TD
|
|
|
24
25
|
Extract["Entity, relation, evidence extraction"]
|
|
25
26
|
Graph["Knowledge Graph"]
|
|
26
27
|
Context["Graph context builder"]
|
|
27
|
-
Models["
|
|
28
|
-
Agents["
|
|
29
|
-
Outputs["
|
|
28
|
+
Models["Local or cloud model workflow"]
|
|
29
|
+
Agents["Multi-agent workflow"]
|
|
30
|
+
Outputs["Coding actions, analysis, documents, team workflows"]
|
|
30
31
|
Admin["Admin policy and audit"]
|
|
31
32
|
|
|
32
33
|
User --> Ingestion
|
|
@@ -42,7 +43,7 @@ flowchart TD
|
|
|
42
43
|
|
|
43
44
|
## Durable Core
|
|
44
45
|
|
|
45
|
-
The Knowledge Graph stores
|
|
46
|
+
The Knowledge Graph stores durable personal and organization workspace context:
|
|
46
47
|
|
|
47
48
|
- files and document evidence
|
|
48
49
|
- images and screenshots
|
|
@@ -52,8 +53,8 @@ The Knowledge Graph stores the durable user and organization memory:
|
|
|
52
53
|
- generated artifacts
|
|
53
54
|
- agent and workflow events
|
|
54
55
|
|
|
55
|
-
The
|
|
56
|
-
|
|
56
|
+
The model is not the product core. It is a replaceable participant in the
|
|
57
|
+
workspace pipeline.
|
|
57
58
|
|
|
58
59
|
## Multimodal Ingestion
|
|
59
60
|
|
|
@@ -75,9 +76,9 @@ input set includes:
|
|
|
75
76
|
The architecture must not ask users to convert these to plain text before AI can
|
|
76
77
|
work on them.
|
|
77
78
|
|
|
78
|
-
## Model
|
|
79
|
+
## Local Model Management Policy
|
|
79
80
|
|
|
80
|
-
Local recommended models must be multimodal. The v2.2 local
|
|
81
|
+
Local recommended models must be multimodal. The v2.2 local model workflow policy is:
|
|
81
82
|
|
|
82
83
|
- macOS Apple Silicon: MLX-VLM first
|
|
83
84
|
- Windows: llama.cpp multimodal path, with LM Studio as a user-friendly option
|
|
@@ -130,11 +131,11 @@ Basic mode and advanced mode have the same feature access.
|
|
|
130
131
|
| --- | --- |
|
|
131
132
|
| `latticeai/services/model_catalog.py` | Multimodal model catalog, source metadata, aliases |
|
|
132
133
|
| `latticeai/services/model_recommendation.py` | Hardware-aware multimodal recommendation |
|
|
133
|
-
| `latticeai/services/model_runtime.py` | Download, load, server, and
|
|
134
|
+
| `latticeai/services/model_runtime.py` | Download, load, server, and model workflow orchestration |
|
|
134
135
|
| `llm_router.py` | MLX-VLM and OpenAI-compatible model routing |
|
|
135
|
-
| `knowledge_graph.py` | Graph storage, extraction, local folder graph
|
|
136
|
+
| `knowledge_graph.py` | Graph storage, extraction, local folder knowledge graph context |
|
|
136
137
|
| `latticeai/core/context_builder.py` | Graph context for generation |
|
|
137
|
-
| `latticeai/core/workspace_os.py` | Workspace state, timeline, snapshots,
|
|
138
|
+
| `latticeai/core/workspace_os.py` | Workspace state, timeline, snapshots, durable context |
|
|
138
139
|
| `latticeai/core/multi_agent.py` | Planner/executor/reviewer/researcher orchestration |
|
|
139
140
|
| `latticeai/core/workflow_engine.py` | Workflow definitions and run history |
|
|
140
141
|
| `latticeai/core/plugins.py` | Plugin manifest, registry, permission boundary |
|
|
@@ -142,7 +143,7 @@ Basic mode and advanced mode have the same feature access.
|
|
|
142
143
|
|
|
143
144
|
## Compatibility
|
|
144
145
|
|
|
145
|
-
v2.2.
|
|
146
|
+
v2.2.1 preserves the additive workspace and API compatibility posture from
|
|
146
147
|
v2.x. Existing graph/workspace data is migrated non-destructively. The release
|
|
147
148
|
does remove current recommendation entries for old or text-only model paths, but
|
|
148
149
|
it does not destructively mutate existing user graph data.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/latticeai/__init__.py
CHANGED
|
@@ -82,6 +82,16 @@ def create_static_routes_router(
|
|
|
82
82
|
if not p.exists():
|
|
83
83
|
raise HTTPException(status_code=404)
|
|
84
84
|
return FileResponse(str(p), media_type="application/manifest+json")
|
|
85
|
+
|
|
86
|
+
@api_router.api_route("/favicon.ico", methods=["GET", "HEAD"])
|
|
87
|
+
async def favicon():
|
|
88
|
+
ico = STATIC_DIR / "favicon.ico"
|
|
89
|
+
png = STATIC_DIR / "icons" / "favicon-32.png"
|
|
90
|
+
if ico.exists():
|
|
91
|
+
return FileResponse(str(ico), media_type="image/x-icon")
|
|
92
|
+
if png.exists():
|
|
93
|
+
return FileResponse(str(png), media_type="image/png")
|
|
94
|
+
raise HTTPException(status_code=404)
|
|
85
95
|
|
|
86
96
|
|
|
87
97
|
@api_router.get("/sw.js")
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Helpers for keeping sensitive values out of logs."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
import re
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
_TELEGRAM_BOT_TOKEN_RE = re.compile(r"\bbot(\d{5,20}):([A-Za-z0-9_-]{8,})")
|
|
10
|
+
_TELEGRAM_BARE_TOKEN_RE = re.compile(
|
|
11
|
+
r"(?<![A-Za-z0-9_:-])(\d{5,20}):([A-Za-z0-9_-]{8,})(?![A-Za-z0-9_-])"
|
|
12
|
+
)
|
|
13
|
+
_LOG_FILTER_INSTALLED = False
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def mask_telegram_bot_token(value: Any) -> str:
|
|
17
|
+
"""Return ``value`` as text with Telegram bot token secrets redacted."""
|
|
18
|
+
|
|
19
|
+
text = str(value)
|
|
20
|
+
text = _TELEGRAM_BOT_TOKEN_RE.sub(r"bot\1:REDACTED", text)
|
|
21
|
+
return _TELEGRAM_BARE_TOKEN_RE.sub(r"bot\1:REDACTED", text)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def safe_log_text(value: Any) -> str:
|
|
25
|
+
"""Sanitize text before it is sent to application logs."""
|
|
26
|
+
|
|
27
|
+
return mask_telegram_bot_token(value)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def _safe_log_arg(value: Any) -> Any:
|
|
31
|
+
if isinstance(value, str):
|
|
32
|
+
return mask_telegram_bot_token(value)
|
|
33
|
+
if isinstance(value, tuple):
|
|
34
|
+
return tuple(_safe_log_arg(item) for item in value)
|
|
35
|
+
if isinstance(value, list):
|
|
36
|
+
return [_safe_log_arg(item) for item in value]
|
|
37
|
+
if isinstance(value, dict):
|
|
38
|
+
return {_safe_log_arg(key): _safe_log_arg(item) for key, item in value.items()}
|
|
39
|
+
|
|
40
|
+
text = str(value)
|
|
41
|
+
masked = mask_telegram_bot_token(text)
|
|
42
|
+
return masked if masked != text else value
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def install_sensitive_log_filter() -> None:
|
|
46
|
+
"""Install a process-wide log-record sanitizer for known secret shapes."""
|
|
47
|
+
|
|
48
|
+
global _LOG_FILTER_INSTALLED
|
|
49
|
+
if _LOG_FILTER_INSTALLED:
|
|
50
|
+
return
|
|
51
|
+
|
|
52
|
+
original_factory = logging.getLogRecordFactory()
|
|
53
|
+
|
|
54
|
+
def factory(*args: Any, **kwargs: Any) -> logging.LogRecord:
|
|
55
|
+
record = original_factory(*args, **kwargs)
|
|
56
|
+
record.msg = _safe_log_arg(record.msg)
|
|
57
|
+
if record.args:
|
|
58
|
+
record.args = _safe_log_arg(record.args)
|
|
59
|
+
return record
|
|
60
|
+
|
|
61
|
+
logging.setLogRecordFactory(factory)
|
|
62
|
+
_LOG_FILTER_INSTALLED = True
|
|
@@ -18,7 +18,7 @@ from pathlib import Path
|
|
|
18
18
|
from typing import Any, Callable, Dict, Iterable, List, Optional
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
WORKSPACE_OS_VERSION = "2.2.
|
|
21
|
+
WORKSPACE_OS_VERSION = "2.2.7"
|
|
22
22
|
|
|
23
23
|
# Workspace types separate single-user Personal workspaces from shared
|
|
24
24
|
# Organization workspaces. Both keep the same local-first JSON store; the type
|