ltcai 2.2.2 → 3.0.1
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 +66 -27
- package/codex_telegram_bot.py +6 -2
- package/docs/CHANGELOG.md +154 -0
- package/docs/V3_BACKEND_ARCHITECTURE.md +138 -0
- package/docs/V3_FRONTEND.md +136 -0
- package/knowledge_graph.py +649 -21
- package/latticeai/__init__.py +1 -1
- package/latticeai/api/admin.py +47 -0
- package/latticeai/api/agents.py +54 -31
- package/latticeai/api/auth.py +1 -1
- package/latticeai/api/chat.py +10 -2
- package/latticeai/api/search.py +236 -0
- package/latticeai/api/static_routes.py +21 -2
- package/latticeai/core/config.py +16 -0
- package/latticeai/core/embedding_providers.py +502 -0
- package/latticeai/core/local_embeddings.py +86 -0
- package/latticeai/core/logging_safety.py +62 -0
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/server_app.py +49 -1
- package/latticeai/services/agent_runtime.py +245 -0
- package/latticeai/services/search_service.py +346 -0
- package/package.json +8 -4
- package/static/account.html +9 -4
- package/static/activity.html +4 -4
- package/static/admin.html +8 -3
- package/static/agents.html +4 -4
- package/static/chat.html +16 -11
- package/static/css/reference/account.css +439 -0
- package/static/css/reference/admin.css +610 -0
- package/static/css/reference/base.css +1658 -0
- package/static/{lattice-reference.css → css/reference/chat.css} +271 -3633
- package/static/css/reference/graph.css +1016 -0
- package/static/css/responsive.css +248 -1
- package/static/css/tokens.css +132 -126
- package/static/favicon.ico +0 -0
- package/static/graph.html +9 -4
- package/static/manifest.json +3 -3
- package/static/platform.css +1 -1
- package/static/plugins.html +4 -4
- package/static/scripts/account.js +4 -4
- package/static/scripts/chat.js +227 -77
- package/static/scripts/workspace.js +78 -0
- package/static/sw.js +5 -3
- package/static/v3/css/lattice.base.css +128 -0
- package/static/v3/css/lattice.components.css +447 -0
- package/static/v3/css/lattice.shell.css +407 -0
- package/static/v3/css/lattice.tokens.css +132 -0
- package/static/v3/css/lattice.views.css +277 -0
- package/static/v3/index.html +40 -0
- package/static/v3/js/app.js +26 -0
- package/static/v3/js/core/api.js +327 -0
- package/static/v3/js/core/components.js +215 -0
- package/static/v3/js/core/dom.js +148 -0
- package/static/v3/js/core/fixtures.js +171 -0
- package/static/v3/js/core/router.js +37 -0
- package/static/v3/js/core/routes.js +73 -0
- package/static/v3/js/core/shell.js +363 -0
- package/static/v3/js/core/store.js +113 -0
- package/static/v3/js/views/admin-audit.js +185 -0
- package/static/v3/js/views/admin-permissions.js +178 -0
- package/static/v3/js/views/admin-policies.js +103 -0
- package/static/v3/js/views/admin-private-vpc.js +138 -0
- package/static/v3/js/views/admin-security.js +181 -0
- package/static/v3/js/views/admin-users.js +168 -0
- package/static/v3/js/views/agents.js +194 -0
- package/static/v3/js/views/chat.js +450 -0
- package/static/v3/js/views/files.js +180 -0
- package/static/v3/js/views/home.js +119 -0
- package/static/v3/js/views/hybrid-search.js +195 -0
- package/static/v3/js/views/knowledge-graph.js +238 -0
- package/static/v3/js/views/models.js +247 -0
- package/static/v3/js/views/my-computer.js +237 -0
- package/static/v3/js/views/pipeline.js +161 -0
- package/static/v3/js/views/settings.js +258 -0
- package/static/workflows.html +4 -4
- package/static/workspace.css +408 -14
- package/static/workspace.html +43 -24
- package/telegram_bot.py +18 -14
package/static/workspace.css
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
--bg: var(--lt-bg, #f6f7f9);
|
|
6
6
|
--surface: var(--lt-surface, #ffffff);
|
|
7
7
|
--surface-2: var(--lt-surface-2, #f0f4f8);
|
|
8
|
+
--input: var(--lt-input, var(--surface));
|
|
8
9
|
--ink: var(--lt-ink, #101828);
|
|
9
10
|
--muted: var(--lt-muted, #667085);
|
|
10
11
|
--line: var(--lt-line, #d9e0e8);
|
|
@@ -199,8 +200,8 @@ h2 {
|
|
|
199
200
|
}
|
|
200
201
|
|
|
201
202
|
.secondary-action {
|
|
202
|
-
background: #e6efff;
|
|
203
|
-
color:
|
|
203
|
+
background: var(--accent-soft, #e6efff);
|
|
204
|
+
color: var(--blue);
|
|
204
205
|
padding: 0 12px;
|
|
205
206
|
font-weight: 700;
|
|
206
207
|
}
|
|
@@ -317,7 +318,7 @@ h2 {
|
|
|
317
318
|
|
|
318
319
|
.list-item {
|
|
319
320
|
border: 1px solid var(--line);
|
|
320
|
-
background:
|
|
321
|
+
background: var(--surface-2);
|
|
321
322
|
border-radius: 8px;
|
|
322
323
|
padding: 12px;
|
|
323
324
|
display: grid;
|
|
@@ -354,8 +355,9 @@ h2 {
|
|
|
354
355
|
.tag {
|
|
355
356
|
font-size: 11px;
|
|
356
357
|
font-weight: 800;
|
|
357
|
-
color:
|
|
358
|
-
background:
|
|
358
|
+
color: var(--ink);
|
|
359
|
+
background: var(--surface-2);
|
|
360
|
+
border: 1px solid var(--line);
|
|
359
361
|
border-radius: 999px;
|
|
360
362
|
padding: 3px 8px;
|
|
361
363
|
}
|
|
@@ -373,7 +375,7 @@ input, select, textarea {
|
|
|
373
375
|
border: 1px solid var(--line);
|
|
374
376
|
border-radius: 8px;
|
|
375
377
|
color: var(--ink);
|
|
376
|
-
background:
|
|
378
|
+
background: var(--input);
|
|
377
379
|
min-height: 38px;
|
|
378
380
|
padding: 9px 10px;
|
|
379
381
|
}
|
|
@@ -468,7 +470,7 @@ textarea {
|
|
|
468
470
|
top: 3px;
|
|
469
471
|
left: 3px;
|
|
470
472
|
border-radius: 50%;
|
|
471
|
-
background:
|
|
473
|
+
background: var(--surface);
|
|
472
474
|
transition: transform 160ms ease;
|
|
473
475
|
}
|
|
474
476
|
|
|
@@ -597,10 +599,10 @@ textarea {
|
|
|
597
599
|
.quickswitch-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
|
|
598
600
|
.switch-chip {
|
|
599
601
|
display: inline-flex; align-items: center; gap: 6px;
|
|
600
|
-
border: 1px solid var(--line); background:
|
|
602
|
+
border: 1px solid var(--line); background: var(--surface-2); color: var(--ink);
|
|
601
603
|
border-radius: 999px; padding: 6px 12px; font-weight: 700; font-size: 13px; cursor: pointer;
|
|
602
604
|
}
|
|
603
|
-
.switch-chip.active { border-color: var(--blue); background: #eef2ff; color: var(--blue); }
|
|
605
|
+
.switch-chip.active { border-color: var(--blue); background: var(--accent-soft, #eef2ff); color: var(--blue); }
|
|
604
606
|
|
|
605
607
|
/* Entity explorer */
|
|
606
608
|
.entity-card { text-align: left; cursor: pointer; width: 100%; font: inherit; }
|
|
@@ -615,10 +617,10 @@ textarea {
|
|
|
615
617
|
/* Skill marketplace tabs */
|
|
616
618
|
.tab-bar { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
|
|
617
619
|
.tab {
|
|
618
|
-
border: 1px solid var(--line); background:
|
|
620
|
+
border: 1px solid var(--line); background: var(--surface-2); color: var(--muted);
|
|
619
621
|
border-radius: 999px; padding: 6px 14px; font-weight: 700; font-size: 13px; cursor: pointer;
|
|
620
622
|
}
|
|
621
|
-
.tab.active { border-color: var(--blue); background: #eef2ff; color: var(--blue); }
|
|
623
|
+
.tab.active { border-color: var(--blue); background: var(--accent-soft, #eef2ff); color: var(--blue); }
|
|
622
624
|
.tab-count {
|
|
623
625
|
display: inline-block; min-width: 16px; padding: 0 5px; margin-left: 4px;
|
|
624
626
|
border-radius: 999px; background: var(--red); color: #fff; font-size: 11px;
|
|
@@ -633,7 +635,7 @@ textarea {
|
|
|
633
635
|
}
|
|
634
636
|
.capability-card {
|
|
635
637
|
display: flex; align-items: center; gap: 10px;
|
|
636
|
-
border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; background:
|
|
638
|
+
border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; background: var(--surface-2);
|
|
637
639
|
}
|
|
638
640
|
.capability-card i { font-size: 18px; }
|
|
639
641
|
.capability-card.off i { color: var(--muted); }
|
|
@@ -650,7 +652,7 @@ textarea {
|
|
|
650
652
|
min-width: 0;
|
|
651
653
|
border: 1px solid var(--line);
|
|
652
654
|
border-radius: 8px;
|
|
653
|
-
background:
|
|
655
|
+
background: var(--surface-2);
|
|
654
656
|
padding: 14px;
|
|
655
657
|
display: grid;
|
|
656
658
|
gap: 7px;
|
|
@@ -691,7 +693,7 @@ textarea {
|
|
|
691
693
|
.skill-progress-track {
|
|
692
694
|
height: 7px;
|
|
693
695
|
border-radius: 999px;
|
|
694
|
-
background:
|
|
696
|
+
background: var(--surface-3, var(--surface-2));
|
|
695
697
|
overflow: hidden;
|
|
696
698
|
}
|
|
697
699
|
.skill-progress-track span {
|
|
@@ -725,3 +727,395 @@ textarea {
|
|
|
725
727
|
.small-action { min-height: 44px; }
|
|
726
728
|
.workspace-rail a { min-height: 44px; display: flex; align-items: center; }
|
|
727
729
|
}
|
|
730
|
+
|
|
731
|
+
:root[data-lt-theme="dark"] main {
|
|
732
|
+
background:
|
|
733
|
+
linear-gradient(180deg, var(--bg) 0%, var(--bg-soft) 100%);
|
|
734
|
+
}
|
|
735
|
+
|
|
736
|
+
:root[data-lt-theme="dark"] .workspace-band,
|
|
737
|
+
:root[data-lt-theme="dark"] .workspace-panel,
|
|
738
|
+
:root[data-lt-theme="dark"] .metric-card {
|
|
739
|
+
background: rgba(22, 22, 58, 0.92);
|
|
740
|
+
border-color: rgba(160, 170, 230, 0.22);
|
|
741
|
+
box-shadow: 0 18px 44px rgba(0, 0, 0, 0.38);
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
:root[data-lt-theme="dark"] input,
|
|
745
|
+
:root[data-lt-theme="dark"] select,
|
|
746
|
+
:root[data-lt-theme="dark"] textarea,
|
|
747
|
+
:root[data-lt-theme="dark"] .list-item,
|
|
748
|
+
:root[data-lt-theme="dark"] .health-card,
|
|
749
|
+
:root[data-lt-theme="dark"] .capability-card,
|
|
750
|
+
:root[data-lt-theme="dark"] .switch-chip,
|
|
751
|
+
:root[data-lt-theme="dark"] .tab,
|
|
752
|
+
:root[data-lt-theme="dark"] .tag {
|
|
753
|
+
background: rgba(255, 255, 255, 0.06);
|
|
754
|
+
border-color: rgba(160, 170, 230, 0.22);
|
|
755
|
+
color: var(--ink);
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
:root[data-lt-theme="dark"] input::placeholder,
|
|
759
|
+
:root[data-lt-theme="dark"] textarea::placeholder {
|
|
760
|
+
color: rgba(226, 232, 255, 0.48);
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
:root[data-lt-theme="dark"] .status-pill,
|
|
764
|
+
:root[data-lt-theme="dark"] .workspace-role-pill {
|
|
765
|
+
background: rgba(255, 255, 255, 0.10);
|
|
766
|
+
color: var(--blue);
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
:root[data-lt-theme="dark"] .status-complete {
|
|
770
|
+
background: rgba(52, 211, 153, 0.16);
|
|
771
|
+
color: #86efac;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
:root[data-lt-theme="dark"] .status-running {
|
|
775
|
+
background: rgba(251, 191, 36, 0.16);
|
|
776
|
+
color: #fbbf24;
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
:root[data-lt-theme="dark"] .status-failed {
|
|
780
|
+
background: rgba(244, 113, 113, 0.16);
|
|
781
|
+
color: #fca5a5;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
/* ── Product shell redesign (frontend-only) ─────────────────────────────── */
|
|
785
|
+
.workspace-page {
|
|
786
|
+
background: var(--bg);
|
|
787
|
+
color: var(--ink);
|
|
788
|
+
}
|
|
789
|
+
|
|
790
|
+
.workspace-page::before {
|
|
791
|
+
content: "";
|
|
792
|
+
position: fixed;
|
|
793
|
+
inset: 0;
|
|
794
|
+
pointer-events: none;
|
|
795
|
+
background:
|
|
796
|
+
linear-gradient(90deg, rgba(12, 92, 115, 0.035) 1px, transparent 1px),
|
|
797
|
+
linear-gradient(180deg, rgba(12, 92, 115, 0.035) 1px, transparent 1px);
|
|
798
|
+
background-size: 36px 36px;
|
|
799
|
+
mask-image: linear-gradient(180deg, rgba(0, 0, 0, 0.4), transparent 72%);
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
.workspace-shell {
|
|
803
|
+
grid-template-columns: minmax(240px, 284px) minmax(0, 1fr);
|
|
804
|
+
background: var(--app-bg);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
.workspace-rail {
|
|
808
|
+
background: var(--rail-bg);
|
|
809
|
+
color: var(--rail-ink);
|
|
810
|
+
border-right: 1px solid var(--rail-line);
|
|
811
|
+
box-shadow: none;
|
|
812
|
+
overflow-y: auto;
|
|
813
|
+
scrollbar-gutter: stable;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
.rail-brand {
|
|
817
|
+
min-height: 48px;
|
|
818
|
+
border-radius: 8px;
|
|
819
|
+
background: rgba(255, 255, 255, 0.06);
|
|
820
|
+
border: 1px solid var(--rail-line);
|
|
821
|
+
}
|
|
822
|
+
|
|
823
|
+
.rail-brand span {
|
|
824
|
+
line-height: 1;
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
.rail-brand small {
|
|
828
|
+
margin-left: auto;
|
|
829
|
+
color: var(--rail-ink-soft);
|
|
830
|
+
font-size: 10px;
|
|
831
|
+
font-weight: 800;
|
|
832
|
+
text-transform: uppercase;
|
|
833
|
+
letter-spacing: 0.08em;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
.rail-section-label {
|
|
837
|
+
color: var(--rail-ink-soft);
|
|
838
|
+
display: block;
|
|
839
|
+
font-size: 10px;
|
|
840
|
+
font-weight: 900;
|
|
841
|
+
letter-spacing: 0.1em;
|
|
842
|
+
padding: 8px 12px 4px;
|
|
843
|
+
text-transform: uppercase;
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
.workspace-rail nav a,
|
|
847
|
+
.rail-links a {
|
|
848
|
+
border: 1px solid transparent;
|
|
849
|
+
min-height: 42px;
|
|
850
|
+
}
|
|
851
|
+
|
|
852
|
+
.workspace-rail nav a.active,
|
|
853
|
+
.workspace-rail nav a:hover,
|
|
854
|
+
.rail-links a:hover {
|
|
855
|
+
background: var(--rail-hover);
|
|
856
|
+
border-color: var(--rail-line);
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
.workspace-shell:not([data-admin-available="true"]) .admin-navigation {
|
|
860
|
+
display: none;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
main {
|
|
864
|
+
gap: 16px;
|
|
865
|
+
padding: 20px clamp(16px, 2vw, 28px) 36px;
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
.workspace-topbar {
|
|
869
|
+
position: sticky;
|
|
870
|
+
top: 0;
|
|
871
|
+
z-index: 4;
|
|
872
|
+
margin: -20px calc(clamp(16px, 2vw, 28px) * -1) 0;
|
|
873
|
+
padding: 16px clamp(16px, 2vw, 28px);
|
|
874
|
+
background: color-mix(in srgb, var(--surface-elevated) 94%, transparent);
|
|
875
|
+
border-bottom: 1px solid var(--line);
|
|
876
|
+
backdrop-filter: blur(18px);
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
.topbar-subtitle {
|
|
880
|
+
color: var(--muted);
|
|
881
|
+
font-size: 13px;
|
|
882
|
+
line-height: 1.45;
|
|
883
|
+
margin: 6px 0 0;
|
|
884
|
+
max-width: 760px;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
.top-actions {
|
|
888
|
+
flex-wrap: wrap;
|
|
889
|
+
justify-content: flex-end;
|
|
890
|
+
min-width: min(100%, 560px);
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
.global-mode-switcher {
|
|
894
|
+
display: inline-grid;
|
|
895
|
+
grid-auto-flow: column;
|
|
896
|
+
grid-auto-columns: minmax(76px, 1fr);
|
|
897
|
+
gap: 2px;
|
|
898
|
+
padding: 3px;
|
|
899
|
+
border: 1px solid var(--line);
|
|
900
|
+
border-radius: 8px;
|
|
901
|
+
background: var(--surface-2);
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
.global-mode-switcher button {
|
|
905
|
+
min-height: 34px;
|
|
906
|
+
border-radius: 6px;
|
|
907
|
+
background: transparent;
|
|
908
|
+
color: var(--muted);
|
|
909
|
+
font-size: 12px;
|
|
910
|
+
font-weight: 800;
|
|
911
|
+
padding: 0 10px;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
.global-mode-switcher button.active {
|
|
915
|
+
background: var(--accent);
|
|
916
|
+
color: #fff;
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
.global-mode-switcher button:disabled {
|
|
920
|
+
cursor: not-allowed;
|
|
921
|
+
opacity: 0.45;
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
.chrome-select {
|
|
925
|
+
width: auto;
|
|
926
|
+
min-width: 108px;
|
|
927
|
+
min-height: 38px;
|
|
928
|
+
color: var(--ink);
|
|
929
|
+
background: var(--surface);
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
.workspace-switcher {
|
|
933
|
+
background: var(--surface);
|
|
934
|
+
border-color: var(--line);
|
|
935
|
+
color: var(--ink);
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
.workspace-switcher select {
|
|
939
|
+
color: var(--ink);
|
|
940
|
+
max-width: min(220px, 36vw);
|
|
941
|
+
}
|
|
942
|
+
|
|
943
|
+
.workspace-role-pill {
|
|
944
|
+
color: var(--muted);
|
|
945
|
+
opacity: 1;
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
.metric-grid {
|
|
949
|
+
grid-template-columns: repeat(4, minmax(150px, 1fr));
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
.metric-card,
|
|
953
|
+
.workspace-panel,
|
|
954
|
+
.workspace-band {
|
|
955
|
+
background: var(--surface);
|
|
956
|
+
border-color: var(--line);
|
|
957
|
+
border-radius: 8px;
|
|
958
|
+
box-shadow: none;
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
.metric-card {
|
|
962
|
+
border-left: 3px solid var(--accent);
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
.metric-card i,
|
|
966
|
+
.health-card i {
|
|
967
|
+
color: var(--accent-2);
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
.workspace-band,
|
|
971
|
+
.workspace-panel {
|
|
972
|
+
padding: 18px;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
.section-head {
|
|
976
|
+
border-bottom: 1px solid var(--line);
|
|
977
|
+
margin: -2px 0 14px;
|
|
978
|
+
padding-bottom: 12px;
|
|
979
|
+
}
|
|
980
|
+
|
|
981
|
+
.eyebrow {
|
|
982
|
+
color: var(--accent);
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
.primary-action {
|
|
986
|
+
background: var(--accent);
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
.secondary-action,
|
|
990
|
+
.tab.active,
|
|
991
|
+
.switch-chip.active {
|
|
992
|
+
background: var(--accent-soft);
|
|
993
|
+
color: var(--accent);
|
|
994
|
+
border-color: color-mix(in srgb, var(--accent) 34%, var(--line));
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
.icon-action,
|
|
998
|
+
.small-action,
|
|
999
|
+
.step-chip,
|
|
1000
|
+
.tab,
|
|
1001
|
+
.switch-chip,
|
|
1002
|
+
.list-item,
|
|
1003
|
+
.health-card,
|
|
1004
|
+
.capability-card {
|
|
1005
|
+
background: var(--surface-2);
|
|
1006
|
+
border-color: var(--line);
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
.list-item,
|
|
1010
|
+
.health-card,
|
|
1011
|
+
.capability-card {
|
|
1012
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.45);
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
:root[data-lt-theme="dark"] .list-item,
|
|
1016
|
+
:root[data-lt-theme="dark"] .health-card,
|
|
1017
|
+
:root[data-lt-theme="dark"] .capability-card {
|
|
1018
|
+
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
.status-pill {
|
|
1022
|
+
background: var(--accent-soft);
|
|
1023
|
+
color: var(--accent);
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
.status-complete {
|
|
1027
|
+
background: color-mix(in srgb, var(--success) 16%, transparent);
|
|
1028
|
+
color: var(--success);
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
.status-running {
|
|
1032
|
+
background: color-mix(in srgb, var(--warning) 18%, transparent);
|
|
1033
|
+
color: var(--warning);
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
.status-failed {
|
|
1037
|
+
background: color-mix(in srgb, var(--danger) 16%, transparent);
|
|
1038
|
+
color: var(--danger);
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
.importance-bar {
|
|
1042
|
+
background: var(--surface-3);
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
.importance-bar span,
|
|
1046
|
+
.skill-progress-track span {
|
|
1047
|
+
background: linear-gradient(90deg, var(--accent), var(--accent-2));
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
.code-box,
|
|
1051
|
+
.state-box,
|
|
1052
|
+
.toast {
|
|
1053
|
+
background: #101820;
|
|
1054
|
+
border-color: rgba(148, 163, 184, 0.22);
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
@media (min-width: 1600px) {
|
|
1058
|
+
main {
|
|
1059
|
+
max-width: 1680px;
|
|
1060
|
+
width: 100%;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
.metric-grid,
|
|
1064
|
+
.health-grid {
|
|
1065
|
+
grid-template-columns: repeat(4, minmax(180px, 1fr));
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
@media (max-width: 1180px) {
|
|
1070
|
+
.workspace-topbar {
|
|
1071
|
+
align-items: flex-start;
|
|
1072
|
+
flex-direction: column;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
.top-actions {
|
|
1076
|
+
justify-content: flex-start;
|
|
1077
|
+
width: 100%;
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
@media (max-width: 860px) {
|
|
1082
|
+
.workspace-shell {
|
|
1083
|
+
grid-template-columns: 1fr;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
.workspace-rail {
|
|
1087
|
+
position: relative;
|
|
1088
|
+
height: auto;
|
|
1089
|
+
max-height: none;
|
|
1090
|
+
}
|
|
1091
|
+
|
|
1092
|
+
.workspace-rail nav,
|
|
1093
|
+
.rail-links {
|
|
1094
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
.rail-section-label,
|
|
1098
|
+
.rail-brand {
|
|
1099
|
+
grid-column: 1 / -1;
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
.workspace-topbar {
|
|
1103
|
+
position: static;
|
|
1104
|
+
margin-top: 0;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
.global-mode-switcher {
|
|
1108
|
+
grid-auto-columns: minmax(88px, 1fr);
|
|
1109
|
+
width: 100%;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
.workspace-switcher,
|
|
1113
|
+
.chrome-select,
|
|
1114
|
+
.primary-action {
|
|
1115
|
+
width: 100%;
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1118
|
+
.workspace-switcher select {
|
|
1119
|
+
max-width: none;
|
|
1120
|
+
}
|
|
1121
|
+
}
|
package/static/workspace.html
CHANGED
|
@@ -4,58 +4,77 @@
|
|
|
4
4
|
<meta charset="utf-8">
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover, interactive-widget=resizes-content">
|
|
6
6
|
<title>Lattice AI Workspace OS</title>
|
|
7
|
-
<script src="/static/scripts/ux.js?v=
|
|
7
|
+
<script src="/static/scripts/ux.js?v=3.0.0"></script>
|
|
8
8
|
<link rel="manifest" href="/manifest.json">
|
|
9
9
|
<link rel="icon" type="image/png" sizes="32x32" href="/icons/favicon-32.png">
|
|
10
10
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap">
|
|
11
11
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/tabler-icons.min.css">
|
|
12
|
-
<link rel="stylesheet" href="/static/css/tokens.css?v=
|
|
13
|
-
<link rel="stylesheet" href="/static/workspace.css?v=
|
|
14
|
-
<link rel="stylesheet" href="/static/css/responsive.css?v=
|
|
12
|
+
<link rel="stylesheet" href="/static/css/tokens.css?v=3.0.0">
|
|
13
|
+
<link rel="stylesheet" href="/static/workspace.css?v=3.0.0">
|
|
14
|
+
<link rel="stylesheet" href="/static/css/responsive.css?v=3.0.0">
|
|
15
15
|
</head>
|
|
16
|
-
<body>
|
|
17
|
-
<div class="workspace-shell">
|
|
16
|
+
<body class="workspace-page">
|
|
17
|
+
<div class="workspace-shell" data-workspace-mode="basic">
|
|
18
18
|
<aside class="workspace-rail">
|
|
19
19
|
<a class="rail-brand" href="/workspace" aria-label="Lattice AI Workspace OS">
|
|
20
20
|
<img src="/static/icons/icon-192.png" alt="">
|
|
21
21
|
<span>Lattice AI</span>
|
|
22
|
+
<small>Workspace OS</small>
|
|
22
23
|
</a>
|
|
23
|
-
<nav>
|
|
24
|
-
<
|
|
25
|
-
<a href="#
|
|
26
|
-
<a href="
|
|
27
|
-
<a href="
|
|
28
|
-
<a href="#
|
|
29
|
-
<a href="#
|
|
30
|
-
<a href="#
|
|
31
|
-
<a href="#
|
|
32
|
-
<a href="
|
|
33
|
-
|
|
34
|
-
|
|
24
|
+
<nav aria-label="Primary workspace navigation">
|
|
25
|
+
<span class="rail-section-label">Primary</span>
|
|
26
|
+
<a class="active" href="#overview"><i class="ti ti-home"></i><span>Home</span></a>
|
|
27
|
+
<a href="/chat"><i class="ti ti-message-circle"></i><span>Chat</span></a>
|
|
28
|
+
<a href="/graph"><i class="ti ti-chart-dots-3"></i><span>Knowledge Graph</span></a>
|
|
29
|
+
<a href="#memory"><i class="ti ti-files"></i><span>Files</span></a>
|
|
30
|
+
<a href="#workflows"><i class="ti ti-git-branch"></i><span>Pipeline</span></a>
|
|
31
|
+
<a href="#memory"><i class="ti ti-device-desktop"></i><span>My Computer</span></a>
|
|
32
|
+
<a href="#graph-explorer"><i class="ti ti-search"></i><span>Search</span></a>
|
|
33
|
+
<a href="/chat?new=1"><i class="ti ti-plus"></i><span>New Chat</span></a>
|
|
34
|
+
</nav>
|
|
35
|
+
<nav class="admin-navigation" aria-label="Administration navigation">
|
|
36
|
+
<span class="rail-section-label">Admin</span>
|
|
37
|
+
<a href="/admin#users" data-admin-link><i class="ti ti-users"></i><span>User Management</span></a>
|
|
38
|
+
<a href="/admin#permissions" data-admin-link><i class="ti ti-key"></i><span>Permissions</span></a>
|
|
39
|
+
<a href="/admin#audit" data-admin-link><i class="ti ti-report-search"></i><span>Audit Logs</span></a>
|
|
40
|
+
<a href="/admin#security" data-admin-link><i class="ti ti-shield-check"></i><span>Security</span></a>
|
|
41
|
+
<a href="/admin#security" data-admin-link><i class="ti ti-radar"></i><span>Sensitive Data</span></a>
|
|
42
|
+
<a href="/admin#enterprise" data-admin-link><i class="ti ti-building-skyscraper"></i><span>Org Policies</span></a>
|
|
43
|
+
<a href="/admin#enterprise" data-admin-link><i class="ti ti-cloud-lock"></i><span>Private VPC</span></a>
|
|
35
44
|
</nav>
|
|
36
45
|
<div class="rail-links">
|
|
46
|
+
<span class="rail-section-label">Runtime</span>
|
|
37
47
|
<a href="/plugins/sdk"><i class="ti ti-plug"></i><span>Plugins</span></a>
|
|
38
48
|
<a href="/workflows"><i class="ti ti-sitemap"></i><span>Designer</span></a>
|
|
39
49
|
<a href="/agents"><i class="ti ti-robot"></i><span>Agents</span></a>
|
|
40
50
|
<a href="/activity"><i class="ti ti-broadcast"></i><span>Activity</span></a>
|
|
41
|
-
<a href="/chat"><i class="ti ti-message-circle"></i><span>Chat</span></a>
|
|
42
|
-
<a href="/graph"><i class="ti ti-network"></i><span>Graph Canvas</span></a>
|
|
43
|
-
<a href="/admin"><i class="ti ti-shield-lock"></i><span>Admin</span></a>
|
|
44
51
|
</div>
|
|
45
52
|
</aside>
|
|
46
53
|
|
|
47
54
|
<main>
|
|
48
55
|
<header class="workspace-topbar" id="overview">
|
|
49
56
|
<div>
|
|
50
|
-
<div class="eyebrow">AI Workspace
|
|
51
|
-
<h1>
|
|
57
|
+
<div class="eyebrow">Local-first AI Workspace</div>
|
|
58
|
+
<h1>Home</h1>
|
|
59
|
+
<p class="topbar-subtitle">Coordinate chat, graph context, files, pipelines, local models, and organization controls from one workspace surface.</p>
|
|
52
60
|
</div>
|
|
53
61
|
<div class="top-actions">
|
|
62
|
+
<div class="global-mode-switcher" role="tablist" aria-label="Workspace mode">
|
|
63
|
+
<button type="button" class="active" data-workspace-mode="basic" role="tab" aria-selected="true">Basic</button>
|
|
64
|
+
<button type="button" data-workspace-mode="advanced" role="tab" aria-selected="false">Advanced</button>
|
|
65
|
+
<button type="button" data-workspace-mode="admin" role="tab" aria-selected="false">Admin</button>
|
|
66
|
+
</div>
|
|
54
67
|
<div class="workspace-switcher" title="Active workspace">
|
|
55
68
|
<i class="ti ti-building-community"></i>
|
|
56
69
|
<select id="workspace-select" aria-label="Active workspace"></select>
|
|
57
70
|
<span class="workspace-role-pill" id="workspace-role"></span>
|
|
58
71
|
</div>
|
|
72
|
+
<select class="chrome-select" id="workspace-language" aria-label="Language">
|
|
73
|
+
<option value="en">English</option>
|
|
74
|
+
<option value="ko">한국어</option>
|
|
75
|
+
</select>
|
|
76
|
+
<a class="icon-action" href="/account" title="User profile" aria-label="User profile"><i class="ti ti-user"></i></a>
|
|
77
|
+
<button class="icon-action" id="workspace-logout" title="Logout" aria-label="Logout"><i class="ti ti-logout"></i></button>
|
|
59
78
|
<button class="icon-action" id="new-org-btn" title="New organization workspace"><i class="ti ti-plus"></i></button>
|
|
60
79
|
<button class="icon-action" id="refresh-btn" title="Refresh"><i class="ti ti-refresh"></i></button>
|
|
61
80
|
<button class="primary-action" id="snapshot-now"><i class="ti ti-device-floppy"></i><span>Snapshot</span></button>
|
|
@@ -333,6 +352,6 @@
|
|
|
333
352
|
</div>
|
|
334
353
|
|
|
335
354
|
<div class="toast" id="toast"></div>
|
|
336
|
-
<script src="/static/scripts/workspace.js?v=
|
|
355
|
+
<script src="/static/scripts/workspace.js?v=3.0.0"></script>
|
|
337
356
|
</body>
|
|
338
357
|
</html>
|