@cortexkit/opencode-magic-context 0.34.0 → 0.34.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +20 -3
  2. package/dist/config/migrate-experimental.d.ts +2 -1
  3. package/dist/config/migrate-experimental.d.ts.map +1 -1
  4. package/dist/config/project-security.d.ts +2 -0
  5. package/dist/config/project-security.d.ts.map +1 -1
  6. package/dist/config/schema/magic-context.d.ts +8 -15
  7. package/dist/config/schema/magic-context.d.ts.map +1 -1
  8. package/dist/features/magic-context/dreamer/classify.d.ts +1 -0
  9. package/dist/features/magic-context/dreamer/classify.d.ts.map +1 -1
  10. package/dist/features/magic-context/dreamer/map-memories.d.ts +1 -0
  11. package/dist/features/magic-context/dreamer/map-memories.d.ts.map +1 -1
  12. package/dist/features/magic-context/dreamer/refresh-primers.d.ts +1 -0
  13. package/dist/features/magic-context/dreamer/refresh-primers.d.ts.map +1 -1
  14. package/dist/features/magic-context/dreamer/storage-dream-runs.d.ts +2 -0
  15. package/dist/features/magic-context/dreamer/storage-dream-runs.d.ts.map +1 -1
  16. package/dist/features/magic-context/dreamer/storage-task-schedule.d.ts +9 -5
  17. package/dist/features/magic-context/dreamer/storage-task-schedule.d.ts.map +1 -1
  18. package/dist/features/magic-context/dreamer/task-executor.d.ts +4 -1
  19. package/dist/features/magic-context/dreamer/task-executor.d.ts.map +1 -1
  20. package/dist/features/magic-context/dreamer/task-gates.d.ts +19 -1
  21. package/dist/features/magic-context/dreamer/task-gates.d.ts.map +1 -1
  22. package/dist/features/magic-context/dreamer/task-registry.d.ts +28 -0
  23. package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
  24. package/dist/features/magic-context/dreamer/task-scheduler.d.ts +7 -1
  25. package/dist/features/magic-context/dreamer/task-scheduler.d.ts.map +1 -1
  26. package/dist/features/magic-context/dreamer/verify-gate.d.ts +8 -2
  27. package/dist/features/magic-context/dreamer/verify-gate.d.ts.map +1 -1
  28. package/dist/features/magic-context/dreamer/verify.d.ts +3 -0
  29. package/dist/features/magic-context/dreamer/verify.d.ts.map +1 -1
  30. package/dist/features/magic-context/fail-closed-block.d.ts +2 -0
  31. package/dist/features/magic-context/fail-closed-block.d.ts.map +1 -1
  32. package/dist/features/magic-context/memory/storage-memory.d.ts.map +1 -1
  33. package/dist/features/magic-context/migrations.d.ts +23 -1
  34. package/dist/features/magic-context/migrations.d.ts.map +1 -1
  35. package/dist/features/magic-context/mural/compress-cues.d.ts +8 -3
  36. package/dist/features/magic-context/mural/compress-cues.d.ts.map +1 -1
  37. package/dist/features/magic-context/mural/cue-validation.d.ts +7 -7
  38. package/dist/features/magic-context/mural/cue-validation.d.ts.map +1 -1
  39. package/dist/features/magic-context/mural/storage-mural-cues.d.ts +13 -3
  40. package/dist/features/magic-context/mural/storage-mural-cues.d.ts.map +1 -1
  41. package/dist/features/magic-context/storage-db.d.ts +24 -5
  42. package/dist/features/magic-context/storage-db.d.ts.map +1 -1
  43. package/dist/features/magic-context/storage-meta-persisted.d.ts +1 -0
  44. package/dist/features/magic-context/storage-meta-persisted.d.ts.map +1 -1
  45. package/dist/features/magic-context/storage.d.ts +1 -1
  46. package/dist/features/magic-context/storage.d.ts.map +1 -1
  47. package/dist/hooks/magic-context/command-handler.d.ts +1 -0
  48. package/dist/hooks/magic-context/command-handler.d.ts.map +1 -1
  49. package/dist/hooks/magic-context/event-handler.d.ts +1 -0
  50. package/dist/hooks/magic-context/event-handler.d.ts.map +1 -1
  51. package/dist/hooks/magic-context/execute-status.d.ts +5 -1
  52. package/dist/hooks/magic-context/execute-status.d.ts.map +1 -1
  53. package/dist/hooks/magic-context/hook.d.ts +3 -5
  54. package/dist/hooks/magic-context/hook.d.ts.map +1 -1
  55. package/dist/hooks/magic-context/inject-compartments.d.ts +1 -1
  56. package/dist/hooks/magic-context/live-session-state.d.ts +3 -0
  57. package/dist/hooks/magic-context/live-session-state.d.ts.map +1 -1
  58. package/dist/hooks/magic-context/rust-mode-transform.d.ts +16 -0
  59. package/dist/hooks/magic-context/rust-mode-transform.d.ts.map +1 -1
  60. package/dist/hooks/magic-context/transform-context-state.d.ts +1 -0
  61. package/dist/hooks/magic-context/transform-context-state.d.ts.map +1 -1
  62. package/dist/hooks/magic-context/transform-postprocess-phase.d.ts +1 -1
  63. package/dist/hooks/magic-context/transform.d.ts +3 -2
  64. package/dist/hooks/magic-context/transform.d.ts.map +1 -1
  65. package/dist/{index-56yjaeb2.js → index-2y0ybv5x.js} +11 -1
  66. package/dist/{index-s0mdn690.js → index-z70pxrq1.js} +232 -49
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +599 -131
  69. package/dist/plugin/dream-timer.d.ts +4 -2
  70. package/dist/plugin/dream-timer.d.ts.map +1 -1
  71. package/dist/plugin/hooks/create-session-hooks.d.ts +1 -1
  72. package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
  73. package/dist/plugin/rpc-handlers.d.ts.map +1 -1
  74. package/dist/{recomp-orchestrator-8e82vmvb.js → recomp-orchestrator-6cd3nrt7.js} +1 -1
  75. package/dist/shared/rpc-types.d.ts +5 -0
  76. package/dist/shared/rpc-types.d.ts.map +1 -1
  77. package/dist/shared/rpc-utils.d.ts +19 -0
  78. package/dist/shared/rpc-utils.d.ts.map +1 -1
  79. package/dist/shared/tui-runtime-specifiers.d.ts +20 -0
  80. package/dist/shared/tui-runtime-specifiers.d.ts.map +1 -0
  81. package/dist/{task-config-5nx3qfz8.js → task-config-gbp7r23g.js} +1 -1
  82. package/package.json +2 -2
  83. package/src/config/index.test.ts +32 -0
  84. package/src/config/migrate-experimental.test.ts +41 -0
  85. package/src/config/migrate-experimental.ts +36 -10
  86. package/src/config/project-security.test.ts +22 -0
  87. package/src/config/project-security.ts +23 -0
  88. package/src/config/schema/magic-context.test.ts +2 -1
  89. package/src/config/schema/magic-context.ts +12 -23
  90. package/src/features/magic-context/dreamer/task-registry.ts +47 -0
  91. package/src/shared/rpc-types.ts +9 -0
  92. package/src/shared/rpc-utils.test.ts +157 -0
  93. package/src/shared/rpc-utils.ts +137 -0
  94. package/src/shared/tui-runtime-specifiers.ts +32 -0
  95. package/src/tui/slots/sidebar-content.tsx +50 -8
  96. package/src/tui/tui-compiled-runtime-imports.test.ts +151 -0
  97. package/src/tui-compiled/slots/sidebar-content.tsx +234 -145
