fraim-framework 2.0.170 → 2.0.173
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/dist/src/ai-hub/hosts.js +227 -6
- package/dist/src/ai-hub/server.js +1014 -35
- package/dist/src/cli/commands/add-ide.js +4 -2
- package/dist/src/cli/commands/cleanup-artifacts.js +38 -0
- package/dist/src/cli/commands/init-project.js +12 -5
- package/dist/src/cli/commands/setup.js +1 -1
- package/dist/src/cli/commands/sync.js +74 -7
- package/dist/src/cli/doctor/checks/ide-config-checks.js +2 -2
- package/dist/src/cli/fraim.js +2 -0
- package/dist/src/cli/mcp/ide-formats.js +10 -2
- package/dist/src/cli/setup/auto-mcp-setup.js +4 -2
- package/dist/src/cli/setup/ide-detector.js +26 -0
- package/dist/src/cli/setup/ide-global-integration.js +6 -2
- package/dist/src/cli/setup/ide-invocation-surfaces.js +12 -4
- package/dist/src/cli/setup/mcp-config-generator.js +12 -1
- package/dist/src/cli/utils/agent-adapters.js +42 -17
- package/dist/src/cli/utils/fraim-gitignore.js +13 -0
- package/dist/src/cli/utils/remote-sync.js +129 -53
- package/dist/src/cli/utils/user-config.js +12 -0
- package/dist/src/config/ai-manager-hiring.js +121 -0
- package/dist/src/config/compat.js +16 -0
- package/dist/src/config/feature-flags.js +25 -0
- package/dist/src/config/persona-capability-bundles.js +273 -0
- package/dist/src/config/persona-hiring.js +270 -0
- package/dist/src/config/portfolio-slug-overrides.js +17 -0
- package/dist/src/config/pricing.js +37 -0
- package/dist/src/config/stripe.js +43 -0
- package/dist/src/core/fraim-config-schema.generated.js +8 -2
- package/dist/src/core/utils/local-registry-resolver.js +26 -0
- package/dist/src/core/utils/project-fraim-paths.js +89 -2
- package/dist/src/first-run/session-service.js +12 -3
- package/dist/src/local-mcp-server/artifact-retention-cleanup.js +255 -0
- package/dist/src/local-mcp-server/learning-context-builder.js +41 -81
- package/dist/src/local-mcp-server/stdio-server.js +42 -7
- package/package.json +5 -1
- package/public/ai-hub/index.html +205 -89
- package/public/ai-hub/review.css +12 -0
- package/public/ai-hub/script.js +1734 -253
- package/public/ai-hub/styles.css +473 -6
package/public/ai-hub/styles.css
CHANGED
|
@@ -664,7 +664,7 @@ img.conv-employee-avatar {
|
|
|
664
664
|
|
|
665
665
|
#active-conv {
|
|
666
666
|
display: grid;
|
|
667
|
-
grid-template-rows: auto auto minmax(0, 1fr) auto;
|
|
667
|
+
grid-template-rows: auto auto auto minmax(0, 1fr) auto;
|
|
668
668
|
gap: 14px;
|
|
669
669
|
min-width: 0;
|
|
670
670
|
flex: 1;
|
|
@@ -826,6 +826,338 @@ img.conv-employee-avatar {
|
|
|
826
826
|
.conversation-status > * {
|
|
827
827
|
min-width: 0;
|
|
828
828
|
}
|
|
829
|
+
.delegation-ledger {
|
|
830
|
+
display: block;
|
|
831
|
+
border: 1px solid var(--line);
|
|
832
|
+
background: var(--surface);
|
|
833
|
+
border-radius: 8px;
|
|
834
|
+
padding: 0;
|
|
835
|
+
overflow: hidden;
|
|
836
|
+
}
|
|
837
|
+
.delegation-ledger[hidden] {
|
|
838
|
+
display: none;
|
|
839
|
+
}
|
|
840
|
+
.manager-oversight-board {
|
|
841
|
+
display: block;
|
|
842
|
+
border: 1px solid var(--line);
|
|
843
|
+
background: color-mix(in srgb, var(--surface) 84%, var(--accent) 16%);
|
|
844
|
+
border-radius: 8px;
|
|
845
|
+
padding: 0;
|
|
846
|
+
overflow: hidden;
|
|
847
|
+
}
|
|
848
|
+
.manager-oversight-board[hidden] {
|
|
849
|
+
display: none;
|
|
850
|
+
}
|
|
851
|
+
.manager-oversight-board > summary {
|
|
852
|
+
padding: 12px;
|
|
853
|
+
}
|
|
854
|
+
.manager-oversight-board > summary::before {
|
|
855
|
+
margin-top: 2px;
|
|
856
|
+
}
|
|
857
|
+
.manager-oversight-header {
|
|
858
|
+
display: flex;
|
|
859
|
+
align-items: flex-start;
|
|
860
|
+
justify-content: space-between;
|
|
861
|
+
gap: 12px;
|
|
862
|
+
}
|
|
863
|
+
.manager-oversight-copy {
|
|
864
|
+
display: grid;
|
|
865
|
+
gap: 3px;
|
|
866
|
+
min-width: 0;
|
|
867
|
+
}
|
|
868
|
+
.manager-oversight-kicker {
|
|
869
|
+
font-size: 11px;
|
|
870
|
+
font-weight: 700;
|
|
871
|
+
letter-spacing: 0.12em;
|
|
872
|
+
text-transform: uppercase;
|
|
873
|
+
color: var(--muted);
|
|
874
|
+
}
|
|
875
|
+
.manager-oversight-copy strong {
|
|
876
|
+
font-size: 15px;
|
|
877
|
+
color: var(--text);
|
|
878
|
+
}
|
|
879
|
+
.manager-oversight-meta {
|
|
880
|
+
flex-shrink: 0;
|
|
881
|
+
font-size: 12px;
|
|
882
|
+
color: var(--muted);
|
|
883
|
+
}
|
|
884
|
+
.manager-oversight-list {
|
|
885
|
+
display: grid;
|
|
886
|
+
gap: 8px;
|
|
887
|
+
padding: 0 12px 12px;
|
|
888
|
+
}
|
|
889
|
+
.manager-plan-row {
|
|
890
|
+
display: grid;
|
|
891
|
+
grid-template-columns: 28px minmax(0, 1fr);
|
|
892
|
+
gap: 10px;
|
|
893
|
+
border: 1px solid var(--line);
|
|
894
|
+
background: var(--surface);
|
|
895
|
+
border-radius: 8px;
|
|
896
|
+
padding: 10px;
|
|
897
|
+
min-width: 0;
|
|
898
|
+
}
|
|
899
|
+
.manager-plan-step {
|
|
900
|
+
display: grid;
|
|
901
|
+
place-items: center;
|
|
902
|
+
width: 24px;
|
|
903
|
+
height: 24px;
|
|
904
|
+
border-radius: 999px;
|
|
905
|
+
background: color-mix(in srgb, var(--accent) 14%, var(--surface));
|
|
906
|
+
border: 1px solid color-mix(in srgb, var(--accent) 26%, var(--line));
|
|
907
|
+
color: var(--accent);
|
|
908
|
+
font-size: 12px;
|
|
909
|
+
font-weight: 800;
|
|
910
|
+
}
|
|
911
|
+
.manager-plan-body {
|
|
912
|
+
display: grid;
|
|
913
|
+
gap: 4px;
|
|
914
|
+
min-width: 0;
|
|
915
|
+
}
|
|
916
|
+
.manager-plan-top {
|
|
917
|
+
display: flex;
|
|
918
|
+
align-items: flex-start;
|
|
919
|
+
justify-content: space-between;
|
|
920
|
+
gap: 8px;
|
|
921
|
+
min-width: 0;
|
|
922
|
+
}
|
|
923
|
+
.manager-plan-top strong,
|
|
924
|
+
.manager-plan-empty strong {
|
|
925
|
+
font-size: 12px;
|
|
926
|
+
color: var(--text);
|
|
927
|
+
overflow-wrap: anywhere;
|
|
928
|
+
}
|
|
929
|
+
.manager-plan-status {
|
|
930
|
+
flex-shrink: 0;
|
|
931
|
+
border-radius: 999px;
|
|
932
|
+
padding: 2px 7px;
|
|
933
|
+
background: var(--soft);
|
|
934
|
+
border: 1px solid var(--line);
|
|
935
|
+
color: var(--muted);
|
|
936
|
+
font-size: 10px;
|
|
937
|
+
font-weight: 800;
|
|
938
|
+
text-transform: uppercase;
|
|
939
|
+
}
|
|
940
|
+
.manager-plan-status.status-running,
|
|
941
|
+
.manager-plan-status.status-submitted {
|
|
942
|
+
border-color: color-mix(in srgb, #0b63ce 28%, var(--line));
|
|
943
|
+
background: #e8f1ff;
|
|
944
|
+
color: #0b63ce;
|
|
945
|
+
}
|
|
946
|
+
.manager-plan-status.status-reviewed,
|
|
947
|
+
.manager-plan-status.status-completed {
|
|
948
|
+
border-color: color-mix(in srgb, #1c7c36 30%, var(--line));
|
|
949
|
+
background: #e9f7ee;
|
|
950
|
+
color: #1c7c36;
|
|
951
|
+
}
|
|
952
|
+
.manager-plan-status.status-blocked,
|
|
953
|
+
.manager-plan-status.status-failed {
|
|
954
|
+
border-color: color-mix(in srgb, #b3261e 28%, var(--line));
|
|
955
|
+
background: #fdecea;
|
|
956
|
+
color: #b3261e;
|
|
957
|
+
}
|
|
958
|
+
.manager-plan-meta,
|
|
959
|
+
.manager-plan-review,
|
|
960
|
+
.manager-plan-instructions,
|
|
961
|
+
.manager-plan-empty span {
|
|
962
|
+
font-size: 11px;
|
|
963
|
+
color: var(--muted);
|
|
964
|
+
overflow-wrap: anywhere;
|
|
965
|
+
}
|
|
966
|
+
.manager-plan-review {
|
|
967
|
+
color: var(--text);
|
|
968
|
+
}
|
|
969
|
+
.manager-plan-empty {
|
|
970
|
+
display: grid;
|
|
971
|
+
gap: 3px;
|
|
972
|
+
border: 1px dashed var(--line);
|
|
973
|
+
background: var(--surface);
|
|
974
|
+
border-radius: 8px;
|
|
975
|
+
padding: 10px;
|
|
976
|
+
min-width: 0;
|
|
977
|
+
}
|
|
978
|
+
.delegation-ledger > summary {
|
|
979
|
+
padding: 12px;
|
|
980
|
+
}
|
|
981
|
+
.delegation-ledger > summary::before {
|
|
982
|
+
margin-top: 2px;
|
|
983
|
+
}
|
|
984
|
+
.delegation-ledger-body {
|
|
985
|
+
padding: 0 12px 12px;
|
|
986
|
+
display: grid;
|
|
987
|
+
gap: 10px;
|
|
988
|
+
overflow-y: auto;
|
|
989
|
+
}
|
|
990
|
+
.delegation-ledger-header {
|
|
991
|
+
display: flex;
|
|
992
|
+
align-items: flex-start;
|
|
993
|
+
justify-content: space-between;
|
|
994
|
+
gap: 12px;
|
|
995
|
+
}
|
|
996
|
+
.delegation-ledger-copy {
|
|
997
|
+
display: grid;
|
|
998
|
+
gap: 3px;
|
|
999
|
+
min-width: 0;
|
|
1000
|
+
}
|
|
1001
|
+
.delegation-ledger-kicker {
|
|
1002
|
+
font-size: 11px;
|
|
1003
|
+
font-weight: 700;
|
|
1004
|
+
letter-spacing: 0.12em;
|
|
1005
|
+
text-transform: uppercase;
|
|
1006
|
+
color: var(--muted);
|
|
1007
|
+
}
|
|
1008
|
+
.delegation-ledger-copy strong {
|
|
1009
|
+
font-size: 15px;
|
|
1010
|
+
color: var(--text);
|
|
1011
|
+
}
|
|
1012
|
+
.delegation-ledger-meta {
|
|
1013
|
+
flex-shrink: 0;
|
|
1014
|
+
font-size: 12px;
|
|
1015
|
+
color: var(--muted);
|
|
1016
|
+
}
|
|
1017
|
+
.delegation-ledger-summary {
|
|
1018
|
+
margin: 0;
|
|
1019
|
+
font-size: 13px;
|
|
1020
|
+
color: var(--muted);
|
|
1021
|
+
line-height: 1.45;
|
|
1022
|
+
}
|
|
1023
|
+
.delegation-task-list {
|
|
1024
|
+
display: grid;
|
|
1025
|
+
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
|
|
1026
|
+
gap: 8px;
|
|
1027
|
+
}
|
|
1028
|
+
.delegation-task {
|
|
1029
|
+
display: grid;
|
|
1030
|
+
gap: 6px;
|
|
1031
|
+
min-width: 0;
|
|
1032
|
+
border: 1px solid var(--line);
|
|
1033
|
+
border-radius: 8px;
|
|
1034
|
+
background: var(--soft);
|
|
1035
|
+
padding: 10px;
|
|
1036
|
+
}
|
|
1037
|
+
.delegation-task-top {
|
|
1038
|
+
display: flex;
|
|
1039
|
+
align-items: center;
|
|
1040
|
+
justify-content: space-between;
|
|
1041
|
+
gap: 8px;
|
|
1042
|
+
}
|
|
1043
|
+
.delegation-task-assignee {
|
|
1044
|
+
font-size: 12px;
|
|
1045
|
+
font-weight: 700;
|
|
1046
|
+
color: var(--accent-strong);
|
|
1047
|
+
}
|
|
1048
|
+
.delegation-task-status {
|
|
1049
|
+
display: inline-flex;
|
|
1050
|
+
align-items: center;
|
|
1051
|
+
justify-content: center;
|
|
1052
|
+
border-radius: 999px;
|
|
1053
|
+
padding: 3px 7px;
|
|
1054
|
+
font-size: 10px;
|
|
1055
|
+
font-weight: 800;
|
|
1056
|
+
text-transform: uppercase;
|
|
1057
|
+
background: var(--line);
|
|
1058
|
+
color: var(--muted);
|
|
1059
|
+
}
|
|
1060
|
+
.delegation-task-status.status-running,
|
|
1061
|
+
.delegation-task-status.status-submitted {
|
|
1062
|
+
background: var(--state-working-soft);
|
|
1063
|
+
color: var(--state-working);
|
|
1064
|
+
}
|
|
1065
|
+
.delegation-task-status.status-reviewed,
|
|
1066
|
+
.delegation-task-status.status-completed {
|
|
1067
|
+
background: var(--state-complete-soft);
|
|
1068
|
+
color: var(--state-complete);
|
|
1069
|
+
}
|
|
1070
|
+
.delegation-task-status.status-blocked,
|
|
1071
|
+
.delegation-task-status.status-failed {
|
|
1072
|
+
background: var(--state-waiting-soft);
|
|
1073
|
+
color: var(--state-waiting);
|
|
1074
|
+
}
|
|
1075
|
+
.delegation-task-title {
|
|
1076
|
+
min-width: 0;
|
|
1077
|
+
font-size: 14px;
|
|
1078
|
+
color: var(--text);
|
|
1079
|
+
}
|
|
1080
|
+
.delegation-task-detail {
|
|
1081
|
+
font-size: 12px;
|
|
1082
|
+
color: var(--muted);
|
|
1083
|
+
white-space: nowrap;
|
|
1084
|
+
overflow: hidden;
|
|
1085
|
+
text-overflow: ellipsis;
|
|
1086
|
+
}
|
|
1087
|
+
.delegation-task-summary {
|
|
1088
|
+
margin: 0;
|
|
1089
|
+
font-size: 13px;
|
|
1090
|
+
line-height: 1.45;
|
|
1091
|
+
color: var(--text);
|
|
1092
|
+
}
|
|
1093
|
+
.delegation-artifacts {
|
|
1094
|
+
display: flex;
|
|
1095
|
+
flex-wrap: wrap;
|
|
1096
|
+
gap: 6px;
|
|
1097
|
+
}
|
|
1098
|
+
.delegation-artifact,
|
|
1099
|
+
.delegation-review-note,
|
|
1100
|
+
.delegation-view-work {
|
|
1101
|
+
display: inline-flex;
|
|
1102
|
+
width: fit-content;
|
|
1103
|
+
max-width: 100%;
|
|
1104
|
+
border-radius: 999px;
|
|
1105
|
+
padding: 4px 8px;
|
|
1106
|
+
font-size: 11px;
|
|
1107
|
+
font-weight: 700;
|
|
1108
|
+
background: color-mix(in srgb, var(--accent) 10%, transparent);
|
|
1109
|
+
color: var(--accent-strong);
|
|
1110
|
+
}
|
|
1111
|
+
.delegation-artifact {
|
|
1112
|
+
border: 1px solid color-mix(in srgb, var(--accent) 22%, var(--line));
|
|
1113
|
+
cursor: pointer;
|
|
1114
|
+
}
|
|
1115
|
+
.delegation-artifact:hover {
|
|
1116
|
+
background: color-mix(in srgb, var(--accent) 16%, transparent);
|
|
1117
|
+
}
|
|
1118
|
+
.delegation-review-note {
|
|
1119
|
+
background: var(--state-working-soft);
|
|
1120
|
+
color: var(--state-working);
|
|
1121
|
+
}
|
|
1122
|
+
.delegation-view-work {
|
|
1123
|
+
border: 1px solid var(--line);
|
|
1124
|
+
cursor: pointer;
|
|
1125
|
+
background: var(--surface);
|
|
1126
|
+
color: var(--text);
|
|
1127
|
+
}
|
|
1128
|
+
.delegation-view-work:hover {
|
|
1129
|
+
border-color: var(--accent);
|
|
1130
|
+
color: var(--accent-strong);
|
|
1131
|
+
}
|
|
1132
|
+
.coach-panel--managed-readonly {
|
|
1133
|
+
border-color: var(--line);
|
|
1134
|
+
}
|
|
1135
|
+
.coach-panel--managed-readonly textarea {
|
|
1136
|
+
background: var(--soft);
|
|
1137
|
+
color: var(--muted);
|
|
1138
|
+
}
|
|
1139
|
+
.managed-disabled {
|
|
1140
|
+
opacity: 0.55;
|
|
1141
|
+
cursor: not-allowed;
|
|
1142
|
+
}
|
|
1143
|
+
.conv-delegated-list {
|
|
1144
|
+
display: grid;
|
|
1145
|
+
gap: 6px;
|
|
1146
|
+
margin: 6px 0 10px 20px;
|
|
1147
|
+
padding-left: 10px;
|
|
1148
|
+
border-left: 1px solid var(--line);
|
|
1149
|
+
}
|
|
1150
|
+
.conv-delegated-label {
|
|
1151
|
+
font-size: 10px;
|
|
1152
|
+
font-weight: 800;
|
|
1153
|
+
letter-spacing: 0.08em;
|
|
1154
|
+
text-transform: uppercase;
|
|
1155
|
+
color: var(--muted);
|
|
1156
|
+
}
|
|
1157
|
+
.conv-item--delegated-child {
|
|
1158
|
+
background: var(--surface);
|
|
1159
|
+
border-color: color-mix(in srgb, var(--accent) 14%, var(--line));
|
|
1160
|
+
}
|
|
829
1161
|
.status-stack {
|
|
830
1162
|
display: grid;
|
|
831
1163
|
gap: 10px;
|
|
@@ -2487,12 +2819,58 @@ body.hub-shell { display: flex; flex-direction: column; height: 100vh; overflow:
|
|
|
2487
2819
|
.proj-context-top { flex-shrink: 0; padding: 12px 16px 0; overflow-y: auto; max-height: 46vh; }
|
|
2488
2820
|
/* #521: shared empty/CTA block — used by BOTH the Brief and Learnings sections so
|
|
2489
2821
|
they look consistent (a left-aligned message, optional note, primary button). */
|
|
2490
|
-
.ctx-cta { display: flex; flex-direction: column; align-items: flex-start; gap:
|
|
2491
|
-
.ctx-cta-
|
|
2822
|
+
.ctx-cta { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 18px 16px; }
|
|
2823
|
+
.ctx-cta-ico { font-size: 26px; line-height: 1; }
|
|
2824
|
+
.ctx-cta-title { font-size: 14px; font-weight: 600; color: var(--text, #1a1a1a); margin: 0; }
|
|
2825
|
+
.ctx-cta-msg { font-size: 13px; color: var(--muted); line-height: 1.6; max-width: 520px; margin: 0; }
|
|
2492
2826
|
.ctx-cta-note { font-size: 12px; color: var(--text); line-height: 1.5; max-width: 520px; padding: 8px 12px; background: var(--soft, #f6f6f6); border: 1px solid var(--line, #e6e6e6); border-radius: 8px; }
|
|
2493
2827
|
.ctx-cta-btn { font-size: 14px; font-weight: 600; color: #fff; background: var(--accent, #1f6feb); border: none; border-radius: 8px; padding: 10px 16px; cursor: pointer; }
|
|
2494
2828
|
.ctx-cta-btn:hover { filter: brightness(1.05); }
|
|
2829
|
+
.ctx-push-auto { font-size: 11px; color: var(--muted); opacity: .7; white-space: nowrap; }
|
|
2830
|
+
/* Unified Company/Manager area layout: info view (accordions) vs conversation panel */
|
|
2831
|
+
.area-info-view { flex: 1; overflow-y: auto; min-height: 0; }
|
|
2832
|
+
/* Shared conversation host — a workspace-conv slot inside Company/Manager .area-main.
|
|
2833
|
+
The .page element is physically moved here when a company/manager job is active,
|
|
2834
|
+
inheriting all .workspace-conv CSS rules (header hidden, rail hidden, conv fills space). */
|
|
2835
|
+
.area-conv-host { flex: 1; overflow: hidden; min-height: 0; }
|
|
2836
|
+
/* Rail "info" nav button — mirrors the "Project Info" entry in the Projects tree sidebar */
|
|
2837
|
+
.area-rail-info-btn {
|
|
2838
|
+
display: flex; align-items: center; gap: 8px;
|
|
2839
|
+
width: 100%; padding: 9px 16px;
|
|
2840
|
+
font-size: 13px; font-weight: 600; color: var(--text);
|
|
2841
|
+
background: none; border: none; border-bottom: 1px solid var(--line);
|
|
2842
|
+
text-align: left; cursor: pointer; margin-bottom: 2px;
|
|
2843
|
+
}
|
|
2844
|
+
.area-rail-info-btn:hover { background: var(--bg); }
|
|
2845
|
+
.area-rail-info-btn.info-active { color: var(--accent); background: var(--accent-soft); }
|
|
2846
|
+
/* #594 R2: area-level conversation panel (Company/Manager tab inline run view) — kept for reference */
|
|
2847
|
+
.area-page-conv { display: flex; flex-direction: column; gap: 0; margin: 0 0 20px; background: var(--card, #fff); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
|
|
2848
|
+
.area-conv-topline { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
|
|
2849
|
+
.area-conv-thread { flex: 1; max-height: 340px; overflow-y: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; }
|
|
2850
|
+
.area-conv-empty { font-size: 13px; color: var(--muted); margin: 0; }
|
|
2851
|
+
.area-conv-msg { display: flex; flex-direction: column; gap: 2px; }
|
|
2852
|
+
.area-conv-msg--manager .area-conv-msg-text { align-self: flex-end; background: var(--accent-soft, #eef4ff); border-radius: 10px 10px 2px 10px; padding: 8px 12px; font-size: 13px; color: var(--text); max-width: 80%; margin: 0; }
|
|
2853
|
+
.area-conv-msg--employee .area-conv-msg-text { align-self: flex-start; background: var(--surface, #f8f8f8); border: 1px solid var(--line); border-radius: 10px 10px 10px 2px; padding: 8px 12px; font-size: 13px; color: var(--text); max-width: 80%; margin: 0; white-space: pre-wrap; }
|
|
2854
|
+
.area-conv-coach { display: flex; align-items: flex-end; gap: 8px; padding: 10px 14px; border-top: 1px solid var(--line); background: var(--bg, #fafafa); }
|
|
2855
|
+
.area-conv-coach-ta { flex: 1; resize: none; border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; font-size: 13px; font-family: inherit; color: var(--text); background: var(--card, #fff); outline: none; min-height: 38px; }
|
|
2856
|
+
.area-conv-coach-ta:focus { border-color: var(--accent); }
|
|
2857
|
+
.area-conv-coach-send { flex-shrink: 0; font-size: 13px; font-weight: 600; color: #fff; background: var(--accent, #0071e3); border: none; border-radius: 8px; padding: 8px 16px; cursor: pointer; height: 38px; }
|
|
2858
|
+
.area-conv-coach-send:hover { filter: brightness(1.08); }
|
|
2495
2859
|
.ctx-loading { font-size: 13px; color: var(--muted); padding: 10px 4px; }
|
|
2860
|
+
.ctx-push-bar { display: flex; align-items: center; gap: 10px; padding: 9px 14px; margin-top: 6px; background: var(--accent-soft, #eef4ff); border: 1px solid var(--line); border-radius: 8px; }
|
|
2861
|
+
.ctx-push-msg { flex: 1; font-size: 13px; color: var(--text); }
|
|
2862
|
+
.ctx-push-btn { font-size: 13px; font-weight: 600; color: #fff; background: var(--accent, #0071e3); border: none; border-radius: 6px; padding: 6px 14px; cursor: pointer; white-space: nowrap; }
|
|
2863
|
+
.ctx-push-btn:hover { filter: brightness(1.07); }
|
|
2864
|
+
.ctx-push-dismiss { font-size: 12.5px; color: var(--muted); background: none; border: 1px solid var(--line, rgba(0,0,0,.1)); border-radius: 5px; padding: 4px 10px; cursor: pointer; white-space: nowrap; }
|
|
2865
|
+
.ctx-push-dismiss:hover { color: var(--text); border-color: var(--muted); }
|
|
2866
|
+
.push-to-team-banner { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; margin: 10px 0; background: var(--accent-soft, #eef4ff); border: 1px solid var(--line); border-radius: 10px; }
|
|
2867
|
+
.ptb-ico { font-size: 20px; flex-shrink: 0; line-height: 1.4; }
|
|
2868
|
+
.ptb-copy { flex: 1; font-size: 13px; color: var(--text); line-height: 1.6; }
|
|
2869
|
+
.ptb-copy strong { font-weight: 600; }
|
|
2870
|
+
.ptb-push-btn { font-size: 13px; font-weight: 600; color: #fff; background: var(--accent, #0071e3); border: none; border-radius: 8px; padding: 8px 16px; cursor: pointer; white-space: nowrap; flex-shrink: 0; }
|
|
2871
|
+
.ptb-push-btn:hover { filter: brightness(1.07); }
|
|
2872
|
+
.ptb-dismiss { font-size: 13px; color: var(--muted); background: none; border: 1px solid var(--line, rgba(0,0,0,.1)); border-radius: 6px; padding: 6px 12px; cursor: pointer; white-space: nowrap; flex-shrink: 0; }
|
|
2873
|
+
.ptb-dismiss:hover { color: var(--text); border-color: var(--muted); }
|
|
2496
2874
|
/* #521: project-onboarding input modal (manager's direction before a run). */
|
|
2497
2875
|
.obi-input { width: 100%; box-sizing: border-box; resize: vertical; min-height: 96px; font: inherit; font-size: 14px; line-height: 1.5; padding: 11px 13px; border: 1px solid var(--line, #e2e2e2); border-radius: 10px; background: var(--surface, #fff); color: var(--ink, #1a1a1a); }
|
|
2498
2876
|
.obi-input:focus { outline: none; border-color: var(--accent, #1f6feb); }
|
|
@@ -2772,6 +3150,33 @@ body.hub-shell { display: flex; flex-direction: column; height: 100vh; overflow:
|
|
|
2772
3150
|
max-height: clamp(120px, 24vh, 260px);
|
|
2773
3151
|
overflow-y: auto;
|
|
2774
3152
|
}
|
|
3153
|
+
|
|
3154
|
+
.workspace-conv #active-conv.has-delegation-board .delegation-ledger[open] .delegation-ledger-body {
|
|
3155
|
+
max-height: clamp(140px, 24vh, 260px);
|
|
3156
|
+
}
|
|
3157
|
+
.workspace-conv #active-conv.has-manager-oversight .manager-oversight-board[open] .manager-oversight-list {
|
|
3158
|
+
max-height: clamp(120px, 22vh, 240px);
|
|
3159
|
+
overflow-y: auto;
|
|
3160
|
+
}
|
|
3161
|
+
.workspace-conv #active-conv.has-delegation-board .progress,
|
|
3162
|
+
.workspace-conv #active-conv.has-manager-oversight .progress {
|
|
3163
|
+
max-height: 68px;
|
|
3164
|
+
overflow: hidden;
|
|
3165
|
+
}
|
|
3166
|
+
.workspace-conv #active-conv.has-delegation-board #coach-panel[open] .panel-body,
|
|
3167
|
+
.workspace-conv #active-conv.has-manager-oversight #coach-panel[open] .panel-body {
|
|
3168
|
+
max-height: clamp(120px, 18vh, 240px);
|
|
3169
|
+
overflow-y: auto;
|
|
3170
|
+
}
|
|
3171
|
+
.workspace-conv #active-conv.has-delegation-board .support-stack,
|
|
3172
|
+
.workspace-conv #active-conv.has-manager-oversight .support-stack {
|
|
3173
|
+
flex: 0 0 auto;
|
|
3174
|
+
max-height: none;
|
|
3175
|
+
overflow-y: visible;
|
|
3176
|
+
}
|
|
3177
|
+
.workspace-conv #active-conv.has-manager-oversight {
|
|
3178
|
+
gap: 6px;
|
|
3179
|
+
}
|
|
2775
3180
|
.workspace-conv .support-stack > .panel-details,
|
|
2776
3181
|
.workspace-conv .support-stack > .micro { margin-bottom: 0; }
|
|
2777
3182
|
|
|
@@ -2844,6 +3249,13 @@ body.hub-shell { display: flex; flex-direction: column; height: 100vh; overflow:
|
|
|
2844
3249
|
.workspace-conv .layout {
|
|
2845
3250
|
min-width: 0;
|
|
2846
3251
|
}
|
|
3252
|
+
.manager-oversight-header {
|
|
3253
|
+
display: grid;
|
|
3254
|
+
gap: 4px;
|
|
3255
|
+
}
|
|
3256
|
+
.manager-oversight-meta {
|
|
3257
|
+
flex-shrink: 1;
|
|
3258
|
+
}
|
|
2847
3259
|
}
|
|
2848
3260
|
|
|
2849
3261
|
/* Review surfaces */
|
|
@@ -2874,6 +3286,8 @@ body.hub-shell { display: flex; flex-direction: column; height: 100vh; overflow:
|
|
|
2874
3286
|
.modal-body { padding: 18px 22px; display: flex; flex-direction: column; gap: 14px; }
|
|
2875
3287
|
.modal-close { float: right; background: var(--bg); border: none; width: 28px; height: 28px; border-radius: 50%; font-size: 16px; cursor: pointer; color: var(--muted); line-height: 1; }
|
|
2876
3288
|
.modal-close:hover { color: var(--text); }
|
|
3289
|
+
.aom-cancel-btn { background: none; border: 1px solid var(--line); border-radius: 20px; padding: 9px 20px; font-size: 14px; cursor: pointer; color: var(--muted); }
|
|
3290
|
+
.aom-cancel-btn:hover { color: var(--text); }
|
|
2877
3291
|
.modal-footer { padding: 12px 22px 20px; display: flex; align-items: center; justify-content: space-between; }
|
|
2878
3292
|
.modal-next { padding: 9px 22px; background: var(--text); color: #fff; border: none; border-radius: 20px; font-size: 14px; font-weight: 600; cursor: pointer; }
|
|
2879
3293
|
.modal-back { font-size: 13px; color: var(--muted); background: none; border: none; cursor: pointer; }
|
|
@@ -3859,11 +4273,12 @@ body.hub-shell { display: flex; flex-direction: column; height: 100vh; overflow:
|
|
|
3859
4273
|
.hm-fieldrow { display: flex; gap: 10px; }
|
|
3860
4274
|
.hm-fieldrow .hm-field { flex: 1; }
|
|
3861
4275
|
.hm-field label { display: block; font-size: 12px; font-weight: 600; color: var(--muted); margin-bottom: 5px; }
|
|
3862
|
-
.hm-field select, .hm-field input {
|
|
4276
|
+
.hm-field select, .hm-field input, .hm-field textarea {
|
|
3863
4277
|
width: 100%; border: 1px solid var(--line); border-radius: 9px; padding: 9px 12px;
|
|
3864
4278
|
font: inherit; font-size: 13px; background: var(--bg); color: var(--text);
|
|
3865
4279
|
}
|
|
3866
|
-
.hm-field
|
|
4280
|
+
.hm-field textarea { resize: vertical; min-height: 60px; }
|
|
4281
|
+
.hm-field select:focus, .hm-field input:focus, .hm-field textarea:focus { outline: 2px solid var(--accent); border-color: transparent; }
|
|
3867
4282
|
.hm-query { display: flex; align-items: flex-start; gap: 10px; background: var(--bg); border: 1px solid var(--line); border-radius: 9px; padding: 10px 12px; }
|
|
3868
4283
|
.hm-query code { flex: 1; font-family: ui-monospace, "SF Mono", "JetBrains Mono", monospace; font-size: 12px; line-height: 1.55; color: var(--text); white-space: pre-wrap; word-break: break-word; }
|
|
3869
4284
|
.hm-copy-btn { flex-shrink: 0; font-size: 12px; font-weight: 600; color: var(--accent); background: none; border: 1px solid var(--line); border-radius: 7px; padding: 4px 10px; cursor: pointer; }
|
|
@@ -3940,7 +4355,6 @@ body.hub-shell { display: flex; flex-direction: column; height: 100vh; overflow:
|
|
|
3940
4355
|
.prt-hire-btn { font-size:11px; font-weight:700; color:#fff; background:var(--accent,#0071e3); border:none; border-radius:6px; padding:4px 12px; cursor:pointer; margin-top:2px; }
|
|
3941
4356
|
.prt-hire-btn:hover { background:var(--accent-hover,#005bbf); }
|
|
3942
4357
|
.prt-price { font-size:10px; color:var(--sub); margin-top:1px; }
|
|
3943
|
-
.manager-team-section { padding:4px 0 16px; }
|
|
3944
4358
|
.manager-no-team-msg { font-size:13px; color:var(--sub); margin:0 0 10px; }
|
|
3945
4359
|
.manager-go-company-btn { font-size:12px; font-weight:600; color:var(--accent,#0071e3); background:var(--accent-soft,rgba(0,113,227,.08)); border:1px solid var(--accent,#0071e3); border-radius:6px; padding:5px 13px; cursor:pointer; }
|
|
3946
4360
|
.manager-go-company-btn:hover { background:var(--accent-soft,rgba(0,113,227,.15)); }
|
|
@@ -3993,3 +4407,56 @@ body.hub-shell { display: flex; flex-direction: column; height: 100vh; overflow:
|
|
|
3993
4407
|
.hs-btn--primary:hover { opacity:.85; }
|
|
3994
4408
|
.hs-btn--ghost { background:transparent; color:var(--muted); border:1px solid var(--line); }
|
|
3995
4409
|
.hs-btn--ghost:hover { color:var(--text); border-color:var(--text); }
|
|
4410
|
+
|
|
4411
|
+
/* ── Issue #578: Scheduled + Reactive Employees ── */
|
|
4412
|
+
|
|
4413
|
+
/* sourceTrigger chip on run rail items */
|
|
4414
|
+
.trigger-badge { display:inline-block; padding:1px 6px; border-radius:4px; font-size:10px; font-weight:600; letter-spacing:.02em; flex-shrink:0; }
|
|
4415
|
+
.trigger-badge--scheduled { background:rgba(0,122,255,.12); color:#0071e3; }
|
|
4416
|
+
.trigger-badge--webhook { background:rgba(88,86,214,.12); color:#5856d6; }
|
|
4417
|
+
|
|
4418
|
+
/* Deployment roster accordion */
|
|
4419
|
+
#proj-deployments-acc { margin-top:0; }
|
|
4420
|
+
.dep-actions { display:flex; gap:8px; margin-top:8px; }
|
|
4421
|
+
.dep-add-btn { padding:4px 12px; background:var(--accent-soft,rgba(0,113,227,.08)); color:var(--accent,#0071e3); border:1px solid rgba(0,113,227,.2); border-radius:8px; font-size:12px; font-weight:600; cursor:pointer; }
|
|
4422
|
+
.dep-add-btn:hover { background:var(--accent,#0071e3); color:#fff; }
|
|
4423
|
+
|
|
4424
|
+
/* Deployment cards */
|
|
4425
|
+
.dep-card { display:flex; flex-wrap:wrap; align-items:baseline; gap:6px; padding:8px 10px; background:var(--surface,#fff); border:1px solid var(--line,#e5e5e5); border-radius:10px; margin-bottom:6px; }
|
|
4426
|
+
.dep-card-top { display:flex; align-items:center; gap:6px; flex:1; min-width:0; }
|
|
4427
|
+
.dep-type-icon { font-size:14px; flex-shrink:0; }
|
|
4428
|
+
.dep-label { font-size:13px; font-weight:600; color:var(--text,#1d1d1f); flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
4429
|
+
.dep-type-badge { display:inline-block; padding:1px 7px; border-radius:4px; font-size:10px; font-weight:600; flex-shrink:0; }
|
|
4430
|
+
.dep-type-badge--scheduled { background:rgba(0,122,255,.12); color:#0071e3; }
|
|
4431
|
+
.dep-type-badge--webhook { background:rgba(88,86,214,.12); color:#5856d6; }
|
|
4432
|
+
.dep-detail { width:100%; font-size:11px; color:var(--muted,#888); margin-left:20px; }
|
|
4433
|
+
.dep-detail--url { display:flex; align-items:center; gap:6px; }
|
|
4434
|
+
.dep-inbound-url { font-size:11px; word-break:break-all; color:var(--muted,#888); flex:1; }
|
|
4435
|
+
.dep-inbound-url--inline { display:inline; font-size:11px; }
|
|
4436
|
+
/* Assignment modals — redesigned */
|
|
4437
|
+
.dep-modal-card { max-width:540px; }
|
|
4438
|
+
.dep-modal-card .modal-hdr p { font-size:12px; color:var(--muted,#888); margin:3px 0 0; font-weight:400; }
|
|
4439
|
+
.dep-optional { font-weight:400; font-size:11px; color:var(--muted,#888); }
|
|
4440
|
+
.dep-preset-chips { display:flex; gap:8px; flex-wrap:wrap; margin-top:2px; }
|
|
4441
|
+
.dep-preset-chip { padding:6px 18px; border-radius:20px; font-size:13px; font-weight:500; border:1.5px solid var(--line,#e5e5e5); background:var(--bg,#f5f5f7); color:var(--muted,#888); cursor:pointer; transition:border-color .12s, color .12s, background .12s; }
|
|
4442
|
+
.dep-preset-chip:hover { border-color:var(--accent,#0071e3); color:var(--accent,#0071e3); }
|
|
4443
|
+
.dep-preset-chip.active { background:var(--accent,#0071e3); border-color:var(--accent,#0071e3); color:#fff; }
|
|
4444
|
+
.dep-wh-inbound-reveal { margin-top:16px; padding-top:16px; border-top:1px solid var(--line,#e5e5e5); }
|
|
4445
|
+
.dep-wh-inbound-header { margin-bottom:8px; }
|
|
4446
|
+
.dep-wh-inbound-label { font-size:12px; font-weight:600; color:var(--text,#1d1d1f); display:block; }
|
|
4447
|
+
.dep-wh-inbound-hint { font-size:11px; color:var(--muted,#888); display:block; margin-top:2px; }
|
|
4448
|
+
.dep-card-actions { display:flex; gap:6px; margin-left:auto; align-items:center; flex-shrink:0; }
|
|
4449
|
+
.dep-edit-btn { padding:2px 8px; background:transparent; border:1px solid var(--line,#e5e5e5); border-radius:6px; font-size:11px; color:var(--muted,#888); cursor:pointer; }
|
|
4450
|
+
.dep-edit-btn:hover { border-color:var(--accent,#0071e3); color:var(--accent,#0071e3); }
|
|
4451
|
+
.dep-del-btn { padding:2px 8px; background:transparent; border:1px solid var(--line,#e5e5e5); border-radius:6px; font-size:11px; color:var(--muted,#888); cursor:pointer; }
|
|
4452
|
+
.dep-del-btn:hover { border-color:#ff3b30; color:#ff3b30; }
|
|
4453
|
+
.dep-detail--emp { font-style:normal; }
|
|
4454
|
+
.dep-empty { color:var(--muted,#888); font-size:12px; margin:4px 0 8px; line-height:1.5; }
|
|
4455
|
+
.dep-cron-preview { font-size:11px; color:var(--accent,#0071e3); margin:2px 0 0; }
|
|
4456
|
+
|
|
4457
|
+
/* Deployment modals */
|
|
4458
|
+
.dep-modal-actions { display:flex; gap:8px; margin-top:12px; }
|
|
4459
|
+
.dep-error { color:#ff3b30; font-size:12px; margin-top:4px; }
|
|
4460
|
+
.cancel-button { padding:7px 18px; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; background:transparent; color:var(--muted,#888); border:1px solid var(--line,#e5e5e5); }
|
|
4461
|
+
.cancel-button:hover { border-color:var(--text,#1d1d1f); color:var(--text,#1d1d1f); }
|
|
4462
|
+
.dep-inbound-url-row { display:flex; align-items:center; gap:8px; padding:6px 10px; background:var(--bg,#f5f5f7); border-radius:8px; margin-top:6px; }
|