@tanstack/ai-devtools-core 0.4.24 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/dist/Shell/{3ITTEC6O.js → DRZSZBFE.js} +706 -95
- package/dist/Shell/{54VAGOHT.js → G2SFOZV2.js} +513 -92
- package/dist/{production/Shell/SPYBPW3X.js → Shell/WD22ACIB.js} +706 -95
- package/dist/dev.js +1 -1
- package/dist/index.js +1 -1
- package/dist/production/Shell/{3ITTEC6O.js → DRZSZBFE.js} +706 -95
- package/dist/production/Shell/{54VAGOHT.js → G2SFOZV2.js} +513 -92
- package/dist/{Shell/SPYBPW3X.js → production/Shell/WD22ACIB.js} +706 -95
- 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 +6 -6
- package/src/components/hooks/HookDashboard.tsx +2 -3
- package/src/components/hooks/HookDetails.tsx +37 -8
- package/src/components/hooks/MemoryPanel.tsx +296 -0
- package/src/components/hooks/hook-dashboard-model.ts +26 -0
- package/src/components/hooks/index.ts +1 -0
- package/src/store/ai-context.tsx +62 -0
- package/src/store/memory-registry.ts +228 -0
- package/src/styles/use-styles.ts +112 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { delegateEvents, createComponent, insert, effect, className, setStyleProperty, addEventListener,
|
|
1
|
+
import { delegateEvents, createComponent, insert, effect, className, setStyleProperty, addEventListener, setAttribute, use, memo, spread, mergeProps, template, Portal } 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';
|
|
@@ -2202,6 +2202,118 @@ var stylesFactory = (theme) => {
|
|
|
2202
2202
|
padding: 0 ${size[3]};
|
|
2203
2203
|
`
|
|
2204
2204
|
},
|
|
2205
|
+
// MemoryPanel component styles
|
|
2206
|
+
memoryPanel: {
|
|
2207
|
+
container: css2`
|
|
2208
|
+
display: flex;
|
|
2209
|
+
flex: 1;
|
|
2210
|
+
min-height: 0;
|
|
2211
|
+
flex-direction: column;
|
|
2212
|
+
gap: ${size[4]};
|
|
2213
|
+
overflow-y: auto;
|
|
2214
|
+
padding: ${size[4]};
|
|
2215
|
+
`,
|
|
2216
|
+
toolbar: css2`
|
|
2217
|
+
display: flex;
|
|
2218
|
+
align-items: center;
|
|
2219
|
+
justify-content: space-between;
|
|
2220
|
+
gap: ${size[3]};
|
|
2221
|
+
`,
|
|
2222
|
+
scopeControls: css2`
|
|
2223
|
+
display: flex;
|
|
2224
|
+
align-items: center;
|
|
2225
|
+
gap: ${size[2]};
|
|
2226
|
+
min-width: 0;
|
|
2227
|
+
`,
|
|
2228
|
+
scopeSelect: css2`
|
|
2229
|
+
max-width: 220px;
|
|
2230
|
+
border: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
|
|
2231
|
+
border-radius: ${border.radius.sm};
|
|
2232
|
+
background: ${t(colors.white, colors.darkGray[800])};
|
|
2233
|
+
color: ${t(colors.gray[900], colors.gray[100])};
|
|
2234
|
+
font-family: ${fontFamily.mono};
|
|
2235
|
+
font-size: ${fontSize.xs};
|
|
2236
|
+
padding: ${size[1]} ${size[2]};
|
|
2237
|
+
`,
|
|
2238
|
+
clearButton: css2`
|
|
2239
|
+
border: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
|
|
2240
|
+
border-radius: ${border.radius.sm};
|
|
2241
|
+
background: ${t(colors.gray[50], colors.darkGray[700])};
|
|
2242
|
+
color: ${t(colors.gray[700], colors.gray[200])};
|
|
2243
|
+
cursor: pointer;
|
|
2244
|
+
font-size: ${fontSize.xs};
|
|
2245
|
+
padding: ${size[1]} ${size[2]};
|
|
2246
|
+
&:hover {
|
|
2247
|
+
border-color: ${t(colors.blue[300], colors.blue[700])};
|
|
2248
|
+
}
|
|
2249
|
+
`,
|
|
2250
|
+
empty: css2`
|
|
2251
|
+
color: ${t(colors.gray[500], colors.gray[500])};
|
|
2252
|
+
font-size: ${fontSize.sm};
|
|
2253
|
+
padding: ${size[4]};
|
|
2254
|
+
text-align: center;
|
|
2255
|
+
`,
|
|
2256
|
+
section: css2`
|
|
2257
|
+
display: flex;
|
|
2258
|
+
flex-direction: column;
|
|
2259
|
+
gap: ${size[2]};
|
|
2260
|
+
`,
|
|
2261
|
+
sectionTitle: css2`
|
|
2262
|
+
color: ${t(colors.gray[600], colors.gray[300])};
|
|
2263
|
+
font-size: ${fontSize.xs};
|
|
2264
|
+
font-weight: ${font.weight.semibold};
|
|
2265
|
+
text-transform: uppercase;
|
|
2266
|
+
letter-spacing: 0.04em;
|
|
2267
|
+
`,
|
|
2268
|
+
sectionEmpty: css2`
|
|
2269
|
+
color: ${t(colors.gray[500], colors.gray[500])};
|
|
2270
|
+
font-size: ${fontSize.xs};
|
|
2271
|
+
`,
|
|
2272
|
+
list: css2`
|
|
2273
|
+
display: flex;
|
|
2274
|
+
flex-direction: column;
|
|
2275
|
+
gap: ${size[1]};
|
|
2276
|
+
`,
|
|
2277
|
+
row: css2`
|
|
2278
|
+
display: flex;
|
|
2279
|
+
flex-direction: column;
|
|
2280
|
+
gap: 2px;
|
|
2281
|
+
border: 1px solid ${t(colors.gray[200], colors.darkGray[700])};
|
|
2282
|
+
border-radius: ${border.radius.sm};
|
|
2283
|
+
background: ${t(colors.white, colors.darkGray[800])};
|
|
2284
|
+
padding: ${size[2]};
|
|
2285
|
+
`,
|
|
2286
|
+
rowError: css2`
|
|
2287
|
+
border-color: ${t(colors.red[300], colors.red[700])};
|
|
2288
|
+
background: ${t(colors.red[50], colors.red[900] + "20")};
|
|
2289
|
+
`,
|
|
2290
|
+
rowHeader: css2`
|
|
2291
|
+
display: flex;
|
|
2292
|
+
align-items: center;
|
|
2293
|
+
gap: ${size[2]};
|
|
2294
|
+
font-size: ${fontSize.xs};
|
|
2295
|
+
color: ${t(colors.gray[500], colors.gray[400])};
|
|
2296
|
+
`,
|
|
2297
|
+
badge: css2`
|
|
2298
|
+
border-radius: ${border.radius.xs};
|
|
2299
|
+
background: ${t(colors.blue[50], colors.blue[900] + "30")};
|
|
2300
|
+
color: ${t(colors.blue[700], colors.blue[300])};
|
|
2301
|
+
font-family: ${fontFamily.mono};
|
|
2302
|
+
font-size: 10px;
|
|
2303
|
+
padding: 1px 6px;
|
|
2304
|
+
`,
|
|
2305
|
+
time: css2`
|
|
2306
|
+
margin-left: auto;
|
|
2307
|
+
font-family: ${fontFamily.mono};
|
|
2308
|
+
font-size: 10px;
|
|
2309
|
+
`,
|
|
2310
|
+
rowText: css2`
|
|
2311
|
+
color: ${t(colors.gray[900], colors.gray[100])};
|
|
2312
|
+
font-size: ${fontSize.sm};
|
|
2313
|
+
white-space: pre-wrap;
|
|
2314
|
+
word-break: break-word;
|
|
2315
|
+
`
|
|
2316
|
+
},
|
|
2205
2317
|
// ConversationDetails component styles
|
|
2206
2318
|
conversationDetails: {
|
|
2207
2319
|
emptyState: css2`
|
|
@@ -4399,8 +4511,8 @@ function removeHookRecord(state, hookId) {
|
|
|
4399
4511
|
delete state.runs[runId];
|
|
4400
4512
|
}
|
|
4401
4513
|
}
|
|
4402
|
-
for (const
|
|
4403
|
-
delete state.events[
|
|
4514
|
+
for (const eventId2 of hookEventIds) {
|
|
4515
|
+
delete state.events[eventId2];
|
|
4404
4516
|
}
|
|
4405
4517
|
delete state.hooks[hookId];
|
|
4406
4518
|
delete state.seenHookActivityCounts[hookId];
|
|
@@ -4408,7 +4520,7 @@ function removeHookRecord(state, hookId) {
|
|
|
4408
4520
|
state.activeHookId = null;
|
|
4409
4521
|
}
|
|
4410
4522
|
}
|
|
4411
|
-
function upsertRun(state, event,
|
|
4523
|
+
function upsertRun(state, event, eventId2) {
|
|
4412
4524
|
const existing = state.runs[event.runId];
|
|
4413
4525
|
if (!existing) {
|
|
4414
4526
|
state.runs[event.runId] = {
|
|
@@ -4422,7 +4534,7 @@ function upsertRun(state, event, eventId) {
|
|
|
4422
4534
|
updatedAt: event.timestamp,
|
|
4423
4535
|
...isTerminalRunStatus(event.status) ? { completedAt: event.timestamp } : {},
|
|
4424
4536
|
...event.error ? { error: event.error } : {},
|
|
4425
|
-
eventIds: [
|
|
4537
|
+
eventIds: [eventId2]
|
|
4426
4538
|
};
|
|
4427
4539
|
return;
|
|
4428
4540
|
}
|
|
@@ -4438,8 +4550,8 @@ function upsertRun(state, event, eventId) {
|
|
|
4438
4550
|
if (event.error) {
|
|
4439
4551
|
existing.error = event.error;
|
|
4440
4552
|
}
|
|
4441
|
-
if (!existing.eventIds.includes(
|
|
4442
|
-
existing.eventIds.push(
|
|
4553
|
+
if (!existing.eventIds.includes(eventId2)) {
|
|
4554
|
+
existing.eventIds.push(eventId2);
|
|
4443
4555
|
}
|
|
4444
4556
|
}
|
|
4445
4557
|
function attachRunToHook(state, hookId, runId) {
|
|
@@ -4447,7 +4559,7 @@ function attachRunToHook(state, hookId, runId) {
|
|
|
4447
4559
|
if (!hook || hook.runIds.includes(runId)) return;
|
|
4448
4560
|
hook.runIds.push(runId);
|
|
4449
4561
|
}
|
|
4450
|
-
function syncRunsFromSnapshot(state, snapshot,
|
|
4562
|
+
function syncRunsFromSnapshot(state, snapshot, eventId2) {
|
|
4451
4563
|
const rawRuns = snapshot.state.runs;
|
|
4452
4564
|
if (!Array.isArray(rawRuns)) return;
|
|
4453
4565
|
for (const candidate of rawRuns) {
|
|
@@ -4473,7 +4585,7 @@ function syncRunsFromSnapshot(state, snapshot, eventId) {
|
|
|
4473
4585
|
updatedAt,
|
|
4474
4586
|
...typeof run.completedAt === "number" ? { completedAt: run.completedAt } : isTerminalRunStatus(status) ? { completedAt: updatedAt } : {},
|
|
4475
4587
|
...typeof run.error === "string" ? { error: run.error } : {},
|
|
4476
|
-
eventIds: [
|
|
4588
|
+
eventIds: [eventId2]
|
|
4477
4589
|
};
|
|
4478
4590
|
} else {
|
|
4479
4591
|
existing.hookId = snapshot.hookId;
|
|
@@ -4485,8 +4597,8 @@ function syncRunsFromSnapshot(state, snapshot, eventId) {
|
|
|
4485
4597
|
existing.completedAt = updatedAt;
|
|
4486
4598
|
}
|
|
4487
4599
|
if (typeof run.error === "string") existing.error = run.error;
|
|
4488
|
-
if (!existing.eventIds.includes(
|
|
4489
|
-
existing.eventIds.push(
|
|
4600
|
+
if (!existing.eventIds.includes(eventId2)) {
|
|
4601
|
+
existing.eventIds.push(eventId2);
|
|
4490
4602
|
}
|
|
4491
4603
|
}
|
|
4492
4604
|
attachRunToHook(state, snapshot.hookId, run.id);
|
|
@@ -4516,11 +4628,11 @@ function attachActivityRunToHook(state, hookId, runId) {
|
|
|
4516
4628
|
if (!hook || hook.activityRunIds.includes(runId)) return;
|
|
4517
4629
|
hook.activityRunIds.push(runId);
|
|
4518
4630
|
}
|
|
4519
|
-
function attachEventToHook(state, hookId,
|
|
4631
|
+
function attachEventToHook(state, hookId, eventId2) {
|
|
4520
4632
|
if (!hookId) return;
|
|
4521
4633
|
const hook = state.hooks[hookId];
|
|
4522
|
-
if (!hook || hook.eventIds.includes(
|
|
4523
|
-
hook.eventIds.push(
|
|
4634
|
+
if (!hook || hook.eventIds.includes(eventId2)) return;
|
|
4635
|
+
hook.eventIds.push(eventId2);
|
|
4524
4636
|
}
|
|
4525
4637
|
function inferLifecycleFromSnapshot(state) {
|
|
4526
4638
|
if (state.status === "error" || state.error) {
|
|
@@ -4562,6 +4674,107 @@ function shouldSkipClientAssistantPlaceholder(message) {
|
|
|
4562
4674
|
return message.role === "assistant" && message.source === "client" && !message.content && (!message.toolCalls || message.toolCalls.length === 0) && (!message.parts || message.parts.length === 0);
|
|
4563
4675
|
}
|
|
4564
4676
|
|
|
4677
|
+
// src/store/memory-registry.ts
|
|
4678
|
+
function createMemoryRegistryState() {
|
|
4679
|
+
return { scopes: {} };
|
|
4680
|
+
}
|
|
4681
|
+
function escapeScopeDim(value) {
|
|
4682
|
+
return value.replace(/[\\:_]/g, "\\$&");
|
|
4683
|
+
}
|
|
4684
|
+
function scopeDim(value) {
|
|
4685
|
+
return value != null && value.length > 0 ? escapeScopeDim(value) : "_";
|
|
4686
|
+
}
|
|
4687
|
+
function memoryScopeKey(scope) {
|
|
4688
|
+
if (!scope) return "(unknown)";
|
|
4689
|
+
return `${scopeDim(scope.tenantId)}:${scopeDim(scope.userId)}:${escapeScopeDim(scope.threadId)}:${scopeDim(scope.namespace)}`;
|
|
4690
|
+
}
|
|
4691
|
+
function memoryScopeLabel(entry) {
|
|
4692
|
+
if (entry.key === "(unknown)" || !entry.threadId) return "(unknown)";
|
|
4693
|
+
const parts = [
|
|
4694
|
+
entry.tenantId,
|
|
4695
|
+
entry.userId,
|
|
4696
|
+
entry.threadId,
|
|
4697
|
+
entry.namespace
|
|
4698
|
+
].filter((p) => p != null && p.length > 0);
|
|
4699
|
+
return parts.join(" \xB7 ");
|
|
4700
|
+
}
|
|
4701
|
+
var MAX_EVENTS_PER_SCOPE = 200;
|
|
4702
|
+
function ensureScope(state, scope) {
|
|
4703
|
+
const key = memoryScopeKey(scope);
|
|
4704
|
+
let entry = state.scopes[key];
|
|
4705
|
+
if (!entry) {
|
|
4706
|
+
entry = {
|
|
4707
|
+
key,
|
|
4708
|
+
threadId: scope?.threadId ?? "",
|
|
4709
|
+
userId: scope?.userId,
|
|
4710
|
+
tenantId: scope?.tenantId,
|
|
4711
|
+
namespace: scope?.namespace,
|
|
4712
|
+
events: [],
|
|
4713
|
+
lastActivity: 0
|
|
4714
|
+
};
|
|
4715
|
+
state.scopes[key] = entry;
|
|
4716
|
+
}
|
|
4717
|
+
if (scope) {
|
|
4718
|
+
if (scope.userId) entry.userId = scope.userId;
|
|
4719
|
+
if (scope.tenantId) entry.tenantId = scope.tenantId;
|
|
4720
|
+
if (scope.namespace) entry.namespace = scope.namespace;
|
|
4721
|
+
}
|
|
4722
|
+
return entry;
|
|
4723
|
+
}
|
|
4724
|
+
var fallbackCounter = 0;
|
|
4725
|
+
function eventId(payload, type, ts) {
|
|
4726
|
+
if (payload.eventId && payload.eventId.length > 0) return payload.eventId;
|
|
4727
|
+
return `${type}:${ts}:${fallbackCounter++}`;
|
|
4728
|
+
}
|
|
4729
|
+
function applyMemoryEvent(state, event) {
|
|
4730
|
+
const entry = ensureScope(state, event.scope);
|
|
4731
|
+
entry.adapter = event.adapter;
|
|
4732
|
+
entry.lastActivity = Math.max(entry.lastActivity, event.timestamp);
|
|
4733
|
+
const record = {
|
|
4734
|
+
id: eventId(event, event.type, event.timestamp),
|
|
4735
|
+
type: event.type,
|
|
4736
|
+
timestamp: event.timestamp,
|
|
4737
|
+
adapter: event.adapter
|
|
4738
|
+
};
|
|
4739
|
+
switch (event.type) {
|
|
4740
|
+
case "retrieve:started":
|
|
4741
|
+
record.query = event.query;
|
|
4742
|
+
break;
|
|
4743
|
+
case "retrieve:completed":
|
|
4744
|
+
record.fragmentCount = event.fragmentCount;
|
|
4745
|
+
record.hasTools = event.hasTools;
|
|
4746
|
+
record.systemPromptChars = event.systemPromptChars;
|
|
4747
|
+
record.durationMs = event.durationMs;
|
|
4748
|
+
break;
|
|
4749
|
+
case "persist:completed":
|
|
4750
|
+
record.receiptCount = event.receiptCount;
|
|
4751
|
+
record.okCount = event.okCount;
|
|
4752
|
+
record.durationMs = event.durationMs;
|
|
4753
|
+
break;
|
|
4754
|
+
case "error":
|
|
4755
|
+
record.phase = event.phase;
|
|
4756
|
+
record.error = event.error;
|
|
4757
|
+
break;
|
|
4758
|
+
}
|
|
4759
|
+
entry.events.push(record);
|
|
4760
|
+
if (entry.events.length > MAX_EVENTS_PER_SCOPE) {
|
|
4761
|
+
entry.events.splice(0, entry.events.length - MAX_EVENTS_PER_SCOPE);
|
|
4762
|
+
}
|
|
4763
|
+
}
|
|
4764
|
+
function applyMemorySnapshot(state, event) {
|
|
4765
|
+
const entry = ensureScope(state, event.scope);
|
|
4766
|
+
entry.adapter = event.adapter;
|
|
4767
|
+
entry.lastActivity = Math.max(entry.lastActivity, event.timestamp);
|
|
4768
|
+
entry.snapshot = {
|
|
4769
|
+
takenAt: event.takenAt,
|
|
4770
|
+
data: event.data,
|
|
4771
|
+
facts: event.facts
|
|
4772
|
+
};
|
|
4773
|
+
}
|
|
4774
|
+
function clearMemoryRegistry(state) {
|
|
4775
|
+
state.scopes = {};
|
|
4776
|
+
}
|
|
4777
|
+
|
|
4565
4778
|
// src/store/ai-context.tsx
|
|
4566
4779
|
var AIContext = createContext();
|
|
4567
4780
|
function useAIStore() {
|
|
@@ -4575,7 +4788,8 @@ var AIProvider = (props) => {
|
|
|
4575
4788
|
const [state, setState] = createStore({
|
|
4576
4789
|
conversations: {},
|
|
4577
4790
|
activeConversationId: null,
|
|
4578
|
-
hooks: createHookRegistryState()
|
|
4791
|
+
hooks: createHookRegistryState(),
|
|
4792
|
+
memory: createMemoryRegistryState()
|
|
4579
4793
|
});
|
|
4580
4794
|
const streamToConversation = /* @__PURE__ */ new Map();
|
|
4581
4795
|
const requestToConversation = /* @__PURE__ */ new Map();
|
|
@@ -4827,6 +5041,11 @@ var AIProvider = (props) => {
|
|
|
4827
5041
|
clearHookRegistry(hooks);
|
|
4828
5042
|
}));
|
|
4829
5043
|
}
|
|
5044
|
+
function clearMemory() {
|
|
5045
|
+
setState("memory", produce((memory) => {
|
|
5046
|
+
clearMemoryRegistry(memory);
|
|
5047
|
+
}));
|
|
5048
|
+
}
|
|
4830
5049
|
function selectHook(id) {
|
|
4831
5050
|
setState("hooks", produce((hooks) => {
|
|
4832
5051
|
setActiveHook(hooks, id);
|
|
@@ -5135,6 +5354,29 @@ var AIProvider = (props) => {
|
|
|
5135
5354
|
applyHookEvent(hooks, "hook:state-snapshot", e.payload);
|
|
5136
5355
|
}));
|
|
5137
5356
|
}));
|
|
5357
|
+
const recordMemoryEvent = (type, payload) => {
|
|
5358
|
+
setState("memory", produce((memory) => {
|
|
5359
|
+
applyMemoryEvent(memory, {
|
|
5360
|
+
...payload,
|
|
5361
|
+
type
|
|
5362
|
+
});
|
|
5363
|
+
}));
|
|
5364
|
+
};
|
|
5365
|
+
cleanupFns.push(aiEventClient.on("memory:retrieve:started", (e) => {
|
|
5366
|
+
recordMemoryEvent("retrieve:started", e.payload);
|
|
5367
|
+
}), aiEventClient.on("memory:retrieve:completed", (e) => {
|
|
5368
|
+
recordMemoryEvent("retrieve:completed", e.payload);
|
|
5369
|
+
}), aiEventClient.on("memory:persist:started", (e) => {
|
|
5370
|
+
recordMemoryEvent("persist:started", e.payload);
|
|
5371
|
+
}), aiEventClient.on("memory:persist:completed", (e) => {
|
|
5372
|
+
recordMemoryEvent("persist:completed", e.payload);
|
|
5373
|
+
}), aiEventClient.on("memory:error", (e) => {
|
|
5374
|
+
recordMemoryEvent("error", e.payload);
|
|
5375
|
+
}), aiEventClient.on("memory:snapshot", (e) => {
|
|
5376
|
+
setState("memory", produce((memory) => {
|
|
5377
|
+
applyMemorySnapshot(memory, e.payload);
|
|
5378
|
+
}));
|
|
5379
|
+
}));
|
|
5138
5380
|
const recordRunEvent = (eventName, payload) => {
|
|
5139
5381
|
setState("hooks", produce((hooks) => {
|
|
5140
5382
|
applyHookEvent(hooks, eventName, payload);
|
|
@@ -6709,6 +6951,7 @@ var AIProvider = (props) => {
|
|
|
6709
6951
|
clearAllConversations,
|
|
6710
6952
|
selectConversation,
|
|
6711
6953
|
clearHooks,
|
|
6954
|
+
clearMemory,
|
|
6712
6955
|
selectHook,
|
|
6713
6956
|
saveToolFixture,
|
|
6714
6957
|
deleteToolFixture,
|
|
@@ -6753,6 +6996,16 @@ function visibleHooks(hooks) {
|
|
|
6753
6996
|
function getHookDisplayName(hook) {
|
|
6754
6997
|
return hook.displayName ?? hook.hookName;
|
|
6755
6998
|
}
|
|
6999
|
+
function getHookIdentityLabel(hook) {
|
|
7000
|
+
return hook.threadId ?? hook.id;
|
|
7001
|
+
}
|
|
7002
|
+
function getHookIdentitySubtitle(hook) {
|
|
7003
|
+
const identity = getHookIdentityLabel(hook);
|
|
7004
|
+
if (hook.displayName) {
|
|
7005
|
+
return `${hook.hookName} - ${identity}`;
|
|
7006
|
+
}
|
|
7007
|
+
return identity;
|
|
7008
|
+
}
|
|
6756
7009
|
function groupHooksByCategory(hooks) {
|
|
6757
7010
|
const groups = /* @__PURE__ */ new Map();
|
|
6758
7011
|
for (const hook of hooks) {
|
|
@@ -6906,17 +7159,7 @@ var HookDashboard = () => {
|
|
|
6906
7159
|
return _el$45;
|
|
6907
7160
|
}
|
|
6908
7161
|
}), null);
|
|
6909
|
-
insert(_el$47,
|
|
6910
|
-
get when() {
|
|
6911
|
-
return hook.displayName;
|
|
6912
|
-
},
|
|
6913
|
-
get fallback() {
|
|
6914
|
-
return hook.id;
|
|
6915
|
-
},
|
|
6916
|
-
get children() {
|
|
6917
|
-
return [memo(() => hook.hookName), " - ", memo(() => hook.id)];
|
|
6918
|
-
}
|
|
6919
|
-
}));
|
|
7162
|
+
insert(_el$47, () => getHookIdentitySubtitle(hook));
|
|
6920
7163
|
insert(_el$49, () => hook.lifecycle);
|
|
6921
7164
|
insert(_el$48, createComponent(Show, {
|
|
6922
7165
|
get when() {
|
|
@@ -10340,31 +10583,383 @@ function isRecord3(value) {
|
|
|
10340
10583
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
10341
10584
|
}
|
|
10342
10585
|
delegateEvents(["click"]);
|
|
10586
|
+
var _tmpl$38 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-memory-panel>`);
|
|
10587
|
+
var _tmpl$213 = /* @__PURE__ */ template(`<div>No memory activity yet. Send a message through a chat wired with<code> memoryMiddleware</code> and recall/save events will appear here.`);
|
|
10588
|
+
var _tmpl$39 = /* @__PURE__ */ template(`<select data-testid=ai-devtools-memory-scope-select>`);
|
|
10589
|
+
var _tmpl$46 = /* @__PURE__ */ template(`<div><div></div><button type=button>Clear`);
|
|
10590
|
+
var _tmpl$56 = /* @__PURE__ */ template(`<div>`);
|
|
10591
|
+
var _tmpl$66 = /* @__PURE__ */ template(`<section><div>Stored records (<!>)`);
|
|
10592
|
+
var _tmpl$76 = /* @__PURE__ */ template(`<section><div>listFacts() (<!>)`);
|
|
10593
|
+
var _tmpl$86 = /* @__PURE__ */ template(`<section><div>Operations (<!>)`);
|
|
10594
|
+
var _tmpl$96 = /* @__PURE__ */ template(`<span>`);
|
|
10595
|
+
var _tmpl$05 = /* @__PURE__ */ template(`<option>`);
|
|
10596
|
+
var _tmpl$114 = /* @__PURE__ */ template(`<span>snapshot `);
|
|
10597
|
+
var _tmpl$105 = /* @__PURE__ */ template(`<span>importance `);
|
|
10598
|
+
var _tmpl$115 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-memory-record><div><span></span><span></span></div><div>`);
|
|
10599
|
+
var _tmpl$123 = /* @__PURE__ */ template(`<div>No facts.`);
|
|
10600
|
+
var _tmpl$133 = /* @__PURE__ */ template(`<span>: `);
|
|
10601
|
+
var _tmpl$143 = /* @__PURE__ */ template(`<div><div>`);
|
|
10602
|
+
var _tmpl$153 = /* @__PURE__ */ template(`<div>No operations recorded.`);
|
|
10603
|
+
var _tmpl$163 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-memory-event><div><span></span><span></span></div><div>`);
|
|
10604
|
+
function extractRecords(data) {
|
|
10605
|
+
if (!data || typeof data !== "object") return [];
|
|
10606
|
+
const records = data.records;
|
|
10607
|
+
if (!Array.isArray(records)) return [];
|
|
10608
|
+
return records.filter((r) => Boolean(r) && typeof r === "object" && typeof r.id === "string" && typeof r.text === "string");
|
|
10609
|
+
}
|
|
10610
|
+
function formatTime2(value) {
|
|
10611
|
+
if (value === void 0) return "";
|
|
10612
|
+
const date = new Date(value);
|
|
10613
|
+
if (Number.isNaN(date.getTime())) return "";
|
|
10614
|
+
return date.toLocaleTimeString();
|
|
10615
|
+
}
|
|
10616
|
+
function eventSummary(event) {
|
|
10617
|
+
switch (event.type) {
|
|
10618
|
+
case "retrieve:started":
|
|
10619
|
+
return `recall "${event.query ?? ""}"`;
|
|
10620
|
+
case "retrieve:completed":
|
|
10621
|
+
return `recalled ${event.fragmentCount ?? 0} fragment(s), ${event.systemPromptChars ?? 0} prompt chars${event.hasTools ? ", +tools" : ""} (${event.durationMs ?? 0}ms)`;
|
|
10622
|
+
case "persist:started":
|
|
10623
|
+
return "save started";
|
|
10624
|
+
case "persist:completed":
|
|
10625
|
+
return `saved ${event.okCount ?? 0}/${event.receiptCount ?? 0} receipt(s) (${event.durationMs ?? 0}ms)`;
|
|
10626
|
+
case "error":
|
|
10627
|
+
return `${event.phase ?? ""} error: ${event.error?.message ?? "unknown"}`;
|
|
10628
|
+
default:
|
|
10629
|
+
return event.type;
|
|
10630
|
+
}
|
|
10631
|
+
}
|
|
10632
|
+
var MemoryPanel = () => {
|
|
10633
|
+
const {
|
|
10634
|
+
state,
|
|
10635
|
+
clearMemory
|
|
10636
|
+
} = useAIStore();
|
|
10637
|
+
const styles = useStyles();
|
|
10638
|
+
const [override, setOverride] = createSignal(null);
|
|
10639
|
+
const scopeKeys = createMemo(() => Object.values(state.memory.scopes).slice().sort((a, b) => b.lastActivity - a.lastActivity).map((s) => s.key));
|
|
10640
|
+
const selectedKey = createMemo(() => {
|
|
10641
|
+
const chosen = override();
|
|
10642
|
+
if (chosen && state.memory.scopes[chosen]) return chosen;
|
|
10643
|
+
return scopeKeys()[0] ?? null;
|
|
10644
|
+
});
|
|
10645
|
+
const scope = createMemo(() => {
|
|
10646
|
+
const key = selectedKey();
|
|
10647
|
+
return key ? state.memory.scopes[key] : void 0;
|
|
10648
|
+
});
|
|
10649
|
+
const records = createMemo(() => extractRecords(scope()?.snapshot?.data));
|
|
10650
|
+
const facts = createMemo(() => scope()?.snapshot?.facts ?? []);
|
|
10651
|
+
const events = createMemo(() => (scope()?.events ?? []).slice().sort((a, b) => b.timestamp - a.timestamp));
|
|
10652
|
+
return (() => {
|
|
10653
|
+
var _el$ = _tmpl$38();
|
|
10654
|
+
insert(_el$, createComponent(Show, {
|
|
10655
|
+
get when() {
|
|
10656
|
+
return scope();
|
|
10657
|
+
},
|
|
10658
|
+
get fallback() {
|
|
10659
|
+
return (() => {
|
|
10660
|
+
var _el$2 = _tmpl$213();
|
|
10661
|
+
effect(() => className(_el$2, styles().memoryPanel.empty));
|
|
10662
|
+
return _el$2;
|
|
10663
|
+
})();
|
|
10664
|
+
},
|
|
10665
|
+
children: (activeScope) => [(() => {
|
|
10666
|
+
var _el$3 = _tmpl$46(), _el$4 = _el$3.firstChild, _el$6 = _el$4.nextSibling;
|
|
10667
|
+
insert(_el$4, createComponent(Show, {
|
|
10668
|
+
get when() {
|
|
10669
|
+
return scopeKeys().length > 1;
|
|
10670
|
+
},
|
|
10671
|
+
get fallback() {
|
|
10672
|
+
return (() => {
|
|
10673
|
+
var _el$23 = _tmpl$96();
|
|
10674
|
+
insert(_el$23, () => activeScope().adapter ?? "memory");
|
|
10675
|
+
effect(() => className(_el$23, styles().memoryPanel.badge));
|
|
10676
|
+
return _el$23;
|
|
10677
|
+
})();
|
|
10678
|
+
},
|
|
10679
|
+
get children() {
|
|
10680
|
+
var _el$5 = _tmpl$39();
|
|
10681
|
+
_el$5.addEventListener("change", (e) => setOverride(e.currentTarget.value));
|
|
10682
|
+
insert(_el$5, createComponent(For, {
|
|
10683
|
+
get each() {
|
|
10684
|
+
return scopeKeys();
|
|
10685
|
+
},
|
|
10686
|
+
children: (key) => {
|
|
10687
|
+
const entry = state.memory.scopes[key];
|
|
10688
|
+
const label = entry ? memoryScopeLabel(entry) : key;
|
|
10689
|
+
return (() => {
|
|
10690
|
+
var _el$24 = _tmpl$05();
|
|
10691
|
+
_el$24.value = key;
|
|
10692
|
+
insert(_el$24, (() => {
|
|
10693
|
+
var _c$ = memo(() => !!entry?.adapter);
|
|
10694
|
+
return () => _c$() ? `${entry.adapter} \xB7 ` : "";
|
|
10695
|
+
})(), null);
|
|
10696
|
+
insert(_el$24, (() => {
|
|
10697
|
+
var _c$2 = memo(() => label.length > 40);
|
|
10698
|
+
return () => _c$2() ? `${label.slice(0, 40)}\u2026` : label;
|
|
10699
|
+
})(), null);
|
|
10700
|
+
return _el$24;
|
|
10701
|
+
})();
|
|
10702
|
+
}
|
|
10703
|
+
}));
|
|
10704
|
+
effect(() => className(_el$5, styles().memoryPanel.scopeSelect));
|
|
10705
|
+
effect(() => _el$5.value = selectedKey() ?? "");
|
|
10706
|
+
return _el$5;
|
|
10707
|
+
}
|
|
10708
|
+
}));
|
|
10709
|
+
_el$6.$$click = () => {
|
|
10710
|
+
setOverride(null);
|
|
10711
|
+
clearMemory();
|
|
10712
|
+
};
|
|
10713
|
+
effect((_p$) => {
|
|
10714
|
+
var _v$ = styles().memoryPanel.toolbar, _v$2 = styles().memoryPanel.scopeControls, _v$3 = styles().memoryPanel.clearButton;
|
|
10715
|
+
_v$ !== _p$.e && className(_el$3, _p$.e = _v$);
|
|
10716
|
+
_v$2 !== _p$.t && className(_el$4, _p$.t = _v$2);
|
|
10717
|
+
_v$3 !== _p$.a && className(_el$6, _p$.a = _v$3);
|
|
10718
|
+
return _p$;
|
|
10719
|
+
}, {
|
|
10720
|
+
e: void 0,
|
|
10721
|
+
t: void 0,
|
|
10722
|
+
a: void 0
|
|
10723
|
+
});
|
|
10724
|
+
return _el$3;
|
|
10725
|
+
})(), (() => {
|
|
10726
|
+
var _el$7 = _tmpl$66(), _el$8 = _el$7.firstChild, _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling; _el$1.nextSibling;
|
|
10727
|
+
insert(_el$8, () => records().length, _el$1);
|
|
10728
|
+
insert(_el$8, createComponent(Show, {
|
|
10729
|
+
get when() {
|
|
10730
|
+
return activeScope().snapshot;
|
|
10731
|
+
},
|
|
10732
|
+
children: (snap) => (() => {
|
|
10733
|
+
var _el$25 = _tmpl$114(); _el$25.firstChild;
|
|
10734
|
+
insert(_el$25, () => formatTime2(snap().takenAt), null);
|
|
10735
|
+
effect(() => className(_el$25, styles().memoryPanel.time));
|
|
10736
|
+
return _el$25;
|
|
10737
|
+
})()
|
|
10738
|
+
}), null);
|
|
10739
|
+
insert(_el$7, createComponent(Show, {
|
|
10740
|
+
get when() {
|
|
10741
|
+
return records().length > 0;
|
|
10742
|
+
},
|
|
10743
|
+
get fallback() {
|
|
10744
|
+
return (() => {
|
|
10745
|
+
var _el$27 = _tmpl$56();
|
|
10746
|
+
insert(_el$27, () => activeScope().snapshot ? "Snapshot is empty." : "This adapter does not expose inspect() \u2014 see the timeline below for activity.");
|
|
10747
|
+
effect(() => className(_el$27, styles().memoryPanel.sectionEmpty));
|
|
10748
|
+
return _el$27;
|
|
10749
|
+
})();
|
|
10750
|
+
},
|
|
10751
|
+
get children() {
|
|
10752
|
+
var _el$10 = _tmpl$56();
|
|
10753
|
+
insert(_el$10, createComponent(For, {
|
|
10754
|
+
get each() {
|
|
10755
|
+
return records();
|
|
10756
|
+
},
|
|
10757
|
+
children: (rec) => (() => {
|
|
10758
|
+
var _el$28 = _tmpl$115(), _el$29 = _el$28.firstChild, _el$30 = _el$29.firstChild, _el$34 = _el$30.nextSibling, _el$35 = _el$29.nextSibling;
|
|
10759
|
+
insert(_el$30, () => rec.kind);
|
|
10760
|
+
insert(_el$29, createComponent(Show, {
|
|
10761
|
+
get when() {
|
|
10762
|
+
return rec.role;
|
|
10763
|
+
},
|
|
10764
|
+
get children() {
|
|
10765
|
+
var _el$31 = _tmpl$96();
|
|
10766
|
+
insert(_el$31, () => rec.role);
|
|
10767
|
+
return _el$31;
|
|
10768
|
+
}
|
|
10769
|
+
}), _el$34);
|
|
10770
|
+
insert(_el$29, createComponent(Show, {
|
|
10771
|
+
get when() {
|
|
10772
|
+
return rec.importance !== void 0;
|
|
10773
|
+
},
|
|
10774
|
+
get children() {
|
|
10775
|
+
var _el$32 = _tmpl$105(); _el$32.firstChild;
|
|
10776
|
+
insert(_el$32, () => rec.importance?.toFixed(2), null);
|
|
10777
|
+
return _el$32;
|
|
10778
|
+
}
|
|
10779
|
+
}), _el$34);
|
|
10780
|
+
insert(_el$34, () => formatTime2(rec.createdAt));
|
|
10781
|
+
insert(_el$35, () => rec.text);
|
|
10782
|
+
effect((_p$) => {
|
|
10783
|
+
var _v$0 = styles().memoryPanel.row, _v$1 = styles().memoryPanel.rowHeader, _v$10 = styles().memoryPanel.badge, _v$11 = styles().memoryPanel.time, _v$12 = styles().memoryPanel.rowText;
|
|
10784
|
+
_v$0 !== _p$.e && className(_el$28, _p$.e = _v$0);
|
|
10785
|
+
_v$1 !== _p$.t && className(_el$29, _p$.t = _v$1);
|
|
10786
|
+
_v$10 !== _p$.a && className(_el$30, _p$.a = _v$10);
|
|
10787
|
+
_v$11 !== _p$.o && className(_el$34, _p$.o = _v$11);
|
|
10788
|
+
_v$12 !== _p$.i && className(_el$35, _p$.i = _v$12);
|
|
10789
|
+
return _p$;
|
|
10790
|
+
}, {
|
|
10791
|
+
e: void 0,
|
|
10792
|
+
t: void 0,
|
|
10793
|
+
a: void 0,
|
|
10794
|
+
o: void 0,
|
|
10795
|
+
i: void 0
|
|
10796
|
+
});
|
|
10797
|
+
return _el$28;
|
|
10798
|
+
})()
|
|
10799
|
+
}));
|
|
10800
|
+
effect(() => className(_el$10, styles().memoryPanel.list));
|
|
10801
|
+
return _el$10;
|
|
10802
|
+
}
|
|
10803
|
+
}), null);
|
|
10804
|
+
effect((_p$) => {
|
|
10805
|
+
var _v$4 = styles().memoryPanel.section, _v$5 = styles().memoryPanel.sectionTitle;
|
|
10806
|
+
_v$4 !== _p$.e && className(_el$7, _p$.e = _v$4);
|
|
10807
|
+
_v$5 !== _p$.t && className(_el$8, _p$.t = _v$5);
|
|
10808
|
+
return _p$;
|
|
10809
|
+
}, {
|
|
10810
|
+
e: void 0,
|
|
10811
|
+
t: void 0
|
|
10812
|
+
});
|
|
10813
|
+
return _el$7;
|
|
10814
|
+
})(), (() => {
|
|
10815
|
+
var _el$11 = _tmpl$76(), _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$15 = _el$13.nextSibling; _el$15.nextSibling;
|
|
10816
|
+
insert(_el$12, () => facts().length, _el$15);
|
|
10817
|
+
insert(_el$11, createComponent(Show, {
|
|
10818
|
+
get when() {
|
|
10819
|
+
return facts().length > 0;
|
|
10820
|
+
},
|
|
10821
|
+
get fallback() {
|
|
10822
|
+
return (() => {
|
|
10823
|
+
var _el$36 = _tmpl$123();
|
|
10824
|
+
effect(() => className(_el$36, styles().memoryPanel.sectionEmpty));
|
|
10825
|
+
return _el$36;
|
|
10826
|
+
})();
|
|
10827
|
+
},
|
|
10828
|
+
get children() {
|
|
10829
|
+
var _el$16 = _tmpl$56();
|
|
10830
|
+
insert(_el$16, createComponent(For, {
|
|
10831
|
+
get each() {
|
|
10832
|
+
return facts();
|
|
10833
|
+
},
|
|
10834
|
+
children: (fact) => (() => {
|
|
10835
|
+
var _el$37 = _tmpl$143(), _el$38 = _el$37.firstChild;
|
|
10836
|
+
insert(_el$38, createComponent(Show, {
|
|
10837
|
+
get when() {
|
|
10838
|
+
return fact.source;
|
|
10839
|
+
},
|
|
10840
|
+
get children() {
|
|
10841
|
+
var _el$39 = _tmpl$133(), _el$40 = _el$39.firstChild;
|
|
10842
|
+
insert(_el$39, () => fact.source, _el$40);
|
|
10843
|
+
effect(() => className(_el$39, styles().memoryPanel.rowHeader));
|
|
10844
|
+
return _el$39;
|
|
10845
|
+
}
|
|
10846
|
+
}), null);
|
|
10847
|
+
insert(_el$38, () => fact.text, null);
|
|
10848
|
+
effect((_p$) => {
|
|
10849
|
+
var _v$13 = styles().memoryPanel.row, _v$14 = styles().memoryPanel.rowText;
|
|
10850
|
+
_v$13 !== _p$.e && className(_el$37, _p$.e = _v$13);
|
|
10851
|
+
_v$14 !== _p$.t && className(_el$38, _p$.t = _v$14);
|
|
10852
|
+
return _p$;
|
|
10853
|
+
}, {
|
|
10854
|
+
e: void 0,
|
|
10855
|
+
t: void 0
|
|
10856
|
+
});
|
|
10857
|
+
return _el$37;
|
|
10858
|
+
})()
|
|
10859
|
+
}));
|
|
10860
|
+
effect(() => className(_el$16, styles().memoryPanel.list));
|
|
10861
|
+
return _el$16;
|
|
10862
|
+
}
|
|
10863
|
+
}), null);
|
|
10864
|
+
effect((_p$) => {
|
|
10865
|
+
var _v$6 = styles().memoryPanel.section, _v$7 = styles().memoryPanel.sectionTitle;
|
|
10866
|
+
_v$6 !== _p$.e && className(_el$11, _p$.e = _v$6);
|
|
10867
|
+
_v$7 !== _p$.t && className(_el$12, _p$.t = _v$7);
|
|
10868
|
+
return _p$;
|
|
10869
|
+
}, {
|
|
10870
|
+
e: void 0,
|
|
10871
|
+
t: void 0
|
|
10872
|
+
});
|
|
10873
|
+
return _el$11;
|
|
10874
|
+
})(), (() => {
|
|
10875
|
+
var _el$17 = _tmpl$86(), _el$18 = _el$17.firstChild, _el$19 = _el$18.firstChild, _el$21 = _el$19.nextSibling; _el$21.nextSibling;
|
|
10876
|
+
insert(_el$18, () => events().length, _el$21);
|
|
10877
|
+
insert(_el$17, createComponent(Show, {
|
|
10878
|
+
get when() {
|
|
10879
|
+
return events().length > 0;
|
|
10880
|
+
},
|
|
10881
|
+
get fallback() {
|
|
10882
|
+
return (() => {
|
|
10883
|
+
var _el$41 = _tmpl$153();
|
|
10884
|
+
effect(() => className(_el$41, styles().memoryPanel.sectionEmpty));
|
|
10885
|
+
return _el$41;
|
|
10886
|
+
})();
|
|
10887
|
+
},
|
|
10888
|
+
get children() {
|
|
10889
|
+
var _el$22 = _tmpl$56();
|
|
10890
|
+
insert(_el$22, createComponent(For, {
|
|
10891
|
+
get each() {
|
|
10892
|
+
return events();
|
|
10893
|
+
},
|
|
10894
|
+
children: (event) => (() => {
|
|
10895
|
+
var _el$42 = _tmpl$163(), _el$43 = _el$42.firstChild, _el$44 = _el$43.firstChild, _el$45 = _el$44.nextSibling, _el$46 = _el$43.nextSibling;
|
|
10896
|
+
insert(_el$44, () => event.type);
|
|
10897
|
+
insert(_el$45, () => formatTime2(event.timestamp));
|
|
10898
|
+
insert(_el$46, () => eventSummary(event));
|
|
10899
|
+
effect((_p$) => {
|
|
10900
|
+
var _v$15 = `${styles().memoryPanel.row} ${event.type === "error" ? styles().memoryPanel.rowError : ""}`, _v$16 = styles().memoryPanel.rowHeader, _v$17 = styles().memoryPanel.badge, _v$18 = styles().memoryPanel.time, _v$19 = styles().memoryPanel.rowText;
|
|
10901
|
+
_v$15 !== _p$.e && className(_el$42, _p$.e = _v$15);
|
|
10902
|
+
_v$16 !== _p$.t && className(_el$43, _p$.t = _v$16);
|
|
10903
|
+
_v$17 !== _p$.a && className(_el$44, _p$.a = _v$17);
|
|
10904
|
+
_v$18 !== _p$.o && className(_el$45, _p$.o = _v$18);
|
|
10905
|
+
_v$19 !== _p$.i && className(_el$46, _p$.i = _v$19);
|
|
10906
|
+
return _p$;
|
|
10907
|
+
}, {
|
|
10908
|
+
e: void 0,
|
|
10909
|
+
t: void 0,
|
|
10910
|
+
a: void 0,
|
|
10911
|
+
o: void 0,
|
|
10912
|
+
i: void 0
|
|
10913
|
+
});
|
|
10914
|
+
return _el$42;
|
|
10915
|
+
})()
|
|
10916
|
+
}));
|
|
10917
|
+
effect(() => className(_el$22, styles().memoryPanel.list));
|
|
10918
|
+
return _el$22;
|
|
10919
|
+
}
|
|
10920
|
+
}), null);
|
|
10921
|
+
effect((_p$) => {
|
|
10922
|
+
var _v$8 = styles().memoryPanel.section, _v$9 = styles().memoryPanel.sectionTitle;
|
|
10923
|
+
_v$8 !== _p$.e && className(_el$17, _p$.e = _v$8);
|
|
10924
|
+
_v$9 !== _p$.t && className(_el$18, _p$.t = _v$9);
|
|
10925
|
+
return _p$;
|
|
10926
|
+
}, {
|
|
10927
|
+
e: void 0,
|
|
10928
|
+
t: void 0
|
|
10929
|
+
});
|
|
10930
|
+
return _el$17;
|
|
10931
|
+
})()]
|
|
10932
|
+
}));
|
|
10933
|
+
effect(() => className(_el$, styles().memoryPanel.container));
|
|
10934
|
+
return _el$;
|
|
10935
|
+
})();
|
|
10936
|
+
};
|
|
10937
|
+
delegateEvents(["click"]);
|
|
10343
10938
|
|
|
10344
10939
|
// src/components/hooks/HookDetails.tsx
|
|
10345
|
-
var _tmpl$
|
|
10346
|
-
var _tmpl$
|
|
10347
|
-
var _tmpl$
|
|
10348
|
-
var _tmpl$
|
|
10349
|
-
var _tmpl$
|
|
10350
|
-
var _tmpl$
|
|
10351
|
-
var _tmpl$
|
|
10352
|
-
var _tmpl$
|
|
10353
|
-
var _tmpl$
|
|
10354
|
-
var _tmpl$
|
|
10355
|
-
var _tmpl$
|
|
10356
|
-
var _tmpl$
|
|
10357
|
-
var _tmpl$
|
|
10358
|
-
var _tmpl$
|
|
10359
|
-
var _tmpl$
|
|
10360
|
-
var _tmpl$
|
|
10361
|
-
var _tmpl$
|
|
10362
|
-
var _tmpl$
|
|
10940
|
+
var _tmpl$40 = /* @__PURE__ */ template(`<aside data-testid=ai-devtools-preview-pane><div>`);
|
|
10941
|
+
var _tmpl$214 = /* @__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>`);
|
|
10942
|
+
var _tmpl$310 = /* @__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>`);
|
|
10943
|
+
var _tmpl$47 = /* @__PURE__ */ template(`<div>Open a page with TanStack AI hooks to inspect live state.`);
|
|
10944
|
+
var _tmpl$57 = /* @__PURE__ */ template(`<section data-testid=ai-devtools-overview-category><div><span></span><span>`);
|
|
10945
|
+
var _tmpl$67 = /* @__PURE__ */ template(`<span>running`);
|
|
10946
|
+
var _tmpl$77 = /* @__PURE__ */ template(`<span> new`);
|
|
10947
|
+
var _tmpl$87 = /* @__PURE__ */ template(`<button type=button data-testid=ai-devtools-overview-hook><div><span></span><span></span></div><div><span>`);
|
|
10948
|
+
var _tmpl$97 = /* @__PURE__ */ template(`<div><span></span><span>`);
|
|
10949
|
+
var _tmpl$06 = /* @__PURE__ */ template(`<span>`);
|
|
10950
|
+
var _tmpl$116 = /* @__PURE__ */ template(`<span data-testid=ai-devtools-hook-technical-name>`);
|
|
10951
|
+
var _tmpl$106 = /* @__PURE__ */ template(`<span data-testid=ai-devtools-hook-registry-id>id `);
|
|
10952
|
+
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>`);
|
|
10953
|
+
var _tmpl$124 = /* @__PURE__ */ template(`<button type=button data-testid=ai-devtools-hook-tab>`);
|
|
10954
|
+
var _tmpl$134 = /* @__PURE__ */ template(`<div><section><div>Current State`);
|
|
10955
|
+
var _tmpl$144 = /* @__PURE__ */ template(`<div>`);
|
|
10956
|
+
var _tmpl$154 = /* @__PURE__ */ template(`<div>No messages.`);
|
|
10957
|
+
var _tmpl$164 = /* @__PURE__ */ template(`<div><div>`);
|
|
10363
10958
|
var _tmpl$173 = /* @__PURE__ */ template(`<div><button type=button data-testid=ai-devtools-preview-save-tool-call>Save</button><button type=button data-testid=ai-devtools-preview-replay-tool-call>Replay`);
|
|
10364
10959
|
var _tmpl$182 = /* @__PURE__ */ template(`<div><span>`);
|
|
10365
10960
|
var _tmpl$192 = /* @__PURE__ */ template(`<div><span></span><div>`);
|
|
10366
10961
|
var _tmpl$202 = /* @__PURE__ */ template(`<div>No messages yet. Start a conversation to see messages here.`);
|
|
10367
|
-
var _tmpl$
|
|
10962
|
+
var _tmpl$215 = /* @__PURE__ */ template(`<div data-testid=ai-devtools-tools><div></div><div>`);
|
|
10368
10963
|
var _tmpl$223 = /* @__PURE__ */ template(`<div>No tools.`);
|
|
10369
10964
|
var _tmpl$232 = /* @__PURE__ */ template(`<span>approval`);
|
|
10370
10965
|
var _tmpl$242 = /* @__PURE__ */ template(`<button type=button data-testid=ai-devtools-tool-row><span>`);
|
|
@@ -10403,7 +10998,7 @@ var HookDetails = () => {
|
|
|
10403
10998
|
return Boolean(outputKind && outputKind !== "chat" && outputKind !== "structured");
|
|
10404
10999
|
});
|
|
10405
11000
|
createEffect(() => {
|
|
10406
|
-
if (isGenerationHook() && activeTab() === "tools") {
|
|
11001
|
+
if (isGenerationHook() && (activeTab() === "tools" || activeTab() === "memory")) {
|
|
10407
11002
|
setActiveTab("conversation");
|
|
10408
11003
|
}
|
|
10409
11004
|
});
|
|
@@ -10448,7 +11043,7 @@ var HookDetails = () => {
|
|
|
10448
11043
|
});
|
|
10449
11044
|
},
|
|
10450
11045
|
children: (activeHook) => (() => {
|
|
10451
|
-
var _el$ = _tmpl$
|
|
11046
|
+
var _el$ = _tmpl$214(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild;
|
|
10452
11047
|
insert(_el$, createComponent(HookHeader, {
|
|
10453
11048
|
get hook() {
|
|
10454
11049
|
return activeHook();
|
|
@@ -10499,6 +11094,21 @@ var HookDetails = () => {
|
|
|
10499
11094
|
},
|
|
10500
11095
|
onSelect: setActiveTab
|
|
10501
11096
|
}), null);
|
|
11097
|
+
insert(_el$2, createComponent(Show, {
|
|
11098
|
+
get when() {
|
|
11099
|
+
return !isGenerationHook();
|
|
11100
|
+
},
|
|
11101
|
+
get children() {
|
|
11102
|
+
return createComponent(TabButton, {
|
|
11103
|
+
label: "Memory",
|
|
11104
|
+
tab: "memory",
|
|
11105
|
+
get activeTab() {
|
|
11106
|
+
return activeTab();
|
|
11107
|
+
},
|
|
11108
|
+
onSelect: setActiveTab
|
|
11109
|
+
});
|
|
11110
|
+
}
|
|
11111
|
+
}), null);
|
|
10502
11112
|
_el$4.addEventListener("mouseleave", () => setHoverTarget(null));
|
|
10503
11113
|
_el$4.$$mouseover = (event) => setHoverTargetFromEvent(event, "timeline", setHoverTarget);
|
|
10504
11114
|
use((el) => {
|
|
@@ -10567,12 +11177,20 @@ var HookDetails = () => {
|
|
|
10567
11177
|
});
|
|
10568
11178
|
}
|
|
10569
11179
|
}), null);
|
|
11180
|
+
insert(_el$4, createComponent(Show, {
|
|
11181
|
+
get when() {
|
|
11182
|
+
return activeTab() === "memory";
|
|
11183
|
+
},
|
|
11184
|
+
get children() {
|
|
11185
|
+
return createComponent(MemoryPanel, {});
|
|
11186
|
+
}
|
|
11187
|
+
}), null);
|
|
10570
11188
|
insert(_el$3, createComponent(Show, {
|
|
10571
11189
|
get when() {
|
|
10572
11190
|
return showSecondaryPane();
|
|
10573
11191
|
},
|
|
10574
11192
|
get children() {
|
|
10575
|
-
var _el$5 = _tmpl$
|
|
11193
|
+
var _el$5 = _tmpl$40(), _el$6 = _el$5.firstChild;
|
|
10576
11194
|
_el$5.addEventListener("mouseleave", () => setHoverTarget(null));
|
|
10577
11195
|
_el$5.$$mouseover = (event) => setHoverTargetFromEvent(event, "preview", setHoverTarget);
|
|
10578
11196
|
use((el) => {
|
|
@@ -10653,13 +11271,13 @@ var HookOverview = (props) => {
|
|
|
10653
11271
|
},
|
|
10654
11272
|
get fallback() {
|
|
10655
11273
|
return (() => {
|
|
10656
|
-
var _el$12 = _tmpl$
|
|
11274
|
+
var _el$12 = _tmpl$47();
|
|
10657
11275
|
effect(() => className(_el$12, styles().hookDetails.empty));
|
|
10658
11276
|
return _el$12;
|
|
10659
11277
|
})();
|
|
10660
11278
|
},
|
|
10661
11279
|
get children() {
|
|
10662
|
-
var _el$7 = _tmpl$
|
|
11280
|
+
var _el$7 = _tmpl$310(), _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;
|
|
10663
11281
|
insert(_el$10, createComponent(OverviewMetric, {
|
|
10664
11282
|
label: "active hooks",
|
|
10665
11283
|
get value() {
|
|
@@ -10713,7 +11331,7 @@ var HookOverview = (props) => {
|
|
|
10713
11331
|
return groups();
|
|
10714
11332
|
},
|
|
10715
11333
|
children: (group) => (() => {
|
|
10716
|
-
var _el$13 = _tmpl$
|
|
11334
|
+
var _el$13 = _tmpl$57(), _el$14 = _el$13.firstChild, _el$15 = _el$14.firstChild, _el$16 = _el$15.nextSibling;
|
|
10717
11335
|
insert(_el$15, () => group.label);
|
|
10718
11336
|
insert(_el$16, () => group.hooks.length);
|
|
10719
11337
|
insert(_el$13, createComponent(For, {
|
|
@@ -10724,27 +11342,17 @@ var HookOverview = (props) => {
|
|
|
10724
11342
|
const running = createMemo(() => isHookRunning(hook, state.hooks.runs));
|
|
10725
11343
|
const unseenCount = createMemo(() => getHookUnseenEventCount(state.hooks, hook.id));
|
|
10726
11344
|
return (() => {
|
|
10727
|
-
var _el$17 = _tmpl$
|
|
11345
|
+
var _el$17 = _tmpl$87(), _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;
|
|
10728
11346
|
_el$17.$$click = () => props.onSelectHook(hook);
|
|
10729
11347
|
insert(_el$19, () => getHookDisplayName(hook));
|
|
10730
|
-
insert(_el$20,
|
|
10731
|
-
get when() {
|
|
10732
|
-
return hook.displayName;
|
|
10733
|
-
},
|
|
10734
|
-
get fallback() {
|
|
10735
|
-
return hook.id;
|
|
10736
|
-
},
|
|
10737
|
-
get children() {
|
|
10738
|
-
return [memo(() => hook.hookName), " - ", memo(() => hook.id)];
|
|
10739
|
-
}
|
|
10740
|
-
}));
|
|
11348
|
+
insert(_el$20, () => getHookIdentitySubtitle(hook));
|
|
10741
11349
|
insert(_el$22, () => hook.outputKind ?? "hook");
|
|
10742
11350
|
insert(_el$21, createComponent(Show, {
|
|
10743
11351
|
get when() {
|
|
10744
11352
|
return running();
|
|
10745
11353
|
},
|
|
10746
11354
|
get children() {
|
|
10747
|
-
var _el$23 = _tmpl$
|
|
11355
|
+
var _el$23 = _tmpl$67();
|
|
10748
11356
|
effect(() => className(_el$23, styles().hookDetails.lifecycle));
|
|
10749
11357
|
return _el$23;
|
|
10750
11358
|
}
|
|
@@ -10754,7 +11362,7 @@ var HookOverview = (props) => {
|
|
|
10754
11362
|
return unseenCount() > 0;
|
|
10755
11363
|
},
|
|
10756
11364
|
get children() {
|
|
10757
|
-
var _el$24 = _tmpl$
|
|
11365
|
+
var _el$24 = _tmpl$77(), _el$25 = _el$24.firstChild;
|
|
10758
11366
|
insert(_el$24, unseenCount, _el$25);
|
|
10759
11367
|
effect(() => className(_el$24, styles().hookDetails.kind));
|
|
10760
11368
|
return _el$24;
|
|
@@ -10825,7 +11433,7 @@ var HookOverview = (props) => {
|
|
|
10825
11433
|
var OverviewMetric = (props) => {
|
|
10826
11434
|
const styles = useStyles();
|
|
10827
11435
|
return (() => {
|
|
10828
|
-
var _el$26 = _tmpl$
|
|
11436
|
+
var _el$26 = _tmpl$97(), _el$27 = _el$26.firstChild, _el$28 = _el$27.nextSibling;
|
|
10829
11437
|
insert(_el$27, () => props.value);
|
|
10830
11438
|
insert(_el$28, () => props.label);
|
|
10831
11439
|
effect((_p$) => {
|
|
@@ -10845,7 +11453,7 @@ var OverviewMetric = (props) => {
|
|
|
10845
11453
|
var HookHeader = (props) => {
|
|
10846
11454
|
const styles = useStyles();
|
|
10847
11455
|
return (() => {
|
|
10848
|
-
var _el$29 = _tmpl$
|
|
11456
|
+
var _el$29 = _tmpl$117(), _el$30 = _el$29.firstChild, _el$31 = _el$30.firstChild, _el$32 = _el$31.firstChild, _el$33 = _el$32.nextSibling, _el$35 = _el$31.nextSibling, _el$37 = _el$35.firstChild, _el$41 = _el$30.nextSibling;
|
|
10849
11457
|
insert(_el$32, () => getHookDisplayName(props.hook));
|
|
10850
11458
|
insert(_el$33, () => props.hook.lifecycle);
|
|
10851
11459
|
insert(_el$31, createComponent(Show, {
|
|
@@ -10853,7 +11461,7 @@ var HookHeader = (props) => {
|
|
|
10853
11461
|
return props.hook.outputKind;
|
|
10854
11462
|
},
|
|
10855
11463
|
get children() {
|
|
10856
|
-
var _el$34 = _tmpl$
|
|
11464
|
+
var _el$34 = _tmpl$06();
|
|
10857
11465
|
insert(_el$34, () => props.hook.outputKind);
|
|
10858
11466
|
effect(() => className(_el$34, styles().hookDetails.kind));
|
|
10859
11467
|
return _el$34;
|
|
@@ -10864,19 +11472,22 @@ var HookHeader = (props) => {
|
|
|
10864
11472
|
return props.hook.displayName;
|
|
10865
11473
|
},
|
|
10866
11474
|
get children() {
|
|
10867
|
-
var _el$36 = _tmpl$
|
|
11475
|
+
var _el$36 = _tmpl$116();
|
|
10868
11476
|
insert(_el$36, () => props.hook.hookName);
|
|
10869
11477
|
return _el$36;
|
|
10870
11478
|
}
|
|
10871
11479
|
}), _el$37);
|
|
10872
|
-
insert(_el$37, () =>
|
|
11480
|
+
insert(_el$37, (() => {
|
|
11481
|
+
var _c$ = memo(() => !!props.hook.threadId);
|
|
11482
|
+
return () => _c$() ? `thread ${props.hook.threadId}` : getHookIdentityLabel(props.hook);
|
|
11483
|
+
})());
|
|
10873
11484
|
insert(_el$35, createComponent(Show, {
|
|
10874
11485
|
get when() {
|
|
10875
|
-
return props.hook.threadId;
|
|
11486
|
+
return memo(() => !!props.hook.threadId)() && props.hook.threadId !== props.hook.id;
|
|
10876
11487
|
},
|
|
10877
11488
|
get children() {
|
|
10878
|
-
var _el$38 = _tmpl$
|
|
10879
|
-
insert(_el$38, () => props.hook.
|
|
11489
|
+
var _el$38 = _tmpl$106(); _el$38.firstChild;
|
|
11490
|
+
insert(_el$38, () => props.hook.id, null);
|
|
10880
11491
|
return _el$38;
|
|
10881
11492
|
}
|
|
10882
11493
|
}), null);
|
|
@@ -10885,7 +11496,7 @@ var HookHeader = (props) => {
|
|
|
10885
11496
|
return props.hook.framework;
|
|
10886
11497
|
},
|
|
10887
11498
|
get children() {
|
|
10888
|
-
var _el$40 = _tmpl$
|
|
11499
|
+
var _el$40 = _tmpl$06();
|
|
10889
11500
|
insert(_el$40, () => props.hook.framework);
|
|
10890
11501
|
return _el$40;
|
|
10891
11502
|
}
|
|
@@ -10954,7 +11565,7 @@ var HookHeader = (props) => {
|
|
|
10954
11565
|
var Metric = (props) => {
|
|
10955
11566
|
const styles = useStyles();
|
|
10956
11567
|
return (() => {
|
|
10957
|
-
var _el$42 = _tmpl$
|
|
11568
|
+
var _el$42 = _tmpl$97(), _el$43 = _el$42.firstChild, _el$44 = _el$43.nextSibling;
|
|
10958
11569
|
insert(_el$43, () => props.value);
|
|
10959
11570
|
insert(_el$44, () => props.label);
|
|
10960
11571
|
effect((_p$) => {
|
|
@@ -10981,7 +11592,7 @@ function formatMetricValue(value) {
|
|
|
10981
11592
|
var TabButton = (props) => {
|
|
10982
11593
|
const styles = useStyles();
|
|
10983
11594
|
return (() => {
|
|
10984
|
-
var _el$45 = _tmpl$
|
|
11595
|
+
var _el$45 = _tmpl$124();
|
|
10985
11596
|
_el$45.$$click = () => props.onSelect(props.tab);
|
|
10986
11597
|
insert(_el$45, () => props.label);
|
|
10987
11598
|
effect((_p$) => {
|
|
@@ -11009,7 +11620,7 @@ var ConversationPanel = (props) => {
|
|
|
11009
11620
|
},
|
|
11010
11621
|
get fallback() {
|
|
11011
11622
|
return (() => {
|
|
11012
|
-
var _el$46 = _tmpl$
|
|
11623
|
+
var _el$46 = _tmpl$134(), _el$47 = _el$46.firstChild, _el$48 = _el$47.firstChild;
|
|
11013
11624
|
insert(_el$47, createComponent(JsonPanel, {
|
|
11014
11625
|
get value() {
|
|
11015
11626
|
return props.hook.state;
|
|
@@ -11122,13 +11733,13 @@ var MessagesPreview = (props) => {
|
|
|
11122
11733
|
},
|
|
11123
11734
|
get fallback() {
|
|
11124
11735
|
return (() => {
|
|
11125
|
-
var _el$50 = _tmpl$
|
|
11736
|
+
var _el$50 = _tmpl$154();
|
|
11126
11737
|
effect(() => className(_el$50, styles().hookDetails.emptySmall));
|
|
11127
11738
|
return _el$50;
|
|
11128
11739
|
})();
|
|
11129
11740
|
},
|
|
11130
11741
|
get children() {
|
|
11131
|
-
var _el$49 = _tmpl$
|
|
11742
|
+
var _el$49 = _tmpl$144();
|
|
11132
11743
|
insert(_el$49, createComponent(Show, {
|
|
11133
11744
|
get when() {
|
|
11134
11745
|
return pendingFixture();
|
|
@@ -11148,7 +11759,7 @@ var MessagesPreview = (props) => {
|
|
|
11148
11759
|
children: (message) => {
|
|
11149
11760
|
const visibleParts = () => visiblePreviewPartsForMessage(message);
|
|
11150
11761
|
return (() => {
|
|
11151
|
-
var _el$51 = _tmpl$
|
|
11762
|
+
var _el$51 = _tmpl$164(), _el$52 = _el$51.firstChild;
|
|
11152
11763
|
spread(_el$51, mergeProps(() => getHoverDataAttributes({
|
|
11153
11764
|
messageIds: [message.id],
|
|
11154
11765
|
partIds: visibleParts().map((part) => part.id)
|
|
@@ -11175,7 +11786,7 @@ var MessagesPreview = (props) => {
|
|
|
11175
11786
|
return message.content;
|
|
11176
11787
|
},
|
|
11177
11788
|
get children() {
|
|
11178
|
-
var _el$53 = _tmpl$
|
|
11789
|
+
var _el$53 = _tmpl$144();
|
|
11179
11790
|
insert(_el$53, () => message.content);
|
|
11180
11791
|
effect(() => className(_el$53, styles().hookDetails.messageContent));
|
|
11181
11792
|
return _el$53;
|
|
@@ -11246,14 +11857,14 @@ var MessagesPreview = (props) => {
|
|
|
11246
11857
|
},
|
|
11247
11858
|
get fallback() {
|
|
11248
11859
|
return (() => {
|
|
11249
|
-
var _el$60 = _tmpl$
|
|
11860
|
+
var _el$60 = _tmpl$06();
|
|
11250
11861
|
insert(_el$60, () => part.content);
|
|
11251
11862
|
effect(() => className(_el$60, styles().hookDetails.previewPartContent));
|
|
11252
11863
|
return _el$60;
|
|
11253
11864
|
})();
|
|
11254
11865
|
},
|
|
11255
11866
|
get children() {
|
|
11256
|
-
var _el$59 = _tmpl$
|
|
11867
|
+
var _el$59 = _tmpl$144();
|
|
11257
11868
|
insert(_el$59, createComponent(For, {
|
|
11258
11869
|
get each() {
|
|
11259
11870
|
return part.jsonItems;
|
|
@@ -11314,13 +11925,13 @@ var HookMessageTimeline = (props) => {
|
|
|
11314
11925
|
})();
|
|
11315
11926
|
},
|
|
11316
11927
|
get children() {
|
|
11317
|
-
var _el$64 = _tmpl$
|
|
11928
|
+
var _el$64 = _tmpl$144();
|
|
11318
11929
|
insert(_el$64, createComponent(For, {
|
|
11319
11930
|
get each() {
|
|
11320
11931
|
return props.messages;
|
|
11321
11932
|
},
|
|
11322
11933
|
children: (message) => (() => {
|
|
11323
|
-
var _el$66 = _tmpl$
|
|
11934
|
+
var _el$66 = _tmpl$164(), _el$67 = _el$66.firstChild;
|
|
11324
11935
|
spread(_el$66, mergeProps(() => getHoverDataAttributes({
|
|
11325
11936
|
messageIds: [message.id]
|
|
11326
11937
|
}), {
|
|
@@ -11346,7 +11957,7 @@ var HookMessageTimeline = (props) => {
|
|
|
11346
11957
|
return message.content;
|
|
11347
11958
|
},
|
|
11348
11959
|
get children() {
|
|
11349
|
-
var _el$68 = _tmpl$
|
|
11960
|
+
var _el$68 = _tmpl$144();
|
|
11350
11961
|
insert(_el$68, () => message.content);
|
|
11351
11962
|
effect(() => className(_el$68, styles().hookDetails.messageContent));
|
|
11352
11963
|
return _el$68;
|
|
@@ -11380,14 +11991,14 @@ var HookMessageTimeline = (props) => {
|
|
|
11380
11991
|
},
|
|
11381
11992
|
get fallback() {
|
|
11382
11993
|
return (() => {
|
|
11383
|
-
var _el$72 = _tmpl$
|
|
11994
|
+
var _el$72 = _tmpl$06();
|
|
11384
11995
|
insert(_el$72, () => part.content);
|
|
11385
11996
|
effect(() => className(_el$72, styles().hookDetails.previewPartContent));
|
|
11386
11997
|
return _el$72;
|
|
11387
11998
|
})();
|
|
11388
11999
|
},
|
|
11389
12000
|
get children() {
|
|
11390
|
-
var _el$71 = _tmpl$
|
|
12001
|
+
var _el$71 = _tmpl$144();
|
|
11391
12002
|
insert(_el$71, createComponent(For, {
|
|
11392
12003
|
get each() {
|
|
11393
12004
|
return part.jsonItems;
|
|
@@ -11444,7 +12055,7 @@ var ToolsView = (props) => {
|
|
|
11444
12055
|
const selectedTool = createMemo(() => props.hook.tools.find((tool) => tool.name === selectedToolName()));
|
|
11445
12056
|
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));
|
|
11446
12057
|
return (() => {
|
|
11447
|
-
var _el$76 = _tmpl$
|
|
12058
|
+
var _el$76 = _tmpl$215(), _el$77 = _el$76.firstChild, _el$78 = _el$77.nextSibling;
|
|
11448
12059
|
insert(_el$77, createComponent(Show, {
|
|
11449
12060
|
get when() {
|
|
11450
12061
|
return props.hook.tools.length > 0;
|
|
@@ -11526,7 +12137,7 @@ var ToolsView = (props) => {
|
|
|
11526
12137
|
})();
|
|
11527
12138
|
},
|
|
11528
12139
|
get children() {
|
|
11529
|
-
var _el$85 = _tmpl$
|
|
12140
|
+
var _el$85 = _tmpl$144();
|
|
11530
12141
|
insert(_el$85, createComponent(For, {
|
|
11531
12142
|
get each() {
|
|
11532
12143
|
return savedFixtures();
|
|
@@ -11535,7 +12146,7 @@ var ToolsView = (props) => {
|
|
|
11535
12146
|
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;
|
|
11536
12147
|
insert(_el$89, () => fixture.name ?? fixture.toolName);
|
|
11537
12148
|
insert(_el$90, () => fixture.toolName, _el$91);
|
|
11538
|
-
insert(_el$90, () =>
|
|
12149
|
+
insert(_el$90, () => formatTime3(fixture.createdAt), null);
|
|
11539
12150
|
_el$93.$$click = () => applyToolFixture(fixture);
|
|
11540
12151
|
_el$94.$$click = () => deleteToolFixture(fixture.id);
|
|
11541
12152
|
effect((_p$) => {
|
|
@@ -11586,7 +12197,7 @@ var ToolsView = (props) => {
|
|
|
11586
12197
|
var JsonPanel = (props) => {
|
|
11587
12198
|
const styles = useStyles();
|
|
11588
12199
|
return (() => {
|
|
11589
|
-
var _el$95 = _tmpl$
|
|
12200
|
+
var _el$95 = _tmpl$144();
|
|
11590
12201
|
insert(_el$95, createComponent(JsonTree, {
|
|
11591
12202
|
get value() {
|
|
11592
12203
|
return props.value;
|
|
@@ -12035,13 +12646,13 @@ function jsonSafeValue(value) {
|
|
|
12035
12646
|
return `[ai-devtools] unserializable value: ${error instanceof Error ? error.message : String(error)}`;
|
|
12036
12647
|
}
|
|
12037
12648
|
}
|
|
12038
|
-
function
|
|
12649
|
+
function formatTime3(timestamp) {
|
|
12039
12650
|
return new Date(timestamp).toLocaleTimeString();
|
|
12040
12651
|
}
|
|
12041
12652
|
delegateEvents(["mouseover", "click"]);
|
|
12042
12653
|
|
|
12043
12654
|
// src/components/Shell.tsx
|
|
12044
|
-
var _tmpl$
|
|
12655
|
+
var _tmpl$41 = /* @__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>`);
|
|
12045
12656
|
function Devtools(props) {
|
|
12046
12657
|
return createComponent(ThemeContextProvider, {
|
|
12047
12658
|
get theme() {
|
|
@@ -12123,7 +12734,7 @@ function DevtoolsContent() {
|
|
|
12123
12734
|
});
|
|
12124
12735
|
return createComponent(MainPanel, {
|
|
12125
12736
|
get children() {
|
|
12126
|
-
var _el$ = _tmpl$
|
|
12737
|
+
var _el$ = _tmpl$41(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.nextSibling;
|
|
12127
12738
|
insert(_el$, createComponent(Header, {
|
|
12128
12739
|
get children() {
|
|
12129
12740
|
return createComponent(HeaderLogo, {
|