procsi 0.2.7 → 0.4.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.
Files changed (142) hide show
  1. package/README.md +341 -214
  2. package/dist/cli/commands/completions.d.ts +9 -0
  3. package/dist/cli/commands/completions.d.ts.map +1 -0
  4. package/dist/cli/commands/completions.js +170 -0
  5. package/dist/cli/commands/completions.js.map +1 -0
  6. package/dist/cli/commands/helpers.d.ts +9 -0
  7. package/dist/cli/commands/helpers.d.ts.map +1 -1
  8. package/dist/cli/commands/helpers.js +19 -1
  9. package/dist/cli/commands/helpers.js.map +1 -1
  10. package/dist/cli/commands/interceptors.d.ts.map +1 -1
  11. package/dist/cli/commands/interceptors.js +142 -0
  12. package/dist/cli/commands/interceptors.js.map +1 -1
  13. package/dist/cli/commands/off.d.ts.map +1 -1
  14. package/dist/cli/commands/off.js +1 -0
  15. package/dist/cli/commands/off.js.map +1 -1
  16. package/dist/cli/commands/on.d.ts.map +1 -1
  17. package/dist/cli/commands/on.js +3 -1
  18. package/dist/cli/commands/on.js.map +1 -1
  19. package/dist/cli/commands/request.d.ts +6 -0
  20. package/dist/cli/commands/request.d.ts.map +1 -0
  21. package/dist/cli/commands/request.js +216 -0
  22. package/dist/cli/commands/request.js.map +1 -0
  23. package/dist/cli/commands/requests.d.ts +6 -0
  24. package/dist/cli/commands/requests.d.ts.map +1 -0
  25. package/dist/cli/commands/requests.js +290 -0
  26. package/dist/cli/commands/requests.js.map +1 -0
  27. package/dist/cli/commands/sessions.d.ts +6 -0
  28. package/dist/cli/commands/sessions.d.ts.map +1 -0
  29. package/dist/cli/commands/sessions.js +39 -0
  30. package/dist/cli/commands/sessions.js.map +1 -0
  31. package/dist/cli/formatters/colour.d.ts +17 -0
  32. package/dist/cli/formatters/colour.d.ts.map +1 -0
  33. package/dist/cli/formatters/colour.js +23 -0
  34. package/dist/cli/formatters/colour.js.map +1 -0
  35. package/dist/cli/formatters/detail.d.ts +17 -0
  36. package/dist/cli/formatters/detail.d.ts.map +1 -0
  37. package/dist/cli/formatters/detail.js +135 -0
  38. package/dist/cli/formatters/detail.js.map +1 -0
  39. package/dist/cli/formatters/hints.d.ts +17 -0
  40. package/dist/cli/formatters/hints.d.ts.map +1 -0
  41. package/dist/cli/formatters/hints.js +29 -0
  42. package/dist/cli/formatters/hints.js.map +1 -0
  43. package/dist/cli/formatters/table.d.ts +17 -0
  44. package/dist/cli/formatters/table.d.ts.map +1 -0
  45. package/dist/cli/formatters/table.js +85 -0
  46. package/dist/cli/formatters/table.js.map +1 -0
  47. package/dist/cli/index.js +8 -0
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cli/tui/App.d.ts.map +1 -1
  50. package/dist/cli/tui/App.js +67 -6
  51. package/dist/cli/tui/App.js.map +1 -1
  52. package/dist/cli/tui/components/AccordionPanel.d.ts.map +1 -1
  53. package/dist/cli/tui/components/AccordionPanel.js +1 -1
  54. package/dist/cli/tui/components/AccordionPanel.js.map +1 -1
  55. package/dist/cli/tui/components/EventFilterBar.d.ts +27 -0
  56. package/dist/cli/tui/components/EventFilterBar.d.ts.map +1 -0
  57. package/dist/cli/tui/components/EventFilterBar.js +145 -0
  58. package/dist/cli/tui/components/EventFilterBar.js.map +1 -0
  59. package/dist/cli/tui/components/FilterBar.d.ts.map +1 -1
  60. package/dist/cli/tui/components/FilterBar.js +34 -3
  61. package/dist/cli/tui/components/FilterBar.js.map +1 -1
  62. package/dist/cli/tui/components/HelpModal.d.ts.map +1 -1
  63. package/dist/cli/tui/components/HelpModal.js +3 -0
  64. package/dist/cli/tui/components/HelpModal.js.map +1 -1
  65. package/dist/cli/tui/components/InfoBar.d.ts +15 -0
  66. package/dist/cli/tui/components/InfoBar.d.ts.map +1 -0
  67. package/dist/cli/tui/components/InfoBar.js +45 -0
  68. package/dist/cli/tui/components/InfoBar.js.map +1 -0
  69. package/dist/cli/tui/components/InterceptorLogModal.d.ts +16 -0
  70. package/dist/cli/tui/components/InterceptorLogModal.d.ts.map +1 -0
  71. package/dist/cli/tui/components/InterceptorLogModal.js +229 -0
  72. package/dist/cli/tui/components/InterceptorLogModal.js.map +1 -0
  73. package/dist/cli/tui/components/RequestListItem.d.ts.map +1 -1
  74. package/dist/cli/tui/components/RequestListItem.js +3 -2
  75. package/dist/cli/tui/components/RequestListItem.js.map +1 -1
  76. package/dist/cli/tui/components/StatusBar.d.ts +7 -2
  77. package/dist/cli/tui/components/StatusBar.d.ts.map +1 -1
  78. package/dist/cli/tui/components/StatusBar.js +13 -6
  79. package/dist/cli/tui/components/StatusBar.js.map +1 -1
  80. package/dist/cli/tui/hooks/useInterceptorEvents.d.ts +33 -0
  81. package/dist/cli/tui/hooks/useInterceptorEvents.d.ts.map +1 -0
  82. package/dist/cli/tui/hooks/useInterceptorEvents.js +88 -0
  83. package/dist/cli/tui/hooks/useInterceptorEvents.js.map +1 -0
  84. package/dist/cli/tui/hooks/useRequests.d.ts +4 -0
  85. package/dist/cli/tui/hooks/useRequests.d.ts.map +1 -1
  86. package/dist/cli/tui/hooks/useRequests.js +36 -0
  87. package/dist/cli/tui/hooks/useRequests.js.map +1 -1
  88. package/dist/cli/tui/utils/filters.d.ts.map +1 -1
  89. package/dist/cli/tui/utils/filters.js +3 -1
  90. package/dist/cli/tui/utils/filters.js.map +1 -1
  91. package/dist/cli/utils/parse-time.d.ts +22 -0
  92. package/dist/cli/utils/parse-time.d.ts.map +1 -0
  93. package/dist/cli/utils/parse-time.js +160 -0
  94. package/dist/cli/utils/parse-time.js.map +1 -0
  95. package/dist/daemon/control.d.ts +2 -0
  96. package/dist/daemon/control.d.ts.map +1 -1
  97. package/dist/daemon/control.js +64 -2
  98. package/dist/daemon/control.js.map +1 -1
  99. package/dist/daemon/index.js +6 -1
  100. package/dist/daemon/index.js.map +1 -1
  101. package/dist/daemon/interceptor-event-log.d.ts +37 -0
  102. package/dist/daemon/interceptor-event-log.d.ts.map +1 -0
  103. package/dist/daemon/interceptor-event-log.js +163 -0
  104. package/dist/daemon/interceptor-event-log.js.map +1 -0
  105. package/dist/daemon/interceptor-loader.d.ts +3 -0
  106. package/dist/daemon/interceptor-loader.d.ts.map +1 -1
  107. package/dist/daemon/interceptor-loader.js +34 -2
  108. package/dist/daemon/interceptor-loader.js.map +1 -1
  109. package/dist/daemon/interceptor-runner.d.ts +3 -0
  110. package/dist/daemon/interceptor-runner.d.ts.map +1 -1
  111. package/dist/daemon/interceptor-runner.js +112 -8
  112. package/dist/daemon/interceptor-runner.js.map +1 -1
  113. package/dist/daemon/proxy.d.ts.map +1 -1
  114. package/dist/daemon/proxy.js +99 -4
  115. package/dist/daemon/proxy.js.map +1 -1
  116. package/dist/daemon/storage.d.ts +18 -4
  117. package/dist/daemon/storage.d.ts.map +1 -1
  118. package/dist/daemon/storage.js +111 -25
  119. package/dist/daemon/storage.js.map +1 -1
  120. package/dist/mcp/server.d.ts +3 -0
  121. package/dist/mcp/server.d.ts.map +1 -1
  122. package/dist/mcp/server.js +116 -3
  123. package/dist/mcp/server.js.map +1 -1
  124. package/dist/overrides/node.d.ts.map +1 -1
  125. package/dist/overrides/node.js +62 -0
  126. package/dist/overrides/node.js.map +1 -1
  127. package/dist/shared/constants.d.ts +10 -0
  128. package/dist/shared/constants.d.ts.map +1 -0
  129. package/dist/shared/constants.js +10 -0
  130. package/dist/shared/constants.js.map +1 -0
  131. package/dist/shared/control-client.d.ts +36 -3
  132. package/dist/shared/control-client.d.ts.map +1 -1
  133. package/dist/shared/control-client.js +27 -3
  134. package/dist/shared/control-client.js.map +1 -1
  135. package/dist/shared/process-name.d.ts +10 -0
  136. package/dist/shared/process-name.d.ts.map +1 -0
  137. package/dist/shared/process-name.js +27 -0
  138. package/dist/shared/process-name.js.map +1 -0
  139. package/dist/shared/types.d.ts +24 -0
  140. package/dist/shared/types.d.ts.map +1 -1
  141. package/package.json +2 -1
  142. package/skills/procsi/SKILL.md +5 -4
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Full-screen modal for viewing interceptor runtime events.
3
+ * Shows a reverse-chronological, scrollable, filterable event log.
4
+ * Replaces the main TUI when active (terminals don't support true overlays).
5
+ */
6
+ import React from "react";
7
+ import type { InterceptorEvent } from "../../../shared/types.js";
8
+ export interface InterceptorLogModalProps {
9
+ events: InterceptorEvent[];
10
+ width: number;
11
+ height: number;
12
+ onClose: () => void;
13
+ isActive?: boolean;
14
+ }
15
+ export declare function InterceptorLogModal({ events, width, height, onClose, isActive, }: InterceptorLogModalProps): React.ReactElement;
16
+ //# sourceMappingURL=InterceptorLogModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterceptorLogModal.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/InterceptorLogModal.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAiD,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAyB,MAAM,0BAA0B,CAAC;AAYxF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkGD,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,QAAe,GAChB,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CAoM/C"}
@@ -0,0 +1,229 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Full-screen modal for viewing interceptor runtime events.
4
+ * Shows a reverse-chronological, scrollable, filterable event log.
5
+ * Replaces the main TUI when active (terminals don't support true overlays).
6
+ */
7
+ import React, { useState, useMemo, useCallback, useRef } from "react";
8
+ import { Box, Text, useInput } from "ink";
9
+ import { HintContent } from "./HintContent.js";
10
+ import { EventFilterBar } from "./EventFilterBar.js";
11
+ const LOG_MODAL_HINTS = [
12
+ { key: "j/k", action: "nav" },
13
+ { key: "^u/^d", action: "half-page" },
14
+ { key: "g/G", action: "top/bottom" },
15
+ { key: "/", action: "filter" },
16
+ { key: "q/Esc", action: "close" },
17
+ ];
18
+ /** Rows reserved for header (title + info + divider) */
19
+ const HEADER_ROWS = 3;
20
+ /** Rows reserved for footer (divider + hint bar + bottom border) */
21
+ const FOOTER_ROWS = 3;
22
+ /** Rows consumed by the filter bar when open */
23
+ const FILTER_BAR_ROWS = 2;
24
+ /**
25
+ * Format a timestamp as HH:MM:SS.
26
+ */
27
+ function formatTime(timestamp) {
28
+ const d = new Date(timestamp);
29
+ const hh = String(d.getHours()).padStart(2, "0");
30
+ const mm = String(d.getMinutes()).padStart(2, "0");
31
+ const ss = String(d.getSeconds()).padStart(2, "0");
32
+ return `${hh}:${mm}:${ss}`;
33
+ }
34
+ /**
35
+ * Get the display colour for a given event level.
36
+ */
37
+ function levelColour(level) {
38
+ switch (level) {
39
+ case "error":
40
+ return "red";
41
+ case "warn":
42
+ return "yellow";
43
+ case "info":
44
+ return undefined; // dim instead
45
+ }
46
+ }
47
+ /**
48
+ * Get a human label for the current filter state (shown in the header).
49
+ */
50
+ function filterSummary(filter) {
51
+ const parts = [];
52
+ if (filter.level === "error")
53
+ parts.push("errors");
54
+ else if (filter.level === "warn")
55
+ parts.push("warn+");
56
+ else
57
+ parts.push("all");
58
+ if (filter.interceptor)
59
+ parts.push(filter.interceptor);
60
+ if (filter.search)
61
+ parts.push(`"${filter.search}"`);
62
+ return parts.join(" ");
63
+ }
64
+ /**
65
+ * Check whether an event passes the combined filter.
66
+ */
67
+ function passesFilter(event, filter) {
68
+ // Level filter
69
+ if (filter.level === "error" && event.level !== "error")
70
+ return false;
71
+ if (filter.level === "warn" && event.level !== "warn" && event.level !== "error")
72
+ return false;
73
+ // Interceptor filter
74
+ if (filter.interceptor && event.interceptor !== filter.interceptor)
75
+ return false;
76
+ // Search filter — case-insensitive substring match on message
77
+ if (filter.search) {
78
+ const needle = filter.search.toLowerCase();
79
+ if (!event.message.toLowerCase().includes(needle))
80
+ return false;
81
+ }
82
+ return true;
83
+ }
84
+ /**
85
+ * Build display lines for a single event.
86
+ * Returns one or more lines: the main line and optionally multiple error detail lines
87
+ * (e.g. stack trace frames).
88
+ */
89
+ function eventLines(event, maxWidth) {
90
+ const time = formatTime(event.timestamp);
91
+ const level = event.level.toUpperCase().padEnd(5);
92
+ const prefix = `[${time}] [${level}] [${event.interceptor}] `;
93
+ const remaining = Math.max(0, maxWidth - prefix.length);
94
+ const message = event.message.length > remaining
95
+ ? event.message.slice(0, remaining - 1) + "\u2026"
96
+ : event.message;
97
+ const main = `${prefix}${message}`;
98
+ const details = [];
99
+ if (event.error) {
100
+ const indent = " ";
101
+ const errorRemaining = Math.max(0, maxWidth - indent.length);
102
+ const errorLines = event.error.split("\n");
103
+ for (const line of errorLines) {
104
+ const trimmed = line.length > errorRemaining
105
+ ? line.slice(0, errorRemaining - 1) + "\u2026"
106
+ : line;
107
+ details.push(`${indent}${trimmed}`);
108
+ }
109
+ }
110
+ return { main, details };
111
+ }
112
+ export function InterceptorLogModal({ events, width, height, onClose, isActive = true, }) {
113
+ const [scrollOffset, setScrollOffset] = useState(0);
114
+ const [filter, setFilter] = useState({});
115
+ const [showFilter, setShowFilter] = useState(false);
116
+ // Stores the filter state when the filter bar opens, so Escape can revert
117
+ const preOpenFilterRef = useRef({});
118
+ // Refs to avoid stale closures in useInput callback
119
+ const maxScrollOffsetRef = useRef(0);
120
+ const availableHeightRef = useRef(0);
121
+ // Unique interceptor names across all events (not just filtered ones)
122
+ const interceptorNames = useMemo(() => {
123
+ const names = new Set();
124
+ for (const event of events) {
125
+ names.add(event.interceptor);
126
+ }
127
+ return [...names].sort();
128
+ }, [events]);
129
+ // Filter events, then reverse to newest-first
130
+ const filteredEvents = useMemo(() => {
131
+ const filtered = events.filter((e) => passesFilter(e, filter));
132
+ return [...filtered].reverse();
133
+ }, [events, filter]);
134
+ // Build all display rows (each event may produce 1+ rows)
135
+ const contentWidth = width - 4; // padding + borders
136
+ const displayRows = useMemo(() => {
137
+ const rows = [];
138
+ for (const event of filteredEvents) {
139
+ const { main, details } = eventLines(event, contentWidth);
140
+ rows.push({ event, text: main, isDetail: false, key: `${event.seq}-m` });
141
+ for (let i = 0; i < details.length; i++) {
142
+ rows.push({ event, text: details[i] ?? "", isDetail: true, key: `${event.seq}-d${i}` });
143
+ }
144
+ }
145
+ return rows;
146
+ }, [filteredEvents, contentWidth]);
147
+ const filterBarHeight = showFilter ? FILTER_BAR_ROWS : 0;
148
+ const availableHeight = height - HEADER_ROWS - FOOTER_ROWS - filterBarHeight;
149
+ const maxScrollOffset = Math.max(0, displayRows.length - availableHeight);
150
+ // Sync refs for useInput callback to avoid stale closures
151
+ maxScrollOffsetRef.current = maxScrollOffset;
152
+ availableHeightRef.current = availableHeight;
153
+ const handleFilterChange = useCallback((newFilter) => {
154
+ setFilter(newFilter);
155
+ setScrollOffset(0);
156
+ }, []);
157
+ const handleFilterCancel = useCallback(() => {
158
+ setFilter(preOpenFilterRef.current);
159
+ setScrollOffset(0);
160
+ setShowFilter(false);
161
+ }, []);
162
+ useInput((input, key) => {
163
+ if (key.escape || input === "q") {
164
+ onClose();
165
+ return;
166
+ }
167
+ if (input === "/") {
168
+ preOpenFilterRef.current = filter;
169
+ setShowFilter(true);
170
+ return;
171
+ }
172
+ if (input === "j" || key.downArrow) {
173
+ setScrollOffset((prev) => Math.min(prev + 1, maxScrollOffsetRef.current));
174
+ }
175
+ else if (input === "k" || key.upArrow) {
176
+ setScrollOffset((prev) => Math.max(prev - 1, 0));
177
+ }
178
+ else if (input === "d" && key.ctrl) {
179
+ const halfPage = Math.floor(availableHeightRef.current / 2);
180
+ setScrollOffset((prev) => Math.min(prev + halfPage, maxScrollOffsetRef.current));
181
+ }
182
+ else if (input === "u" && key.ctrl) {
183
+ const halfPage = Math.floor(availableHeightRef.current / 2);
184
+ setScrollOffset((prev) => Math.max(prev - halfPage, 0));
185
+ }
186
+ else if (input === "g" && !key.shift) {
187
+ setScrollOffset(0);
188
+ }
189
+ else if (input === "G") {
190
+ setScrollOffset(maxScrollOffsetRef.current);
191
+ }
192
+ }, { isActive: isActive && !showFilter });
193
+ // Header border
194
+ const titlePart = " Interceptor Log ";
195
+ const filterPart = ` ${filterSummary(filter)} `;
196
+ const countPart = ` ${filteredEvents.length} event${filteredEvents.length === 1 ? "" : "s"} `;
197
+ const headerBorderWidth = width - titlePart.length - filterPart.length - countPart.length - 4;
198
+ const headerBorder = `\u250C\u2500${titlePart}${"\u2500".repeat(Math.max(0, headerBorderWidth))}${countPart}${filterPart}\u2500\u2510`;
199
+ // Divider
200
+ const divider = `\u251C${"\u2500".repeat(width - 2)}\u2524`;
201
+ // Footer border
202
+ const footerBorder = `\u2514${"\u2500".repeat(width - 2)}\u2518`;
203
+ // Visible rows
204
+ const visibleSlice = displayRows.slice(scrollOffset, scrollOffset + availableHeight);
205
+ // Empty state
206
+ if (filteredEvents.length === 0) {
207
+ const hasActiveFilter = filter.level !== undefined || filter.interceptor !== undefined || (filter.search !== undefined && filter.search.length > 0);
208
+ return (_jsxs(Box, { flexDirection: "column", width: width, height: height, children: [_jsx(Text, { color: "cyan", children: headerBorder }), _jsx(Box, { paddingX: 1, height: 1, children: _jsx(Text, { dimColor: true, children: hasActiveFilter
209
+ ? `No matching events | Press / to change filter`
210
+ : "Waiting for interceptor events..." }) }), _jsx(Text, { color: "cyan", children: divider }), showFilter && (_jsx(EventFilterBar, { isActive: isActive, filter: filter, onFilterChange: handleFilterChange, onClose: () => setShowFilter(false), onCancel: handleFilterCancel, interceptorNames: interceptorNames, width: width })), _jsx(Box, { flexDirection: "column", flexGrow: 1, alignItems: "center", justifyContent: "center", children: _jsx(Text, { dimColor: true, children: "No interceptor events" }) }), _jsx(Text, { color: "cyan", children: divider }), _jsx(Box, { paddingX: 1, height: 1, children: _jsx(HintContent, { hints: LOG_MODAL_HINTS, availableWidth: width - 4 }) }), _jsx(Text, { color: "cyan", children: footerBorder })] }));
211
+ }
212
+ return (_jsxs(Box, { flexDirection: "column", width: width, height: height, children: [_jsx(Text, { color: "cyan", children: headerBorder }), _jsx(Box, { paddingX: 1, height: 1, children: _jsx(Text, { dimColor: true, children: displayRows.length > availableHeight
213
+ ? `Showing ${scrollOffset + 1}\u2013${Math.min(scrollOffset + availableHeight, displayRows.length)} of ${displayRows.length} rows`
214
+ : `${displayRows.length} row${displayRows.length === 1 ? "" : "s"}` }) }), _jsx(Text, { color: "cyan", children: divider }), showFilter && (_jsx(EventFilterBar, { isActive: isActive, filter: filter, onFilterChange: handleFilterChange, onClose: () => setShowFilter(false), onCancel: handleFilterCancel, interceptorNames: interceptorNames, width: width })), _jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, children: [visibleSlice.map((row) => (_jsx(EventRow, { text: row.text, level: row.event.level, isDetail: row.isDetail }, row.key))), visibleSlice.length < availableHeight && _jsx(Box, { flexGrow: 1 })] }), _jsx(Text, { color: "cyan", children: divider }), _jsx(Box, { paddingX: 1, height: 1, children: _jsx(HintContent, { hints: LOG_MODAL_HINTS, availableWidth: width - 4 }) }), _jsx(Text, { color: "cyan", children: footerBorder })] }));
215
+ }
216
+ /**
217
+ * Single row in the event log. Memoised to avoid re-renders in the list.
218
+ */
219
+ const EventRow = React.memo(function EventRow({ text, level, isDetail, }) {
220
+ const colour = levelColour(level);
221
+ if (isDetail) {
222
+ return _jsx(Text, { color: "red", dimColor: true, children: text });
223
+ }
224
+ if (level === "info") {
225
+ return _jsx(Text, { dimColor: true, children: text });
226
+ }
227
+ return _jsx(Text, { color: colour, children: text });
228
+ });
229
+ //# sourceMappingURL=InterceptorLogModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InterceptorLogModal.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/InterceptorLogModal.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RequestListItem.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/RequestListItem.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAuB,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGzF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASnG;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,sBAAsB,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAclE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAWrE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAetD;AA8BD,eAAO,MAAM,eAAe,kDAqE1B,CAAC"}
1
+ {"version":3,"file":"RequestListItem.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/RequestListItem.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAuB,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGzF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASnG;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,sBAAsB,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAclE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAWrE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAetD;AA8BD,eAAO,MAAM,eAAe,kDAsE1B,CAAC"}
@@ -116,8 +116,9 @@ export const RequestListItem = memo(function RequestListItem({ request, isSelect
116
116
  const statusText = request.responseStatus?.toString() ?? "...";
117
117
  const statusIndicator = getStatusIndicator(request.responseStatus);
118
118
  const duration = formatDuration(request.durationMs);
119
- const indicator = isSelected ? "" : " ";
120
- const indicatorColour = isSelected ? "cyan" : undefined;
119
+ const savedChar = request.saved ? "*" : " ";
120
+ const indicator = isSelected ? `❯${savedChar}` : ` ${savedChar}`;
121
+ const indicatorColour = isSelected ? "cyan" : request.saved ? "yellow" : undefined;
121
122
  const interception = getInterceptionIndicator(request.interceptionType);
122
123
  return (_jsx(Box, { ref: ref, width: width, children: _jsxs(Text, { wrap: "truncate", children: [_jsx(Text, { color: indicatorColour, children: indicator }), _jsx(Text, { color: interception.colour, children: interception.text }), _jsx(Text, { color: getMethodColour(request.method), children: formatMethod(request.method) }), _jsx(Text, { children: " " }), _jsxs(Text, { color: getStatusColour(request.responseStatus), children: [statusIndicator, statusText.padStart(3)] }), _jsx(Text, { children: " " }), searchTerm ? (_jsx(Text, { dimColor: !isSelected, children: splitByMatch(paddedPath, searchTerm).map((seg, i) => seg.isMatch ? (_jsx(Text, { color: "yellow", bold: true, children: seg.text }, i)) : (_jsx(Text, { children: seg.text }, i))) })) : (_jsx(Text, { dimColor: !isSelected, children: paddedPath })), _jsx(Text, { dimColor: true, children: duration.padStart(durationWidth) })] }) }));
123
124
  }, (prevProps, nextProps) => {
@@ -1 +1 @@
1
- {"version":3,"file":"RequestListItem.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/RequestListItem.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,OAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAmB,MAAM,KAAK,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEhF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAuB;IAC9D,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC3C,KAAK,UAAU;YACb,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACxC;YACE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAA0B;IACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAClC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,KAAK,KAAK;YACR,OAAO,OAAO,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,KAAK;YACR,OAAO,QAAQ,CAAC;QAClB,KAAK,OAAO;YACV,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,IAAY,EAAE,IAAY;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACzD,MAAM;QACR,CAAC;QACD,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,eAAe,CAAC,EAC3D,OAAO,EACP,UAAU,EACV,KAAK,EACL,WAAW,EACX,OAAO,EACP,UAAU,GACW;IACrB,MAAM,GAAG,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;IAErC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE;QACnB,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,qBAAqB;IAClD,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,WAAW,GAAG,CAAC,CAAC;IACtB,MAAM,aAAa,GAAG,CAAC,CAAC;IACxB,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,yBAAyB;IAEpD,qCAAqC;IACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,GAAG,iBAAiB,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,eAAe,CAAC,CAAC;IACxH,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEjD,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;IAC/D,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,MAAM,YAAY,GAAG,wBAAwB,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAExE,OAAO,CACL,KAAC,GAAG,IAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,YACzB,MAAC,IAAI,IAAC,IAAI,EAAC,UAAU,aACnB,KAAC,IAAI,IAAC,KAAK,EAAE,eAAe,YAAG,SAAS,GAAQ,EAChD,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,CAAC,MAAM,YAAG,YAAY,CAAC,IAAI,GAAQ,EAC5D,KAAC,IAAI,IAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,YAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAQ,EACnF,KAAC,IAAI,oBAAS,EACd,MAAC,IAAI,IAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC,aAAG,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAQ,EACtG,KAAC,IAAI,oBAAS,EACb,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,UAAU,YACxB,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CACnD,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CACZ,KAAC,IAAI,IAAS,KAAK,EAAC,QAAQ,EAAC,IAAI,kBAAE,GAAG,CAAC,IAAI,IAAhC,CAAC,CAAuC,CACpD,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,cAAU,GAAG,CAAC,IAAI,IAAZ,CAAC,CAAmB,CAChC,CACF,GACI,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,UAAU,YAAG,UAAU,GAAQ,CACjD,EACD,KAAC,IAAI,IAAC,QAAQ,kBAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAQ,IACnD,GACH,CACP,CAAC;AACJ,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;IAC1B,OAAO,CACL,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO;QACvC,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU;QAC7C,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;QACnC,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW;QAC/C,SAAS,CAAC,UAAU,KAAK,SAAS,CAAC,UAAU,CAC9C,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"RequestListItem.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/RequestListItem.tsx"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ interface StatusBarContext {
10
10
  hasRequests: boolean;
11
11
  onBodySection: boolean;
12
12
  onViewableBodySection: boolean;
13
+ hasEvents: boolean;
13
14
  }
14
15
  interface KeyHint extends HintItem {
15
16
  visible?: (ctx: StatusBarContext) => boolean;
@@ -26,6 +27,10 @@ export interface StatusBarProps {
26
27
  onViewableBodySection?: boolean;
27
28
  /** Number of active interceptors; shown as a badge when > 0. */
28
29
  interceptorCount?: number;
30
+ /** Number of interceptor error events; shown as a red badge when > 0. */
31
+ interceptorErrorCount?: number;
32
+ /** Whether any interceptor events exist (gates L hint visibility). */
33
+ hasEvents?: boolean;
29
34
  /** Terminal width in columns — used to constrain the hint bar. */
30
35
  width?: number;
31
36
  }
@@ -33,7 +38,7 @@ export interface StatusBarProps {
33
38
  * Returns hints visible for the given context. All new props default to true
34
39
  * so the component remains backwards-compatible when no context is passed.
35
40
  */
36
- export declare function getVisibleHints({ activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, }: Pick<StatusBarProps, "activePanel" | "hasSelection" | "hasRequests" | "onBodySection" | "onViewableBodySection">): KeyHint[];
37
- export declare function StatusBar({ message, filterActive, filterOpen, activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, interceptorCount, width, }: StatusBarProps): React.ReactElement;
41
+ export declare function getVisibleHints({ activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, hasEvents, }: Pick<StatusBarProps, "activePanel" | "hasSelection" | "hasRequests" | "onBodySection" | "onViewableBodySection" | "hasEvents">): KeyHint[];
42
+ export declare function StatusBar({ message, filterActive, filterOpen, activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, interceptorCount, interceptorErrorCount, hasEvents, width, }: StatusBarProps): React.ReactElement;
38
43
  export {};
39
44
  //# sourceMappingURL=StatusBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,UAAU,OAAQ,SAAQ,QAAQ;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC;CAC9C;AAmBD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,WAAoB,EACpB,YAAmB,EACnB,WAAkB,EAClB,aAAoB,EACpB,qBAA6B,GAC9B,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,uBAAuB,CAAC,GAAG,OAAO,EAAE,CAG9H;AAKD,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,GACN,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CA0DrC"}
1
+ {"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/StatusBar.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE9D,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,GAAG,WAAW,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,OAAQ,SAAQ,QAAQ;IAChC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC;CAC9C;AAsBD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gEAAgE;IAChE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAC9B,WAAoB,EACpB,YAAmB,EACnB,WAAkB,EAClB,aAAoB,EACpB,qBAA6B,EAC7B,SAAiB,GAClB,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,cAAc,GAAG,aAAa,GAAG,eAAe,GAAG,uBAAuB,GAAG,WAAW,CAAC,GAAG,OAAO,EAAE,CAG5I;AAKD,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,YAAY,EACZ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,SAAS,EACT,KAAK,GACN,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CAoErC"}
@@ -16,8 +16,11 @@ const KEY_HINTS = [
16
16
  { key: "H", action: "HAR", visible: (ctx) => ctx.hasRequests },
17
17
  { key: "y", action: "yank", visible: (ctx) => ctx.onBodySection },
18
18
  { key: "s", action: "export", visible: (ctx) => ctx.onBodySection },
19
+ { key: "b", action: "bookmark", visible: (ctx) => ctx.hasSelection },
20
+ { key: "x", action: "clear", visible: (ctx) => ctx.hasRequests },
19
21
  { key: "u", action: "URL" },
20
22
  { key: "/", action: "filter" },
23
+ { key: "L", action: "events", visible: (ctx) => ctx.hasEvents },
21
24
  { key: "i", action: "info" },
22
25
  { key: "?", action: "help" },
23
26
  { key: "q", action: "quit" },
@@ -26,19 +29,23 @@ const KEY_HINTS = [
26
29
  * Returns hints visible for the given context. All new props default to true
27
30
  * so the component remains backwards-compatible when no context is passed.
28
31
  */
29
- export function getVisibleHints({ activePanel = "list", hasSelection = true, hasRequests = true, onBodySection = true, onViewableBodySection = false, }) {
30
- const ctx = { activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection };
32
+ export function getVisibleHints({ activePanel = "list", hasSelection = true, hasRequests = true, onBodySection = true, onViewableBodySection = false, hasEvents = false, }) {
33
+ const ctx = { activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, hasEvents };
31
34
  return KEY_HINTS.filter((hint) => !hint.visible || hint.visible(ctx));
32
35
  }
33
36
  const SEPARATOR_WIDTH = 3; // " │ "
34
37
  const PADDING_WIDTH = 2; // paddingX={1} each side
35
- export function StatusBar({ message, filterActive, filterOpen, activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, interceptorCount, width, }) {
36
- const visibleHints = useMemo(() => getVisibleHints({ activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection }), [activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection]);
38
+ export function StatusBar({ message, filterActive, filterOpen, activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, interceptorCount, interceptorErrorCount, hasEvents, width, }) {
39
+ const visibleHints = useMemo(() => getVisibleHints({ activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, hasEvents }), [activePanel, hasSelection, hasRequests, onBodySection, onViewableBodySection, hasEvents]);
37
40
  // Calculate available width for hints, accounting for prefix badges
38
41
  const hintsAvailableWidth = useMemo(() => {
39
42
  if (!width)
40
43
  return undefined;
41
44
  let prefixWidth = 0;
45
+ if (interceptorErrorCount !== undefined && interceptorErrorCount > 0) {
46
+ const errorBadge = `[${interceptorErrorCount} error${interceptorErrorCount === 1 ? "" : "s"}]`;
47
+ prefixWidth += errorBadge.length + SEPARATOR_WIDTH;
48
+ }
42
49
  if (interceptorCount !== undefined && interceptorCount > 0) {
43
50
  const badge = `[${interceptorCount} interceptor${interceptorCount === 1 ? "" : "s"}]`;
44
51
  prefixWidth += badge.length + SEPARATOR_WIDTH;
@@ -47,7 +54,7 @@ export function StatusBar({ message, filterActive, filterOpen, activePanel, hasS
47
54
  prefixWidth += "[FILTERED]".length + SEPARATOR_WIDTH;
48
55
  }
49
56
  return width - PADDING_WIDTH - prefixWidth;
50
- }, [width, interceptorCount, filterActive]);
51
- return (_jsx(Box, { borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, paddingX: 1, height: 2, children: message ? (_jsx(Text, { color: "yellow", children: message })) : filterOpen ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "cyan", bold: true, children: "Esc" }), _jsx(Text, { dimColor: true, children: " close filter" })] })) : (_jsxs(Text, { children: [interceptorCount !== undefined && interceptorCount > 0 && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: "magenta", bold: true, children: ["[", interceptorCount, " interceptor", interceptorCount === 1 ? "" : "s", "]"] }), _jsx(Text, { dimColor: true, children: " \u2502 " })] })), filterActive && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "yellow", bold: true, children: "[FILTERED]" }), _jsx(Text, { dimColor: true, children: " \u2502 " })] })), _jsx(HintContent, { hints: visibleHints, availableWidth: hintsAvailableWidth })] })) }));
57
+ }, [width, interceptorCount, interceptorErrorCount, filterActive]);
58
+ return (_jsx(Box, { borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, paddingX: 1, height: 2, children: message ? (_jsx(Text, { color: "yellow", children: message })) : filterOpen ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: "cyan", bold: true, children: "Esc" }), _jsx(Text, { dimColor: true, children: " close filter" })] })) : (_jsxs(Text, { children: [interceptorErrorCount !== undefined && interceptorErrorCount > 0 && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: "red", bold: true, children: ["[", interceptorErrorCount, " error", interceptorErrorCount === 1 ? "" : "s", "]"] }), _jsx(Text, { dimColor: true, children: " \u2502 " })] })), interceptorCount !== undefined && interceptorCount > 0 && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: "magenta", bold: true, children: ["[", interceptorCount, " interceptor", interceptorCount === 1 ? "" : "s", "]"] }), _jsx(Text, { dimColor: true, children: " \u2502 " })] })), filterActive && (_jsxs(_Fragment, { children: [_jsx(Text, { color: "yellow", bold: true, children: "[FILTERED]" }), _jsx(Text, { dimColor: true, children: " \u2502 " })] })), _jsx(HintContent, { hints: visibleHints, availableWidth: hintsAvailableWidth })] })) }));
52
59
  }
