ltcai 5.6.0 → 6.1.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 (55) hide show
  1. package/README.md +45 -25
  2. package/docs/CHANGELOG.md +74 -0
  3. package/docs/V4_1_FRONTEND_MIGRATION_REPORT.md +1 -1
  4. package/docs/V4_6_1_RELEASE_REFRESH_REPORT.md +1 -1
  5. package/docs/V4_7_0_ADMIN_SEPARATION_REPORT.md +1 -1
  6. package/docs/V4_7_1_ADMIN_OPERATIONS_REPORT.md +1 -1
  7. package/frontend/openapi.json +39 -0
  8. package/frontend/src/App.tsx +5 -0
  9. package/frontend/src/api/client.ts +104 -23
  10. package/frontend/src/api/openapi.ts +48 -0
  11. package/frontend/src/components/FirstRunGuide.tsx +3 -3
  12. package/frontend/src/components/ProductFlow.tsx +7 -0
  13. package/frontend/src/features/review/ReviewCard.tsx +96 -0
  14. package/frontend/src/features/review/ReviewInbox.tsx +112 -0
  15. package/frontend/src/features/review/reviewHelpers.ts +69 -0
  16. package/frontend/src/i18n.ts +18 -8
  17. package/frontend/src/pages/Act.tsx +5 -177
  18. package/frontend/src/routes.ts +1 -0
  19. package/frontend/src/styles.css +20 -0
  20. package/lattice_brain/__init__.py +1 -1
  21. package/lattice_brain/runtime/multi_agent.py +1 -1
  22. package/latticeai/__init__.py +1 -1
  23. package/latticeai/api/chat.py +52 -33
  24. package/latticeai/api/review_queue.py +7 -3
  25. package/latticeai/app_factory.py +253 -475
  26. package/latticeai/cli/__init__.py +1 -0
  27. package/latticeai/cli/runtime.py +37 -0
  28. package/latticeai/core/marketplace.py +1 -1
  29. package/latticeai/core/workspace_os.py +1 -1
  30. package/latticeai/runtime/app_context_runtime.py +13 -0
  31. package/latticeai/runtime/automation_runtime.py +64 -0
  32. package/latticeai/runtime/bootstrap.py +48 -0
  33. package/latticeai/runtime/context_runtime.py +43 -0
  34. package/latticeai/runtime/hooks_runtime.py +77 -0
  35. package/latticeai/runtime/lifespan_runtime.py +138 -0
  36. package/latticeai/runtime/persistence_runtime.py +87 -0
  37. package/latticeai/runtime/platform_services_runtime.py +39 -0
  38. package/latticeai/runtime/router_registration.py +570 -0
  39. package/latticeai/runtime/web_runtime.py +65 -0
  40. package/latticeai/services/app_context.py +1 -0
  41. package/latticeai/services/review_queue.py +20 -4
  42. package/latticeai/services/tool_dispatch.py +82 -25
  43. package/ltcai_cli.py +5 -31
  44. package/package.json +1 -1
  45. package/src-tauri/Cargo.lock +1 -1
  46. package/src-tauri/Cargo.toml +1 -1
  47. package/src-tauri/tauri.conf.json +1 -1
  48. package/static/app/asset-manifest.json +5 -5
  49. package/static/app/assets/{index-xRn29gI8.css → index-B744yblP.css} +1 -1
  50. package/static/app/assets/index-DYaUKNfl.js +16 -0
  51. package/static/app/assets/index-DYaUKNfl.js.map +1 -0
  52. package/static/app/index.html +2 -2
  53. package/telegram_bot.py +3 -9
  54. package/static/app/assets/index-xMFu94cX.js +0 -16
  55. package/static/app/assets/index-xMFu94cX.js.map +0 -1
@@ -15,8 +15,8 @@
15
15
  } catch (e) {}
16
16
  })();
17
17
  </script>
18
- <script type="module" crossorigin src="/static/app/assets/index-xMFu94cX.js"></script>
19
- <link rel="stylesheet" crossorigin href="/static/app/assets/index-xRn29gI8.css">
18
+ <script type="module" crossorigin src="/static/app/assets/index-DYaUKNfl.js"></script>
19
+ <link rel="stylesheet" crossorigin href="/static/app/assets/index-B744yblP.css">
20
20
  </head>
21
21
  <body>
22
22
  <div id="root"></div>
package/telegram_bot.py CHANGED
@@ -11,19 +11,13 @@ import json
11
11
  from pathlib import Path
12
12
 
13
13
  from latticeai.core.logging_safety import install_sensitive_log_filter, safe_log_text
14
+ from latticeai.cli.runtime import _load_env_file
14
15
 
15
16
  install_sensitive_log_filter()
16
17
 
17
18
  def load_env_file(path=".env"):
18
- env_path = Path(path)
19
- if not env_path.exists():
20
- return
21
- for raw_line in env_path.read_text(encoding="utf-8").splitlines():
22
- line = raw_line.strip()
23
- if not line or line.startswith("#") or "=" not in line:
24
- continue
25
- key, value = line.split("=", 1)
26
- os.environ.setdefault(key.strip(), value.strip().strip('"').strip("'"))
19
+ # Single source of truth: shared with ltcai_cli via latticeai.cli.runtime.
20
+ _load_env_file(Path(path))
27
21
 
28
22
  load_env_file()
29
23