ltcai 8.6.0 → 8.7.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 +31 -29
- package/docs/CHANGELOG.md +23 -1
- package/docs/COMMUNITY_AND_PLUGINS.md +5 -3
- package/docs/DEVELOPMENT.md +11 -9
- package/docs/LEGACY_COMPATIBILITY.md +3 -3
- package/docs/ONBOARDING.md +2 -2
- package/docs/TRUST_MODEL.md +1 -1
- package/docs/WHY_LATTICE.md +2 -2
- package/docs/kg-schema.md +1 -1
- package/lattice_brain/__init__.py +1 -1
- package/lattice_brain/runtime/multi_agent.py +1 -1
- package/latticeai/__init__.py +1 -1
- package/latticeai/app_factory.py +2 -2
- package/latticeai/core/config.py +14 -2
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/models/router.py +3 -2
- package/latticeai/runtime/router_registration.py +11 -5
- package/latticeai/services/architecture_readiness.py +2 -2
- package/latticeai/services/model_runtime.py +52 -28
- package/latticeai/services/product_readiness.py +11 -11
- package/package.json +3 -2
- package/scripts/bump_version.py +2 -0
- package/scripts/check_python.py +25 -12
- package/src-tauri/Cargo.lock +1 -1
- package/src-tauri/Cargo.toml +1 -1
- package/src-tauri/tauri.conf.json +1 -1
- package/static/app/asset-manifest.json +10 -10
- package/static/app/assets/{Act-IrojDEWY.js → Act-_U7mhXir.js} +1 -1
- package/static/app/assets/{Brain--VODO4HM.js → Brain-BxyTHZ21.js} +1 -1
- package/static/app/assets/Capture-DyDKWNh9.js +1 -0
- package/static/app/assets/{Library-DrVto3cO.js → Library-DJ8KioFM.js} +1 -1
- package/static/app/assets/{System-DNrVbcMX.js → System-C0FIb3OO.js} +1 -1
- package/static/app/assets/index-Bh7IIlyY.js +16 -0
- package/static/app/assets/{primitives-lz45ZfWY.js → primitives-BywkNS3f.js} +1 -1
- package/static/app/assets/{textarea-C7uwJsxy.js → textarea-CQ61Rycp.js} +1 -1
- package/static/app/index.html +1 -1
- package/static/sw.js +1 -1
- package/static/app/assets/Capture-BUP_wJ7s.js +0 -1
- package/static/app/assets/index-BaaPtsLp.js +0 -16
|
@@ -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.
|
|
21
|
+
PRODUCT_VERSION_TARGET = "8.7.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.
|
|
80
|
-
"README.md::dist/ltcai-8.
|
|
81
|
-
"README.md::dist/ltcai-8.
|
|
82
|
-
"README.md::ltcai-8.
|
|
79
|
+
"README.md::dist/ltcai-8.7.0-py3-none-any.whl",
|
|
80
|
+
"README.md::dist/ltcai-8.7.0.tar.gz",
|
|
81
|
+
"README.md::dist/ltcai-8.7.0.vsix",
|
|
82
|
+
"README.md::ltcai-8.7.0.tgz",
|
|
83
83
|
"scripts/validate_release_artifacts.py",
|
|
84
84
|
"scripts/release_smoke.py",
|
|
85
85
|
"Dockerfile",
|
|
@@ -95,12 +95,12 @@ 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.
|
|
99
|
-
"SECURITY.md::8.
|
|
100
|
-
"vscode-extension/README.md::**8.
|
|
101
|
-
"docs/CHANGELOG.md::## [8.
|
|
98
|
+
"README.md::The current release is **8.7.0",
|
|
99
|
+
"SECURITY.md::8.7.x (latest)",
|
|
100
|
+
"vscode-extension/README.md::**8.7.0",
|
|
101
|
+
"docs/CHANGELOG.md::## [8.7.0]",
|
|
102
102
|
"FEATURE_STATUS.md",
|
|
103
|
-
"RELEASE_NOTES_v8.
|
|
103
|
+
"RELEASE_NOTES_v8.7.0.md",
|
|
104
104
|
"latticeai/core/agent.py::SingleAgentRuntime",
|
|
105
105
|
"latticeai/core/agent.py::AgentRuntime = SingleAgentRuntime",
|
|
106
106
|
"lattice_brain/runtime/contracts.py::runtime-boundary/v1",
|
|
@@ -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::8.
|
|
118
|
+
"docs/COMMUNITY_AND_PLUGINS.md::8.7.0",
|
|
119
119
|
"docs/PLUGIN_SDK.md",
|
|
120
120
|
"plugins/README.md",
|
|
121
121
|
"plugins/hello-world/plugin.json",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ltcai",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.7.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": {
|
|
@@ -23,7 +23,8 @@
|
|
|
23
23
|
"build:assets": "vite build && node scripts/build_frontend_assets.mjs",
|
|
24
24
|
"build:python": "node scripts/run_python.mjs -m build",
|
|
25
25
|
"check:python": "node scripts/run_python.mjs scripts/check_python.py",
|
|
26
|
-
"lint": "node --check tests/visual/mock_server.cjs && node --check tests/visual/v3.spec.js && npm run lint:frontend && node scripts/check_i18n_literals.mjs",
|
|
26
|
+
"lint": "npm run lint:python && node --check tests/visual/mock_server.cjs && node --check tests/visual/v3.spec.js && npm run lint:frontend && node scripts/check_i18n_literals.mjs",
|
|
27
|
+
"lint:python": "node scripts/run_python.mjs -m ruff check .",
|
|
27
28
|
"lint:frontend": "node scripts/lint_frontend.mjs",
|
|
28
29
|
"docs:check-links": "node scripts/check_markdown_links.mjs",
|
|
29
30
|
"typecheck": "npm run typecheck:frontend && cd vscode-extension && npm run build",
|
package/scripts/bump_version.py
CHANGED
|
@@ -27,6 +27,8 @@ TARGETS = [
|
|
|
27
27
|
("latticeai/core/workspace_os.py", "regex", r'(WORKSPACE_OS_VERSION = ")([^"]+)(")'),
|
|
28
28
|
("latticeai/core/marketplace.py", "regex", r'(MARKETPLACE_VERSION = ")([^"]+)(")'),
|
|
29
29
|
("lattice_brain/runtime/multi_agent.py", "regex", r'(MULTI_AGENT_VERSION = ")([^"]+)(")'),
|
|
30
|
+
("latticeai/services/architecture_readiness.py", "regex", r'(ARCHITECTURE_VERSION_TARGET = ")([^"]+)(")'),
|
|
31
|
+
("latticeai/services/product_readiness.py", "regex", r'(PRODUCT_VERSION_TARGET = ")([^"]+)(")'),
|
|
30
32
|
("pyproject.toml", "regex", r'(^version = ")([^"]+)(")'),
|
|
31
33
|
("package.json", "json", "version"),
|
|
32
34
|
("package-lock.json", "package-lock", None),
|
package/scripts/check_python.py
CHANGED
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""Discover-and-
|
|
2
|
+
"""Discover-and-syntax-check every first-party Python module.
|
|
3
3
|
|
|
4
4
|
Replaces the hand-maintained ``py_compile`` enumeration in CI and
|
|
5
5
|
``package.json``: walks the repository, skips vendored / virtualenv / build /
|
|
6
|
-
cache / generated directories, and
|
|
6
|
+
cache / generated directories, and checks everything that remains. New
|
|
7
7
|
modules are picked up automatically — there is nothing to update when a file is
|
|
8
8
|
added, so the syntax gate can never silently fall behind the codebase.
|
|
9
9
|
|
|
10
|
+
Unlike ``py_compile``, this script does not write ``.pyc`` files or create
|
|
11
|
+
``__pycache__`` directories. Validation should not dirty a developer's working
|
|
12
|
+
tree or leave generated files for later lint passes to trip over.
|
|
13
|
+
|
|
10
14
|
Usage::
|
|
11
15
|
|
|
12
|
-
python scripts/check_python.py #
|
|
13
|
-
python scripts/check_python.py --list # just print what would be
|
|
16
|
+
python scripts/check_python.py # syntax-check all discovered modules
|
|
17
|
+
python scripts/check_python.py --list # just print what would be checked
|
|
14
18
|
|
|
15
|
-
Exit code is non-zero if any module fails to
|
|
19
|
+
Exit code is non-zero if any module fails to parse.
|
|
16
20
|
"""
|
|
17
21
|
|
|
18
22
|
from __future__ import annotations
|
|
19
23
|
|
|
20
|
-
import py_compile
|
|
21
24
|
import sys
|
|
22
25
|
from pathlib import Path
|
|
23
26
|
|
|
@@ -44,6 +47,7 @@ EXCLUDE_DIRS = {
|
|
|
44
47
|
"playwright-report",
|
|
45
48
|
"test-results",
|
|
46
49
|
"ltcai.egg-info",
|
|
50
|
+
"output",
|
|
47
51
|
".ltcai",
|
|
48
52
|
".ltcai-brain",
|
|
49
53
|
".ltcai-test",
|
|
@@ -60,6 +64,16 @@ def iter_modules():
|
|
|
60
64
|
yield path
|
|
61
65
|
|
|
62
66
|
|
|
67
|
+
def check_syntax(path: Path) -> str | None:
|
|
68
|
+
"""Return a human-readable failure string, or ``None`` when syntax is valid."""
|
|
69
|
+
|
|
70
|
+
try:
|
|
71
|
+
compile(path.read_bytes(), str(path), "exec", dont_inherit=True)
|
|
72
|
+
except (OSError, SyntaxError, ValueError) as exc:
|
|
73
|
+
return f"{path.relative_to(ROOT)}: {exc}"
|
|
74
|
+
return None
|
|
75
|
+
|
|
76
|
+
|
|
63
77
|
def main(argv: list[str]) -> int:
|
|
64
78
|
modules = sorted(iter_modules())
|
|
65
79
|
if "--list" in argv:
|
|
@@ -69,17 +83,16 @@ def main(argv: list[str]) -> int:
|
|
|
69
83
|
|
|
70
84
|
failures: list[str] = []
|
|
71
85
|
for path in modules:
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
failures.append(str(exc))
|
|
86
|
+
failure = check_syntax(path)
|
|
87
|
+
if failure:
|
|
88
|
+
failures.append(failure)
|
|
76
89
|
|
|
77
90
|
if failures:
|
|
78
91
|
print("\n".join(failures))
|
|
79
|
-
print(f"check:python FAILED — {len(failures)} of {len(modules)} module(s) did not
|
|
92
|
+
print(f"check:python FAILED — {len(failures)} of {len(modules)} module(s) did not parse")
|
|
80
93
|
return 1
|
|
81
94
|
|
|
82
|
-
print(f"check:python OK —
|
|
95
|
+
print(f"check:python OK — syntax-checked {len(modules)} modules")
|
|
83
96
|
return 0
|
|
84
97
|
|
|
85
98
|
|
package/src-tauri/Cargo.lock
CHANGED
package/src-tauri/Cargo.toml
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "8.
|
|
2
|
+
"version": "8.7.0",
|
|
3
3
|
"generated_at": "vite",
|
|
4
4
|
"entrypoints": {
|
|
5
|
-
"app": "/static/app/assets/index-
|
|
5
|
+
"app": "/static/app/assets/index-Bh7IIlyY.js"
|
|
6
6
|
},
|
|
7
7
|
"assets": {
|
|
8
8
|
"../node_modules/@tauri-apps/api/core.js": "/static/app/assets/core-CwxXejkd.js",
|
|
9
|
-
"_primitives-
|
|
10
|
-
"_textarea-
|
|
11
|
-
"index.html": "/static/app/assets/index-
|
|
9
|
+
"_primitives-BywkNS3f.js": "/static/app/assets/primitives-BywkNS3f.js",
|
|
10
|
+
"_textarea-CQ61Rycp.js": "/static/app/assets/textarea-CQ61Rycp.js",
|
|
11
|
+
"index.html": "/static/app/assets/index-Bh7IIlyY.js",
|
|
12
12
|
"assets/index-_M5aCv21.css": "/static/app/assets/index-_M5aCv21.css",
|
|
13
|
-
"src/pages/Act.tsx": "/static/app/assets/Act-
|
|
14
|
-
"src/pages/Brain.tsx": "/static/app/assets/Brain
|
|
15
|
-
"src/pages/Capture.tsx": "/static/app/assets/Capture-
|
|
16
|
-
"src/pages/Library.tsx": "/static/app/assets/Library-
|
|
17
|
-
"src/pages/System.tsx": "/static/app/assets/System-
|
|
13
|
+
"src/pages/Act.tsx": "/static/app/assets/Act-_U7mhXir.js",
|
|
14
|
+
"src/pages/Brain.tsx": "/static/app/assets/Brain-BxyTHZ21.js",
|
|
15
|
+
"src/pages/Capture.tsx": "/static/app/assets/Capture-DyDKWNh9.js",
|
|
16
|
+
"src/pages/Library.tsx": "/static/app/assets/Library-DJ8KioFM.js",
|
|
17
|
+
"src/pages/System.tsx": "/static/app/assets/System-C0FIb3OO.js"
|
|
18
18
|
}
|
|
19
19
|
}
|