kagent-ts 0.1.1 → 0.1.3

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.
Files changed (50) hide show
  1. package/dist/compression/sliding-window.d.ts.map +1 -1
  2. package/dist/compression/sliding-window.js +0 -11
  3. package/dist/compression/sliding-window.js.map +1 -1
  4. package/dist/context/context-manager.d.ts +0 -9
  5. package/dist/context/context-manager.d.ts.map +1 -1
  6. package/dist/context/context-manager.js +2 -13
  7. package/dist/context/context-manager.js.map +1 -1
  8. package/dist/core/agent.d.ts +12 -8
  9. package/dist/core/agent.d.ts.map +1 -1
  10. package/dist/core/agent.js +17 -10
  11. package/dist/core/agent.js.map +1 -1
  12. package/dist/core/hooks.d.ts +8 -2
  13. package/dist/core/hooks.d.ts.map +1 -1
  14. package/dist/core/plan-solve-agent.d.ts.map +1 -1
  15. package/dist/core/plan-solve-agent.js +39 -18
  16. package/dist/core/plan-solve-agent.js.map +1 -1
  17. package/dist/core/react-agent.d.ts.map +1 -1
  18. package/dist/core/react-agent.js +29 -14
  19. package/dist/core/react-agent.js.map +1 -1
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +4 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/messages/message.d.ts +0 -8
  25. package/dist/messages/message.d.ts.map +1 -1
  26. package/dist/messages/message.js +0 -13
  27. package/dist/messages/message.js.map +1 -1
  28. package/dist/skills/skill-manager.d.ts +4 -0
  29. package/dist/skills/skill-manager.d.ts.map +1 -1
  30. package/dist/skills/skill-manager.js +6 -0
  31. package/dist/skills/skill-manager.js.map +1 -1
  32. package/dist/skills/types.d.ts +0 -1
  33. package/dist/skills/types.d.ts.map +1 -1
  34. package/dist/tools/error-tracker.d.ts +0 -5
  35. package/dist/tools/error-tracker.d.ts.map +1 -1
  36. package/dist/tools/error-tracker.js +0 -9
  37. package/dist/tools/error-tracker.js.map +1 -1
  38. package/dist/trace/index.d.ts +4 -0
  39. package/dist/trace/index.d.ts.map +1 -0
  40. package/dist/trace/index.js +6 -0
  41. package/dist/trace/index.js.map +1 -0
  42. package/dist/trace/trace-logger.d.ts +92 -0
  43. package/dist/trace/trace-logger.d.ts.map +1 -0
  44. package/dist/trace/trace-logger.js +463 -0
  45. package/dist/trace/trace-logger.js.map +1 -0
  46. package/dist/trace/types.d.ts +20 -0
  47. package/dist/trace/types.d.ts.map +1 -0
  48. package/dist/trace/types.js +3 -0
  49. package/dist/trace/types.js.map +1 -0
  50. package/package.json +1 -1