@@ -7,7 +7,7 @@ import { insert as _$insert } from "opentui:runtime-module:%40opentui%2Fsolid";
7
7
  import { setProp as _$setProp } from "opentui:runtime-module:%40opentui%2Fsolid";
8
8
  import { createElement as _$createElement } from "opentui:runtime-module:%40opentui%2Fsolid";
9
9
  /** @jsxImportSource @opentui/solid */
10
- import { Show, createEffect, createMemo, createSignal, on, onCleanup } from "opentui:runtime-module:solid-js";
10
+ import { For, Show, createEffect, createMemo, createSignal, on, onCleanup } from "opentui:runtime-module:solid-js";
11
11
  import packageJson from "../../../package.json";
12
12
  import { badgeTextColor } from "../badge-contrast";
13
13
  import { loadSidebarSnapshot } from "../data/context-db";
@@ -767,54 +767,77 @@ const SidebarContent = props => {
767
767
  })();
768
768
  })(), null);
769
769
  _$insert(_el$25, (() => {
770
- var _c$3 = _$memo(() => !!(s() && s().inputTokens > 0));
770
+ var _c$3 = _$memo(() => !!s()?.dreamerProgress);
771
771
  return () => _c$3() && (() => {
772
- var _el$35 = _$createElement("box");
773
- _$setProp(_el$35, "flexDirection", "column");
774
- _$insert(_el$35, (() => {
775
- var _c$6 = _$memo(() => (s()?.contextLimit ?? 0) > 0);
776
- return () => _c$6() && (() => {
777
- var _el$36 = _$createElement("box"),
778
- _el$37 = _$createElement("text"),
779
- _el$38 = _$createTextNode(` / `);
780
- _$insertNode(_el$36, _el$37);
781
- _$setProp(_el$36, "width", "100%");
782
- _$setProp(_el$36, "flexDirection", "row");
783
- _$setProp(_el$36, "justifyContent", "space-between");
784
- _$insert(_el$36, (() => {
785
- var _c$7 = _$memo(() => !!compactionOff());
786
- return () => _c$7() ? (() => {
787
- var _el$39 = _$createElement("text"),
788
- _el$40 = _$createElement("b");
789
- _$insertNode(_el$39, _el$40);
790
- _$insert(_el$40, () => nativeCompactionContextLabel(s()));
791
- _$effect(_$p => _$setProp(_el$39, "fg", contextSummaryColor(), _$p));
792
- return _el$39;
772
+ var _el$35 = _$createElement("box"),
773
+ _el$36 = _$createElement("text"),
774
+ _el$37 = _$createTextNode(`Dreamer `),
775
+ _el$38 = _$createTextNode(`: `),
776
+ _el$39 = _$createTextNode(`/`),
777
+ _el$40 = _$createTextNode(` processed`);
778
+ _$insertNode(_el$35, _el$36);
779
+ _$setProp(_el$35, "marginTop", 1);
780
+ _$setProp(_el$35, "width", "100%");
781
+ _$insertNode(_el$36, _el$37);
782
+ _$insertNode(_el$36, _el$38);
783
+ _$insertNode(_el$36, _el$39);
784
+ _$insertNode(_el$36, _el$40);
785
+ _$insert(_el$36, () => s().dreamerProgress.task, _el$38);
786
+ _$insert(_el$36, () => s().dreamerProgress.processed, _el$39);
787
+ _$insert(_el$36, () => s().dreamerProgress.total, _el$40);
788
+ _$effect(_$p => _$setProp(_el$36, "fg", props.theme.warning, _$p));
789
+ return _el$35;
790
+ })();
791
+ })(), null);
792
+ _$insert(_el$25, (() => {
793
+ var _c$4 = _$memo(() => !!(s() && s().inputTokens > 0));
794
+ return () => _c$4() && (() => {
795
+ var _el$41 = _$createElement("box");
796
+ _$setProp(_el$41, "flexDirection", "column");
797
+ _$insert(_el$41, (() => {
798
+ var _c$7 = _$memo(() => (s()?.contextLimit ?? 0) > 0);
799
+ return () => _c$7() && (() => {
800
+ var _el$42 = _$createElement("box"),
801
+ _el$43 = _$createElement("text"),
802
+ _el$44 = _$createTextNode(` / `);
803
+ _$insertNode(_el$42, _el$43);
804
+ _$setProp(_el$42, "width", "100%");
805
+ _$setProp(_el$42, "flexDirection", "row");
806
+ _$setProp(_el$42, "justifyContent", "space-between");
807
+ _$insert(_el$42, (() => {
808
+ var _c$8 = _$memo(() => !!compactionOff());
809
+ return () => _c$8() ? (() => {
810
+ var _el$45 = _$createElement("text"),
811
+ _el$46 = _$createElement("b");
812
+ _$insertNode(_el$45, _el$46);
813
+ _$insert(_el$46, () => nativeCompactionContextLabel(s()));
814
+ _$effect(_$p => _$setProp(_el$45, "fg", contextSummaryColor(), _$p));
815
+ return _el$45;
793
816
  })() : (() => {
794
- var _el$41 = _$createElement("text"),
795
- _el$42 = _$createElement("b"),
796
- _el$43 = _$createTextNode(`%`),
797
- _el$44 = _$createTextNode(` / `),
798
- _el$45 = _$createTextNode(`%`);
799
- _$insertNode(_el$41, _el$42);
800
- _$insertNode(_el$41, _el$44);
801
- _$insertNode(_el$41, _el$45);
802
- _$insertNode(_el$42, _el$43);
803
- _$insert(_el$42, () => s().usagePercentage.toFixed(1), _el$43);
804
- _$insert(_el$41, () => formatThresholdPercent(s().executeThreshold), _el$45);
805
- _$insert(_el$41, () => s().executeThresholdClamped ? "*" : "", null);
806
- _$effect(_$p => _$setProp(_el$41, "fg", contextSummaryColor(), _$p));
807
- return _el$41;
817
+ var _el$47 = _$createElement("text"),
818
+ _el$48 = _$createElement("b"),
819
+ _el$49 = _$createTextNode(`%`),
820
+ _el$50 = _$createTextNode(` / `),
821
+ _el$51 = _$createTextNode(`%`);
822
+ _$insertNode(_el$47, _el$48);
823
+ _$insertNode(_el$47, _el$50);
824
+ _$insertNode(_el$47, _el$51);
825
+ _$insertNode(_el$48, _el$49);
826
+ _$insert(_el$48, () => s().usagePercentage.toFixed(1), _el$49);
827
+ _$insert(_el$47, () => formatThresholdPercent(s().executeThreshold), _el$51);
828
+ _$insert(_el$47, () => s().executeThresholdClamped ? "*" : "", null);
829
+ _$effect(_$p => _$setProp(_el$47, "fg", contextSummaryColor(), _$p));
830
+ return _el$47;
808
831
  })();
809
- })(), _el$37);
810
- _$insertNode(_el$37, _el$38);
811
- _$insert(_el$37, () => compactTokens(s().inputTokens), _el$38);
812
- _$insert(_el$37, () => compactTokens(s().contextLimit), null);
813
- _$effect(_$p => _$setProp(_el$37, "fg", contextSummaryColor(), _$p));
814
- return _el$36;
832
+ })(), _el$43);
833
+ _$insertNode(_el$43, _el$44);
834
+ _$insert(_el$43, () => compactTokens(s().inputTokens), _el$44);
835
+ _$insert(_el$43, () => compactTokens(s().contextLimit), null);
836
+ _$effect(_$p => _$setProp(_el$43, "fg", contextSummaryColor(), _$p));
837
+ return _el$42;
815
838
  })();
816
839
  })(), null);
817
- _$insert(_el$35, _$createComponent(TokenBreakdown, {
840
+ _$insert(_el$41, _$createComponent(TokenBreakdown, {
818
841
  get theme() {
819
842
  return props.theme;
820
843
  },
@@ -825,19 +848,19 @@ const SidebarContent = props => {
825
848
  return collapsed();
826
849
  }
827
850
  }), null);
828
- _$effect(_$p => _$setProp(_el$35, "marginTop", collapsed() ? 0 : 1, _$p));
829
- return _el$35;
851
+ _$effect(_$p => _$setProp(_el$41, "marginTop", collapsed() ? 0 : 1, _$p));
852
+ return _el$41;
830
853
  })();
831
854
  })(), null);
832
855
  _$insert(_el$25, (() => {
833
- var _c$4 = _$memo(() => !!collapsed());
834
- return () => _c$4() && (() => {
835
- var _el$46 = _$createElement("box");
836
- _$setProp(_el$46, "width", "100%");
837
- _$setProp(_el$46, "flexDirection", "column");
838
- _$insert(_el$46, (() => {
839
- var _c$8 = _$memo(() => !!compactionOff());
840
- return () => _c$8() ? compactionOffSidebarRows(s()).map(row => _$createComponent(StatRow, {
856
+ var _c$5 = _$memo(() => !!collapsed());
857
+ return () => _c$5() && (() => {
858
+ var _el$52 = _$createElement("box");
859
+ _$setProp(_el$52, "width", "100%");
860
+ _$setProp(_el$52, "flexDirection", "column");
861
+ _$insert(_el$52, (() => {
862
+ var _c$9 = _$memo(() => !!compactionOff());
863
+ return () => _c$9() ? compactionOffSidebarRows(s()).map(row => _$createComponent(StatRow, {
841
864
  get theme() {
842
865
  return props.theme;
843
866
  },
@@ -854,84 +877,117 @@ const SidebarContent = props => {
854
877
  return row.label !== "Memories";
855
878
  }
856
879
  })) : [(() => {
857
- var _el$47 = _$createElement("box"),
858
- _el$48 = _$createElement("text");
859
- _$insertNode(_el$47, _el$48);
860
- _$setProp(_el$47, "width", "100%");
861
- _$setProp(_el$47, "flexDirection", "row");
862
- _$setProp(_el$47, "justifyContent", "space-between");
863
- _$insertNode(_el$48, _$createTextNode(`Historian`));
864
- _$insert(_el$47, (() => {
865
- var _c$9 = _$memo(() => !!s()?.historianRunning);
866
- return () => _c$9() ? (() => {
867
- var _el$61 = _$createElement("text");
868
- _$insertNode(_el$61, _$createTextNode(`comparting ⟳`));
869
- _$effect(_$p => _$setProp(_el$61, "fg", props.theme.warning, _$p));
870
- return _el$61;
880
+ var _el$53 = _$createElement("box"),
881
+ _el$54 = _$createElement("text");
882
+ _$insertNode(_el$53, _el$54);
883
+ _$setProp(_el$53, "width", "100%");
884
+ _$setProp(_el$53, "flexDirection", "row");
885
+ _$setProp(_el$53, "justifyContent", "space-between");
886
+ _$insertNode(_el$54, _$createTextNode(`Historian`));
887
+ _$insert(_el$53, (() => {
888
+ var _c$0 = _$memo(() => !!s()?.historianRunning);
889
+ return () => _c$0() ? (() => {
890
+ var _el$67 = _$createElement("text");
891
+ _$insertNode(_el$67, _$createTextNode(`comparting ⟳`));
892
+ _$effect(_$p => _$setProp(_el$67, "fg", props.theme.warning, _$p));
893
+ return _el$67;
871
894
  })() : (() => {
872
- var _el$63 = _$createElement("text");
873
- _$insertNode(_el$63, _$createTextNode(`idle`));
874
- _$effect(_$p => _$setProp(_el$63, "fg", props.theme.textMuted, _$p));
875
- return _el$63;
895
+ var _el$69 = _$createElement("text");
896
+ _$insertNode(_el$69, _$createTextNode(`idle`));
897
+ _$effect(_$p => _$setProp(_el$69, "fg", props.theme.textMuted, _$p));
898
+ return _el$69;
876
899
  })();
877
900
  })(), null);
878
- _$effect(_$p => _$setProp(_el$48, "fg", props.theme.textMuted, _$p));
879
- return _el$47;
880
- })(), (() => {
881
- var _el$50 = _$createElement("box"),
882
- _el$51 = _$createElement("text"),
883
- _el$53 = _$createElement("text");
884
- _$insertNode(_el$50, _el$51);
885
- _$insertNode(_el$50, _el$53);
886
- _$setProp(_el$50, "width", "100%");
887
- _$setProp(_el$50, "flexDirection", "row");
888
- _$setProp(_el$50, "justifyContent", "space-between");
889
- _$insertNode(_el$51, _$createTextNode(`Memories`));
890
- _$insert(_el$53, (() => {
891
- var _c$0 = _$memo(() => (s()?.memoryBlockCount ?? 0) > 0);
892
- return () => _c$0() ? `${s().memoryBlockCount}/${s()?.memoryCount ?? 0}` : String(s()?.memoryCount ?? 0);
901
+ _$effect(_$p => _$setProp(_el$54, "fg", props.theme.textMuted, _$p));
902
+ return _el$53;
903
+ })(), _$createComponent(Show, {
904
+ get when() {
905
+ return s()?.dreamerProgress;
906
+ },
907
+ children: progress => (() => {
908
+ var _el$71 = _$createElement("box"),
909
+ _el$72 = _$createElement("text"),
910
+ _el$74 = _$createElement("text"),
911
+ _el$75 = _$createTextNode(` `),
912
+ _el$76 = _$createTextNode(`/`);
913
+ _$insertNode(_el$71, _el$72);
914
+ _$insertNode(_el$71, _el$74);
915
+ _$setProp(_el$71, "width", "100%");
916
+ _$setProp(_el$71, "flexDirection", "row");
917
+ _$setProp(_el$71, "justifyContent", "space-between");
918
+ _$insertNode(_el$72, _$createTextNode(`Dreamer`));
919
+ _$insertNode(_el$74, _el$75);
920
+ _$insertNode(_el$74, _el$76);
921
+ _$insert(_el$74, () => progress().task, _el$75);
922
+ _$insert(_el$74, () => progress().processed, _el$76);
923
+ _$insert(_el$74, () => progress().total, null);
924
+ _$effect(_p$ => {
925
+ var _v$19 = props.theme.textMuted,
926
+ _v$20 = props.theme.warning;
927
+ _v$19 !== _p$.e && (_p$.e = _$setProp(_el$72, "fg", _v$19, _p$.e));
928
+ _v$20 !== _p$.t && (_p$.t = _$setProp(_el$74, "fg", _v$20, _p$.t));
929
+ return _p$;
930
+ }, {
931
+ e: undefined,
932
+ t: undefined
933
+ });
934
+ return _el$71;
935
+ })()
936
+ }), (() => {
937
+ var _el$56 = _$createElement("box"),
938
+ _el$57 = _$createElement("text"),
939
+ _el$59 = _$createElement("text");
940
+ _$insertNode(_el$56, _el$57);
941
+ _$insertNode(_el$56, _el$59);
942
+ _$setProp(_el$56, "width", "100%");
943
+ _$setProp(_el$56, "flexDirection", "row");
944
+ _$setProp(_el$56, "justifyContent", "space-between");
945
+ _$insertNode(_el$57, _$createTextNode(`Memories`));
946
+ _$insert(_el$59, (() => {
947
+ var _c$1 = _$memo(() => (s()?.memoryBlockCount ?? 0) > 0);
948
+ return () => _c$1() ? `${s().memoryBlockCount}/${s()?.memoryCount ?? 0}` : String(s()?.memoryCount ?? 0);
893
949
  })());
894
950
  _$effect(_p$ => {
895
951
  var _v$15 = props.theme.textMuted,
896
952
  _v$16 = props.theme.textMuted;
897
- _v$15 !== _p$.e && (_p$.e = _$setProp(_el$51, "fg", _v$15, _p$.e));
898
- _v$16 !== _p$.t && (_p$.t = _$setProp(_el$53, "fg", _v$16, _p$.t));
953
+ _v$15 !== _p$.e && (_p$.e = _$setProp(_el$57, "fg", _v$15, _p$.e));
954
+ _v$16 !== _p$.t && (_p$.t = _$setProp(_el$59, "fg", _v$16, _p$.t));
899
955
  return _p$;
900
956
  }, {
901
957
  e: undefined,
902
958
  t: undefined
903
959
  });
904
- return _el$50;
960
+ return _el$56;
905
961
  })(), (() => {
906
- var _el$54 = _$createElement("box"),
907
- _el$55 = _$createElement("text"),
908
- _el$57 = _$createElement("text"),
909
- _el$58 = _$createTextNode(`C:`),
910
- _el$59 = _$createTextNode(` Q:`),
911
- _el$60 = _$createTextNode(` N:`);
912
- _$insertNode(_el$54, _el$55);
913
- _$insertNode(_el$54, _el$57);
914
- _$setProp(_el$54, "width", "100%");
915
- _$setProp(_el$54, "flexDirection", "row");
916
- _$setProp(_el$54, "justifyContent", "space-between");
917
- _$insertNode(_el$55, _$createTextNode(`Status`));
918
- _$insertNode(_el$57, _el$58);
919
- _$insertNode(_el$57, _el$59);
920
- _$insertNode(_el$57, _el$60);
921
- _$insert(_el$57, () => s()?.compartmentCount ?? 0, _el$59);
922
- _$insert(_el$57, () => s()?.pendingOpsCount ?? 0, _el$60);
923
- _$insert(_el$57, () => s()?.sessionNoteCount ?? 0, null);
962
+ var _el$60 = _$createElement("box"),
963
+ _el$61 = _$createElement("text"),
964
+ _el$63 = _$createElement("text"),
965
+ _el$64 = _$createTextNode(`C:`),
966
+ _el$65 = _$createTextNode(` Q:`),
967
+ _el$66 = _$createTextNode(` N:`);
968
+ _$insertNode(_el$60, _el$61);
969
+ _$insertNode(_el$60, _el$63);
970
+ _$setProp(_el$60, "width", "100%");
971
+ _$setProp(_el$60, "flexDirection", "row");
972
+ _$setProp(_el$60, "justifyContent", "space-between");
973
+ _$insertNode(_el$61, _$createTextNode(`Status`));
974
+ _$insertNode(_el$63, _el$64);
975
+ _$insertNode(_el$63, _el$65);
976
+ _$insertNode(_el$63, _el$66);
977
+ _$insert(_el$63, () => s()?.compartmentCount ?? 0, _el$65);
978
+ _$insert(_el$63, () => s()?.pendingOpsCount ?? 0, _el$66);
979
+ _$insert(_el$63, () => s()?.sessionNoteCount ?? 0, null);
924
980
  _$effect(_p$ => {
925
981
  var _v$17 = props.theme.textMuted,
926
982
  _v$18 = props.theme.textMuted;
927
- _v$17 !== _p$.e && (_p$.e = _$setProp(_el$55, "fg", _v$17, _p$.e));
928
- _v$18 !== _p$.t && (_p$.t = _$setProp(_el$57, "fg", _v$18, _p$.t));
983
+ _v$17 !== _p$.e && (_p$.e = _$setProp(_el$61, "fg", _v$17, _p$.e));
984
+ _v$18 !== _p$.t && (_p$.t = _$setProp(_el$63, "fg", _v$18, _p$.t));
929
985
  return _p$;
930
986
  }, {
931
987
  e: undefined,
932
988
  t: undefined
933
989
  });
934
- return _el$54;
990
+ return _el$60;
935
991
  })(), _$createComponent(Show, {
936
992
  get when() {
937
993
  return s()?.recompProgress;
@@ -946,38 +1002,38 @@ const SidebarContent = props => {
946
1002
  })
947
1003
  })];
948
1004
  })());
949
- return _el$46;
1005
+ return _el$52;
950
1006
  })();
951
1007
  })(), null);
952
1008
  _$insert(_el$25, (() => {
953
- var _c$5 = _$memo(() => !!!collapsed());
954
- return () => _c$5() && [_$memo(() => _$memo(() => !!(!compactionOff() && sections().historian))() && [(() => {
955
- var _el$65 = _$createElement("box"),
956
- _el$66 = _$createElement("text"),
957
- _el$67 = _$createElement("b");
958
- _$insertNode(_el$65, _el$66);
959
- _$setProp(_el$65, "width", "100%");
960
- _$setProp(_el$65, "marginTop", 1);
961
- _$setProp(_el$65, "flexDirection", "row");
962
- _$setProp(_el$65, "justifyContent", "space-between");
963
- _$insertNode(_el$66, _el$67);
964
- _$insertNode(_el$67, _$createTextNode(`Historian`));
965
- _$insert(_el$65, (() => {
966
- var _c$1 = _$memo(() => !!s()?.historianRunning);
967
- return () => _c$1() ? (() => {
968
- var _el$69 = _$createElement("text");
969
- _$insertNode(_el$69, _$createTextNode(`comparting ⟳`));
970
- _$effect(_$p => _$setProp(_el$69, "fg", props.theme.warning, _$p));
971
- return _el$69;
1009
+ var _c$6 = _$memo(() => !!!collapsed());
1010
+ return () => _c$6() && [_$memo(() => _$memo(() => !!(!compactionOff() && sections().historian))() && [(() => {
1011
+ var _el$77 = _$createElement("box"),
1012
+ _el$78 = _$createElement("text"),
1013
+ _el$79 = _$createElement("b");
1014
+ _$insertNode(_el$77, _el$78);
1015
+ _$setProp(_el$77, "width", "100%");
1016
+ _$setProp(_el$77, "marginTop", 1);
1017
+ _$setProp(_el$77, "flexDirection", "row");
1018
+ _$setProp(_el$77, "justifyContent", "space-between");
1019
+ _$insertNode(_el$78, _el$79);
1020
+ _$insertNode(_el$79, _$createTextNode(`Historian`));
1021
+ _$insert(_el$77, (() => {
1022
+ var _c$10 = _$memo(() => !!s()?.historianRunning);
1023
+ return () => _c$10() ? (() => {
1024
+ var _el$81 = _$createElement("text");
1025
+ _$insertNode(_el$81, _$createTextNode(`comparting ⟳`));
1026
+ _$effect(_$p => _$setProp(_el$81, "fg", props.theme.warning, _$p));
1027
+ return _el$81;
972
1028
  })() : (() => {
973
- var _el$71 = _$createElement("text");
974
- _$insertNode(_el$71, _$createTextNode(`idle`));
975
- _$effect(_$p => _$setProp(_el$71, "fg", props.theme.textMuted, _$p));
976
- return _el$71;
1029
+ var _el$83 = _$createElement("text");
1030
+ _$insertNode(_el$83, _$createTextNode(`idle`));
1031
+ _$effect(_$p => _$setProp(_el$83, "fg", props.theme.textMuted, _$p));
1032
+ return _el$83;
977
1033
  })();
978
1034
  })(), null);
979
- _$effect(_$p => _$setProp(_el$66, "fg", props.theme.text, _$p));
980
- return _el$65;
1035
+ _$effect(_$p => _$setProp(_el$78, "fg", props.theme.text, _$p));
1036
+ return _el$77;
981
1037
  })(), _$createComponent(StatRow, {
982
1038
  get theme() {
983
1039
  return props.theme;
@@ -1074,20 +1130,53 @@ const SidebarContent = props => {
1074
1130
  return `${s().readySmartNoteCount} ready`;
1075
1131
  },
1076
1132
  accent: true
1077
- }))])]), _$memo(() => _$memo(() => !!(sections().dreamer && s()?.lastDreamerRunAt))() && [_$createComponent(SectionHeader, {
1133
+ }))])]), _$memo(() => _$memo(() => !!(sections().dreamer && (s()?.lastDreamerRunAt || s()?.dreamerProgress)))() && [_$createComponent(SectionHeader, {
1078
1134
  get theme() {
1079
1135
  return props.theme;
1080
1136
  },
1081
1137
  title: "Dreamer"
1082
- }), _$createComponent(StatRow, {
1083
- get theme() {
1084
- return props.theme;
1138
+ }), _$createComponent(Show, {
1139
+ get when() {
1140
+ return s()?.dreamerProgress;
1085
1141
  },
1086
- label: "Last run",
1087
- get value() {
1088
- return relativeTime(s().lastDreamerRunAt);
1142
+ children: progress => _$createComponent(StatRow, {
1143
+ get theme() {
1144
+ return props.theme;
1145
+ },
1146
+ label: "Current",
1147
+ get value() {
1148
+ return `${progress().task} ${progress().processed}/${progress().total}`;
1149
+ },
1150
+ warning: true
1151
+ })
1152
+ }), _$createComponent(Show, {
1153
+ get when() {
1154
+ return s()?.lastDreamerRunAt;
1089
1155
  },
1090
- dim: true
1156
+ children: lastRunAt => _$createComponent(StatRow, {
1157
+ get theme() {
1158
+ return props.theme;
1159
+ },
1160
+ label: "Last run",
1161
+ get value() {
1162
+ return relativeTime(lastRunAt());
1163
+ },
1164
+ dim: true
1165
+ })
1166
+ }), _$createComponent(For, {
1167
+ get each() {
1168
+ return Object.entries(s()?.dreamerBacklog ?? {});
1169
+ },
1170
+ children: ([task, backlog]) => _$createComponent(StatRow, {
1171
+ get theme() {
1172
+ return props.theme;
1173
+ },
1174
+ label: task,
1175
+ get value() {
1176
+ return `${backlog.pending}/${backlog.total}`;
1177
+ },
1178
+ dim: true
1179
+ })
1091
1180
  })]), _$memo(() => _$memo(() => !!(sections().stats && s()?.totalInputTokens != null))() && [_$createComponent(SectionHeader, {
1092
1181
  get theme() {
1093
1182
  return props.theme;