@copilotkit/web-inspector 1.56.5 → 1.57.0-canary.1778078321
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.cjs +2756 -199
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +264 -10
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +264 -10
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2757 -201
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +2794 -211
- package/dist/index.umd.js.map +1 -1
- package/dist/styles/generated.cjs +1 -1
- package/dist/styles/generated.cjs.map +1 -1
- package/dist/styles/generated.mjs +1 -1
- package/dist/styles/generated.mjs.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/web-inspector.spec.ts +179 -1
- package/src/index.ts +3456 -300
- package/src/styles/generated.css +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,230 @@
|
|
|
1
1
|
import * as lit from "lit";
|
|
2
|
-
import { LitElement } from "lit";
|
|
3
|
-
import { CopilotKitCore } from "@copilotkit/core";
|
|
2
|
+
import { LitElement, TemplateResult } from "lit";
|
|
3
|
+
import { CopilotKitCore, ɵThread } from "@copilotkit/core";
|
|
4
4
|
|
|
5
5
|
//#region src/index.d.ts
|
|
6
6
|
declare const WEB_INSPECTOR_TAG: "cpk-web-inspector";
|
|
7
|
+
interface ApiAgentEvent {
|
|
8
|
+
type: string;
|
|
9
|
+
timestamp: string | number;
|
|
10
|
+
payload: Record<string, unknown>;
|
|
11
|
+
}
|
|
12
|
+
declare class ɵCpkThreadDetails extends LitElement {
|
|
13
|
+
static properties: {
|
|
14
|
+
threadId: {
|
|
15
|
+
attribute: boolean;
|
|
16
|
+
};
|
|
17
|
+
thread: {
|
|
18
|
+
attribute: boolean;
|
|
19
|
+
};
|
|
20
|
+
runtimeUrl: {
|
|
21
|
+
attribute: boolean;
|
|
22
|
+
};
|
|
23
|
+
headers: {
|
|
24
|
+
attribute: boolean;
|
|
25
|
+
};
|
|
26
|
+
agentStateInput: {
|
|
27
|
+
attribute: boolean;
|
|
28
|
+
};
|
|
29
|
+
agentEventsInput: {
|
|
30
|
+
attribute: boolean;
|
|
31
|
+
};
|
|
32
|
+
liveMessageVersion: {
|
|
33
|
+
attribute: boolean;
|
|
34
|
+
};
|
|
35
|
+
_tab: {
|
|
36
|
+
state: boolean;
|
|
37
|
+
};
|
|
38
|
+
_conversation: {
|
|
39
|
+
state: boolean;
|
|
40
|
+
};
|
|
41
|
+
_fetchedEvents: {
|
|
42
|
+
state: boolean;
|
|
43
|
+
};
|
|
44
|
+
_fetchedState: {
|
|
45
|
+
state: boolean;
|
|
46
|
+
};
|
|
47
|
+
_loadingMessages: {
|
|
48
|
+
state: boolean;
|
|
49
|
+
};
|
|
50
|
+
_loadingEvents: {
|
|
51
|
+
state: boolean;
|
|
52
|
+
};
|
|
53
|
+
_loadingState: {
|
|
54
|
+
state: boolean;
|
|
55
|
+
};
|
|
56
|
+
_messagesError: {
|
|
57
|
+
state: boolean;
|
|
58
|
+
};
|
|
59
|
+
_eventsError: {
|
|
60
|
+
state: boolean;
|
|
61
|
+
};
|
|
62
|
+
_stateError: {
|
|
63
|
+
state: boolean;
|
|
64
|
+
};
|
|
65
|
+
_expandedTools: {
|
|
66
|
+
state: boolean;
|
|
67
|
+
};
|
|
68
|
+
_expandedMessages: {
|
|
69
|
+
state: boolean;
|
|
70
|
+
};
|
|
71
|
+
_showDetailPanel: {
|
|
72
|
+
state: boolean;
|
|
73
|
+
};
|
|
74
|
+
_detailPanelWidth: {
|
|
75
|
+
state: boolean;
|
|
76
|
+
};
|
|
77
|
+
_eventsNotAvailable: {
|
|
78
|
+
state: boolean;
|
|
79
|
+
};
|
|
80
|
+
_stateNotAvailable: {
|
|
81
|
+
state: boolean;
|
|
82
|
+
};
|
|
83
|
+
_panelInitializing: {
|
|
84
|
+
state: boolean;
|
|
85
|
+
};
|
|
86
|
+
_activatedTabs: {
|
|
87
|
+
state: boolean;
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
threadId: string | null;
|
|
91
|
+
thread: ɵThread | null;
|
|
92
|
+
runtimeUrl: string;
|
|
93
|
+
headers: Record<string, string>;
|
|
94
|
+
agentStateInput: Record<string, unknown> | null;
|
|
95
|
+
agentEventsInput: ApiAgentEvent[];
|
|
96
|
+
/**
|
|
97
|
+
* Monotonic per-thread counter the parent inspector ticks every time the
|
|
98
|
+
* agent currently running on this thread emits a message change. When this
|
|
99
|
+
* prop changes for the same `threadId`, we re-fetch `/threads/:id/messages`
|
|
100
|
+
* so the conversation view reflects live streaming output.
|
|
101
|
+
*/
|
|
102
|
+
liveMessageVersion: number;
|
|
103
|
+
private _tab;
|
|
104
|
+
private _conversation;
|
|
105
|
+
private _fetchedEvents;
|
|
106
|
+
private _fetchedState;
|
|
107
|
+
private _loadingMessages;
|
|
108
|
+
private _loadingEvents;
|
|
109
|
+
private _loadingState;
|
|
110
|
+
private _messagesError;
|
|
111
|
+
private _eventsError;
|
|
112
|
+
private _stateError;
|
|
113
|
+
private _expandedTools;
|
|
114
|
+
private _expandedMessages;
|
|
115
|
+
private _showDetailPanel;
|
|
116
|
+
private _detailPanelWidth;
|
|
117
|
+
/** True when the /events endpoint returned 501 — don't fall back to live data. */
|
|
118
|
+
private _eventsNotAvailable;
|
|
119
|
+
/** True when the /state endpoint returned 501 — don't fall back to live data. */
|
|
120
|
+
private _stateNotAvailable;
|
|
121
|
+
/**
|
|
122
|
+
* Briefly true after a tab switch so the active-tab highlight + a generic
|
|
123
|
+
* "Loading…" placeholder paint before the heavy per-tab render runs. Without
|
|
124
|
+
* this, large event/conversation lists block the next paint and the user
|
|
125
|
+
* sees the click as unresponsive for seconds.
|
|
126
|
+
*/
|
|
127
|
+
private _panelInitializing;
|
|
128
|
+
/**
|
|
129
|
+
* Tabs that have been opened at least once for the current thread. Once a
|
|
130
|
+
* tab is activated, its rendered DOM stays mounted (we hide inactive tabs
|
|
131
|
+
* via display:none) so flipping back to it is just a CSS swap rather than
|
|
132
|
+
* tearing down and rebuilding the entire panel from scratch. Without this,
|
|
133
|
+
* switching back to AG-UI Events on a thread with hundreds of events
|
|
134
|
+
* triggers a multi-second DOM-creation pass each time.
|
|
135
|
+
*
|
|
136
|
+
* Reset to {"conversation"} when the selected thread changes.
|
|
137
|
+
*/
|
|
138
|
+
private _activatedTabs;
|
|
139
|
+
/**
|
|
140
|
+
* Memoized per-panel templates keyed by the inputs they render from.
|
|
141
|
+
* When the underlying data hasn't changed (same `_conversation` /
|
|
142
|
+
* `_fetchedState` / events array reference, plus expand-state for the
|
|
143
|
+
* conversation panel), we return the previously built TemplateResult.
|
|
144
|
+
* Lit then sees "same template, same values" and skips the diff entirely,
|
|
145
|
+
* so re-rendering on tab switch is near-zero work even when the panel
|
|
146
|
+
* content is large. The key is an opaque tuple compared element-wise by
|
|
147
|
+
* reference; if any element flips, the cache misses and rebuilds.
|
|
148
|
+
*/
|
|
149
|
+
private _panelTplCache;
|
|
150
|
+
/**
|
|
151
|
+
* Tracks whether we've fetched events for the current thread yet. Events
|
|
152
|
+
* fetch lazily on first sub-tab click so a large response's JSON.parse
|
|
153
|
+
* doesn't block the main thread when the user only ever cares about the
|
|
154
|
+
* conversation.
|
|
155
|
+
*/
|
|
156
|
+
private _eventsFetched;
|
|
157
|
+
/**
|
|
158
|
+
* Tracks whether we've fetched state for the current thread yet. Same
|
|
159
|
+
* lazy-load reasoning as `_eventsFetched`.
|
|
160
|
+
*/
|
|
161
|
+
private _stateFetched;
|
|
162
|
+
private _lastFetchedThreadId;
|
|
163
|
+
private _lastSeenLiveMessageVersion;
|
|
164
|
+
private _messagesAbort;
|
|
165
|
+
private _eventsAbort;
|
|
166
|
+
private _stateAbort;
|
|
167
|
+
private _dividerResizing;
|
|
168
|
+
private _dividerPointerId;
|
|
169
|
+
private _dividerStartX;
|
|
170
|
+
private _dividerStartWidth;
|
|
171
|
+
static readonly COLLAPSE_THRESHOLD = 800;
|
|
172
|
+
private static readonly TAB_LIST;
|
|
173
|
+
private renderTabContent;
|
|
174
|
+
private activateTab;
|
|
175
|
+
private maybeFetchTabData;
|
|
176
|
+
static styles: lit.CSSResult;
|
|
177
|
+
updated(_changed: Map<string, unknown>): void;
|
|
178
|
+
/**
|
|
179
|
+
* Fetch the canonical conversation for `threadId` from the runtime.
|
|
180
|
+
*
|
|
181
|
+
* `silent` is true for live re-fetches triggered by `liveMessageVersion`
|
|
182
|
+
* bumps during streaming. In that mode we never toggle the loading state
|
|
183
|
+
* (which would flash "Loading messages…" between every message) and we
|
|
184
|
+
* keep the previous conversation on transient errors instead of blanking
|
|
185
|
+
* it. Initial threadId-change fetches use the default (`silent=false`)
|
|
186
|
+
* so users see an explicit loading indicator on first load.
|
|
187
|
+
*/
|
|
188
|
+
private fetchMessages;
|
|
189
|
+
private fetchEvents;
|
|
190
|
+
private fetchState;
|
|
191
|
+
private mapMessages;
|
|
192
|
+
private mapApiEvents;
|
|
193
|
+
private get renderItems();
|
|
194
|
+
private get activityCounts();
|
|
195
|
+
private get duration();
|
|
196
|
+
private toggleToolExpand;
|
|
197
|
+
private toggleMessageExpand;
|
|
198
|
+
private get activeEvents();
|
|
199
|
+
private get activeState();
|
|
200
|
+
private hasRenderableState;
|
|
201
|
+
private shortId;
|
|
202
|
+
private fmtTime;
|
|
203
|
+
private onDetailDividerDown;
|
|
204
|
+
private onDetailDividerMove;
|
|
205
|
+
private onDetailDividerUp;
|
|
206
|
+
render(): TemplateResult<1>;
|
|
207
|
+
private renderConversation;
|
|
208
|
+
/**
|
|
209
|
+
* Memoize the rendered TemplateResult for `slot` keyed by tuple
|
|
210
|
+
* element-wise reference equality. The hot path for tab switches: when
|
|
211
|
+
* the underlying data hasn't changed, return the previously built
|
|
212
|
+
* TemplateResult so Lit's diff short-circuits. Each panel's `key` is
|
|
213
|
+
* the tuple of inputs the template reads — pass everything the template
|
|
214
|
+
* depends on, or the cache will return stale output when those inputs
|
|
215
|
+
* change without the listed key flipping.
|
|
216
|
+
*/
|
|
217
|
+
private cachedPanelTpl;
|
|
218
|
+
private renderRenderItem;
|
|
219
|
+
private renderBubble;
|
|
220
|
+
private renderToolBlock;
|
|
221
|
+
private renderToolGroup;
|
|
222
|
+
private renderGenerativeUI;
|
|
223
|
+
private renderState;
|
|
224
|
+
private renderEvents;
|
|
225
|
+
private renderPanelToggle;
|
|
226
|
+
private renderDetailPanel;
|
|
227
|
+
}
|
|
7
228
|
declare class WebInspectorElement extends LitElement {
|
|
8
229
|
static properties: {
|
|
9
230
|
readonly core: {
|
|
@@ -23,6 +244,7 @@ declare class WebInspectorElement extends LitElement {
|
|
|
23
244
|
private agentSubscriptions;
|
|
24
245
|
private agentEvents;
|
|
25
246
|
private agentMessages;
|
|
247
|
+
private liveMessageVersion;
|
|
26
248
|
private agentStates;
|
|
27
249
|
private flattenedEvents;
|
|
28
250
|
private eventCounter;
|
|
@@ -36,6 +258,17 @@ declare class WebInspectorElement extends LitElement {
|
|
|
36
258
|
private draggedDuringInteraction;
|
|
37
259
|
private ignoreNextButtonClick;
|
|
38
260
|
private selectedMenu;
|
|
261
|
+
private selectedThreadId;
|
|
262
|
+
private threadListWidth;
|
|
263
|
+
private threadDividerResizing;
|
|
264
|
+
private threadDividerPointerId;
|
|
265
|
+
private threadDividerStartX;
|
|
266
|
+
private threadDividerStartWidth;
|
|
267
|
+
private _threads;
|
|
268
|
+
private _threadStoreSubscriptions;
|
|
269
|
+
private _threadsByAgent;
|
|
270
|
+
private _threadsErrorByAgent;
|
|
271
|
+
private _ownedThreadStores;
|
|
39
272
|
private contextMenuOpen;
|
|
40
273
|
private dockMode;
|
|
41
274
|
private previousBodyMargins;
|
|
@@ -48,15 +281,16 @@ declare class WebInspectorElement extends LitElement {
|
|
|
48
281
|
private toolSignature;
|
|
49
282
|
private eventFilterText;
|
|
50
283
|
private eventTypeFilter;
|
|
51
|
-
private
|
|
284
|
+
private evtColWidths;
|
|
285
|
+
private _evtColResize;
|
|
52
286
|
private announcementHtml;
|
|
53
287
|
private announcementTimestamp;
|
|
54
288
|
private announcementPreviewText;
|
|
55
289
|
private hasUnseenAnnouncement;
|
|
56
290
|
private announcementLoaded;
|
|
57
|
-
private announcementLoadError;
|
|
58
291
|
private announcementPromise;
|
|
59
292
|
private showAnnouncementPreview;
|
|
293
|
+
private announcementExpanded;
|
|
60
294
|
get core(): CopilotKitCore | null;
|
|
61
295
|
set core(value: CopilotKitCore | null);
|
|
62
296
|
private readonly contextState;
|
|
@@ -65,7 +299,15 @@ declare class WebInspectorElement extends LitElement {
|
|
|
65
299
|
private resizeStart;
|
|
66
300
|
private resizeInitialSize;
|
|
67
301
|
private isResizing;
|
|
68
|
-
private readonly
|
|
302
|
+
private readonly customTabIcons;
|
|
303
|
+
private get menuItems();
|
|
304
|
+
private subscribeToThreadStore;
|
|
305
|
+
private autoSelectLatestThread;
|
|
306
|
+
private teardownThreadStoreSubscriptions;
|
|
307
|
+
private ensureOwnedThreadStore;
|
|
308
|
+
private refreshOwnedThreadStore;
|
|
309
|
+
private removeOwnedThreadStore;
|
|
310
|
+
private teardownOwnedThreadStores;
|
|
69
311
|
private attachToCore;
|
|
70
312
|
private detachFromCore;
|
|
71
313
|
private teardownAgentSubscriptions;
|
|
@@ -74,6 +316,7 @@ declare class WebInspectorElement extends LitElement {
|
|
|
74
316
|
private tryAutoAttachCore;
|
|
75
317
|
private subscribeToAgent;
|
|
76
318
|
private unsubscribeFromAgent;
|
|
319
|
+
private mapMessagesToConversation;
|
|
77
320
|
private recordAgentEvent;
|
|
78
321
|
private syncAgentMessages;
|
|
79
322
|
private syncAgentState;
|
|
@@ -94,9 +337,10 @@ declare class WebInspectorElement extends LitElement {
|
|
|
94
337
|
private copyToClipboard;
|
|
95
338
|
static styles: lit.CSSResult[];
|
|
96
339
|
connectedCallback(): void;
|
|
340
|
+
private ensureBrandFonts;
|
|
97
341
|
disconnectedCallback(): void;
|
|
98
342
|
firstUpdated(): void;
|
|
99
|
-
render():
|
|
343
|
+
render(): TemplateResult<1>;
|
|
100
344
|
private renderButton;
|
|
101
345
|
private renderWindow;
|
|
102
346
|
private hydrateStateFromStorageEarly;
|
|
@@ -154,14 +398,20 @@ declare class WebInspectorElement extends LitElement {
|
|
|
154
398
|
private expandedTools;
|
|
155
399
|
private expandedContextItems;
|
|
156
400
|
private copiedContextItems;
|
|
157
|
-
private getSelectedMenu;
|
|
158
401
|
private renderCoreWarningBanner;
|
|
159
402
|
private getCoreStatusSummary;
|
|
160
403
|
private renderMainContent;
|
|
404
|
+
private handleThreadDividerPointerDown;
|
|
405
|
+
private handleThreadDividerPointerMove;
|
|
406
|
+
private handleThreadDividerPointerUp;
|
|
407
|
+
private renderThreadsView;
|
|
161
408
|
private renderEventsTable;
|
|
162
409
|
private handleEventFilterInput;
|
|
163
410
|
private handleEventTypeChange;
|
|
164
411
|
private resetEventFilters;
|
|
412
|
+
private _onEvtColResizeStart;
|
|
413
|
+
private _onEvtColResizeMove;
|
|
414
|
+
private _onEvtColResizeEnd;
|
|
165
415
|
private handleClearEvents;
|
|
166
416
|
private exportEvents;
|
|
167
417
|
private renderAgentsView;
|
|
@@ -184,13 +434,17 @@ declare class WebInspectorElement extends LitElement {
|
|
|
184
434
|
private toggleContextExpansion;
|
|
185
435
|
private handleGlobalPointerDown;
|
|
186
436
|
private toggleRowExpansion;
|
|
187
|
-
private
|
|
437
|
+
private renderAnnouncementBanner;
|
|
188
438
|
private ensureAnnouncementLoading;
|
|
189
439
|
private renderAnnouncementPreview;
|
|
190
440
|
private handleAnnouncementPreviewClick;
|
|
191
441
|
private handleDismissAnnouncement;
|
|
192
442
|
private fetchAnnouncement;
|
|
193
443
|
private convertMarkdownToHtml;
|
|
444
|
+
private copyResetTimeouts;
|
|
445
|
+
private encodeBase64;
|
|
446
|
+
private decodeBase64;
|
|
447
|
+
private handleAnnouncementContentClick;
|
|
194
448
|
private appendRefParam;
|
|
195
449
|
private escapeHtmlAttr;
|
|
196
450
|
private loadStoredAnnouncementTimestamp;
|
|
@@ -202,7 +456,7 @@ declare global {
|
|
|
202
456
|
interface HTMLElementTagNameMap {
|
|
203
457
|
"cpk-web-inspector": WebInspectorElement;
|
|
204
458
|
}
|
|
205
|
-
}
|
|
459
|
+
}
|
|
206
460
|
//#endregion
|
|
207
|
-
export { WEB_INSPECTOR_TAG, WebInspectorElement, defineWebInspector };
|
|
461
|
+
export { WEB_INSPECTOR_TAG, WebInspectorElement, defineWebInspector, ɵCpkThreadDetails };
|
|
208
462
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"mappings":"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"}
|