ltcai 6.2.0 → 6.3.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 +18 -15
- package/docs/CHANGELOG.md +42 -0
- package/frontend/src/components/onboarding/AnalysisScreen.tsx +127 -0
- package/frontend/src/components/onboarding/DownloadConsentPanel.tsx +29 -0
- package/frontend/src/components/onboarding/InstallScreen.tsx +208 -0
- package/frontend/src/components/onboarding/LanguageChooser.tsx +23 -0
- package/frontend/src/components/onboarding/LoginScreen.tsx +131 -0
- package/frontend/src/components/onboarding/ProductFlowScreens.tsx +13 -688
- package/frontend/src/components/onboarding/RecommendationScreen.tsx +59 -0
- package/frontend/src/components/onboarding/recommendationModel.ts +132 -0
- package/frontend/src/features/admin/AdminConsole.tsx +1 -1
- package/frontend/src/features/brain/BrainCarePanel.tsx +254 -0
- package/frontend/src/features/brain/BrainComposer.tsx +66 -0
- package/frontend/src/features/brain/BrainConversation.tsx +131 -0
- package/frontend/src/features/brain/BrainGraphLayer.tsx +132 -0
- package/frontend/src/features/brain/BrainHome.tsx +28 -795
- package/frontend/src/features/brain/BrainMemoryLayer.tsx +38 -0
- package/frontend/src/features/brain/BrainOverviewPanel.tsx +74 -0
- package/frontend/src/features/brain/BrainRelationshipLayer.tsx +43 -0
- package/frontend/src/features/brain/DepthEmergence.tsx +53 -0
- package/frontend/src/features/brain/types.ts +6 -6
- package/frontend/src/features/review/ReviewCard.tsx +3 -1
- package/frontend/src/features/review/ReviewInbox.tsx +11 -1
- package/frontend/src/i18n.ts +92 -0
- package/frontend/src/pages/Brain.tsx +63 -5
- package/frontend/src/pages/Capture.tsx +102 -13
- package/frontend/src/pages/Library.tsx +72 -6
- 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 +31 -39
- package/latticeai/core/marketplace.py +1 -1
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/runtime/chat_wiring.py +119 -0
- package/latticeai/runtime/model_wiring.py +40 -0
- package/latticeai/runtime/platform_runtime_wiring.py +2 -3
- package/latticeai/runtime/review_wiring.py +37 -0
- package/latticeai/runtime/tail_wiring.py +21 -0
- package/package.json +2 -2
- package/scripts/check_i18n_literals.mjs +52 -0
- 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 +5 -5
- package/static/app/assets/{index-D91Rz5--.js → index-D76dWuQk.js} +2 -2
- package/static/app/assets/index-D76dWuQk.js.map +1 -0
- package/static/app/assets/index-Div5vMlq.css +2 -0
- package/static/app/index.html +2 -2
- package/static/app/assets/index-B2-1Gm0q.css +0 -2
- package/static/app/assets/index-D91Rz5--.js.map +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Review, browser, portability, network, garden, and setup tail wiring."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def register_tail_runtime_routers(
|
|
9
|
+
*,
|
|
10
|
+
app: Any,
|
|
11
|
+
create_review_queue_router: Any,
|
|
12
|
+
register_review_and_brain_tail_routers: Any,
|
|
13
|
+
build_brain_network: Any,
|
|
14
|
+
**kwargs: Any,
|
|
15
|
+
) -> Any:
|
|
16
|
+
return register_review_and_brain_tail_routers(
|
|
17
|
+
app,
|
|
18
|
+
create_review_queue_router=create_review_queue_router,
|
|
19
|
+
build_brain_network=build_brain_network,
|
|
20
|
+
**kwargs,
|
|
21
|
+
)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ltcai",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.3.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,7 @@
|
|
|
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",
|
|
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",
|
|
27
27
|
"lint:frontend": "node scripts/lint_frontend.mjs",
|
|
28
28
|
"docs:check-links": "node scripts/check_markdown_links.mjs",
|
|
29
29
|
"typecheck": "npm run typecheck:frontend && cd vscode-extension && npm run build",
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
3
|
+
import { join, relative } from "node:path";
|
|
4
|
+
|
|
5
|
+
const repo = join(import.meta.dirname, "..");
|
|
6
|
+
const roots = [
|
|
7
|
+
join(repo, "frontend", "src", "features", "brain"),
|
|
8
|
+
join(repo, "frontend", "src", "features", "admin"),
|
|
9
|
+
join(repo, "frontend", "src", "components", "onboarding"),
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
function walk(dir) {
|
|
13
|
+
if (!existsSync(dir)) return [];
|
|
14
|
+
const out = [];
|
|
15
|
+
for (const name of readdirSync(dir)) {
|
|
16
|
+
const path = join(dir, name);
|
|
17
|
+
const stat = statSync(path);
|
|
18
|
+
if (stat.isDirectory()) out.push(...walk(path));
|
|
19
|
+
else if (name.endsWith(".tsx")) out.push(path);
|
|
20
|
+
}
|
|
21
|
+
return out;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const rawLocalizedProps = /\b(?:aria-label|placeholder|title)=["'][^"'{]*[A-Za-z][^"']*["']/g;
|
|
25
|
+
const rawJsxText = />\s*([A-Z][A-Za-z0-9][^<>{}\n]{2,})\s*</g;
|
|
26
|
+
const rawComponentCopy = /\b(?:title|detail|description|successLabel|empty)=["'][^"'{]*[A-Za-z][^"']*["']/g;
|
|
27
|
+
let failures = 0;
|
|
28
|
+
|
|
29
|
+
for (const file of roots.flatMap(walk)) {
|
|
30
|
+
const text = readFileSync(file, "utf8");
|
|
31
|
+
const matches = [
|
|
32
|
+
...(text.match(rawLocalizedProps) || []),
|
|
33
|
+
...(text.match(rawComponentCopy) || []),
|
|
34
|
+
];
|
|
35
|
+
for (const match of text.matchAll(rawJsxText)) {
|
|
36
|
+
const literal = match[1].trim();
|
|
37
|
+
if (!literal || /^[A-Z][a-z]*$/.test(literal) || /^Lattice\b/.test(literal)) continue;
|
|
38
|
+
matches.push(`JSX text: ${literal}`);
|
|
39
|
+
}
|
|
40
|
+
if (!matches.length) continue;
|
|
41
|
+
failures += matches.length;
|
|
42
|
+
for (const match of matches) {
|
|
43
|
+
console.error(`${relative(repo, file)}: hardcoded localized prop: ${match}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (failures) {
|
|
48
|
+
console.error(`i18n literal check: ${failures} failure(s)`);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
console.log("i18n literal check: localized props use translation keys");
|
package/src-tauri/Cargo.lock
CHANGED
package/src-tauri/Cargo.toml
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "6.
|
|
2
|
+
"version": "6.3.0",
|
|
3
3
|
"generated_at": "vite",
|
|
4
4
|
"entrypoints": {
|
|
5
5
|
"app": "/static/app/index.html"
|
|
6
6
|
},
|
|
7
7
|
"assets": {
|
|
8
8
|
"../node_modules/@tauri-apps/api/core.js": "/static/app/assets/core-CwxXejkd.js",
|
|
9
|
-
"index.html": "/static/app/assets/index-
|
|
10
|
-
"assets/index-
|
|
9
|
+
"index.html": "/static/app/assets/index-D76dWuQk.js",
|
|
10
|
+
"assets/index-Div5vMlq.css": "/static/app/assets/index-Div5vMlq.css"
|
|
11
11
|
},
|
|
12
12
|
"vite": {
|
|
13
13
|
"../node_modules/@tauri-apps/api/core.js": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"isDynamicEntry": true
|
|
18
18
|
},
|
|
19
19
|
"index.html": {
|
|
20
|
-
"file": "assets/index-
|
|
20
|
+
"file": "assets/index-D76dWuQk.js",
|
|
21
21
|
"name": "index",
|
|
22
22
|
"src": "index.html",
|
|
23
23
|
"isEntry": true,
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"../node_modules/@tauri-apps/api/core.js"
|
|
26
26
|
],
|
|
27
27
|
"css": [
|
|
28
|
-
"assets/index-
|
|
28
|
+
"assets/index-Div5vMlq.css"
|
|
29
29
|
]
|
|
30
30
|
}
|
|
31
31
|
}
|