ltcai 8.4.0 → 8.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # Lattice AI
2
2
 
3
- **Lattice AI 8.4.0 is the local-first Digital Brain platform with action-aware Brain Chat that creates files through the governed workspace file tool instead of only returning code.**
3
+ **Lattice AI 8.5.0 is the local-first Digital Brain platform. This release hardens the Tool Registry (now drift-free and ready) and improves dependency injection for configuration (e.g. timezone flows through Config to automation runtimes) after full codebase scan and targeted refactors.**
4
4
 
5
5
  **Lattice AI는 모델이 바뀌어도 내 지식과 맥락을 보존하는 로컬 우선 AI 브레인입니다.**
6
6
 
@@ -11,7 +11,7 @@ downloads, update checks, and other external communication happen only after
11
11
  explicit consent.
12
12
 
13
13
  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 — now with an 8.4.0 action-readiness contract behind chat-to-tool file creation, onboarding, orchestration, graph ingestion, and the plugin/community path.
14
+ It is the finished private AI memory layer wrapped in a Living Brain experience — with ToolRegistry readiness, Config-driven DI for automation, and continued AgentRuntime/Tool wiring seams.
15
15
 
16
16
  [![PyPI Version](https://img.shields.io/pypi/v/ltcai?label=PyPI)](https://pypi.org/project/ltcai/)
17
17
  [![npm Version](https://img.shields.io/npm/v/ltcai?label=npm)](https://www.npmjs.com/package/ltcai)
@@ -204,7 +204,7 @@ See [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md) for developer workflow details.
204
204
 
205
205
  ## Current Release
206
206
 
207
- The current release is **8.4.0 — Action-Aware Brain Chat**:
207
+ The current release is **8.5.0 — Tool Registry Readiness & Config DI**:
208
208
 
209
209
  - Brain Chat now routes explicit file create/write/save/edit requests through
210
210
  the governed workspace file tool instead of treating them as ordinary prose
@@ -218,18 +218,18 @@ The current release is **8.4.0 — Action-Aware Brain Chat**:
218
218
  boundaries, unified graph ingestion, and workspace-safe duplicate content
219
219
  protections active.
220
220
 
221
- Expected artifacts for 8.4.0 release must use exact filenames:
221
+ Expected artifacts for 8.5.0 release must use exact filenames:
222
222
 
223
- - `dist/ltcai-8.4.0-py3-none-any.whl`
224
- - `dist/ltcai-8.4.0.tar.gz`
225
- - `ltcai-8.4.0.tgz`
226
- - `dist/ltcai-8.4.0.vsix`
227
- - `src-tauri/target/release/bundle/dmg/Lattice AI_8.4.0_aarch64.dmg`
223
+ - `dist/ltcai-8.5.0-py3-none-any.whl`
224
+ - `dist/ltcai-8.5.0.tar.gz`
225
+ - `ltcai-8.5.0.tgz`
226
+ - `dist/ltcai-8.5.0.vsix`
227
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_8.5.0_aarch64.dmg`
228
228
 
229
229
  Do not use wildcard artifact uploads. Package registry publishing remains owner-run.
230
230
 
231
231
  See [docs/ROADMAP_RECOMMENDATIONS.md](docs/ROADMAP_RECOMMENDATIONS.md) for the
232
- strategic roadmap slices applied through 8.4.0 and the follow-up tracks.
232
+ strategic roadmap slices applied through 8.5.0 and the follow-up tracks.
233
233
 
234
234
  ## Known Limitations
235
235
 
package/docs/CHANGELOG.md CHANGED
@@ -6,7 +6,19 @@ existed at that release.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- No unreleased changes.
9
+ ## [8.5.0] - 2026-07-01
10
+
11
+ ### Added
12
+ - ToolRegistry now reports `ready: true` with full handler/governance/description alignment (added `vision_analyze` policy and description).
13
+ - `tz_name` now flows from central `Config` into `TriggerService` (via updated automation and platform wiring runtimes) for better DI and Config centralization.
14
+
15
+ ### Changed
16
+ - Full codebase scan completed; improvements prioritized per AGENTS.md (registry, config injection, wiring seams).
17
+ - Version bumped to 8.5.0 across pyproject.toml, package.json, vscode-extension; all current-release doc references synchronized.
18
+ - Documentation sync performed for README, RELEASE.md, docs/CHANGELOG.md and Current release markers.
19
+
20
+ ### Fixed
21
+ - Eliminated ToolRegistry drift for `vision_analyze` (handler existed in tools/ but missing from core registry governance surface used by diagnostics, MCP, and permission views).
10
22
 
11
23
  ## [8.4.0] - 2026-07-01
12
24
 
@@ -1,8 +1,8 @@
1
1
  # Community And Plugins
2
2
 
3
- Current release: **8.4.0 - Action-Aware Brain Chat**.
3
+ Current release: **8.5.0 - Registry Polish & Config DI**.
4
4
 
5
- LatticeAI 8.4.0 defines the path from a strong local-first framework to a
5
+ LatticeAI defines the path from a strong local-first framework (8.4.0 action-aware baseline, 8.5.0 registry+DI hardening) to a
6
6
  product ecosystem. The immediate goal is small and practical: make it clear how
7
7
  contributors can extend the Brain without weakening local-first trust,
8
8
  workspace scoping, or release quality.
@@ -1,10 +1,10 @@
1
1
  # Lattice AI Development
2
2
 
3
- Current release: **8.4.0 - Action-Aware Brain Chat**.
3
+ Current release: **8.5.0 Tool Registry Readiness & Config DI**.
4
4
 
5
5
  This document is for contributors working on the local-first Digital Brain
6
6
  codebase. Product positioning and quick start stay in `README.md`; release
7
- history is intentionally limited to 7.0.0-8.4.0 in `docs/CHANGELOG.md` and
7
+ history is intentionally limited to 7.0.0-8.5.0 in `docs/CHANGELOG.md` and
8
8
  `RELEASE.md`.
9
9
 
10
10
  ## Product Contract
@@ -112,10 +112,10 @@ For user-facing, API, runtime, release, or packaging changes, check:
112
112
  Release/publish examples must use exact target-version filenames. Do not
113
113
  document wildcard artifact upload commands.
114
114
 
115
- For 8.4.0 release work, exact artifacts are:
115
+ For 8.5.0 release work, exact artifacts are:
116
116
 
117
- - `dist/ltcai-8.4.0-py3-none-any.whl`
118
- - `dist/ltcai-8.4.0.tar.gz`
119
- - `ltcai-8.4.0.tgz`
120
- - `dist/ltcai-8.4.0.vsix`
121
- - `src-tauri/target/release/bundle/dmg/Lattice AI_8.4.0_aarch64.dmg`
117
+ - `dist/ltcai-8.5.0-py3-none-any.whl`
118
+ - `dist/ltcai-8.5.0.tar.gz`
119
+ - `ltcai-8.5.0.tgz`
120
+ - `dist/ltcai-8.5.0.vsix`
121
+ - `src-tauri/target/release/bundle/dmg/Lattice AI_8.5.0_aarch64.dmg`
@@ -1,14 +1,14 @@
1
1
  # Legacy Compatibility Map
2
2
 
3
- Current release: **8.4.0 - Action-Aware Brain Chat**.
3
+ Current release: **8.5.0 Tool Registry Readiness & Config DI**.
4
4
 
5
5
  Lattice AI is moving toward a smaller, modular architecture centered on
6
6
  `lattice_brain`, `latticeai.services`, `latticeai.api`, and `latticeai.runtime`.
7
7
  Some root-level modules remain packaged for compatibility with older imports,
8
8
  CLI entrypoints, or extension workflows. Their presence does not define the
9
- current 8.4.0 architecture.
9
+ current 8.5.0 architecture.
10
10
 
11
- 8.4.0 also tracks the inner compatibility layers that sit below the root
11
+ 8.5.0 also tracks the inner compatibility layers that sit below the root
12
12
  modules. The managed inventory lives in `latticeai.core.legacy_compatibility`
13
13
  and groups shims by layer:
14
14
 
@@ -1,6 +1,6 @@
1
1
  # Lattice AI Onboarding
2
2
 
3
- Current release: **8.4.0 - Action-Aware Brain Chat**.
3
+ Current release: **8.5.0 Tool Registry Readiness & Config DI**.
4
4
 
5
5
  The first-run goal is a five-minute path from "I opened the app" to "my Brain
6
6
  has a source, a question, and proof." This page is the product contract behind
@@ -32,7 +32,7 @@ read the docs first.
32
32
 
33
33
  ## Release Gate
34
34
 
35
- 8.4.0 treats onboarding as a release gate, not marketing copy. The current
35
+ 8.5.0 treats onboarding as a release gate, not marketing copy. The current
36
36
  machine-checkable product readiness report requires this five-minute contract,
37
37
  the Brain Home surface, setup helpers, graph ingestion tests, and exact release
38
38
  artifact documentation before the release can be called complete.
@@ -1,6 +1,6 @@
1
1
  # Lattice AI Trust Model
2
2
 
3
- Current release: **8.4.0 - Action-Aware Brain Chat**.
3
+ Current release: **8.5.0 Tool Registry Readiness & Config DI**.
4
4
 
5
5
  Lattice AI is local-first, explicit about external communication, and honest
6
6
  when a capability is unavailable.
@@ -1,6 +1,6 @@
1
1
  # Why Lattice AI Exists
2
2
 
3
- Current release: **8.4.0 - Action-Aware Brain Chat**.
3
+ Current release: **8.5.0 Tool Registry Readiness & Config DI**.
4
4
 
5
5
  **Lattice AI is a local-first Digital Brain that keeps your knowledge durable
6
6
  across any AI model.**
@@ -32,7 +32,7 @@ The graph matters, but it is not the product identity. The product identity is a
32
32
  local-first Digital Brain: a place where the user can talk, add sources, watch
33
33
  memory grow, and inspect the Knowledge Graph when they need proof.
34
34
 
35
- In 8.4.0 the first screen is intentionally not a dashboard. The living Brain,
35
+ In 8.5.0 the first screen is intentionally not a dashboard. The living Brain,
36
36
  conversation composer, evidence-backed Brain Brief, and five-minute onboarding
37
37
  path appear together so the user immediately knows what matters, what to add,
38
38
  and why the answer is grounded in local memory.
package/docs/kg-schema.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Knowledge Graph Schema
2
2
 
3
- Current release: **8.4.0 - Action-Aware Brain Chat**.
3
+ Current release: **8.5.0 Tool Registry Readiness & Config DI**.
4
4
 
5
5
  명세 출처: `lattice_ai_full_spec.pptx` 슬라이드 20·21·22
6
6
  구현: `kg_schema.py`
@@ -26,7 +26,7 @@ from .storage import (
26
26
  storage_from_env,
27
27
  )
28
28
 
29
- __version__ = "8.4.0"
29
+ __version__ = "8.5.0"
30
30
 
31
31
  __all__ = [
32
32
  "AgentRuntime",
@@ -21,7 +21,7 @@ from typing import Any, Callable, Dict, List, Optional
21
21
  from .contracts import multi_agent_contract
22
22
 
23
23
 
24
- MULTI_AGENT_VERSION = "8.4.0"
24
+ MULTI_AGENT_VERSION = "8.5.0"
25
25
 
26
26
  AGENT_ROLES = ("researcher", "planner", "executor", "reviewer", "release")
27
27
  CORE_PIPELINE = ("planner", "executor", "reviewer")
@@ -1,3 +1,3 @@
1
1
  """Lattice AI - modular server package."""
2
2
 
3
- __version__ = "8.4.0"
3
+ __version__ = "8.5.0"
@@ -1192,6 +1192,7 @@ def _build(config: "Optional[Config]" = None) -> Dict[str, Any]:
1192
1192
  agent_registry=AGENT_REGISTRY,
1193
1193
  data_dir=DATA_DIR,
1194
1194
  append_audit_event=append_audit_event,
1195
+ tz_name=getattr(CONFIG, "timezone", None),
1195
1196
  )
1196
1197
  _llm_generate_sync = _platform_automation_runtime["_llm_generate_sync"]
1197
1198
  PLATFORM = _platform_automation_runtime["PLATFORM"]
@@ -14,7 +14,7 @@ from pathlib import Path
14
14
  from typing import Any, Dict, List
15
15
 
16
16
 
17
- LEGACY_COMPATIBILITY_VERSION = "8.4.0"
17
+ LEGACY_COMPATIBILITY_VERSION = "8.5.0"
18
18
 
19
19
 
20
20
  @dataclass(frozen=True)
@@ -11,7 +11,7 @@ from copy import deepcopy
11
11
  from typing import Any, Dict, List, Optional
12
12
 
13
13
 
14
- MARKETPLACE_VERSION = "8.4.0"
14
+ MARKETPLACE_VERSION = "8.5.0"
15
15
  TEMPLATE_KINDS = ("plugin", "workflow", "agent")
16
16
 
17
17
 
@@ -180,6 +180,7 @@ TOOL_GOVERNANCE: Dict[str, ToolPolicy] = {
180
180
  risk="exec", destructive=False, shell=False, network=True,
181
181
  auto_approve=False, sandbox="system", rollback="none",
182
182
  ),
183
+ "vision_analyze": _r(sandbox="system"),
183
184
  }
184
185
 
185
186
  TOOL_GOVERNANCE_DEFAULT = ToolPolicy(
@@ -221,6 +222,7 @@ MCP_TOOL_DESCRIPTIONS: Dict[str, str] = {
221
222
  "computer_status": "Check if Mac desktop control (pyautogui) is available.",
222
223
  "chrome_status": "Report Chrome desktop bridge availability.",
223
224
  "computer_use_status": "Report Mac desktop-control bridge availability.",
225
+ "vision_analyze": "Analyze a base64-encoded image (e.g. screenshot) using the active multimodal VLM. Returns structured description for agent consumption.",
224
226
  "knowledge_save": "Save a note into the local knowledge garden.",
225
227
  "knowledge_search": "Search the local knowledge garden.",
226
228
  "knowledge_tree": "List local knowledge garden markdown files.",
@@ -49,7 +49,7 @@ __all__ = [
49
49
  "remove_skill_directory",
50
50
  ]
51
51
 
52
- WORKSPACE_OS_VERSION = "8.4.0"
52
+ WORKSPACE_OS_VERSION = "8.5.0"
53
53
 
54
54
  # Workspace types separate single-user Personal workspaces from shared
55
55
  # Organization workspaces. Both keep the same local-first JSON store; the type
@@ -6,7 +6,7 @@ Router registration remains in ``app_factory`` so route order stays unchanged.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- from typing import Any, Callable, Dict
9
+ from typing import Any, Callable, Dict, Optional
10
10
 
11
11
 
12
12
  def build_automation_runtime(
@@ -17,6 +17,7 @@ def build_automation_runtime(
17
17
  workspace_graph: Callable[..., Any],
18
18
  append_audit_event: Callable[..., Any],
19
19
  hooks: Any,
20
+ tz_name: Optional[str] = None,
20
21
  ) -> Dict[str, Any]:
21
22
  """Construct automation services and attach the run executor boundary."""
22
23
 
@@ -37,6 +38,7 @@ def build_automation_runtime(
37
38
  ),
38
39
  data_dir=data_dir,
39
40
  review_sink=review_queue,
41
+ tz_name=tz_name,
40
42
  )
41
43
  agent_runtime = AgentRuntime(
42
44
  store=store,
@@ -7,7 +7,7 @@ surface without changing router order or the legacy exported runtime names.
7
7
 
8
8
  from __future__ import annotations
9
9
 
10
- from typing import Any, Callable, Dict
10
+ from typing import Any, Callable, Dict, Optional
11
11
 
12
12
 
13
13
  def build_platform_automation_runtime(
@@ -24,6 +24,7 @@ def build_platform_automation_runtime(
24
24
  agent_registry: Any,
25
25
  data_dir: Any,
26
26
  append_audit_event: Callable[..., Any],
27
+ tz_name: Optional[str] = None,
27
28
  ) -> Dict[str, Any]:
28
29
  """Build platform services, automation services, and hook bindings.
29
30
 
@@ -73,6 +74,7 @@ def build_platform_automation_runtime(
73
74
  workspace_graph=workspace_graph,
74
75
  append_audit_event=append_audit_event,
75
76
  hooks=hooks,
77
+ tz_name=tz_name,
76
78
  )
77
79
 
78
80
  return {
@@ -1,6 +1,6 @@
1
1
  """Machine-checkable architecture readiness gates for release work.
2
2
 
3
- 8.4.0 keeps the major architecture priorities under an explicit release
3
+ 8.5.0 keeps the major architecture priorities under an explicit release
4
4
  contract while product maturity work reduces visible beta seams. AgentRuntime, ToolRegistry,
5
5
  central Config, decomposed server runtime, and Knowledge Graph stabilization
6
6
  must remain discoverable, ordered, and backed by tests before the release can be
@@ -17,7 +17,7 @@ from typing import Any, Dict, List
17
17
  from latticeai.core.legacy_compatibility import legacy_shim_report
18
18
 
19
19
 
20
- ARCHITECTURE_VERSION_TARGET = "8.4.0"
20
+ ARCHITECTURE_VERSION_TARGET = "8.5.0"
21
21
 
22
22
  PREFERRED_REFACTORING_ORDER = [
23
23
  "agent-runtime",
@@ -18,7 +18,7 @@ from typing import Any, Dict, List
18
18
 
19
19
  from latticeai.services.architecture_readiness import architecture_readiness
20
20
 
21
- PRODUCT_VERSION_TARGET = "8.4.0"
21
+ PRODUCT_VERSION_TARGET = "8.5.0"
22
22
 
23
23
 
24
24
  @dataclass(frozen=True)
@@ -76,10 +76,10 @@ PRODUCT_GATES: List[ProductGate] = [
76
76
  evidence=[
77
77
  "package.json::release:artifacts",
78
78
  "package.json::release:validate",
79
- "README.md::dist/ltcai-8.4.0-py3-none-any.whl",
80
- "README.md::dist/ltcai-8.4.0.tar.gz",
81
- "README.md::dist/ltcai-8.4.0.vsix",
82
- "README.md::ltcai-8.4.0.tgz",
79
+ "README.md::dist/ltcai-8.5.0-py3-none-any.whl",
80
+ "README.md::dist/ltcai-8.5.0.tar.gz",
81
+ "README.md::dist/ltcai-8.5.0.vsix",
82
+ "README.md::ltcai-8.5.0.tgz",
83
83
  "scripts/validate_release_artifacts.py",
84
84
  "scripts/release_smoke.py",
85
85
  "Dockerfile",
@@ -95,10 +95,10 @@ PRODUCT_GATES: List[ProductGate] = [
95
95
  title="Release story is documented and honest",
96
96
  evidence=[
97
97
  "README.md",
98
- "README.md::The current release is **8.4.0",
99
- "SECURITY.md::8.4.x (latest)",
100
- "vscode-extension/README.md::**8.4.0",
101
- "docs/CHANGELOG.md::## [8.4.0]",
98
+ "README.md::The current release is **8.5.0",
99
+ "SECURITY.md::8.5.x (latest)",
100
+ "vscode-extension/README.md::**8.5.0",
101
+ "docs/CHANGELOG.md::## [8.5.0]",
102
102
  "FEATURE_STATUS.md",
103
103
  "RELEASE_NOTES_v8.4.0.md",
104
104
  "latticeai/core/agent.py::SingleAgentRuntime",
@@ -115,7 +115,7 @@ PRODUCT_GATES: List[ProductGate] = [
115
115
  id="ecosystem-path",
116
116
  title="Community and plugin growth path is explicit",
117
117
  evidence=[
118
- "docs/COMMUNITY_AND_PLUGINS.md::LatticeAI 8.4.0",
118
+ "docs/COMMUNITY_AND_PLUGINS.md::8.5.0",
119
119
  "docs/PLUGIN_SDK.md",
120
120
  "plugins/README.md",
121
121
  "plugins/hello-world/plugin.json",
@@ -49,6 +49,7 @@ class TriggerService:
49
49
  clock: Callable[[], float] = time.time,
50
50
  tick_seconds: float = DEFAULT_TICK_SECONDS,
51
51
  review_sink: Optional[Any] = None,
52
+ tz_name: Optional[str] = None,
52
53
  ) -> None:
53
54
  self._store = store
54
55
  self._run_workflow = run_workflow
@@ -63,7 +64,8 @@ class TriggerService:
63
64
  self._lock = threading.Lock()
64
65
  # LATTICE_TZ: wall-clock / display 용. interval 계산은 여전히 unix seconds (duration 기반, drift 방지).
65
66
  # describe()와 이벤트에 tz 정보 노출. calendar "daily at HH:MM" semantics 는 추후 cron 확장 시 사용.
66
- self._tz_name = os.environ.get("LATTICE_TZ") or "UTC"
67
+ # Prefer explicit tz_name (from Config) for DI; fall back to env for legacy/compat.
68
+ self._tz_name = (tz_name or os.environ.get("LATTICE_TZ") or "UTC").strip() or "UTC"
67
69
  self._tz = None
68
70
  if ZoneInfo is not None:
69
71
  try:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ltcai",
3
- "version": "8.4.0",
3
+ "version": "8.5.0",
4
4
  "description": "Lattice AI — local-first Digital Brain that keeps your knowledge durable across any AI model.",
5
5
  "homepage": "https://github.com/TaeSooPark-PTS/LatticeAI#readme",
6
6
  "repository": {
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lattice-ai-desktop"
3
- version = "8.4.0"
3
+ version = "8.5.0"
4
4
  description = "Lattice AI Digital Brain desktop shell"
5
5
  authors = ["TaeSoo Park"]
6
6
  edition = "2021"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://schema.tauri.app/config/2",
3
3
  "productName": "Lattice AI",
4
- "version": "8.4.0",
4
+ "version": "8.5.0",
5
5
  "identifier": "ai.lattice.desktop",
6
6
  "build": {
7
7
  "beforeDevCommand": "npm run frontend:dev",
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "8.4.0",
2
+ "version": "8.5.0",
3
3
  "generated_at": "vite",
4
4
  "entrypoints": {
5
5
  "app": "/static/app/assets/index-CoiuIFFP.js"
package/static/sw.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // Lattice Service Worker — PWA install + offline shell for the /app SPA.
2
2
  // Strategy: precache the Vite app bundle from its asset manifest,
3
3
  // cache-first for static assets, network-only for everything dynamic.
4
- const CACHE = "lattice-v840";
4
+ const CACHE = "lattice-v850";
5
5
  const MANIFEST_URL = "/static/app/asset-manifest.json";
6
6
 
7
7
  // Non-manifest assets the shell needs offline.