53
60
  //# sourceMappingURL=StatusBar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/StatusBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/StatusBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Hook for polling interceptor runtime events from the daemon.
3
+ * Follows the same ControlClient pattern as useRequests.
4
+ */
5
+ import type { InterceptorEvent } from "../../../shared/types.js";
6
+ interface UseInterceptorEventsOptions {
7
+ projectRoot?: string;
8
+ pollInterval?: number;
9
+ }
10
+ interface InterceptorEventCounts {
11
+ info: number;
12
+ warn: number;
13
+ error: number;
14
+ }
15
+ interface UseInterceptorEventsResult {
16
+ /** All accumulated interceptor events, ordered by seq. */
17
+ events: InterceptorEvent[];
18
+ /** Aggregate counts by level across all events. */
19
+ counts: InterceptorEventCounts;
20
+ /** Total event count across all levels. */
21
+ totalEventCount: number;
22
+ /** Number of currently loaded interceptors. */
23
+ interceptorCount: number;
24
+ /** Force a full re-fetch (resets lastSeenSeq). */
25
+ refresh: () => void;
26
+ }
27
+ /**
28
+ * Hook to poll for interceptor events from the daemon.
29
+ * Accumulates events using delta fetching via afterSeq.
30
+ */
31
+ export declare function useInterceptorEvents(options?: UseInterceptorEventsOptions): UseInterceptorEventsResult;
32
+ export {};
33
+ //# sourceMappingURL=useInterceptorEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInterceptorEvents.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useInterceptorEvents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMjE,UAAU,2BAA2B;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,0BAA0B;IAClC,0DAA0D;IAC1D,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,mDAAmD;IACnD,MAAM,EAAE,sBAAsB,CAAC;IAC/B,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,0BAA0B,CAuF5B"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Hook for polling interceptor runtime events from the daemon.
3
+ * Follows the same ControlClient pattern as useRequests.
4
+ */
5
+ import { useState, useEffect, useCallback, useRef } from "react";
6
+ import { ControlClient } from "../../../shared/control-client.js";
7
+ import { findProjectRoot, getProcsiPaths } from "../../../shared/project.js";
8
+ const DEFAULT_POLL_INTERVAL_MS = 2000;
9
+ const EMPTY_COUNTS = { info: 0, warn: 0, error: 0 };
10
+ /**
11
+ * Hook to poll for interceptor events from the daemon.
12
+ * Accumulates events using delta fetching via afterSeq.
13
+ */
14
+ export function useInterceptorEvents(options = {}) {
15
+ const { pollInterval = DEFAULT_POLL_INTERVAL_MS, projectRoot } = options;
16
+ const [events, setEvents] = useState([]);
17
+ const [counts, setCounts] = useState(EMPTY_COUNTS);
18
+ const [interceptorCount, setInterceptorCount] = useState(0);
19
+ const clientRef = useRef(null);
20
+ const lastSeenSeqRef = useRef(0);
21
+ // Initialise control client
22
+ useEffect(() => {
23
+ const resolvedRoot = projectRoot ?? findProjectRoot();
24
+ if (!resolvedRoot) {
25
+ return;
26
+ }
27
+ const paths = getProcsiPaths(resolvedRoot);
28
+ clientRef.current = new ControlClient(paths.controlSocketFile);
29
+ return () => {
30
+ clientRef.current?.close();
31
+ };
32
+ }, [projectRoot]);
33
+ // Fetch new events since lastSeenSeq
34
+ const fetchEvents = useCallback(async () => {
35
+ const client = clientRef.current;
36
+ if (!client) {
37
+ return;
38
+ }
39
+ try {
40
+ const [result, status] = await Promise.all([
41
+ client.getInterceptorEvents({
42
+ afterSeq: lastSeenSeqRef.current,
43
+ }),
44
+ client.status(),
45
+ ]);
46
+ if (result.events.length > 0) {
47
+ // Update lastSeenSeq to the highest seq we've seen
48
+ const lastEvent = result.events[result.events.length - 1];
49
+ if (lastEvent) {
50
+ lastSeenSeqRef.current = lastEvent.seq;
51
+ }
52
+ setEvents((prev) => [...prev, ...result.events]);
53
+ }
54
+ setCounts(result.counts);
55
+ setInterceptorCount(status.interceptorCount ?? 0);
56
+ }
57
+ catch {
58
+ // Daemon may not be running or may not support interceptor events yet
59
+ }
60
+ }, []);
61
+ // Full refresh: reset accumulated state and re-fetch everything
62
+ const refresh = useCallback(() => {
63
+ lastSeenSeqRef.current = 0;
64
+ setEvents([]);
65
+ setCounts(EMPTY_COUNTS);
66
+ void fetchEvents();
67
+ }, [fetchEvents]);
68
+ // Initial fetch
69
+ useEffect(() => {
70
+ void fetchEvents();
71
+ }, [fetchEvents]);
72
+ // Polling
73
+ useEffect(() => {
74
+ const interval = setInterval(() => {
75
+ void fetchEvents();
76
+ }, pollInterval);
77
+ return () => clearInterval(interval);
78
+ }, [fetchEvents, pollInterval]);
79
+ const totalEventCount = counts.info + counts.warn + counts.error;
80
+ return {
81
+ events,
82
+ counts,
83
+ totalEventCount,
84
+ interceptorCount,
85
+ refresh,
86
+ };
87
+ }
88
+ //# sourceMappingURL=useInterceptorEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInterceptorEvents.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useInterceptorEvents.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,10 @@ interface UseRequestsResult {
17
17
  getFullRequest: (id: string) => Promise<CapturedRequest | null>;
18
18
  /** Fetch all requests with full data (for exports) */
19
19
  getAllFullRequests: () => Promise<CapturedRequest[]>;
20
+ /** Toggle the saved/bookmark state of a request */
21
+ toggleSaved: (id: string, currentlySaved: boolean) => Promise<boolean>;
22
+ /** Clear all unsaved requests */
23
+ clearRequests: () => Promise<boolean>;
20
24
  }
21
25
  /**
22
26
  * Hook to fetch and poll for captured requests.
@@ -1 +1 @@
1
- {"version":3,"file":"useRequests.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useRequests.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC,UAAU,kBAAkB;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,qEAAqE;IACrE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,qDAAqD;IACrD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAChE,sDAAsD;IACtD,kBAAkB,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACtD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAmI/E"}
1
+ {"version":3,"file":"useRequests.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useRequests.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC,UAAU,kBAAkB;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,iBAAiB;IACzB,qEAAqE;IACrE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,qDAAqD;IACrD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAChE,sDAAsD;IACtD,kBAAkB,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACrD,mDAAmD;IACnD,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE,iCAAiC;IACjC,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,iBAAiB,CAwK/E"}