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.
Files changed (50) hide show
  1. package/README.md +18 -15
  2. package/docs/CHANGELOG.md +42 -0
  3. package/frontend/src/components/onboarding/AnalysisScreen.tsx +127 -0
  4. package/frontend/src/components/onboarding/DownloadConsentPanel.tsx +29 -0
  5. package/frontend/src/components/onboarding/InstallScreen.tsx +208 -0
  6. package/frontend/src/components/onboarding/LanguageChooser.tsx +23 -0
  7. package/frontend/src/components/onboarding/LoginScreen.tsx +131 -0
  8. package/frontend/src/components/onboarding/ProductFlowScreens.tsx +13 -688
  9. package/frontend/src/components/onboarding/RecommendationScreen.tsx +59 -0
  10. package/frontend/src/components/onboarding/recommendationModel.ts +132 -0
  11. package/frontend/src/features/admin/AdminConsole.tsx +1 -1
  12. package/frontend/src/features/brain/BrainCarePanel.tsx +254 -0
  13. package/frontend/src/features/brain/BrainComposer.tsx +66 -0
  14. package/frontend/src/features/brain/BrainConversation.tsx +131 -0
  15. package/frontend/src/features/brain/BrainGraphLayer.tsx +132 -0
  16. package/frontend/src/features/brain/BrainHome.tsx +28 -795
  17. package/frontend/src/features/brain/BrainMemoryLayer.tsx +38 -0
  18. package/frontend/src/features/brain/BrainOverviewPanel.tsx +74 -0
  19. package/frontend/src/features/brain/BrainRelationshipLayer.tsx +43 -0
  20. package/frontend/src/features/brain/DepthEmergence.tsx +53 -0
  21. package/frontend/src/features/brain/types.ts +6 -6
  22. package/frontend/src/features/review/ReviewCard.tsx +3 -1
  23. package/frontend/src/features/review/ReviewInbox.tsx +11 -1
  24. package/frontend/src/i18n.ts +92 -0
  25. package/frontend/src/pages/Brain.tsx +63 -5
  26. package/frontend/src/pages/Capture.tsx +102 -13
  27. package/frontend/src/pages/Library.tsx +72 -6
  28. package/lattice_brain/__init__.py +1 -1
  29. package/lattice_brain/runtime/multi_agent.py +1 -1
  30. package/latticeai/__init__.py +1 -1
  31. package/latticeai/app_factory.py +31 -39
  32. package/latticeai/core/marketplace.py +1 -1
  33. package/latticeai/core/workspace_os.py +1 -1
  34. package/latticeai/runtime/chat_wiring.py +119 -0
  35. package/latticeai/runtime/model_wiring.py +40 -0
  36. package/latticeai/runtime/platform_runtime_wiring.py +2 -3
  37. package/latticeai/runtime/review_wiring.py +37 -0
  38. package/latticeai/runtime/tail_wiring.py +21 -0
  39. package/package.json +2 -2
  40. package/scripts/check_i18n_literals.mjs +52 -0
  41. package/src-tauri/Cargo.lock +1 -1
  42. package/src-tauri/Cargo.toml +1 -1
  43. package/src-tauri/tauri.conf.json +1 -1
  44. package/static/app/asset-manifest.json +5 -5
  45. package/static/app/assets/{index-D91Rz5--.js → index-D76dWuQk.js} +2 -2
  46. package/static/app/assets/index-D76dWuQk.js.map +1 -0
  47. package/static/app/assets/index-Div5vMlq.css +2 -0
  48. package/static/app/index.html +2 -2
  49. package/static/app/assets/index-B2-1Gm0q.css +0 -2
  50. 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.2.0",
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");
@@ -1654,7 +1654,7 @@ dependencies = [
1654
1654
 
1655
1655
  [[package]]
1656
1656
  name = "lattice-ai-desktop"
1657
- version = "6.2.0"
1657
+ version = "6.3.0"
1658
1658
  dependencies = [
1659
1659
  "plist",
1660
1660
  "serde",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "lattice-ai-desktop"
3
- version = "6.2.0"
3
+ version = "6.3.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": "6.2.0",
4
+ "version": "6.3.0",
5
5
  "identifier": "ai.lattice.desktop",
6
6
  "build": {
7
7
  "beforeDevCommand": "npm run frontend:dev",
@@ -1,13 +1,13 @@
1
1
  {
2
- "version": "6.2.0",
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-D91Rz5--.js",
10
- "assets/index-B2-1Gm0q.css": "/static/app/assets/index-B2-1Gm0q.css"
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-D91Rz5--.js",
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-B2-1Gm0q.css"
28
+ "assets/index-Div5vMlq.css"
29
29
  ]
30
30
  }
31
31
  }