@codeyam/codeyam-cli 0.1.6 → 0.1.7
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/analyzer-template/.build-info.json +6 -6
- package/analyzer-template/log.txt +3 -3
- package/codeyam-cli/src/commands/memory.js +26 -2
- package/codeyam-cli/src/commands/memory.js.map +1 -1
- package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
- package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
- package/codeyam-cli/src/webserver/backgroundServer.js +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-Dm5RS9il.js +22 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._--zvFJ4OH.js → entity._sha._-C6PQhwY5.js} +9 -9
- package/codeyam-cli/src/webserver/build/client/assets/globals-CLmFdUae.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-717e346a.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{memory-CfpYxpNu.js → memory-0wMU4KXe.js} +28 -28
- package/codeyam-cli/src/webserver/build/client/assets/{root-CAAbm4U5.js → root-DqfSDjyQ.js} +13 -13
- package/codeyam-cli/src/webserver/build/client/assets/settings-BWunYSXt.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/{index-B8A_aaGG.js → index-B8jmgmn2.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{server-build-69rRZnZo.js → server-build-9OU4lmvL.js} +73 -74
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/templates/prompts/conversation-guidance.txt +12 -0
- package/codeyam-cli/templates/prompts/conversation-prompt.txt +3 -3
- package/codeyam-cli/templates/prompts/interruption-prompt.txt +3 -3
- package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +3 -3
- package/codeyam-cli/templates/rule-notification-hook.py +44 -17
- package/codeyam-cli/templates/rule-reflection-hook.py +24 -4
- package/codeyam-cli/templates/rules-instructions.md +4 -3
- package/package.json +1 -1
- package/codeyam-cli/src/webserver/app/routes/api.agent-transcripts.js +0 -486
- package/codeyam-cli/src/webserver/app/routes/api.agent-transcripts.js.map +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DxCa1oBt.js +0 -23
- package/codeyam-cli/src/webserver/build/client/assets/globals-B4MPiL7S.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-c1fc3656.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-BpLDWmGh.js +0 -1
|
@@ -1,486 +0,0 @@
|
|
|
1
|
-
import fs from 'fs/promises';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
async function pathExists(p) {
|
|
4
|
-
try {
|
|
5
|
-
await fs.stat(p);
|
|
6
|
-
return true;
|
|
7
|
-
}
|
|
8
|
-
catch {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
import { getProjectRoot } from "../../../state.js";
|
|
13
|
-
const SYSTEM_REMINDER_RE = /<system-reminder>[\s\S]*?<\/system-reminder>/g;
|
|
14
|
-
const TRUNCATE_THRESHOLD = 2000;
|
|
15
|
-
function getTasksDir() {
|
|
16
|
-
const projectRoot = getProjectRoot() || process.cwd();
|
|
17
|
-
// Encode path: replace leading / then all / with -
|
|
18
|
-
const encoded = projectRoot.replace(/^\//, '').replace(/\//g, '-');
|
|
19
|
-
return `/private/tmp/claude-501/-${encoded}/tasks`;
|
|
20
|
-
}
|
|
21
|
-
const HOOKS_DIR = '/tmp/claude-rule-markers';
|
|
22
|
-
const MAX_AGE_MS = 14 * 24 * 60 * 60 * 1000; // 14 days
|
|
23
|
-
export async function pruneOldTranscripts() {
|
|
24
|
-
const cutoff = Date.now() - MAX_AGE_MS;
|
|
25
|
-
let deleted = 0;
|
|
26
|
-
async function pruneDir(dir, extensions) {
|
|
27
|
-
if (!(await pathExists(dir)))
|
|
28
|
-
return;
|
|
29
|
-
const entries = await fs.readdir(dir);
|
|
30
|
-
for (const entry of entries) {
|
|
31
|
-
if (!extensions.some((ext) => entry.endsWith(ext)))
|
|
32
|
-
continue;
|
|
33
|
-
const filePath = path.join(dir, entry);
|
|
34
|
-
try {
|
|
35
|
-
const stats = await fs.stat(filePath);
|
|
36
|
-
if (stats.mtimeMs < cutoff) {
|
|
37
|
-
await fs.unlink(filePath);
|
|
38
|
-
deleted++;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
// File may have been removed concurrently; skip
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
await pruneDir(getTasksDir(), ['.output']);
|
|
47
|
-
await pruneDir(HOOKS_DIR, ['.log', '.context', '.marker']);
|
|
48
|
-
return deleted;
|
|
49
|
-
}
|
|
50
|
-
function toolCallSummary(name, toolInput) {
|
|
51
|
-
if (name === 'Read' || name === 'Write' || name === 'Edit') {
|
|
52
|
-
return String(toolInput.file_path || '');
|
|
53
|
-
}
|
|
54
|
-
if (name === 'Glob') {
|
|
55
|
-
return String(toolInput.pattern || '');
|
|
56
|
-
}
|
|
57
|
-
if (name === 'Grep') {
|
|
58
|
-
const pattern = String(toolInput.pattern || '');
|
|
59
|
-
const searchPath = String(toolInput.path || '');
|
|
60
|
-
return searchPath ? `"${pattern}" in ${searchPath}` : `"${pattern}"`;
|
|
61
|
-
}
|
|
62
|
-
if (name === 'Bash') {
|
|
63
|
-
const cmd = String(toolInput.command || '');
|
|
64
|
-
return cmd.length > 100 ? cmd.slice(0, 100) + '...' : cmd;
|
|
65
|
-
}
|
|
66
|
-
if (name === 'Task') {
|
|
67
|
-
return String(toolInput.description || String(toolInput.prompt || '').slice(0, 80));
|
|
68
|
-
}
|
|
69
|
-
// Generic: first string value
|
|
70
|
-
for (const v of Object.values(toolInput)) {
|
|
71
|
-
if (typeof v === 'string' && v) {
|
|
72
|
-
return v.slice(0, 80);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
return '';
|
|
76
|
-
}
|
|
77
|
-
const CONFUSION_SIGNALS = [
|
|
78
|
-
'no,',
|
|
79
|
-
'no ',
|
|
80
|
-
"that's not",
|
|
81
|
-
'thats not',
|
|
82
|
-
'that is not',
|
|
83
|
-
'wrong',
|
|
84
|
-
'incorrect',
|
|
85
|
-
'actually,',
|
|
86
|
-
'actually ',
|
|
87
|
-
'i meant',
|
|
88
|
-
'i mean',
|
|
89
|
-
'not what i',
|
|
90
|
-
'stop',
|
|
91
|
-
'wait',
|
|
92
|
-
"don't do",
|
|
93
|
-
'dont do',
|
|
94
|
-
"shouldn't",
|
|
95
|
-
'should not',
|
|
96
|
-
'try again',
|
|
97
|
-
'let me clarify',
|
|
98
|
-
'to clarify',
|
|
99
|
-
'that broke',
|
|
100
|
-
'that failed',
|
|
101
|
-
'error',
|
|
102
|
-
'bug',
|
|
103
|
-
];
|
|
104
|
-
function extractRuleChanges(entries) {
|
|
105
|
-
const changes = [];
|
|
106
|
-
const seen = new Set();
|
|
107
|
-
for (const entry of entries) {
|
|
108
|
-
if (entry.type !== 'tool_call' || !entry.name || !entry.input)
|
|
109
|
-
continue;
|
|
110
|
-
if (entry.name === 'Write' || entry.name === 'Edit') {
|
|
111
|
-
const filePath = String(entry.input.file_path || '');
|
|
112
|
-
if (filePath.includes('.claude/rules/')) {
|
|
113
|
-
const relative = filePath.replace(/^.*?(\.claude\/rules\/)/, '$1');
|
|
114
|
-
const key = `${entry.name}:${relative}`;
|
|
115
|
-
if (!seen.has(key)) {
|
|
116
|
-
seen.add(key);
|
|
117
|
-
if (entry.name === 'Write') {
|
|
118
|
-
changes.push({
|
|
119
|
-
action: 'created',
|
|
120
|
-
filePath: relative,
|
|
121
|
-
content: String(entry.input.content || ''),
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
changes.push({
|
|
126
|
-
action: 'modified',
|
|
127
|
-
filePath: relative,
|
|
128
|
-
oldString: String(entry.input.old_string || ''),
|
|
129
|
-
newString: String(entry.input.new_string || ''),
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
else if (entry.name === 'Bash') {
|
|
136
|
-
const cmd = String(entry.input.command || '');
|
|
137
|
-
if (cmd.includes('codeyam memory touch')) {
|
|
138
|
-
const key = `touch:${cmd}`;
|
|
139
|
-
if (!seen.has(key)) {
|
|
140
|
-
seen.add(key);
|
|
141
|
-
changes.push({
|
|
142
|
-
action: 'touched',
|
|
143
|
-
filePath: cmd,
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
return changes;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Extract the session transcript portion from the context string.
|
|
153
|
-
* The transcript follows a "### Session transcript" heading and contains
|
|
154
|
-
* lines like "[user]: message" and "[assistant]: response".
|
|
155
|
-
*/
|
|
156
|
-
function extractConversationSnippet(context) {
|
|
157
|
-
if (!context)
|
|
158
|
-
return undefined;
|
|
159
|
-
const marker = '### Session transcript';
|
|
160
|
-
const idx = context.indexOf(marker);
|
|
161
|
-
if (idx === -1)
|
|
162
|
-
return undefined;
|
|
163
|
-
// Everything after the marker heading
|
|
164
|
-
let snippet = context.slice(idx + marker.length).trim();
|
|
165
|
-
// Stop at the next heading (e.g. "### User's follow-up after interruption")
|
|
166
|
-
const nextHeading = snippet.indexOf('\n###');
|
|
167
|
-
if (nextHeading !== -1) {
|
|
168
|
-
snippet = snippet.slice(0, nextHeading).trim();
|
|
169
|
-
}
|
|
170
|
-
return snippet || undefined;
|
|
171
|
-
}
|
|
172
|
-
function checkConfusion(entries) {
|
|
173
|
-
for (const entry of entries) {
|
|
174
|
-
if (entry.type !== 'user_prompt')
|
|
175
|
-
continue;
|
|
176
|
-
const lower = (entry.text || '').toLowerCase();
|
|
177
|
-
for (const signal of CONFUSION_SIGNALS) {
|
|
178
|
-
if (lower.includes(signal))
|
|
179
|
-
return true;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
return false;
|
|
183
|
-
}
|
|
184
|
-
function extractModel(lines) {
|
|
185
|
-
for (const line of lines) {
|
|
186
|
-
const trimmed = line.trim();
|
|
187
|
-
if (!trimmed)
|
|
188
|
-
continue;
|
|
189
|
-
try {
|
|
190
|
-
const obj = JSON.parse(trimmed);
|
|
191
|
-
if (obj.type === 'assistant') {
|
|
192
|
-
const model = (obj.message || {}).model;
|
|
193
|
-
if (typeof model === 'string' && model)
|
|
194
|
-
return model;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
catch {
|
|
198
|
-
continue;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
return undefined;
|
|
202
|
-
}
|
|
203
|
-
function parseJsonl(lines) {
|
|
204
|
-
const entries = [];
|
|
205
|
-
const toolNames = {};
|
|
206
|
-
for (const line of lines) {
|
|
207
|
-
const trimmed = line.trim();
|
|
208
|
-
if (!trimmed)
|
|
209
|
-
continue;
|
|
210
|
-
let obj;
|
|
211
|
-
try {
|
|
212
|
-
obj = JSON.parse(trimmed);
|
|
213
|
-
}
|
|
214
|
-
catch {
|
|
215
|
-
continue;
|
|
216
|
-
}
|
|
217
|
-
const msgType = obj.type;
|
|
218
|
-
if (msgType === 'progress' ||
|
|
219
|
-
msgType === 'system' ||
|
|
220
|
-
msgType === 'result') {
|
|
221
|
-
continue;
|
|
222
|
-
}
|
|
223
|
-
const message = (obj.message || {});
|
|
224
|
-
const content = message.content;
|
|
225
|
-
const timestamp = obj.timestamp || '';
|
|
226
|
-
if (msgType === 'user') {
|
|
227
|
-
if (typeof content === 'string') {
|
|
228
|
-
entries.push({
|
|
229
|
-
type: 'user_prompt',
|
|
230
|
-
text: content,
|
|
231
|
-
timestamp,
|
|
232
|
-
agent_id: String(obj.agentId || obj.session_id || 'unknown'),
|
|
233
|
-
slug: String(obj.slug || ''),
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
else if (Array.isArray(content)) {
|
|
237
|
-
for (const item of content) {
|
|
238
|
-
if (typeof item === 'object' &&
|
|
239
|
-
item !== null &&
|
|
240
|
-
item.type === 'tool_result') {
|
|
241
|
-
const toolItem = item;
|
|
242
|
-
const toolId = String(toolItem.tool_use_id || '');
|
|
243
|
-
let resultContent = toolItem.content;
|
|
244
|
-
const isError = Boolean(toolItem.is_error);
|
|
245
|
-
if (typeof resultContent === 'string') {
|
|
246
|
-
resultContent = resultContent
|
|
247
|
-
.replace(SYSTEM_REMINDER_RE, '')
|
|
248
|
-
.trim();
|
|
249
|
-
}
|
|
250
|
-
entries.push({
|
|
251
|
-
type: 'tool_result',
|
|
252
|
-
tool_use_id: toolId,
|
|
253
|
-
tool_name: toolNames[toolId] || 'unknown',
|
|
254
|
-
content: typeof resultContent === 'string'
|
|
255
|
-
? resultContent
|
|
256
|
-
: JSON.stringify(resultContent),
|
|
257
|
-
is_error: isError,
|
|
258
|
-
timestamp,
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
else if (msgType === 'assistant') {
|
|
265
|
-
if (Array.isArray(content)) {
|
|
266
|
-
for (const item of content) {
|
|
267
|
-
if (typeof item !== 'object' || item === null)
|
|
268
|
-
continue;
|
|
269
|
-
const contentItem = item;
|
|
270
|
-
if (contentItem.type === 'text') {
|
|
271
|
-
const text = String(contentItem.text || '').trim();
|
|
272
|
-
if (text) {
|
|
273
|
-
entries.push({
|
|
274
|
-
type: 'assistant_text',
|
|
275
|
-
text,
|
|
276
|
-
timestamp,
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
else if (contentItem.type === 'tool_use') {
|
|
281
|
-
const toolId = String(contentItem.id || '');
|
|
282
|
-
const toolName = String(contentItem.name || 'unknown');
|
|
283
|
-
const toolInput = (contentItem.input || {});
|
|
284
|
-
toolNames[toolId] = toolName;
|
|
285
|
-
entries.push({
|
|
286
|
-
type: 'tool_call',
|
|
287
|
-
tool_use_id: toolId,
|
|
288
|
-
name: toolName,
|
|
289
|
-
input: toolInput,
|
|
290
|
-
timestamp,
|
|
291
|
-
});
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
return entries;
|
|
298
|
-
}
|
|
299
|
-
function matchesSearch(entry, searchLower) {
|
|
300
|
-
if (entry.type === 'user_prompt') {
|
|
301
|
-
return (entry.text || '').toLowerCase().includes(searchLower);
|
|
302
|
-
}
|
|
303
|
-
if (entry.type === 'assistant_text') {
|
|
304
|
-
return (entry.text || '').toLowerCase().includes(searchLower);
|
|
305
|
-
}
|
|
306
|
-
if (entry.type === 'tool_call') {
|
|
307
|
-
if ((entry.name || '').toLowerCase().includes(searchLower))
|
|
308
|
-
return true;
|
|
309
|
-
const inputStr = JSON.stringify(entry.input || {}).toLowerCase();
|
|
310
|
-
return inputStr.includes(searchLower);
|
|
311
|
-
}
|
|
312
|
-
if (entry.type === 'tool_result') {
|
|
313
|
-
return (entry.content || '').toLowerCase().includes(searchLower);
|
|
314
|
-
}
|
|
315
|
-
return false;
|
|
316
|
-
}
|
|
317
|
-
const PAGE_SIZE = 20;
|
|
318
|
-
async function processFile(file) {
|
|
319
|
-
const raw = await fs.readFile(file.filePath, 'utf-8');
|
|
320
|
-
const lines = raw.split('\n');
|
|
321
|
-
const entries = parseJsonl(lines);
|
|
322
|
-
if (entries.length === 0)
|
|
323
|
-
return null;
|
|
324
|
-
// Extract agent metadata from first user prompt
|
|
325
|
-
const firstPrompt = entries.find((e) => e.type === 'user_prompt');
|
|
326
|
-
const agentId = file.stem;
|
|
327
|
-
const model = extractModel(lines);
|
|
328
|
-
let slug = firstPrompt?.slug || '';
|
|
329
|
-
let timestamp = firstPrompt?.timestamp || '';
|
|
330
|
-
if (!timestamp) {
|
|
331
|
-
timestamp = new Date(file.mtime).toISOString();
|
|
332
|
-
}
|
|
333
|
-
// Label hook logs distinctly — derive slug from session stem suffix
|
|
334
|
-
let context;
|
|
335
|
-
if (file.filePath.endsWith('.log')) {
|
|
336
|
-
if (file.stem.endsWith('-stale')) {
|
|
337
|
-
slug = slug || 'rule-reflection/stale';
|
|
338
|
-
}
|
|
339
|
-
else if (file.stem.endsWith('-conversation')) {
|
|
340
|
-
slug = slug || 'rule-reflection/conversation';
|
|
341
|
-
}
|
|
342
|
-
else if (file.stem.endsWith('-interruption')) {
|
|
343
|
-
slug = slug || 'rule-reflection/interruption';
|
|
344
|
-
}
|
|
345
|
-
else {
|
|
346
|
-
slug = slug || 'rule-reflection';
|
|
347
|
-
}
|
|
348
|
-
const contextPath = file.filePath.replace(/\.log$/, '.context');
|
|
349
|
-
if (await pathExists(contextPath)) {
|
|
350
|
-
try {
|
|
351
|
-
context = await fs.readFile(contextPath, 'utf-8');
|
|
352
|
-
}
|
|
353
|
-
catch {
|
|
354
|
-
// ignore
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
// Compute stats
|
|
359
|
-
const toolCalls = entries.filter((e) => e.type === 'tool_call').length;
|
|
360
|
-
const textBlocks = entries.filter((e) => e.type === 'assistant_text').length;
|
|
361
|
-
const errorEntries = entries.filter((e) => e.type === 'tool_result' &&
|
|
362
|
-
e.is_error &&
|
|
363
|
-
e.content !== 'Sibling tool call errored');
|
|
364
|
-
const errors = errorEntries.length;
|
|
365
|
-
const errorMessages = errorEntries.map((e) => {
|
|
366
|
-
const msg = e.content || 'Unknown error';
|
|
367
|
-
return msg.length > 150 ? msg.slice(0, 150) + '...' : msg;
|
|
368
|
-
});
|
|
369
|
-
// Add summary to tool calls
|
|
370
|
-
for (const entry of entries) {
|
|
371
|
-
if (entry.type === 'tool_call' && entry.name && entry.input) {
|
|
372
|
-
entry.summary =
|
|
373
|
-
toolCallSummary(entry.name, entry.input);
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
// Truncate long tool results for the response
|
|
377
|
-
for (const entry of entries) {
|
|
378
|
-
if (entry.type === 'tool_result' &&
|
|
379
|
-
entry.content &&
|
|
380
|
-
entry.content.length > TRUNCATE_THRESHOLD) {
|
|
381
|
-
entry.truncated = true;
|
|
382
|
-
entry.fullLength =
|
|
383
|
-
entry.content.length;
|
|
384
|
-
entry.content = entry.content.slice(0, TRUNCATE_THRESHOLD);
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
const ruleChanges = extractRuleChanges(entries);
|
|
388
|
-
const hasConfusion = checkConfusion(entries);
|
|
389
|
-
const conversationSnippet = extractConversationSnippet(context);
|
|
390
|
-
return {
|
|
391
|
-
id: agentId,
|
|
392
|
-
slug,
|
|
393
|
-
timestamp,
|
|
394
|
-
model,
|
|
395
|
-
sourceFile: file.filePath,
|
|
396
|
-
stats: { toolCalls, textBlocks, errors, errorMessages },
|
|
397
|
-
entries,
|
|
398
|
-
context,
|
|
399
|
-
conversationSnippet,
|
|
400
|
-
ruleChanges,
|
|
401
|
-
hasConfusion,
|
|
402
|
-
};
|
|
403
|
-
}
|
|
404
|
-
async function collectFiles() {
|
|
405
|
-
const tasksDir = getTasksDir();
|
|
406
|
-
const hooksDir = HOOKS_DIR;
|
|
407
|
-
const files = [];
|
|
408
|
-
// Background task agent outputs
|
|
409
|
-
if (await pathExists(tasksDir)) {
|
|
410
|
-
const dirEntries = await fs.readdir(tasksDir);
|
|
411
|
-
for (const entry of dirEntries) {
|
|
412
|
-
if (entry.endsWith('.output')) {
|
|
413
|
-
const filePath = path.join(tasksDir, entry);
|
|
414
|
-
const stats = await fs.stat(filePath);
|
|
415
|
-
files.push({
|
|
416
|
-
filePath,
|
|
417
|
-
stem: entry.replace('.output', ''),
|
|
418
|
-
mtime: stats.mtimeMs,
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
// Rule reflection hook logs
|
|
424
|
-
if (await pathExists(hooksDir)) {
|
|
425
|
-
const dirEntries = await fs.readdir(hooksDir);
|
|
426
|
-
for (const entry of dirEntries) {
|
|
427
|
-
if (entry.endsWith('.log')) {
|
|
428
|
-
const filePath = path.join(hooksDir, entry);
|
|
429
|
-
const stats = await fs.stat(filePath);
|
|
430
|
-
files.push({
|
|
431
|
-
filePath,
|
|
432
|
-
stem: entry.replace('.log', ''),
|
|
433
|
-
mtime: stats.mtimeMs,
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
}
|
|
438
|
-
// Sort by modification time, newest first
|
|
439
|
-
files.sort((a, b) => b.mtime - a.mtime);
|
|
440
|
-
return files;
|
|
441
|
-
}
|
|
442
|
-
export async function loader({ request }) {
|
|
443
|
-
try {
|
|
444
|
-
const url = new URL(request.url);
|
|
445
|
-
const search = url.searchParams.get('search')?.toLowerCase() || '';
|
|
446
|
-
const page = Math.max(1, parseInt(url.searchParams.get('page') || '1', 10));
|
|
447
|
-
const files = await collectFiles();
|
|
448
|
-
// Without search: paginate at file level — only read files for the current page
|
|
449
|
-
if (!search) {
|
|
450
|
-
const total = files.length;
|
|
451
|
-
const start = (page - 1) * PAGE_SIZE;
|
|
452
|
-
const pageFiles = files.slice(start, start + PAGE_SIZE);
|
|
453
|
-
const agents = [];
|
|
454
|
-
for (const file of pageFiles) {
|
|
455
|
-
const agent = await processFile(file);
|
|
456
|
-
if (agent)
|
|
457
|
-
agents.push(agent);
|
|
458
|
-
}
|
|
459
|
-
return Response.json({ agents, total, page, pageSize: PAGE_SIZE });
|
|
460
|
-
}
|
|
461
|
-
// With search: must read all files to filter, then paginate results
|
|
462
|
-
const allAgents = [];
|
|
463
|
-
for (const file of files) {
|
|
464
|
-
const agent = await processFile(file);
|
|
465
|
-
if (!agent)
|
|
466
|
-
continue;
|
|
467
|
-
const hasMatch = agent.id.toLowerCase().includes(search) ||
|
|
468
|
-
agent.slug.toLowerCase().includes(search) ||
|
|
469
|
-
agent.entries.some((e) => matchesSearch(e, search));
|
|
470
|
-
if (hasMatch)
|
|
471
|
-
allAgents.push(agent);
|
|
472
|
-
}
|
|
473
|
-
const total = allAgents.length;
|
|
474
|
-
const start = (page - 1) * PAGE_SIZE;
|
|
475
|
-
const agents = allAgents.slice(start, start + PAGE_SIZE);
|
|
476
|
-
return Response.json({ agents, total, page, pageSize: PAGE_SIZE });
|
|
477
|
-
}
|
|
478
|
-
catch (error) {
|
|
479
|
-
console.error('[api.agent-transcripts] Error:', error);
|
|
480
|
-
return Response.json({
|
|
481
|
-
error: 'Failed to load agent transcripts',
|
|
482
|
-
details: error instanceof Error ? error.message : String(error),
|
|
483
|
-
}, { status: 500 });
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
//# sourceMappingURL=api.agent-transcripts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.agent-transcripts.js","sourceRoot":"","sources":["../../../../../../src/webserver/app/routes/api.agent-transcripts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import{w as P,u as I,a as B,h as D,r as i,j as e,L as U}from"./chunk-JZWAC4HX-7VptmeIr.js";import{u as V}from"./useReportContext-BsQb6rFd.js";import{c as v}from"./createLucideIcon-D-QUFOwe.js";import{T as A,C as N}from"./terminal-Bs4NC-VZ.js";import{S as H}from"./search-DborVoKD.js";import{C as S}from"./chevron-down-DQJA9f4o.js";import{B as L}from"./book-open-Bp5FLkd4.js";import{T as O}from"./triangle-alert-DTf3Jojp.js";import{C as q,a as z}from"./copy-6nzYCu0G.js";/**
|
|
2
|
-
* @license lucide-react v0.556.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const J=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],K=v("arrow-left",J);/**
|
|
7
|
-
* @license lucide-react v0.556.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const W=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],X=v("chevron-left",W);/**
|
|
12
|
-
* @license lucide-react v0.556.0 - ISC
|
|
13
|
-
*
|
|
14
|
-
* This source code is licensed under the ISC license.
|
|
15
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const Y=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],G=v("message-square",Y);/**
|
|
17
|
-
* @license lucide-react v0.556.0 - ISC
|
|
18
|
-
*
|
|
19
|
-
* This source code is licensed under the ISC license.
|
|
20
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const Q=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],Z=v("save",Q),je=()=>[{title:"Agent Transcripts - CodeYam"},{name:"description",content:"View background agent transcripts and tool call history"}];function ee(t){if(!t)return"";try{return new Date(t).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}catch{return t}}function te(t){if(!t)return"";try{return new Date(t).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",hour12:!1})}catch{return t}}function se(t){return t.includes("opus")?"Opus":t.includes("sonnet")?"Sonnet":t.includes("haiku")?"Haiku":t}function w({type:t,toolName:r}){const a={user_prompt:"bg-[#00b4d8] text-black",assistant_text:"bg-[#a8dadc] text-black",tool_call:"bg-[#f4a261] text-black",tool_result:"bg-[#2a9d8f] text-black",context:"bg-[#7c3aed] text-white"},s={user_prompt:"USER",assistant_text:"ASSISTANT",tool_call:r||"TOOL",tool_result:"RESULT",context:"CONTEXT"};return e.jsx("span",{className:`inline-block px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wide ${a[t]||"bg-gray-300 text-black"}`,children:s[t]||t})}function re({input:t}){return e.jsx("div",{className:"text-xs font-mono space-y-1",children:Object.entries(t).map(([r,a])=>{let s=typeof a=="string"?a:JSON.stringify(a);return s.length>500&&(s=s.slice(0,500)+"..."),e.jsxs("div",{children:[e.jsxs("span",{className:"text-[#f4a261] font-bold",children:[r,":"]})," ",e.jsx("span",{className:"text-gray-700",children:s})]},r)})})}function ae({content:t,truncated:r,fullLength:a}){const[s,l]=i.useState(!1);return e.jsxs("div",{children:[e.jsxs("pre",{className:"whitespace-pre-wrap break-words text-xs max-h-96 overflow-y-auto text-gray-700",children:[t,r&&!s&&"..."]}),r&&e.jsx("button",{onClick:()=>l(!s),className:"text-[11px] text-gray-500 hover:text-gray-700 mt-1 font-mono cursor-pointer",children:s?"Show less":`Show more (${(a||0)-t.length} more chars)`})]})}function ne({entry:t,pairedResult:r}){const[a,s]=i.useState(!1),l=ee(t.timestamp||"");return t.type==="user_prompt"?e.jsxs("div",{className:"my-2",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(w,{type:"user_prompt"}),e.jsx("span",{className:"text-[11px] text-gray-400 font-mono",children:l})]}),e.jsx("pre",{className:"bg-white border border-gray-200 rounded-md p-3 whitespace-pre-wrap break-words text-xs font-mono border-l-[3px] border-l-[#00b4d8] max-h-72 overflow-y-auto text-gray-800",children:t.text})]}):t.type==="assistant_text"?e.jsxs("div",{className:"my-2",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(w,{type:"assistant_text"}),e.jsx("span",{className:"text-[11px] text-gray-400 font-mono",children:l})]}),e.jsx("div",{className:"bg-white border border-gray-200 rounded-md p-3 whitespace-pre-wrap break-words text-sm border-l-[3px] border-l-[#a8dadc] text-gray-800",children:t.text})]}):t.type==="tool_call"?e.jsxs("div",{className:"my-2",children:[e.jsxs("button",{onClick:()=>s(!a),className:"flex items-center gap-2 w-full text-left bg-white border border-gray-200 rounded-md px-3 py-2 hover:bg-gray-50 cursor-pointer",children:[a?e.jsx(S,{className:"w-3 h-3 text-gray-400 flex-shrink-0"}):e.jsx(N,{className:"w-3 h-3 text-gray-400 flex-shrink-0"}),e.jsx(w,{type:"tool_call",toolName:t.name}),e.jsx("span",{className:"text-xs text-gray-500 font-mono truncate flex-1",children:t.summary||""}),e.jsx("span",{className:"text-[11px] text-gray-400 font-mono flex-shrink-0",children:l})]}),a&&e.jsxs("div",{className:"bg-white border border-t-0 border-gray-200 rounded-b-md px-3 py-2 border-l-[3px] border-l-[#f4a261]",children:[e.jsx(re,{input:t.input||{}}),r&&e.jsxs("div",{className:"mt-3 pt-3 border-t border-gray-200",children:[e.jsxs("div",{className:"text-[11px] font-bold uppercase tracking-wide text-[#2a9d8f] mb-1",children:["Result",r.is_error?" (Error)":"",":"]}),e.jsx(ae,{content:r.content||"",truncated:r.truncated,fullLength:r.fullLength})]})]})]}):(t.type==="tool_result",null)}function oe({context:t}){const[r,a]=i.useState(!1);return e.jsxs("div",{className:"my-2",children:[e.jsxs("button",{onClick:()=>a(!r),className:"flex items-center gap-2 mb-1 cursor-pointer hover:opacity-80",children:[r?e.jsx(S,{className:"w-3 h-3 text-gray-400"}):e.jsx(N,{className:"w-3 h-3 text-gray-400"}),e.jsx(w,{type:"context"}),e.jsx("span",{className:"text-xs text-gray-500",children:"Full prompt context"})]}),r&&e.jsx("pre",{className:"bg-gray-50 border border-gray-200 rounded-md p-3 whitespace-pre-wrap break-words text-xs font-mono border-l-[3px] border-l-[#7c3aed] max-h-96 overflow-y-auto text-gray-700",children:t})]})}function le({snippet:t}){const[r,a]=i.useState(!1),s=t.split(`
|
|
22
|
-
`).filter(d=>d.trim()),l=s.slice(0,4),m=s.length>4,h=r?s:l;return e.jsxs("div",{className:"my-2 bg-blue-50 border border-blue-200 rounded-md p-3",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(G,{className:"w-3.5 h-3.5 text-blue-600"}),e.jsx("span",{className:"text-xs font-bold text-blue-800",children:"Source Conversation"}),e.jsxs("span",{className:"text-[10px] text-blue-500",children:[s.length," message",s.length!==1?"s":""]})]}),e.jsx("div",{className:"space-y-1",children:h.map((d,p)=>{const u=d.match(/^\[(\w+)\]:\s*(.*)/);if(!u)return null;const[,f,x]=u,g=f==="user";return e.jsxs("div",{className:"text-xs",children:[e.jsxs("span",{className:`font-bold ${g?"text-blue-700":"text-gray-500"}`,children:[g?"User":"Assistant",":"]})," ",e.jsx("span",{className:"text-gray-700",children:x.length>200?x.slice(0,200)+"...":x})]},p)})}),m&&e.jsx("button",{onClick:()=>a(!r),className:"text-[11px] text-blue-600 hover:text-blue-800 mt-2 font-mono cursor-pointer",children:r?"Show less":`Show all ${s.length} messages`})]})}function ie({change:t}){const[r,a]=i.useState(!1),s=t.action==="created"?!!t.content:t.action==="modified"?!!(t.oldString||t.newString):!1;return e.jsxs("li",{children:[e.jsx("button",{onClick:()=>s&&a(!r),className:`text-left w-full ${s?"hover:text-green-900 cursor-pointer":""}`,children:e.jsxs("span",{className:"inline-flex items-center gap-1",children:[s&&(r?e.jsx(S,{className:"w-3 h-3 inline flex-shrink-0"}):e.jsx(N,{className:"w-3 h-3 inline flex-shrink-0"})),t.action==="created"?"Created":"Modified"," ",t.filePath]})}),r&&t.action==="created"&&t.content&&e.jsx("pre",{className:"mt-1 mb-2 ml-4 p-2 bg-white border border-green-200 rounded text-[11px] text-gray-700 whitespace-pre-wrap break-words max-h-64 overflow-y-auto",children:t.content}),r&&t.action==="modified"&&e.jsxs("div",{className:"mt-1 mb-2 ml-4 space-y-1",children:[t.oldString&&e.jsxs("pre",{className:"p-2 bg-red-50 border border-red-200 rounded text-[11px] text-red-800 whitespace-pre-wrap break-words max-h-32 overflow-y-auto",children:["- ",t.oldString]}),t.newString&&e.jsxs("pre",{className:"p-2 bg-green-50 border border-green-300 rounded text-[11px] text-green-800 whitespace-pre-wrap break-words max-h-32 overflow-y-auto",children:["+ ",t.newString]})]})]})}function ce({changes:t}){const r=t.filter(s=>s.action==="touched"),a=t.filter(s=>s.action!=="touched");return e.jsxs("div",{className:"my-2 bg-green-50 border border-green-200 rounded-md p-3",children:[e.jsx("div",{className:"text-xs font-bold text-green-800 mb-1",children:"Rule Changes:"}),e.jsxs("ul",{className:"text-xs text-green-700 space-y-0.5 font-mono",children:[a.map((s,l)=>e.jsx(ie,{change:s},l)),r.length>0&&e.jsxs("li",{children:["Touched timestamps on ",r.length," rule",r.length!==1?"s":""]})]})]})}function de({agent:t,defaultOpen:r,isAdmin:a}){var E,M,$;const[s,l]=i.useState(r),[m,h]=i.useState(!1),[d,p]=i.useState(null),[u,f]=i.useState(!1),x=i.useMemo(()=>{const n={};for(const o of t.entries)o.type==="tool_result"&&o.tool_use_id&&(n[o.tool_use_id]=o);return n},[t.entries]),g=i.useMemo(()=>{const n=new Set;for(const o of t.entries)o.type==="tool_call"&&o.tool_use_id&&x[o.tool_use_id]&&n.add(o.tool_use_id);return n},[t.entries,x]),k=n=>{n.stopPropagation(),h(!0),p(null),fetch("/api/save-fixture",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:t.id})}).then(o=>o.json()).then(o=>{o.success?p(`Saved to ${o.fixturePath}`):p(`Error: ${o.error}`)}).catch(o=>{p(`Error: ${o instanceof Error?o.message:String(o)}`)}).finally(()=>{h(!1)})},j=(t.ruleChanges||[]).filter(n=>n.action!=="touched"),b=j.filter(n=>n.action==="created"),y=j.filter(n=>n.action==="modified"),c=(t.ruleChanges||[]).filter(n=>n.action==="touched"),C=j.length>0,T=c.length>0,F=C||T;return e.jsxs("div",{className:`bg-white border rounded-lg overflow-hidden mb-4 ${t.stats.errors>0?"border-red-300":b.length>0?"border-green-300":y.length>0?"border-amber-300":"border-gray-200"}`,children:[e.jsxs("button",{onClick:()=>l(!s),className:"w-full flex items-center gap-3 px-4 py-3 text-left hover:bg-gray-50 cursor-pointer",children:[s?e.jsx(S,{className:"w-4 h-4 text-gray-400 flex-shrink-0"}):e.jsx(N,{className:"w-4 h-4 text-gray-400 flex-shrink-0"}),e.jsx("span",{className:"text-sm font-bold text-[#005C75] font-mono",children:t.id.slice(0,8)}),t.slug&&e.jsx("span",{className:"text-xs text-gray-500",children:t.slug}),t.model&&e.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded-full text-[10px] font-bold bg-purple-100 text-purple-700",title:t.model,children:se(t.model)}),b.length>0&&e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-bold bg-green-100 text-green-800",children:[e.jsx(L,{className:"w-3 h-3"}),b.length," rule",b.length!==1?"s":""," ","created"]}),y.length>0&&e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-bold bg-amber-100 text-amber-800",children:[e.jsx(L,{className:"w-3 h-3"}),y.length," rule",y.length!==1?"s":""," ","modified"]}),!C&&T&&e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-bold bg-gray-100 text-gray-500",children:[c.length," timestamp",c.length!==1?"s":""," ","touched"]}),t.stats.errors>0&&e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-bold bg-red-100 text-red-800 max-w-md",title:((E=t.stats.errorMessages)==null?void 0:E.join(`
|
|
23
|
-
`))||"",children:[e.jsx(O,{className:"w-3 h-3 flex-shrink-0"}),e.jsx("span",{className:"truncate",children:t.stats.errors===1&&((M=t.stats.errorMessages)!=null&&M[0])?t.stats.errorMessages[0].length>80?t.stats.errorMessages[0].slice(0,80)+"...":t.stats.errorMessages[0]:`${t.stats.errors} error${t.stats.errors!==1?"s":""}`})]}),t.hasConfusion&&e.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-bold bg-amber-100 text-amber-800",children:[e.jsx(O,{className:"w-3 h-3"}),"Confusion Detected"]}),e.jsxs("span",{className:"text-[11px] text-gray-400 font-mono",children:[t.stats.toolCalls," tool calls, ",t.stats.textBlocks," text blocks"]}),e.jsxs("span",{className:"text-[11px] text-gray-400 font-mono ml-auto flex items-center gap-2",children:[te(t.timestamp),a&&C&&e.jsxs("button",{onClick:k,disabled:m,className:"inline-flex items-center gap-1 px-2 py-1 rounded text-[10px] font-bold bg-gray-100 text-gray-600 hover:bg-gray-200 disabled:opacity-50 cursor-pointer",title:"Save as test fixture",children:[e.jsx(Z,{className:"w-3 h-3"}),m?"Saving...":"Save Fixture"]})]})]}),d&&e.jsx("div",{className:`px-4 py-2 text-xs font-mono ${d.startsWith("Error")?"bg-red-50 text-red-700":"bg-green-50 text-green-700"}`,children:d}),s&&e.jsxs("div",{className:"px-4 pb-4 border-t border-gray-100",children:[t.sourceFile&&e.jsxs("div",{className:"flex items-center gap-2 py-2 text-xs text-gray-500 font-mono",children:[e.jsx("span",{className:"text-gray-400",children:"FILE:"}),e.jsx("span",{className:"truncate",children:t.sourceFile}),e.jsx("button",{onClick:n=>{n.stopPropagation(),navigator.clipboard.writeText(t.sourceFile),f(!0),setTimeout(()=>f(!1),2e3)},className:"p-0.5 rounded text-gray-400 hover:text-gray-600 cursor-pointer transition-colors flex-shrink-0",title:"Copy file path",children:u?e.jsx(q,{className:"w-3.5 h-3.5 text-green-500"}):e.jsx(z,{className:"w-3.5 h-3.5"})})]}),t.stats.errors>0&&(($=t.stats.errorMessages)==null?void 0:$.length)>0&&e.jsxs("div",{className:"my-2 bg-red-50 border border-red-200 rounded-md p-3",children:[e.jsxs("div",{className:"text-xs font-bold text-red-800 mb-1",children:[t.stats.errors," Error",t.stats.errors!==1?"s":"",":"]}),e.jsx("ul",{className:"text-xs text-red-700 space-y-1 font-mono",children:t.stats.errorMessages.map((n,o)=>e.jsx("li",{className:"break-words",children:n},o))})]}),t.conversationSnippet&&e.jsx(le,{snippet:t.conversationSnippet}),F&&e.jsx(ce,{changes:t.ruleChanges}),t.context&&e.jsx(oe,{context:t.context}),t.entries.map((n,o)=>{if(n.type==="tool_result"&&n.tool_use_id&&g.has(n.tool_use_id))return null;const R=n.type==="tool_call"&&n.tool_use_id?x[n.tool_use_id]:void 0;return e.jsx(ne,{entry:n,pairedResult:R},`${t.id}-${o}`)})]})]})}function _(t,r){const a=new URLSearchParams;r&&a.set("search",r),t>1&&a.set("page",String(t));const s=a.toString();return`/agent-transcripts${s?`?${s}`:""}`}const Ne=P(function(){const{agents:r,error:a,search:s,page:l,totalPages:m}=I(),h=B(),d=D("root"),p=(d==null?void 0:d.isAdmin)??!1,[u,f]=i.useState(s),[x,g]=i.useState(!1),[k,j]=i.useState(0);V({source:"agent-transcripts-page"});const b=c=>{c.preventDefault(),window.location.href=_(1,u)},y=()=>{g(!x),j(c=>c+1)};return a?e.jsx("div",{className:"bg-[#F8F7F6] min-h-screen",children:e.jsxs("div",{className:"px-12 py-6 font-sans",children:[e.jsx("h1",{className:"text-[28px] font-semibold text-gray-900",children:"Error"}),e.jsx("p",{className:"text-base text-gray-500",children:a})]})}):e.jsx("div",{className:"bg-[#f9f9f9] min-h-screen",children:e.jsxs("div",{className:"px-20 py-12 font-sans",children:[e.jsxs("div",{className:"mb-8",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-1",children:[e.jsx("button",{onClick:()=>{h("/memory")},className:"text-gray-600 hover:text-[#005C75] transition-colors cursor-pointer",title:"Back to Memory","aria-label":"Back to Memory",children:e.jsx(K,{className:"w-5 h-5"})}),e.jsx(A,{className:"w-6 h-6 text-[#232323]"}),e.jsx("h1",{className:"text-[24px] font-semibold mb-0",style:{fontFamily:"Sora",color:"#232323"},children:"Agent Transcripts"})]}),e.jsx("p",{className:"text-[15px] text-gray-500 ml-14",children:"View background agent transcripts and tool call history"})]}),e.jsxs("div",{className:"flex items-center gap-4 mb-6",children:[e.jsxs("form",{onSubmit:b,className:"relative flex-1 max-w-md",children:[e.jsx(H,{className:"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-gray-400"}),e.jsx("input",{type:"text",value:u,onChange:c=>f(c.target.value),placeholder:"Search transcripts...",className:"w-full pl-10 pr-4 py-2 border border-gray-200 rounded-md bg-white focus:outline-none focus:ring-2 focus:ring-[#005C75] focus:border-transparent text-sm"})]}),e.jsx("button",{onClick:y,className:"text-xs text-[#005C75] hover:underline cursor-pointer font-mono uppercase font-semibold",children:x?"Collapse All":"Expand All"})]}),e.jsxs("div",{className:"text-sm text-gray-500 mb-4",children:["Page ",l," of ",m,s&&e.jsxs("span",{children:[" ","matching “",s,"”",e.jsx(U,{to:"/agent-transcripts",className:"text-[#005C75] hover:underline ml-2",children:"Clear"})]})]}),r.length===0?e.jsxs("div",{className:"bg-white rounded-lg border border-gray-200 p-12 text-center",children:[e.jsx(A,{className:"w-12 h-12 text-gray-300 mx-auto mb-4"}),e.jsx("h3",{className:"text-lg font-medium text-gray-900 mb-2",children:"No Agent Transcripts Found"}),e.jsx("p",{className:"text-gray-500",children:"Background agent output files will appear here when available."})]}):e.jsx("div",{children:r.map(c=>e.jsx(de,{agent:c,defaultOpen:x,isAdmin:p},c.id))},k),m>1&&e.jsxs("div",{className:"flex items-center justify-center gap-3 mt-8",children:[e.jsxs("a",{href:l>1?_(l-1,s):void 0,className:`inline-flex items-center gap-1 px-3 py-1.5 rounded-md text-sm font-medium ${l>1?"bg-white border border-gray-200 text-gray-700 hover:bg-gray-50 cursor-pointer":"bg-gray-100 text-gray-400 pointer-events-none"}`,children:[e.jsx(X,{className:"w-4 h-4"}),"Prev"]}),e.jsxs("span",{className:"text-sm text-gray-500 font-mono",children:[l," / ",m]}),e.jsxs("a",{href:l<m?_(l+1,s):void 0,className:`inline-flex items-center gap-1 px-3 py-1.5 rounded-md text-sm font-medium ${l<m?"bg-white border border-gray-200 text-gray-700 hover:bg-gray-50 cursor-pointer":"bg-gray-100 text-gray-400 pointer-events-none"}`,children:["Next",e.jsx(N,{className:"w-4 h-4"})]})]})]})})});export{Ne as default,je as meta};
|