@industry-theme/xterm-terminal-panel 0.4.6 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.css CHANGED
@@ -116,3 +116,53 @@
116
116
  --terminal-font-family: "Menlo", "Monaco", "Courier New", monospace;
117
117
  --terminal-font-size: 14px;
118
118
  }
119
+
120
+ @keyframes blinds-down {
121
+ 0% {
122
+ transform: translateY(-100%);
123
+ }
124
+
125
+ 100% {
126
+ transform: translateY(0);
127
+ }
128
+ }
129
+
130
+ @keyframes blinds-up {
131
+ 0% {
132
+ transform: translateY(0);
133
+ }
134
+
135
+ 100% {
136
+ transform: translateY(-100%);
137
+ }
138
+ }
139
+
140
+ @keyframes pulse {
141
+ 0%, 80%, 100% {
142
+ opacity: .3;
143
+ transform: scale(.8);
144
+ }
145
+
146
+ 40% {
147
+ opacity: 1;
148
+ transform: scale(1);
149
+ }
150
+ }
151
+
152
+ @keyframes spin {
153
+ from {
154
+ transform: rotate(0);
155
+ }
156
+
157
+ to {
158
+ transform: rotate(360deg);
159
+ }
160
+ }
161
+
162
+ .terminal-working-overlay {
163
+ animation: blinds-down .3s ease-out forwards;
164
+ }
165
+
166
+ .terminal-working-overlay.closing {
167
+ animation: blinds-up .3s ease-in forwards;
168
+ }
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { ThemedTerminal } from './src/components/ThemedTerminal';
2
2
  export { ThemedTerminalWithProvider } from './src/components/ThemedTerminalWithProvider';
3
+ export { WorkingOverlay } from './src/components/WorkingOverlay';
4
+ export type { WorkingOverlayProps } from './src/components/WorkingOverlay';
3
5
  export type { ThemedTerminalProps, ThemedTerminalRef, TerminalHeaderBadge, TerminalOverlayState, TerminalScrollPosition, LinkClickModifiers, } from './src/types/terminal.types';
4
6
  export { useThemedTerminal } from './src/hooks/useThemedTerminal';
5
7
  export type { UseThemedTerminalReturn } from './src/hooks/useThemedTerminal';
@@ -15,7 +17,7 @@ export { TabbedTerminalPanel } from './src/panels/TabbedTerminalPanel';
15
17
  export type { TerminalTabContentRef } from './src/panels/TabbedTerminalPanel';
16
18
  export { panels, onPackageLoad, onPackageUnload } from './src/panel-exports';
17
19
  export { terminalPanelTools, terminalPanelToolsMetadata, createTerminalSessionTool, writeToTerminalTool, closeTerminalSessionTool, clearTerminalTool, focusTerminalTool, } from './src/panel-exports';
18
- export type { PanelDefinition, PanelMetadata, PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, TerminalSessionInfo, CreateTerminalSessionOptions, TerminalPanelActions, TerminalEventType, TerminalLinkClickEvent, TerminalScope, TerminalPanelProps, TerminalTab, TabbedTerminalPanelProps, OwnershipStatus, OwnershipResult, PortReadyData, } from './src/panel-types';
20
+ export type { PanelDefinition, PanelMetadata, PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, TerminalSessionInfo, CreateTerminalSessionOptions, TerminalPanelActions, TerminalEventType, TerminalLinkClickEvent, TerminalScope, TerminalPanelProps, TerminalTab, TabbedTerminalPanelProps, OwnershipStatus, OwnershipResult, PortReadyData, TerminalWorkingState, TerminalActivityType, TerminalActivityChangedEvent, } from './src/panel-types';
19
21
  export { getTerminalSessions, getTerminalSession, isTerminalLoading, getRepositoryPath, getWorkspacePath, getTerminalDirectory, getTerminalSlice, } from './src/panel-types';
20
22
  export type { Theme } from '@principal-ade/industry-theme';
21
23
  export type { Terminal, ITheme as XTermTheme, ITerminalOptions } from '@xterm/xterm';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAGzF,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG5D,YAAY,EACV,GAAG,EACH,OAAO,EACP,SAAS,EACT,WAAW,EACX,cAAc,EACf,MAAM,iBAAiB,CAAC;AAIzB,YAAY,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,YAAY,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAO1F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAO3B,YAAY,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAG3D,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAG7E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG5D,YAAY,EACV,GAAG,EACH,OAAO,EACP,SAAS,EACT,WAAW,EACX,cAAc,EACf,MAAM,iBAAiB,CAAC;AAIzB,YAAY,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,YAAY,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAO1F,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG7E,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,YAAY,EACV,eAAe,EACf,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,wBAAwB,EACxB,eAAe,EACf,eAAe,EACf,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,GAC7B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAO3B,YAAY,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAG3D,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -65,8 +65,101 @@ function getTerminalCSSVariables(theme) {
65
65
  };
66
66
  }
67
67
 
68
+ // src/components/WorkingOverlay.tsx
69
+ import { jsx, jsxs } from "react/jsx-runtime";
70
+ var WorkingOverlay = ({
71
+ theme,
72
+ message = "Agent working...",
73
+ subtitle,
74
+ isClosing = false,
75
+ onCloseComplete
76
+ }) => {
77
+ const handleAnimationEnd = (e) => {
78
+ if (isClosing && e.animationName === "blinds-up" && onCloseComplete) {
79
+ onCloseComplete();
80
+ }
81
+ };
82
+ return /* @__PURE__ */ jsxs("div", {
83
+ className: `terminal-working-overlay${isClosing ? " closing" : ""}`,
84
+ onAnimationEnd: handleAnimationEnd,
85
+ style: {
86
+ position: "absolute",
87
+ top: 0,
88
+ left: 0,
89
+ right: 0,
90
+ bottom: 0,
91
+ display: "flex",
92
+ flexDirection: "column",
93
+ alignItems: "center",
94
+ justifyContent: "center",
95
+ backgroundColor: theme.colors.background,
96
+ gap: "12px",
97
+ padding: "32px",
98
+ zIndex: 10
99
+ },
100
+ children: [
101
+ /* @__PURE__ */ jsxs("div", {
102
+ style: {
103
+ display: "flex",
104
+ gap: "6px",
105
+ marginBottom: "8px"
106
+ },
107
+ children: [
108
+ /* @__PURE__ */ jsx("div", {
109
+ className: "working-dot",
110
+ style: {
111
+ width: "8px",
112
+ height: "8px",
113
+ borderRadius: "50%",
114
+ backgroundColor: theme.colors.primary,
115
+ animation: "pulse 1.4s ease-in-out infinite"
116
+ }
117
+ }),
118
+ /* @__PURE__ */ jsx("div", {
119
+ className: "working-dot",
120
+ style: {
121
+ width: "8px",
122
+ height: "8px",
123
+ borderRadius: "50%",
124
+ backgroundColor: theme.colors.primary,
125
+ animation: "pulse 1.4s ease-in-out 0.2s infinite"
126
+ }
127
+ }),
128
+ /* @__PURE__ */ jsx("div", {
129
+ className: "working-dot",
130
+ style: {
131
+ width: "8px",
132
+ height: "8px",
133
+ borderRadius: "50%",
134
+ backgroundColor: theme.colors.primary,
135
+ animation: "pulse 1.4s ease-in-out 0.4s infinite"
136
+ }
137
+ })
138
+ ]
139
+ }),
140
+ /* @__PURE__ */ jsx("div", {
141
+ style: {
142
+ fontSize: "15px",
143
+ fontWeight: "500",
144
+ color: theme.colors.text,
145
+ textAlign: "center"
146
+ },
147
+ children: message
148
+ }),
149
+ subtitle && /* @__PURE__ */ jsx("div", {
150
+ style: {
151
+ fontSize: "13px",
152
+ color: theme.colors.textSecondary,
153
+ textAlign: "center"
154
+ },
155
+ children: subtitle
156
+ })
157
+ ]
158
+ });
159
+ };
160
+
68
161
  // src/components/ThemedTerminal.tsx
