@bojackduy/opencode-loopd 1.1.0 → 1.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.
- package/dist/tui.js +324 -301
- package/package.json +2 -2
package/dist/tui.js
CHANGED
|
@@ -8,6 +8,8 @@ import { createComponent as _$createComponent2 } from "@opentui/solid";
|
|
|
8
8
|
import { use as _$use } from "@opentui/solid";
|
|
9
9
|
import { effect as _$effect } from "@opentui/solid";
|
|
10
10
|
import { createComponent as _$createComponent } from "@opentui/solid";
|
|
11
|
+
import { spread as _$spread } from "@opentui/solid";
|
|
12
|
+
import { mergeProps as _$mergeProps } from "@opentui/solid";
|
|
11
13
|
import { memo as _$memo } from "@opentui/solid";
|
|
12
14
|
import { insert as _$insert } from "@opentui/solid";
|
|
13
15
|
import { createTextNode as _$createTextNode } from "@opentui/solid";
|
|
@@ -625,14 +627,7 @@ function LoopDashboard(props) {
|
|
|
625
627
|
}
|
|
626
628
|
if (key === "B") {
|
|
627
629
|
prevent(evt);
|
|
628
|
-
|
|
629
|
-
const extra = goal ? `Goal: ${goal.name} (${goal.id.slice(0, 8)}) status=${goal.status} objective=${goal.objective.slice(0, 120)}` : "No goal selected";
|
|
630
|
-
const url = bugReportUrl({
|
|
631
|
-
runtimeLabel: `opencode-loopd dashboard`,
|
|
632
|
-
extra
|
|
633
|
-
});
|
|
634
|
-
const res = openBrowserUrl(url);
|
|
635
|
-
setStatusText(res.status === "opened" ? "Opening bug report in browser\u2026" : `Could not open browser: ${res.reason} \u2014 ${url}`);
|
|
630
|
+
handleBugReport();
|
|
636
631
|
return;
|
|
637
632
|
}
|
|
638
633
|
if (key === "q") {
|
|
@@ -810,14 +805,7 @@ function LoopDashboard(props) {
|
|
|
810
805
|
}
|
|
811
806
|
case "bug":
|
|
812
807
|
case "report": {
|
|
813
|
-
|
|
814
|
-
const extra = goal ? `Goal: ${goal.name} (${goal.id.slice(0, 8)}) status=${goal.status} objective=${goal.objective.slice(0, 120)}` : "No goal selected";
|
|
815
|
-
const url = bugReportUrl({
|
|
816
|
-
runtimeLabel: `opencode-loopd dashboard`,
|
|
817
|
-
extra
|
|
818
|
-
});
|
|
819
|
-
const res = openBrowserUrl(url);
|
|
820
|
-
setStatusText(res.status === "opened" ? "Opening bug report in browser\u2026" : `Could not open browser: ${res.reason} \u2014 ${url}`);
|
|
808
|
+
handleBugReport();
|
|
821
809
|
break;
|
|
822
810
|
}
|
|
823
811
|
case "logs":
|
|
@@ -858,25 +846,39 @@ function LoopDashboard(props) {
|
|
|
858
846
|
const activeGoals = () => state()?.goals.filter((g) => g.status !== "complete") || [];
|
|
859
847
|
const runningCount = () => state()?.runtimes.filter((runtime) => runtime.phase === "running").length || 0;
|
|
860
848
|
const runningFrame = () => ["|", "/", "-", "\\"][Math.floor(clock() / 500) % 4];
|
|
849
|
+
function handleBugReport() {
|
|
850
|
+
const goal = selectedGoal();
|
|
851
|
+
const extra = goal ? `Goal: ${goal.name} (${goal.id.slice(0, 8)}) status=${goal.status} objective=${goal.objective.slice(0, 120)}` : "No goal selected";
|
|
852
|
+
const url = bugReportUrl({
|
|
853
|
+
runtimeLabel: `opencode-loopd dashboard`,
|
|
854
|
+
extra
|
|
855
|
+
});
|
|
856
|
+
const res = openBrowserUrl(url);
|
|
857
|
+
setStatusText(res.status === "opened" ? "Opening bug report in browser\u2026" : `Could not open browser: ${res.reason} \u2014 ${url}`);
|
|
858
|
+
}
|
|
861
859
|
createEffect(() => setSelectedGoal(activeGoals()[selected()] || null));
|
|
862
860
|
return (() => {
|
|
863
|
-
var _el$ = _$createElement("box"), _el$2 = _$createElement("box"), _el$3 = _$createElement("box"), _el$4 = _$createElement("text"), _el$5 = _$createElement("span"), _el$7 = _$createElement("span"), _el$9 = _$createElement("span"), _el$0 = _$createTextNode(` `), _el$1 = _$createTextNode(` `), _el$10 = _$createElement("span"), _el$12 = _$createElement("span"), _el$13 = _$createElement("span"), _el$15 = _$createElement("span"), _el$17 = _$createElement("span"), _el$18 = _$createTextNode(` `), _el$19 = _$createTextNode(` RUNNING`), _el$20 = _$createElement("span"), _el$22 = _$createElement("span"), _el$23 = _$createElement("span"), _el$25 = _$createElement("box"), _el$
|
|
861
|
+
var _el$ = _$createElement("box"), _el$2 = _$createElement("box"), _el$3 = _$createElement("box"), _el$4 = _$createElement("text"), _el$5 = _$createElement("span"), _el$7 = _$createElement("span"), _el$9 = _$createElement("span"), _el$0 = _$createTextNode(` `), _el$1 = _$createTextNode(` `), _el$10 = _$createElement("span"), _el$12 = _$createElement("span"), _el$13 = _$createElement("span"), _el$15 = _$createElement("span"), _el$17 = _$createElement("span"), _el$18 = _$createTextNode(` `), _el$19 = _$createTextNode(` RUNNING`), _el$20 = _$createElement("span"), _el$22 = _$createElement("span"), _el$23 = _$createElement("span"), _el$25 = _$createElement("box"), _el$26 = _$createElement("text"), _el$27 = _$createElement("span"), _el$29 = _$createElement("box"), _el$34 = _$createElement("box"), _el$41 = _$createElement("box"), _el$42 = _$createElement("text"), _el$43 = _$createElement("span"), _el$44 = _$createElement("input");
|
|
864
862
|
_$insertNode(_el$, _el$2);
|
|
865
863
|
_$setProp(_el$, "flexDirection", "column");
|
|
866
864
|
_$setProp(_el$, "width", "100%");
|
|
867
865
|
_$setProp(_el$, "alignItems", "center");
|
|
868
866
|
_$setProp(_el$, "padding", 1);
|
|
869
867
|
_$insertNode(_el$2, _el$3);
|
|
870
|
-
_$insertNode(_el$2, _el$
|
|
871
|
-
_$insertNode(_el$2, _el$
|
|
868
|
+
_$insertNode(_el$2, _el$29);
|
|
869
|
+
_$insertNode(_el$2, _el$41);
|
|
872
870
|
_$setProp(_el$2, "flexDirection", "column");
|
|
873
871
|
_$setProp(_el$2, "width", "90%");
|
|
874
872
|
_$setProp(_el$2, "border", true);
|
|
875
873
|
_$setProp(_el$2, "padding", 1);
|
|
876
874
|
_$insertNode(_el$3, _el$4);
|
|
875
|
+
_$insertNode(_el$3, _el$25);
|
|
877
876
|
_$setProp(_el$3, "flexDirection", "row");
|
|
877
|
+
_$setProp(_el$3, "justifyContent", "space-between");
|
|
878
|
+
_$setProp(_el$3, "alignItems", "center");
|
|
878
879
|
_$setProp(_el$3, "padding", 0);
|
|
879
880
|
_$setProp(_el$3, "flexShrink", 0);
|
|
881
|
+
_$setProp(_el$3, "gap", 1);
|
|
880
882
|
_$insertNode(_el$4, _el$5);
|
|
881
883
|
_$insertNode(_el$4, _el$7);
|
|
882
884
|
_$insertNode(_el$4, _el$9);
|
|
@@ -907,32 +909,48 @@ function LoopDashboard(props) {
|
|
|
907
909
|
_$insertNode(_el$20, _$createTextNode(` \u2502 `));
|
|
908
910
|
_$insert(_el$22, () => state()?.goals.filter((g) => g.status === "complete").length || 0);
|
|
909
911
|
_$insertNode(_el$23, _$createTextNode(` done`));
|
|
910
|
-
_$insertNode(_el$25, _el$
|
|
911
|
-
_$setProp(_el$25, "flexDirection", "
|
|
912
|
-
_$setProp(_el$25, "
|
|
913
|
-
_$setProp(_el$25, "
|
|
914
|
-
_$setProp(_el$25, "
|
|
915
|
-
_$
|
|
912
|
+
_$insertNode(_el$25, _el$26);
|
|
913
|
+
_$setProp(_el$25, "flexDirection", "row");
|
|
914
|
+
_$setProp(_el$25, "alignItems", "center");
|
|
915
|
+
_$setProp(_el$25, "border", true);
|
|
916
|
+
_$setProp(_el$25, "paddingLeft", 1);
|
|
917
|
+
_$setProp(_el$25, "paddingRight", 1);
|
|
918
|
+
_$setProp(_el$25, "flexShrink", 0);
|
|
919
|
+
_$spread(_el$25, _$mergeProps({
|
|
920
|
+
get borderColor() {
|
|
921
|
+
return theme().error;
|
|
922
|
+
}
|
|
923
|
+
}, {
|
|
924
|
+
onClick: handleBugReport
|
|
925
|
+
}), true);
|
|
926
|
+
_$insertNode(_el$26, _el$27);
|
|
927
|
+
_$insertNode(_el$27, _$createTextNode(`Bug`));
|
|
928
|
+
_$insertNode(_el$29, _el$34);
|
|
929
|
+
_$setProp(_el$29, "flexDirection", "column");
|
|
930
|
+
_$setProp(_el$29, "flexGrow", 1);
|
|
931
|
+
_$setProp(_el$29, "minHeight", 0);
|
|
932
|
+
_$setProp(_el$29, "overflow", "hidden");
|
|
933
|
+
_$insert(_el$29, _$createComponent(Show, {
|
|
916
934
|
get when() {
|
|
917
935
|
return showHelp();
|
|
918
936
|
},
|
|
919
937
|
get children() {
|
|
920
|
-
var _el$
|
|
921
|
-
_$insertNode(_el$
|
|
922
|
-
_$setProp(_el$
|
|
923
|
-
_$setProp(_el$
|
|
924
|
-
_$setProp(_el$
|
|
925
|
-
_$setProp(_el$
|
|
926
|
-
_$setProp(_el$
|
|
927
|
-
_$setProp(_el$
|
|
928
|
-
_$setProp(_el$
|
|
929
|
-
_$insertNode(_el$
|
|
930
|
-
_$insertNode(_el$
|
|
931
|
-
_$setProp(_el$
|
|
938
|
+
var _el$30 = _$createElement("box"), _el$31 = _$createElement("text"), _el$32 = _$createElement("span");
|
|
939
|
+
_$insertNode(_el$30, _el$31);
|
|
940
|
+
_$setProp(_el$30, "flexDirection", "column");
|
|
941
|
+
_$setProp(_el$30, "padding", 1);
|
|
942
|
+
_$setProp(_el$30, "border", true);
|
|
943
|
+
_$setProp(_el$30, "borderColor", "yellow");
|
|
944
|
+
_$setProp(_el$30, "flexShrink", 0);
|
|
945
|
+
_$setProp(_el$30, "maxHeight", 14);
|
|
946
|
+
_$setProp(_el$30, "overflow", "hidden");
|
|
947
|
+
_$insertNode(_el$31, _el$32);
|
|
948
|
+
_$insertNode(_el$32, _$createTextNode(`\u2501\u2501\u2501 Keys: ? toggle : insert Ctrl+N normal o open B bug q close \u2501\u2501\u2501`));
|
|
949
|
+
_$setProp(_el$32, "style", {
|
|
932
950
|
fg: "yellow",
|
|
933
951
|
bold: true
|
|
934
952
|
});
|
|
935
|
-
_$insert(_el$
|
|
953
|
+
_$insert(_el$31, _$createComponent(For, {
|
|
936
954
|
get each() {
|
|
937
955
|
return commandHelp().split(`
|
|
938
956
|
`);
|
|
@@ -942,88 +960,88 @@ function LoopDashboard(props) {
|
|
|
942
960
|
const isCmd = line.trim().startsWith(":");
|
|
943
961
|
return [`
|
|
944
962
|
`, (() => {
|
|
945
|
-
var _el$
|
|
946
|
-
_$insert(_el$
|
|
947
|
-
_$effect((_$p) => _$setProp(_el$
|
|
963
|
+
var _el$45 = _$createElement("span");
|
|
964
|
+
_$insert(_el$45, line);
|
|
965
|
+
_$effect((_$p) => _$setProp(_el$45, "style", {
|
|
948
966
|
fg: isHeader ? theme().primary : isCmd ? theme().warning : theme().text,
|
|
949
967
|
bold: isHeader
|
|
950
968
|
}, _$p));
|
|
951
|
-
return _el$
|
|
969
|
+
return _el$45;
|
|
952
970
|
})()];
|
|
953
971
|
}
|
|
954
972
|
}), null);
|
|
955
|
-
_$effect((_$p) => _$setProp(_el$
|
|
956
|
-
return _el$
|
|
973
|
+
_$effect((_$p) => _$setProp(_el$30, "backgroundColor", theme().background, _$p));
|
|
974
|
+
return _el$30;
|
|
957
975
|
}
|
|
958
|
-
}), _el$
|
|
959
|
-
_$setProp(_el$
|
|
960
|
-
_$setProp(_el$
|
|
961
|
-
_$setProp(_el$
|
|
962
|
-
_$setProp(_el$
|
|
963
|
-
_$setProp(_el$
|
|
964
|
-
_$insert(_el$
|
|
976
|
+
}), _el$34);
|
|
977
|
+
_$setProp(_el$34, "flexDirection", "column");
|
|
978
|
+
_$setProp(_el$34, "flexGrow", 1);
|
|
979
|
+
_$setProp(_el$34, "padding", 1);
|
|
980
|
+
_$setProp(_el$34, "minHeight", 0);
|
|
981
|
+
_$setProp(_el$34, "overflow", "hidden");
|
|
982
|
+
_$insert(_el$34, _$createComponent(Show, {
|
|
965
983
|
get when() {
|
|
966
984
|
return activeGoals().length > 0;
|
|
967
985
|
},
|
|
968
986
|
get fallback() {
|
|
969
987
|
return (() => {
|
|
970
|
-
var _el$
|
|
971
|
-
_$insertNode(_el$
|
|
972
|
-
_$insertNode(_el$
|
|
973
|
-
_$setProp(_el$
|
|
974
|
-
_$setProp(_el$
|
|
975
|
-
_$insertNode(_el$
|
|
976
|
-
_$insertNode(_el$
|
|
977
|
-
_$insertNode(_el$
|
|
978
|
-
_$insertNode(_el$
|
|
979
|
-
_$insertNode(_el$
|
|
980
|
-
_$insertNode(_el$
|
|
981
|
-
_$insertNode(_el$
|
|
982
|
-
_$insertNode(_el$
|
|
983
|
-
_$insertNode(_el$
|
|
984
|
-
_$insertNode(_el$
|
|
985
|
-
_$insertNode(_el$
|
|
986
|
-
_$insertNode(_el$
|
|
987
|
-
_$insertNode(_el$
|
|
988
|
-
_$insertNode(_el$
|
|
989
|
-
_$insertNode(_el$
|
|
990
|
-
_$insertNode(_el$
|
|
991
|
-
_$insertNode(_el$
|
|
992
|
-
_$insertNode(_el$
|
|
993
|
-
_$insertNode(_el$
|
|
994
|
-
_$insertNode(_el$
|
|
988
|
+
var _el$46 = _$createElement("box"), _el$47 = _$createElement("text"), _el$48 = _$createElement("span"), _el$50 = _$createElement("span"), _el$52 = _$createElement("span"), _el$54 = _$createElement("text"), _el$55 = _$createElement("span"), _el$57 = _$createElement("span"), _el$59 = _$createElement("span"), _el$61 = _$createElement("span"), _el$63 = _$createElement("span"), _el$65 = _$createElement("span"), _el$67 = _$createElement("span");
|
|
989
|
+
_$insertNode(_el$46, _el$47);
|
|
990
|
+
_$insertNode(_el$46, _el$54);
|
|
991
|
+
_$setProp(_el$46, "flexDirection", "column");
|
|
992
|
+
_$setProp(_el$46, "gap", 1);
|
|
993
|
+
_$insertNode(_el$47, _el$48);
|
|
994
|
+
_$insertNode(_el$47, _el$50);
|
|
995
|
+
_$insertNode(_el$47, _el$52);
|
|
996
|
+
_$insertNode(_el$48, _$createTextNode(`No active goals.`));
|
|
997
|
+
_$insertNode(_el$50, _$createTextNode(` /goal`));
|
|
998
|
+
_$insertNode(_el$52, _$createTextNode(` in parent chat to create one.`));
|
|
999
|
+
_$insertNode(_el$54, _el$55);
|
|
1000
|
+
_$insertNode(_el$54, _el$57);
|
|
1001
|
+
_$insertNode(_el$54, _el$59);
|
|
1002
|
+
_$insertNode(_el$54, _el$61);
|
|
1003
|
+
_$insertNode(_el$54, _el$63);
|
|
1004
|
+
_$insertNode(_el$54, _el$65);
|
|
1005
|
+
_$insertNode(_el$54, _el$67);
|
|
1006
|
+
_$insertNode(_el$55, _$createTextNode(`Tip: `));
|
|
1007
|
+
_$insertNode(_el$57, _$createTextNode(`:send`));
|
|
1008
|
+
_$insertNode(_el$59, _$createTextNode(` to steer the worker \xB7 `));
|
|
1009
|
+
_$insertNode(_el$61, _$createTextNode(`o`));
|
|
1010
|
+
_$insertNode(_el$63, _$createTextNode(` to open child \xB7 `));
|
|
1011
|
+
_$insertNode(_el$65, _$createTextNode(`:force`));
|
|
1012
|
+
_$insertNode(_el$67, _$createTextNode(` to complete manually.`));
|
|
995
1013
|
_$effect((_p$) => {
|
|
996
|
-
var _v$
|
|
1014
|
+
var _v$22 = {
|
|
997
1015
|
fg: theme().textMuted
|
|
998
|
-
}, _v$22 = {
|
|
999
|
-
fg: theme().accent
|
|
1000
1016
|
}, _v$23 = {
|
|
1001
|
-
fg: theme().
|
|
1017
|
+
fg: theme().accent
|
|
1002
1018
|
}, _v$24 = {
|
|
1003
1019
|
fg: theme().textMuted
|
|
1004
1020
|
}, _v$25 = {
|
|
1005
|
-
fg: theme().warning
|
|
1006
|
-
}, _v$26 = {
|
|
1007
1021
|
fg: theme().textMuted
|
|
1008
|
-
}, _v$
|
|
1022
|
+
}, _v$26 = {
|
|
1009
1023
|
fg: theme().warning
|
|
1010
|
-
}, _v$
|
|
1024
|
+
}, _v$27 = {
|
|
1011
1025
|
fg: theme().textMuted
|
|
1012
|
-
}, _v$
|
|
1026
|
+
}, _v$28 = {
|
|
1013
1027
|
fg: theme().warning
|
|
1028
|
+
}, _v$29 = {
|
|
1029
|
+
fg: theme().textMuted
|
|
1014
1030
|
}, _v$30 = {
|
|
1031
|
+
fg: theme().warning
|
|
1032
|
+
}, _v$31 = {
|
|
1015
1033
|
fg: theme().textMuted
|
|
1016
1034
|
};
|
|
1017
|
-
_v$
|
|
1018
|
-
_v$
|
|
1019
|
-
_v$
|
|
1020
|
-
_v$
|
|
1021
|
-
_v$
|
|
1022
|
-
_v$
|
|
1023
|
-
_v$
|
|
1024
|
-
_v$
|
|
1025
|
-
_v$
|
|
1026
|
-
_v$
|
|
1035
|
+
_v$22 !== _p$.e && (_p$.e = _$setProp(_el$48, "style", _v$22, _p$.e));
|
|
1036
|
+
_v$23 !== _p$.t && (_p$.t = _$setProp(_el$50, "style", _v$23, _p$.t));
|
|
1037
|
+
_v$24 !== _p$.a && (_p$.a = _$setProp(_el$52, "style", _v$24, _p$.a));
|
|
1038
|
+
_v$25 !== _p$.o && (_p$.o = _$setProp(_el$55, "style", _v$25, _p$.o));
|
|
1039
|
+
_v$26 !== _p$.i && (_p$.i = _$setProp(_el$57, "style", _v$26, _p$.i));
|
|
1040
|
+
_v$27 !== _p$.n && (_p$.n = _$setProp(_el$59, "style", _v$27, _p$.n));
|
|
1041
|
+
_v$28 !== _p$.s && (_p$.s = _$setProp(_el$61, "style", _v$28, _p$.s));
|
|
1042
|
+
_v$29 !== _p$.h && (_p$.h = _$setProp(_el$63, "style", _v$29, _p$.h));
|
|
1043
|
+
_v$30 !== _p$.r && (_p$.r = _$setProp(_el$65, "style", _v$30, _p$.r));
|
|
1044
|
+
_v$31 !== _p$.d && (_p$.d = _$setProp(_el$67, "style", _v$31, _p$.d));
|
|
1027
1045
|
return _p$;
|
|
1028
1046
|
}, {
|
|
1029
1047
|
e: undefined,
|
|
@@ -1037,7 +1055,7 @@ function LoopDashboard(props) {
|
|
|
1037
1055
|
r: undefined,
|
|
1038
1056
|
d: undefined
|
|
1039
1057
|
});
|
|
1040
|
-
return _el$
|
|
1058
|
+
return _el$46;
|
|
1041
1059
|
})();
|
|
1042
1060
|
},
|
|
1043
1061
|
get children() {
|
|
@@ -1060,102 +1078,102 @@ function LoopDashboard(props) {
|
|
|
1060
1078
|
return phaseColor(runtime().phase || "idle", theme());
|
|
1061
1079
|
};
|
|
1062
1080
|
return (() => {
|
|
1063
|
-
var _el$
|
|
1064
|
-
_$insertNode(_el$
|
|
1065
|
-
_$setProp(_el$
|
|
1066
|
-
_$setProp(_el$
|
|
1067
|
-
_$setProp(_el$
|
|
1068
|
-
_$insertNode(_el$
|
|
1069
|
-
_$insertNode(_el$
|
|
1070
|
-
_$insertNode(_el$
|
|
1071
|
-
_$insert(_el$
|
|
1081
|
+
var _el$69 = _$createElement("box"), _el$70 = _$createElement("text"), _el$71 = _$createElement("span"), _el$72 = _$createElement("span"), _el$74 = _$createElement("span");
|
|
1082
|
+
_$insertNode(_el$69, _el$70);
|
|
1083
|
+
_$setProp(_el$69, "flexDirection", "row");
|
|
1084
|
+
_$setProp(_el$69, "paddingLeft", 1);
|
|
1085
|
+
_$setProp(_el$69, "paddingRight", 1);
|
|
1086
|
+
_$insertNode(_el$70, _el$71);
|
|
1087
|
+
_$insertNode(_el$70, _el$72);
|
|
1088
|
+
_$insertNode(_el$70, _el$74);
|
|
1089
|
+
_$insert(_el$71, (() => {
|
|
1072
1090
|
var _c$2 = _$memo(() => !!isActive());
|
|
1073
1091
|
return () => _c$2() ? `\u25B6 ${statusIcon(goal.status)} ${goal.name}` : ` ${statusIcon(goal.status)} ${goal.name}`;
|
|
1074
1092
|
})());
|
|
1075
|
-
_$insertNode(_el$
|
|
1076
|
-
_$insert(_el$
|
|
1077
|
-
_$insert(_el$
|
|
1093
|
+
_$insertNode(_el$72, _$createTextNode(` \u2502 `));
|
|
1094
|
+
_$insert(_el$74, () => goal.status.toUpperCase());
|
|
1095
|
+
_$insert(_el$70, (() => {
|
|
1078
1096
|
var _c$3 = _$memo(() => !!runtime());
|
|
1079
1097
|
return () => _c$3() && [(() => {
|
|
1080
|
-
var _el$
|
|
1081
|
-
_$insertNode(_el$
|
|
1082
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1098
|
+
var _el$75 = _$createElement("span");
|
|
1099
|
+
_$insertNode(_el$75, _$createTextNode(` \u2502 `));
|
|
1100
|
+
_$effect((_$p) => _$setProp(_el$75, "style", {
|
|
1083
1101
|
fg: theme().textMuted
|
|
1084
1102
|
}, _$p));
|
|
1085
|
-
return _el$
|
|
1103
|
+
return _el$75;
|
|
1086
1104
|
})(), (() => {
|
|
1087
|
-
var _el$
|
|
1088
|
-
_$insertNode(_el$
|
|
1089
|
-
_$insert(_el$
|
|
1105
|
+
var _el$77 = _$createElement("span"), _el$78 = _$createTextNode(` `);
|
|
1106
|
+
_$insertNode(_el$77, _el$78);
|
|
1107
|
+
_$insert(_el$77, (() => {
|
|
1090
1108
|
var _c$6 = _$memo(() => runtime().phase === "running");
|
|
1091
1109
|
return () => _c$6() ? runningFrame() : phaseIcon(runtime().phase);
|
|
1092
|
-
})(), _el$
|
|
1093
|
-
_$insert(_el$
|
|
1094
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1110
|
+
})(), _el$78);
|
|
1111
|
+
_$insert(_el$77, () => runtime().phase.toUpperCase(), null);
|
|
1112
|
+
_$effect((_$p) => _$setProp(_el$77, "style", {
|
|
1095
1113
|
fg: turnColor(),
|
|
1096
1114
|
bold: runtime().phase === "running"
|
|
1097
1115
|
}, _$p));
|
|
1098
|
-
return _el$
|
|
1116
|
+
return _el$77;
|
|
1099
1117
|
})(), (() => {
|
|
1100
|
-
var _el$
|
|
1101
|
-
_$insertNode(_el$
|
|
1102
|
-
_$insert(_el$
|
|
1103
|
-
_$insert(_el$
|
|
1104
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1118
|
+
var _el$79 = _$createElement("span"), _el$80 = _$createTextNode(` `);
|
|
1119
|
+
_$insertNode(_el$79, _el$80);
|
|
1120
|
+
_$insert(_el$79, () => runtime().turnCount, null);
|
|
1121
|
+
_$insert(_el$79, maxTurns ? `/${maxTurns}` : "", null);
|
|
1122
|
+
_$effect((_$p) => _$setProp(_el$79, "style", {
|
|
1105
1123
|
fg: turnColor()
|
|
1106
1124
|
}, _$p));
|
|
1107
|
-
return _el$
|
|
1125
|
+
return _el$79;
|
|
1108
1126
|
})(), (() => {
|
|
1109
|
-
var _el$
|
|
1110
|
-
_$insertNode(_el$
|
|
1111
|
-
_$insert(_el$
|
|
1112
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1127
|
+
var _el$81 = _$createElement("span"), _el$82 = _$createTextNode(` `);
|
|
1128
|
+
_$insertNode(_el$81, _el$82);
|
|
1129
|
+
_$insert(_el$81, () => ageLabel(runtime().lastProgressAt || runtime().lastRunAt, clock()), null);
|
|
1130
|
+
_$effect((_$p) => _$setProp(_el$81, "style", {
|
|
1113
1131
|
fg: theme().textMuted
|
|
1114
1132
|
}, _$p));
|
|
1115
|
-
return _el$
|
|
1133
|
+
return _el$81;
|
|
1116
1134
|
})()];
|
|
1117
1135
|
})(), null);
|
|
1118
|
-
_$insert(_el$
|
|
1136
|
+
_$insert(_el$70, (() => {
|
|
1119
1137
|
var _c$4 = _$memo(() => !!(runtime() && runtime().consecutiveFailures > 0));
|
|
1120
1138
|
return () => _c$4() && (() => {
|
|
1121
|
-
var _el$
|
|
1122
|
-
_$insertNode(_el$
|
|
1123
|
-
_$insertNode(_el$
|
|
1124
|
-
_$insert(_el$
|
|
1125
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1139
|
+
var _el$83 = _$createElement("span"), _el$84 = _$createTextNode(` \u2502 \u26A0 `), _el$85 = _$createTextNode(` fail`);
|
|
1140
|
+
_$insertNode(_el$83, _el$84);
|
|
1141
|
+
_$insertNode(_el$83, _el$85);
|
|
1142
|
+
_$insert(_el$83, () => runtime().consecutiveFailures, _el$85);
|
|
1143
|
+
_$effect((_$p) => _$setProp(_el$83, "style", {
|
|
1126
1144
|
fg: theme().error,
|
|
1127
1145
|
bold: true
|
|
1128
1146
|
}, _$p));
|
|
1129
|
-
return _el$
|
|
1147
|
+
return _el$83;
|
|
1130
1148
|
})();
|
|
1131
1149
|
})(), null);
|
|
1132
|
-
_$insert(_el$
|
|
1150
|
+
_$insert(_el$70, (() => {
|
|
1133
1151
|
var _c$5 = _$memo(() => !!(runtime() && (runtime().noProgressCount || 0) > 0));
|
|
1134
1152
|
return () => _c$5() && (() => {
|
|
1135
|
-
var _el$
|
|
1136
|
-
_$insertNode(_el$
|
|
1137
|
-
_$insertNode(_el$
|
|
1138
|
-
_$insert(_el$
|
|
1139
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1153
|
+
var _el$86 = _$createElement("span"), _el$87 = _$createTextNode(` \u2502 `), _el$88 = _$createTextNode(` no-progress`);
|
|
1154
|
+
_$insertNode(_el$86, _el$87);
|
|
1155
|
+
_$insertNode(_el$86, _el$88);
|
|
1156
|
+
_$insert(_el$86, () => runtime().noProgressCount, _el$88);
|
|
1157
|
+
_$effect((_$p) => _$setProp(_el$86, "style", {
|
|
1140
1158
|
fg: theme().warning
|
|
1141
1159
|
}, _$p));
|
|
1142
|
-
return _el$
|
|
1160
|
+
return _el$86;
|
|
1143
1161
|
})();
|
|
1144
1162
|
})(), null);
|
|
1145
1163
|
_$effect((_p$) => {
|
|
1146
|
-
var _v$
|
|
1164
|
+
var _v$32 = isActive() ? theme().backgroundElement : undefined, _v$33 = {
|
|
1147
1165
|
fg: statusColor(goal.status, theme()),
|
|
1148
1166
|
bold: isActive()
|
|
1149
|
-
}, _v$33 = {
|
|
1150
|
-
fg: theme().textMuted
|
|
1151
1167
|
}, _v$34 = {
|
|
1168
|
+
fg: theme().textMuted
|
|
1169
|
+
}, _v$35 = {
|
|
1152
1170
|
fg: statusColor(goal.status, theme()),
|
|
1153
1171
|
bold: true
|
|
1154
1172
|
};
|
|
1155
|
-
_v$
|
|
1156
|
-
_v$
|
|
1157
|
-
_v$
|
|
1158
|
-
_v$
|
|
1173
|
+
_v$32 !== _p$.e && (_p$.e = _$setProp(_el$69, "backgroundColor", _v$32, _p$.e));
|
|
1174
|
+
_v$33 !== _p$.t && (_p$.t = _$setProp(_el$71, "style", _v$33, _p$.t));
|
|
1175
|
+
_v$34 !== _p$.a && (_p$.a = _$setProp(_el$72, "style", _v$34, _p$.a));
|
|
1176
|
+
_v$35 !== _p$.o && (_p$.o = _$setProp(_el$74, "style", _v$35, _p$.o));
|
|
1159
1177
|
return _p$;
|
|
1160
1178
|
}, {
|
|
1161
1179
|
e: undefined,
|
|
@@ -1163,172 +1181,172 @@ function LoopDashboard(props) {
|
|
|
1163
1181
|
a: undefined,
|
|
1164
1182
|
o: undefined
|
|
1165
1183
|
});
|
|
1166
|
-
return _el$
|
|
1184
|
+
return _el$69;
|
|
1167
1185
|
})();
|
|
1168
1186
|
}
|
|
1169
1187
|
});
|
|
1170
1188
|
}
|
|
1171
1189
|
}));
|
|
1172
|
-
_$insert(_el$
|
|
1190
|
+
_$insert(_el$29, _$createComponent(Show, {
|
|
1173
1191
|
get when() {
|
|
1174
1192
|
return selectedGoal();
|
|
1175
1193
|
},
|
|
1176
1194
|
children: (goal) => {
|
|
1177
1195
|
const rt = () => state()?.runtimes.find((r) => r.goalID === goal().id);
|
|
1178
1196
|
return (() => {
|
|
1179
|
-
var _el$
|
|
1180
|
-
`), _el$
|
|
1181
|
-
_$insertNode(_el$85, _el$86);
|
|
1182
|
-
_$setProp(_el$85, "flexDirection", "column");
|
|
1183
|
-
_$setProp(_el$85, "border", true);
|
|
1184
|
-
_$setProp(_el$85, "padding", 1);
|
|
1185
|
-
_$setProp(_el$85, "flexShrink", 0);
|
|
1186
|
-
_$setProp(_el$85, "maxHeight", 10);
|
|
1187
|
-
_$insertNode(_el$86, _el$87);
|
|
1188
|
-
_$insertNode(_el$86, _el$89);
|
|
1189
|
-
_$insertNode(_el$86, _el$91);
|
|
1190
|
-
_$insertNode(_el$86, _el$92);
|
|
1191
|
-
_$insertNode(_el$87, _el$88);
|
|
1192
|
-
_$insert(_el$87, () => statusIcon(goal().status), _el$88);
|
|
1193
|
-
_$insert(_el$87, () => goal().name, null);
|
|
1197
|
+
var _el$89 = _$createElement("box"), _el$90 = _$createElement("text"), _el$91 = _$createElement("span"), _el$92 = _$createTextNode(` `), _el$93 = _$createElement("span"), _el$94 = _$createTextNode(` `), _el$95 = _$createTextNode(`
|
|
1198
|
+
`), _el$96 = _$createElement("span");
|
|
1194
1199
|
_$insertNode(_el$89, _el$90);
|
|
1195
|
-
_$
|
|
1196
|
-
_$
|
|
1200
|
+
_$setProp(_el$89, "flexDirection", "column");
|
|
1201
|
+
_$setProp(_el$89, "border", true);
|
|
1202
|
+
_$setProp(_el$89, "padding", 1);
|
|
1203
|
+
_$setProp(_el$89, "flexShrink", 0);
|
|
1204
|
+
_$setProp(_el$89, "maxHeight", 10);
|
|
1205
|
+
_$insertNode(_el$90, _el$91);
|
|
1206
|
+
_$insertNode(_el$90, _el$93);
|
|
1207
|
+
_$insertNode(_el$90, _el$95);
|
|
1208
|
+
_$insertNode(_el$90, _el$96);
|
|
1209
|
+
_$insertNode(_el$91, _el$92);
|
|
1210
|
+
_$insert(_el$91, () => statusIcon(goal().status), _el$92);
|
|
1211
|
+
_$insert(_el$91, () => goal().name, null);
|
|
1212
|
+
_$insertNode(_el$93, _el$94);
|
|
1213
|
+
_$insert(_el$93, () => goal().status.toUpperCase(), null);
|
|
1214
|
+
_$insert(_el$90, (() => {
|
|
1197
1215
|
var _c$7 = _$memo(() => !!rt());
|
|
1198
1216
|
return () => _c$7() && [(() => {
|
|
1199
|
-
var _el$
|
|
1200
|
-
_$insertNode(_el$
|
|
1201
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1217
|
+
var _el$97 = _$createElement("span");
|
|
1218
|
+
_$insertNode(_el$97, _$createTextNode(` \u2502 `));
|
|
1219
|
+
_$effect((_$p) => _$setProp(_el$97, "style", {
|
|
1202
1220
|
fg: theme().textMuted
|
|
1203
1221
|
}, _$p));
|
|
1204
|
-
return _el$
|
|
1222
|
+
return _el$97;
|
|
1205
1223
|
})(), (() => {
|
|
1206
|
-
var _el$
|
|
1207
|
-
_$insertNode(_el$
|
|
1208
|
-
_$insert(_el$
|
|
1209
|
-
_$insert(_el$
|
|
1210
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1224
|
+
var _el$99 = _$createElement("span"), _el$100 = _$createTextNode(` `);
|
|
1225
|
+
_$insertNode(_el$99, _el$100);
|
|
1226
|
+
_$insert(_el$99, () => phaseIcon(rt().phase), _el$100);
|
|
1227
|
+
_$insert(_el$99, () => rt().phase, null);
|
|
1228
|
+
_$effect((_$p) => _$setProp(_el$99, "style", {
|
|
1211
1229
|
fg: phaseColor(rt().phase, theme()),
|
|
1212
1230
|
bold: true
|
|
1213
1231
|
}, _$p));
|
|
1214
|
-
return _el$
|
|
1232
|
+
return _el$99;
|
|
1215
1233
|
})(), (() => {
|
|
1216
|
-
var _el$
|
|
1217
|
-
_$insertNode(_el$
|
|
1218
|
-
_$insert(_el$
|
|
1219
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1234
|
+
var _el$101 = _$createElement("span"), _el$102 = _$createTextNode(` turn `);
|
|
1235
|
+
_$insertNode(_el$101, _el$102);
|
|
1236
|
+
_$insert(_el$101, () => rt().turnCount, null);
|
|
1237
|
+
_$effect((_$p) => _$setProp(_el$101, "style", {
|
|
1220
1238
|
fg: theme().textMuted
|
|
1221
1239
|
}, _$p));
|
|
1222
|
-
return _el$
|
|
1240
|
+
return _el$101;
|
|
1223
1241
|
})()];
|
|
1224
|
-
})(), _el$
|
|
1225
|
-
_$insert(_el$
|
|
1226
|
-
_$insert(_el$
|
|
1242
|
+
})(), _el$95);
|
|
1243
|
+
_$insert(_el$96, () => goal().objective.slice(0, 160));
|
|
1244
|
+
_$insert(_el$90, (() => {
|
|
1227
1245
|
var _c$8 = _$memo(() => !!goal().lastProgress);
|
|
1228
1246
|
return () => _c$8() && [(() => {
|
|
1229
|
-
var _el$
|
|
1247
|
+
var _el$103 = _$createElement("span"), _el$104 = _$createTextNode(`
|
|
1230
1248
|
\u2714 `);
|
|
1231
|
-
_$insertNode(_el$
|
|
1232
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1249
|
+
_$insertNode(_el$103, _el$104);
|
|
1250
|
+
_$effect((_$p) => _$setProp(_el$103, "style", {
|
|
1233
1251
|
fg: theme().success
|
|
1234
1252
|
}, _$p));
|
|
1235
|
-
return _el$
|
|
1253
|
+
return _el$103;
|
|
1236
1254
|
})(), (() => {
|
|
1237
|
-
var _el$
|
|
1238
|
-
_$insert(_el$
|
|
1239
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1255
|
+
var _el$106 = _$createElement("span");
|
|
1256
|
+
_$insert(_el$106, () => goal().lastProgress.summary.slice(0, 100));
|
|
1257
|
+
_$effect((_$p) => _$setProp(_el$106, "style", {
|
|
1240
1258
|
fg: theme().text
|
|
1241
1259
|
}, _$p));
|
|
1242
|
-
return _el$
|
|
1260
|
+
return _el$106;
|
|
1243
1261
|
})(), (() => {
|
|
1244
|
-
var _el$
|
|
1245
|
-
_$insertNode(_el$
|
|
1246
|
-
_$insert(_el$
|
|
1247
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1262
|
+
var _el$107 = _$createElement("span"), _el$108 = _$createTextNode(` \u2192 `);
|
|
1263
|
+
_$insertNode(_el$107, _el$108);
|
|
1264
|
+
_$insert(_el$107, () => goal().lastProgress.next?.slice(0, 60) || "", null);
|
|
1265
|
+
_$effect((_$p) => _$setProp(_el$107, "style", {
|
|
1248
1266
|
fg: theme().textMuted
|
|
1249
1267
|
}, _$p));
|
|
1250
|
-
return _el$
|
|
1268
|
+
return _el$107;
|
|
1251
1269
|
})()];
|
|
1252
1270
|
})(), null);
|
|
1253
|
-
_$insert(_el$
|
|
1271
|
+
_$insert(_el$90, (() => {
|
|
1254
1272
|
var _c$9 = _$memo(() => !!goal().blocker);
|
|
1255
1273
|
return () => _c$9() && [(() => {
|
|
1256
|
-
var _el$
|
|
1274
|
+
var _el$109 = _$createElement("span"), _el$110 = _$createTextNode(`
|
|
1257
1275
|
\u2716 blocked: `);
|
|
1258
|
-
_$insertNode(_el$
|
|
1259
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1276
|
+
_$insertNode(_el$109, _el$110);
|
|
1277
|
+
_$effect((_$p) => _$setProp(_el$109, "style", {
|
|
1260
1278
|
fg: theme().error,
|
|
1261
1279
|
bold: true
|
|
1262
1280
|
}, _$p));
|
|
1263
|
-
return _el$
|
|
1281
|
+
return _el$109;
|
|
1264
1282
|
})(), (() => {
|
|
1265
|
-
var _el$
|
|
1266
|
-
_$insert(_el$
|
|
1267
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1283
|
+
var _el$112 = _$createElement("span");
|
|
1284
|
+
_$insert(_el$112, () => goal().blocker.reason.slice(0, 140));
|
|
1285
|
+
_$effect((_$p) => _$setProp(_el$112, "style", {
|
|
1268
1286
|
fg: theme().error
|
|
1269
1287
|
}, _$p));
|
|
1270
|
-
return _el$
|
|
1288
|
+
return _el$112;
|
|
1271
1289
|
})(), (() => {
|
|
1272
|
-
var _el$
|
|
1273
|
-
_$insertNode(_el$
|
|
1274
|
-
_$insert(_el$
|
|
1275
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1290
|
+
var _el$113 = _$createElement("span"), _el$114 = _$createTextNode(` \u2014 `);
|
|
1291
|
+
_$insertNode(_el$113, _el$114);
|
|
1292
|
+
_$insert(_el$113, () => goal().blocker.needed.slice(0, 60), null);
|
|
1293
|
+
_$effect((_$p) => _$setProp(_el$113, "style", {
|
|
1276
1294
|
fg: theme().textMuted
|
|
1277
1295
|
}, _$p));
|
|
1278
|
-
return _el$
|
|
1296
|
+
return _el$113;
|
|
1279
1297
|
})()];
|
|
1280
1298
|
})(), null);
|
|
1281
|
-
_$insert(_el$
|
|
1299
|
+
_$insert(_el$90, (() => {
|
|
1282
1300
|
var _c$0 = _$memo(() => !!goal().config.artifactDir);
|
|
1283
1301
|
return () => _c$0() && [(() => {
|
|
1284
|
-
var _el$
|
|
1302
|
+
var _el$115 = _$createElement("span"), _el$116 = _$createTextNode(`
|
|
1285
1303
|
\uD83D\uDCC1 `);
|
|
1286
|
-
_$insertNode(_el$
|
|
1287
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1304
|
+
_$insertNode(_el$115, _el$116);
|
|
1305
|
+
_$effect((_$p) => _$setProp(_el$115, "style", {
|
|
1288
1306
|
fg: theme().accent
|
|
1289
1307
|
}, _$p));
|
|
1290
|
-
return _el$
|
|
1308
|
+
return _el$115;
|
|
1291
1309
|
})(), (() => {
|
|
1292
|
-
var _el$
|
|
1293
|
-
_$insert(_el$
|
|
1294
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1310
|
+
var _el$118 = _$createElement("span");
|
|
1311
|
+
_$insert(_el$118, () => String(goal().config.artifactDir).replace(String(props.directory), "."));
|
|
1312
|
+
_$effect((_$p) => _$setProp(_el$118, "style", {
|
|
1295
1313
|
fg: theme().textMuted
|
|
1296
1314
|
}, _$p));
|
|
1297
|
-
return _el$
|
|
1315
|
+
return _el$118;
|
|
1298
1316
|
})()];
|
|
1299
1317
|
})(), null);
|
|
1300
|
-
_$insert(_el$
|
|
1318
|
+
_$insert(_el$90, (() => {
|
|
1301
1319
|
var _c$1 = _$memo(() => !!rt()?.lastError);
|
|
1302
1320
|
return () => _c$1() && [(() => {
|
|
1303
|
-
var _el$
|
|
1321
|
+
var _el$119 = _$createElement("span"), _el$120 = _$createTextNode(`
|
|
1304
1322
|
\u26A0 `);
|
|
1305
|
-
_$insertNode(_el$
|
|
1306
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1323
|
+
_$insertNode(_el$119, _el$120);
|
|
1324
|
+
_$effect((_$p) => _$setProp(_el$119, "style", {
|
|
1307
1325
|
fg: theme().error
|
|
1308
1326
|
}, _$p));
|
|
1309
|
-
return _el$
|
|
1327
|
+
return _el$119;
|
|
1310
1328
|
})(), (() => {
|
|
1311
|
-
var _el$
|
|
1312
|
-
_$insert(_el$
|
|
1313
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1329
|
+
var _el$122 = _$createElement("span");
|
|
1330
|
+
_$insert(_el$122, () => rt().lastError.slice(0, 120));
|
|
1331
|
+
_$effect((_$p) => _$setProp(_el$122, "style", {
|
|
1314
1332
|
fg: theme().error
|
|
1315
1333
|
}, _$p));
|
|
1316
|
-
return _el$
|
|
1334
|
+
return _el$122;
|
|
1317
1335
|
})()];
|
|
1318
1336
|
})(), null);
|
|
1319
1337
|
_$effect((_p$) => {
|
|
1320
|
-
var _v$
|
|
1338
|
+
var _v$36 = borderColorForStatus(goal().status, theme()), _v$37 = {
|
|
1321
1339
|
fg: statusColor(goal().status, theme()),
|
|
1322
1340
|
bold: true
|
|
1323
|
-
}, _v$37 = {
|
|
1324
|
-
fg: statusColor(goal().status, theme())
|
|
1325
1341
|
}, _v$38 = {
|
|
1342
|
+
fg: statusColor(goal().status, theme())
|
|
1343
|
+
}, _v$39 = {
|
|
1326
1344
|
fg: theme().text
|
|
1327
1345
|
};
|
|
1328
|
-
_v$
|
|
1329
|
-
_v$
|
|
1330
|
-
_v$
|
|
1331
|
-
_v$
|
|
1346
|
+
_v$36 !== _p$.e && (_p$.e = _$setProp(_el$89, "borderColor", _v$36, _p$.e));
|
|
1347
|
+
_v$37 !== _p$.t && (_p$.t = _$setProp(_el$91, "style", _v$37, _p$.t));
|
|
1348
|
+
_v$38 !== _p$.a && (_p$.a = _$setProp(_el$93, "style", _v$38, _p$.a));
|
|
1349
|
+
_v$39 !== _p$.o && (_p$.o = _$setProp(_el$96, "style", _v$39, _p$.o));
|
|
1332
1350
|
return _p$;
|
|
1333
1351
|
}, {
|
|
1334
1352
|
e: undefined,
|
|
@@ -1336,65 +1354,65 @@ function LoopDashboard(props) {
|
|
|
1336
1354
|
a: undefined,
|
|
1337
1355
|
o: undefined
|
|
1338
1356
|
});
|
|
1339
|
-
return _el$
|
|
1357
|
+
return _el$89;
|
|
1340
1358
|
})();
|
|
1341
1359
|
}
|
|
1342
1360
|
}), null);
|
|
1343
|
-
_$insert(_el$
|
|
1361
|
+
_$insert(_el$29, _$createComponent(Show, {
|
|
1344
1362
|
get when() {
|
|
1345
1363
|
return _$memo(() => !!showLogs())() && events().length > 0;
|
|
1346
1364
|
},
|
|
1347
1365
|
get children() {
|
|
1348
|
-
var _el$
|
|
1349
|
-
_$insertNode(_el$
|
|
1350
|
-
_$setProp(_el$
|
|
1351
|
-
_$setProp(_el$
|
|
1352
|
-
_$setProp(_el$
|
|
1353
|
-
_$setProp(_el$
|
|
1354
|
-
_$setProp(_el$
|
|
1355
|
-
_$setProp(_el$
|
|
1356
|
-
_$insertNode(_el$
|
|
1357
|
-
_$insertNode(_el$
|
|
1358
|
-
_$insertNode(_el$
|
|
1359
|
-
_$insertNode(_el$
|
|
1360
|
-
_$insert(_el$
|
|
1366
|
+
var _el$35 = _$createElement("box"), _el$36 = _$createElement("text"), _el$37 = _$createElement("span"), _el$39 = _$createElement("span");
|
|
1367
|
+
_$insertNode(_el$35, _el$36);
|
|
1368
|
+
_$setProp(_el$35, "flexDirection", "column");
|
|
1369
|
+
_$setProp(_el$35, "border", true);
|
|
1370
|
+
_$setProp(_el$35, "padding", 1);
|
|
1371
|
+
_$setProp(_el$35, "maxHeight", 7);
|
|
1372
|
+
_$setProp(_el$35, "flexShrink", 0);
|
|
1373
|
+
_$setProp(_el$35, "overflow", "hidden");
|
|
1374
|
+
_$insertNode(_el$36, _el$37);
|
|
1375
|
+
_$insertNode(_el$36, _el$39);
|
|
1376
|
+
_$insertNode(_el$37, _$createTextNode(`\u25C8 Recent Events`));
|
|
1377
|
+
_$insertNode(_el$39, _$createTextNode(` \u2014 :logs to hide`));
|
|
1378
|
+
_$insert(_el$35, _$createComponent(For, {
|
|
1361
1379
|
get each() {
|
|
1362
1380
|
return events().slice(-10);
|
|
1363
1381
|
},
|
|
1364
1382
|
children: (ev) => (() => {
|
|
1365
|
-
var _el$
|
|
1366
|
-
_$insertNode(_el$
|
|
1367
|
-
_$insertNode(_el$
|
|
1368
|
-
_$insert(_el$
|
|
1369
|
-
_$insertNode(_el$
|
|
1370
|
-
_$insert(_el$
|
|
1371
|
-
_$insert(_el$
|
|
1383
|
+
var _el$123 = _$createElement("text"), _el$124 = _$createElement("span"), _el$125 = _$createElement("span"), _el$126 = _$createTextNode(` `);
|
|
1384
|
+
_$insertNode(_el$123, _el$124);
|
|
1385
|
+
_$insertNode(_el$123, _el$125);
|
|
1386
|
+
_$insert(_el$124, () => String(ev.type));
|
|
1387
|
+
_$insertNode(_el$125, _el$126);
|
|
1388
|
+
_$insert(_el$125, () => ev.goalID?.slice(0, 8), null);
|
|
1389
|
+
_$insert(_el$123, (() => {
|
|
1372
1390
|
var _c$10 = _$memo(() => !!ev.summary);
|
|
1373
1391
|
return () => _c$10() && (() => {
|
|
1374
|
-
var _el$
|
|
1375
|
-
_$insertNode(_el$
|
|
1376
|
-
_$insert(_el$
|
|
1377
|
-
_$effect((_$p) => _$setProp(_el$
|
|
1392
|
+
var _el$127 = _$createElement("span"), _el$128 = _$createTextNode(` \u2014 `);
|
|
1393
|
+
_$insertNode(_el$127, _el$128);
|
|
1394
|
+
_$insert(_el$127, () => String(ev.summary).slice(0, 60), null);
|
|
1395
|
+
_$effect((_$p) => _$setProp(_el$127, "style", {
|
|
1378
1396
|
fg: theme().text
|
|
1379
1397
|
}, _$p));
|
|
1380
|
-
return _el$
|
|
1398
|
+
return _el$127;
|
|
1381
1399
|
})();
|
|
1382
1400
|
})(), null);
|
|
1383
1401
|
_$effect((_p$) => {
|
|
1384
|
-
var _v$
|
|
1402
|
+
var _v$40 = {
|
|
1385
1403
|
fg: eventColor(String(ev.type), theme()),
|
|
1386
1404
|
bold: true
|
|
1387
|
-
}, _v$
|
|
1405
|
+
}, _v$41 = {
|
|
1388
1406
|
fg: theme().textMuted
|
|
1389
1407
|
};
|
|
1390
|
-
_v$
|
|
1391
|
-
_v$
|
|
1408
|
+
_v$40 !== _p$.e && (_p$.e = _$setProp(_el$124, "style", _v$40, _p$.e));
|
|
1409
|
+
_v$41 !== _p$.t && (_p$.t = _$setProp(_el$125, "style", _v$41, _p$.t));
|
|
1392
1410
|
return _p$;
|
|
1393
1411
|
}, {
|
|
1394
1412
|
e: undefined,
|
|
1395
1413
|
t: undefined
|
|
1396
1414
|
});
|
|
1397
|
-
return _el$
|
|
1415
|
+
return _el$123;
|
|
1398
1416
|
})()
|
|
1399
1417
|
}), null);
|
|
1400
1418
|
_$effect((_p$) => {
|
|
@@ -1404,42 +1422,42 @@ function LoopDashboard(props) {
|
|
|
1404
1422
|
}, _v$3 = {
|
|
1405
1423
|
fg: theme().textMuted
|
|
1406
1424
|
};
|
|
1407
|
-
_v$ !== _p$.e && (_p$.e = _$setProp(_el$
|
|
1408
|
-
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$
|
|
1409
|
-
_v$3 !== _p$.a && (_p$.a = _$setProp(_el$
|
|
1425
|
+
_v$ !== _p$.e && (_p$.e = _$setProp(_el$35, "borderColor", _v$, _p$.e));
|
|
1426
|
+
_v$2 !== _p$.t && (_p$.t = _$setProp(_el$37, "style", _v$2, _p$.t));
|
|
1427
|
+
_v$3 !== _p$.a && (_p$.a = _$setProp(_el$39, "style", _v$3, _p$.a));
|
|
1410
1428
|
return _p$;
|
|
1411
1429
|
}, {
|
|
1412
1430
|
e: undefined,
|
|
1413
1431
|
t: undefined,
|
|
1414
1432
|
a: undefined
|
|
1415
1433
|
});
|
|
1416
|
-
return _el$
|
|
1434
|
+
return _el$35;
|
|
1417
1435
|
}
|
|
1418
1436
|
}), null);
|
|
1419
|
-
_$insertNode(_el$
|
|
1420
|
-
_$insertNode(_el$
|
|
1421
|
-
_$setProp(_el$
|
|
1422
|
-
_$setProp(_el$
|
|
1423
|
-
_$setProp(_el$
|
|
1424
|
-
_$setProp(_el$
|
|
1425
|
-
_$setProp(_el$
|
|
1426
|
-
_$setProp(_el$
|
|
1427
|
-
_$setProp(_el$
|
|
1428
|
-
_$insertNode(_el$
|
|
1429
|
-
_$insert(_el$
|
|
1437
|
+
_$insertNode(_el$41, _el$42);
|
|
1438
|
+
_$insertNode(_el$41, _el$44);
|
|
1439
|
+
_$setProp(_el$41, "flexDirection", "row");
|
|
1440
|
+
_$setProp(_el$41, "border", true);
|
|
1441
|
+
_$setProp(_el$41, "paddingLeft", 1);
|
|
1442
|
+
_$setProp(_el$41, "paddingRight", 1);
|
|
1443
|
+
_$setProp(_el$41, "flexShrink", 0);
|
|
1444
|
+
_$setProp(_el$41, "height", 3);
|
|
1445
|
+
_$setProp(_el$41, "gap", 1);
|
|
1446
|
+
_$insertNode(_el$42, _el$43);
|
|
1447
|
+
_$insert(_el$43, () => mode() === "insert" ? " INSERT \uE0B1" : " NORMAL ");
|
|
1430
1448
|
_$use((el) => {
|
|
1431
1449
|
inputEl = el;
|
|
1432
1450
|
focusInput();
|
|
1433
|
-
}, _el$
|
|
1434
|
-
_$setProp(_el$
|
|
1435
|
-
_$setProp(_el$
|
|
1451
|
+
}, _el$44);
|
|
1452
|
+
_$setProp(_el$44, "flexGrow", 1);
|
|
1453
|
+
_$setProp(_el$44, "onInput", (v) => {
|
|
1436
1454
|
debugLog("onInput", JSON.stringify(v), "mode", mode());
|
|
1437
1455
|
if (mode() === "insert")
|
|
1438
1456
|
setCommandInput(v);
|
|
1439
1457
|
else if (inputEl?.value)
|
|
1440
1458
|
inputEl.value = "";
|
|
1441
1459
|
});
|
|
1442
|
-
_$setProp(_el$
|
|
1460
|
+
_$setProp(_el$44, "onKeyDown", (evt) => {
|
|
1443
1461
|
const name = evt.name || "";
|
|
1444
1462
|
const seq = evt.sequence || "";
|
|
1445
1463
|
debugLog("input onKeyDown", `name=${name} seq=${JSON.stringify(seq)} mode=${mode()} value=${JSON.stringify(commandInput())}`);
|
|
@@ -1490,11 +1508,14 @@ function LoopDashboard(props) {
|
|
|
1490
1508
|
bold: true
|
|
1491
1509
|
}, _v$13 = {
|
|
1492
1510
|
fg: theme().textMuted
|
|
1493
|
-
}, _v$14 =
|
|
1511
|
+
}, _v$14 = {
|
|
1512
|
+
fg: theme().error,
|
|
1513
|
+
bold: true
|
|
1514
|
+
}, _v$15 = mode() === "insert" ? theme().warning : theme().border, _v$16 = {
|
|
1494
1515
|
fg: mode() === "insert" ? theme().warning : theme().success,
|
|
1495
1516
|
bold: true,
|
|
1496
1517
|
bg: mode() === "insert" ? theme().backgroundElement : undefined
|
|
1497
|
-
}, _v$
|
|
1518
|
+
}, _v$17 = mode() === "insert" ? ":send hello or :force done --evidence proof or :open (Ctrl+N: normal)" : statusText() || "Press : to send/command \xB7 ? help \xB7 o open child \xB7 q close", _v$18 = theme().textMuted, _v$19 = theme().primary, _v$20 = theme().text, _v$21 = theme().background;
|
|
1498
1519
|
_v$4 !== _p$.e && (_p$.e = _$setProp(_el$2, "borderColor", _v$4, _p$.e));
|
|
1499
1520
|
_v$5 !== _p$.t && (_p$.t = _$setProp(_el$5, "style", _v$5, _p$.t));
|
|
1500
1521
|
_v$6 !== _p$.a && (_p$.a = _$setProp(_el$7, "style", _v$6, _p$.a));
|
|
@@ -1507,13 +1528,14 @@ function LoopDashboard(props) {
|
|
|
1507
1528
|
_v$11 !== _p$.d && (_p$.d = _$setProp(_el$20, "style", _v$11, _p$.d));
|
|
1508
1529
|
_v$12 !== _p$.l && (_p$.l = _$setProp(_el$22, "style", _v$12, _p$.l));
|
|
1509
1530
|
_v$13 !== _p$.u && (_p$.u = _$setProp(_el$23, "style", _v$13, _p$.u));
|
|
1510
|
-
_v$14 !== _p$.c && (_p$.c = _$setProp(_el$
|
|
1511
|
-
_v$15 !== _p$.w && (_p$.w = _$setProp(_el$
|
|
1512
|
-
_v$16 !== _p$.m && (_p$.m = _$setProp(_el$
|
|
1513
|
-
_v$17 !== _p$.f && (_p$.f = _$setProp(_el$
|
|
1514
|
-
_v$18 !== _p$.y && (_p$.y = _$setProp(_el$
|
|
1515
|
-
_v$19 !== _p$.g && (_p$.g = _$setProp(_el$
|
|
1516
|
-
_v$20 !== _p$.p && (_p$.p = _$setProp(_el$
|
|
1531
|
+
_v$14 !== _p$.c && (_p$.c = _$setProp(_el$27, "style", _v$14, _p$.c));
|
|
1532
|
+
_v$15 !== _p$.w && (_p$.w = _$setProp(_el$41, "borderColor", _v$15, _p$.w));
|
|
1533
|
+
_v$16 !== _p$.m && (_p$.m = _$setProp(_el$43, "style", _v$16, _p$.m));
|
|
1534
|
+
_v$17 !== _p$.f && (_p$.f = _$setProp(_el$44, "placeholder", _v$17, _p$.f));
|
|
1535
|
+
_v$18 !== _p$.y && (_p$.y = _$setProp(_el$44, "placeholderColor", _v$18, _p$.y));
|
|
1536
|
+
_v$19 !== _p$.g && (_p$.g = _$setProp(_el$44, "cursorColor", _v$19, _p$.g));
|
|
1537
|
+
_v$20 !== _p$.p && (_p$.p = _$setProp(_el$44, "focusedTextColor", _v$20, _p$.p));
|
|
1538
|
+
_v$21 !== _p$.b && (_p$.b = _$setProp(_el$44, "focusedBackgroundColor", _v$21, _p$.b));
|
|
1517
1539
|
return _p$;
|
|
1518
1540
|
}, {
|
|
1519
1541
|
e: undefined,
|
|
@@ -1534,7 +1556,8 @@ function LoopDashboard(props) {
|
|
|
1534
1556
|
f: undefined,
|
|
1535
1557
|
y: undefined,
|
|
1536
1558
|
g: undefined,
|
|
1537
|
-
p: undefined
|
|
1559
|
+
p: undefined,
|
|
1560
|
+
b: undefined
|
|
1538
1561
|
});
|
|
1539
1562
|
return _el$;
|
|
1540
1563
|
})();
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@bojackduy/opencode-loopd",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.3.0",
|
|
5
5
|
"description": "Codex-inspired background goal engine for OpenCode — autonomous subagents, engine-driven loop, child worker sessions and modal TUI dashboard. Like Claude Code loop for OpenCode.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"license": "AGPL-3.0-only",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"type": "git",
|
|
11
11
|
"url": "git+https://github.com/bojackduy/opencode-loopd.git"
|
|
12
12
|
},
|
|
13
|
-
"homepage": "https://github.
|
|
13
|
+
"homepage": "https://bojackduy.github.io/opencode-loopd/",
|
|
14
14
|
"bugs": {
|
|
15
15
|
"url": "https://github.com/bojackduy/opencode-loopd/issues"
|
|
16
16
|
},
|