@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;
|
|
@@ -4354,12 +4353,6 @@ function applyHookEvent(state, eventName, event) {
|
|
|
4354
4353
|
markHookViewed(state, state.activeHookId);
|
|
4355
4354
|
}
|
|
4356
4355
|
}
|
|
4357
|
-
function setActiveHook(state, hookId) {
|
|
4358
|
-
state.activeHookId = hookId;
|
|
4359
|
-
if (hookId) {
|
|
4360
|
-
markHookViewed(state, hookId);
|
|
4361
|
-
}
|
|
4362
|
-
}
|
|
4363
4356
|
function clearHookRegistry(state) {
|
|
4364
4357
|
state.hooks = {};
|
|
4365
4358
|
state.runs = {};
|
|
@@ -4511,8 +4504,8 @@ function removeHookRecord(state, hookId) {
|
|
|
4511
4504
|
delete state.runs[runId];
|
|
4512
4505
|
}
|
|
4513
4506
|
}
|
|
4514
|
-
for (const
|
|
4515
|
-
delete state.events[
|
|
4507
|
+
for (const eventId3 of hookEventIds) {
|
|
4508
|
+
delete state.events[eventId3];
|
|
4516
4509
|
}
|
|
4517
4510
|
delete state.hooks[hookId];
|
|
4518
4511
|
delete state.seenHookActivityCounts[hookId];
|
|
@@ -4520,7 +4513,7 @@ function removeHookRecord(state, hookId) {
|
|
|
4520
4513
|
state.activeHookId = null;
|
|
4521
4514
|
}
|
|
4522
4515
|
}
|
|
4523
|
-
function upsertRun(state, event,
|
|
4516
|
+
function upsertRun(state, event, eventId3) {
|
|
4524
4517
|
const existing = state.runs[event.runId];
|
|
4525
4518
|
if (!existing) {
|
|
4526
4519
|
state.runs[event.runId] = {
|
|
@@ -4534,7 +4527,7 @@ function upsertRun(state, event, eventId2) {
|
|
|
4534
4527
|
updatedAt: event.timestamp,
|
|
4535
4528
|
...isTerminalRunStatus(event.status) ? { completedAt: event.timestamp } : {},
|
|
4536
4529
|
...event.error ? { error: event.error } : {},
|
|
4537
|
-
eventIds: [
|
|
4530
|
+
eventIds: [eventId3]
|
|
4538
4531
|
};
|
|
4539
4532
|
return;
|
|
4540
4533
|
}
|
|
@@ -4550,8 +4543,8 @@ function upsertRun(state, event, eventId2) {
|
|
|
4550
4543
|
if (event.error) {
|
|
4551
4544
|
existing.error = event.error;
|
|
4552
4545
|
}
|
|
4553
|
-
if (!existing.eventIds.includes(
|
|
4554
|
-
existing.eventIds.push(
|
|
4546
|
+
if (!existing.eventIds.includes(eventId3)) {
|
|
4547
|
+
existing.eventIds.push(eventId3);
|
|
4555
4548
|
}
|
|
4556
4549
|
}
|
|
4557
4550
|
function attachRunToHook(state, hookId, runId) {
|
|
@@ -4559,7 +4552,7 @@ function attachRunToHook(state, hookId, runId) {
|
|
|
4559
4552
|
if (!hook || hook.runIds.includes(runId)) return;
|
|
4560
4553
|
hook.runIds.push(runId);
|
|
4561
4554
|
}
|
|
4562
|
-
function syncRunsFromSnapshot(state, snapshot,
|
|
4555
|
+
function syncRunsFromSnapshot(state, snapshot, eventId3) {
|
|
4563
4556
|
const rawRuns = snapshot.state.runs;
|
|
4564
4557
|
if (!Array.isArray(rawRuns)) return;
|
|
4565
4558
|
for (const candidate of rawRuns) {
|
|
@@ -4585,7 +4578,7 @@ function syncRunsFromSnapshot(state, snapshot, eventId2) {
|
|
|
4585
4578
|
updatedAt,
|
|
4586
4579
|
...typeof run.completedAt === "number" ? { completedAt: run.completedAt } : isTerminalRunStatus(status) ? { completedAt: updatedAt } : {},
|
|
4587
4580
|
...typeof run.error === "string" ? { error: run.error } : {},
|
|
4588
|
-
eventIds: [
|
|
4581
|
+
eventIds: [eventId3]
|
|
4589
4582
|
};
|
|
4590
4583
|
} else {
|
|
4591
4584
|
existing.hookId = snapshot.hookId;
|
|
@@ -4597,8 +4590,8 @@ function syncRunsFromSnapshot(state, snapshot, eventId2) {
|
|
|
4597
4590
|
existing.completedAt = updatedAt;
|
|
4598
4591
|
}
|
|
4599
4592
|
if (typeof run.error === "string") existing.error = run.error;
|
|
4600
|
-
if (!existing.eventIds.includes(
|
|
4601
|
-
existing.eventIds.push(
|
|
4593
|
+
if (!existing.eventIds.includes(eventId3)) {
|
|
4594
|
+
existing.eventIds.push(eventId3);
|
|
4602
4595
|
}
|
|
4603
4596
|
}
|
|
4604
4597
|
attachRunToHook(state, snapshot.hookId, run.id);
|
|
@@ -4628,11 +4621,11 @@ function attachActivityRunToHook(state, hookId, runId) {
|
|
|
4628
4621
|
if (!hook || hook.activityRunIds.includes(runId)) return;
|
|
4629
4622
|
hook.activityRunIds.push(runId);
|
|
4630
4623
|
}
|
|
4631
|
-
function attachEventToHook(state, hookId,
|
|
4624
|
+
function attachEventToHook(state, hookId, eventId3) {
|
|
4632
4625
|
if (!hookId) return;
|
|
4633
4626
|
const hook = state.hooks[hookId];
|
|
4634
|
-
if (!hook || hook.eventIds.includes(
|
|
4635
|
-
hook.eventIds.push(
|
|
4627
|
+
if (!hook || hook.eventIds.includes(eventId3)) return;
|
|
4628
|
+
hook.eventIds.push(eventId3);
|
|
4636
4629
|
}
|
|
4637
4630
|
function inferLifecycleFromSnapshot(state) {
|
|
4638
4631
|
if (state.status === "error" || state.error) {
|
|
@@ -4775,6 +4768,80 @@ function clearMemoryRegistry(state) {
|
|
|
4775
4768
|
state.scopes = {};
|
|
4776
4769
|
}
|
|
4777
4770
|
|
|
4771
|
+
// src/store/compaction-registry.ts
|
|
4772
|
+
var MAX_EVENTS = 50;
|
|
4773
|
+
function createCompactionRegistryState() {
|
|
4774
|
+
return { events: [] };
|
|
4775
|
+
}
|
|
4776
|
+
function eventId2(kind, event) {
|
|
4777
|
+
return [
|
|
4778
|
+
"cmp",
|
|
4779
|
+
kind,
|
|
4780
|
+
String(event.timestamp),
|
|
4781
|
+
event.hookId ?? event.clientId ?? event.threadId ?? "unknown",
|
|
4782
|
+
String(event.before ?? event.after ?? "")
|
|
4783
|
+
].join("-");
|
|
4784
|
+
}
|
|
4785
|
+
function applyCompactionEvent(state, kind, event) {
|
|
4786
|
+
state.events.push({
|
|
4787
|
+
id: event.eventId ?? eventId2(kind, event),
|
|
4788
|
+
kind,
|
|
4789
|
+
timestamp: event.timestamp,
|
|
4790
|
+
hookId: event.hookId,
|
|
4791
|
+
clientId: event.clientId,
|
|
4792
|
+
threadId: event.threadId,
|
|
4793
|
+
runId: event.runId,
|
|
4794
|
+
before: event.before,
|
|
4795
|
+
after: event.after,
|
|
4796
|
+
messagesBefore: event.messagesBefore,
|
|
4797
|
+
messagesAfter: event.messagesAfter,
|
|
4798
|
+
reusedCheckpoint: event.reusedCheckpoint,
|
|
4799
|
+
maxTokens: event.maxTokens,
|
|
4800
|
+
strategyKey: event.strategyKey,
|
|
4801
|
+
durationMs: event.durationMs,
|
|
4802
|
+
dropped: event.dropped,
|
|
4803
|
+
result: event.result
|
|
4804
|
+
});
|
|
4805
|
+
if (state.events.length > MAX_EVENTS) {
|
|
4806
|
+
state.events.splice(0, state.events.length - MAX_EVENTS);
|
|
4807
|
+
}
|
|
4808
|
+
}
|
|
4809
|
+
function clearCompactionRegistry(state) {
|
|
4810
|
+
state.events = [];
|
|
4811
|
+
}
|
|
4812
|
+
function compactionEventsForHook(state, hook) {
|
|
4813
|
+
const matched = state.events.filter((event) => {
|
|
4814
|
+
if (event.hookId && event.hookId === hook.id) return true;
|
|
4815
|
+
if (event.clientId && hook.clientId && event.clientId === hook.clientId) {
|
|
4816
|
+
return true;
|
|
4817
|
+
}
|
|
4818
|
+
if (event.threadId && hook.threadId && event.threadId === hook.threadId) {
|
|
4819
|
+
return true;
|
|
4820
|
+
}
|
|
4821
|
+
return false;
|
|
4822
|
+
});
|
|
4823
|
+
if (matched.length > 0) return matched;
|
|
4824
|
+
return state.events;
|
|
4825
|
+
}
|
|
4826
|
+
|
|
4827
|
+
// src/store/skills-registry.ts
|
|
4828
|
+
function createSkillsRegistryState() {
|
|
4829
|
+
return { snapshots: {} };
|
|
4830
|
+
}
|
|
4831
|
+
function clearSkillsRegistry(state) {
|
|
4832
|
+
state.snapshots = {};
|
|
4833
|
+
}
|
|
4834
|
+
function applySkillsSnapshot(state, payload) {
|
|
4835
|
+
const key = payload.hookId && payload.hookId.length > 0 ? payload.hookId : "_default";
|
|
4836
|
+
const catalog = Array.isArray(payload.catalog) ? payload.catalog : [];
|
|
4837
|
+
const activated = Array.isArray(payload.activated) ? payload.activated : [];
|
|
4838
|
+
state.snapshots[key] = {
|
|
4839
|
+
catalog,
|
|
4840
|
+
activated,
|
|
4841
|
+
updatedAt: payload.timestamp ?? Date.now()
|
|
4842
|
+
};
|
|
4843
|
+
}
|
|
4844
|
+
|
|
4778
4845
|
// src/store/ai-context.tsx
|
|
4779
4846
|
var AIContext = createContext();
|
|
4780
4847
|
function useAIStore() {
|
|
@@ -4789,7 +4856,9 @@ var AIProvider = (props) => {
|
|
|
4789
4856
|
conversations: {},
|
|
4790
4857
|
activeConversationId: null,
|
|
4791
4858
|
hooks: createHookRegistryState(),
|
|
4792
|
-
memory: createMemoryRegistryState()
|
|
4859
|
+
memory: createMemoryRegistryState(),
|
|
4860
|
+
compaction: createCompactionRegistryState(),
|
|
4861
|
+
skills: createSkillsRegistryState()
|
|
4793
4862
|
});
|
|
4794
4863
|
const streamToConversation = /* @__PURE__ */ new Map();
|
|
4795
4864
|
const requestToConversation = /* @__PURE__ */ new Map();
|
|
@@ -5046,11 +5115,24 @@ var AIProvider = (props) => {
|
|
|
5046
5115
|
clearMemoryRegistry(memory);
|
|
5047
5116
|
}));
|
|
5048
5117
|
}
|
|
5049
|
-
function
|
|
5050
|
-
setState("
|
|
5051
|
-
|
|
5118
|
+
function clearCompaction() {
|
|
5119
|
+
setState("compaction", produce((compaction) => {
|
|
5120
|
+
clearCompactionRegistry(compaction);
|
|
5052
5121
|
}));
|
|
5053
5122
|
}
|
|
5123
|
+
function clearSkills() {
|
|
5124
|
+
setState("skills", produce((skills) => {
|
|
5125
|
+
clearSkillsRegistry(skills);
|
|
5126
|
+
}));
|
|
5127
|
+
}
|
|
5128
|
+
function selectHook(id) {
|
|
5129
|
+
setState("hooks", "activeHookId", id);
|
|
5130
|
+
if (id) {
|
|
5131
|
+
setState("hooks", produce((hooks) => {
|
|
5132
|
+
markHookViewed(hooks, id);
|
|
5133
|
+
}));
|
|
5134
|
+
}
|
|
5135
|
+
}
|
|
5054
5136
|
function saveToolFixture(fixture) {
|
|
5055
5137
|
const fixtures = mergeFixtures(fixture, state.hooks.fixtures);
|
|
5056
5138
|
setState("hooks", produce((hooks) => {
|
|
@@ -5376,6 +5458,10 @@ var AIProvider = (props) => {
|
|
|
5376
5458
|
setState("memory", produce((memory) => {
|
|
5377
5459
|
applyMemorySnapshot(memory, e.payload);
|
|
5378
5460
|
}));
|
|
5461
|
+
}), aiEventClient.on("skills:snapshot", (e) => {
|
|
5462
|
+
setState("skills", produce((skills) => {
|
|
5463
|
+
applySkillsSnapshot(skills, e.payload);
|
|
5464
|
+
}));
|
|
5379
5465
|
}));
|
|
5380
5466
|
const recordRunEvent = (eventName, payload) => {
|
|
5381
5467
|
setState("hooks", produce((hooks) => {
|
|
@@ -6559,6 +6645,48 @@ var AIProvider = (props) => {
|
|
|
6559
6645
|
arr.push(mwEvent);
|
|
6560
6646
|
}));
|
|
6561
6647
|
}));
|
|
6648
|
+
const recordCompactionLifecycle = (kind, hookName, payload) => {
|
|
6649
|
+
setState("compaction", produce((compaction) => {
|
|
6650
|
+
applyCompactionEvent(compaction, kind, payload);
|
|
6651
|
+
}));
|
|
6652
|
+
const {
|
|
6653
|
+
requestId,
|
|
6654
|
+
streamId,
|
|
6655
|
+
clientId
|
|
6656
|
+
} = payload;
|
|
6657
|
+
const conversationId = (clientId && state.conversations[clientId] ? clientId : void 0) || (streamId ? streamToConversation.get(streamId) : void 0) || (requestId ? requestToConversation.get(requestId) : void 0);
|
|
6658
|
+
if (!conversationId || !state.conversations[conversationId]) return;
|
|
6659
|
+
const conv = state.conversations[conversationId];
|
|
6660
|
+
const iterIndex = findLatestIterationIndex(conv, requestId);
|
|
6661
|
+
if (iterIndex < 0) return;
|
|
6662
|
+
const mwEvent = {
|
|
6663
|
+
id: `mw-cmp-${kind}-${Date.now()}-${Math.random()}`,
|
|
6664
|
+
middlewareName: "compaction",
|
|
6665
|
+
hookName,
|
|
6666
|
+
timestamp: payload.timestamp,
|
|
6667
|
+
hasTransform: kind === "state",
|
|
6668
|
+
configChanges: {
|
|
6669
|
+
before: payload.before,
|
|
6670
|
+
after: payload.after,
|
|
6671
|
+
messagesBefore: payload.messagesBefore,
|
|
6672
|
+
messagesAfter: payload.messagesAfter,
|
|
6673
|
+
reusedCheckpoint: payload.reusedCheckpoint,
|
|
6674
|
+
maxTokens: payload.maxTokens,
|
|
6675
|
+
strategyKey: payload.strategyKey,
|
|
6676
|
+
durationMs: payload.durationMs
|
|
6677
|
+
}
|
|
6678
|
+
};
|
|
6679
|
+
setState("conversations", conversationId, "iterations", iterIndex, "middlewareEvents", produce((arr) => {
|
|
6680
|
+
arr.push(mwEvent);
|
|
6681
|
+
}));
|
|
6682
|
+
};
|
|
6683
|
+
cleanupFns.push(aiEventClient.on("compaction:started", (e) => {
|
|
6684
|
+
recordCompactionLifecycle("started", "onCompactStart", e.payload);
|
|
6685
|
+
}), aiEventClient.on("compaction:state", (e) => {
|
|
6686
|
+
recordCompactionLifecycle("state", "onCompact", e.payload);
|
|
6687
|
+
}), aiEventClient.on("compaction:ended", (e) => {
|
|
6688
|
+
recordCompactionLifecycle("ended", "onCompactEnd", e.payload);
|
|
6689
|
+
}));
|
|
6562
6690
|
cleanupFns.push(aiEventClient.on("summarize:request:started", (e) => {
|
|
6563
6691
|
const {
|
|
6564
6692
|
requestId,
|
|
@@ -6952,6 +7080,8 @@ var AIProvider = (props) => {
|
|
|
6952
7080
|
selectConversation,
|
|
6953
7081
|
clearHooks,
|
|
6954
7082
|
clearMemory,
|
|
7083
|
+
clearCompaction,
|
|
7084
|
+
clearSkills,
|
|
6955
7085
|
selectHook,
|
|
6956
7086
|
saveToolFixture,
|
|
6957
7087
|
deleteToolFixture,
|
|
@@ -7086,8 +7216,9 @@ var HookDashboard = () => {
|
|
|
7086
7216
|
const unseenUpdateCount = createMemo(() => hooks().reduce((count, hook) => count + getHookUnseenEventCount(state.hooks, hook.id), 0));
|
|
7087
7217
|
const handleSelect = (hook) => {
|
|
7088
7218
|
selectHook(hook.id);
|
|
7089
|
-
|
|
7090
|
-
|
|
7219
|
+
const conversationId = hook.id || hook.clientId || hook.threadId;
|
|
7220
|
+
if (conversationId && state.conversations[conversationId]) {
|
|
7221
|
+
selectConversation(conversationId);
|
|
7091
7222
|
}
|
|
7092
7223
|
};
|
|
7093
7224
|
return (() => {
|
|
@@ -7563,6 +7694,9 @@ var MiddlewareStep = (props) => {
|
|
|
7563
7694
|
if (ev().wasDropped) return "DROP";
|
|
7564
7695
|
if (ev().hookName === "onChunk" && ev().hasTransform) return "TRANSFORM";
|
|
7565
7696
|
if (ev().hookName === "onConfig" && ev().hasTransform) return "TRANSFORM";
|
|
7697
|
+
if (ev().hookName === "onCompactStart") return "START";
|
|
7698
|
+
if (ev().hookName === "onCompact") return "COMPACT";
|
|
7699
|
+
if (ev().hookName === "onCompactEnd") return "END";
|
|
7566
7700
|
if (ev().hookName === "onBeforeToolCall" && ev().hasTransform) return "DECISION";
|
|
7567
7701
|
return null;
|
|
7568
7702
|
};
|
|
@@ -7572,6 +7706,9 @@ var MiddlewareStep = (props) => {
|
|
|
7572
7706
|
};
|
|
7573
7707
|
return [(() => {
|
|
7574
7708
|
var _el$ = _tmpl$32(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.nextSibling;
|
|
7709
|
+
_el$.$$click = () => {
|
|
7710
|
+
if (hasChanges()) setExpanded(!expanded());
|
|
7711
|
+
};
|
|
7575
7712
|
insert(_el$3, () => ev().middlewareName);
|
|
7576
7713
|
insert(_el$4, () => ev().hookName);
|
|
7577
7714
|
insert(_el$, createComponent(Show, {
|
|
@@ -7602,24 +7739,27 @@ var MiddlewareStep = (props) => {
|
|
|
7602
7739
|
},
|
|
7603
7740
|
get children() {
|
|
7604
7741
|
var _el$8 = _tmpl$22();
|
|
7605
|
-
_el$8.$$click = () => setExpanded(!expanded());
|
|
7606
7742
|
insert(_el$8, () => expanded() ? "hide changes" : "show changes");
|
|
7607
7743
|
effect(() => className(_el$8, s().stepExpandToggle));
|
|
7608
7744
|
return _el$8;
|
|
7609
7745
|
}
|
|
7610
7746
|
}), null);
|
|
7611
7747
|
effect((_p$) => {
|
|
7612
|
-
var _v$ = s().step, _v$2 =
|
|
7748
|
+
var _v$ = s().step, _v$2 = hasChanges() ? {
|
|
7749
|
+
cursor: "pointer"
|
|
7750
|
+
} : void 0, _v$3 = `${s().stepPrefix} ${s().stepPrefixMiddleware}`, _v$4 = `${s().mwBadge} ${badgeClass()}`, _v$5 = s().mwHook;
|
|
7613
7751
|
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
7614
|
-
|
|
7615
|
-
_v$3 !== _p$.a && className(_el$
|
|
7616
|
-
_v$4 !== _p$.o && className(_el$
|
|
7752
|
+
_p$.t = style(_el$, _v$2, _p$.t);
|
|
7753
|
+
_v$3 !== _p$.a && className(_el$2, _p$.a = _v$3);
|
|
7754
|
+
_v$4 !== _p$.o && className(_el$3, _p$.o = _v$4);
|
|
7755
|
+
_v$5 !== _p$.i && className(_el$4, _p$.i = _v$5);
|
|
7617
7756
|
return _p$;
|
|
7618
7757
|
}, {
|
|
7619
7758
|
e: void 0,
|
|
7620
7759
|
t: void 0,
|
|
7621
7760
|
a: void 0,
|
|
7622
|
-
o: void 0
|
|
7761
|
+
o: void 0,
|
|
7762
|
+
i: void 0
|
|
7623
7763
|
});
|
|
7624
7764
|
return _el$;
|
|
7625
7765
|
})(), createComponent(Show, {
|
|
@@ -7675,9 +7815,9 @@ var ThinkingStep = (props) => {
|
|
|
7675
7815
|
}
|
|
7676
7816
|
}), null);
|
|
7677
7817
|
effect((_p$) => {
|
|
7678
|
-
var _v$
|
|
7679
|
-
_v$
|
|
7680
|
-
_v$
|
|
7818
|
+
var _v$6 = `${s().stepPrefix} ${s().stepPrefixThinking}`, _v$7 = s().stepContent;
|
|
7819
|
+
_v$6 !== _p$.e && className(_el$1, _p$.e = _v$6);
|
|
7820
|
+
_v$7 !== _p$.t && className(_el$10, _p$.t = _v$7);
|
|
7681
7821
|
return _p$;
|
|
7682
7822
|
}, {
|
|
7683
7823
|
e: void 0,
|
|
@@ -7731,10 +7871,10 @@ var StructuredOutputStep = (props) => {
|
|
|
7731
7871
|
}), false, true);
|
|
7732
7872
|
insert(_el$15, () => part().status);
|
|
7733
7873
|
effect((_p$) => {
|
|
7734
|
-
var _v$
|
|
7735
|
-
_v$
|
|
7736
|
-
_v$
|
|
7737
|
-
_v$
|
|
7874
|
+
var _v$8 = `${s().stepPrefix} ${s().stepPrefixAssistant}`, _v$9 = `${s().mwBadge} ${badgeClass()}`, _v$0 = `${s().chevron} ${expanded() ? s().chevronOpen : ""}`;
|
|
7875
|
+
_v$8 !== _p$.e && className(_el$14, _p$.e = _v$8);
|
|
7876
|
+
_v$9 !== _p$.t && className(_el$15, _p$.t = _v$9);
|
|
7877
|
+
_v$0 !== _p$.a && className(_el$16, _p$.a = _v$0);
|
|
7738
7878
|
return _p$;
|
|
7739
7879
|
}, {
|
|
7740
7880
|
e: void 0,
|
|
@@ -7759,10 +7899,10 @@ var StructuredOutputStep = (props) => {
|
|
|
7759
7899
|
copyable: true
|
|
7760
7900
|
}));
|
|
7761
7901
|
effect((_p$) => {
|
|
7762
|
-
var _v$
|
|
7763
|
-
_v$
|
|
7764
|
-
_v$
|
|
7765
|
-
_v$
|
|
7902
|
+
var _v$11 = s().stepJsonItem, _v$12 = s().stepJsonItemLabel, _v$13 = s().stepJsonPanel;
|
|
7903
|
+
_v$11 !== _p$.e && className(_el$19, _p$.e = _v$11);
|
|
7904
|
+
_v$12 !== _p$.t && className(_el$20, _p$.t = _v$12);
|
|
7905
|
+
_v$13 !== _p$.a && className(_el$21, _p$.a = _v$13);
|
|
7766
7906
|
return _p$;
|
|
7767
7907
|
}, {
|
|
7768
7908
|
e: void 0,
|
|
@@ -7773,9 +7913,9 @@ var StructuredOutputStep = (props) => {
|
|
|
7773
7913
|
})()
|
|
7774
7914
|
}));
|
|
7775
7915
|
effect((_p$) => {
|
|
7776
|
-
var _v$
|
|
7777
|
-
_v$
|
|
7778
|
-
_v$
|
|
7916
|
+
var _v$1 = `${s().cardBody} ${expanded() ? s().cardBodyOpen : ""}`, _v$10 = `${s().cardBodyInner} ${s().stepJsonItemsCompare}`;
|
|
7917
|
+
_v$1 !== _p$.e && className(_el$17, _p$.e = _v$1);
|
|
7918
|
+
_v$10 !== _p$.t && className(_el$18, _p$.t = _v$10);
|
|
7779
7919
|
return _p$;
|
|
7780
7920
|
}, {
|
|
7781
7921
|
e: void 0,
|
|
@@ -7824,9 +7964,9 @@ var AssistantStep = (props) => {
|
|
|
7824
7964
|
}
|
|
7825
7965
|
}), null);
|
|
7826
7966
|
effect((_p$) => {
|
|
7827
|
-
var _v$
|
|
7828
|
-
_v$
|
|
7829
|
-
_v$
|
|
7967
|
+
var _v$14 = `${s().stepPrefix} ${s().stepPrefixAssistant}`, _v$15 = isLong() ? s().stepContentLong : s().stepContent;
|
|
7968
|
+
_v$14 !== _p$.e && className(_el$23, _p$.e = _v$14);
|
|
7969
|
+
_v$15 !== _p$.t && className(_el$24, _p$.t = _v$15);
|
|
7830
7970
|
return _p$;
|
|
7831
7971
|
}, {
|
|
7832
7972
|
e: void 0,
|
|
@@ -7917,10 +8057,10 @@ var ToolCallStep = (props) => {
|
|
|
7917
8057
|
}
|
|
7918
8058
|
}), _el$32);
|
|
7919
8059
|
effect((_p$) => {
|
|
7920
|
-
var _v$
|
|
7921
|
-
_v$
|
|
7922
|
-
_v$
|
|
7923
|
-
_v$
|
|
8060
|
+
var _v$16 = `${s().stepPrefix} ${s().stepPrefixToolCall}`, _v$17 = `${s().mwBadge} ${s().mwBadgeToolCall}`, _v$18 = `${s().chevron} ${argsOpen() ? s().chevronOpen : ""}`;
|
|
8061
|
+
_v$16 !== _p$.e && className(_el$28, _p$.e = _v$16);
|
|
8062
|
+
_v$17 !== _p$.t && className(_el$29, _p$.t = _v$17);
|
|
8063
|
+
_v$18 !== _p$.a && className(_el$32, _p$.a = _v$18);
|
|
7924
8064
|
return _p$;
|
|
7925
8065
|
}, {
|
|
7926
8066
|
e: void 0,
|
|
@@ -7938,10 +8078,10 @@ var ToolCallStep = (props) => {
|
|
|
7938
8078
|
copyable: true
|
|
7939
8079
|
}));
|
|
7940
8080
|
effect((_p$) => {
|
|
7941
|
-
var _v$
|
|
7942
|
-
_v$
|
|
7943
|
-
_v$
|
|
7944
|
-
_v$
|
|
8081
|
+
var _v$19 = `${s().cardBody} ${argsOpen() ? s().cardBodyOpen : ""}`, _v$20 = s().cardBodyInner, _v$21 = s().stepJsonPanel;
|
|
8082
|
+
_v$19 !== _p$.e && className(_el$33, _p$.e = _v$19);
|
|
8083
|
+
_v$20 !== _p$.t && className(_el$34, _p$.t = _v$20);
|
|
8084
|
+
_v$21 !== _p$.a && className(_el$35, _p$.a = _v$21);
|
|
7945
8085
|
return _p$;
|
|
7946
8086
|
}, {
|
|
7947
8087
|
e: void 0,
|
|
@@ -7987,10 +8127,10 @@ var ToolCallStep = (props) => {
|
|
|
7987
8127
|
}
|
|
7988
8128
|
}), _el$41);
|
|
7989
8129
|
effect((_p$) => {
|
|
7990
|
-
var _v$
|
|
7991
|
-
_v$
|
|
7992
|
-
_v$
|
|
7993
|
-
_v$
|
|
8130
|
+
var _v$22 = `${s().stepPrefix} ${s().stepPrefixToolResult}`, _v$23 = `${s().mwBadge} ${s().mwBadgeToolResult}`, _v$24 = `${s().chevron} ${resultOpen() ? s().chevronOpen : ""}`;
|
|
8131
|
+
_v$22 !== _p$.e && className(_el$37, _p$.e = _v$22);
|
|
8132
|
+
_v$23 !== _p$.t && className(_el$38, _p$.t = _v$23);
|
|
8133
|
+
_v$24 !== _p$.a && className(_el$41, _p$.a = _v$24);
|
|
7994
8134
|
return _p$;
|
|
7995
8135
|
}, {
|
|
7996
8136
|
e: void 0,
|
|
@@ -8008,10 +8148,10 @@ var ToolCallStep = (props) => {
|
|
|
8008
8148
|
copyable: true
|
|
8009
8149
|
}));
|
|
8010
8150
|
effect((_p$) => {
|
|
8011
|
-
var _v$
|
|
8012
|
-
_v$
|
|
8013
|
-
_v$
|
|
8014
|
-
_v$
|
|
8151
|
+
var _v$25 = `${s().cardBody} ${resultOpen() ? s().cardBodyOpen : ""}`, _v$26 = s().cardBodyInner, _v$27 = s().stepJsonPanel;
|
|
8152
|
+
_v$25 !== _p$.e && className(_el$42, _p$.e = _v$25);
|
|
8153
|
+
_v$26 !== _p$.t && className(_el$43, _p$.t = _v$26);
|
|
8154
|
+
_v$27 !== _p$.a && className(_el$44, _p$.a = _v$27);
|
|
8015
8155
|
return _p$;
|
|
8016
8156
|
}, {
|
|
8017
8157
|
e: void 0,
|
|
@@ -8051,9 +8191,9 @@ var ToolResultStep = (props) => {
|
|
|
8051
8191
|
}
|
|
8052
8192
|
}), false, true);
|
|
8053
8193
|
effect((_p$) => {
|
|
8054
|
-
var _v$
|
|
8055
|
-
_v$
|
|
8056
|
-
_v$
|
|
8194
|
+
var _v$28 = `${s().stepPrefix} ${s().stepPrefixToolResult}`, _v$29 = `${s().chevron} ${isOpen() ? s().chevronOpen : ""}`;
|
|
8195
|
+
_v$28 !== _p$.e && className(_el$47, _p$.e = _v$28);
|
|
8196
|
+
_v$29 !== _p$.t && className(_el$48, _p$.t = _v$29);
|
|
8057
8197
|
return _p$;
|
|
8058
8198
|
}, {
|
|
8059
8199
|
e: void 0,
|
|
@@ -8070,10 +8210,10 @@ var ToolResultStep = (props) => {
|
|
|
8070
8210
|
copyable: true
|
|
8071
8211
|
}));
|
|
8072
8212
|
effect((_p$) => {
|
|
8073
|
-
var _v$
|
|
8074
|
-
_v$
|
|
8075
|
-
_v$
|
|
8076
|
-
_v$
|
|
8213
|
+
var _v$30 = `${s().cardBody} ${isOpen() ? s().cardBodyOpen : ""}`, _v$31 = s().cardBodyInner, _v$32 = s().stepJsonPanel;
|
|
8214
|
+
_v$30 !== _p$.e && className(_el$49, _p$.e = _v$30);
|
|
8215
|
+
_v$31 !== _p$.t && className(_el$50, _p$.t = _v$31);
|
|
8216
|
+
_v$32 !== _p$.a && className(_el$51, _p$.a = _v$32);
|
|
8077
8217
|
return _p$;
|
|
8078
8218
|
}, {
|
|
8079
8219
|
e: void 0,
|
|
@@ -8346,9 +8486,9 @@ var IterationCard = (props) => {
|
|
|
8346
8486
|
var _el$69 = _tmpl$17(); _el$69.firstChild;
|
|
8347
8487
|
insert(_el$69, totalToolCalls, null);
|
|
8348
8488
|
effect((_p$) => {
|
|
8349
|
-
var _v$
|
|
8350
|
-
_v$
|
|
8351
|
-
_v$
|
|
8489
|
+
var _v$33 = `${s().badge} ${s().badgeFinishReasonToolCalls}`, _v$34 = `${totalToolCalls()} tool ${totalToolCalls() === 1 ? "call" : "calls"}`;
|
|
8490
|
+
_v$33 !== _p$.e && className(_el$69, _p$.e = _v$33);
|
|
8491
|
+
_v$34 !== _p$.t && setAttribute(_el$69, "title", _p$.t = _v$34);
|
|
8352
8492
|
return _p$;
|
|
8353
8493
|
}, {
|
|
8354
8494
|
e: void 0,
|
|
@@ -8365,9 +8505,9 @@ var IterationCard = (props) => {
|
|
|
8365
8505
|
var _el$71 = _tmpl$18(); _el$71.firstChild;
|
|
8366
8506
|
insert(_el$71, () => formatDuration(duration()), null);
|
|
8367
8507
|
effect((_p$) => {
|
|
8368
|
-
var _v$
|
|
8369
|
-
_v$
|
|
8370
|
-
_v$
|
|
8508
|
+
var _v$35 = `${s().badge} ${s().badgeDuration}`, _v$36 = formatDuration(duration());
|
|
8509
|
+
_v$35 !== _p$.e && className(_el$71, _p$.e = _v$35);
|
|
8510
|
+
_v$36 !== _p$.t && setAttribute(_el$71, "title", _p$.t = _v$36);
|
|
8371
8511
|
return _p$;
|
|
8372
8512
|
}, {
|
|
8373
8513
|
e: void 0,
|
|
@@ -8384,9 +8524,9 @@ var IterationCard = (props) => {
|
|
|
8384
8524
|
var _el$94 = _tmpl$25(); _el$94.firstChild;
|
|
8385
8525
|
insert(_el$94, () => usage().totalTokens.toLocaleString(), null);
|
|
8386
8526
|
effect((_p$) => {
|
|
8387
|
-
var _v$
|
|
8388
|
-
_v$
|
|
8389
|
-
_v$
|
|
8527
|
+
var _v$57 = `${s().badge} ${s().badgeUsage}`, _v$58 = `Prompt: ${usage().promptTokens.toLocaleString()} | Completion: ${usage().completionTokens.toLocaleString()}`;
|
|
8528
|
+
_v$57 !== _p$.e && className(_el$94, _p$.e = _v$57);
|
|
8529
|
+
_v$58 !== _p$.t && setAttribute(_el$94, "title", _p$.t = _v$58);
|
|
8390
8530
|
return _p$;
|
|
8391
8531
|
}, {
|
|
8392
8532
|
e: void 0,
|
|
@@ -8443,12 +8583,12 @@ var IterationCard = (props) => {
|
|
|
8443
8583
|
insert(_el$103, () => diff.from);
|
|
8444
8584
|
insert(_el$105, () => diff.to);
|
|
8445
8585
|
effect((_p$) => {
|
|
8446
|
-
var _v$
|
|
8447
|
-
_v$
|
|
8448
|
-
_v$
|
|
8449
|
-
_v$
|
|
8450
|
-
_v$
|
|
8451
|
-
_v$
|
|
8586
|
+
var _v$59 = s().configDiffRow, _v$60 = s().configDiffKey, _v$61 = s().configDiffFrom, _v$62 = s().configDiffArrow, _v$63 = s().configDiffTo;
|
|
8587
|
+
_v$59 !== _p$.e && className(_el$100, _p$.e = _v$59);
|
|
8588
|
+
_v$60 !== _p$.t && className(_el$101, _p$.t = _v$60);
|
|
8589
|
+
_v$61 !== _p$.a && className(_el$103, _p$.a = _v$61);
|
|
8590
|
+
_v$62 !== _p$.o && className(_el$104, _p$.o = _v$62);
|
|
8591
|
+
_v$63 !== _p$.i && className(_el$105, _p$.i = _v$63);
|
|
8452
8592
|
return _p$;
|
|
8453
8593
|
}, {
|
|
8454
8594
|
e: void 0,
|
|
@@ -8461,10 +8601,10 @@ var IterationCard = (props) => {
|
|
|
8461
8601
|
})()
|
|
8462
8602
|
}));
|
|
8463
8603
|
effect((_p$) => {
|
|
8464
|
-
var _v$
|
|
8465
|
-
_v$
|
|
8466
|
-
_v$
|
|
8467
|
-
_v$
|
|
8604
|
+
var _v$37 = s().configPanelSection, _v$38 = s().configPanelLabel, _v$39 = s().configDiffSection;
|
|
8605
|
+
_v$37 !== _p$.e && className(_el$78, _p$.e = _v$37);
|
|
8606
|
+
_v$38 !== _p$.t && className(_el$79, _p$.t = _v$38);
|
|
8607
|
+
_v$39 !== _p$.a && className(_el$80, _p$.a = _v$39);
|
|
8468
8608
|
return _p$;
|
|
8469
8609
|
}, {
|
|
8470
8610
|
e: void 0,
|
|
@@ -8489,9 +8629,9 @@ var IterationCard = (props) => {
|
|
|
8489
8629
|
insert(_el$106, name, _el$107);
|
|
8490
8630
|
insert(_el$107, () => toolInvocationCounts().get(name) || 0);
|
|
8491
8631
|
effect((_p$) => {
|
|
8492
|
-
var _v$
|
|
8493
|
-
_v$
|
|
8494
|
-
_v$
|
|
8632
|
+
var _v$64 = s().configToolChip, _v$65 = s().configToolChipCount;
|
|
8633
|
+
_v$64 !== _p$.e && className(_el$106, _p$.e = _v$64);
|
|
8634
|
+
_v$65 !== _p$.t && className(_el$107, _p$.t = _v$65);
|
|
8495
8635
|
return _p$;
|
|
8496
8636
|
}, {
|
|
8497
8637
|
e: void 0,
|
|
@@ -8501,10 +8641,10 @@ var IterationCard = (props) => {
|
|
|
8501
8641
|
})()
|
|
8502
8642
|
}));
|
|
8503
8643
|
effect((_p$) => {
|
|
8504
|
-
var _v$
|
|
8505
|
-
_v$
|
|
8506
|
-
_v$
|
|
8507
|
-
_v$
|
|
8644
|
+
var _v$40 = s().configPanelSection, _v$41 = s().configPanelLabel, _v$42 = s().configToolsList;
|
|
8645
|
+
_v$40 !== _p$.e && className(_el$81, _p$.e = _v$40);
|
|
8646
|
+
_v$41 !== _p$.t && className(_el$82, _p$.t = _v$41);
|
|
8647
|
+
_v$42 !== _p$.a && className(_el$83, _p$.a = _v$42);
|
|
8508
8648
|
return _p$;
|
|
8509
8649
|
}, {
|
|
8510
8650
|
e: void 0,
|
|
@@ -8533,9 +8673,9 @@ var IterationCard = (props) => {
|
|
|
8533
8673
|
})
|
|
8534
8674
|
}), null);
|
|
8535
8675
|
effect((_p$) => {
|
|
8536
|
-
var _v$
|
|
8537
|
-
_v$
|
|
8538
|
-
_v$
|
|
8676
|
+
var _v$43 = s().configPanelSection, _v$44 = s().configPanelLabel;
|
|
8677
|
+
_v$43 !== _p$.e && className(_el$84, _p$.e = _v$43);
|
|
8678
|
+
_v$44 !== _p$.t && className(_el$85, _p$.t = _v$44);
|
|
8539
8679
|
return _p$;
|
|
8540
8680
|
}, {
|
|
8541
8681
|
e: void 0,
|
|
@@ -8558,10 +8698,10 @@ var IterationCard = (props) => {
|
|
|
8558
8698
|
copyable: true
|
|
8559
8699
|
}));
|
|
8560
8700
|
effect((_p$) => {
|
|
8561
|
-
var _v$
|
|
8562
|
-
_v$
|
|
8563
|
-
_v$
|
|
8564
|
-
_v$
|
|
8701
|
+
var _v$45 = s().configPanelSection, _v$46 = s().configPanelLabel, _v$47 = s().configJsonTreeContainer;
|
|
8702
|
+
_v$45 !== _p$.e && className(_el$89, _p$.e = _v$45);
|
|
8703
|
+
_v$46 !== _p$.t && className(_el$90, _p$.t = _v$46);
|
|
8704
|
+
_v$47 !== _p$.a && className(_el$91, _p$.a = _v$47);
|
|
8565
8705
|
return _p$;
|
|
8566
8706
|
}, {
|
|
8567
8707
|
e: void 0,
|
|
@@ -8663,16 +8803,16 @@ var IterationCard = (props) => {
|
|
|
8663
8803
|
})
|
|
8664
8804
|
}));
|
|
8665
8805
|
effect((_p$) => {
|
|
8666
|
-
var _v$
|
|
8667
|
-
_v$
|
|
8668
|
-
_v$
|
|
8669
|
-
_v$
|
|
8670
|
-
_v$
|
|
8671
|
-
_v$
|
|
8672
|
-
_v$
|
|
8673
|
-
_v$
|
|
8674
|
-
_v$
|
|
8675
|
-
_v$
|
|
8806
|
+
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;
|
|
8807
|
+
_v$48 !== _p$.e && className(_el$54, _p$.e = _v$48);
|
|
8808
|
+
_v$49 !== _p$.t && className(_el$55, _p$.t = _v$49);
|
|
8809
|
+
_v$50 !== _p$.a && className(_el$56, _p$.a = _v$50);
|
|
8810
|
+
_v$51 !== _p$.o && className(_el$67, _p$.o = _v$51);
|
|
8811
|
+
_v$52 !== _p$.i && className(_el$74, _p$.i = _v$52);
|
|
8812
|
+
_v$53 !== _p$.n && className(_el$75, _p$.n = _v$53);
|
|
8813
|
+
_v$54 !== _p$.s && className(_el$76, _p$.s = _v$54);
|
|
8814
|
+
_v$55 !== _p$.h && className(_el$92, _p$.h = _v$55);
|
|
8815
|
+
_v$56 !== _p$.r && className(_el$93, _p$.r = _v$56);
|
|
8676
8816
|
return _p$;
|
|
8677
8817
|
}, {
|
|
8678
8818
|
e: void 0,
|
|
@@ -10935,18 +11075,461 @@ var MemoryPanel = () => {
|
|
|
10935
11075
|
})();
|
|
10936
11076
|
};
|
|
10937
11077
|
delegateEvents(["click"]);
|
|
11078
|
+
var _tmpl$40 = /* @__PURE__ */ template(`<div><div></div><div>`);
|
|
11079
|
+
var _tmpl$214 = /* @__PURE__ */ template(`<div>`);
|
|
11080
|
+
var _tmpl$310 = /* @__PURE__ */ template(`<div><div> (<!>)`);
|
|
11081
|
+
var _tmpl$47 = /* @__PURE__ */ template(`<span> \u2192 <!> tok`);
|
|
11082
|
+
var _tmpl$57 = /* @__PURE__ */ template(`<span>ms`);
|
|
11083
|
+
var _tmpl$67 = /* @__PURE__ */ template(`<span>checkpoint`);
|
|
11084
|
+
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`);
|
|
11085
|
+
var _tmpl$87 = /* @__PURE__ */ template(`<div><span> event</span><button type=button>Clear`);
|
|
11086
|
+
var _tmpl$97 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-compaction-panel>`);
|
|
11087
|
+
var _tmpl$06 = /* @__PURE__ */ template(`<div>No compaction yet. When the transcript passes maxTokens, each compact appears here.`);
|
|
11088
|
+
function formatTime3(value) {
|
|
11089
|
+
const date = new Date(value);
|
|
11090
|
+
if (Number.isNaN(date.getTime())) return "";
|
|
11091
|
+
return date.toLocaleTimeString();
|
|
11092
|
+
}
|
|
11093
|
+
function shortStrategy(event) {
|
|
11094
|
+
const key = event.strategyKey;
|
|
11095
|
+
if (!key) return event.reusedCheckpoint ? "checkpoint" : "compaction";
|
|
11096
|
+
const cut = key.indexOf(":maxTokens=");
|
|
11097
|
+
return cut === -1 ? key : key.slice(0, cut);
|
|
11098
|
+
}
|
|
11099
|
+
var PreviewMessage = (props) => {
|
|
11100
|
+
const styles = useStyles();
|
|
11101
|
+
return (() => {
|
|
11102
|
+
var _el$ = _tmpl$40(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
|
|
11103
|
+
insert(_el$2, () => props.preview.role, null);
|
|
11104
|
+
insert(_el$2, createComponent(Show, {
|
|
11105
|
+
get when() {
|
|
11106
|
+
return props.preview.tokens > 0;
|
|
11107
|
+
},
|
|
11108
|
+
get children() {
|
|
11109
|
+
return ` \xB7 ${props.preview.tokens} tok`;
|
|
11110
|
+
}
|
|
11111
|
+
}), null);
|
|
11112
|
+
insert(_el$3, () => props.preview.text);
|
|
11113
|
+
effect((_p$) => {
|
|
11114
|
+
var _v$ = styles().hookDetails.message, _v$2 = styles().hookDetails.messageRole, _v$3 = styles().hookDetails.messageContent;
|
|
11115
|
+
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
11116
|
+
_v$2 !== _p$.t && className(_el$2, _p$.t = _v$2);
|
|
11117
|
+
_v$3 !== _p$.a && className(_el$3, _p$.a = _v$3);
|
|
11118
|
+
return _p$;
|
|
11119
|
+
}, {
|
|
11120
|
+
e: void 0,
|
|
11121
|
+
t: void 0,
|
|
11122
|
+
a: void 0
|
|
11123
|
+
});
|
|
11124
|
+
return _el$;
|
|
11125
|
+
})();
|
|
11126
|
+
};
|
|
11127
|
+
var PreviewColumn = (props) => {
|
|
11128
|
+
const styles = useStyles();
|
|
11129
|
+
const s = () => styles().iterationTimeline;
|
|
11130
|
+
return (() => {
|
|
11131
|
+
var _el$4 = _tmpl$310(), _el$5 = _el$4.firstChild, _el$6 = _el$5.firstChild, _el$8 = _el$6.nextSibling; _el$8.nextSibling;
|
|
11132
|
+
insert(_el$5, () => props.title, _el$6);
|
|
11133
|
+
insert(_el$5, () => props.previews.length, _el$8);
|
|
11134
|
+
insert(_el$4, createComponent(Show, {
|
|
11135
|
+
get when() {
|
|
11136
|
+
return props.previews.length > 0;
|
|
11137
|
+
},
|
|
11138
|
+
get fallback() {
|
|
11139
|
+
return (() => {
|
|
11140
|
+
var _el$0 = _tmpl$214();
|
|
11141
|
+
insert(_el$0, () => props.empty);
|
|
11142
|
+
effect(() => className(_el$0, styles().hookDetails.emptySmall));
|
|
11143
|
+
return _el$0;
|
|
11144
|
+
})();
|
|
11145
|
+
},
|
|
11146
|
+
get children() {
|
|
11147
|
+
var _el$9 = _tmpl$214();
|
|
11148
|
+
insert(_el$9, createComponent(For, {
|
|
11149
|
+
get each() {
|
|
11150
|
+
return props.previews;
|
|
11151
|
+
},
|
|
11152
|
+
children: (preview) => createComponent(PreviewMessage, {
|
|
11153
|
+
preview
|
|
11154
|
+
})
|
|
11155
|
+
}));
|
|
11156
|
+
effect(() => className(_el$9, styles().memoryPanel.list));
|
|
11157
|
+
return _el$9;
|
|
11158
|
+
}
|
|
11159
|
+
}), null);
|
|
11160
|
+
effect((_p$) => {
|
|
11161
|
+
var _v$4 = s().stepJsonItem, _v$5 = s().stepJsonItemLabel;
|
|
11162
|
+
_v$4 !== _p$.e && className(_el$4, _p$.e = _v$4);
|
|
11163
|
+
_v$5 !== _p$.t && className(_el$5, _p$.t = _v$5);
|
|
11164
|
+
return _p$;
|
|
11165
|
+
}, {
|
|
11166
|
+
e: void 0,
|
|
11167
|
+
t: void 0
|
|
11168
|
+
});
|
|
11169
|
+
return _el$4;
|
|
11170
|
+
})();
|
|
11171
|
+
};
|
|
11172
|
+
function kindLabel(kind) {
|
|
11173
|
+
if (kind === "started") return "Started";
|
|
11174
|
+
if (kind === "ended") return "Ended";
|
|
11175
|
+
return "State";
|
|
11176
|
+
}
|
|
11177
|
+
var CompactEvent = (props) => {
|
|
11178
|
+
const styles = useStyles();
|
|
11179
|
+
const s = () => styles().iterationTimeline;
|
|
11180
|
+
const [expanded, setExpanded] = createSignal(props.defaultOpen === true);
|
|
11181
|
+
const event = () => props.event;
|
|
11182
|
+
const isState = () => event().kind === "state";
|
|
11183
|
+
const stats = () => ({
|
|
11184
|
+
kind: event().kind,
|
|
11185
|
+
before: event().before,
|
|
11186
|
+
after: event().after,
|
|
11187
|
+
messagesBefore: event().messagesBefore,
|
|
11188
|
+
messagesAfter: event().messagesAfter,
|
|
11189
|
+
maxTokens: event().maxTokens,
|
|
11190
|
+
strategyKey: event().strategyKey,
|
|
11191
|
+
reusedCheckpoint: event().reusedCheckpoint,
|
|
11192
|
+
durationMs: event().durationMs
|
|
11193
|
+
});
|
|
11194
|
+
const countLabel = () => {
|
|
11195
|
+
if (event().kind === "started") {
|
|
11196
|
+
return `${event().messagesBefore ?? 0} msgs \xB7 ${event().before ?? 0} tok`;
|
|
11197
|
+
}
|
|
11198
|
+
if (event().kind === "ended") {
|
|
11199
|
+
return `${event().messagesAfter ?? 0} msgs \xB7 ${event().after ?? 0} tok`;
|
|
11200
|
+
}
|
|
11201
|
+
return `${event().messagesBefore ?? 0} \u2192 ${event().messagesAfter ?? 0} msgs`;
|
|
11202
|
+
};
|
|
11203
|
+
return [(() => {
|
|
11204
|
+
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;
|
|
11205
|
+
_el$1.$$click = () => setExpanded(!expanded());
|
|
11206
|
+
insert(_el$10, () => kindLabel(event().kind));
|
|
11207
|
+
insert(_el$11, () => shortStrategy(event()));
|
|
11208
|
+
insert(_el$12, countLabel);
|
|
11209
|
+
insert(_el$1, createComponent(Show, {
|
|
11210
|
+
get when() {
|
|
11211
|
+
return event().kind === "state";
|
|
11212
|
+
},
|
|
11213
|
+
get children() {
|
|
11214
|
+
var _el$13 = _tmpl$47(), _el$14 = _el$13.firstChild, _el$16 = _el$14.nextSibling; _el$16.nextSibling;
|
|
11215
|
+
insert(_el$13, () => event().before, _el$14);
|
|
11216
|
+
insert(_el$13, () => event().after, _el$16);
|
|
11217
|
+
effect(() => className(_el$13, s().stepDuration));
|
|
11218
|
+
return _el$13;
|
|
11219
|
+
}
|
|
11220
|
+
}), _el$20);
|
|
11221
|
+
insert(_el$1, createComponent(Show, {
|
|
11222
|
+
get when() {
|
|
11223
|
+
return event().durationMs !== void 0;
|
|
11224
|
+
},
|
|
11225
|
+
get children() {
|
|
11226
|
+
var _el$17 = _tmpl$57(), _el$18 = _el$17.firstChild;
|
|
11227
|
+
insert(_el$17, () => event().durationMs, _el$18);
|
|
11228
|
+
effect(() => className(_el$17, s().stepDuration));
|
|
11229
|
+
return _el$17;
|
|
11230
|
+
}
|
|
11231
|
+
}), _el$20);
|
|
11232
|
+
insert(_el$1, createComponent(Show, {
|
|
11233
|
+
get when() {
|
|
11234
|
+
return event().reusedCheckpoint;
|
|
11235
|
+
},
|
|
11236
|
+
get children() {
|
|
11237
|
+
var _el$19 = _tmpl$67();
|
|
11238
|
+
effect(() => className(_el$19, s().mwSuffix));
|
|
11239
|
+
return _el$19;
|
|
11240
|
+
}
|
|
11241
|
+
}), _el$20);
|
|
11242
|
+
insert(_el$20, () => formatTime3(event().timestamp));
|
|
11243
|
+
effect((_p$) => {
|
|
11244
|
+
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 : ""}`;
|
|
11245
|
+
_v$6 !== _p$.e && className(_el$1, _p$.e = _v$6);
|
|
11246
|
+
_v$7 !== _p$.t && setAttribute(_el$1, "data-kind", _p$.t = _v$7);
|
|
11247
|
+
_v$8 !== _p$.a && className(_el$10, _p$.a = _v$8);
|
|
11248
|
+
_v$9 !== _p$.o && className(_el$11, _p$.o = _v$9);
|
|
11249
|
+
_v$0 !== _p$.i && className(_el$12, _p$.i = _v$0);
|
|
11250
|
+
_v$1 !== _p$.n && className(_el$20, _p$.n = _v$1);
|
|
11251
|
+
_v$10 !== _p$.s && className(_el$21, _p$.s = _v$10);
|
|
11252
|
+
return _p$;
|
|
11253
|
+
}, {
|
|
11254
|
+
e: void 0,
|
|
11255
|
+
t: void 0,
|
|
11256
|
+
a: void 0,
|
|
11257
|
+
o: void 0,
|
|
11258
|
+
i: void 0,
|
|
11259
|
+
n: void 0,
|
|
11260
|
+
s: void 0
|
|
11261
|
+
});
|
|
11262
|
+
return _el$1;
|
|
11263
|
+
})(), createComponent(Show, {
|
|
11264
|
+
get when() {
|
|
11265
|
+
return expanded();
|
|
11266
|
+
},
|
|
11267
|
+
get children() {
|
|
11268
|
+
return [(() => {
|
|
11269
|
+
var _el$22 = _tmpl$214();
|
|
11270
|
+
insert(_el$22, createComponent(JsonTree, {
|
|
11271
|
+
get value() {
|
|
11272
|
+
return stats();
|
|
11273
|
+
},
|
|
11274
|
+
defaultExpansionDepth: 1,
|
|
11275
|
+
copyable: true
|
|
11276
|
+
}));
|
|
11277
|
+
effect(() => className(_el$22, s().mwChangesContainer));
|
|
11278
|
+
return _el$22;
|
|
11279
|
+
})(), createComponent(Show, {
|
|
11280
|
+
get when() {
|
|
11281
|
+
return isState();
|
|
11282
|
+
},
|
|
11283
|
+
get children() {
|
|
11284
|
+
var _el$23 = _tmpl$214();
|
|
11285
|
+
insert(_el$23, createComponent(PreviewColumn, {
|
|
11286
|
+
title: "Dropped",
|
|
11287
|
+
get previews() {
|
|
11288
|
+
return event().dropped ?? [];
|
|
11289
|
+
},
|
|
11290
|
+
empty: "Nothing was dropped."
|
|
11291
|
+
}), null);
|
|
11292
|
+
insert(_el$23, createComponent(PreviewColumn, {
|
|
11293
|
+
title: "Sent to model",
|
|
11294
|
+
get previews() {
|
|
11295
|
+
return event().result ?? [];
|
|
11296
|
+
},
|
|
11297
|
+
empty: "No compacted transcript on this event."
|
|
11298
|
+
}), null);
|
|
11299
|
+
effect(() => className(_el$23, s().stepJsonItemsCompare));
|
|
11300
|
+
return _el$23;
|
|
11301
|
+
}
|
|
11302
|
+
})];
|
|
11303
|
+
}
|
|
11304
|
+
})];
|
|
11305
|
+
};
|
|
11306
|
+
var CompactionPanel = (props) => {
|
|
11307
|
+
const {
|
|
11308
|
+
state,
|
|
11309
|
+
clearCompaction
|
|
11310
|
+
} = useAIStore();
|
|
11311
|
+
const styles = useStyles();
|
|
11312
|
+
const s = () => styles().iterationTimeline;
|
|
11313
|
+
const events = createMemo(() => compactionEventsForHook(state.compaction, props.hook));
|
|
11314
|
+
const lastStateIndex = createMemo(() => {
|
|
11315
|
+
const list = events();
|
|
11316
|
+
for (let i = list.length - 1; i >= 0; i--) {
|
|
11317
|
+
if (list[i]?.kind === "state") return i;
|
|
11318
|
+
}
|
|
11319
|
+
return -1;
|
|
11320
|
+
});
|
|
11321
|
+
return (() => {
|
|
11322
|
+
var _el$24 = _tmpl$97();
|
|
11323
|
+
insert(_el$24, createComponent(Show, {
|
|
11324
|
+
get when() {
|
|
11325
|
+
return events().length > 0;
|
|
11326
|
+
},
|
|
11327
|
+
get fallback() {
|
|
11328
|
+
return (() => {
|
|
11329
|
+
var _el$30 = _tmpl$06();
|
|
11330
|
+
effect(() => className(_el$30, styles().hookDetails.emptySmall));
|
|
11331
|
+
return _el$30;
|
|
11332
|
+
})();
|
|
11333
|
+
},
|
|
11334
|
+
get children() {
|
|
11335
|
+
return [(() => {
|
|
11336
|
+
var _el$25 = _tmpl$87(), _el$26 = _el$25.firstChild, _el$27 = _el$26.firstChild, _el$28 = _el$26.nextSibling;
|
|
11337
|
+
insert(_el$26, () => events().length, _el$27);
|
|
11338
|
+
insert(_el$26, () => events().length === 1 ? "" : "s", null);
|
|
11339
|
+
_el$28.$$click = () => clearCompaction();
|
|
11340
|
+
effect((_p$) => {
|
|
11341
|
+
var _v$11 = styles().memoryPanel.toolbar, _v$12 = styles().memoryPanel.badge, _v$13 = styles().memoryPanel.clearButton;
|
|
11342
|
+
_v$11 !== _p$.e && className(_el$25, _p$.e = _v$11);
|
|
11343
|
+
_v$12 !== _p$.t && className(_el$26, _p$.t = _v$12);
|
|
11344
|
+
_v$13 !== _p$.a && className(_el$28, _p$.a = _v$13);
|
|
11345
|
+
return _p$;
|
|
11346
|
+
}, {
|
|
11347
|
+
e: void 0,
|
|
11348
|
+
t: void 0,
|
|
11349
|
+
a: void 0
|
|
11350
|
+
});
|
|
11351
|
+
return _el$25;
|
|
11352
|
+
})(), (() => {
|
|
11353
|
+
var _el$29 = _tmpl$214();
|
|
11354
|
+
insert(_el$29, createComponent(For, {
|
|
11355
|
+
get each() {
|
|
11356
|
+
return events();
|
|
11357
|
+
},
|
|
11358
|
+
children: (event, index) => createComponent(CompactEvent, {
|
|
11359
|
+
event,
|
|
11360
|
+
get defaultOpen() {
|
|
11361
|
+
return memo(() => event.kind === "state")() && index() === lastStateIndex();
|
|
11362
|
+
}
|
|
11363
|
+
})
|
|
11364
|
+
}));
|
|
11365
|
+
effect(() => className(_el$29, s().iterCard));
|
|
11366
|
+
return _el$29;
|
|
11367
|
+
})()];
|
|
11368
|
+
}
|
|
11369
|
+
}));
|
|
11370
|
+
effect(() => className(_el$24, styles().memoryPanel.container));
|
|
11371
|
+
return _el$24;
|
|
11372
|
+
})();
|
|
11373
|
+
};
|
|
11374
|
+
delegateEvents(["click"]);
|
|
11375
|
+
var _tmpl$41 = /* @__PURE__ */ template(`<ul>`);
|
|
11376
|
+
var _tmpl$215 = /* @__PURE__ */ template(`<div><div>Catalog`);
|
|
11377
|
+
var _tmpl$311 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-skills-panel>`);
|
|
11378
|
+
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\`.`);
|
|
11379
|
+
var _tmpl$58 = /* @__PURE__ */ template(`<div>Loaded via \`load_skill\`, but the catalog snapshot has not arrived yet.`);
|
|
11380
|
+
var _tmpl$68 = /* @__PURE__ */ template(`<span>loaded`);
|
|
11381
|
+
var _tmpl$78 = /* @__PURE__ */ template(`<li><span></span><span>`);
|
|
11382
|
+
function parseSkillName(argumentsJson) {
|
|
11383
|
+
if (!argumentsJson) return void 0;
|
|
11384
|
+
try {
|
|
11385
|
+
const parsed = JSON.parse(argumentsJson);
|
|
11386
|
+
if (parsed && typeof parsed === "object" && "name" in parsed && typeof parsed.name === "string") {
|
|
11387
|
+
return parsed.name;
|
|
11388
|
+
}
|
|
11389
|
+
} catch {
|
|
11390
|
+
return void 0;
|
|
11391
|
+
}
|
|
11392
|
+
return void 0;
|
|
11393
|
+
}
|
|
11394
|
+
function loadedFromMessages(messages) {
|
|
11395
|
+
const names = /* @__PURE__ */ new Set();
|
|
11396
|
+
for (const message of messages) {
|
|
11397
|
+
for (const toolCall of message.toolCalls ?? []) {
|
|
11398
|
+
if (toolCall.name === "load_skill") {
|
|
11399
|
+
const name = parseSkillName(toolCall.arguments);
|
|
11400
|
+
if (name) names.add(name);
|
|
11401
|
+
}
|
|
11402
|
+
}
|
|
11403
|
+
for (const part of message.parts ?? []) {
|
|
11404
|
+
if (part.type === "tool-call" && part.toolName === "load_skill") {
|
|
11405
|
+
const name = parseSkillName(part.arguments);
|
|
11406
|
+
if (name) names.add(name);
|
|
11407
|
+
}
|
|
11408
|
+
}
|
|
11409
|
+
}
|
|
11410
|
+
return [...names];
|
|
11411
|
+
}
|
|
11412
|
+
var SkillsPanel = () => {
|
|
11413
|
+
const {
|
|
11414
|
+
state
|
|
11415
|
+
} = useAIStore();
|
|
11416
|
+
const styles = useStyles();
|
|
11417
|
+
const snapshot = createMemo(() => {
|
|
11418
|
+
const hookId = state.hooks.activeHookId;
|
|
11419
|
+
if (hookId && state.skills.snapshots[hookId]) {
|
|
11420
|
+
return state.skills.snapshots[hookId];
|
|
11421
|
+
}
|
|
11422
|
+
const first = Object.values(state.skills.snapshots)[0];
|
|
11423
|
+
return first;
|
|
11424
|
+
});
|
|
11425
|
+
const conversation = createMemo(() => {
|
|
11426
|
+
const hookId = state.hooks.activeHookId;
|
|
11427
|
+
if (!hookId) return void 0;
|
|
11428
|
+
return state.conversations[hookId];
|
|
11429
|
+
});
|
|
11430
|
+
const loaded = createMemo(() => {
|
|
11431
|
+
const fromSnap = new Set(snapshot()?.activated ?? []);
|
|
11432
|
+
for (const name of loadedFromMessages(conversation()?.messages ?? [])) {
|
|
11433
|
+
fromSnap.add(name);
|
|
11434
|
+
}
|
|
11435
|
+
return fromSnap;
|
|
11436
|
+
});
|
|
11437
|
+
const catalog = createMemo(() => snapshot()?.catalog ?? []);
|
|
11438
|
+
return (() => {
|
|
11439
|
+
var _el$ = _tmpl$311();
|
|
11440
|
+
insert(_el$, createComponent(Show, {
|
|
11441
|
+
get when() {
|
|
11442
|
+
return catalog().length > 0 || loaded().size > 0;
|
|
11443
|
+
},
|
|
11444
|
+
get fallback() {
|
|
11445
|
+
return (() => {
|
|
11446
|
+
var _el$5 = _tmpl$48();
|
|
11447
|
+
effect(() => className(_el$5, styles().memoryPanel.empty));
|
|
11448
|
+
return _el$5;
|
|
11449
|
+
})();
|
|
11450
|
+
},
|
|
11451
|
+
get children() {
|
|
11452
|
+
var _el$2 = _tmpl$215(), _el$3 = _el$2.firstChild;
|
|
11453
|
+
insert(_el$2, createComponent(Show, {
|
|
11454
|
+
get when() {
|
|
11455
|
+
return catalog().length > 0;
|
|
11456
|
+
},
|
|
11457
|
+
get fallback() {
|
|
11458
|
+
return (() => {
|
|
11459
|
+
var _el$6 = _tmpl$58();
|
|
11460
|
+
effect(() => className(_el$6, styles().memoryPanel.sectionEmpty));
|
|
11461
|
+
return _el$6;
|
|
11462
|
+
})();
|
|
11463
|
+
},
|
|
11464
|
+
get children() {
|
|
11465
|
+
var _el$4 = _tmpl$41();
|
|
11466
|
+
insert(_el$4, createComponent(For, {
|
|
11467
|
+
get each() {
|
|
11468
|
+
return catalog();
|
|
11469
|
+
},
|
|
11470
|
+
children: (skill) => {
|
|
11471
|
+
const isLoaded = () => loaded().has(skill.name);
|
|
11472
|
+
return (() => {
|
|
11473
|
+
var _el$7 = _tmpl$78(), _el$8 = _el$7.firstChild, _el$0 = _el$8.nextSibling;
|
|
11474
|
+
insert(_el$8, () => skill.name);
|
|
11475
|
+
insert(_el$7, createComponent(Show, {
|
|
11476
|
+
get when() {
|
|
11477
|
+
return isLoaded();
|
|
11478
|
+
},
|
|
11479
|
+
get children() {
|
|
11480
|
+
var _el$9 = _tmpl$68();
|
|
11481
|
+
effect(() => className(_el$9, styles().memoryPanel.badge));
|
|
11482
|
+
return _el$9;
|
|
11483
|
+
}
|
|
11484
|
+
}), _el$0);
|
|
11485
|
+
insert(_el$0, () => skill.description);
|
|
11486
|
+
effect((_p$) => {
|
|
11487
|
+
var _v$3 = styles().memoryPanel.row, _v$4 = styles().memoryPanel.badge, _v$5 = styles().memoryPanel.sectionEmpty;
|
|
11488
|
+
_v$3 !== _p$.e && className(_el$7, _p$.e = _v$3);
|
|
11489
|
+
_v$4 !== _p$.t && className(_el$8, _p$.t = _v$4);
|
|
11490
|
+
_v$5 !== _p$.a && className(_el$0, _p$.a = _v$5);
|
|
11491
|
+
return _p$;
|
|
11492
|
+
}, {
|
|
11493
|
+
e: void 0,
|
|
11494
|
+
t: void 0,
|
|
11495
|
+
a: void 0
|
|
11496
|
+
});
|
|
11497
|
+
return _el$7;
|
|
11498
|
+
})();
|
|
11499
|
+
}
|
|
11500
|
+
}));
|
|
11501
|
+
effect(() => className(_el$4, styles().memoryPanel.list));
|
|
11502
|
+
return _el$4;
|
|
11503
|
+
}
|
|
11504
|
+
}), null);
|
|
11505
|
+
effect((_p$) => {
|
|
11506
|
+
var _v$ = styles().memoryPanel.section, _v$2 = styles().memoryPanel.sectionTitle;
|
|
11507
|
+
_v$ !== _p$.e && className(_el$2, _p$.e = _v$);
|
|
11508
|
+
_v$2 !== _p$.t && className(_el$3, _p$.t = _v$2);
|
|
11509
|
+
return _p$;
|
|
11510
|
+
}, {
|
|
11511
|
+
e: void 0,
|
|
11512
|
+
t: void 0
|
|
11513
|
+
});
|
|
11514
|
+
return _el$2;
|
|
11515
|
+
}
|
|
11516
|
+
}));
|
|
11517
|
+
effect(() => className(_el$, styles().memoryPanel.container));
|
|
11518
|
+
return _el$;
|
|
11519
|
+
})();
|
|
11520
|
+
};
|
|
10938
11521
|
|
|
10939
11522
|
// src/components/hooks/HookDetails.tsx
|
|
10940
|
-
var _tmpl$
|
|
10941
|
-
var _tmpl$
|
|
10942
|
-
var _tmpl$
|
|
10943
|
-
var _tmpl$
|
|
10944
|
-
var _tmpl$
|
|
10945
|
-
var _tmpl$
|
|
10946
|
-
var _tmpl$
|
|
10947
|
-
var _tmpl$
|
|
10948
|
-
var _tmpl$
|
|
10949
|
-
var _tmpl$
|
|
11523
|
+
var _tmpl$49 = /* @__PURE__ */ template(`<aside data-testid=ai-devtools-preview-pane><div>`);
|
|
11524
|
+
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>`);
|
|
11525
|
+
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>`);
|
|
11526
|
+
var _tmpl$410 = /* @__PURE__ */ template(`<div>Open a page with TanStack AI hooks to inspect live state.`);
|
|
11527
|
+
var _tmpl$59 = /* @__PURE__ */ template(`<section data-testid=ai-devtools-overview-category><div><span></span><span>`);
|
|
11528
|
+
var _tmpl$69 = /* @__PURE__ */ template(`<span>running`);
|
|
11529
|
+
var _tmpl$79 = /* @__PURE__ */ template(`<span> new`);
|
|
11530
|
+
var _tmpl$88 = /* @__PURE__ */ template(`<button type=button data-testid=ai-devtools-overview-hook><div><span></span><span></span></div><div><span>`);
|
|
11531
|
+
var _tmpl$98 = /* @__PURE__ */ template(`<div><span></span><span>`);
|
|
11532
|
+
var _tmpl$07 = /* @__PURE__ */ template(`<span>`);
|
|
10950
11533
|
var _tmpl$116 = /* @__PURE__ */ template(`<span data-testid=ai-devtools-hook-technical-name>`);
|
|
10951
11534
|
var _tmpl$106 = /* @__PURE__ */ template(`<span data-testid=ai-devtools-hook-registry-id>id `);
|
|
10952
11535
|
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>`);
|
|
@@ -10959,7 +11542,7 @@ var _tmpl$173 = /* @__PURE__ */ template(`<div><button type=button data-testid=a
|
|
|
10959
11542
|
var _tmpl$182 = /* @__PURE__ */ template(`<div><span>`);
|
|
10960
11543
|
var _tmpl$192 = /* @__PURE__ */ template(`<div><span></span><div>`);
|
|
10961
11544
|
var _tmpl$202 = /* @__PURE__ */ template(`<div>No messages yet. Start a conversation to see messages here.`);
|
|
10962
|
-
var _tmpl$
|
|
11545
|
+
var _tmpl$217 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-tools><div></div><div>`);
|
|
10963
11546
|
var _tmpl$223 = /* @__PURE__ */ template(`<div>No tools.`);
|
|
10964
11547
|
var _tmpl$232 = /* @__PURE__ */ template(`<span>approval`);
|
|
10965
11548
|
var _tmpl$242 = /* @__PURE__ */ template(`<button type=button data-testid=ai-devtools-tool-row><span>`);
|
|
@@ -10981,7 +11564,8 @@ var HookDetails = () => {
|
|
|
10981
11564
|
let previewPane;
|
|
10982
11565
|
const hook = createMemo(() => {
|
|
10983
11566
|
const id = state.hooks.activeHookId;
|
|
10984
|
-
|
|
11567
|
+
if (id === null) return void 0;
|
|
11568
|
+
return state.hooks.hooks[id];
|
|
10985
11569
|
});
|
|
10986
11570
|
const conversation = createMemo(() => {
|
|
10987
11571
|
const activeHook = hook();
|
|
@@ -10998,7 +11582,7 @@ var HookDetails = () => {
|
|
|
10998
11582
|
return Boolean(outputKind && outputKind !== "chat" && outputKind !== "structured");
|
|
10999
11583
|
});
|
|
11000
11584
|
createEffect(() => {
|
|
11001
|
-
if (isGenerationHook() && (activeTab() === "tools" || activeTab() === "memory")) {
|
|
11585
|
+
if (isGenerationHook() && (activeTab() === "tools" || activeTab() === "memory" || activeTab() === "compaction" || activeTab() === "skills")) {
|
|
11002
11586
|
setActiveTab("conversation");
|
|
11003
11587
|
}
|
|
11004
11588
|
});
|
|
@@ -11014,7 +11598,7 @@ var HookDetails = () => {
|
|
|
11014
11598
|
return [];
|
|
11015
11599
|
});
|
|
11016
11600
|
const showSecondaryPane = createMemo(() => {
|
|
11017
|
-
if (activeTab() === "tools" && !isGenerationHook()) return false;
|
|
11601
|
+
if ((activeTab() === "tools" || activeTab() === "skills") && !isGenerationHook()) return false;
|
|
11018
11602
|
return isGenerationHook() || !hasStructuredOutputPreview(previewMessages());
|
|
11019
11603
|
});
|
|
11020
11604
|
createEffect(() => {
|
|
@@ -11036,14 +11620,15 @@ var HookDetails = () => {
|
|
|
11036
11620
|
return createComponent(HookOverview, {
|
|
11037
11621
|
onSelectHook: (selectedHook) => {
|
|
11038
11622
|
selectHook(selectedHook.id);
|
|
11039
|
-
|
|
11040
|
-
|
|
11623
|
+
const conversationId = selectedHook.id || selectedHook.clientId || selectedHook.threadId;
|
|
11624
|
+
if (conversationId && state.conversations[conversationId]) {
|
|
11625
|
+
selectConversation(conversationId);
|
|
11041
11626
|
}
|
|
11042
11627
|
}
|
|
11043
11628
|
});
|
|
11044
11629
|
},
|
|
11045
11630
|
children: (activeHook) => (() => {
|
|
11046
|
-
var _el$ = _tmpl$
|
|
11631
|
+
var _el$ = _tmpl$216(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild;
|
|
11047
11632
|
insert(_el$, createComponent(HookHeader, {
|
|
11048
11633
|
get hook() {
|
|
11049
11634
|
return activeHook();
|
|
@@ -11099,14 +11684,28 @@ var HookDetails = () => {
|
|
|
11099
11684
|
return !isGenerationHook();
|
|
11100
11685
|
},
|
|
11101
11686
|
get children() {
|
|
11102
|
-
return createComponent(TabButton, {
|
|
11687
|
+
return [createComponent(TabButton, {
|
|
11103
11688
|
label: "Memory",
|
|
11104
11689
|
tab: "memory",
|
|
11105
11690
|
get activeTab() {
|
|
11106
11691
|
return activeTab();
|
|
11107
11692
|
},
|
|
11108
11693
|
onSelect: setActiveTab
|
|
11109
|
-
})
|
|
11694
|
+
}), createComponent(TabButton, {
|
|
11695
|
+
label: "Compaction",
|
|
11696
|
+
tab: "compaction",
|
|
11697
|
+
get activeTab() {
|
|
11698
|
+
return activeTab();
|
|
11699
|
+
},
|
|
11700
|
+
onSelect: setActiveTab
|
|
11701
|
+
}), createComponent(TabButton, {
|
|
11702
|
+
label: "Skills",
|
|
11703
|
+
tab: "skills",
|
|
11704
|
+
get activeTab() {
|
|
11705
|
+
return activeTab();
|
|
11706
|
+
},
|
|
11707
|
+
onSelect: setActiveTab
|
|
11708
|
+
})];
|
|
11110
11709
|
}
|
|
11111
11710
|
}), null);
|
|
11112
11711
|
_el$4.addEventListener("mouseleave", () => setHoverTarget(null));
|
|
@@ -11185,12 +11784,32 @@ var HookDetails = () => {
|
|
|
11185
11784
|
return createComponent(MemoryPanel, {});
|
|
11186
11785
|
}
|
|
11187
11786
|
}), null);
|
|
11787
|
+
insert(_el$4, createComponent(Show, {
|
|
11788
|
+
get when() {
|
|
11789
|
+
return activeTab() === "compaction";
|
|
11790
|
+
},
|
|
11791
|
+
get children() {
|
|
11792
|
+
return createComponent(CompactionPanel, {
|
|
11793
|
+
get hook() {
|
|
11794
|
+
return activeHook();
|
|
11795
|
+
}
|
|
11796
|
+
});
|
|
11797
|
+
}
|
|
11798
|
+
}), null);
|
|
11799
|
+
insert(_el$4, createComponent(Show, {
|
|
11800
|
+
get when() {
|
|
11801
|
+
return activeTab() === "skills";
|
|
11802
|
+
},
|
|
11803
|
+
get children() {
|
|
11804
|
+
return createComponent(SkillsPanel, {});
|
|
11805
|
+
}
|
|
11806
|
+
}), null);
|
|
11188
11807
|
insert(_el$3, createComponent(Show, {
|
|
11189
11808
|
get when() {
|
|
11190
11809
|
return showSecondaryPane();
|
|
11191
11810
|
},
|
|
11192
11811
|
get children() {
|
|
11193
|
-
var _el$5 = _tmpl$
|
|
11812
|
+
var _el$5 = _tmpl$49(), _el$6 = _el$5.firstChild;
|
|
11194
11813
|
_el$5.addEventListener("mouseleave", () => setHoverTarget(null));
|
|
11195
11814
|
_el$5.$$mouseover = (event) => setHoverTargetFromEvent(event, "preview", setHoverTarget);
|
|
11196
11815
|
use((el) => {
|
|
@@ -11271,13 +11890,13 @@ var HookOverview = (props) => {
|
|
|
11271
11890
|
},
|
|
11272
11891
|
get fallback() {
|
|
11273
11892
|
return (() => {
|
|
11274
|
-
var _el$12 = _tmpl$
|
|
11893
|
+
var _el$12 = _tmpl$410();
|
|
11275
11894
|
effect(() => className(_el$12, styles().hookDetails.empty));
|
|
11276
11895
|
return _el$12;
|
|
11277
11896
|
})();
|
|
11278
11897
|
},
|
|
11279
11898
|
get children() {
|
|
11280
|
-
var _el$7 = _tmpl$
|
|
11899
|
+
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;
|
|
11281
11900
|
insert(_el$10, createComponent(OverviewMetric, {
|
|
11282
11901
|
label: "active hooks",
|
|
11283
11902
|
get value() {
|
|
@@ -11331,7 +11950,7 @@ var HookOverview = (props) => {
|
|
|
11331
11950
|
return groups();
|
|
11332
11951
|
},
|
|
11333
11952
|
children: (group) => (() => {
|
|
11334
|
-
var _el$13 = _tmpl$
|
|
11953
|
+
var _el$13 = _tmpl$59(), _el$14 = _el$13.firstChild, _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling;
|
|
11335
11954
|
insert(_el$15, () => group.label);
|
|
11336
11955
|
insert(_el$16, () => group.hooks.length);
|
|
11337
11956
|
insert(_el$13, createComponent(For, {
|
|
@@ -11342,7 +11961,7 @@ var HookOverview = (props) => {
|
|
|
11342
11961
|
const running = createMemo(() => isHookRunning(hook, state.hooks.runs));
|
|
11343
11962
|
const unseenCount = createMemo(() => getHookUnseenEventCount(state.hooks, hook.id));
|
|
11344
11963
|
return (() => {
|
|
11345
|
-
var _el$17 = _tmpl$
|
|
11964
|
+
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;
|
|
11346
11965
|
_el$17.$$click = () => props.onSelectHook(hook);
|
|
11347
11966
|
insert(_el$19, () => getHookDisplayName(hook));
|
|
11348
11967
|
insert(_el$20, () => getHookIdentitySubtitle(hook));
|
|
@@ -11352,7 +11971,7 @@ var HookOverview = (props) => {
|
|
|
11352
11971
|
return running();
|
|
11353
11972
|
},
|
|
11354
11973
|
get children() {
|
|
11355
|
-
var _el$23 = _tmpl$
|
|
11974
|
+
var _el$23 = _tmpl$69();
|
|
11356
11975
|
effect(() => className(_el$23, styles().hookDetails.lifecycle));
|
|
11357
11976
|
return _el$23;
|
|
11358
11977
|
}
|
|
@@ -11362,7 +11981,7 @@ var HookOverview = (props) => {
|
|
|
11362
11981
|
return unseenCount() > 0;
|
|
11363
11982
|
},
|
|
11364
11983
|
get children() {
|
|
11365
|
-
var _el$24 = _tmpl$
|
|
11984
|
+
var _el$24 = _tmpl$79(), _el$25 = _el$24.firstChild;
|
|
11366
11985
|
insert(_el$24, unseenCount, _el$25);
|
|
11367
11986
|
effect(() => className(_el$24, styles().hookDetails.kind));
|
|
11368
11987
|
return _el$24;
|
|
@@ -11433,7 +12052,7 @@ var HookOverview = (props) => {
|
|
|
11433
12052
|
var OverviewMetric = (props) => {
|
|
11434
12053
|
const styles = useStyles();
|
|
11435
12054
|
return (() => {
|
|
11436
|
-
var _el$26 = _tmpl$
|
|
12055
|
+
var _el$26 = _tmpl$98(), _el$27 = _el$26.firstChild, _el$28 = _el$27.nextSibling;
|
|
11437
12056
|
insert(_el$27, () => props.value);
|
|
11438
12057
|
insert(_el$28, () => props.label);
|
|
11439
12058
|
effect((_p$) => {
|
|
@@ -11461,7 +12080,7 @@ var HookHeader = (props) => {
|
|
|
11461
12080
|
return props.hook.outputKind;
|
|
11462
12081
|
},
|
|
11463
12082
|
get children() {
|
|
11464
|
-
var _el$34 = _tmpl$
|
|
12083
|
+
var _el$34 = _tmpl$07();
|
|
11465
12084
|
insert(_el$34, () => props.hook.outputKind);
|
|
11466
12085
|
effect(() => className(_el$34, styles().hookDetails.kind));
|
|
11467
12086
|
return _el$34;
|
|
@@ -11496,7 +12115,7 @@ var HookHeader = (props) => {
|
|
|
11496
12115
|
return props.hook.framework;
|
|
11497
12116
|
},
|
|
11498
12117
|
get children() {
|
|
11499
|
-
var _el$40 = _tmpl$
|
|
12118
|
+
var _el$40 = _tmpl$07();
|
|
11500
12119
|
insert(_el$40, () => props.hook.framework);
|
|
11501
12120
|
return _el$40;
|
|
11502
12121
|
}
|
|
@@ -11565,7 +12184,7 @@ var HookHeader = (props) => {
|
|
|
11565
12184
|
var Metric = (props) => {
|
|
11566
12185
|
const styles = useStyles();
|
|
11567
12186
|
return (() => {
|
|
11568
|
-
var _el$42 = _tmpl$
|
|
12187
|
+
var _el$42 = _tmpl$98(), _el$43 = _el$42.firstChild, _el$44 = _el$43.nextSibling;
|
|
11569
12188
|
insert(_el$43, () => props.value);
|
|
11570
12189
|
insert(_el$44, () => props.label);
|
|
11571
12190
|
effect((_p$) => {
|
|
@@ -11857,7 +12476,7 @@ var MessagesPreview = (props) => {
|
|
|
11857
12476
|
},
|
|
11858
12477
|
get fallback() {
|
|
11859
12478
|
return (() => {
|
|
11860
|
-
var _el$60 = _tmpl$
|
|
12479
|
+
var _el$60 = _tmpl$07();
|
|
11861
12480
|
insert(_el$60, () => part.content);
|
|
11862
12481
|
effect(() => className(_el$60, styles().hookDetails.previewPartContent));
|
|
11863
12482
|
return _el$60;
|
|
@@ -11991,7 +12610,7 @@ var HookMessageTimeline = (props) => {
|
|
|
11991
12610
|
},
|
|
11992
12611
|
get fallback() {
|
|
11993
12612
|
return (() => {
|
|
11994
|
-
var _el$72 = _tmpl$
|
|
12613
|
+
var _el$72 = _tmpl$07();
|
|
11995
12614
|
insert(_el$72, () => part.content);
|
|
11996
12615
|
effect(() => className(_el$72, styles().hookDetails.previewPartContent));
|
|
11997
12616
|
return _el$72;
|
|
@@ -12055,7 +12674,7 @@ var ToolsView = (props) => {
|
|
|
12055
12674
|
const selectedTool = createMemo(() => props.hook.tools.find((tool) => tool.name === selectedToolName()));
|
|
12056
12675
|
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));
|
|
12057
12676
|
return (() => {
|
|
12058
|
-
var _el$76 = _tmpl$
|
|
12677
|
+
var _el$76 = _tmpl$217(), _el$77 = _el$76.firstChild, _el$78 = _el$77.nextSibling;
|
|
12059
12678
|
insert(_el$77, createComponent(Show, {
|
|
12060
12679
|
get when() {
|
|
12061
12680
|
return props.hook.tools.length > 0;
|
|
@@ -12146,7 +12765,7 @@ var ToolsView = (props) => {
|
|
|
12146
12765
|
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;
|
|
12147
12766
|
insert(_el$89, () => fixture.name ?? fixture.toolName);
|
|
12148
12767
|
insert(_el$90, () => fixture.toolName, _el$91);
|
|
12149
|
-
insert(_el$90, () =>
|
|
12768
|
+
insert(_el$90, () => formatTime4(fixture.createdAt), null);
|
|
12150
12769
|
_el$93.$$click = () => applyToolFixture(fixture);
|
|
12151
12770
|
_el$94.$$click = () => deleteToolFixture(fixture.id);
|
|
12152
12771
|
effect((_p$) => {
|
|
@@ -12646,13 +13265,13 @@ function jsonSafeValue(value) {
|
|
|
12646
13265
|
return `[ai-devtools] unserializable value: ${error instanceof Error ? error.message : String(error)}`;
|
|
12647
13266
|
}
|
|
12648
13267
|
}
|
|
12649
|
-
function
|
|
13268
|
+
function formatTime4(timestamp) {
|
|
12650
13269
|
return new Date(timestamp).toLocaleTimeString();
|
|
12651
13270
|
}
|
|
12652
13271
|
delegateEvents(["mouseover", "click"]);
|
|
12653
13272
|
|
|
12654
13273
|
// src/components/Shell.tsx
|
|
12655
|
-
var _tmpl$
|
|
13274
|
+
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>`);
|
|
12656
13275
|
function Devtools(props) {
|
|
12657
13276
|
return createComponent(ThemeContextProvider, {
|
|
12658
13277
|
get theme() {
|
|
@@ -12734,7 +13353,7 @@ function DevtoolsContent() {
|
|
|
12734
13353
|
});
|
|
12735
13354
|
return createComponent(MainPanel, {
|
|
12736
13355
|
get children() {
|
|
12737
|
-
var _el$ = _tmpl$
|
|
13356
|
+
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;
|
|
12738
13357
|
insert(_el$, createComponent(Header, {
|
|
12739
13358
|
get children() {
|
|
12740
13359
|
return createComponent(HeaderLogo, {
|