@@ -0,0 +1,463 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.TraceLogger = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ /**
40
+ * TraceLogger — records the agent's execution trajectory and generates
41
+ * a self-contained HTML report per session.
42
+ *
43
+ * Implements AgentHooks so it can be plugged directly into an Agent:
44
+ *
45
+ * ```ts
46
+ * const traceLogger = new TraceLogger({ sessionId: "my-session" });
47
+ * const agent = new ReActAgent({
48
+ * llm: provider,
49
+ * hooks: traceLogger, // <-- hooks in as the observer
50
+ * });
51
+ * const answer = await agent.run("...");
52
+ * traceLogger.flush(); // writes .kagent-traces/my-session.html
53
+ * ```
54
+ *
55
+ * The HTML report is a standalone file with no external dependencies —
56
+ * all CSS and JS are inlined. It shows a vertical timeline of all events
57
+ * (LLM calls, tool executions, thoughts, errors) with expandable details
58
+ * for each.
59
+ */
60
+ class TraceLogger {
61
+ events = [];
62
+ eventId = 0;
63
+ sessionId;
64
+ outputDir;
65
+ agentLabel;
66
+ modelName;
67
+ startTime;
68
+ constructor(config) {
69
+ const ts = Date.now();
70
+ const rand = Math.random().toString(36).slice(2, 6);
71
+ this.sessionId =
72
+ config?.sessionId ?? `trace-${ts}-${rand}`;
73
+ this.outputDir = path.resolve(config?.outputDir ?? ".kagent-traces");
74
+ this.agentLabel = config?.agentLabel ?? "Agent";
75
+ this.modelName = config?.modelName ?? "unknown";
76
+ this.startTime = ts;
77
+ }
78
+ // ─── Public API ──────────────────────────────────────────────────────────
79
+ /**
80
+ * Get the session identifier for this trace.
81
+ */
82
+ getSessionId() {
83
+ return this.sessionId;
84
+ }
85
+ /**
86
+ * Get all recorded events.
87
+ */
88
+ getEvents() {
89
+ return [...this.events];
90
+ }
91
+ /**
92
+ * Flush the trace to an HTML file on disk.
93
+ * Creates the output directory if it doesn't exist.
94
+ *
95
+ * @returns The absolute path to the generated HTML file.
96
+ */
97
+ flush() {
98
+ const html = this.generateHTML();
99
+ fs.mkdirSync(this.outputDir, { recursive: true });
100
+ const filePath = path.join(this.outputDir, `${this.sessionId}.html`);
101
+ fs.writeFileSync(filePath, html, "utf-8");
102
+ console.log(`[Trace] Saved session trace → ${filePath}`);
103
+ return filePath;
104
+ }
105
+ // ─── AgentHooks Implementation ─────────────────────────────────────────
106
+ onLLMStart(messages, tools) {
107
+ this.addEvent("llm_start", "LLM Call", {
108
+ messageCount: messages.length,
109
+ toolCount: tools.length,
110
+ messages: messages.map((m) => ({
111
+ role: m.role,
112
+ content: m.content,
113
+ tool_calls: m.tool_calls,
114
+ tool_call_id: m.tool_call_id,
115
+ name: m.name,
116
+ })),
117
+ tools: tools.map((t) => ({
118
+ name: t.name,
119
+ description: t.description,
120
+ })),
121
+ });
122
+ }
123
+ onLLMEnd(response) {
124
+ this.addEvent("llm_end", "LLM Response", {
125
+ content: response.content,
126
+ tool_calls: response.tool_calls,
127
+ usage: response.usage,
128
+ });
129
+ }
130
+ onLLMError(error) {
131
+ this.addEvent("llm_error", "LLM Error", {
132
+ cause: error.cause,
133
+ message: error.message,
134
+ });
135
+ this.flush();
136
+ }
137
+ onToolStart(toolName, args) {
138
+ this.addEvent("tool_start", `Tool: ${toolName}`, {
139
+ toolName,
140
+ args,
141
+ });
142
+ }
143
+ onToolEnd(toolName, result) {
144
+ this.addEvent("tool_end", `Tool Result: ${toolName}`, {
145
+ toolName,
146
+ result: result.length > 2000 ? result.slice(0, 2000) + "\n... (truncated)" : result,
147
+ resultLength: result.length,
148
+ });
149
+ }
150
+ onToolError(toolName, error) {
151
+ this.addEvent("tool_error", `Tool Error: ${toolName}`, {
152
+ toolName,
153
+ error,
154
+ });
155
+ }
156
+ onThought(thought) {
157
+ this.addEvent("thought", "Thought", { thought });
158
+ }
159
+ onPlanCreated(plan) {
160
+ this.addEvent("plan_created", "Plan Created", { plan });
161
+ }
162
+ onPlanRevised(plan) {
163
+ this.addEvent("plan_revised", "Plan Revised", { plan });
164
+ }
165
+ onFinish(answer) {
166
+ this.addEvent("finish", "Final Answer", { answer });
167
+ this.flush();
168
+ }
169
+ // ─── Private Helpers ─────────────────────────────────────────────────────
170
+ addEvent(type, label, data) {
171
+ this.events.push({
172
+ id: ++this.eventId,
173
+ timestamp: new Date().toISOString(),
174
+ type,
175
+ label,
176
+ data,
177
+ });
178
+ }
179
+ // ─── HTML Generation ────────────────────────────────────────────────────
180
+ generateHTML() {
181
+ const duration = ((Date.now() - this.startTime) / 1000).toFixed(1);
182
+ const eventCards = this.events.map((e) => this.renderEventCard(e)).join("\n");
183
+ return `<!DOCTYPE html>
184
+ <html lang="en">
185
+ <head>
186
+ <meta charset="UTF-8">
187
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
188
+ <title>Session Trace — ${this.sessionId}</title>
189
+ <style>
190
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
191
+ body {
192
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
193
+ background: #0d1117; color: #c9d1d9; line-height: 1.6; padding: 24px;
194
+ }
195
+ .container { max-width: 960px; margin: 0 auto; }
196
+
197
+ /* ── Header ── */
198
+ .header {
199
+ background: linear-gradient(135deg, #161b22, #1c2333);
200
+ border: 1px solid #30363d; border-radius: 12px; padding: 24px 28px;
201
+ margin-bottom: 28px;
202
+ }
203
+ .header h1 { font-size: 20px; margin-bottom: 8px; display: flex; align-items: center; gap: 10px; }
204
+ .header h1 span { background: #238636; color: #fff; font-size: 11px; padding: 2px 8px; border-radius: 20px; }
205
+ .header .meta { display: flex; flex-wrap: wrap; gap: 16px; font-size: 13px; color: #8b949e; }
206
+ .header .meta .item { display: flex; align-items: center; gap: 4px; }
207
+ .header .meta .item strong { color: #c9d1d9; }
208
+
209
+ /* ── Timeline ── */
210
+ .timeline { position: relative; padding-left: 36px; }
211
+ .timeline::before {
212
+ content: ''; position: absolute; left: 14px; top: 8px; bottom: 8px;
213
+ width: 2px; background: #21262d;
214
+ }
215
+
216
+ /* ── Event Card ── */
217
+ .event { position: relative; margin-bottom: 12px; }
218
+ .event-dot {
219
+ position: absolute; left: -26px; top: 14px; width: 12px; height: 12px;
220
+ border-radius: 50%; border: 2px solid #30363d; background: #0d1117; z-index: 1;
221
+ }
222
+ .event-body {
223
+ background: #161b22; border: 1px solid #30363d; border-radius: 8px;
224
+ padding: 12px 16px; cursor: pointer; transition: border-color .15s;
225
+ }
226
+ .event-body:hover { border-color: #58a6ff; }
227
+ .event-header {
228
+ display: flex; align-items: center; gap: 8px; font-size: 13px;
229
+ user-select: none;
230
+ }
231
+ .event-header .icon { font-size: 16px; flex-shrink: 0; }
232
+ .event-header .label { flex: 1; font-weight: 600; color: #e6edf3; }
233
+ .event-header .time { color: #8b949e; font-size: 11px; font-family: monospace; }
234
+ .event-header .toggle { color: #8b949e; font-size: 12px; }
235
+ .event-detail {
236
+ display: none; margin-top: 10px; border-top: 1px solid #21262d;
237
+ padding-top: 10px; font-size: 13px;
238
+ }
239
+ .event.open .event-detail { display: block; }
240
+ .event.open .toggle { transform: rotate(90deg); }
241
+
242
+ /* ── Detail Blocks ── */
243
+ .detail-section { margin-bottom: 10px; }
244
+ .detail-section:last-child { margin-bottom: 0; }
245
+ .detail-section h4 { font-size: 11px; text-transform: uppercase; color: #8b949e; margin-bottom: 4px; letter-spacing: .5px; }
246
+ pre {
247
+ background: #0d1117; border: 1px solid #21262d; border-radius: 6px;
248
+ padding: 10px 12px; font-family: 'JetBrains Mono', 'Fira Code', monospace;
249
+ font-size: 12px; overflow-x: auto; white-space: pre-wrap; word-break: break-all;
250
+ color: #e6edf3; max-height: 400px; overflow-y: auto;
251
+ }
252
+ pre .key { color: #79c0ff; }
253
+ pre .string { color: #a5d6ff; }
254
+ pre .number { color: #79c0ff; }
255
+ pre .null { color: #d2a8ff; }
256
+ pre .bool { color: #d2a8ff; }
257
+
258
+ /* ── Event-type color accents ── */
259
+ .event-type-llm_start .event-dot { border-color: #58a6ff; background: #1f6feb; }
260
+ .event-type-llm_end .event-dot { border-color: #58a6ff; background: #1f6feb; }
261
+ .event-type-llm_error .event-dot { border-color: #f85149; background: #da3633; }
262
+ .event-type-tool_start .event-dot { border-color: #d29922; background: #9e6a03; }
263
+ .event-type-tool_end .event-dot { border-color: #3fb950; background: #238636; }
264
+ .event-type-tool_error .event-dot { border-color: #f85149; background: #da3633; }
265
+ .event-type-thought .event-dot { border-color: #bc8cff; background: #8957e5; }
266
+ .event-type-plan_created .event-dot { border-color: #79c0ff; background: #1f6feb; }
267
+ .event-type-plan_revised .event-dot { border-color: #f0883e; background: #bd6200; }
268
+ .event-type-finish .event-dot { border-color: #3fb950; background: #238636; }
269
+
270
+ .event-type-llm_error .event-body { border-color: #f85149; }
271
+ .event-type-tool_error .event-body { border-color: #f85149; }
272
+
273
+ /* ── Plan steps list ── */
274
+ ol.plan-steps { padding-left: 20px; margin: 4px 0; }
275
+ ol.plan-steps li { margin-bottom: 2px; color: #e6edf3; }
276
+
277
+ /* ── Tool call args table ── */
278
+ .kv-table { width: 100%; border-collapse: collapse; font-size: 12px; }
279
+ .kv-table th, .kv-table td {
280
+ text-align: left; padding: 4px 8px; border: 1px solid #21262d;
281
+ }
282
+ .kv-table th { background: #0d1117; color: #8b949e; font-weight: 500; white-space: nowrap; }
283
+
284
+ @media (max-width: 640px) {
285
+ body { padding: 12px; }
286
+ .timeline { padding-left: 28px; }
287
+ }
288
+ </style>
289
+ </head>
290
+ <body>
291
+ <div class="container">
292
+
293
+ <div class="header">
294
+ <h1>🤖 <span>TRACE</span> ${this.escapeHtml(this.agentLabel)}</h1>
295
+ <div class="meta">
296
+ <span class="item"><strong>Session:</strong> ${this.escapeHtml(this.sessionId)}</span>
297
+ <span class="item"><strong>Model:</strong> ${this.escapeHtml(this.modelName)}</span>
298
+ <span class="item"><strong>Duration:</strong> ${duration}s</span>
299
+ <span class="item"><strong>Events:</strong> ${this.events.length}</span>
300
+ <span class="item"><strong>Generated:</strong> ${new Date().toISOString()}</span>
301
+ </div>
302
+ </div>
303
+
304
+ <div class="timeline">
305
+ ${eventCards}
306
+ </div>
307
+
308
+ </div>
309
+ <script>
310
+ document.querySelectorAll('.event-body').forEach(el => {
311
+ el.addEventListener('click', () => {
312
+ el.parentElement.classList.toggle('open');
313
+ });
314
+ });
315
+ // Auto-open error events and the final answer
316
+ document.querySelectorAll('.event-type-llm_error, .event-type-tool_error, .event-type-finish, .event-type-plan_created, .event-type-plan_revised')
317
+ .forEach(el => el.classList.add('open'));
318
+ </script>
319
+ </body>
320
+ </html>`;
321
+ }
322
+ renderEventCard(event) {
323
+ const cls = `event event-type-${event.type}`;
324
+ const time = new Date(event.timestamp).toLocaleTimeString("en-US", { hour12: false });
325
+ const icon = this.eventIcon(event.type);
326
+ let detail = "";
327
+ switch (event.type) {
328
+ case "llm_start": {
329
+ const msgs = event.data.messages;
330
+ const tools = event.data.tools;
331
+ detail = `<div class="detail-section">
332
+ <h4>Messages (${msgs?.length ?? 0})</h4>
333
+ <pre>${this.syntaxHighlight(JSON.stringify(msgs ?? [], null, 2))}</pre>
334
+ </div>`;
335
+ if (tools && tools.length > 0) {
336
+ detail += `<div class="detail-section">
337
+ <h4>Available Tools (${tools.length})</h4>
338
+ <pre>${this.syntaxHighlight(JSON.stringify(tools, null, 2))}</pre>
339
+ </div>`;
340
+ }
341
+ break;
342
+ }
343
+ case "llm_end": {
344
+ detail = `<div class="detail-section">
345
+ <h4>Content</h4>
346
+ <pre>${this.escapeHtml(String(event.data.content ?? ""))}</pre>
347
+ </div>`;
348
+ const tc = event.data.tool_calls;
349
+ if (tc && tc.length > 0) {
350
+ detail += `<div class="detail-section">
351
+ <h4>Tool Calls</h4>
352
+ <pre>${this.syntaxHighlight(JSON.stringify(tc, null, 2))}</pre>
353
+ </div>`;
354
+ }
355
+ const usage = event.data.usage;
356
+ if (usage) {
357
+ detail += `<div class="detail-section">
358
+ <h4>Usage</h4>
359
+ <table class="kv-table"><tr>
360
+ <th>Prompt</th><th>Completion</th><th>Total</th>
361
+ </tr><tr>
362
+ <td>${usage.prompt_tokens ?? "—"}</td>
363
+ <td>${usage.completion_tokens ?? "—"}</td>
364
+ <td>${usage.total_tokens ?? "—"}</td>
365
+ </tr></table>
366
+ </div>`;
367
+ }
368
+ break;
369
+ }
370
+ case "llm_error": {
371
+ detail = `<div class="detail-section">
372
+ <h4>Error (${this.escapeHtml(String(event.data.cause ?? ""))})</h4>
373
+ <pre>${this.escapeHtml(String(event.data.message ?? ""))}</pre>
374
+ </div>`;
375
+ break;
376
+ }
377
+ case "tool_start": {
378
+ const tblRows = Object.entries(event.data.args ?? {})
379
+ .map(([k, v]) => `<tr><th>${this.escapeHtml(k)}</th><td><pre style="margin:0;padding:4px;background:none;border:none;max-height:200px">${this.escapeHtml(JSON.stringify(v, null, 2))}</pre></td></tr>`)
380
+ .join("");
381
+ detail = `<div class="detail-section">
382
+ <h4>Arguments</h4>
383
+ <table class="kv-table">${tblRows}</table>
384
+ </div>`;
385
+ break;
386
+ }
387
+ case "tool_end": {
388
+ detail = `<div class="detail-section">
389
+ <h4>Result (${event.data.resultLength} chars)</h4>
390
+ <pre>${this.escapeHtml(String(event.data.result ?? ""))}</pre>
391
+ </div>`;
392
+ break;
393
+ }
394
+ case "tool_error": {
395
+ detail = `<div class="detail-section">
396
+ <h4>Error</h4>
397
+ <pre>${this.escapeHtml(String(event.data.error ?? ""))}</pre>
398
+ </div>`;
399
+ break;
400
+ }
401
+ case "thought": {
402
+ detail = `<div class="detail-section">
403
+ <pre>${this.escapeHtml(String(event.data.thought ?? ""))}</pre>
404
+ </div>`;
405
+ break;
406
+ }
407
+ case "plan_created":
408
+ case "plan_revised": {
409
+ const plan = event.data.plan;
410
+ if (plan && plan.length > 0) {
411
+ detail = `<div class="detail-section">
412
+ <ol class="plan-steps">${plan.map((s) => `<li>${this.escapeHtml(s)}</li>`).join("")}</ol>
413
+ </div>`;
414
+ }
415
+ break;
416
+ }
417
+ case "finish": {
418
+ detail = `<div class="detail-section">
419
+ <pre>${this.escapeHtml(String(event.data.answer ?? ""))}</pre>
420
+ </div>`;
421
+ break;
422
+ }
423
+ }
424
+ return ` <div class="${cls}">
425
+ <div class="event-dot"></div>
426
+ <div class="event-body">
427
+ <div class="event-header">
428
+ <span class="icon">${icon}</span>
429
+ <span class="label">${this.escapeHtml(event.label)}</span>
430
+ <span class="time">${time}</span>
431
+ <span class="toggle">▶</span>
432
+ </div>
433
+ <div class="event-detail">${detail}</div>
434
+ </div>
435
+ </div>`;
436
+ }
437
+ eventIcon(type) {
438
+ switch (type) {
439
+ case "llm_start": return "📤";
440
+ case "llm_end": return "📥";
441
+ case "llm_error": return "❌";
442
+ case "tool_start": return "🔧";
443
+ case "tool_end": return "✅";
444
+ case "tool_error": return "⚠️";
445
+ case "thought": return "💭";
446
+ case "plan_created": return "📋";
447
+ case "plan_revised": return "🔄";
448
+ case "finish": return "🏁";
449
+ }
450
+ }
451
+ escapeHtml(text) {
452
+ return text
453
+ .replace(/&/g, "&amp;")
454
+ .replace(/</g, "&lt;")
455
+ .replace(/>/g, "&gt;")
456
+ .replace(/"/g, "&quot;");
457
+ }
458
+ syntaxHighlight(json) {
459
+ return json.replace(/("(?:[^"\\]|\\.)*")\s*:/g, '<span class="key">$1</span>:').replace(/:\s*("(?:[^"\\]|\\.)*")/g, ': <span class="string">$1</span>').replace(/:\s*(\d+(?:\.\d+)?)/g, ': <span class="number">$1</span>').replace(/:\s*(true|false)/g, ': <span class="bool">$1</span>').replace(/:\s*(null)/g, ': <span class="null">$1</span>');
460
+ }
461
+ }
462
+ exports.TraceLogger = TraceLogger;
463
+ //# sourceMappingURL=trace-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-logger.js","sourceRoot":"","sources":["../../src/trace/trace-logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAmC7B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,WAAW;IACd,MAAM,GAAsB,EAAE,CAAC;IAC/B,OAAO,GAAG,CAAC,CAAC;IACZ,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,UAAU,CAAS;IACnB,SAAS,CAAS;IAClB,SAAS,CAAS;IAE1B,YAAY,MAA0B;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS;YACZ,MAAM,EAAE,SAAS,IAAI,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,IAAI,gBAAgB,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,OAAO,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,SAAS,CAAC;QAChD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,4EAA4E;IAE5E;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC;QACrE,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;QACzD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,0EAA0E;IAE1E,UAAU,CAAC,QAAuB,EAAE,KAAa;QAC/C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE;YACrC,YAAY,EAAE,QAAQ,CAAC,MAAM;YAC7B,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC,CAAC;YACH,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC,CAAC;SACJ,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,QAAqB;QAC5B,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE;YACvC,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,KAAsB;QAC/B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE;YACtC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,IAA6B;QACzD,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,QAAQ,EAAE,EAAE;YAC/C,QAAQ;YACR,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,QAAgB,EAAE,MAAc;QACxC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,QAAQ,EAAE,EAAE;YACpD,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,MAAM;YACnF,YAAY,EAAE,MAAM,CAAC,MAAM;SAC5B,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,QAAgB,EAAE,KAAa;QACzC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,eAAe,QAAQ,EAAE,EAAE;YACrD,QAAQ;YACR,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,OAAe;QACvB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,aAAa,CAAC,IAAc;QAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,aAAa,CAAC,IAAc;QAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,4EAA4E;IAEpE,QAAQ,CACd,IAAyB,EACzB,KAAa,EACb,IAA6B;QAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI;YACJ,KAAK;YACL,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IAEnE,YAAY;QAClB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9E,OAAO;;;;;yBAKc,IAAI,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA0GP,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;;qDAEX,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;mDACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;sDAC5B,QAAQ;oDACV,IAAI,CAAC,MAAM,CAAC,MAAM;uDACf,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;;;EAK7E,UAAU;;;;;;;;;;;;;;;QAeJ,CAAC;IACP,CAAC;IAEO,eAAe,CAAC,KAAsB;QAC5C,MAAM,GAAG,GAAG,oBAAoB,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAgE,CAAC;gBACzF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAiE,CAAC;gBAC3F,MAAM,GAAG;0BACS,IAAI,EAAE,MAAM,IAAI,CAAC;iBAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;eAC3D,CAAC;gBACR,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI;mCACe,KAAK,CAAC,MAAM;mBAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;iBACtD,CAAC;gBACV,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,GAAG;;iBAEA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;eACnD,CAAC;gBACR,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,UAAkF,CAAC;gBACzG,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI;;mBAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;iBACnD,CAAC;gBACV,CAAC;gBACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAkG,CAAC;gBAC5H,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,IAAI;;;;;oBAKA,KAAK,CAAC,aAAa,IAAI,GAAG;oBAC1B,KAAK,CAAC,iBAAiB,IAAI,GAAG;oBAC9B,KAAK,CAAC,YAAY,IAAI,GAAG;;iBAE5B,CAAC;gBACV,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,GAAG;uBACM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;iBACrD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;eACnD,CAAC;gBACR,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAA+B,IAAI,EAAE,CAAC;qBAC7E,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,2FAA2F,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;qBACtM,IAAI,CAAC,EAAE,CAAC,CAAC;gBACZ,MAAM,GAAG;;oCAEmB,OAAO;eAC5B,CAAC;gBACR,MAAM;YACR,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,GAAG;wBACO,KAAK,CAAC,IAAI,CAAC,YAAY;iBAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;eAClD,CAAC;gBACR,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,GAAG;;iBAEA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;eACjD,CAAC;gBACR,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,GAAG;iBACA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;eACnD,CAAC;gBACR,MAAM;YACR,CAAC;YACD,KAAK,cAAc,CAAC;YACpB,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAA4B,CAAC;gBACrD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,GAAG;qCACkB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;iBAC9E,CAAC;gBACV,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,GAAG;iBACA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;eAClD,CAAC;gBACR,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,mBAAmB,GAAG;;;;+BAIF,IAAI;gCACH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;+BAC7B,IAAI;;;oCAGC,MAAM;;WAE/B,CAAC;IACV,CAAC;IAEO,SAAS,CAAC,IAAyB;QACzC,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,WAAW,CAAC,CAAC,OAAO,IAAI,CAAC;YAC9B,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC;YAC5B,KAAK,WAAW,CAAC,CAAC,OAAO,GAAG,CAAC;YAC7B,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC;YAC/B,KAAK,UAAU,CAAC,CAAC,OAAO,GAAG,CAAC;YAC5B,KAAK,YAAY,CAAC,CAAC,OAAO,IAAI,CAAC;YAC/B,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC;YAC5B,KAAK,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC;YACjC,KAAK,cAAc,CAAC,CAAC,OAAO,IAAI,CAAC;YACjC,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,OAAO,IAAI;aACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;aACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;aACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAEO,eAAe,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,OAAO,CACjB,0BAA0B,EAC1B,8BAA8B,CAC/B,CAAC,OAAO,CACP,0BAA0B,EAC1B,kCAAkC,CACnC,CAAC,OAAO,CACP,sBAAsB,EACtB,kCAAkC,CACnC,CAAC,OAAO,CACP,mBAAmB,EACnB,gCAAgC,CACjC,CAAC,OAAO,CACP,aAAa,EACb,gCAAgC,CACjC,CAAC;IACJ,CAAC;CACF;AA/bD,kCA+bC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Types of events that can occur during agent execution.
3
+ */
4
+ export type AgentTraceEventType = "llm_start" | "llm_end" | "llm_error" | "tool_start" | "tool_end" | "tool_error" | "thought" | "plan_created" | "plan_revised" | "finish";
5
+ /**
6
+ * A single trace event in the agent's execution timeline.
7
+ */
8
+ export interface AgentTraceEvent {
9
+ /** Monotonically increasing event sequence number. */
10
+ id: number;
11
+ /** ISO-8601 timestamp of the event. */
12
+ timestamp: string;
13
+ /** Event type category. */
14
+ type: AgentTraceEventType;
15
+ /** Human-readable event label. */
16
+ label: string;
17
+ /** Event-specific payload. */
18
+ data: Record<string, unknown>;
19
+ }
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/trace/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,SAAS,GACT,WAAW,GACX,YAAY,GACZ,UAAU,GACV,YAAY,GACZ,SAAS,GACT,cAAc,GACd,cAAc,GACd,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/trace/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kagent-ts",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "A TypeScript agent framework — ReAct / Plan-Solve agent loops, tool management with circuit breaker, session persistence and resume, file-based progressive skills, and user preference injection.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",