@tanstack/ai-devtools-core 0.5.9 → 0.5.11
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/Shell/{G2SFOZV2.js → DCUFLPG6.js} +518 -71
- package/dist/{production/Shell/WD22ACIB.js → Shell/JT2B6WKX.js} +774 -155
- package/dist/Shell/{DRZSZBFE.js → YBXRSRRK.js} +774 -155
- package/dist/dev.js +1 -1
- package/dist/index.js +1 -1
- package/dist/production/Shell/{G2SFOZV2.js → DCUFLPG6.js} +518 -71
- package/dist/{Shell/WD22ACIB.js → production/Shell/JT2B6WKX.js} +774 -155
- package/dist/production/Shell/{DRZSZBFE.js → YBXRSRRK.js} +774 -155
- package/dist/production/dev.js +1 -1
- package/dist/production/index.js +1 -1
- package/dist/production/server.js +1 -1
- package/dist/server.js +1 -1
- package/package.json +3 -3
- package/src/components/conversation/IterationCard.tsx +11 -5
- package/src/components/hooks/CompactionPanel.tsx +223 -0
- package/src/components/hooks/HookDashboard.tsx +3 -2
- package/src/components/hooks/HookDetails.tsx +44 -6
- package/src/components/hooks/SkillsPanel.tsx +125 -0
- package/src/components/hooks/index.ts +2 -0
- package/src/store/ai-context.tsx +138 -5
- package/src/store/compaction-registry.ts +121 -0
- package/src/store/skills-registry.ts +50 -0
- package/src/styles/use-styles.ts +2 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { delegateEvents, createComponent, insert, effect, className, setStyleProperty, addEventListener, setAttribute, use, memo, spread, mergeProps, template, Portal } from 'solid-js/web';
|
|
1
|
+
import { delegateEvents, createComponent, insert, effect, className, setStyleProperty, addEventListener, setAttribute, use, memo, spread, mergeProps, template, Portal, style } from 'solid-js/web';
|
|
2
2
|
import { createContext, createSignal, onMount, onCleanup, createEffect, createMemo, Show, For, useContext, batch, Index, Switch, Match } from 'solid-js';
|
|
3
3
|
import { ThemeContextProvider, MainPanel, Header, HeaderLogo, useTheme, JsonTree } from '@tanstack/devtools-ui';
|
|
4
4
|
import { emitAIDevtoolsEvent, createAIDevtoolsEventEnvelope, aiEventClient } from '@tanstack/ai-event-client';
|
|
@@ -1999,7 +1999,6 @@ var stylesFactory = (theme) => {
|
|
|
1999
1999
|
border: 1px solid ${t(colors.gray[200], colors.darkGray[600])};
|
|
2000
2000
|
border-radius: ${border.radius.sm};
|
|
2001
2001
|
background: ${t(colors.white, colors.darkGray[900])};
|
|
2002
|
-
min-height: 260px;
|
|
2003
2002
|
max-height: 420px;
|
|
2004
2003
|
overflow: auto;
|
|
2005
2004
|
padding: ${size[2]} ${size[2]} ${size[2]} ${size[5]};
|
|
@@ -2874,7 +2873,7 @@ var stylesFactory = (theme) => {
|
|
|
2874
2873
|
gap: ${size[3]};
|
|
2875
2874
|
align-items: start;
|
|
2876
2875
|
& > * {
|
|
2877
|
-
|
|
2876
|
+
max-height: 420px;
|
|
2878
2877
|
border: 1px solid oklch(0.28 0.03 260);
|
|
2879
2878
|
border-radius: 6px;
|
|
2880
2879
|
background: oklch(0.18 0.02 260);
|
|
@@ -3935,7 +3934,6 @@ var stylesFactory = (theme) => {
|
|
|
3935
3934
|
`,
|
|
3936
3935
|
stepJsonPanel: css2`
|
|
3937
3936
|
margin: ${size[1.5]} ${size[3]};
|
|
3938
|
-
min-height: 280px;
|
|
3939
3937
|
max-height: 520px;
|
|
3940
3938
|
overflow: auto;
|
|
3941
3939
|
padding: ${size[2]} ${size[2]} ${size[2]} ${size[5]};
|
|
@@ -3953,6 +3951,7 @@ var stylesFactory = (theme) => {
|
|
|
3953
3951
|
grid-template-columns: repeat(2, minmax(320px, 1fr));
|
|
3954
3952
|
gap: ${size[3]};
|
|
3955
3953
|
align-items: start;
|
|
3954
|
+
padding-left: ${size[3]};
|
|
3956
3955
|
padding-right: ${size[3]};
|
|
3957
3956
|
@media (max-width: 760px) {
|
|
3958
3957
|
grid-template-columns: 1fr;
|
|
@@ -4346,12 +4345,6 @@ function applyHookEvent(state, eventName, event) {
|
|
|
4346
4345
|
markHookViewed(state, state.activeHookId);
|
|
4347
4346
|
}
|
|
4348
4347
|
}
|
|
4349
|
-
function setActiveHook(state, hookId) {
|
|
4350
|
-
state.activeHookId = hookId;
|
|
4351
|
-
if (hookId) {
|
|
4352
|
-
markHookViewed(state, hookId);
|
|
4353
|
-
}
|
|
4354
|
-
}
|
|
4355
4348
|
function clearHookRegistry(state) {
|
|
4356
4349
|
state.hooks = {};
|
|
4357
4350
|
state.runs = {};
|
|
@@ -4503,8 +4496,8 @@ function removeHookRecord(state, hookId) {
|
|
|
4503
4496
|
delete state.runs[runId];
|
|
4504
4497
|
}
|
|
4505
4498
|
}
|
|
4506
|
-
for (const
|
|
4507
|
-
delete state.events[
|
|
4499
|
+
for (const eventId3 of hookEventIds) {
|
|
4500
|
+
delete state.events[eventId3];
|
|
4508
4501
|
}
|
|
4509
4502
|
delete state.hooks[hookId];
|
|
4510
4503
|
delete state.seenHookActivityCounts[hookId];
|
|
@@ -4512,7 +4505,7 @@ function removeHookRecord(state, hookId) {
|
|
|
4512
4505
|
state.activeHookId = null;
|
|
4513
4506
|
}
|
|
4514
4507
|
}
|
|
4515
|
-
function upsertRun(state, event,
|
|
4508
|
+
function upsertRun(state, event, eventId3) {
|
|
4516
4509
|
const existing = state.runs[event.runId];
|
|
4517
4510
|
if (!existing) {
|
|
4518
4511
|
state.runs[event.runId] = {
|
|
@@ -4526,7 +4519,7 @@ function upsertRun(state, event, eventId2) {
|
|
|
4526
4519
|
updatedAt: event.timestamp,
|
|
4527
4520
|
...isTerminalRunStatus(event.status) ? { completedAt: event.timestamp } : {},
|
|
4528
4521
|
...event.error ? { error: event.error } : {},
|
|
4529
|
-
eventIds: [
|
|
4522
|
+
eventIds: [eventId3]
|
|
4530
4523
|
};
|
|
4531
4524
|
return;
|
|
4532
4525
|
}
|
|
@@ -4542,8 +4535,8 @@ function upsertRun(state, event, eventId2) {
|
|
|
4542
4535
|
if (event.error) {
|
|
4543
4536
|
existing.error = event.error;
|
|
4544
4537
|
}
|
|
4545
|
-
if (!existing.eventIds.includes(
|
|
4546
|
-
existing.eventIds.push(
|
|
4538
|
+
if (!existing.eventIds.includes(eventId3)) {
|
|
4539
|
+
existing.eventIds.push(eventId3);
|
|
4547
4540
|
}
|
|
4548
4541
|
}
|
|
4549
4542
|
function attachRunToHook(state, hookId, runId) {
|
|
@@ -4551,7 +4544,7 @@ function attachRunToHook(state, hookId, runId) {
|
|
|
4551
4544
|
if (!hook || hook.runIds.includes(runId)) return;
|
|
4552
4545
|
hook.runIds.push(runId);
|
|
4553
4546
|
}
|
|
4554
|
-
function syncRunsFromSnapshot(state, snapshot,
|
|
4547
|
+
function syncRunsFromSnapshot(state, snapshot, eventId3) {
|
|
4555
4548
|
const rawRuns = snapshot.state.runs;
|
|
4556
4549
|
if (!Array.isArray(rawRuns)) return;
|
|
4557
4550
|
for (const candidate of rawRuns) {
|
|
@@ -4574,7 +4567,7 @@ function syncRunsFromSnapshot(state, snapshot, eventId2) {
|
|
|
4574
4567
|
updatedAt,
|
|
4575
4568
|
...typeof run.completedAt === "number" ? { completedAt: run.completedAt } : isTerminalRunStatus(status) ? { completedAt: updatedAt } : {},
|
|
4576
4569
|
...typeof run.error === "string" ? { error: run.error } : {},
|
|
4577
|
-
eventIds: [
|
|
4570
|
+
eventIds: [eventId3]
|
|
4578
4571
|
};
|
|
4579
4572
|
} else {
|
|
4580
4573
|
existing.hookId = snapshot.hookId;
|
|
@@ -4586,8 +4579,8 @@ function syncRunsFromSnapshot(state, snapshot, eventId2) {
|
|
|
4586
4579
|
existing.completedAt = updatedAt;
|
|
4587
4580
|
}
|
|
4588
4581
|
if (typeof run.error === "string") existing.error = run.error;
|
|
4589
|
-
if (!existing.eventIds.includes(
|
|
4590
|
-
existing.eventIds.push(
|
|
4582
|
+
if (!existing.eventIds.includes(eventId3)) {
|
|
4583
|
+
existing.eventIds.push(eventId3);
|
|
4591
4584
|
}
|
|
4592
4585
|
}
|
|
4593
4586
|
attachRunToHook(state, snapshot.hookId, run.id);
|
|
@@ -4617,11 +4610,11 @@ function attachActivityRunToHook(state, hookId, runId) {
|
|
|
4617
4610
|
if (!hook || hook.activityRunIds.includes(runId)) return;
|
|
4618
4611
|
hook.activityRunIds.push(runId);
|
|
4619
4612
|
}
|
|
4620
|
-
function attachEventToHook(state, hookId,
|
|
4613
|
+
function attachEventToHook(state, hookId, eventId3) {
|
|
4621
4614
|
if (!hookId) return;
|
|
4622
4615
|
const hook = state.hooks[hookId];
|
|
4623
|
-
if (!hook || hook.eventIds.includes(
|
|
4624
|
-
hook.eventIds.push(
|
|
4616
|
+
if (!hook || hook.eventIds.includes(eventId3)) return;
|
|
4617
|
+
hook.eventIds.push(eventId3);
|
|
4625
4618
|
}
|
|
4626
4619
|
function inferLifecycleFromSnapshot(state) {
|
|
4627
4620
|
if (state.status === "error" || state.error) {
|
|
@@ -4764,6 +4757,80 @@ function clearMemoryRegistry(state) {
|
|
|
4764
4757
|
state.scopes = {};
|
|
4765
4758
|
}
|
|
4766
4759
|
|
|
4760
|
+
// src/store/compaction-registry.ts
|
|
4761
|
+
var MAX_EVENTS = 50;
|
|
4762
|
+
function createCompactionRegistryState() {
|
|
4763
|
+
return { events: [] };
|
|
4764
|
+
}
|
|
4765
|
+
function eventId2(kind, event) {
|
|
4766
|
+
return [
|
|
4767
|
+
"cmp",
|
|
4768
|
+
kind,
|
|
4769
|
+
String(event.timestamp),
|
|
4770
|
+
event.hookId ?? event.clientId ?? event.threadId ?? "unknown",
|
|
4771
|
+
String(event.before ?? event.after ?? "")
|
|
4772
|
+
].join("-");
|
|
4773
|
+
}
|
|
4774
|
+
function applyCompactionEvent(state, kind, event) {
|
|
4775
|
+
state.events.push({
|
|
4776
|
+
id: event.eventId ?? eventId2(kind, event),
|
|
4777
|
+
kind,
|
|
4778
|
+
timestamp: event.timestamp,
|
|
4779
|
+
hookId: event.hookId,
|
|
4780
|
+
clientId: event.clientId,
|
|
4781
|
+
threadId: event.threadId,
|
|
4782
|
+
runId: event.runId,
|
|
4783
|
+
before: event.before,
|
|
4784
|
+
after: event.after,
|
|
4785
|
+
messagesBefore: event.messagesBefore,
|
|
4786
|
+
messagesAfter: event.messagesAfter,
|
|
4787
|
+
reusedCheckpoint: event.reusedCheckpoint,
|
|
4788
|
+
maxTokens: event.maxTokens,
|
|
4789
|
+
strategyKey: event.strategyKey,
|
|
4790
|
+
durationMs: event.durationMs,
|
|
4791
|
+
dropped: event.dropped,
|
|
4792
|
+
result: event.result
|
|
4793
|
+
});
|
|
4794
|
+
if (state.events.length > MAX_EVENTS) {
|
|
4795
|
+
state.events.splice(0, state.events.length - MAX_EVENTS);
|
|
4796
|
+
}
|
|
4797
|
+
}
|
|
4798
|
+
function clearCompactionRegistry(state) {
|
|
4799
|
+
state.events = [];
|
|
4800
|
+
}
|
|
4801
|
+
function compactionEventsForHook(state, hook) {
|
|
4802
|
+
const matched = state.events.filter((event) => {
|
|
4803
|
+
if (event.hookId && event.hookId === hook.id) return true;
|
|
4804
|
+
if (event.clientId && hook.clientId && event.clientId === hook.clientId) {
|
|
4805
|
+
return true;
|
|
4806
|
+
}
|
|
4807
|
+
if (event.threadId && hook.threadId && event.threadId === hook.threadId) {
|
|
4808
|
+
return true;
|
|
4809
|
+
}
|
|
4810
|
+
return false;
|
|
4811
|
+
});
|
|
4812
|
+
if (matched.length > 0) return matched;
|
|
4813
|
+
return state.events;
|
|
4814
|
+
}
|
|
4815
|
+
|
|
4816
|
+
// src/store/skills-registry.ts
|
|
4817
|
+
function createSkillsRegistryState() {
|
|
4818
|
+
return { snapshots: {} };
|
|
4819
|
+
}
|
|
4820
|
+
function clearSkillsRegistry(state) {
|
|
4821
|
+
state.snapshots = {};
|
|
4822
|
+
}
|
|
4823
|
+
function applySkillsSnapshot(state, payload) {
|
|
4824
|
+
const key = payload.hookId && payload.hookId.length > 0 ? payload.hookId : "_default";
|
|
4825
|
+
const catalog = Array.isArray(payload.catalog) ? payload.catalog : [];
|
|
4826
|
+
const activated = Array.isArray(payload.activated) ? payload.activated : [];
|
|
4827
|
+
state.snapshots[key] = {
|
|
4828
|
+
catalog,
|
|
4829
|
+
activated,
|
|
4830
|
+
updatedAt: payload.timestamp ?? Date.now()
|
|
4831
|
+
};
|
|
4832
|
+
}
|
|
4833
|
+
|
|
4767
4834
|
// src/store/ai-context.tsx
|
|
4768
4835
|
var AIContext = createContext();
|
|
4769
4836
|
function useAIStore() {
|
|
@@ -4778,7 +4845,9 @@ var AIProvider = (props) => {
|
|
|
4778
4845
|
conversations: {},
|
|
4779
4846
|
activeConversationId: null,
|
|
4780
4847
|
hooks: createHookRegistryState(),
|
|
4781
|
-
memory: createMemoryRegistryState()
|
|
4848
|
+
memory: createMemoryRegistryState(),
|
|
4849
|
+
compaction: createCompactionRegistryState(),
|
|
4850
|
+
skills: createSkillsRegistryState()
|
|
4782
4851
|
});
|
|
4783
4852
|
const streamToConversation = /* @__PURE__ */ new Map();
|
|
4784
4853
|
const requestToConversation = /* @__PURE__ */ new Map();
|
|
@@ -5035,11 +5104,24 @@ var AIProvider = (props) => {
|
|
|
5035
5104
|
clearMemoryRegistry(memory);
|
|
5036
5105
|
}));
|
|
5037
5106
|
}
|
|
5038
|
-
function
|
|
5039
|
-
setState("
|
|
5040
|
-
|
|
5107
|
+
function clearCompaction() {
|
|
5108
|
+
setState("compaction", produce((compaction) => {
|
|
5109
|
+
clearCompactionRegistry(compaction);
|
|
5041
5110
|
}));
|
|
5042
5111
|
}
|
|
5112
|
+
function clearSkills() {
|
|
5113
|
+
setState("skills", produce((skills) => {
|
|
5114
|
+
clearSkillsRegistry(skills);
|
|
5115
|
+
}));
|
|
5116
|
+
}
|
|
5117
|
+
function selectHook(id) {
|
|
5118
|
+
setState("hooks", "activeHookId", id);
|
|
5119
|
+
if (id) {
|
|
5120
|
+
setState("hooks", produce((hooks) => {
|
|
5121
|
+
markHookViewed(hooks, id);
|
|
5122
|
+
}));
|
|
5123
|
+
}
|
|
5124
|
+
}
|
|
5043
5125
|
function saveToolFixture(fixture) {
|
|
5044
5126
|
const fixtures = mergeFixtures(fixture, state.hooks.fixtures);
|
|
5045
5127
|
setState("hooks", produce((hooks) => {
|
|
@@ -5359,6 +5441,10 @@ var AIProvider = (props) => {
|
|
|
5359
5441
|
setState("memory", produce((memory) => {
|
|
5360
5442
|
applyMemorySnapshot(memory, e.payload);
|
|
5361
5443
|
}));
|
|
5444
|
+
}), aiEventClient.on("skills:snapshot", (e) => {
|
|
5445
|
+
setState("skills", produce((skills) => {
|
|
5446
|
+
applySkillsSnapshot(skills, e.payload);
|
|
5447
|
+
}));
|
|
5362
5448
|
}));
|
|
5363
5449
|
const recordRunEvent = (eventName, payload) => {
|
|
5364
5450
|
setState("hooks", produce((hooks) => {
|
|
@@ -6542,6 +6628,48 @@ var AIProvider = (props) => {
|
|
|
6542
6628
|
arr.push(mwEvent);
|
|
6543
6629
|
}));
|
|
6544
6630
|
}));
|
|
6631
|
+
const recordCompactionLifecycle = (kind, hookName, payload) => {
|
|
6632
|
+
setState("compaction", produce((compaction) => {
|
|
6633
|
+
applyCompactionEvent(compaction, kind, payload);
|
|
6634
|
+
}));
|
|
6635
|
+
const {
|
|
6636
|
+
requestId,
|
|
6637
|
+
streamId,
|
|
6638
|
+
clientId
|
|
6639
|
+
} = payload;
|
|
6640
|
+
const conversationId = (clientId && state.conversations[clientId] ? clientId : void 0) || (streamId ? streamToConversation.get(streamId) : void 0) || (requestId ? requestToConversation.get(requestId) : void 0);
|
|
6641
|
+
if (!conversationId || !state.conversations[conversationId]) return;
|
|
6642
|
+
const conv = state.conversations[conversationId];
|
|
6643
|
+
const iterIndex = findLatestIterationIndex(conv, requestId);
|
|
6644
|
+
if (iterIndex < 0) return;
|
|
6645
|
+
const mwEvent = {
|
|
6646
|
+
id: `mw-cmp-${kind}-${Date.now()}-${Math.random()}`,
|
|
6647
|
+
middlewareName: "compaction",
|
|
6648
|
+
hookName,
|
|
6649
|
+
timestamp: payload.timestamp,
|
|
6650
|
+
hasTransform: kind === "state",
|
|
6651
|
+
configChanges: {
|
|
6652
|
+
before: payload.before,
|
|
6653
|
+
after: payload.after,
|
|
6654
|
+
messagesBefore: payload.messagesBefore,
|
|
6655
|
+
messagesAfter: payload.messagesAfter,
|
|
6656
|
+
reusedCheckpoint: payload.reusedCheckpoint,
|
|
6657
|
+
maxTokens: payload.maxTokens,
|
|
6658
|
+
strategyKey: payload.strategyKey,
|
|
6659
|
+
durationMs: payload.durationMs
|
|
6660
|
+
}
|
|
6661
|
+
};
|
|
6662
|
+
setState("conversations", conversationId, "iterations", iterIndex, "middlewareEvents", produce((arr) => {
|
|
6663
|
+
arr.push(mwEvent);
|
|
6664
|
+
}));
|
|
6665
|
+
};
|
|
6666
|
+
cleanupFns.push(aiEventClient.on("compaction:started", (e) => {
|
|
6667
|
+
recordCompactionLifecycle("started", "onCompactStart", e.payload);
|
|
6668
|
+
}), aiEventClient.on("compaction:state", (e) => {
|
|
6669
|
+
recordCompactionLifecycle("state", "onCompact", e.payload);
|
|
6670
|
+
}), aiEventClient.on("compaction:ended", (e) => {
|
|
6671
|
+
recordCompactionLifecycle("ended", "onCompactEnd", e.payload);
|
|
6672
|
+
}));
|
|
6545
6673
|
cleanupFns.push(aiEventClient.on("summarize:request:started", (e) => {
|
|
6546
6674
|
const {
|
|
6547
6675
|
requestId,
|
|
@@ -6935,6 +7063,8 @@ var AIProvider = (props) => {
|
|
|
6935
7063
|
selectConversation,
|
|
6936
7064
|
clearHooks,
|
|
6937
7065
|
clearMemory,
|
|
7066
|
+
clearCompaction,
|
|
7067
|
+
clearSkills,
|
|
6938
7068
|
selectHook,
|
|
6939
7069
|
saveToolFixture,
|
|
6940
7070
|
deleteToolFixture,
|
|
@@ -7069,8 +7199,9 @@ var HookDashboard = () => {
|
|
|
7069
7199
|
const unseenUpdateCount = createMemo(() => hooks().reduce((count, hook) => count + getHookUnseenEventCount(state.hooks, hook.id), 0));
|
|
7070
7200
|
const handleSelect = (hook) => {
|
|
7071
7201
|
selectHook(hook.id);
|
|
7072
|
-
|
|
7073
|
-
|
|
7202
|
+
const conversationId = hook.id || hook.clientId || hook.threadId;
|
|
7203
|
+
if (conversationId && state.conversations[conversationId]) {
|
|
7204
|
+
selectConversation(conversationId);
|
|
7074
7205
|
}
|
|
7075
7206
|
};
|
|
7076
7207
|
return (() => {
|
|
@@ -7546,6 +7677,9 @@ var MiddlewareStep = (props) => {
|
|
|
7546
7677
|
if (ev().wasDropped) return "DROP";
|
|
7547
7678
|
if (ev().hookName === "onChunk" && ev().hasTransform) return "TRANSFORM";
|
|
7548
7679
|
if (ev().hookName === "onConfig" && ev().hasTransform) return "TRANSFORM";
|
|
7680
|
+
if (ev().hookName === "onCompactStart") return "START";
|
|
7681
|
+
if (ev().hookName === "onCompact") return "COMPACT";
|
|
7682
|
+
if (ev().hookName === "onCompactEnd") return "END";
|
|
7549
7683
|
if (ev().hookName === "onBeforeToolCall" && ev().hasTransform) return "DECISION";
|
|
7550
7684
|
return null;
|
|
7551
7685
|
};
|
|
@@ -7555,6 +7689,9 @@ var MiddlewareStep = (props) => {
|
|
|
7555
7689
|
};
|
|
7556
7690
|
return [(() => {
|
|
7557
7691
|
var _el$ = _tmpl$32(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling;
|
|
7692
|
+
_el$.$$click = () => {
|
|
7693
|
+
if (hasChanges()) setExpanded(!expanded());
|
|
7694
|
+
};
|
|
7558
7695
|
insert(_el$3, () => ev().middlewareName);
|
|
7559
7696
|
insert(_el$4, () => ev().hookName);
|
|
7560
7697
|
insert(_el$, createComponent(Show, {
|
|
@@ -7585,24 +7722,27 @@ var MiddlewareStep = (props) => {
|
|
|
7585
7722
|
},
|
|
7586
7723
|
get children() {
|
|
7587
7724
|
var _el$8 = _tmpl$22();
|
|
7588
|
-
_el$8.$$click = () => setExpanded(!expanded());
|
|
7589
7725
|
insert(_el$8, () => expanded() ? "hide changes" : "show changes");
|
|
7590
7726
|
effect(() => className(_el$8, s().stepExpandToggle));
|
|
7591
7727
|
return _el$8;
|
|
7592
7728
|
}
|
|
7593
7729
|
}), null);
|
|
7594
7730
|
effect((_p$) => {
|
|
7595
|
-
var _v$ = s().step, _v$2 =
|
|
7731
|
+
var _v$ = s().step, _v$2 = hasChanges() ? {
|
|
7732
|
+
cursor: "pointer"
|
|
7733
|
+
} : void 0, _v$3 = `${s().stepPrefix} ${s().stepPrefixMiddleware}`, _v$4 = `${s().mwBadge} ${badgeClass()}`, _v$5 = s().mwHook;
|
|
7596
7734
|
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
7597
|
-
|
|
7598
|
-
_v$3 !== _p$.a && className(_el$
|
|
7599
|
-
_v$4 !== _p$.o && className(_el$
|
|
7735
|
+
_p$.t = style(_el$, _v$2, _p$.t);
|
|
7736
|
+
_v$3 !== _p$.a && className(_el$2, _p$.a = _v$3);
|
|
7737
|
+
_v$4 !== _p$.o && className(_el$3, _p$.o = _v$4);
|
|
7738
|
+
_v$5 !== _p$.i && className(_el$4, _p$.i = _v$5);
|
|
7600
7739
|
return _p$;
|
|
7601
7740
|
}, {
|
|
7602
7741
|
e: void 0,
|
|
7603
7742
|
t: void 0,
|
|
7604
7743
|
a: void 0,
|
|
7605
|
-
o: void 0
|
|
7744
|
+
o: void 0,
|
|
7745
|
+
i: void 0
|
|
7606
7746
|
});
|
|
7607
7747
|
return _el$;
|
|
7608
7748
|
})(), createComponent(Show, {
|
|
@@ -7658,9 +7798,9 @@ var ThinkingStep = (props) => {
|
|
|
7658
7798
|
}
|
|
7659
7799
|
}), null);
|
|
7660
7800
|
effect((_p$) => {
|
|
7661
|
-
var _v$
|
|
7662
|
-
_v$
|
|
7663
|
-
_v$
|
|
7801
|
+
var _v$6 = `${s().stepPrefix} ${s().stepPrefixThinking}`, _v$7 = s().stepContent;
|
|
7802
|
+
_v$6 !== _p$.e && className(_el$1, _p$.e = _v$6);
|
|
7803
|
+
_v$7 !== _p$.t && className(_el$10, _p$.t = _v$7);
|
|
7664
7804
|
return _p$;
|
|
7665
7805
|
}, {
|
|
7666
7806
|
e: void 0,
|
|
@@ -7714,10 +7854,10 @@ var StructuredOutputStep = (props) => {
|
|
|
7714
7854
|
}), false, true);
|
|
7715
7855
|
insert(_el$15, () => part().status);
|
|
7716
7856
|
effect((_p$) => {
|
|
7717
|
-
var _v$
|
|
7718
|
-
_v$
|
|
7719
|
-
_v$
|
|
7720
|
-
_v$
|
|
7857
|
+
var _v$8 = `${s().stepPrefix} ${s().stepPrefixAssistant}`, _v$9 = `${s().mwBadge} ${badgeClass()}`, _v$0 = `${s().chevron} ${expanded() ? s().chevronOpen : ""}`;
|
|
7858
|
+
_v$8 !== _p$.e && className(_el$14, _p$.e = _v$8);
|
|
7859
|
+
_v$9 !== _p$.t && className(_el$15, _p$.t = _v$9);
|
|
7860
|
+
_v$0 !== _p$.a && className(_el$16, _p$.a = _v$0);
|
|
7721
7861
|
return _p$;
|
|
7722
7862
|
}, {
|
|
7723
7863
|
e: void 0,
|
|
@@ -7742,10 +7882,10 @@ var StructuredOutputStep = (props) => {
|
|
|
7742
7882
|
copyable: true
|
|
7743
7883
|
}));
|
|
7744
7884
|
effect((_p$) => {
|
|
7745
|
-
var _v$
|
|
7746
|
-
_v$
|
|
7747
|
-
_v$
|
|
7748
|
-
_v$
|
|
7885
|
+
var _v$11 = s().stepJsonItem, _v$12 = s().stepJsonItemLabel, _v$13 = s().stepJsonPanel;
|
|
7886
|
+
_v$11 !== _p$.e && className(_el$19, _p$.e = _v$11);
|
|
7887
|
+
_v$12 !== _p$.t && className(_el$20, _p$.t = _v$12);
|
|
7888
|
+
_v$13 !== _p$.a && className(_el$21, _p$.a = _v$13);
|
|
7749
7889
|
return _p$;
|
|
7750
7890
|
}, {
|
|
7751
7891
|
e: void 0,
|
|
@@ -7756,9 +7896,9 @@ var StructuredOutputStep = (props) => {
|
|
|
7756
7896
|
})()
|
|
7757
7897
|
}));
|
|
7758
7898
|
effect((_p$) => {
|
|
7759
|
-
var _v$
|
|
7760
|
-
_v$
|
|
7761
|
-
_v$
|
|
7899
|
+
var _v$1 = `${s().cardBody} ${expanded() ? s().cardBodyOpen : ""}`, _v$10 = `${s().cardBodyInner} ${s().stepJsonItemsCompare}`;
|
|
7900
|
+
_v$1 !== _p$.e && className(_el$17, _p$.e = _v$1);
|
|
7901
|
+
_v$10 !== _p$.t && className(_el$18, _p$.t = _v$10);
|
|
7762
7902
|
return _p$;
|
|
7763
7903
|
}, {
|
|
7764
7904
|
e: void 0,
|
|
@@ -7807,9 +7947,9 @@ var AssistantStep = (props) => {
|
|
|
7807
7947
|
}
|
|
7808
7948
|
}), null);
|
|
7809
7949
|
effect((_p$) => {
|
|
7810
|
-
var _v$
|
|
7811
|
-
_v$
|
|
7812
|
-
_v$
|
|
7950
|
+
var _v$14 = `${s().stepPrefix} ${s().stepPrefixAssistant}`, _v$15 = isLong() ? s().stepContentLong : s().stepContent;
|
|
7951
|
+
_v$14 !== _p$.e && className(_el$23, _p$.e = _v$14);
|
|
7952
|
+
_v$15 !== _p$.t && className(_el$24, _p$.t = _v$15);
|
|
7813
7953
|
return _p$;
|
|
7814
7954
|
}, {
|
|
7815
7955
|
e: void 0,
|
|
@@ -7900,10 +8040,10 @@ var ToolCallStep = (props) => {
|
|
|
7900
8040
|
}
|
|
7901
8041
|
}), _el$32);
|
|
7902
8042
|
effect((_p$) => {
|
|
7903
|
-
var _v$
|
|
7904
|
-
_v$
|
|
7905
|
-
_v$
|
|
7906
|
-
_v$
|
|
8043
|
+
var _v$16 = `${s().stepPrefix} ${s().stepPrefixToolCall}`, _v$17 = `${s().mwBadge} ${s().mwBadgeToolCall}`, _v$18 = `${s().chevron} ${argsOpen() ? s().chevronOpen : ""}`;
|
|
8044
|
+
_v$16 !== _p$.e && className(_el$28, _p$.e = _v$16);
|
|
8045
|
+
_v$17 !== _p$.t && className(_el$29, _p$.t = _v$17);
|
|
8046
|
+
_v$18 !== _p$.a && className(_el$32, _p$.a = _v$18);
|
|
7907
8047
|
return _p$;
|
|
7908
8048
|
}, {
|
|
7909
8049
|
e: void 0,
|
|
@@ -7921,10 +8061,10 @@ var ToolCallStep = (props) => {
|
|
|
7921
8061
|
copyable: true
|
|
7922
8062
|
}));
|
|
7923
8063
|
effect((_p$) => {
|
|
7924
|
-
var _v$
|
|
7925
|
-
_v$
|
|
7926
|
-
_v$
|
|
7927
|
-
_v$
|
|
8064
|
+
var _v$19 = `${s().cardBody} ${argsOpen() ? s().cardBodyOpen : ""}`, _v$20 = s().cardBodyInner, _v$21 = s().stepJsonPanel;
|
|
8065
|
+
_v$19 !== _p$.e && className(_el$33, _p$.e = _v$19);
|
|
8066
|
+
_v$20 !== _p$.t && className(_el$34, _p$.t = _v$20);
|
|
8067
|
+
_v$21 !== _p$.a && className(_el$35, _p$.a = _v$21);
|
|
7928
8068
|
return _p$;
|
|
7929
8069
|
}, {
|
|
7930
8070
|
e: void 0,
|
|
@@ -7970,10 +8110,10 @@ var ToolCallStep = (props) => {
|
|
|
7970
8110
|
}
|
|
7971
8111
|
}), _el$41);
|
|
7972
8112
|
effect((_p$) => {
|
|
7973
|
-
var _v$
|
|
7974
|
-
_v$
|
|
7975
|
-
_v$
|
|
7976
|
-
_v$
|
|
8113
|
+
var _v$22 = `${s().stepPrefix} ${s().stepPrefixToolResult}`, _v$23 = `${s().mwBadge} ${s().mwBadgeToolResult}`, _v$24 = `${s().chevron} ${resultOpen() ? s().chevronOpen : ""}`;
|
|
8114
|
+
_v$22 !== _p$.e && className(_el$37, _p$.e = _v$22);
|
|
8115
|
+
_v$23 !== _p$.t && className(_el$38, _p$.t = _v$23);
|
|
8116
|
+
_v$24 !== _p$.a && className(_el$41, _p$.a = _v$24);
|
|
7977
8117
|
return _p$;
|
|
7978
8118
|
}, {
|
|
7979
8119
|
e: void 0,
|
|
@@ -7991,10 +8131,10 @@ var ToolCallStep = (props) => {
|
|
|
7991
8131
|
copyable: true
|
|
7992
8132
|
}));
|
|
7993
8133
|
effect((_p$) => {
|
|
7994
|
-
var _v$
|
|
7995
|
-
_v$
|
|
7996
|
-
_v$
|
|
7997
|
-
_v$
|
|
8134
|
+
var _v$25 = `${s().cardBody} ${resultOpen() ? s().cardBodyOpen : ""}`, _v$26 = s().cardBodyInner, _v$27 = s().stepJsonPanel;
|
|
8135
|
+
_v$25 !== _p$.e && className(_el$42, _p$.e = _v$25);
|
|
8136
|
+
_v$26 !== _p$.t && className(_el$43, _p$.t = _v$26);
|
|
8137
|
+
_v$27 !== _p$.a && className(_el$44, _p$.a = _v$27);
|
|
7998
8138
|
return _p$;
|
|
7999
8139
|
}, {
|
|
8000
8140
|
e: void 0,
|
|
@@ -8034,9 +8174,9 @@ var ToolResultStep = (props) => {
|
|
|
8034
8174
|
}
|
|
8035
8175
|
}), false, true);
|
|
8036
8176
|
effect((_p$) => {
|
|
8037
|
-
var _v$
|
|
8038
|
-
_v$
|
|
8039
|
-
_v$
|
|
8177
|
+
var _v$28 = `${s().stepPrefix} ${s().stepPrefixToolResult}`, _v$29 = `${s().chevron} ${isOpen() ? s().chevronOpen : ""}`;
|
|
8178
|
+
_v$28 !== _p$.e && className(_el$47, _p$.e = _v$28);
|
|
8179
|
+
_v$29 !== _p$.t && className(_el$48, _p$.t = _v$29);
|
|
8040
8180
|
return _p$;
|
|
8041
8181
|
}, {
|
|
8042
8182
|
e: void 0,
|
|
@@ -8053,10 +8193,10 @@ var ToolResultStep = (props) => {
|
|
|
8053
8193
|
copyable: true
|
|
8054
8194
|
}));
|
|
8055
8195
|
effect((_p$) => {
|
|
8056
|
-
var _v$
|
|
8057
|
-
_v$
|
|
8058
|
-
_v$
|
|
8059
|
-
_v$
|
|
8196
|
+
var _v$30 = `${s().cardBody} ${isOpen() ? s().cardBodyOpen : ""}`, _v$31 = s().cardBodyInner, _v$32 = s().stepJsonPanel;
|
|
8197
|
+
_v$30 !== _p$.e && className(_el$49, _p$.e = _v$30);
|
|
8198
|
+
_v$31 !== _p$.t && className(_el$50, _p$.t = _v$31);
|
|
8199
|
+
_v$32 !== _p$.a && className(_el$51, _p$.a = _v$32);
|
|
8060
8200
|
return _p$;
|
|
8061
8201
|
}, {
|
|
8062
8202
|
e: void 0,
|
|
@@ -8329,9 +8469,9 @@ var IterationCard = (props) => {
|
|
|
8329
8469
|
var _el$69 = _tmpl$17(); _el$69.firstChild;
|
|
8330
8470
|
insert(_el$69, totalToolCalls, null);
|
|
8331
8471
|
effect((_p$) => {
|
|
8332
|
-
var _v$
|
|
8333
|
-
_v$
|
|
8334
|
-
_v$
|
|
8472
|
+
var _v$33 = `${s().badge} ${s().badgeFinishReasonToolCalls}`, _v$34 = `${totalToolCalls()} tool ${totalToolCalls() === 1 ? "call" : "calls"}`;
|
|
8473
|
+
_v$33 !== _p$.e && className(_el$69, _p$.e = _v$33);
|
|
8474
|
+
_v$34 !== _p$.t && setAttribute(_el$69, "title", _p$.t = _v$34);
|
|
8335
8475
|
return _p$;
|
|
8336
8476
|
}, {
|
|
8337
8477
|
e: void 0,
|
|
@@ -8348,9 +8488,9 @@ var IterationCard = (props) => {
|
|
|
8348
8488
|
var _el$71 = _tmpl$18(); _el$71.firstChild;
|
|
8349
8489
|
insert(_el$71, () => formatDuration(duration()), null);
|
|
8350
8490
|
effect((_p$) => {
|
|
8351
|
-
var _v$
|
|
8352
|
-
_v$
|
|
8353
|
-
_v$
|
|
8491
|
+
var _v$35 = `${s().badge} ${s().badgeDuration}`, _v$36 = formatDuration(duration());
|
|
8492
|
+
_v$35 !== _p$.e && className(_el$71, _p$.e = _v$35);
|
|
8493
|
+
_v$36 !== _p$.t && setAttribute(_el$71, "title", _p$.t = _v$36);
|
|
8354
8494
|
return _p$;
|
|
8355
8495
|
}, {
|
|
8356
8496
|
e: void 0,
|
|
@@ -8367,9 +8507,9 @@ var IterationCard = (props) => {
|
|
|
8367
8507
|
var _el$94 = _tmpl$25(); _el$94.firstChild;
|
|
8368
8508
|
insert(_el$94, () => usage().totalTokens.toLocaleString(), null);
|
|
8369
8509
|
effect((_p$) => {
|
|
8370
|
-
var _v$
|
|
8371
|
-
_v$
|
|
8372
|
-
_v$
|
|
8510
|
+
var _v$57 = `${s().badge} ${s().badgeUsage}`, _v$58 = `Prompt: ${usage().promptTokens.toLocaleString()} | Completion: ${usage().completionTokens.toLocaleString()}`;
|
|
8511
|
+
_v$57 !== _p$.e && className(_el$94, _p$.e = _v$57);
|
|
8512
|
+
_v$58 !== _p$.t && setAttribute(_el$94, "title", _p$.t = _v$58);
|
|
8373
8513
|
return _p$;
|
|
8374
8514
|
}, {
|
|
8375
8515
|
e: void 0,
|
|
@@ -8426,12 +8566,12 @@ var IterationCard = (props) => {
|
|
|
8426
8566
|
insert(_el$103, () => diff.from);
|
|
8427
8567
|
insert(_el$105, () => diff.to);
|
|
8428
8568
|
effect((_p$) => {
|
|
8429
|
-
var _v$
|
|
8430
|
-
_v$
|
|
8431
|
-
_v$
|
|
8432
|
-
_v$
|
|
8433
|
-
_v$
|
|
8434
|
-
_v$
|
|
8569
|
+
var _v$59 = s().configDiffRow, _v$60 = s().configDiffKey, _v$61 = s().configDiffFrom, _v$62 = s().configDiffArrow, _v$63 = s().configDiffTo;
|
|
8570
|
+
_v$59 !== _p$.e && className(_el$100, _p$.e = _v$59);
|
|
8571
|
+
_v$60 !== _p$.t && className(_el$101, _p$.t = _v$60);
|
|
8572
|
+
_v$61 !== _p$.a && className(_el$103, _p$.a = _v$61);
|
|
8573
|
+
_v$62 !== _p$.o && className(_el$104, _p$.o = _v$62);
|
|
8574
|
+
_v$63 !== _p$.i && className(_el$105, _p$.i = _v$63);
|
|
8435
8575
|
return _p$;
|
|
8436
8576
|
}, {
|
|
8437
8577
|
e: void 0,
|
|
@@ -8444,10 +8584,10 @@ var IterationCard = (props) => {
|
|
|
8444
8584
|
})()
|
|
8445
8585
|
}));
|
|
8446
8586
|
effect((_p$) => {
|
|
8447
|
-
var _v$
|
|
8448
|
-
_v$
|
|
8449
|
-
_v$
|
|
8450
|
-
_v$
|
|
8587
|
+
var _v$37 = s().configPanelSection, _v$38 = s().configPanelLabel, _v$39 = s().configDiffSection;
|
|
8588
|
+
_v$37 !== _p$.e && className(_el$78, _p$.e = _v$37);
|
|
8589
|
+
_v$38 !== _p$.t && className(_el$79, _p$.t = _v$38);
|
|
8590
|
+
_v$39 !== _p$.a && className(_el$80, _p$.a = _v$39);
|
|
8451
8591
|
return _p$;
|
|
8452
8592
|
}, {
|
|
8453
8593
|
e: void 0,
|
|
@@ -8472,9 +8612,9 @@ var IterationCard = (props) => {
|
|
|
8472
8612
|
insert(_el$106, name, _el$107);
|
|
8473
8613
|
insert(_el$107, () => toolInvocationCounts().get(name) || 0);
|
|
8474
8614
|
effect((_p$) => {
|
|
8475
|
-
var _v$
|
|
8476
|
-
_v$
|
|
8477
|
-
_v$
|
|
8615
|
+
var _v$64 = s().configToolChip, _v$65 = s().configToolChipCount;
|
|
8616
|
+
_v$64 !== _p$.e && className(_el$106, _p$.e = _v$64);
|
|
8617
|
+
_v$65 !== _p$.t && className(_el$107, _p$.t = _v$65);
|
|
8478
8618
|
return _p$;
|
|
8479
8619
|
}, {
|
|
8480
8620
|
e: void 0,
|
|
@@ -8484,10 +8624,10 @@ var IterationCard = (props) => {
|
|
|
8484
8624
|
})()
|
|
8485
8625
|
}));
|
|
8486
8626
|
effect((_p$) => {
|
|
8487
|
-
var _v$
|
|
8488
|
-
_v$
|
|
8489
|
-
_v$
|
|
8490
|
-
_v$
|
|
8627
|
+
var _v$40 = s().configPanelSection, _v$41 = s().configPanelLabel, _v$42 = s().configToolsList;
|
|
8628
|
+
_v$40 !== _p$.e && className(_el$81, _p$.e = _v$40);
|
|
8629
|
+
_v$41 !== _p$.t && className(_el$82, _p$.t = _v$41);
|
|
8630
|
+
_v$42 !== _p$.a && className(_el$83, _p$.a = _v$42);
|
|
8491
8631
|
return _p$;
|
|
8492
8632
|
}, {
|
|
8493
8633
|
e: void 0,
|
|
@@ -8516,9 +8656,9 @@ var IterationCard = (props) => {
|
|
|
8516
8656
|
})
|
|
8517
8657
|
}), null);
|
|
8518
8658
|
effect((_p$) => {
|
|
8519
|
-
var _v$
|
|
8520
|
-
_v$
|
|
8521
|
-
_v$
|
|
8659
|
+
var _v$43 = s().configPanelSection, _v$44 = s().configPanelLabel;
|
|
8660
|
+
_v$43 !== _p$.e && className(_el$84, _p$.e = _v$43);
|
|
8661
|
+
_v$44 !== _p$.t && className(_el$85, _p$.t = _v$44);
|
|
8522
8662
|
return _p$;
|
|
8523
8663
|
}, {
|
|
8524
8664
|
e: void 0,
|
|
@@ -8541,10 +8681,10 @@ var IterationCard = (props) => {
|
|
|
8541
8681
|
copyable: true
|
|
8542
8682
|
}));
|
|
8543
8683
|
effect((_p$) => {
|
|
8544
|
-
var _v$
|
|
8545
|
-
_v$
|
|
8546
|
-
_v$
|
|
8547
|
-
_v$
|
|
8684
|
+
var _v$45 = s().configPanelSection, _v$46 = s().configPanelLabel, _v$47 = s().configJsonTreeContainer;
|
|
8685
|
+
_v$45 !== _p$.e && className(_el$89, _p$.e = _v$45);
|
|
8686
|
+
_v$46 !== _p$.t && className(_el$90, _p$.t = _v$46);
|
|
8687
|
+
_v$47 !== _p$.a && className(_el$91, _p$.a = _v$47);
|
|
8548
8688
|
return _p$;
|
|
8549
8689
|
}, {
|
|
8550
8690
|
e: void 0,
|
|
@@ -8646,16 +8786,16 @@ var IterationCard = (props) => {
|
|
|
8646
8786
|
})
|
|
8647
8787
|
}));
|
|
8648
8788
|
effect((_p$) => {
|
|
8649
|
-
var _v$
|
|
8650
|
-
_v$
|
|
8651
|
-
_v$
|
|
8652
|
-
_v$
|
|
8653
|
-
_v$
|
|
8654
|
-
_v$
|
|
8655
|
-
_v$
|
|
8656
|
-
_v$
|
|
8657
|
-
_v$
|
|
8658
|
-
_v$
|
|
8789
|
+
var _v$48 = s().cardHeaderContent, _v$49 = s().iterCardTitle, _v$50 = s().cardSubtitle, _v$51 = s().cardHeaderBadges, _v$52 = `${s().chevron} ${isOpen() ? s().chevronOpen : ""}`, _v$53 = `${s().configPanelWrapper} ${configExpanded() ? s().configPanelWrapperOpen : ""}`, _v$54 = s().configPanel, _v$55 = `${s().cardBody} ${isOpen() ? s().cardBodyOpen : ""}`, _v$56 = s().cardBodyInner;
|
|
8790
|
+
_v$48 !== _p$.e && className(_el$54, _p$.e = _v$48);
|
|
8791
|
+
_v$49 !== _p$.t && className(_el$55, _p$.t = _v$49);
|
|
8792
|
+
_v$50 !== _p$.a && className(_el$56, _p$.a = _v$50);
|
|
8793
|
+
_v$51 !== _p$.o && className(_el$67, _p$.o = _v$51);
|
|
8794
|
+
_v$52 !== _p$.i && className(_el$74, _p$.i = _v$52);
|
|
8795
|
+
_v$53 !== _p$.n && className(_el$75, _p$.n = _v$53);
|
|
8796
|
+
_v$54 !== _p$.s && className(_el$76, _p$.s = _v$54);
|
|
8797
|
+
_v$55 !== _p$.h && className(_el$92, _p$.h = _v$55);
|
|
8798
|
+
_v$56 !== _p$.r && className(_el$93, _p$.r = _v$56);
|
|
8659
8799
|
return _p$;
|
|
8660
8800
|
}, {
|
|
8661
8801
|
e: void 0,
|
|
@@ -10918,18 +11058,461 @@ var MemoryPanel = () => {
|
|
|
10918
11058
|
})();
|
|
10919
11059
|
};
|
|
10920
11060
|
delegateEvents(["click"]);
|
|
11061
|
+
var _tmpl$40 = /* @__PURE__ */ template(`<div><div></div><div>`);
|
|
11062
|
+
var _tmpl$214 = /* @__PURE__ */ template(`<div>`);
|
|
11063
|
+
var _tmpl$310 = /* @__PURE__ */ template(`<div><div> (<!>)`);
|
|
11064
|
+
var _tmpl$47 = /* @__PURE__ */ template(`<span> \u2192 <!> tok`);
|
|
11065
|
+
var _tmpl$57 = /* @__PURE__ */ template(`<span>ms`);
|
|
11066
|
+
var _tmpl$67 = /* @__PURE__ */ template(`<span>checkpoint`);
|
|
11067
|
+
var _tmpl$77 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-compaction-event style=cursor:pointer><span></span><span></span><span></span><span></span><span>\u25B6`);
|
|
11068
|
+
var _tmpl$87 = /* @__PURE__ */ template(`<div><span> event</span><button type=button>Clear`);
|
|
11069
|
+
var _tmpl$97 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-compaction-panel>`);
|
|
11070
|
+
var _tmpl$06 = /* @__PURE__ */ template(`<div>No compaction yet. When the transcript passes maxTokens, each compact appears here.`);
|
|
11071
|
+
function formatTime3(value) {
|
|
11072
|
+
const date = new Date(value);
|
|
11073
|
+
if (Number.isNaN(date.getTime())) return "";
|
|
11074
|
+
return date.toLocaleTimeString();
|
|
11075
|
+
}
|
|
11076
|
+
function shortStrategy(event) {
|
|
11077
|
+
const key = event.strategyKey;
|
|
11078
|
+
if (!key) return event.reusedCheckpoint ? "checkpoint" : "compaction";
|
|
11079
|
+
const cut = key.indexOf(":maxTokens=");
|
|
11080
|
+
return cut === -1 ? key : key.slice(0, cut);
|
|
11081
|
+
}
|
|
11082
|
+
var PreviewMessage = (props) => {
|
|
11083
|
+
const styles = useStyles();
|
|
11084
|
+
return (() => {
|
|
11085
|
+
var _el$ = _tmpl$40(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
|
|
11086
|
+
insert(_el$2, () => props.preview.role, null);
|
|
11087
|
+
insert(_el$2, createComponent(Show, {
|
|
11088
|
+
get when() {
|
|
11089
|
+
return props.preview.tokens > 0;
|
|
11090
|
+
},
|
|
11091
|
+
get children() {
|
|
11092
|
+
return ` \xB7 ${props.preview.tokens} tok`;
|
|
11093
|
+
}
|
|
11094
|
+
}), null);
|
|
11095
|
+
insert(_el$3, () => props.preview.text);
|
|
11096
|
+
effect((_p$) => {
|
|
11097
|
+
var _v$ = styles().hookDetails.message, _v$2 = styles().hookDetails.messageRole, _v$3 = styles().hookDetails.messageContent;
|
|
11098
|
+
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
11099
|
+
_v$2 !== _p$.t && className(_el$2, _p$.t = _v$2);
|
|
11100
|
+
_v$3 !== _p$.a && className(_el$3, _p$.a = _v$3);
|
|
11101
|
+
return _p$;
|
|
11102
|
+
}, {
|
|
11103
|
+
e: void 0,
|
|
11104
|
+
t: void 0,
|
|
11105
|
+
a: void 0
|
|
11106
|
+
});
|
|
11107
|
+
return _el$;
|
|
11108
|
+
})();
|
|
11109
|
+
};
|
|
11110
|
+
var PreviewColumn = (props) => {
|
|
11111
|
+
const styles = useStyles();
|
|
11112
|
+
const s = () => styles().iterationTimeline;
|
|
11113
|
+
return (() => {
|
|
11114
|
+
var _el$4 = _tmpl$310(), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild, _el$8 = _el$6.nextSibling; _el$8.nextSibling;
|
|
11115
|
+
insert(_el$5, () => props.title, _el$6);
|
|
11116
|
+
insert(_el$5, () => props.previews.length, _el$8);
|
|
11117
|
+
insert(_el$4, createComponent(Show, {
|
|
11118
|
+
get when() {
|
|
11119
|
+
return props.previews.length > 0;
|
|
11120
|
+
},
|
|
11121
|
+
get fallback() {
|
|
11122
|
+
return (() => {
|
|
11123
|
+
var _el$0 = _tmpl$214();
|
|
11124
|
+
insert(_el$0, () => props.empty);
|
|
11125
|
+
effect(() => className(_el$0, styles().hookDetails.emptySmall));
|
|
11126
|
+
return _el$0;
|
|
11127
|
+
})();
|
|
11128
|
+
},
|
|
11129
|
+
get children() {
|
|
11130
|
+
var _el$9 = _tmpl$214();
|
|
11131
|
+
insert(_el$9, createComponent(For, {
|
|
11132
|
+
get each() {
|
|
11133
|
+
return props.previews;
|
|
11134
|
+
},
|
|
11135
|
+
children: (preview) => createComponent(PreviewMessage, {
|
|
11136
|
+
preview
|
|
11137
|
+
})
|
|
11138
|
+
}));
|
|
11139
|
+
effect(() => className(_el$9, styles().memoryPanel.list));
|
|
11140
|
+
return _el$9;
|
|
11141
|
+
}
|
|
11142
|
+
}), null);
|
|
11143
|
+
effect((_p$) => {
|
|
11144
|
+
var _v$4 = s().stepJsonItem, _v$5 = s().stepJsonItemLabel;
|
|
11145
|
+
_v$4 !== _p$.e && className(_el$4, _p$.e = _v$4);
|
|
11146
|
+
_v$5 !== _p$.t && className(_el$5, _p$.t = _v$5);
|
|
11147
|
+
return _p$;
|
|
11148
|
+
}, {
|
|
11149
|
+
e: void 0,
|
|
11150
|
+
t: void 0
|
|
11151
|
+
});
|
|
11152
|
+
return _el$4;
|
|
11153
|
+
})();
|
|
11154
|
+
};
|
|
11155
|
+
function kindLabel(kind) {
|
|
11156
|
+
if (kind === "started") return "Started";
|
|
11157
|
+
if (kind === "ended") return "Ended";
|
|
11158
|
+
return "State";
|
|
11159
|
+
}
|
|
11160
|
+
var CompactEvent = (props) => {
|
|
11161
|
+
const styles = useStyles();
|
|
11162
|
+
const s = () => styles().iterationTimeline;
|
|
11163
|
+
const [expanded, setExpanded] = createSignal(props.defaultOpen === true);
|
|
11164
|
+
const event = () => props.event;
|
|
11165
|
+
const isState = () => event().kind === "state";
|
|
11166
|
+
const stats = () => ({
|
|
11167
|
+
kind: event().kind,
|
|
11168
|
+
before: event().before,
|
|
11169
|
+
after: event().after,
|
|
11170
|
+
messagesBefore: event().messagesBefore,
|
|
11171
|
+
messagesAfter: event().messagesAfter,
|
|
11172
|
+
maxTokens: event().maxTokens,
|
|
11173
|
+
strategyKey: event().strategyKey,
|
|
11174
|
+
reusedCheckpoint: event().reusedCheckpoint,
|
|
11175
|
+
durationMs: event().durationMs
|
|
11176
|
+
});
|
|
11177
|
+
const countLabel = () => {
|
|
11178
|
+
if (event().kind === "started") {
|
|
11179
|
+
return `${event().messagesBefore ?? 0} msgs \xB7 ${event().before ?? 0} tok`;
|
|
11180
|
+
}
|
|
11181
|
+
if (event().kind === "ended") {
|
|
11182
|
+
return `${event().messagesAfter ?? 0} msgs \xB7 ${event().after ?? 0} tok`;
|
|
11183
|
+
}
|
|
11184
|
+
return `${event().messagesBefore ?? 0} \u2192 ${event().messagesAfter ?? 0} msgs`;
|
|
11185
|
+
};
|
|
11186
|
+
return [(() => {
|
|
11187
|
+
var _el$1 = _tmpl$77(), _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$11.nextSibling, _el$20 = _el$12.nextSibling, _el$21 = _el$20.nextSibling;
|
|
11188
|
+
_el$1.$$click = () => setExpanded(!expanded());
|
|
11189
|
+
insert(_el$10, () => kindLabel(event().kind));
|
|
11190
|
+
insert(_el$11, () => shortStrategy(event()));
|
|
11191
|
+
insert(_el$12, countLabel);
|
|
11192
|
+
insert(_el$1, createComponent(Show, {
|
|
11193
|
+
get when() {
|
|
11194
|
+
return event().kind === "state";
|
|
11195
|
+
},
|
|
11196
|
+
get children() {
|
|
11197
|
+
var _el$13 = _tmpl$47(), _el$14 = _el$13.firstChild, _el$16 = _el$14.nextSibling; _el$16.nextSibling;
|
|
11198
|
+
insert(_el$13, () => event().before, _el$14);
|
|
11199
|
+
insert(_el$13, () => event().after, _el$16);
|
|
11200
|
+
effect(() => className(_el$13, s().stepDuration));
|
|
11201
|
+
return _el$13;
|
|
11202
|
+
}
|
|
11203
|
+
}), _el$20);
|
|
11204
|
+
insert(_el$1, createComponent(Show, {
|
|
11205
|
+
get when() {
|
|
11206
|
+
return event().durationMs !== void 0;
|
|
11207
|
+
},
|
|
11208
|
+
get children() {
|
|
11209
|
+
var _el$17 = _tmpl$57(), _el$18 = _el$17.firstChild;
|
|
11210
|
+
insert(_el$17, () => event().durationMs, _el$18);
|
|
11211
|
+
effect(() => className(_el$17, s().stepDuration));
|
|
11212
|
+
return _el$17;
|
|
11213
|
+
}
|
|
11214
|
+
}), _el$20);
|
|
11215
|
+
insert(_el$1, createComponent(Show, {
|
|
11216
|
+
get when() {
|
|
11217
|
+
return event().reusedCheckpoint;
|
|
11218
|
+
},
|
|
11219
|
+
get children() {
|
|
11220
|
+
var _el$19 = _tmpl$67();
|
|
11221
|
+
effect(() => className(_el$19, s().mwSuffix));
|
|
11222
|
+
return _el$19;
|
|
11223
|
+
}
|
|
11224
|
+
}), _el$20);
|
|
11225
|
+
insert(_el$20, () => formatTime3(event().timestamp));
|
|
11226
|
+
effect((_p$) => {
|
|
11227
|
+
var _v$6 = s().step, _v$7 = event().kind, _v$8 = `${s().stepPrefix} ${s().stepPrefixMiddleware}`, _v$9 = `${s().mwBadge} ${s().mwBadgeTransform}`, _v$0 = s().mwHook, _v$1 = s().stepDuration, _v$10 = `${s().chevron} ${expanded() ? s().chevronOpen : ""}`;
|
|
11228
|
+
_v$6 !== _p$.e && className(_el$1, _p$.e = _v$6);
|
|
11229
|
+
_v$7 !== _p$.t && setAttribute(_el$1, "data-kind", _p$.t = _v$7);
|
|
11230
|
+
_v$8 !== _p$.a && className(_el$10, _p$.a = _v$8);
|
|
11231
|
+
_v$9 !== _p$.o && className(_el$11, _p$.o = _v$9);
|
|
11232
|
+
_v$0 !== _p$.i && className(_el$12, _p$.i = _v$0);
|
|
11233
|
+
_v$1 !== _p$.n && className(_el$20, _p$.n = _v$1);
|
|
11234
|
+
_v$10 !== _p$.s && className(_el$21, _p$.s = _v$10);
|
|
11235
|
+
return _p$;
|
|
11236
|
+
}, {
|
|
11237
|
+
e: void 0,
|
|
11238
|
+
t: void 0,
|
|
11239
|
+
a: void 0,
|
|
11240
|
+
o: void 0,
|
|
11241
|
+
i: void 0,
|
|
11242
|
+
n: void 0,
|
|
11243
|
+
s: void 0
|
|
11244
|
+
});
|
|
11245
|
+
return _el$1;
|
|
11246
|
+
})(), createComponent(Show, {
|
|
11247
|
+
get when() {
|
|
11248
|
+
return expanded();
|
|
11249
|
+
},
|
|
11250
|
+
get children() {
|
|
11251
|
+
return [(() => {
|
|
11252
|
+
var _el$22 = _tmpl$214();
|
|
11253
|
+
insert(_el$22, createComponent(JsonTree, {
|
|
11254
|
+
get value() {
|
|
11255
|
+
return stats();
|
|
11256
|
+
},
|
|
11257
|
+
defaultExpansionDepth: 1,
|
|
11258
|
+
copyable: true
|
|
11259
|
+
}));
|
|
11260
|
+
effect(() => className(_el$22, s().mwChangesContainer));
|
|
11261
|
+
return _el$22;
|
|
11262
|
+
})(), createComponent(Show, {
|
|
11263
|
+
get when() {
|
|
11264
|
+
return isState();
|
|
11265
|
+
},
|
|
11266
|
+
get children() {
|
|
11267
|
+
var _el$23 = _tmpl$214();
|
|
11268
|
+
insert(_el$23, createComponent(PreviewColumn, {
|
|
11269
|
+
title: "Dropped",
|
|
11270
|
+
get previews() {
|
|
11271
|
+
return event().dropped ?? [];
|
|
11272
|
+
},
|
|
11273
|
+
empty: "Nothing was dropped."
|
|
11274
|
+
}), null);
|
|
11275
|
+
insert(_el$23, createComponent(PreviewColumn, {
|
|
11276
|
+
title: "Sent to model",
|
|
11277
|
+
get previews() {
|
|
11278
|
+
return event().result ?? [];
|
|
11279
|
+
},
|
|
11280
|
+
empty: "No compacted transcript on this event."
|
|
11281
|
+
}), null);
|
|
11282
|
+
effect(() => className(_el$23, s().stepJsonItemsCompare));
|
|
11283
|
+
return _el$23;
|
|
11284
|
+
}
|
|
11285
|
+
})];
|
|
11286
|
+
}
|
|
11287
|
+
})];
|
|
11288
|
+
};
|
|
11289
|
+
var CompactionPanel = (props) => {
|
|
11290
|
+
const {
|
|
11291
|
+
state,
|
|
11292
|
+
clearCompaction
|
|
11293
|
+
} = useAIStore();
|
|
11294
|
+
const styles = useStyles();
|
|
11295
|
+
const s = () => styles().iterationTimeline;
|
|
11296
|
+
const events = createMemo(() => compactionEventsForHook(state.compaction, props.hook));
|
|
11297
|
+
const lastStateIndex = createMemo(() => {
|
|
11298
|
+
const list = events();
|
|
11299
|
+
for (let i = list.length - 1; i >= 0; i--) {
|
|
11300
|
+
if (list[i]?.kind === "state") return i;
|
|
11301
|
+
}
|
|
11302
|
+
return -1;
|
|
11303
|
+
});
|
|
11304
|
+
return (() => {
|
|
11305
|
+
var _el$24 = _tmpl$97();
|
|
11306
|
+
insert(_el$24, createComponent(Show, {
|
|
11307
|
+
get when() {
|
|
11308
|
+
return events().length > 0;
|
|
11309
|
+
},
|
|
11310
|
+
get fallback() {
|
|
11311
|
+
return (() => {
|
|
11312
|
+
var _el$30 = _tmpl$06();
|
|
11313
|
+
effect(() => className(_el$30, styles().hookDetails.emptySmall));
|
|
11314
|
+
return _el$30;
|
|
11315
|
+
})();
|
|
11316
|
+
},
|
|
11317
|
+
get children() {
|
|
11318
|
+
return [(() => {
|
|
11319
|
+
var _el$25 = _tmpl$87(), _el$26 = _el$25.firstChild, _el$27 = _el$26.firstChild, _el$28 = _el$26.nextSibling;
|
|
11320
|
+
insert(_el$26, () => events().length, _el$27);
|
|
11321
|
+
insert(_el$26, () => events().length === 1 ? "" : "s", null);
|
|
11322
|
+
_el$28.$$click = () => clearCompaction();
|
|
11323
|
+
effect((_p$) => {
|
|
11324
|
+
var _v$11 = styles().memoryPanel.toolbar, _v$12 = styles().memoryPanel.badge, _v$13 = styles().memoryPanel.clearButton;
|
|
11325
|
+
_v$11 !== _p$.e && className(_el$25, _p$.e = _v$11);
|
|
11326
|
+
_v$12 !== _p$.t && className(_el$26, _p$.t = _v$12);
|
|
11327
|
+
_v$13 !== _p$.a && className(_el$28, _p$.a = _v$13);
|
|
11328
|
+
return _p$;
|
|
11329
|
+
}, {
|
|
11330
|
+
e: void 0,
|
|
11331
|
+
t: void 0,
|
|
11332
|
+
a: void 0
|
|
11333
|
+
});
|
|
11334
|
+
return _el$25;
|
|
11335
|
+
})(), (() => {
|
|
11336
|
+
var _el$29 = _tmpl$214();
|
|
11337
|
+
insert(_el$29, createComponent(For, {
|
|
11338
|
+
get each() {
|
|
11339
|
+
return events();
|
|
11340
|
+
},
|
|
11341
|
+
children: (event, index) => createComponent(CompactEvent, {
|
|
11342
|
+
event,
|
|
11343
|
+
get defaultOpen() {
|
|
11344
|
+
return memo(() => event.kind === "state")() && index() === lastStateIndex();
|
|
11345
|
+
}
|
|
11346
|
+
})
|
|
11347
|
+
}));
|
|
11348
|
+
effect(() => className(_el$29, s().iterCard));
|
|
11349
|
+
return _el$29;
|
|
11350
|
+
})()];
|
|
11351
|
+
}
|
|
11352
|
+
}));
|
|
11353
|
+
effect(() => className(_el$24, styles().memoryPanel.container));
|
|
11354
|
+
return _el$24;
|
|
11355
|
+
})();
|
|
11356
|
+
};
|
|
11357
|
+
delegateEvents(["click"]);
|
|
11358
|
+
var _tmpl$41 = /* @__PURE__ */ template(`<ul>`);
|
|
11359
|
+
var _tmpl$215 = /* @__PURE__ */ template(`<div><div>Catalog`);
|
|
11360
|
+
var _tmpl$311 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-skills-panel>`);
|
|
11361
|
+
var _tmpl$48 = /* @__PURE__ */ template(`<div>No skills on this run. Add \`withSkills(...)\` to \`chat()\` and the catalog will appear here. A skill lights up when the model calls \`load_skill\`.`);
|
|
11362
|
+
var _tmpl$58 = /* @__PURE__ */ template(`<div>Loaded via \`load_skill\`, but the catalog snapshot has not arrived yet.`);
|
|
11363
|
+
var _tmpl$68 = /* @__PURE__ */ template(`<span>loaded`);
|
|
11364
|
+
var _tmpl$78 = /* @__PURE__ */ template(`<li><span></span><span>`);
|
|
11365
|
+
function parseSkillName(argumentsJson) {
|
|
11366
|
+
if (!argumentsJson) return void 0;
|
|
11367
|
+
try {
|
|
11368
|
+
const parsed = JSON.parse(argumentsJson);
|
|
11369
|
+
if (parsed && typeof parsed === "object" && "name" in parsed && typeof parsed.name === "string") {
|
|
11370
|
+
return parsed.name;
|
|
11371
|
+
}
|
|
11372
|
+
} catch {
|
|
11373
|
+
return void 0;
|
|
11374
|
+
}
|
|
11375
|
+
return void 0;
|
|
11376
|
+
}
|
|
11377
|
+
function loadedFromMessages(messages) {
|
|
11378
|
+
const names = /* @__PURE__ */ new Set();
|
|
11379
|
+
for (const message of messages) {
|
|
11380
|
+
for (const toolCall of message.toolCalls ?? []) {
|
|
11381
|
+
if (toolCall.name === "load_skill") {
|
|
11382
|
+
const name = parseSkillName(toolCall.arguments);
|
|
11383
|
+
if (name) names.add(name);
|
|
11384
|
+
}
|
|
11385
|
+
}
|
|
11386
|
+
for (const part of message.parts ?? []) {
|
|
11387
|
+
if (part.type === "tool-call" && part.toolName === "load_skill") {
|
|
11388
|
+
const name = parseSkillName(part.arguments);
|
|
11389
|
+
if (name) names.add(name);
|
|
11390
|
+
}
|
|
11391
|
+
}
|
|
11392
|
+
}
|
|
11393
|
+
return [...names];
|
|
11394
|
+
}
|
|
11395
|
+
var SkillsPanel = () => {
|
|
11396
|
+
const {
|
|
11397
|
+
state
|
|
11398
|
+
} = useAIStore();
|
|
11399
|
+
const styles = useStyles();
|
|
11400
|
+
const snapshot = createMemo(() => {
|
|
11401
|
+
const hookId = state.hooks.activeHookId;
|
|
11402
|
+
if (hookId && state.skills.snapshots[hookId]) {
|
|
11403
|
+
return state.skills.snapshots[hookId];
|
|
11404
|
+
}
|
|
11405
|
+
const first = Object.values(state.skills.snapshots)[0];
|
|
11406
|
+
return first;
|
|
11407
|
+
});
|
|
11408
|
+
const conversation = createMemo(() => {
|
|
11409
|
+
const hookId = state.hooks.activeHookId;
|
|
11410
|
+
if (!hookId) return void 0;
|
|
11411
|
+
return state.conversations[hookId];
|
|
11412
|
+
});
|
|
11413
|
+
const loaded = createMemo(() => {
|
|
11414
|
+
const fromSnap = new Set(snapshot()?.activated ?? []);
|
|
11415
|
+
for (const name of loadedFromMessages(conversation()?.messages ?? [])) {
|
|
11416
|
+
fromSnap.add(name);
|
|
11417
|
+
}
|
|
11418
|
+
return fromSnap;
|
|
11419
|
+
});
|
|
11420
|
+
const catalog = createMemo(() => snapshot()?.catalog ?? []);
|
|
11421
|
+
return (() => {
|
|
11422
|
+
var _el$ = _tmpl$311();
|
|
11423
|
+
insert(_el$, createComponent(Show, {
|
|
11424
|
+
get when() {
|
|
11425
|
+
return catalog().length > 0 || loaded().size > 0;
|
|
11426
|
+
},
|
|
11427
|
+
get fallback() {
|
|
11428
|
+
return (() => {
|
|
11429
|
+
var _el$5 = _tmpl$48();
|
|
11430
|
+
effect(() => className(_el$5, styles().memoryPanel.empty));
|
|
11431
|
+
return _el$5;
|
|
11432
|
+
})();
|
|
11433
|
+
},
|
|
11434
|
+
get children() {
|
|
11435
|
+
var _el$2 = _tmpl$215(), _el$3 = _el$2.firstChild;
|
|
11436
|
+
insert(_el$2, createComponent(Show, {
|
|
11437
|
+
get when() {
|
|
11438
|
+
return catalog().length > 0;
|
|
11439
|
+
},
|
|
11440
|
+
get fallback() {
|
|
11441
|
+
return (() => {
|
|
11442
|
+
var _el$6 = _tmpl$58();
|
|
11443
|
+
effect(() => className(_el$6, styles().memoryPanel.sectionEmpty));
|
|
11444
|
+
return _el$6;
|
|
11445
|
+
})();
|
|
11446
|
+
},
|
|
11447
|
+
get children() {
|
|
11448
|
+
var _el$4 = _tmpl$41();
|
|
11449
|
+
insert(_el$4, createComponent(For, {
|
|
11450
|
+
get each() {
|
|
11451
|
+
return catalog();
|
|
11452
|
+
},
|
|
11453
|
+
children: (skill) => {
|
|
11454
|
+
const isLoaded = () => loaded().has(skill.name);
|
|
11455
|
+
return (() => {
|
|
11456
|
+
var _el$7 = _tmpl$78(), _el$8 = _el$7.firstChild, _el$0 = _el$8.nextSibling;
|
|
11457
|
+
insert(_el$8, () => skill.name);
|
|
11458
|
+
insert(_el$7, createComponent(Show, {
|
|
11459
|
+
get when() {
|
|
11460
|
+
return isLoaded();
|
|
11461
|
+
},
|
|
11462
|
+
get children() {
|
|
11463
|
+
var _el$9 = _tmpl$68();
|
|
11464
|
+
effect(() => className(_el$9, styles().memoryPanel.badge));
|
|
11465
|
+
return _el$9;
|
|
11466
|
+
}
|
|
11467
|
+
}), _el$0);
|
|
11468
|
+
insert(_el$0, () => skill.description);
|
|
11469
|
+
effect((_p$) => {
|
|
11470
|
+
var _v$3 = styles().memoryPanel.row, _v$4 = styles().memoryPanel.badge, _v$5 = styles().memoryPanel.sectionEmpty;
|
|
11471
|
+
_v$3 !== _p$.e && className(_el$7, _p$.e = _v$3);
|
|
11472
|
+
_v$4 !== _p$.t && className(_el$8, _p$.t = _v$4);
|
|
11473
|
+
_v$5 !== _p$.a && className(_el$0, _p$.a = _v$5);
|
|
11474
|
+
return _p$;
|
|
11475
|
+
}, {
|
|
11476
|
+
e: void 0,
|
|
11477
|
+
t: void 0,
|
|
11478
|
+
a: void 0
|
|
11479
|
+
});
|
|
11480
|
+
return _el$7;
|
|
11481
|
+
})();
|
|
11482
|
+
}
|
|
11483
|
+
}));
|
|
11484
|
+
effect(() => className(_el$4, styles().memoryPanel.list));
|
|
11485
|
+
return _el$4;
|
|
11486
|
+
}
|
|
11487
|
+
}), null);
|
|
11488
|
+
effect((_p$) => {
|
|
11489
|
+
var _v$ = styles().memoryPanel.section, _v$2 = styles().memoryPanel.sectionTitle;
|
|
11490
|
+
_v$ !== _p$.e && className(_el$2, _p$.e = _v$);
|
|
11491
|
+
_v$2 !== _p$.t && className(_el$3, _p$.t = _v$2);
|
|
11492
|
+
return _p$;
|
|
11493
|
+
}, {
|
|
11494
|
+
e: void 0,
|
|
11495
|
+
t: void 0
|
|
11496
|
+
});
|
|
11497
|
+
return _el$2;
|
|
11498
|
+
}
|
|
11499
|
+
}));
|
|
11500
|
+
effect(() => className(_el$, styles().memoryPanel.container));
|
|
11501
|
+
return _el$;
|
|
11502
|
+
})();
|
|
11503
|
+
};
|
|
10921
11504
|
|
|
10922
11505
|
// src/components/hooks/HookDetails.tsx
|
|
10923
|
-
var _tmpl$
|
|
10924
|
-
var _tmpl$
|
|
10925
|
-
var _tmpl$
|
|
10926
|
-
var _tmpl$
|
|
10927
|
-
var _tmpl$
|
|
10928
|
-
var _tmpl$
|
|
10929
|
-
var _tmpl$
|
|
10930
|
-
var _tmpl$
|
|
10931
|
-
var _tmpl$
|
|
10932
|
-
var _tmpl$
|
|
11506
|
+
var _tmpl$49 = /* @__PURE__ */ template(`<aside data-testid=ai-devtools-preview-pane><div>`);
|
|
11507
|
+
var _tmpl$216 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-hook-detail><nav data-testid=ai-devtools-hook-tabs></nav><div><main data-testid=ai-devtools-primary-pane>`);
|
|
11508
|
+
var _tmpl$312 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-dashboard-overview><header><div><div>Hooks Dashboard</div><div>Select a hook from the left or open one of the active hooks below.</div></div></header><div></div><div>`);
|
|
11509
|
+
var _tmpl$410 = /* @__PURE__ */ template(`<div>Open a page with TanStack AI hooks to inspect live state.`);
|
|
11510
|
+
var _tmpl$59 = /* @__PURE__ */ template(`<section data-testid=ai-devtools-overview-category><div><span></span><span>`);
|
|
11511
|
+
var _tmpl$69 = /* @__PURE__ */ template(`<span>running`);
|
|
11512
|
+
var _tmpl$79 = /* @__PURE__ */ template(`<span> new`);
|
|
11513
|
+
var _tmpl$88 = /* @__PURE__ */ template(`<button type=button data-testid=ai-devtools-overview-hook><div><span></span><span></span></div><div><span>`);
|
|
11514
|
+
var _tmpl$98 = /* @__PURE__ */ template(`<div><span></span><span>`);
|
|
11515
|
+
var _tmpl$07 = /* @__PURE__ */ template(`<span>`);
|
|
10933
11516
|
var _tmpl$116 = /* @__PURE__ */ template(`<span data-testid=ai-devtools-hook-technical-name>`);
|
|
10934
11517
|
var _tmpl$106 = /* @__PURE__ */ template(`<span data-testid=ai-devtools-hook-registry-id>id `);
|
|
10935
11518
|
var _tmpl$117 = /* @__PURE__ */ template(`<header data-testid=ai-devtools-hook-header><div><div><span data-testid=ai-devtools-hook-title></span><span></span></div><div><span data-testid=ai-devtools-hook-identity></span></div></div><div>`);
|
|
@@ -10942,7 +11525,7 @@ var _tmpl$173 = /* @__PURE__ */ template(`<div><button type=button data-testid=a
|
|
|
10942
11525
|
var _tmpl$182 = /* @__PURE__ */ template(`<div><span>`);
|
|
10943
11526
|
var _tmpl$192 = /* @__PURE__ */ template(`<div><span></span><div>`);
|
|
10944
11527
|
var _tmpl$202 = /* @__PURE__ */ template(`<div>No messages yet. Start a conversation to see messages here.`);
|
|
10945
|
-
var _tmpl$
|
|
11528
|
+
var _tmpl$217 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-tools><div></div><div>`);
|
|
10946
11529
|
var _tmpl$223 = /* @__PURE__ */ template(`<div>No tools.`);
|
|
10947
11530
|
var _tmpl$232 = /* @__PURE__ */ template(`<span>approval`);
|
|
10948
11531
|
var _tmpl$242 = /* @__PURE__ */ template(`<button type=button data-testid=ai-devtools-tool-row><span>`);
|
|
@@ -10964,7 +11547,8 @@ var HookDetails = () => {
|
|
|
10964
11547
|
let previewPane;
|
|
10965
11548
|
const hook = createMemo(() => {
|
|
10966
11549
|
const id = state.hooks.activeHookId;
|
|
10967
|
-
|
|
11550
|
+
if (id === null) return void 0;
|
|
11551
|
+
return state.hooks.hooks[id];
|
|
10968
11552
|
});
|
|
10969
11553
|
const conversation = createMemo(() => {
|
|
10970
11554
|
const activeHook = hook();
|
|
@@ -10981,7 +11565,7 @@ var HookDetails = () => {
|
|
|
10981
11565
|
return Boolean(outputKind && outputKind !== "chat" && outputKind !== "structured");
|
|
10982
11566
|
});
|
|
10983
11567
|
createEffect(() => {
|
|
10984
|
-
if (isGenerationHook() && (activeTab() === "tools" || activeTab() === "memory")) {
|
|
11568
|
+
if (isGenerationHook() && (activeTab() === "tools" || activeTab() === "memory" || activeTab() === "compaction" || activeTab() === "skills")) {
|
|
10985
11569
|
setActiveTab("conversation");
|
|
10986
11570
|
}
|
|
10987
11571
|
});
|
|
@@ -10997,7 +11581,7 @@ var HookDetails = () => {
|
|
|
10997
11581
|
return [];
|
|
10998
11582
|
});
|
|
10999
11583
|
const showSecondaryPane = createMemo(() => {
|
|
11000
|
-
if (activeTab() === "tools" && !isGenerationHook()) return false;
|
|
11584
|
+
if ((activeTab() === "tools" || activeTab() === "skills") && !isGenerationHook()) return false;
|
|
11001
11585
|
return isGenerationHook() || !hasStructuredOutputPreview(previewMessages());
|
|
11002
11586
|
});
|
|
11003
11587
|
createEffect(() => {
|
|
@@ -11019,14 +11603,15 @@ var HookDetails = () => {
|
|
|
11019
11603
|
return createComponent(HookOverview, {
|
|
11020
11604
|
onSelectHook: (selectedHook) => {
|
|
11021
11605
|
selectHook(selectedHook.id);
|
|
11022
|
-
|
|
11023
|
-
|
|
11606
|
+
const conversationId = selectedHook.id || selectedHook.clientId || selectedHook.threadId;
|
|
11607
|
+
if (conversationId && state.conversations[conversationId]) {
|
|
11608
|
+
selectConversation(conversationId);
|
|
11024
11609
|
}
|
|
11025
11610
|
}
|
|
11026
11611
|
});
|
|
11027
11612
|
},
|
|
11028
11613
|
children: (activeHook) => (() => {
|
|
11029
|
-
var _el$ = _tmpl$
|
|
11614
|
+
var _el$ = _tmpl$216(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild;
|
|
11030
11615
|
insert(_el$, createComponent(HookHeader, {
|
|
11031
11616
|
get hook() {
|
|
11032
11617
|
return activeHook();
|
|
@@ -11082,14 +11667,28 @@ var HookDetails = () => {
|
|
|
11082
11667
|
return !isGenerationHook();
|
|
11083
11668
|
},
|
|
11084
11669
|
get children() {
|
|
11085
|
-
return createComponent(TabButton, {
|
|
11670
|
+
return [createComponent(TabButton, {
|
|
11086
11671
|
label: "Memory",
|
|
11087
11672
|
tab: "memory",
|
|
11088
11673
|
get activeTab() {
|
|
11089
11674
|
return activeTab();
|
|
11090
11675
|
},
|
|
11091
11676
|
onSelect: setActiveTab
|
|
11092
|
-
})
|
|
11677
|
+
}), createComponent(TabButton, {
|
|
11678
|
+
label: "Compaction",
|
|
11679
|
+
tab: "compaction",
|
|
11680
|
+
get activeTab() {
|
|
11681
|
+
return activeTab();
|
|
11682
|
+
},
|
|
11683
|
+
onSelect: setActiveTab
|
|
11684
|
+
}), createComponent(TabButton, {
|
|
11685
|
+
label: "Skills",
|
|
11686
|
+
tab: "skills",
|
|
11687
|
+
get activeTab() {
|
|
11688
|
+
return activeTab();
|
|
11689
|
+
},
|
|
11690
|
+
onSelect: setActiveTab
|
|
11691
|
+
})];
|
|
11093
11692
|
}
|
|
11094
11693
|
}), null);
|
|
11095
11694
|
_el$4.addEventListener("mouseleave", () => setHoverTarget(null));
|
|
@@ -11168,12 +11767,32 @@ var HookDetails = () => {
|
|
|
11168
11767
|
return createComponent(MemoryPanel, {});
|
|
11169
11768
|
}
|
|
11170
11769
|
}), null);
|
|
11770
|
+
insert(_el$4, createComponent(Show, {
|
|
11771
|
+
get when() {
|
|
11772
|
+
return activeTab() === "compaction";
|
|
11773
|
+
},
|
|
11774
|
+
get children() {
|
|
11775
|
+
return createComponent(CompactionPanel, {
|
|
11776
|
+
get hook() {
|
|
11777
|
+
return activeHook();
|
|
11778
|
+
}
|
|
11779
|
+
});
|
|
11780
|
+
}
|
|
11781
|
+
}), null);
|
|
11782
|
+
insert(_el$4, createComponent(Show, {
|
|
11783
|
+
get when() {
|
|
11784
|
+
return activeTab() === "skills";
|
|
11785
|
+
},
|
|
11786
|
+
get children() {
|
|
11787
|
+
return createComponent(SkillsPanel, {});
|
|
11788
|
+
}
|
|
11789
|
+
}), null);
|
|
11171
11790
|
insert(_el$3, createComponent(Show, {
|
|
11172
11791
|
get when() {
|
|
11173
11792
|
return showSecondaryPane();
|
|
11174
11793
|
},
|
|
11175
11794
|
get children() {
|
|
11176
|
-
var _el$5 = _tmpl$
|
|
11795
|
+
var _el$5 = _tmpl$49(), _el$6 = _el$5.firstChild;
|
|
11177
11796
|
_el$5.addEventListener("mouseleave", () => setHoverTarget(null));
|
|
11178
11797
|
_el$5.$$mouseover = (event) => setHoverTargetFromEvent(event, "preview", setHoverTarget);
|
|
11179
11798
|
use((el) => {
|
|
@@ -11254,13 +11873,13 @@ var HookOverview = (props) => {
|
|
|
11254
11873
|
},
|
|
11255
11874
|
get fallback() {
|
|
11256
11875
|
return (() => {
|
|
11257
|
-
var _el$12 = _tmpl$
|
|
11876
|
+
var _el$12 = _tmpl$410();
|
|
11258
11877
|
effect(() => className(_el$12, styles().hookDetails.empty));
|
|
11259
11878
|
return _el$12;
|
|
11260
11879
|
})();
|
|
11261
11880
|
},
|
|
11262
11881
|
get children() {
|
|
11263
|
-
var _el$7 = _tmpl$
|
|
11882
|
+
var _el$7 = _tmpl$312(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling, _el$10 = _el$8.nextSibling, _el$11 = _el$10.nextSibling;
|
|
11264
11883
|
insert(_el$10, createComponent(OverviewMetric, {
|
|
11265
11884
|
label: "active hooks",
|
|
11266
11885
|
get value() {
|
|
@@ -11314,7 +11933,7 @@ var HookOverview = (props) => {
|
|
|
11314
11933
|
return groups();
|
|
11315
11934
|
},
|
|
11316
11935
|
children: (group) => (() => {
|
|
11317
|
-
var _el$13 = _tmpl$
|
|
11936
|
+
var _el$13 = _tmpl$59(), _el$14 = _el$13.firstChild, _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling;
|
|
11318
11937
|
insert(_el$15, () => group.label);
|
|
11319
11938
|
insert(_el$16, () => group.hooks.length);
|
|
11320
11939
|
insert(_el$13, createComponent(For, {
|
|
@@ -11325,7 +11944,7 @@ var HookOverview = (props) => {
|
|
|
11325
11944
|
const running = createMemo(() => isHookRunning(hook, state.hooks.runs));
|
|
11326
11945
|
const unseenCount = createMemo(() => getHookUnseenEventCount(state.hooks, hook.id));
|
|
11327
11946
|
return (() => {
|
|
11328
|
-
var _el$17 = _tmpl$
|
|
11947
|
+
var _el$17 = _tmpl$88(), _el$18 = _el$17.firstChild, _el$19 = _el$18.firstChild, _el$20 = _el$19.nextSibling, _el$21 = _el$18.nextSibling, _el$22 = _el$21.firstChild;
|
|
11329
11948
|
_el$17.$$click = () => props.onSelectHook(hook);
|
|
11330
11949
|
insert(_el$19, () => getHookDisplayName(hook));
|
|
11331
11950
|
insert(_el$20, () => getHookIdentitySubtitle(hook));
|
|
@@ -11335,7 +11954,7 @@ var HookOverview = (props) => {
|
|
|
11335
11954
|
return running();
|
|
11336
11955
|
},
|
|
11337
11956
|
get children() {
|
|
11338
|
-
var _el$23 = _tmpl$
|
|
11957
|
+
var _el$23 = _tmpl$69();
|
|
11339
11958
|
effect(() => className(_el$23, styles().hookDetails.lifecycle));
|
|
11340
11959
|
return _el$23;
|
|
11341
11960
|
}
|
|
@@ -11345,7 +11964,7 @@ var HookOverview = (props) => {
|
|
|
11345
11964
|
return unseenCount() > 0;
|
|
11346
11965
|
},
|
|
11347
11966
|
get children() {
|
|
11348
|
-
var _el$24 = _tmpl$
|
|
11967
|
+
var _el$24 = _tmpl$79(), _el$25 = _el$24.firstChild;
|
|
11349
11968
|
insert(_el$24, unseenCount, _el$25);
|
|
11350
11969
|
effect(() => className(_el$24, styles().hookDetails.kind));
|
|
11351
11970
|
return _el$24;
|
|
@@ -11416,7 +12035,7 @@ var HookOverview = (props) => {
|
|
|
11416
12035
|
var OverviewMetric = (props) => {
|
|
11417
12036
|
const styles = useStyles();
|
|
11418
12037
|
return (() => {
|
|
11419
|
-
var _el$26 = _tmpl$
|
|
12038
|
+
var _el$26 = _tmpl$98(), _el$27 = _el$26.firstChild, _el$28 = _el$27.nextSibling;
|
|
11420
12039
|
insert(_el$27, () => props.value);
|
|
11421
12040
|
insert(_el$28, () => props.label);
|
|
11422
12041
|
effect((_p$) => {
|
|
@@ -11444,7 +12063,7 @@ var HookHeader = (props) => {
|
|
|
11444
12063
|
return props.hook.outputKind;
|
|
11445
12064
|
},
|
|
11446
12065
|
get children() {
|
|
11447
|
-
var _el$34 = _tmpl$
|
|
12066
|
+
var _el$34 = _tmpl$07();
|
|
11448
12067
|
insert(_el$34, () => props.hook.outputKind);
|
|
11449
12068
|
effect(() => className(_el$34, styles().hookDetails.kind));
|
|
11450
12069
|
return _el$34;
|
|
@@ -11479,7 +12098,7 @@ var HookHeader = (props) => {
|
|
|
11479
12098
|
return props.hook.framework;
|
|
11480
12099
|
},
|
|
11481
12100
|
get children() {
|
|
11482
|
-
var _el$40 = _tmpl$
|
|
12101
|
+
var _el$40 = _tmpl$07();
|
|
11483
12102
|
insert(_el$40, () => props.hook.framework);
|
|
11484
12103
|
return _el$40;
|
|
11485
12104
|
}
|
|
@@ -11548,7 +12167,7 @@ var HookHeader = (props) => {
|
|
|
11548
12167
|
var Metric = (props) => {
|
|
11549
12168
|
const styles = useStyles();
|
|
11550
12169
|
return (() => {
|
|
11551
|
-
var _el$42 = _tmpl$
|
|
12170
|
+
var _el$42 = _tmpl$98(), _el$43 = _el$42.firstChild, _el$44 = _el$43.nextSibling;
|
|
11552
12171
|
insert(_el$43, () => props.value);
|
|
11553
12172
|
insert(_el$44, () => props.label);
|
|
11554
12173
|
effect((_p$) => {
|
|
@@ -11840,7 +12459,7 @@ var MessagesPreview = (props) => {
|
|
|
11840
12459
|
},
|
|
11841
12460
|
get fallback() {
|
|
11842
12461
|
return (() => {
|
|
11843
|
-
var _el$60 = _tmpl$
|
|
12462
|
+
var _el$60 = _tmpl$07();
|
|
11844
12463
|
insert(_el$60, () => part.content);
|
|
11845
12464
|
effect(() => className(_el$60, styles().hookDetails.previewPartContent));
|
|
11846
12465
|
return _el$60;
|
|
@@ -11974,7 +12593,7 @@ var HookMessageTimeline = (props) => {
|
|
|
11974
12593
|
},
|
|
11975
12594
|
get fallback() {
|
|
11976
12595
|
return (() => {
|
|
11977
|
-
var _el$72 = _tmpl$
|
|
12596
|
+
var _el$72 = _tmpl$07();
|
|
11978
12597
|
insert(_el$72, () => part.content);
|
|
11979
12598
|
effect(() => className(_el$72, styles().hookDetails.previewPartContent));
|
|
11980
12599
|
return _el$72;
|
|
@@ -12038,7 +12657,7 @@ var ToolsView = (props) => {
|
|
|
12038
12657
|
const selectedTool = createMemo(() => props.hook.tools.find((tool) => tool.name === selectedToolName()));
|
|
12039
12658
|
const savedFixtures = createMemo(() => state.hooks.fixtures.filter((fixture) => fixture.hookId === props.hook.id || !!props.hook.threadId && fixture.threadId === props.hook.threadId).sort((a, b) => b.createdAt - a.createdAt));
|
|
12040
12659
|
return (() => {
|
|
12041
|
-
var _el$76 = _tmpl$
|
|
12660
|
+
var _el$76 = _tmpl$217(), _el$77 = _el$76.firstChild, _el$78 = _el$77.nextSibling;
|
|
12042
12661
|
insert(_el$77, createComponent(Show, {
|
|
12043
12662
|
get when() {
|
|
12044
12663
|
return props.hook.tools.length > 0;
|
|
@@ -12129,7 +12748,7 @@ var ToolsView = (props) => {
|
|
|
12129
12748
|
var _el$87 = _tmpl$282(), _el$88 = _el$87.firstChild, _el$89 = _el$88.firstChild, _el$90 = _el$89.nextSibling, _el$91 = _el$90.firstChild, _el$92 = _el$88.nextSibling, _el$93 = _el$92.firstChild, _el$94 = _el$93.nextSibling;
|
|
12130
12749
|
insert(_el$89, () => fixture.name ?? fixture.toolName);
|
|
12131
12750
|
insert(_el$90, () => fixture.toolName, _el$91);
|
|
12132
|
-
insert(_el$90, () =>
|
|
12751
|
+
insert(_el$90, () => formatTime4(fixture.createdAt), null);
|
|
12133
12752
|
_el$93.$$click = () => applyToolFixture(fixture);
|
|
12134
12753
|
_el$94.$$click = () => deleteToolFixture(fixture.id);
|
|
12135
12754
|
effect((_p$) => {
|
|
@@ -12623,13 +13242,13 @@ function jsonSafeValue(value) {
|
|
|
12623
13242
|
return `[ai-devtools] unserializable value: ${error instanceof Error ? error.message : String(error)}`;
|
|
12624
13243
|
}
|
|
12625
13244
|
}
|
|
12626
|
-
function
|
|
13245
|
+
function formatTime4(timestamp) {
|
|
12627
13246
|
return new Date(timestamp).toLocaleTimeString();
|
|
12628
13247
|
}
|
|
12629
13248
|
delegateEvents(["mouseover", "click"]);
|
|
12630
13249
|
|
|
12631
13250
|
// src/components/Shell.tsx
|
|
12632
|
-
var _tmpl$
|
|
13251
|
+
var _tmpl$50 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-panel><div><div data-testid=ai-devtools-left-panel style=min-width:150px;max-width:800px><div>AI Hooks</div></div><div></div><div data-testid=ai-devtools-right-panel style=flex:1>`);
|
|
12633
13252
|
function Devtools(props) {
|
|
12634
13253
|
return createComponent(ThemeContextProvider, {
|
|
12635
13254
|
get theme() {
|
|
@@ -12711,7 +13330,7 @@ function DevtoolsContent() {
|
|
|
12711
13330
|
});
|
|
12712
13331
|
return createComponent(MainPanel, {
|
|
12713
13332
|
get children() {
|
|
12714
|
-
var _el$ = _tmpl$
|
|
13333
|
+
var _el$ = _tmpl$50(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.nextSibling;
|
|
12715
13334
|
insert(_el$, createComponent(Header, {
|
|
12716
13335
|
get children() {
|
|
12717
13336
|
return createComponent(HeaderLogo, {
|