ltcai 2.2.7 → 3.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.
- package/README.md +72 -34
- package/docs/CHANGELOG.md +119 -0
- package/docs/V3_BACKEND_ARCHITECTURE.md +138 -0
- package/docs/V3_FRONTEND.md +139 -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 +5 -2
- package/latticeai/api/chat.py +10 -2
- package/latticeai/api/search.py +240 -0
- package/latticeai/api/static_routes.py +11 -2
- package/latticeai/core/config.py +18 -0
- package/latticeai/core/embedding_providers.py +625 -0
- package/latticeai/core/local_embeddings.py +86 -0
- package/latticeai/core/workspace_os.py +1 -1
- package/latticeai/server_app.py +65 -1
- package/latticeai/services/agent_runtime.py +245 -0
- package/latticeai/services/search_service.py +346 -0
- package/package.json +13 -6
- package/scripts/build_v3_assets.mjs +164 -0
- package/scripts/capture/README.md +28 -0
- package/scripts/capture/capture_enterprise.js +8 -0
- package/scripts/capture/capture_graph.js +8 -0
- package/scripts/capture/capture_onboarding.js +8 -0
- package/scripts/capture/capture_page.js +43 -0
- package/scripts/capture/capture_release_media.js +125 -0
- package/scripts/capture/capture_skills.js +8 -0
- package/scripts/capture/capture_workspace.js +8 -0
- package/scripts/generate_diagrams.py +513 -0
- package/scripts/lint_v3.mjs +33 -0
- package/scripts/release-0.3.1.sh +105 -0
- package/scripts/take_screenshots.js +69 -0
- package/scripts/validate_release_artifacts.py +167 -0
- package/static/account.html +9 -9
- package/static/activity.html +4 -4
- package/static/admin.html +8 -8
- package/static/agents.html +4 -4
- package/static/chat.html +10 -10
- package/static/css/reference/account.css +137 -1
- package/static/css/reference/chat.css +31 -37
- package/static/css/responsive.css +42 -0
- package/static/css/tokens.5a595671.css +260 -0
- package/static/css/tokens.css +125 -130
- package/static/graph.html +9 -9
- package/static/manifest.json +3 -3
- package/static/plugins.html +4 -4
- package/static/scripts/account.js +4 -4
- package/static/scripts/chat.js +40 -8
- package/static/scripts/workspace.js +78 -0
- package/static/sw.js +3 -1
- package/static/v3/asset-manifest.json +47 -0
- package/static/v3/css/lattice.base.css +128 -0
- package/static/v3/css/lattice.base.e4cdd05d.css +128 -0
- package/static/v3/css/lattice.components.011e988b.css +447 -0
- package/static/v3/css/lattice.components.css +447 -0
- package/static/v3/css/lattice.shell.4920f42d.css +407 -0
- package/static/v3/css/lattice.shell.css +407 -0
- package/static/v3/css/lattice.tokens.c597ff81.css +132 -0
- package/static/v3/css/lattice.tokens.css +132 -0
- package/static/v3/css/lattice.views.3ee19d4e.css +277 -0
- package/static/v3/css/lattice.views.css +277 -0
- package/static/v3/index.html +69 -0
- package/static/v3/js/app.46fb61d9.js +26 -0
- package/static/v3/js/app.js +26 -0
- package/static/v3/js/core/api.22a41d42.js +344 -0
- package/static/v3/js/core/api.js +344 -0
- package/static/v3/js/core/components.4c83e0a9.js +222 -0
- package/static/v3/js/core/components.js +222 -0
- package/static/v3/js/core/dom.a2773eb0.js +148 -0
- package/static/v3/js/core/dom.js +148 -0
- package/static/v3/js/core/router.584570f2.js +37 -0
- package/static/v3/js/core/router.js +37 -0
- package/static/v3/js/core/routes.f935dd50.js +78 -0
- package/static/v3/js/core/routes.js +78 -0
- package/static/v3/js/core/shell.1b6199d6.js +363 -0
- package/static/v3/js/core/shell.js +363 -0
- package/static/v3/js/core/store.34ebd5e6.js +113 -0
- package/static/v3/js/core/store.js +113 -0
- package/static/v3/js/views/admin-audit.660a1fb1.js +185 -0
- package/static/v3/js/views/admin-audit.js +185 -0
- package/static/v3/js/views/admin-permissions.a7ae5f09.js +177 -0
- package/static/v3/js/views/admin-permissions.js +177 -0
- package/static/v3/js/views/admin-policies.3658fd86.js +102 -0
- package/static/v3/js/views/admin-policies.js +102 -0
- package/static/v3/js/views/admin-private-vpc.7d342d36.js +135 -0
- package/static/v3/js/views/admin-private-vpc.js +135 -0
- package/static/v3/js/views/admin-security.07c66b72.js +180 -0
- package/static/v3/js/views/admin-security.js +180 -0
- package/static/v3/js/views/admin-users.03bac88c.js +168 -0
- package/static/v3/js/views/admin-users.js +168 -0
- package/static/v3/js/views/agents.14e48bdd.js +193 -0
- package/static/v3/js/views/agents.js +193 -0
- package/static/v3/js/views/chat.718144ce.js +449 -0
- package/static/v3/js/views/chat.js +449 -0
- package/static/v3/js/views/files.4935197e.js +186 -0
- package/static/v3/js/views/files.js +186 -0
- package/static/v3/js/views/home.cdde3b32.js +119 -0
- package/static/v3/js/views/home.js +119 -0
- package/static/v3/js/views/hybrid-search.b22b97e0.js +195 -0
- package/static/v3/js/views/hybrid-search.js +195 -0
- package/static/v3/js/views/knowledge-graph.a14ea7e7.js +237 -0
- package/static/v3/js/views/knowledge-graph.js +237 -0
- package/static/v3/js/views/models.a1ffa147.js +256 -0
- package/static/v3/js/views/models.js +256 -0
- package/static/v3/js/views/my-computer.1b2ff621.js +237 -0
- package/static/v3/js/views/my-computer.js +237 -0
- package/static/v3/js/views/pipeline.c522f1ce.js +157 -0
- package/static/v3/js/views/pipeline.js +157 -0
- package/static/v3/js/views/settings.4f777210.js +250 -0
- package/static/v3/js/views/settings.js +250 -0
- package/static/workflows.html +4 -4
- package/static/workspace.css +340 -2
- package/static/workspace.html +43 -24
- package/docs/images/tmp_frames/frame_00.png +0 -0
- package/docs/images/tmp_frames/frame_01.png +0 -0
- package/docs/images/tmp_frames/frame_02.png +0 -0
- package/docs/images/tmp_frames/frame_03.png +0 -0
- package/docs/images/tmp_frames/hero_00.png +0 -0
- package/docs/images/tmp_frames/hero_01.png +0 -0
- package/docs/images/tmp_frames/hero_02.png +0 -0
- package/docs/images/tmp_frames/hero_03.png +0 -0
package/static/workspace.css
CHANGED
|
@@ -730,8 +730,7 @@ textarea {
|
|
|
730
730
|
|
|
731
731
|
:root[data-lt-theme="dark"] main {
|
|
732
732
|
background:
|
|
733
|
-
|
|
734
|
-
linear-gradient(180deg, var(--bg) 0%, #10122c 100%);
|
|
733
|
+
linear-gradient(180deg, var(--bg) 0%, var(--bg-soft) 100%);
|
|
735
734
|
}
|
|
736
735
|
|
|
737
736
|
:root[data-lt-theme="dark"] .workspace-band,
|
|
@@ -781,3 +780,342 @@ textarea {
|
|
|
781
780
|
background: rgba(244, 113, 113, 0.16);
|
|
782
781
|
color: #fca5a5;
|
|
783
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
|
|
7
|
+
<script src="/static/scripts/ux.js"></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
|
|
13
|
-
<link rel="stylesheet" href="/static/workspace.css
|
|
14
|
-
<link rel="stylesheet" href="/static/css/responsive.css
|
|
12
|
+
<link rel="stylesheet" href="/static/css/tokens.css">
|
|
13
|
+
<link rel="stylesheet" href="/static/workspace.css">
|
|
14
|
+
<link rel="stylesheet" href="/static/css/responsive.css">
|
|
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
|
|
355
|
+
<script src="/static/scripts/workspace.js"></script>
|
|
337
356
|
</body>
|
|
338
357
|
</html>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|