69
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
162
+ import { jsx as jsx2, jsxs as jsxs2, Fragment } from "react/jsx-runtime";
70
163
  var SCROLL_DEBOUNCE_MS = 1000;
71
164
  var DEBUG_RESIZE = true;
72
165
  var ThemedTerminal = forwardRef(({
@@ -90,6 +183,9 @@ var ThemedTerminal = forwardRef(({
90
183
  onPopOut,
91
184
  onShortcut,
92
185
  overlayState,
186
+ isWorking = false,
187
+ workingMessage = "Agent working...",
188
+ workingSubtitle,
93
189
  cursorBlink = true,
94
190
  cursorStyle = "block",
95
191
  scrollback = 1e4,
@@ -100,6 +196,8 @@ var ThemedTerminal = forwardRef(({
100
196
  }, ref) => {
101
197
  const terminalRef = useRef(null);
102
198
  const [terminal, setTerminal] = useState(null);
199
+ const [showWorkingOverlay, setShowWorkingOverlay] = useState(isWorking);
200
+ const [isClosingOverlay, setIsClosingOverlay] = useState(false);
103
201
  const fitAddonRef = useRef(null);
104
202
  const searchAddonRef = useRef(null);
105
203
  const webglAddonRef = useRef(null);
@@ -111,6 +209,18 @@ var ThemedTerminal = forwardRef(({
111
209
  useEffect(() => {
112
210
  onShortcutRef.current = onShortcut;
113
211
  }, [onShortcut]);
212
+ useEffect(() => {
213
+ if (isWorking) {
214
+ setIsClosingOverlay(false);
215
+ setShowWorkingOverlay(true);
216
+ } else if (showWorkingOverlay) {
217
+ setIsClosingOverlay(true);
218
+ }
219
+ }, [isWorking]);
220
+ const handleOverlayCloseComplete = useCallback(() => {
221
+ setShowWorkingOverlay(false);
222
+ setIsClosingOverlay(false);
223
+ }, []);
114
224
  const handleDroppedContent = useCallback((content) => {
115
225
  if (terminal) {
116
226
  terminal.paste(content);
@@ -595,7 +705,7 @@ var ThemedTerminal = forwardRef(({
595
705
  }
596
706
  }
597
707
  };
598
- return /* @__PURE__ */ jsxs("div", {
708
+ return /* @__PURE__ */ jsxs2("div", {
599
709
  className,
600
710
  style: {
601
711
  display: "flex",
@@ -605,7 +715,7 @@ var ThemedTerminal = forwardRef(({
605
715
  backgroundColor: theme.colors.background
606
716
  },
607
717
  children: [
608
- !hideHeader && /* @__PURE__ */ jsxs("div", {
718
+ !hideHeader && /* @__PURE__ */ jsxs2("div", {
609
719
  style: {
610
720
  display: "flex",
611
721
  alignItems: "center",
@@ -615,14 +725,14 @@ var ThemedTerminal = forwardRef(({
615
725
  backgroundColor: theme.colors.backgroundSecondary || theme.colors.background
616
726
  },
617
727
  children: [
618
- /* @__PURE__ */ jsxs("div", {
728
+ /* @__PURE__ */ jsxs2("div", {
619
729
  style: { display: "flex", alignItems: "center", gap: "8px" },
620
730
  children: [
621
- /* @__PURE__ */ jsx(TerminalIcon, {
731
+ /* @__PURE__ */ jsx2(TerminalIcon, {
622
732
  size: 16,
623
733
  color: theme.colors.text
624
734
  }),
625
- /* @__PURE__ */ jsx("span", {
735
+ /* @__PURE__ */ jsx2("span", {
626
736
  style: {
627
737
  fontSize: "14px",
628
738
  color: theme.colors.text,
@@ -630,23 +740,23 @@ var ThemedTerminal = forwardRef(({
630
740
  },
631
741
  children: headerTitle
632
742
  }),
633
- headerSubtitle && /* @__PURE__ */ jsx("span", {
743
+ headerSubtitle && /* @__PURE__ */ jsx2("span", {
634
744
  style: {
635
745
  fontSize: "12px",
636
746
  color: theme.colors.textSecondary
637
747
  },
638
748
  children: headerSubtitle
639
749
  }),
640
- headerBadge && /* @__PURE__ */ jsxs(Fragment, {
750
+ headerBadge && /* @__PURE__ */ jsxs2(Fragment, {
641
751
  children: [
642
- /* @__PURE__ */ jsx("span", {
752
+ /* @__PURE__ */ jsx2("span", {
643
753
  style: {
644
754
  fontSize: "12px",
645
755
  color: theme.colors.textSecondary
646
756
  },
647
757
  children: "•"
648
758
  }),
649
- /* @__PURE__ */ jsx("span", {
759
+ /* @__PURE__ */ jsx2("span", {
650
760
  style: {
651
761
  fontSize: "12px",
652
762
  color: headerBadge.color || theme.colors.primary
@@ -657,10 +767,10 @@ var ThemedTerminal = forwardRef(({
657
767
  })
658
768
  ]
659
769
  }),
660
- /* @__PURE__ */ jsxs("div", {
770
+ /* @__PURE__ */ jsxs2("div", {
661
771
  style: { display: "flex", gap: "8px" },
662
772
  children: [
663
- onPopOut && /* @__PURE__ */ jsx("button", {
773
+ onPopOut && /* @__PURE__ */ jsx2("button", {
664
774
  type: "button",
665
775
  "aria-label": "Pop out terminal to new window",
666
776
  onClick: onPopOut,
@@ -685,11 +795,11 @@ var ThemedTerminal = forwardRef(({
685
795
  e.currentTarget.style.color = theme.colors.textSecondary;
686
796
  },
687
797
  title: "Open terminal in new window",
688
- children: /* @__PURE__ */ jsx(ExternalLink, {
798
+ children: /* @__PURE__ */ jsx2(ExternalLink, {
689
799
  size: 16
690
800
  })
691
801
  }),
692
- onClose && /* @__PURE__ */ jsx("button", {
802
+ onClose && /* @__PURE__ */ jsx2("button", {
693
803
  type: "button",
694
804
  "aria-label": "Hide terminal",
695
805
  onClick: onClose,
@@ -714,11 +824,11 @@ var ThemedTerminal = forwardRef(({
714
824
  e.currentTarget.style.color = theme.colors.textSecondary;
715
825
  },
716
826
  title: "Hide terminal (keeps session running)",
717
- children: /* @__PURE__ */ jsx(ChevronDown, {
827
+ children: /* @__PURE__ */ jsx2(ChevronDown, {
718
828
  size: 16
719
829
  })
720
830
  }),
721
- onDestroy && /* @__PURE__ */ jsx("button", {
831
+ onDestroy && /* @__PURE__ */ jsx2("button", {
722
832
  type: "button",
723
833
  "aria-label": "Close terminal session",
724
834
  onClick: handleDestroy,
@@ -743,7 +853,7 @@ var ThemedTerminal = forwardRef(({
743
853
  e.currentTarget.style.color = theme.colors.textSecondary;
744
854
  },
745
855
  title: "Close terminal session (terminate process)",
746
- children: /* @__PURE__ */ jsx(X, {
856
+ children: /* @__PURE__ */ jsx2(X, {
747
857
  size: 16
748
858
  })
749
859
  })
@@ -751,7 +861,7 @@ var ThemedTerminal = forwardRef(({
751
861
  })
752
862
  ]
753
863
  }),
754
- /* @__PURE__ */ jsxs("div", {
864
+ /* @__PURE__ */ jsxs2("div", {
755
865
  ref: terminalRef,
756
866
  ...dropZoneProps,
757
867
  className: `terminal-container-fix ${scrollbarStyle === "hidden" ? "hide-scrollbar" : scrollbarStyle === "thin" ? "thin-scrollbar" : scrollbarStyle === "auto-hide" ? "auto-hide-scrollbar" : ""}`,
@@ -764,7 +874,7 @@ var ThemedTerminal = forwardRef(({
764
874
  minHeight: 0
765
875
  },
766
876
  children: [
767
- isDragOver && /* @__PURE__ */ jsx("div", {
877
+ isDragOver && /* @__PURE__ */ jsx2("div", {
768
878
  style: {
769
879
  position: "absolute",
770
880
  inset: 0,
@@ -777,7 +887,7 @@ var ThemedTerminal = forwardRef(({
777
887
  pointerEvents: "none",
778
888
  zIndex: 1000
779
889
  },
780
- children: /* @__PURE__ */ jsx("div", {
890
+ children: /* @__PURE__ */ jsx2("div", {
781
891
  style: {
782
892
  padding: "8px 16px",
783
893
  background: "#3b82f6",
@@ -789,7 +899,7 @@ var ThemedTerminal = forwardRef(({
789
899
  children: "Drop to insert"
790
900
  })
791
901
  }),
792
- overlayState && /* @__PURE__ */ jsxs("div", {
902
+ overlayState && /* @__PURE__ */ jsxs2("div", {
793
903
  style: {
794
904
  position: "absolute",
795
905
  top: 0,
@@ -807,11 +917,11 @@ var ThemedTerminal = forwardRef(({
807
917
  zIndex: 10
808
918
  },
809
919
  children: [
810
- /* @__PURE__ */ jsx(Monitor, {
920
+ /* @__PURE__ */ jsx2(Monitor, {
811
921
  size: 48,
812
922
  color: theme.colors.textSecondary
813
923
  }),
814
- /* @__PURE__ */ jsx("div", {
924
+ /* @__PURE__ */ jsx2("div", {
815
925
  style: {
816
926
  fontSize: "16px",
817
927
  fontWeight: "500",
@@ -820,7 +930,7 @@ var ThemedTerminal = forwardRef(({
820
930
  },
821
931
  children: overlayState.message
822
932
  }),
823
- overlayState.subtitle && /* @__PURE__ */ jsx("div", {
933
+ overlayState.subtitle && /* @__PURE__ */ jsx2("div", {
824
934
  style: {
825
935
  fontSize: "14px",
826
936
  color: theme.colors.textSecondary,
@@ -829,13 +939,13 @@ var ThemedTerminal = forwardRef(({
829
939
  },
830
940
  children: overlayState.subtitle
831
941
  }),
832
- overlayState.actions && overlayState.actions.length > 0 && /* @__PURE__ */ jsx("div", {
942
+ overlayState.actions && overlayState.actions.length > 0 && /* @__PURE__ */ jsx2("div", {
833
943
  style: {
834
944
  display: "flex",
835
945
  gap: "12px",
836
946
  marginTop: "8px"
837
947
  },
838
- children: overlayState.actions.map((action) => /* @__PURE__ */ jsxs("button", {
948
+ children: overlayState.actions.map((action) => /* @__PURE__ */ jsxs2("button", {
839
949
  type: "button",
840
950
  onClick: action.onClick,
841
951
  style: {
@@ -873,6 +983,13 @@ var ThemedTerminal = forwardRef(({
873
983
  }, action.label))
874
984
  })
875
985
  ]
986
+ }),
987
+ showWorkingOverlay && !overlayState && /* @__PURE__ */ jsx2(WorkingOverlay, {
988
+ theme,
989
+ message: workingMessage,
990
+ subtitle: workingSubtitle,
991
+ isClosing: isClosingOverlay,
992
+ onCloseComplete: handleOverlayCloseComplete
876
993
  })
877
994
  ]
878
995
  })
@@ -883,10 +1000,10 @@ ThemedTerminal.displayName = "ThemedTerminal";
883
1000
  // src/components/ThemedTerminalWithProvider.tsx
884
1001
  import { useTheme } from "@principal-ade/industry-theme";
885
1002
  import { forwardRef as forwardRef2 } from "react";
886
- import { jsx as jsx2 } from "react/jsx-runtime";
1003
+ import { jsx as jsx3 } from "react/jsx-runtime";
887
1004
  var ThemedTerminalWithProvider = forwardRef2((props, ref) => {
888
1005
  const { theme } = useTheme();
889
- return /* @__PURE__ */ jsx2(ThemedTerminal, {
1006
+ return /* @__PURE__ */ jsx3(ThemedTerminal, {
890
1007
  ref,
891
1008
  theme,
892
1009
  ...props
@@ -935,7 +1052,7 @@ import { useState as useState2 } from "react";
935
1052
 
936
1053
  // src/components/TabBar/TabButton.tsx
937
1054
  import { useTheme as useTheme3 } from "@principal-ade/industry-theme";
938
- import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1055
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
939
1056
  var TabButton = ({
940
1057
  tab,
941
1058
  isActive,
@@ -952,7 +1069,7 @@ var TabButton = ({
952
1069
  const { theme } = useTheme3();
953
1070
  const showCloseButton = isHovered || isActive;
954
1071
  const closable = tab.closable !== false;
955
- return /* @__PURE__ */ jsxs2("div", {
1072
+ return /* @__PURE__ */ jsxs3("div", {
956
1073
  onMouseEnter,
957
1074
  onMouseLeave,
958
1075
  onClick,
@@ -977,7 +1094,7 @@ var TabButton = ({
977
1094
  boxSizing: "border-box"
978
1095
  },
979
1096
  children: [
980
- closable && showCloseButton && /* @__PURE__ */ jsx3("button", {
1097
+ closable && showCloseButton && /* @__PURE__ */ jsx4("button", {
981
1098
  onClick: (e) => {
982
1099
  e.stopPropagation();
983
1100
  onClose();
@@ -1009,7 +1126,7 @@ var TabButton = ({
1009
1126
  (() => {
1010
1127
  const icon = renderIcon ? renderIcon(tab) : undefined;
1011
1128
  const displayIcon = icon !== undefined ? icon : tab.icon;
1012
- return displayIcon ? /* @__PURE__ */ jsx3("div", {
1129
+ return displayIcon ? /* @__PURE__ */ jsx4("div", {
1013
1130
  style: { flexShrink: 0, display: "flex", alignItems: "center" },
1014
1131
  children: displayIcon
1015
1132
  }) : null;
@@ -1017,7 +1134,7 @@ var TabButton = ({
1017
1134
  (() => {
1018
1135
  const label = renderLabel ? renderLabel(tab) : undefined;
1019
1136
  const displayLabel = label !== undefined ? label : tab.label;
1020
- return /* @__PURE__ */ jsx3("span", {
1137
+ return /* @__PURE__ */ jsx4("span", {
1021
1138
  style: {
1022
1139
  overflow: "hidden",
1023
1140
  textOverflow: "ellipsis",
@@ -1027,7 +1144,7 @@ var TabButton = ({
1027
1144
  children: displayLabel
1028
1145
  });
1029
1146
  })(),
1030
- renderAccessory ? renderAccessory(tab) : keyboardHint && /* @__PURE__ */ jsx3("span", {
1147
+ renderAccessory ? renderAccessory(tab) : keyboardHint && /* @__PURE__ */ jsx4("span", {
1031
1148
  style: {
1032
1149
  fontSize: theme.fontSizes[0],
1033
1150
  color: theme.colors.textSecondary,
@@ -1042,7 +1159,7 @@ var TabButton = ({
1042
1159
  TabButton.displayName = "TabButton";
1043
1160
 
1044
1161
  // src/components/TabBar/TabBar.tsx
1045
- import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
1162
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1046
1163
  var TabBar = ({
1047
1164
  tabs,
1048
1165
  activeTabId,
@@ -1059,7 +1176,7 @@ var TabBar = ({
1059
1176
  }) => {
1060
1177
  const { theme } = useTheme4();
1061
1178
  const [hoveredTabId, setHoveredTabId] = useState2(null);
1062
- return /* @__PURE__ */ jsxs3("div", {
1179
+ return /* @__PURE__ */ jsxs4("div", {
1063
1180
  className,
1064
1181
  style: {
1065
1182
  display: "flex",
@@ -1069,7 +1186,7 @@ var TabBar = ({
1069
1186
  boxSizing: "border-box"
1070
1187
  },
1071
1188
  children: [
1072
- leftSection && /* @__PURE__ */ jsx4("div", {
1189
+ leftSection && /* @__PURE__ */ jsx5("div", {
1073
1190
  style: {
1074
1191
  display: "flex",
1075
1192
  alignItems: "center",
@@ -1082,7 +1199,7 @@ var TabBar = ({
1082
1199
  },
1083
1200
  children: leftSection
1084
1201
  }),
1085
- /* @__PURE__ */ jsx4("div", {
1202
+ /* @__PURE__ */ jsx5("div", {
1086
1203
  style: {
1087
1204
  display: "flex",
1088
1205
  alignItems: "center",
@@ -1092,7 +1209,7 @@ var TabBar = ({
1092
1209
  borderBottom: `1px solid ${theme.colors.border}`,
1093
1210
  boxSizing: "border-box"
1094
1211
  },
1095
- children: tabs.map((tab, index) => /* @__PURE__ */ jsx4(TabButton, {
1212
+ children: tabs.map((tab, index) => /* @__PURE__ */ jsx5(TabButton, {
1096
1213
  tab,
1097
1214
  isActive: tab.id === activeTabId,
1098
1215
  isHovered: tab.id === hoveredTabId,
@@ -1106,7 +1223,7 @@ var TabBar = ({
1106
1223
  renderLabel: renderTabLabel
1107
1224
  }, tab.id))
1108
1225
  }),
1109
- rightSection !== undefined ? rightSection && /* @__PURE__ */ jsx4("div", {
1226
+ rightSection !== undefined ? rightSection && /* @__PURE__ */ jsx5("div", {
1110
1227
  style: {
1111
1228
  display: "flex",
1112
1229
  alignItems: "center",
@@ -1118,7 +1235,7 @@ var TabBar = ({
1118
1235
  boxSizing: "border-box"
1119
1236
  },
1120
1237
  children: rightSection
1121
- }) : onNewTab && /* @__PURE__ */ jsx4("div", {
1238
+ }) : onNewTab && /* @__PURE__ */ jsx5("div", {
1122
1239
  style: {
1123
1240
  display: "flex",
1124
1241
  alignItems: "center",
@@ -1129,7 +1246,7 @@ var TabBar = ({
1129
1246
  borderBottom: `1px solid ${theme.colors.border}`,
1130
1247
  boxSizing: "border-box"
1131
1248
  },
1132
- children: /* @__PURE__ */ jsx4("button", {
1249
+ children: /* @__PURE__ */ jsx5("button", {
1133
1250
  onClick: onNewTab,
1134
1251
  style: {
1135
1252
  display: "flex",
@@ -1150,7 +1267,7 @@ var TabBar = ({
1150
1267
  e.currentTarget.style.backgroundColor = "transparent";
1151
1268
  },
1152
1269
  title: "New Tab (⌘T)",
1153
- children: /* @__PURE__ */ jsx4(Plus, {
1270
+ children: /* @__PURE__ */ jsx5(Plus, {
1154
1271
  size: 14
1155
1272
  })
1156
1273
  })
@@ -1237,7 +1354,7 @@ function getTerminalSlice(context) {
1237
1354
  }
1238
1355
 
1239
1356
  // src/panels/TerminalPanel.tsx
1240
- import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1357
+ import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
1241
1358
  var TerminalPanel = ({
1242
1359
  context,
1243
1360
  actions,
@@ -1396,7 +1513,7 @@ var TerminalPanel = ({
1396
1513
  }, []);
1397
1514
  const sessionInfo = sessionId ? getTerminalSession(context, sessionId) : undefined;
1398
1515
  if (error) {
1399
- return /* @__PURE__ */ jsxs4("div", {
1516
+ return /* @__PURE__ */ jsxs5("div", {
1400
1517
  style: {
1401
1518
  padding: "20px",
1402
1519
  color: "#ef4444",
@@ -1409,11 +1526,11 @@ var TerminalPanel = ({
1409
1526
  gap: "10px"
1410
1527
  },
1411
1528
  children: [
1412
- /* @__PURE__ */ jsx5("div", {
1529
+ /* @__PURE__ */ jsx6("div", {
1413
1530
  style: { fontSize: "16px", fontWeight: "bold" },
1414
1531
  children: "Terminal Error"
1415
1532
  }),
1416
- /* @__PURE__ */ jsx5("div", {
1533
+ /* @__PURE__ */ jsx6("div", {
1417
1534
  style: { fontSize: "14px", opacity: 0.8 },
1418
1535
  children: error
1419
1536
  })
@@ -1421,7 +1538,7 @@ var TerminalPanel = ({
1421
1538
  });
1422
1539
  }
1423
1540
  if (isInitializing || !sessionId) {
1424
- return /* @__PURE__ */ jsx5("div", {
1541
+ return /* @__PURE__ */ jsx6("div", {
1425
1542
  style: {
1426
1543
  padding: "20px",
1427
1544
  color: "#a0a0a0",
@@ -1447,10 +1564,10 @@ var TerminalPanel = ({
1447
1564
  terminalRef.current?.scrollToBottom();
1448
1565
  }
1449
1566
  };
1450
- return /* @__PURE__ */ jsxs4("div", {
1567
+ return /* @__PURE__ */ jsxs5("div", {
1451
1568
  style: { height: "100%", width: "100%", display: "flex", flexDirection: "column" },
1452
1569
  children: [
1453
- /* @__PURE__ */ jsxs4("div", {
1570
+ /* @__PURE__ */ jsxs5("div", {
1454
1571
  style: {
1455
1572
  display: "flex",
1456
1573
  gap: "8px",
@@ -1460,7 +1577,7 @@ var TerminalPanel = ({
1460
1577
  alignItems: "center"
1461
1578
  },
1462
1579
  children: [
1463
- /* @__PURE__ */ jsxs4("span", {
1580
+ /* @__PURE__ */ jsxs5("span", {
1464
1581
  style: {
1465
1582
  fontSize: "12px",
1466
1583
  color: theme.colors.textSecondary,
@@ -1473,7 +1590,7 @@ var TerminalPanel = ({
1473
1590
  sessionInfo?.shell
1474
1591
  ]
1475
1592
  }),
1476
- /* @__PURE__ */ jsxs4("button", {
1593
+ /* @__PURE__ */ jsxs5("button", {
1477
1594
  onClick: handleToggleScrollLock,
1478
1595
  style: {
1479
1596
  display: "flex",
@@ -1492,17 +1609,17 @@ var TerminalPanel = ({
1492
1609
  onMouseLeave: (e) => e.currentTarget.style.opacity = "1",
1493
1610
  title: scrollPosition.isScrollLocked ? "Click to unlock scroll" : "Click to lock scroll to bottom",
1494
1611
  children: [
1495
- scrollPosition.isScrollLocked ? /* @__PURE__ */ jsx5(Lock, {
1612
+ scrollPosition.isScrollLocked ? /* @__PURE__ */ jsx6(Lock, {
1496
1613
  size: 12
1497
- }) : /* @__PURE__ */ jsx5(Unlock, {
1614
+ }) : /* @__PURE__ */ jsx6(Unlock, {
1498
1615
  size: 12
1499
1616
  }),
1500
- /* @__PURE__ */ jsx5("span", {
1617
+ /* @__PURE__ */ jsx6("span", {
1501
1618
  children: scrollPosition.isScrollLocked ? "Locked" : "Unlocked"
1502
1619
  })
1503
1620
  ]
1504
1621
  }),
1505
- /* @__PURE__ */ jsxs4("button", {
1622
+ /* @__PURE__ */ jsxs5("button", {
1506
1623
  onClick: handleScrollToBottom,
1507
1624
  disabled: scrollPosition.isAtBottom,
1508
1625
  style: {
@@ -1523,19 +1640,19 @@ var TerminalPanel = ({
1523
1640
  onMouseLeave: (e) => !scrollPosition.isAtBottom && (e.currentTarget.style.opacity = "1"),
1524
1641
  title: "Scroll to bottom and lock",
1525
1642
  children: [
1526
- /* @__PURE__ */ jsx5(ArrowDown, {
1643
+ /* @__PURE__ */ jsx6(ArrowDown, {
1527
1644
  size: 12
1528
1645
  }),
1529
- /* @__PURE__ */ jsx5("span", {
1646
+ /* @__PURE__ */ jsx6("span", {
1530
1647
  children: "Bottom"
1531
1648
  })
1532
1649
  ]
1533
1650
  })
1534
1651
  ]
1535
1652
  }),
1536
- /* @__PURE__ */ jsx5("div", {
1653
+ /* @__PURE__ */ jsx6("div", {
1537
1654
  style: { flex: 1 },
1538
- children: /* @__PURE__ */ jsx5(ThemedTerminalWithProvider, {
1655
+ children: /* @__PURE__ */ jsx6(ThemedTerminalWithProvider, {
1539
1656
  ref: terminalRef,
1540
1657
  onData: handleTerminalData,
1541
1658
  onResize: handleTerminalResize,
@@ -1554,14 +1671,14 @@ var TerminalPanel = ({
1554
1671
  };
1555
1672
  // src/panels/TabbedTerminalPanel.tsx
1556
1673
  import { useTheme as useTheme6 } from "@principal-ade/industry-theme";
1557
- import { Terminal as TerminalIcon2, Lock as Lock2, Unlock as Unlock2, Box, Boxes } from "lucide-react";
1674
+ import { Terminal as TerminalIcon2, Lock as Lock2, Unlock as Unlock2, Box, Boxes, Loader2 } from "lucide-react";
1558
1675
  import React2, {
1559
1676
  useState as useState4,
1560
1677
  useCallback as useCallback3,
1561
1678
  useEffect as useEffect4,
1562
1679
  useRef as useRef3
1563
1680
  } from "react";
1564
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
1681
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
1565
1682
  function TerminalTabContentInner(props, ref) {
1566
1683
  const { tab, sessionId, isActive, isVisible, actions, events, terminalContext, onSessionCreated, onScrollPositionChange, isForeign = false, defaultScrollLocked } = props;
1567
1684
  console.log("[TerminalTabContent] RENDER", { tabId: tab.id, isActive, sessionId });
@@ -1749,7 +1866,7 @@ function TerminalTabContentInner(props, ref) {
1749
1866
  toggleScrollLock: handleToggleScrollLock
1750
1867
  }), [handleScrollToBottom, handleToggleScrollLock]);
1751
1868
  if (!isInitialized) {
1752
- return /* @__PURE__ */ jsx6("div", {
1869
+ return /* @__PURE__ */ jsx7("div", {
1753
1870
  style: {
1754
1871
  display: isActive ? "flex" : "none",
1755
1872
  height: "100%",
@@ -1772,14 +1889,14 @@ function TerminalTabContentInner(props, ref) {
1772
1889
  ],
1773
1890
  opacity: 1
1774
1891
  } : undefined;
1775
- return /* @__PURE__ */ jsx6("div", {
1892
+ return /* @__PURE__ */ jsx7("div", {
1776
1893
  style: {
1777
1894
  display: isActive ? "flex" : "none",
1778
1895
  flexDirection: "column",
1779
1896
  height: "100%",
1780
1897
  width: "100%"
1781
1898
  },
1782
- children: /* @__PURE__ */ jsx6(ThemedTerminalWithProvider, {
1899
+ children: /* @__PURE__ */ jsx7(ThemedTerminalWithProvider, {
1783
1900
  ref: terminalRef,
1784
1901
  onData: shouldRenderTerminal ? handleData : undefined,
1785
1902
  onResize: shouldRenderTerminal ? handleResize : undefined,
@@ -1844,7 +1961,8 @@ var TabbedTerminalPanelInner = ({
1844
1961
  activeTabId: activeTabIdProp,
1845
1962
  onActiveTabChange,
1846
1963
  requestFocusTabId,
1847
- onFocusTabHandled
1964
+ onFocusTabHandled,
1965
+ workingStates
1848
1966
  }) => {
1849
1967
  console.log("[TabbedTerminalPanel] RENDER", { terminalContext, directory, width });
1850
1968
  const { theme } = useTheme6();
@@ -1927,8 +2045,8 @@ var TabbedTerminalPanelInner = ({
1927
2045
  closable: true,
1928
2046
  contentType: tab.contentType,
1929
2047
  metadata: {
1930
- ...tab.directory && { directory: tab.directory },
1931
- ...tab.command && { command: tab.command }
2048
+ ..."directory" in tab && tab.directory ? { directory: tab.directory } : {},
2049
+ ..."command" in tab && tab.command ? { command: tab.command } : {}
1932
2050
  }
1933
2051
  }));
1934
2052
  }, [tabs]);
@@ -2161,42 +2279,67 @@ var TabbedTerminalPanelInner = ({
2161
2279
  }
2162
2280
  });
2163
2281
  const renderTabAccessory = useCallback3((tab) => {
2164
- if (tab.id !== activeTabId)
2282
+ const tabSessionId = sessionIds.get(tab.id);
2283
+ const isWorking = tabSessionId ? workingStates?.[tabSessionId]?.isWorking : false;
2284
+ const isActive = tab.id === activeTabId;
2285
+ if (!isActive && !isWorking)
2165
2286
  return null;
2166
2287
  const scrollPosition = scrollPositions.get(tab.id) ?? defaultScrollPosition;
2167
- return /* @__PURE__ */ jsx6("button", {
2168
- onClick: (e) => {
2169
- e.stopPropagation();
2170
- handleToggleScrollLock();
2171
- },
2172
- style: {
2173
- display: "flex",
2174
- alignItems: "center",
2175
- justifyContent: "center",
2176
- width: "16px",
2177
- height: "16px",
2178
- borderRadius: "3px",
2179
- border: "none",
2180
- backgroundColor: "transparent",
2181
- cursor: "pointer",
2182
- color: scrollPosition.isScrollLocked ? theme.colors.success : theme.colors.warning,
2183
- padding: 0
2184
- },
2185
- onMouseEnter: (e) => {
2186
- e.currentTarget.style.backgroundColor = theme.colors.backgroundTertiary;
2187
- },
2188
- onMouseLeave: (e) => {
2189
- e.currentTarget.style.backgroundColor = "transparent";
2190
- },
2191
- title: scrollPosition.isScrollLocked ? "Scroll locked" : "Scroll unlocked",
2192
- children: scrollPosition.isScrollLocked ? /* @__PURE__ */ jsx6(Lock2, {
2193
- size: 10
2194
- }) : /* @__PURE__ */ jsx6(Unlock2, {
2195
- size: 10
2196
- })
2288
+ return /* @__PURE__ */ jsxs6("div", {
2289
+ style: { display: "flex", alignItems: "center", gap: "4px" },
2290
+ children: [
2291
+ isWorking && /* @__PURE__ */ jsx7("div", {
2292
+ style: {
2293
+ display: "flex",
2294
+ alignItems: "center",
2295
+ justifyContent: "center",
2296
+ width: "16px",
2297
+ height: "16px",
2298
+ color: theme.colors.primary
2299
+ },
2300
+ title: "Agent working",
2301
+ children: /* @__PURE__ */ jsx7(Loader2, {
2302
+ size: 12,
2303
+ style: {
2304
+ animation: "spin 1s linear infinite"
2305
+ }
2306
+ })
2307
+ }),
2308
+ isActive && /* @__PURE__ */ jsx7("button", {
2309
+ onClick: (e) => {
2310
+ e.stopPropagation();
2311
+ handleToggleScrollLock();
2312
+ },
2313
+ style: {
2314
+ display: "flex",
2315
+ alignItems: "center",
2316
+ justifyContent: "center",
2317
+ width: "16px",
2318
+ height: "16px",
2319
+ borderRadius: "3px",
2320
+ border: "none",
2321
+ backgroundColor: "transparent",
2322
+ cursor: "pointer",
2323
+ color: scrollPosition.isScrollLocked ? theme.colors.success : theme.colors.warning,
2324
+ padding: 0
2325
+ },
2326
+ onMouseEnter: (e) => {
2327
+ e.currentTarget.style.backgroundColor = theme.colors.backgroundTertiary;
2328
+ },
2329
+ onMouseLeave: (e) => {
2330
+ e.currentTarget.style.backgroundColor = "transparent";
2331
+ },
2332
+ title: scrollPosition.isScrollLocked ? "Scroll locked" : "Scroll unlocked",
2333
+ children: scrollPosition.isScrollLocked ? /* @__PURE__ */ jsx7(Lock2, {
2334
+ size: 10
2335
+ }) : /* @__PURE__ */ jsx7(Unlock2, {
2336
+ size: 10
2337
+ })
2338
+ })
2339
+ ]
2197
2340
  });
2198
- }, [activeTabId, scrollPositions, defaultScrollPosition, handleToggleScrollLock, theme]);
2199
- return /* @__PURE__ */ jsxs5("div", {
2341
+ }, [activeTabId, scrollPositions, defaultScrollPosition, handleToggleScrollLock, theme, sessionIds, workingStates]);
2342
+ return /* @__PURE__ */ jsxs6("div", {
2200
2343
  style: {
2201
2344
  display: "flex",
2202
2345
  flexDirection: "column",
@@ -2204,15 +2347,15 @@ var TabbedTerminalPanelInner = ({
2204
2347
  backgroundColor: theme.colors.background
2205
2348
  },
2206
2349
  children: [
2207
- !hideHeader && /* @__PURE__ */ jsx6("div", {
2350
+ !hideHeader && /* @__PURE__ */ jsx7("div", {
2208
2351
  ref: headerRef,
2209
- children: /* @__PURE__ */ jsx6(TabBar, {
2352
+ children: /* @__PURE__ */ jsx7(TabBar, {
2210
2353
  tabs: genericTabs,
2211
2354
  activeTabId,
2212
2355
  onTabClick: switchTab,
2213
2356
  onTabClose: closeTab,
2214
2357
  onNewTab: addNewTab,
2215
- leftSection: /* @__PURE__ */ jsx6("button", {
2358
+ leftSection: /* @__PURE__ */ jsx7("button", {
2216
2359
  onClick: () => onShowAllTerminalsChange?.(!showAllTerminals),
2217
2360
  style: {
2218
2361
  display: "flex",
@@ -2237,9 +2380,9 @@ var TabbedTerminalPanelInner = ({
2237
2380
  }
2238
2381
  },
2239
2382
  title: showAllTerminals ? "Showing all terminals (click to filter by context)" : "Show all terminals",
2240
- children: showAllTerminals ? /* @__PURE__ */ jsx6(Boxes, {
2383
+ children: showAllTerminals ? /* @__PURE__ */ jsx7(Boxes, {
2241
2384
  size: 14
2242
- }) : /* @__PURE__ */ jsx6(Box, {
2385
+ }) : /* @__PURE__ */ jsx7(Box, {
2243
2386
  size: 14
2244
2387
  })
2245
2388
  }),
@@ -2249,7 +2392,7 @@ var TabbedTerminalPanelInner = ({
2249
2392
  showKeyboardHints: false
2250
2393
  })
2251
2394
  }),
2252
- /* @__PURE__ */ jsxs5("div", {
2395
+ /* @__PURE__ */ jsxs6("div", {
2253
2396
  style: {
2254
2397
  flex: 1,
2255
2398
  display: "flex",
@@ -2265,7 +2408,7 @@ var TabbedTerminalPanelInner = ({
2265
2408
  if (renderTabContent) {
2266
2409
  const customContent = renderTabContent(tab, isActive, sessionId, width);
2267
2410
  if (customContent === null && tab.contentType === "terminal") {
2268
- return /* @__PURE__ */ jsx6(TerminalTabContent, {
2411
+ return /* @__PURE__ */ jsx7(TerminalTabContent, {
2269
2412
  ref: getRefCallback(tab.id),
2270
2413
  tab,
2271
2414
  sessionId,
@@ -2280,7 +2423,7 @@ var TabbedTerminalPanelInner = ({
2280
2423
  defaultScrollLocked
2281
2424
  }, tab.id);
2282
2425
  }
2283
- return /* @__PURE__ */ jsx6("div", {
2426
+ return /* @__PURE__ */ jsx7("div", {
2284
2427
  style: {
2285
2428
  display: isActive ? "flex" : "none",
2286
2429
  flexDirection: "column",
@@ -2291,7 +2434,7 @@ var TabbedTerminalPanelInner = ({
2291
2434
  }, tab.id);
2292
2435
  }
2293
2436
  if (tab.contentType === "terminal") {
2294
- return /* @__PURE__ */ jsx6(TerminalTabContent, {
2437
+ return /* @__PURE__ */ jsx7(TerminalTabContent, {
2295
2438
  ref: getRefCallback(tab.id),
2296
2439
  tab,
2297
2440
  sessionId,
@@ -2306,7 +2449,7 @@ var TabbedTerminalPanelInner = ({
2306
2449
  defaultScrollLocked
2307
2450
  }, tab.id);
2308
2451
  }
2309
- return /* @__PURE__ */ jsxs5("div", {
2452
+ return /* @__PURE__ */ jsxs6("div", {
2310
2453
  style: {
2311
2454
  display: isActive ? "flex" : "none",
2312
2455
  alignItems: "center",
@@ -2315,20 +2458,20 @@ var TabbedTerminalPanelInner = ({
2315
2458
  color: theme.colors.textSecondary
2316
2459
  },
2317
2460
  children: [
2318
- /* @__PURE__ */ jsxs5("p", {
2461
+ /* @__PURE__ */ jsxs6("p", {
2319
2462
  children: [
2320
2463
  "Unknown content type: ",
2321
2464
  tab.contentType
2322
2465
  ]
2323
2466
  }),
2324
- /* @__PURE__ */ jsx6("p", {
2467
+ /* @__PURE__ */ jsx7("p", {
2325
2468
  style: { fontSize: theme.fontSizes[0], marginTop: "8px" },
2326
2469
  children: "Provide a renderTabContent prop to render custom tab types"
2327
2470
  })
2328
2471
  ]
2329
2472
  }, tab.id);
2330
2473
  }),
2331
- tabs.length === 0 && /* @__PURE__ */ jsxs5("div", {
2474
+ tabs.length === 0 && /* @__PURE__ */ jsxs6("div", {
2332
2475
  style: {
2333
2476
  display: "flex",
2334
2477
  flexDirection: "column",
@@ -2338,14 +2481,14 @@ var TabbedTerminalPanelInner = ({
2338
2481
  color: theme.colors.textSecondary
2339
2482
  },
2340
2483
  children: [
2341
- /* @__PURE__ */ jsx6(TerminalIcon2, {
2484
+ /* @__PURE__ */ jsx7(TerminalIcon2, {
2342
2485
  size: 32,
2343
2486
  style: { opacity: 0.5, marginBottom: "16px" }
2344
2487
  }),
2345
- /* @__PURE__ */ jsx6("p", {
2488
+ /* @__PURE__ */ jsx7("p", {
2346
2489
  children: "No terminal sessions"
2347
2490
  }),
2348
- /* @__PURE__ */ jsx6("button", {
2491
+ /* @__PURE__ */ jsx7("button", {
2349
2492
  onClick: () => addNewTab(),
2350
2493
  style: {
2351
2494
  marginTop: "16px",
@@ -2402,6 +2545,8 @@ var TabbedTerminalPanelMemoized = React2.memo(TabbedTerminalPanelInner, (prevPro
2402
2545
  changes.push("activeTabId");
2403
2546
  if (prevProps.onActiveTabChange !== nextProps.onActiveTabChange)
2404
2547
  changes.push("onActiveTabChange");
2548
+ if (prevProps.workingStates !== nextProps.workingStates)
2549
+ changes.push("workingStates");
2405
2550
  const ignoredChanges = [];
2406
2551
  if (prevProps.context !== nextProps.context)
2407
2552
  ignoredChanges.push("context");
@@ -2618,6 +2763,7 @@ export {
2618
2763
  createTerminalSessionTool,
2619
2764
  closeTerminalSessionTool,
2620
2765
  clearTerminalTool,
2766
+ WorkingOverlay,
2621
2767
  ThemedTerminalWithProvider,
2622
2768
  ThemedTerminal,
2623
2769
  TerminalPanel,
@@ -1 +1 @@
1
- {"version":3,"file":"ThemedTerminal.d.ts","sourceRoot":"","sources":["../../../src/components/ThemedTerminal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAkC3D,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAk+B1B,CAAC"}
1
+ {"version":3,"file":"ThemedTerminal.d.ts","sourceRoot":"","sources":["../../../src/components/ThemedTerminal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAkC3D,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EAEV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,4BAA6B,SAAQ,mBAAmB;IACvE,KAAK,EAAE,KAAK,CAAC;CACd;AAsBD,eAAO,MAAM,cAAc,4HAmgC1B,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Theme } from '@principal-ade/industry-theme';
2
+ import '../styles/terminal-theme.css';
3
+ export interface WorkingOverlayProps {
4
+ theme: Theme;
5
+ message?: string;
6
+ subtitle?: string;
7
+ isClosing?: boolean;
8
+ onCloseComplete?: () => void;
9
+ }
10
+ export declare const WorkingOverlay: React.FC<WorkingOverlayProps>;
11
+ //# sourceMappingURL=WorkingOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkingOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/WorkingOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,8BAA8B,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAElC,KAAK,EAAE,KAAK,CAAC;IAEb,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAOD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAgGxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"panelContext.d.ts","sourceRoot":"","sources":["../../../src/mocks/panelContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAGjB,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,gBAAgB,CAAC;AAKxB,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAUrD,CAAC;AAuEF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,OAAO,CAAC,iBAAiB,CAAC,KACrC,iBAqEF,CAAC;AAKF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,OAAO,CAAC,oBAAoB,CAAC,KACxC,oBAmGD,CAAC;AAKH,eAAO,MAAM,gBAAgB,QAAO,iBAwCnC,CAAC;AASF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClD,CAmDA,CAAC"}
1
+ {"version":3,"file":"panelContext.d.ts","sourceRoot":"","sources":["../../../src/mocks/panelContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EAGjB,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,gBAAgB,CAAC;AAKxB,eAAO,MAAM,oBAAoB,EAAE,mBAAmB,EAUrD,CAAC;AA0EF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,OAAO,CAAC,iBAAiB,CAAC,KACrC,iBAwCF,CAAC;AAKF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,OAAO,CAAC,oBAAoB,CAAC,KACxC,oBAmGD,CAAC;AAKH,eAAO,MAAM,gBAAgB,QAAO,iBAwCnC,CAAC;AASF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,KAAK,CAAC,SAAS,CAAC;IAC1D,gBAAgB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC9C,gBAAgB,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;CAClD,CAmDA,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export type { PanelComponentProps, PanelContextValue, PanelActions, PanelEventEmitter, PanelEvent, PanelEventType, PanelDefinition, PanelMetadata, PanelLifecycleHooks, DataSlice, RepositoryMetadata, WorkspaceMetadata, } from '@principal-ade/panel-framework-core';
2
2
  import type { PanelActions as CorePanelActions, PanelComponentProps as CorePanelComponentProps, PanelContextValue, DataSlice } from '@principal-ade/panel-framework-core';
3
- export type TerminalEventType = 'terminal:data' | 'terminal:exit' | 'terminal:created' | 'terminal:title-change' | 'terminal:cwd-change' | 'terminal:link-click' | 'terminal:shortcut';
3
+ export type TerminalEventType = 'terminal:data' | 'terminal:exit' | 'terminal:created' | 'terminal:title-change' | 'terminal:cwd-change' | 'terminal:link-click' | 'terminal:shortcut' | 'terminal:activity-changed';
4
4
  export interface TerminalLinkClickEvent {
5
5
  url: string;
6
6
  sessionId: string;
@@ -14,6 +14,14 @@ export interface TerminalShortcutEvent {
14
14
  shortcut: TerminalShortcutId;
15
15
  sessionId: string;
16
16
  }
17
+ export type TerminalActivityType = 'started' | 'stopped';
18
+ export interface TerminalActivityChangedEvent {
19
+ sessionId: string;
20
+ activityType: TerminalActivityType;
21
+ isWorking: boolean;
22
+ message?: string;
23
+ subtitle?: string;
24
+ }
17
25
  export interface TerminalSessionInfo {
18
26
  id: string;
19
27
  pid: number;
@@ -84,6 +92,11 @@ export declare function getWorkspacePath(context: PanelContextValue): string | n
84
92
  export declare function getTerminalDirectory(context: PanelContextValue, terminalScope?: TerminalScope): string | null;
85
93
  export declare function getTerminalSlice(context: PanelContextValue<TerminalPanelContext>): DataSlice<TerminalSessionInfo[]> | undefined;
86
94
  import type { BaseTab } from '../types/tab';
95
+ export interface TerminalWorkingState {
96
+ isWorking: boolean;
97
+ message?: string;
98
+ subtitle?: string;
99
+ }
87
100
  export interface TerminalTab extends BaseTab {
88
101
  contentType: 'terminal';
89
102
  directory: string;
@@ -108,5 +121,6 @@ export interface TabbedTerminalPanelProps<TTab extends BaseTab = TerminalTab> ex
108
121
  renderTabIcon?: (tab: TTab) => React.ReactNode;
109
122
  renderTabLabel?: (tab: TTab) => React.ReactNode;
110
123
  width?: number;
124
+ workingStates?: Record<string, TerminalWorkingState>;
111
125
  }
112
126
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/panel-types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAKN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EAIZ,MAAM,gBAAgB,CAAC;AA2BxB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AA6pCD,eAAO,MAAM,mBAAmB,EAAkC,CAAC,IAAI,SAAS,OAAO,cAAc,EAAE,OAAO,GAAG,WAAW,EAC1H,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAClC,KAAK,CAAC,YAAY,CAAC"}
1
+ {"version":3,"file":"TabbedTerminalPanel.d.ts","sourceRoot":"","sources":["../../../src/panels/TabbedTerminalPanel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAKN,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EAIZ,MAAM,gBAAgB,CAAC;AA2BxB,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAisCD,eAAO,MAAM,mBAAmB,EAAkC,CAAC,IAAI,SAAS,OAAO,cAAc,EAAE,OAAO,GAAG,WAAW,EAC1H,KAAK,EAAE,wBAAwB,CAAC,IAAI,CAAC,KAClC,KAAK,CAAC,YAAY,CAAC"}
@@ -7,7 +7,7 @@ export interface BaseTab {
7
7
  contentType: string;
8
8
  }
9
9
  export type Tab = BaseTab & {
10
- [key: string]: any;
10
+ [key: string]: unknown;
11
11
  };
12
12
  export interface LegacyTab {
13
13
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/types/tab.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,OAAO;IAEtB,EAAE,EAAE,MAAM,CAAC;IAGX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,SAAS,CAAC;IAGjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG;IAE1B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAKF,MAAM,WAAW,SAAS;IAExB,EAAE,EAAE,MAAM,CAAC;IAGX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,SAAS,CAAC;IAGjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAKD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,GAAG,EAAE,CAAC;IAGZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,WAAW,CAAC,EAAE,SAAS,CAAC;IAGxB,YAAY,CAAC,EAAE,SAAS,CAAC;IAGzB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAG7C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAGxC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAGzC,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAKD,MAAM,WAAW,cAAc;IAE7B,GAAG,EAAE,GAAG,CAAC;IAGT,QAAQ,EAAE,OAAO,CAAC;IAGlB,SAAS,EAAE,OAAO,CAAC;IAGnB,YAAY,EAAE,MAAM,IAAI,CAAC;IAGzB,YAAY,EAAE,MAAM,IAAI,CAAC;IAGzB,OAAO,EAAE,MAAM,IAAI,CAAC;IAGpB,OAAO,EAAE,MAAM,IAAI,CAAC;IAGpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAG1C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAGrC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;CACvC"}
1
+ {"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/types/tab.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,OAAO;IAEtB,EAAE,EAAE,MAAM,CAAC;IAGX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,SAAS,CAAC;IAGjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG;IAE1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAKF,MAAM,WAAW,SAAS;IAExB,EAAE,EAAE,MAAM,CAAC;IAGX,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,SAAS,CAAC;IAGjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAKD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,GAAG,EAAE,CAAC;IAGZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAG3B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAGpC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,WAAW,CAAC,EAAE,SAAS,CAAC;IAGxB,YAAY,CAAC,EAAE,SAAS,CAAC;IAGzB,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAG7C,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAGxC,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAGzC,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAKD,MAAM,WAAW,cAAc;IAE7B,GAAG,EAAE,GAAG,CAAC;IAGT,QAAQ,EAAE,OAAO,CAAC;IAGlB,SAAS,EAAE,OAAO,CAAC;IAGnB,YAAY,EAAE,MAAM,IAAI,CAAC;IAGzB,YAAY,EAAE,MAAM,IAAI,CAAC;IAGzB,OAAO,EAAE,MAAM,IAAI,CAAC;IAGpB,OAAO,EAAE,MAAM,IAAI,CAAC;IAGpB,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAG1C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;IAGrC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,SAAS,CAAC;CACvC"}
@@ -51,6 +51,9 @@ export interface ThemedTerminalProps {
51
51
  onPopOut?: () => void;
52
52
  onShortcut?: (event: TerminalShortcutEvent) => void;
53
53
  overlayState?: TerminalOverlayState;
54
+ isWorking?: boolean;
55
+ workingMessage?: string;
56
+ workingSubtitle?: string;
54
57
  convertEol?: boolean;
55
58
  cursorBlink?: boolean;
56
59
  cursorStyle?: 'block' | 'underline' | 'bar';
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.types.d.ts","sourceRoot":"","sources":["../../../src/types/terminal.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.types.d.ts","sourceRoot":"","sources":["../../../src/types/terminal.types.ts"],"names":[],"mappings":"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"}
package/dist/styles.css CHANGED
@@ -139,3 +139,57 @@
139
139
  --terminal-font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
140
140
  --terminal-font-size: 14px;
141
141
  }
142
+
143
+ /* ===== WORKING OVERLAY (BLINDS) ===== */
144
+
145
+ /* Blinds slide down animation */
146
+ @keyframes blinds-down {
147
+ 0% {
148
+ transform: translateY(-100%);
149
+ }
150
+ 100% {
151
+ transform: translateY(0);
152
+ }
153
+ }
154
+
155
+ /* Blinds slide up animation (for closing) */
156
+ @keyframes blinds-up {
157
+ 0% {
158
+ transform: translateY(0);
159
+ }
160
+ 100% {
161
+ transform: translateY(-100%);
162
+ }
163
+ }
164
+
165
+ /* Pulse animation for working indicator dots */
166
+ @keyframes pulse {
167
+ 0%, 80%, 100% {
168
+ opacity: 0.3;
169
+ transform: scale(0.8);
170
+ }
171
+ 40% {
172
+ opacity: 1;
173
+ transform: scale(1);
174
+ }
175
+ }
176
+
177
+ /* Spin animation for loading indicators */
178
+ @keyframes spin {
179
+ from {
180
+ transform: rotate(0deg);
181
+ }
182
+ to {
183
+ transform: rotate(360deg);
184
+ }
185
+ }
186
+
187
+ /* Working overlay container */
188
+ .terminal-working-overlay {
189
+ animation: blinds-down 0.3s ease-out forwards;
190
+ }
191
+
192
+ /* Closing state */
193
+ .terminal-working-overlay.closing {
194
+ animation: blinds-up 0.3s ease-in forwards;
195
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@industry-theme/xterm-terminal-panel",
3
- "version": "0.4.6",
3
+ "version": "0.5.1",
4
4
  "description": "Industry-themed xterm.js terminal components with panel framework integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,12 +54,13 @@
54
54
  "author": "Principal ADE Team",
55
55
  "license": "MIT",
56
56
  "dependencies": {
57
- "@principal-ade/utcp-panel-event": "^0.1.0",
58
57
  "clsx": "^2.1.1"
59
58
  },
60
59
  "peerDependencies": {
61
- "@principal-ade/industry-theme": ">=0.1.7",
62
- "@principal-ade/panel-framework-core": ">=0.4.2",
60
+ "@principal-ade/industry-theme": ">=0.1.8",
61
+ "@principal-ade/panel-framework-core": ">=0.5.1",
62
+ "@principal-ade/panel-layouts": ">=0.4.0",
63
+ "@principal-ade/utcp-panel-event": ">=0.1.0",
63
64
  "@xterm/addon-fit": ">=0.10.0",
64
65
  "@xterm/addon-search": ">=0.15.0",
65
66
  "@xterm/addon-web-links": ">=0.11.0",
@@ -82,7 +83,7 @@
82
83
  "@eslint/js": "^9.32.0",
83
84
  "@industry-theme/agent-panels": "^0.2.12",
84
85
  "@principal-ade/industry-theme": "^0.1.7",
85
- "@principal-ade/panel-framework-core": "^0.4.2",
86
+ "@principal-ade/panel-framework-core": "0.5.1",
86
87
  "@storybook/addon-docs": "10.1.2",
87
88
  "@storybook/addon-links": "10.1.2",
88
89
  "@storybook/addon-onboarding": "10.1.2",