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 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>Local-first AI workspace for your files, chats, folders, and knowledge graph.</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
  [![PyPI](https://img.shields.io/pypi/v/ltcai?label=PyPI&color=blue)](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 memory layer.**
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 lets you ask questions over that graph with local or opt-in cloud models.
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 AI chat, search, document generation, and admin audit
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 the first account becomes admin choose a model connect folders start asking questions.
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.
@@ -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)}
@@ -1 +1,3 @@
1
- """Lattice AI modular server package."""
1
+ """Lattice AI - modular server package."""
2
+
3
+ __version__ = "1.0.0"