ltcai 0.6.0 → 1.0.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 +20 -5
- package/docs/CHANGELOG.md +51 -0
- package/knowledge_graph.py +33 -0
- package/latticeai/__init__.py +3 -1
- package/latticeai/core/workspace_os.py +1178 -0
- package/latticeai/server_app.py +605 -6
- package/package.json +6 -3
- package/static/admin.html +1 -0
- package/static/graph.html +1 -0
- package/static/manifest.json +2 -2
- package/static/scripts/chat.js +4 -2
- package/static/scripts/graph.js +3 -3
- package/static/scripts/workspace.js +382 -0
- package/static/sw.js +5 -1
- package/static/workspace.css +515 -0
- package/static/workspace.html +199 -0
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<img src="https://raw.githubusercontent.com/TaeSooPark-PTS/LatticeAI/main/docs/images/logo.svg" alt="Lattice AI" width="280"/>
|
|
3
3
|
<br/>
|
|
4
|
-
<strong>
|
|
4
|
+
<strong>AI Workspace OS for local-first graph, memory, agents, workflows, skills, and timelines.</strong>
|
|
5
5
|
<br/><br/>
|
|
6
6
|
|
|
7
7
|
[](https://pypi.org/project/ltcai/)
|
|
@@ -24,18 +24,33 @@
|
|
|
24
24
|
|
|
25
25
|
Most AI tools answer one chat at a time. They do not remember your folders, your project history, your previous decisions, or how your files relate to each other.
|
|
26
26
|
|
|
27
|
-
**Lattice AI turns your local workspace into an AI
|
|
27
|
+
**Lattice AI turns your local workspace into an AI Workspace OS.**
|
|
28
28
|
|
|
29
|
-
It reads approved local folders, indexes chats and documents, builds a searchable knowledge graph, and
|
|
29
|
+
It reads approved local folders, indexes chats and documents, builds a searchable knowledge graph, and connects the graph to snapshots, personal memory, agent runs, workflow history, skills, and an auditable timeline.
|
|
30
30
|
|
|
31
31
|
```text
|
|
32
32
|
Local files + chats + folders
|
|
33
33
|
↓
|
|
34
34
|
Automatic knowledge graph
|
|
35
35
|
↓
|
|
36
|
-
Graph-aware
|
|
36
|
+
Graph-aware chat, snapshots, memory, agents, workflows, skills, and timeline
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
### New in 1.0.0: AI Workspace OS
|
|
40
|
+
|
|
41
|
+
- Workspace OS command center at `/workspace`
|
|
42
|
+
- First-run onboarding state API and UI
|
|
43
|
+
- Graph RAG answer traces with sources, nodes, edges, confidence, and jump links
|
|
44
|
+
- Local indexing dashboard with watcher state, success/failure counts, pause/resume/remove
|
|
45
|
+
- Workspace snapshots, Time Machine views, export, and Knowledge Diff
|
|
46
|
+
- Personal memory CRUD/search linked back to the graph
|
|
47
|
+
- Multi-agent graph entities and agent run history
|
|
48
|
+
- Relationship Explorer for inbound, outbound, related entities, and shortest path
|
|
49
|
+
- Local Computer Memory remains OFF by default and requires explicit approval
|
|
50
|
+
- Skill Marketplace registry with install, uninstall, update, enable, disable, and version state
|
|
51
|
+
- Workflow Graph for upload -> summarize -> generate -> export style work histories
|
|
52
|
+
- VS Code commands for Explain Selection, Refactor Selection, Generate Tests, Send To Lattice, and Ask About Current File
|
|
53
|
+
|
|
39
54
|
### Built for people who want
|
|
40
55
|
|
|
41
56
|
- a private AI workspace that runs from their own machine
|
|
@@ -76,7 +91,7 @@ LTCAI
|
|
|
76
91
|
2. Start the local server with `LTCAI`
|
|
77
92
|
3. Press `Cmd+Shift+A` to open the chat panel
|
|
78
93
|
|
|
79
|
-
**First run:** create an account
|
|
94
|
+
**First run:** create an account -> the first account becomes admin -> open `/workspace` -> complete onboarding -> choose a model -> connect folders -> start asking questions.
|
|
80
95
|
|
|
81
96
|
---
|
|
82
97
|
|
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,56 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.0.0] - 2026-05-31
|
|
4
|
+
|
|
5
|
+
> AI Workspace OS integration release.
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Workspace OS foundation** — new `/workspace` UI and `/workspace/*` API surface
|
|
10
|
+
organize LatticeAI around Graph, Snapshot, Memory, Agent, Workflow, Skills,
|
|
11
|
+
and Timeline areas while preserving existing chat, graph, admin, CLI, and MCP
|
|
12
|
+
compatibility.
|
|
13
|
+
- **First-run onboarding wizard** — reentrant step state, completion API,
|
|
14
|
+
hardware scan, model recommendations, folder connection state, and recovery
|
|
15
|
+
from failed/skipped steps.
|
|
16
|
+
- **Graph RAG answer trace** — each generated answer records source files,
|
|
17
|
+
graph nodes, graph edges, confidence, retrieval metadata, graph jumps, and
|
|
18
|
+
source jumps.
|
|
19
|
+
- **Local indexing dashboard** — indexed folder status, watcher state, success
|
|
20
|
+
and failure counts, last scan time, graph node/edge totals, and pause/resume/
|
|
21
|
+
remove operations.
|
|
22
|
+
- **Workspace snapshots and Time Machine** — immutable snapshots capture graph,
|
|
23
|
+
chat, settings, indexed folders, and loaded model state. Snapshots can be
|
|
24
|
+
listed, viewed by area, compared, and exported as ZIP artifacts.
|
|
25
|
+
- **Knowledge Diff** — Snapshot A/B comparison reports nodes added/removed/
|
|
26
|
+
changed, edges added/removed, and decisions changed.
|
|
27
|
+
- **Personal Memory layer** — per-user preferences, decisions, working style,
|
|
28
|
+
frequently used tools, and long-term memory with CRUD/search and graph links.
|
|
29
|
+
- **Multi-Agent Graph** — Planner, Executor, Reviewer, Researcher, and Release
|
|
30
|
+
Agent entities plus agent run history and timeline recording.
|
|
31
|
+
- **Relationship Explorer** — inbound/outbound edge views, related entities, and
|
|
32
|
+
shortest-path exploration for graph nodes.
|
|
33
|
+
- **Local Computer Memory** — defaults OFF, requires explicit approval, tracks
|
|
34
|
+
activity summaries only after consent, and links approved records to graph.
|
|
35
|
+
- **Skill Marketplace registry** — install, uninstall, update, enable, disable,
|
|
36
|
+
version tracking, and metadata state surfaced in Workspace OS.
|
|
37
|
+
- **Workflow Graph** — stores workflow timelines and searchable workflow graphs
|
|
38
|
+
for repeatable actions such as Upload -> Summarize -> Generate -> Export.
|
|
39
|
+
- **VS Code workflow** — added Refactor Selection, Generate Tests, Send To
|
|
40
|
+
Lattice, and Ask About Current File while preserving Explain Selection.
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- Release metadata aligned to `1.0.0` across Python, npm, VS Code extension,
|
|
45
|
+
FastAPI app metadata, `/health`, README, changelog, and release docs.
|
|
46
|
+
- `KnowledgeGraphStore` gained non-destructive `remove_local_source()` for
|
|
47
|
+
deleting only derived index/graph data while leaving user files untouched.
|
|
48
|
+
|
|
49
|
+
### Validation
|
|
50
|
+
|
|
51
|
+
- Unit, integration, Python build, npm build, VSIX packaging, and package
|
|
52
|
+
verification were run for this release.
|
|
53
|
+
|
|
3
54
|
## [0.6.0] - 2026-05-31
|
|
4
55
|
|
|
5
56
|
> Runtime / registry / config extraction release.
|
package/knowledge_graph.py
CHANGED
|
@@ -1609,6 +1609,39 @@ class KnowledgeGraphStore:
|
|
|
1609
1609
|
)
|
|
1610
1610
|
return {"source_id": source_id, "watch_enabled": bool(enabled)}
|
|
1611
1611
|
|
|
1612
|
+
def remove_local_source(self, source_id: str) -> Dict[str, Any]:
|
|
1613
|
+
"""Remove one approved local source and its derived graph projection.
|
|
1614
|
+
|
|
1615
|
+
This is intentionally non-destructive for user files: only the LatticeAI
|
|
1616
|
+
index rows, graph nodes, edges, and chunks derived from the source are
|
|
1617
|
+
removed. The original folder and files are never touched.
|
|
1618
|
+
"""
|
|
1619
|
+
source_id = str(source_id or "").strip()
|
|
1620
|
+
if not source_id:
|
|
1621
|
+
raise ValueError("source_id required")
|
|
1622
|
+
with self._connect() as conn:
|
|
1623
|
+
source = conn.execute(
|
|
1624
|
+
"SELECT id, root_path FROM knowledge_sources WHERE id=?",
|
|
1625
|
+
(source_id,),
|
|
1626
|
+
).fetchone()
|
|
1627
|
+
if not source:
|
|
1628
|
+
raise ValueError(f"knowledge source not found: {source_id}")
|
|
1629
|
+
rows = conn.execute(
|
|
1630
|
+
"SELECT graph_node_id FROM local_file_index WHERE source_id=? AND graph_node_id IS NOT NULL",
|
|
1631
|
+
(source_id,),
|
|
1632
|
+
).fetchall()
|
|
1633
|
+
graph_node_ids = [row["graph_node_id"] for row in rows if row["graph_node_id"]]
|
|
1634
|
+
for graph_node_id in graph_node_ids:
|
|
1635
|
+
self._delete_local_file_graph(conn, graph_node_id)
|
|
1636
|
+
conn.execute("DELETE FROM local_file_index WHERE source_id=?", (source_id,))
|
|
1637
|
+
conn.execute("DELETE FROM knowledge_sources WHERE id=?", (source_id,))
|
|
1638
|
+
self._cleanup_local_graph_orphans(conn, source_id)
|
|
1639
|
+
return {
|
|
1640
|
+
"source_id": source_id,
|
|
1641
|
+
"root_path": source["root_path"],
|
|
1642
|
+
"removed_graph_nodes": len(graph_node_ids),
|
|
1643
|
+
}
|
|
1644
|
+
|
|
1612
1645
|
def _extract_local_file_text(self, path: Path, category: str, *, include_ocr: bool) -> Tuple[str, Dict[str, Any]]:
|
|
1613
1646
|
ext = path.suffix.lower()
|
|
1614
1647
|
meta: Dict[str, Any] = {"parser": _parser_type_for_category(category, ext)}
|
package/latticeai/__init__.py
CHANGED