takotrace 0.0.1

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 (60) hide show
  1. package/DEVELOPMENT.md +37 -0
  2. package/PRODUCT.md +33 -0
  3. package/README.md +69 -0
  4. package/README.zh-CN.md +69 -0
  5. package/TECHNICAL_DESIGN.md +46 -0
  6. package/assets/star-takotrace.gif +0 -0
  7. package/assets/takotrace-logo.png +0 -0
  8. package/dist/cli.d.ts +15 -0
  9. package/dist/cli.js +152 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/server/claude-client.d.ts +63 -0
  12. package/dist/server/claude-client.js +512 -0
  13. package/dist/server/claude-client.js.map +1 -0
  14. package/dist/server/codex-client.d.ts +57 -0
  15. package/dist/server/codex-client.js +414 -0
  16. package/dist/server/codex-client.js.map +1 -0
  17. package/dist/server/codex-command.d.ts +15 -0
  18. package/dist/server/codex-command.js +131 -0
  19. package/dist/server/codex-command.js.map +1 -0
  20. package/dist/server/http-server.d.ts +39 -0
  21. package/dist/server/http-server.js +429 -0
  22. package/dist/server/http-server.js.map +1 -0
  23. package/dist/server/index.d.ts +3 -0
  24. package/dist/server/index.js +4 -0
  25. package/dist/server/index.js.map +1 -0
  26. package/dist/server/multi-provider.d.ts +30 -0
  27. package/dist/server/multi-provider.js +178 -0
  28. package/dist/server/multi-provider.js.map +1 -0
  29. package/dist/server/native-path-opener.d.ts +7 -0
  30. package/dist/server/native-path-opener.js +45 -0
  31. package/dist/server/native-path-opener.js.map +1 -0
  32. package/dist/server/provider.d.ts +27 -0
  33. package/dist/server/provider.js +2 -0
  34. package/dist/server/provider.js.map +1 -0
  35. package/dist/server/rollout-reader.d.ts +9 -0
  36. package/dist/server/rollout-reader.js +333 -0
  37. package/dist/server/rollout-reader.js.map +1 -0
  38. package/dist/server/subagent-assignment.d.ts +9 -0
  39. package/dist/server/subagent-assignment.js +146 -0
  40. package/dist/server/subagent-assignment.js.map +1 -0
  41. package/dist/shared/jsonl.d.ts +6 -0
  42. package/dist/shared/jsonl.js +23 -0
  43. package/dist/shared/jsonl.js.map +1 -0
  44. package/dist/shared/store.d.ts +35 -0
  45. package/dist/shared/store.js +351 -0
  46. package/dist/shared/store.js.map +1 -0
  47. package/dist/shared/trace.d.ts +7 -0
  48. package/dist/shared/trace.js +256 -0
  49. package/dist/shared/trace.js.map +1 -0
  50. package/dist/shared/types.d.ts +144 -0
  51. package/dist/shared/types.js +2 -0
  52. package/dist/shared/types.js.map +1 -0
  53. package/dist/web/assets/SequenceDiagram-D2zGAyJN.js +8 -0
  54. package/dist/web/assets/favicon-16-DQXCs6B9.png +0 -0
  55. package/dist/web/assets/favicon-32-By9ik0BF.png +0 -0
  56. package/dist/web/assets/index-D6VA1lK-.css +1 -0
  57. package/dist/web/assets/index-vnUrUuB8.js +84 -0
  58. package/dist/web/assets/takotrace-logo-DtWm9Bax.png +0 -0
  59. package/dist/web/index.html +29 -0
  60. package/package.json +57 -0
@@ -0,0 +1,256 @@
1
+ function record(value) {
2
+ return value && typeof value === 'object' ? value : {};
3
+ }
4
+ function stringAt(value, ...paths) {
5
+ for (const path of paths) {
6
+ let current = value;
7
+ for (const key of path)
8
+ current = record(current)[key];
9
+ if (typeof current === 'string' && current)
10
+ return current;
11
+ }
12
+ return undefined;
13
+ }
14
+ function numberAt(value, ...paths) {
15
+ for (const path of paths) {
16
+ let current = value;
17
+ for (const key of path)
18
+ current = record(current)[key];
19
+ if (typeof current === 'number' && Number.isFinite(current))
20
+ return current;
21
+ }
22
+ return undefined;
23
+ }
24
+ function summaryFor(method, params) {
25
+ const values = record(params);
26
+ const item = record(record(params).item);
27
+ const content = Array.isArray(item.content) ? item.content : [];
28
+ const firstText = content.map(record).find((entry) => entry.type === 'text');
29
+ const text = stringAt(item, ['text'], ['command'], ['name'], ['tool'])
30
+ ?? stringAt(firstText, ['text'])
31
+ ?? stringAt(values, ['thread', 'name'], ['thread', 'preview']);
32
+ if (text) {
33
+ const summary = item.type === 'userMessage' ? extractUserRequest(text) : text;
34
+ return summary.length > 160 ? `${summary.slice(0, 157)}...` : summary;
35
+ }
36
+ return method.replaceAll('/', ' ');
37
+ }
38
+ function extractUserRequest(text) {
39
+ const marker = /## My request:\s*/i.exec(text);
40
+ return marker ? text.slice(marker.index + marker[0].length).trim() : text;
41
+ }
42
+ function eventStatus(method, params) {
43
+ const explicit = stringAt(params, ['status'], ['turn', 'status'], ['item', 'status']);
44
+ if (explicit === 'failed' || explicit === 'error' || explicit === 'cancelled' || explicit === 'systemError')
45
+ return 'failed';
46
+ if (explicit === 'interrupted')
47
+ return 'interrupted';
48
+ if (explicit === 'inProgress' || explicit === 'running')
49
+ return 'running';
50
+ if (explicit === 'completed' || explicit === 'approved')
51
+ return 'completed';
52
+ if (method.endsWith('/completed'))
53
+ return 'completed';
54
+ if (method.endsWith('/started'))
55
+ return 'running';
56
+ return 'pending';
57
+ }
58
+ function entityStatus(value) {
59
+ if (value && typeof value === 'object')
60
+ return entityStatus(record(value).type);
61
+ if (value === 'failed' || value === 'error' || value === 'cancelled' || value === 'systemError')
62
+ return 'failed';
63
+ if (value === 'interrupted')
64
+ return 'interrupted';
65
+ if (value === 'inProgress' || value === 'running' || value === 'active')
66
+ return 'running';
67
+ if (value === 'completed' || value === 'complete' || value === 'approved' || value === 'idle')
68
+ return 'completed';
69
+ return 'pending';
70
+ }
71
+ function isoAt(value, fallback) {
72
+ return typeof value === 'number' && Number.isFinite(value) ? new Date(value * 1_000).toISOString() : fallback;
73
+ }
74
+ function folderName(path) {
75
+ const normalized = path.replace(/[\\/]+$/, '');
76
+ return normalized.split(/[\\/]/).pop() || path;
77
+ }
78
+ function nullableString(value) {
79
+ return value === null || typeof value === 'string' ? value : undefined;
80
+ }
81
+ const TOKEN_FIELDS = [
82
+ ['totalTokens', 'total_tokens'],
83
+ ['inputTokens', 'input_tokens'],
84
+ ['cachedInputTokens', 'cached_input_tokens'],
85
+ ['cacheWriteInputTokens', 'cache_write_input_tokens'],
86
+ ['outputTokens', 'output_tokens'],
87
+ ['reasoningOutputTokens', 'reasoning_output_tokens'],
88
+ ];
89
+ export function normalizeTokenUsageBreakdown(value) {
90
+ const source = record(value);
91
+ if (!TOKEN_FIELDS.some(([camel, snake]) => numberAt(source, [camel], [snake]) !== undefined))
92
+ return undefined;
93
+ return Object.fromEntries(TOKEN_FIELDS.map(([camel, snake]) => [camel, numberAt(source, [camel], [snake]) ?? 0]));
94
+ }
95
+ export function normalizeThreadTokenUsage(value) {
96
+ const source = record(value);
97
+ const total = normalizeTokenUsageBreakdown(source.total ?? source.totalTokenUsage ?? source.total_token_usage);
98
+ const last = normalizeTokenUsageBreakdown(source.last ?? source.lastTokenUsage ?? source.last_token_usage);
99
+ if (!total && !last)
100
+ return undefined;
101
+ const modelContextWindow = numberAt(source, ['modelContextWindow'], ['model_context_window']);
102
+ return {
103
+ total: total ?? last,
104
+ last: last ?? total,
105
+ ...(modelContextWindow === undefined ? {} : { modelContextWindow }),
106
+ };
107
+ }
108
+ export function tokenUsageDelta(current, previous, fallback) {
109
+ if (!previous || current.totalTokens < previous.totalTokens)
110
+ return { ...fallback };
111
+ return Object.fromEntries(TOKEN_FIELDS.map(([field]) => [field, Math.max(0, current[field] - previous[field])]));
112
+ }
113
+ export function addTokenUsage(current, delta) {
114
+ return Object.fromEntries(TOKEN_FIELDS.map(([field]) => [field, (current?.[field] ?? 0) + delta[field]]));
115
+ }
116
+ function subagentSpawnSource(value) {
117
+ const source = record(value);
118
+ const subagent = record(source.subAgent ?? source.subagent);
119
+ return record(subagent.thread_spawn ?? subagent.threadSpawn);
120
+ }
121
+ function threadProvider(value) {
122
+ return record(value).provider === 'claude' ? 'claude' : undefined;
123
+ }
124
+ export function notificationToTrace(notification) {
125
+ const params = notification.params;
126
+ const method = notification.method;
127
+ const type = stringAt(params, ['item', 'type'], ['type']) ?? method.split('/')[0] ?? 'unknown';
128
+ const startedAtMs = numberAt(params, ['item', 'startedAtMs'], ['startedAtMs']);
129
+ const completedAtMs = numberAt(params, ['item', 'completedAtMs'], ['completedAtMs']);
130
+ const emittedAtMs = numberAt(notification, ['emittedAtMs'])
131
+ ?? completedAtMs
132
+ ?? startedAtMs;
133
+ const turnAtSeconds = method.endsWith('/completed')
134
+ ? numberAt(params, ['turn', 'completedAt'])
135
+ : numberAt(params, ['turn', 'startedAt']);
136
+ const timestamp = emittedAtMs ?? (turnAtSeconds === undefined ? Date.now() : turnAtSeconds * 1_000);
137
+ const tokenUsage = normalizeThreadTokenUsage(record(params).tokenUsage ?? record(params).token_usage ?? record(params).info);
138
+ return {
139
+ at: new Date(timestamp).toISOString(),
140
+ startedAt: startedAtMs === undefined
141
+ ? (method.endsWith('/started') ? new Date(timestamp).toISOString() : undefined)
142
+ : new Date(startedAtMs).toISOString(),
143
+ completedAt: completedAtMs === undefined
144
+ ? (method.endsWith('/completed') || method.endsWith('/failed') ? new Date(timestamp).toISOString() : undefined)
145
+ : new Date(completedAtMs).toISOString(),
146
+ method,
147
+ type,
148
+ status: eventStatus(method, params),
149
+ threadId: stringAt(params, ['threadId'], ['thread_id'], ['thread', 'id']) ?? '',
150
+ turnId: stringAt(params, ['turnId'], ['turn_id'], ['turn', 'id']),
151
+ itemId: stringAt(params, ['itemId'], ['item_id'], ['item', 'id']),
152
+ parentItemId: stringAt(params, ['parentItemId'], ['parent_item_id'], ['item', 'parentItemId'], ['item', 'parent_id']),
153
+ summary: summaryFor(method, params),
154
+ durationMs: numberAt(params, ['item', 'durationMs'], ['turn', 'durationMs']),
155
+ model: stringAt(params, ['model'], ['turn', 'model'], ['turn', 'modelName'], ['turn', 'model_name'], ['threadSettings', 'model'], ['thread_settings', 'model']),
156
+ tokenUsage,
157
+ raw: notification,
158
+ };
159
+ }
160
+ export function threadToHistory(value) {
161
+ const thread = record(value);
162
+ const id = stringAt(thread, ['id']);
163
+ if (!id)
164
+ return undefined;
165
+ const provider = threadProvider(thread);
166
+ const createdAt = isoAt(thread.createdAt, new Date().toISOString());
167
+ const updatedAt = isoAt(thread.updatedAt, createdAt);
168
+ const cwd = stringAt(thread, ['cwd'], ['cwd', 'path']);
169
+ const projectFolder = stringAt(thread, ['projectFolder']) ?? (cwd ? folderName(cwd) : undefined);
170
+ const rawTurns = Array.isArray(thread.turns) ? thread.turns : [];
171
+ const spawnSource = subagentSpawnSource(thread.source);
172
+ const parentThreadId = nullableString(thread.parentThreadId) ?? nullableString(spawnSource.parent_thread_id);
173
+ const agentNickname = nullableString(thread.agentNickname) ?? nullableString(spawnSource.agent_nickname);
174
+ const agentRole = nullableString(thread.agentRole) ?? nullableString(spawnSource.agent_role);
175
+ const agentPath = nullableString(thread.agentPath)
176
+ ?? nullableString(spawnSource.agent_path)
177
+ ?? nullableString(spawnSource.agentPath);
178
+ const tokenUsage = normalizeThreadTokenUsage(thread.tokenUsage ?? thread.token_usage);
179
+ const turns = rawTurns.flatMap((rawTurn) => {
180
+ const turn = record(rawTurn);
181
+ const turnId = stringAt(turn, ['id']);
182
+ if (!turnId)
183
+ return [];
184
+ const status = entityStatus(turn.status);
185
+ const startedAt = typeof turn.startedAt === 'number' ? isoAt(turn.startedAt, createdAt) : undefined;
186
+ const completedAt = typeof turn.completedAt === 'number' ? isoAt(turn.completedAt, updatedAt) : undefined;
187
+ const durationMs = numberAt(turn, ['durationMs']);
188
+ const model = stringAt(turn, ['model'], ['modelName'], ['model_name']);
189
+ const tokenUsage = normalizeTokenUsageBreakdown(turn.tokenUsage ?? turn.token_usage);
190
+ const at = completedAt ?? startedAt ?? updatedAt;
191
+ const rawItems = Array.isArray(turn.items) ? turn.items : [];
192
+ const items = rawItems.flatMap((rawItem) => {
193
+ const item = record(rawItem);
194
+ const itemId = stringAt(item, ['id']);
195
+ if (!itemId)
196
+ return [];
197
+ const type = stringAt(item, ['type']) ?? 'item';
198
+ // Items returned by thread/read are committed history entries. Their status is
199
+ // independent from the containing turn, which may still be running or interrupted.
200
+ const finalStatus = item.status === undefined ? 'completed' : entityStatus(item.status);
201
+ const method = ['completed', 'interrupted', 'failed'].includes(finalStatus) ? 'item/completed' : 'item/started';
202
+ const itemStartedAt = typeof item.startedAt === 'number' ? isoAt(item.startedAt, at) : undefined;
203
+ const itemCompletedAt = typeof item.completedAt === 'number' ? isoAt(item.completedAt, at) : undefined;
204
+ return [{
205
+ at: itemCompletedAt ?? itemStartedAt ?? at,
206
+ startedAt: itemStartedAt,
207
+ completedAt: itemCompletedAt,
208
+ method,
209
+ type,
210
+ status: finalStatus,
211
+ threadId: id,
212
+ turnId,
213
+ itemId,
214
+ parentItemId: stringAt(item, ['parentItemId'], ['parent_id']),
215
+ provider,
216
+ summary: summaryFor(method, { item }),
217
+ durationMs: numberAt(item, ['durationMs']),
218
+ timingSource: itemStartedAt !== undefined || itemCompletedAt !== undefined ? 'observed' : 'turn-fallback',
219
+ raw: rawItem,
220
+ }];
221
+ });
222
+ return [{ id: turnId, status, startedAt, completedAt, durationMs, model, tokenUsage, items }];
223
+ });
224
+ const declaredStatus = entityStatus(thread.status);
225
+ const shouldDeriveStatus = record(thread.status).type === 'notLoaded';
226
+ return {
227
+ id,
228
+ sessionId: stringAt(thread, ['sessionId']),
229
+ forkedFromId: nullableString(thread.forkedFromId),
230
+ parentThreadId,
231
+ title: stringAt(thread, ['name'], ['preview']) ?? `Session ${id.slice(0, 8)}`,
232
+ status: shouldDeriveStatus && turns.length ? turns[turns.length - 1].status : declaredStatus,
233
+ turnsLoaded: thread.turnsLoaded === true,
234
+ historySource: thread.historySource === 'rollout-file' || thread.historySource === 'app-server'
235
+ ? thread.historySource
236
+ : (thread.historySource === 'claude' ? 'claude' : undefined),
237
+ provider,
238
+ createdAt,
239
+ updatedAt,
240
+ cwd,
241
+ projectFolder,
242
+ ephemeral: typeof thread.ephemeral === 'boolean' ? thread.ephemeral : undefined,
243
+ modelProvider: stringAt(thread, ['modelProvider']),
244
+ path: nullableString(thread.path),
245
+ cliVersion: stringAt(thread, ['cliVersion']),
246
+ source: thread.source,
247
+ threadSource: nullableString(thread.threadSource),
248
+ agentNickname,
249
+ agentRole,
250
+ agentPath,
251
+ depth: numberAt(thread, ['depth']) ?? numberAt(spawnSource, ['depth']),
252
+ tokenUsage,
253
+ turns,
254
+ };
255
+ }
256
+ //# sourceMappingURL=trace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/shared/trace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ export type ConnectionStatus = 'connecting' | 'connected' | 'disconnected' | 'error';
2
+ export type EntityStatus = 'pending' | 'running' | 'completed' | 'interrupted' | 'failed';
3
+ export type ProviderId = 'codex' | 'claude';
4
+ export type ProviderSelection = ProviderId | 'all';
5
+ export type HistorySource = 'app-server' | 'rollout-file' | 'claude';
6
+ export interface TokenUsageBreakdown {
7
+ totalTokens: number;
8
+ inputTokens: number;
9
+ cachedInputTokens: number;
10
+ cacheWriteInputTokens: number;
11
+ outputTokens: number;
12
+ reasoningOutputTokens: number;
13
+ }
14
+ export interface ThreadTokenUsage {
15
+ total: TokenUsageBreakdown;
16
+ last: TokenUsageBreakdown;
17
+ modelContextWindow?: number;
18
+ }
19
+ export interface TraceEvent {
20
+ seq: number;
21
+ startedSeq?: number;
22
+ completedSeq?: number;
23
+ at: string;
24
+ startedAt?: string;
25
+ completedAt?: string;
26
+ method: string;
27
+ type: string;
28
+ status: EntityStatus;
29
+ threadId: string;
30
+ turnId?: string;
31
+ itemId?: string;
32
+ parentItemId?: string;
33
+ summary: string;
34
+ durationMs?: number;
35
+ timingSource?: 'observed' | 'turn-fallback';
36
+ model?: string;
37
+ tokenUsage?: ThreadTokenUsage;
38
+ provider?: ProviderId;
39
+ raw: unknown;
40
+ }
41
+ export interface TurnState {
42
+ id: string;
43
+ status: EntityStatus;
44
+ startedAt?: string;
45
+ completedAt?: string;
46
+ durationMs?: number;
47
+ model?: string;
48
+ tokenUsage?: TokenUsageBreakdown;
49
+ items: TraceEvent[];
50
+ }
51
+ export interface ThreadState {
52
+ id: string;
53
+ title: string;
54
+ status: EntityStatus;
55
+ turnsLoaded: boolean;
56
+ historySource?: HistorySource;
57
+ provider?: ProviderId;
58
+ createdAt: string;
59
+ updatedAt: string;
60
+ cwd?: string;
61
+ projectFolder?: string;
62
+ tokenUsage?: ThreadTokenUsage;
63
+ turns: TurnState[];
64
+ }
65
+ export interface AppState {
66
+ connection: {
67
+ status: ConnectionStatus;
68
+ provider?: ProviderSelection;
69
+ userAgent?: string;
70
+ error?: string;
71
+ };
72
+ threads: ThreadState[];
73
+ events: TraceEvent[];
74
+ }
75
+ export type CompactTraceEvent = Omit<TraceEvent, 'raw'>;
76
+ export type CompactTurnState = Omit<TurnState, 'items'> & {
77
+ summary: string;
78
+ itemCount: number;
79
+ items: CompactTraceEvent[];
80
+ };
81
+ export type CompactThreadState = Omit<ThreadState, 'turns'> & {
82
+ turns: CompactTurnState[];
83
+ };
84
+ export interface CompactAppState {
85
+ connection: AppState['connection'];
86
+ threads: CompactThreadState[];
87
+ events: [];
88
+ }
89
+ export interface HistoricalTurn {
90
+ id: string;
91
+ status: EntityStatus;
92
+ startedAt?: string;
93
+ completedAt?: string;
94
+ durationMs?: number;
95
+ model?: string;
96
+ tokenUsage?: TokenUsageBreakdown;
97
+ items: Array<Omit<TraceEvent, 'seq'>>;
98
+ }
99
+ export interface HistoricalThread {
100
+ id: string;
101
+ sessionId?: string;
102
+ forkedFromId?: string | null;
103
+ parentThreadId?: string | null;
104
+ title: string;
105
+ status: EntityStatus;
106
+ turnsLoaded: boolean;
107
+ historySource?: HistorySource;
108
+ provider?: ProviderId;
109
+ createdAt: string;
110
+ updatedAt: string;
111
+ cwd?: string;
112
+ projectFolder?: string;
113
+ ephemeral?: boolean;
114
+ modelProvider?: string;
115
+ path?: string | null;
116
+ cliVersion?: string;
117
+ source?: unknown;
118
+ threadSource?: string | null;
119
+ agentNickname?: string | null;
120
+ agentRole?: string | null;
121
+ agentPath?: string | null;
122
+ depth?: number;
123
+ tokenUsage?: ThreadTokenUsage;
124
+ turns: HistoricalTurn[];
125
+ }
126
+ export interface RpcNotification {
127
+ method: string;
128
+ params?: unknown;
129
+ }
130
+ export interface RpcRequest {
131
+ id: number | string;
132
+ method: string;
133
+ params?: unknown;
134
+ }
135
+ export interface RpcResponse {
136
+ id: number | string;
137
+ result?: unknown;
138
+ error?: {
139
+ code: number;
140
+ message: string;
141
+ data?: unknown;
142
+ };
143
+ }
144
+ export type RpcMessage = RpcNotification | RpcRequest | RpcResponse;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import{n as v,a as A,t as k,e as C,b as B,c as je,w as se,d as pe,f as N,r as q,j as r,g as Ae,S as J,I as L,h as Ie,i as ae,k as ie,E as oe,H as Ne,u as Te,l as Ce,M as Ee}from"./index-vnUrUuB8.js";function ge(e){var n;const t=(n=v(e))==null?void 0:n.replaceAll("\\","/");if(!(!t||!t.includes("/skills/")&&!t.startsWith("skills/")||!t.endsWith("/SKILL.md")))return t.split("/").at(-2)}function Pe(e){return(Array.isArray(e.commandActions)?e.commandActions:Array.isArray(e.parsed_cmd)?e.parsed_cmd:[]).map(A)}function Le(e){return((v(e)??(Array.isArray(e)?e.filter(i=>typeof i=="string").join(" "):"")).match(/(?:file:\/\/)?[^\s"'`]*skills\/[^\s"'`]+\/SKILL\.md/g)??[]).map(ge).filter(i=>!!i)}function Re(e){const t=Pe(e).filter(s=>{var a;return((a=v(s.type))==null?void 0:a.toLowerCase())==="read"}).map(s=>ge(s.path)),n=[...new Set([...t,...Le(e.command)].filter(s=>!!s))];if(!n.length)return;const i=n.length>1?` +${n.length-1}`:"";return{names:n,displayTitle:`Skill load · ${n[0]}${i} (inferred)`}}function re(e){const i=(Array.isArray(e.receiverAgents)?e.receiverAgents:Array.isArray(e.receiver_agents)?e.receiver_agents:[]).map(A).map(s=>v(s.agentNickname)??v(s.agent_nickname)??v(s.agentPath)??v(s.agent_path)).find(Boolean)??v(e.agentPath)??v(e.agent_path);return i==null?void 0:i.split("/").filter(Boolean).pop()}function Be(e){const t=e.content;if(!Array.isArray(t))return;const n=t.map(a=>v(A(a).text)).filter(Boolean).join(`
2
+
3
+ `),i="## My request:",s=n.indexOf(i);return(s>=0?n.slice(s+i.length):n).trim()||void 0}function We(e){if(Array.isArray(e.summary))return e.summary.map(v).filter(Boolean).join(`
4
+ `)||void 0}function De(e){if(e!=null)try{const t=JSON.stringify(e,null,2);return t.length>1200?`${t.slice(0,1200)}
5
+ …`:t}catch{return String(e)}}function Fe(e){return(Array.isArray(e.changes)?e.changes.map(n=>{const i=A(n),s=v(A(i.kind).type)??v(i.kind)??v(i.type)??"changed",a=v(i.path);return a?`${s} · ${a}`:void 0}):Object.entries(A(e.changes)).map(([n,i])=>{const s=A(i);return`${v(s.type)??v(A(s.kind).type)??v(s.kind)??"changed"} · ${n}`})).join(`
6
+ `)||void 0}function F(e){const t=C(e);let i=(v(t.type)??e.type).toLowerCase();i==="item"&&(e.method.includes("agentMessage")?i="agentmessage":e.method.includes("reasoning")?i="reasoning":e.method.includes("commandExecution")?i="commandexecution":e.method.includes("mcpToolCall")&&(i="mcptoolcall"));const s=e.summary&&e.summary!=="item started"&&e.summary!=="item completed"?e.summary:"No additional detail";if(i==="usermessage")return{kind:"user",label:"User",title:"Request",detail:Be(t)??s};if(i==="agentmessage"){const a=v(t.phase);return{kind:"agent",label:"Agent",title:a==="commentary"?"Update":a==="final_answer"?"Final response":"Message",detail:v(t.text)??s,meta:a}}if(i==="reasoning")return{kind:"reasoning",label:"Agent",title:"Reasoning",detail:We(t)??s};if(i==="subagentactivity"){const a=v(t.kind)??"activity",d=B(a),c=v(t.agentPath)??v(t.agent_path)??"Subagent",p=re(t)??"Subagent",m={started:{label:"Start",title:"Started",direction:"call"},interacted:{label:"Update",title:"Update",direction:"return"},completed:{label:"Result",title:"Result",direction:"return"},interrupted:{label:"Interrupted",title:"Interrupted",direction:"return"},failed:{label:"Failed",title:"Failed",direction:"return"}}[d],f=`${a[0].toUpperCase()}${a.slice(1)}`;return{kind:"subagent",label:(m==null?void 0:m.label)??"Subagent",title:`${(m==null?void 0:m.title)??f} · ${p}`,detail:c,meta:v(t.agentThreadId)??v(t.agent_thread_id),sequenceDirection:(m==null?void 0:m.direction)??"call"}}if(i==="collabagenttoolcall"){const a=v(t.tool)??"collaboration",d=B(a),c={spawnagent:"Fork",sendinput:"Message",sendmessage:"Message",followuptask:"Message",resumeagent:"Resume",wait:"Wait",waitagent:"Wait",interruptagent:"Interrupt",closeagent:"Close"}[d]??a,m=(Array.isArray(t.receiverThreadIds)?t.receiverThreadIds:Array.isArray(t.receiver_thread_ids)?t.receiver_thread_ids:[]).filter(x=>typeof x=="string"),b=re(t)??(m.length>1?`${m.length} subagents`:void 0),h=c==="Wait",o=h?`Wait for ${b??"subagents"}`:b?`${c} · ${b}`:c,l=A(t.result),g=v(l.message),_=l.timed_out===!0||l.timedOut===!0;return{kind:"subagent",label:c,title:o,detail:g??v(t.prompt)??(m.length?`Targets: ${m.join(", ")}`:s),meta:v(t.model)??void 0,showStatus:!0,statusLabel:_?"Timed out":h&&e.status==="completed"?"Wait ended":void 0,sequenceDirection:"call"}}if(i==="commandexecution"){const a=typeof t.exitCode=="number"?`exit ${t.exitCode}`:void 0,d=je(t.command),c=Re(t);return c?{kind:"skill",label:"Skill",title:c.displayTitle,detail:d??s,meta:[se(t.cwd),a].filter(Boolean).join(" · ")||void 0,showStatus:!0}:{kind:"tool",label:"Tool",title:d?`Shell · ${d.split(`
7
+ `,1)[0].slice(0,112)}`:"Shell",detail:d??s,meta:[se(t.cwd),a].filter(Boolean).join(" · ")||void 0,showStatus:!0}}if(i.includes("skill"))return{kind:"skill",label:"Skill",title:`Skill · ${v(t.name)??v(t.skill)??e.summary??"Skill"}`,detail:v(t.prompt)??v(t.path)??s,showStatus:!0};if(i==="mcptoolcall"){const a=v(t.server),d=v(t.tool)??e.summary??"MCP tool",c=pe(t);return{kind:"mcp",label:"MCP",title:(c==null?void 0:c.displayTitle)??[a,d].filter(Boolean).join(" · "),participantName:a,detail:De(t.arguments)??s,showStatus:!0}}return i==="filechange"?{kind:"file",label:"Tool",title:"File change",detail:Fe(t)??s,showStatus:!0}:i.includes("websearch")?{kind:"web",label:"Tool",title:"Web search",detail:s,showStatus:!0}:i.includes("tool")||i.includes("image")||i.includes("browser")?{kind:"tool",label:"Tool",title:e.type,detail:s,showStatus:!0}:{kind:"system",label:"System",title:e.type||e.method,detail:s}}function fe(e){const t=new Map;for(const n of e){const i=n.method.includes("started"),s=n.method.includes("completed")||n.method.includes("failed"),a={...n,startedSeq:n.startedSeq??(i?n.seq:void 0),completedSeq:n.completedSeq??(s?n.seq:void 0),startedAt:n.startedAt??(i?n.at:void 0),completedAt:n.completedAt??(s?n.at:void 0)},d=a.itemId?`item:${a.threadId}:${a.turnId??""}:${a.itemId}`:`event:${a.threadId}:${a.turnId??""}:${a.seq}`,c=t.get(d);if(!c){t.set(d,a);continue}const p=a.method.includes("completed")||a.method.includes("failed"),m=c.method.includes("completed")||c.method.includes("failed"),f=p||!m?a:c,b=f===a?c:a;t.set(d,{...b,...f,seq:Math.min(c.seq,a.seq),at:c.at<a.at?c.at:a.at,startedSeq:c.startedSeq??a.startedSeq,completedSeq:a.completedSeq??c.completedSeq,startedAt:c.startedAt??a.startedAt,completedAt:a.completedAt??c.completedAt,parentItemId:a.parentItemId??c.parentItemId,durationMs:a.durationMs??c.durationMs})}return[...t.values()].sort((n,i)=>{const s=k(n.startedAt)??k(n.at)??k(n.completedAt),a=k(i.startedAt)??k(i.at)??k(i.completedAt);return s!==void 0&&a!==void 0&&s!==a?s-a:n.seq-i.seq})}function I(e){return e==="user"?"user":e==="agent"||e==="reasoning"?"agent":e==="mcp"?"mcp":e==="subagent"?"subagent":e==="skill"?"skill":e==="file"?"file":e==="web"?"web":e==="tool"?"tool":"activity"}function W(e){return N(e)}function Oe(e){return e.filter(t=>{const n=F(t).kind;return n!=="user"&&n!=="agent"&&n!=="reasoning"&&n!=="system"})}function He(e){return e.flatMap(t=>{if(t.timingSource==="turn-fallback")return[];const n=k(t.startedAt),i=k(t.completedAt);return n!==void 0&&i!==void 0&&i>n?[{id:W(t),start:n,end:i}]:[]})}function Ue(e){const t=Math.max(0,...e.map(n=>n.completedSeq??n.startedSeq??n.seq))+1;return e.flatMap(n=>{const i=n.startedSeq,s=n.completedSeq??(n.status==="running"?t:void 0);return i!==void 0&&s!==void 0&&s>i?[{id:W(n),start:i,end:s}]:[]})}function ce(e,t,n){const i=[...e].sort((p,m)=>p.start-m.start||p.end-m.end),s=[];let a=[],d=Number.NEGATIVE_INFINITY;const c=()=>{if(a.length<2)return;const p=a.flatMap(h=>[{at:h.start,delta:1},{at:h.end,delta:-1}]).sort((h,o)=>h.at-o.at||h.delta-o.delta);let m=0,f=0;for(const h of p)m+=h.delta,f=Math.max(f,m);if(f<2)return;const b=a.map(h=>h.id);s.push({id:`parallel-${t}-${b.join("-")}`,eventIds:b,maxConcurrency:f,evidence:t,confidence:n})};for(const p of i)a.length&&p.start>=d&&(c(),a=[],d=Number.NEGATIVE_INFINITY),a.push(p),d=Math.max(d,p.end);return c(),s}function le(e){return(Array.isArray(e.receiverThreadIds)?e.receiverThreadIds:Array.isArray(e.receiver_thread_ids)?e.receiver_thread_ids:[]).filter(n=>typeof n=="string"&&!!n.trim())}function ze(e){const t=[];let n=[];const i=(s=n)=>{if(!s.length)return;const a=new Set(s.flatMap(c=>c.targets)),d=Math.max(a.size,s.length===1?0:s.length);if(d>1){const c=s.map(p=>p.id);t.push({id:`parallel-fork-join-${c.join("-")}`,eventIds:c,maxConcurrency:d,evidence:"fork-join",confidence:"structured"})}};for(const s of e){const a=C(s),d=B(a.type??s.type);if(d==="subagentactivity"){const p=B(a.kind),m=typeof(a.agentThreadId??a.agent_thread_id)=="string"?String(a.agentThreadId??a.agent_thread_id).trim():"";m&&["completed","failed","interrupted"].includes(p)&&(n=n.filter(f=>!f.targets.includes(m)));continue}if(d!=="collabagenttoolcall")continue;const c=B(a.tool);if(c==="spawnagent"||c==="resumeagent")n.push({id:W(s),targets:le(a)});else if(c==="wait"||c==="waitagent"){const p=new Set(le(a)),m=p.size?n.filter(b=>b.targets.some(h=>p.has(h))):n;i(m);const f=new Set(m.map(b=>b.id));n=n.filter(b=>!f.has(b.id))}}return i(),t}function Ve(e){return[...e.eventIds].sort().join("\0")}function he(e){const t=Oe(e),n=[...ce(He(t),"timestamp","confirmed"),...ce(Ue(t),"lifecycle","confirmed"),...ze(t)],i={timestamp:3,lifecycle:2,"fork-join":1},s=new Map;for(const a of n){const d=Ve(a),c=s.get(d);(!c||i[a.evidence]>i[c.evidence])&&s.set(d,a)}return[...s.values()]}function Ke(e){return e.evidence==="fork-join"?`Parallel dispatch ×${e.maxConcurrency}`:`Parallel ×${e.maxConcurrency}`}function Ge(e){if(e.timingSource==="turn-fallback")return{timing:"order"};const t=k(e.startedAt),n=k(e.completedAt);if(t!==void 0&&n!==void 0&&n>=t)return{startedAtMs:t,completedAtMs:n,timing:"observed"};if(e.durationMs!==void 0&&e.durationMs>0){const i=n??(e.method.includes("completed")||e.method.includes("failed")?k(e.at):void 0);if(i!==void 0)return{startedAtMs:i-e.durationMs,completedAtMs:i,timing:"inferred"}}return{timing:"order"}}function de(e,t,n,i){const s=t.kind==="mcp",a=Ge(e),d=C(e),c=t.kind==="tool"&&typeof d.exitCode=="number"&&d.exitCode!==0;return{id:N(e),batch:n,event:e,kind:t.kind,label:s?"Tool":t.label,title:s?`MCP · ${t.title}`:t.title,detail:t.detail,meta:t.meta,status:c?"failed":e.status,statusLabel:c?void 0:t.statusLabel,durationMs:e.durationMs,parallel:i,...a}}function Je(e){const t=fe(e).map(c=>({event:c,node:F(c)})),n=new Map;for(const c of he(t.map(({event:p})=>p)))for(const p of c.eventIds)n.has(p)||n.set(p,c);const i=[];let s,a=!0,d=0;for(const c of t){if(c.node.kind==="user"||c.node.kind==="agent"){const f=N(c.event);i.push({type:"message",id:f,event:c.event,node:c.node}),s=c.node.kind==="agent"?f:void 0,a=!0,d=0;continue}(c.node.kind==="reasoning"||c.node.kind==="system")&&(d+=1);const p=i[i.length-1],m=n.get(W(c.event));!a&&(p==null?void 0:p.type)==="execution"?p.actions.push(de(c.event,c.node,d,m)):i.push({type:"execution",id:`execution-${N(c.event)}`,ownerAgentId:s,actions:[de(c.event,c.node,d,m)]}),a=!1}return{blocks:i}}const X=[{key:"user",label:"Input"},{key:"agent",label:"Agent"},{key:"tools",label:"Tools"},{key:"mcp",label:"MCP"},{key:"subagents",label:"Subagents"}],R=.8,V=8;function ue(e){return e==="user"?"user":e==="agent"||e==="reasoning"?"agent":e==="mcp"?"mcp":e==="subagent"?"subagents":"tools"}function Xe(e){if(e.timingSource==="turn-fallback")return{startedAtMs:e.seq,completedAtMs:e.seq,timing:"order"};const t=k(e.startedAt),n=k(e.completedAt);if(t!==void 0&&n!==void 0&&n>=t)return{startedAtMs:t,completedAtMs:n,timing:"observed"};const i=n??k(e.at)??e.seq;return e.durationMs!==void 0&&e.durationMs>0?{startedAtMs:i-e.durationMs,completedAtMs:i,timing:"inferred"}:{startedAtMs:i,completedAtMs:i,timing:"order"}}function Ye(e){const t=[];for(const n of Je(e).blocks){if(n.type==="execution"){for(const s of n.actions){const a=s.startedAtMs??k(s.event.startedAt)??k(s.event.at)??s.event.seq,d=s.completedAtMs??k(s.event.completedAt)??(s.durationMs===void 0?a:a+s.durationMs);t.push({id:s.id,kind:s.kind,label:`${s.label} · ${s.title}`,lane:ue(s.kind),startedAtMs:a,completedAtMs:Math.max(a,d),timing:s.timing})}continue}const i=Xe(n.event);t.push({id:n.id,kind:n.node.kind,label:`${n.node.label} · ${n.node.title}`,lane:ue(n.node.kind),...i})}return t}function Qe(e,t){if(!e.length)return[];const n=Math.min(...e.map(m=>m.startedAtMs)),i=Math.max(...e.map(m=>m.completedAtMs)),s=Math.max(1,i-n),a=new Map(X.map(m=>[m.key,Math.max(1,...e.filter(f=>f.lane===m.key).map(f=>f.completedAtMs-f.startedAtMs))])),d=100/e.length,c=Math.min(1,d*.15),p=e.map((m,f)=>{const b=Math.max(0,m.completedAtMs-m.startedAtMs);if(t==="logical"){const g=Math.max(R,d-c),_=b===0?0:Math.sqrt(b/a.get(m.lane)),x=R+(g-R)*_;return{...m,left:f*d,width:x,track:0}}const h=Math.min(100-R,(m.startedAtMs-n)/s*100),o=b/s*100,l=Math.min(100-h,Math.max(0,o));return{...m,left:h,width:l,track:0}});for(const m of X){const f=[],b=p.filter(h=>h.lane===m.key).sort((h,o)=>h.left-o.left);for(const h of b){const o=t==="logical"?0:Math.max(0,f.findIndex(l=>l<=h.left));h.track=o===-1?f.length:o,f[h.track]=h.left+h.width}}return p}function Ze(e){const t=e.filter(i=>i.timing!=="order");if(t.length<2||t.every(i=>i.timing==="inferred")&&new Set(t.map(i=>i.completedAtMs)).size===1)return!1;const n=t.map(i=>i.startedAtMs);return new Set(n).size>1&&Math.max(...t.map(i=>i.completedAtMs))>Math.min(...n)}function et({items:e,onSelect:t,selectedId:n}){const i=q.useMemo(()=>Ye(e),[e]);if(!i.length)return null;const s=Ze(i)?"actual":"logical",a=Qe(i,s),d=X.filter(o=>a.some(l=>l.lane===o.key)),c=new Map,p=new Map;let m=0;for(const o of d){const l=a.filter(x=>x.lane===o.key),g=Math.max(1,...l.map(x=>x.track+1)),_=Math.max(18,g*V+6);p.set(o.key,m),c.set(o.key,_),m+=_}const b=(s==="actual"?[...a].sort((o,l)=>o.startedAtMs-l.startedAtMs):a).map(o=>({x:o.left+Math.min(o.width/2,R/2),y:p.get(o.lane)+o.track*V+7})),h=b.reduce((o,l,g)=>g===0?`M ${l.x} ${l.y}`:`${o} H ${l.x} V ${l.y}`,"");return r.jsx("div",{"aria-label":"Trace overview",className:"vbg-custom-replay-overview",title:s==="actual"?"Bar width represents duration":"Bar width represents relative duration",children:r.jsxs("div",{className:"vbg-custom-replay-overview__plot",style:{height:`${m}px`},children:[s==="logical"&&b.length>1&&r.jsxs("svg",{"aria-hidden":"true",className:"vbg-custom-replay-overview__sequence",preserveAspectRatio:"none",viewBox:`0 0 100 ${m}`,children:[r.jsx("defs",{children:r.jsx("marker",{id:"vbg-replay-arrow",markerHeight:"5",markerWidth:"5",orient:"auto",refX:"4",refY:"2.5",children:r.jsx("path",{d:"M 0 0 L 5 2.5 L 0 5 z"})})}),r.jsx("path",{d:h,markerEnd:"url(#vbg-replay-arrow)"})]}),d.map(o=>{const l=a.filter(g=>g.lane===o.key);return r.jsxs("div",{className:"vbg-custom-replay-overview__lane",style:{height:`${c.get(o.key)}px`},children:[r.jsx("span",{children:o.label}),r.jsx("div",{className:"vbg-custom-replay-overview__track",children:l.map(g=>{const _=Ae(Math.max(0,g.completedAtMs-g.startedAtMs)),x=g.timing==="observed"?"Observed timing":g.timing==="inferred"?"Estimated timing":"Order only",$=`${g.label} · ${_} · ${x}`,w=g.timing==="order"||g.completedAtMs===g.startedAtMs;return r.jsx("button",{"aria-label":$,"aria-pressed":n===g.id,className:`vbg-custom-replay-overview__bar vbg-custom-replay-overview__bar--${g.kind}${w?" vbg-custom-replay-overview__bar--point":""}`,"data-timing":g.timing,onClick:()=>t(g.id),style:{left:`${g.left}%`,top:`${g.track*V+3}px`,width:w?"8px":`max(6px, ${g.width}%)`},title:$,type:"button"},g.id)})})]},o.key)})]})})}function me({duration:e,durationLabel:t="Duration",from:n,startedAt:i,startedAtLabel:s,startedAtTitle:a,to:d,type:c}){const p=!!(n&&d);return r.jsx("section",{"aria-label":p?`Execution from ${n} to ${d}`:"Execution timing",className:"vbg-custom-execution-meta",children:r.jsxs("dl",{className:"vbg-custom-execution-meta__facts",children:[r.jsxs("div",{children:[r.jsx("dt",{children:"Started"}),r.jsx("dd",{children:r.jsx("time",{dateTime:i,title:a,children:s})})]}),r.jsxs("div",{children:[r.jsx("dt",{children:t}),r.jsx("dd",{children:e??"Not recorded"})]}),p&&r.jsxs("div",{children:[r.jsx("dt",{children:"Direction"}),r.jsxs("dd",{className:"vbg-custom-execution-meta__route",children:[r.jsx("code",{title:n,children:n}),r.jsx("span",{"aria-hidden":"true",className:"vbg-custom-execution-meta__arrow",children:"→"}),r.jsx("code",{title:d,children:d})]})]}),c&&r.jsxs("div",{children:[r.jsx("dt",{children:"Type"}),r.jsx("dd",{children:r.jsx("span",{className:"vbg-custom-execution-meta__type",children:c})})]})]})})}function tt(e){window.requestAnimationFrame(()=>{var t;return(t=document.getElementById(e))==null?void 0:t.focus()})}function nt({value:e}){const t=typeof e=="string";let n;try{n=t?e:JSON.stringify(e,null,2)}catch{n=String(e)}return r.jsx(Ne,{className:"vbg-custom-sequence__inspector-value",code:n,language:t?"plaintext":"json"})}function st({autoFocusClose:e=!0,item:t,onClose:n,onOpenSubagent:i,subagentView:s="trace"}){const a=`execution-inspector-title-${t.seq}`,[d,c]=q.useState("overview"),p=[{id:"overview",label:"Overview"},{id:"raw",label:"Raw event"}],m=t.kind==="file"||t.kind==="web"?"tool":t.kind,f=m==="reasoning"?"Agent":m,b=m==="subagent",h=F(t.event).statusLabel??t.status,o=t.event.startedAt??t.at;return r.jsxs("aside",{className:"vbg-custom-sequence__inspector vbg-custom-sequence__inspector--tabbed",id:"execution-inspector","aria-labelledby":a,children:[r.jsxs("header",{className:"vbg-custom-sequence__inspector-header",children:[r.jsxs("div",{className:"vbg-custom-sequence__inspector-title",id:a,"aria-live":"polite",children:[r.jsxs("div",{className:"vbg-custom-sequence__inspector-title-meta",children:[r.jsx("span",{className:`vbg-custom-sequence__inspector-kind vbg-custom-sequence__inspector-kind--${m}`,children:f.toUpperCase()}),r.jsxs("span",{"aria-label":`Step ${t.seq}`,className:"vbg-custom-sequence__inspector-step",children:["#",t.seq]})]}),r.jsx("strong",{title:t.fullTitle??t.title,children:t.title})]}),r.jsxs("div",{className:"vbg-custom-sequence__inspector-actions",children:[r.jsx(J,{status:h}),r.jsx("button",{autoFocus:e,type:"button",className:"vbg-custom-sequence__inspector-close",onClick:n,"aria-label":"Close execution details",title:"Close details",children:r.jsx(L,{name:"close"})})]})]}),!b&&r.jsx("div",{"aria-label":"Execution details",className:"vbg-custom-sequence__inspector-tabs",role:"tablist",children:p.map(l=>r.jsx("button",{"aria-controls":"execution-inspector-panel","aria-selected":d===l.id,className:d===l.id?"is-active":void 0,id:`execution-inspector-tab-${l.id}`,onClick:()=>c(l.id),onKeyDown:Ie,role:"tab",tabIndex:d===l.id?0:-1,type:"button",children:l.label},l.id))}),r.jsx("div",{"aria-labelledby":b?a:`execution-inspector-tab-${d}`,className:"vbg-custom-sequence__inspector-panel",id:"execution-inspector-panel",role:b?void 0:"tabpanel",children:b?r.jsxs("div",{className:"vbg-custom-sequence__inspector-summary vbg-custom-sequence__inspector-summary--subagent",children:[r.jsx(me,{duration:t.durationMs===void 0?void 0:`${t.durationMs}ms`,durationLabel:"Event latency",startedAt:o,startedAtLabel:ie(o),startedAtTitle:ae(o)}),r.jsx(oe,{autoLoadSubagent:!0,event:t.event,expandResult:!0,fallback:t.detail,onOpenSubagent:i,subagentView:s})]}):d==="overview"?r.jsxs("div",{className:"vbg-custom-sequence__inspector-summary",children:[r.jsx(me,{duration:t.durationMs===void 0?void 0:`${t.durationMs}ms`,from:t.from,startedAt:o,startedAtLabel:ie(o),startedAtTitle:ae(o),to:t.to,type:t.type}),r.jsxs("section",{className:"vbg-custom-sequence__inspector-section","aria-label":"Execution content",children:[r.jsx("h3",{children:"Content"}),r.jsx(oe,{autoLoadSubagent:!0,event:t.event,expandResult:!0,fallback:t.detail,onOpenSubagent:i,subagentView:s})]})]}):r.jsx(nt,{value:C(t.event)})})]})}const be={user:{key:"user",label:"User",subtext:"Prompt / Feedback",iconName:I("user")},agent:{key:"agent",label:"Agent",subtext:"Orchestrator",iconName:I("agent")},tool:{key:"tool",label:"Tools",subtext:"Shell / Files",iconName:I("tool")},mcp:{key:"mcp",label:"MCP",subtext:"Protocol Tools",iconName:I("mcp")},subagent:{key:"subagent",label:"Subagent",subtext:"Collaborators",iconName:I("subagent")}},at={...be,user:{key:"user",label:"Parent Agent",subtext:"Orchestrator",iconName:I("agent")},agent:{key:"agent",label:"Subagent",subtext:"Current worker",iconName:I("subagent")},subagent:{key:"subagent",label:"Child Subagent",subtext:"Delegated worker",iconName:I("subagent")}};function it(e){return e==="user"?"user":e==="agent"||e==="reasoning"?"agent":e==="mcp"?"mcp":e==="subagent"?"subagent":"tool"}function ot(e,t){if(!t)return!1;const n=C(e),i=typeof n.agentThreadId=="string"?n.agentThreadId:typeof n.agent_thread_id=="string"?n.agent_thread_id:void 0;if(t.parentThreadId&&i===t.parentThreadId)return!0;const s=typeof n.agentPath=="string"?n.agentPath:typeof n.agent_path=="string"?n.agent_path:void 0;return!s||!t.agentPath||s===t.agentPath?!1:t.agentPath.startsWith(`${s.replace(/\/$/,"")}/`)}const rt=/^(?:(?:\/usr)?\/bin\/)?(?:zsh|bash|sh)\s+-(?:lc|c)\s+/i;function ct(e){const t=e.trim(),n=t[0];if(n!=='"'&&n!=="'"||t.at(-1)!==n)return;if(n==='"'){let s=0;for(let a=t.length-2;a>=0&&t[a]==="\\";a-=1)s+=1;if(s%2===1)return}const i=t.slice(1,-1);return n==='"'?i.replace(/\\(["'\\])/g,"$1"):i.replace(/'\\''/g,"'")}function lt(e){var n;const t=e.match(/^((?:node|cat)\s+)(["']?)([^"'\s]*\/)([^/"'\s]+)\2(?=$|\s)/);return!t||(((n=t[3].match(/\//g))==null?void 0:n.length)??0)<2?e:e.replace(t[0],`${t[1]}${t[2]}…/${t[4]}${t[2]}`)}function ve(e){let t=e.trim().split(/\r?\n/,1)[0]??"";for(let n=0;n<4;n+=1){const i=t.match(rt);if(!i)break;const s=ct(t.slice(i[0].length));if(s===void 0)break;t=s}return t.replace(/\s+/g," ").trim()||e.trim()}function dt(e,t){let n=ve(e);if(t!=null&&t.startsWith("/")){const i=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");n=n.replace(new RegExp(`${i}(?=$|[\\s/"'])`,"g"),".")}return n=n.replace(/\/Users\/[^/\s"'\\]+/g,"~"),n=lt(n),n||e.trim()}function ut(e){return e.type.toLowerCase()==="commandexecution"||e.method.toLowerCase().includes("commandexecution")}function mt(e){return e.replace(/^Skill(?: load)? · /,"").replace(/ \(inferred\)$/,"")}function pt(e,t){const n=e.split(/\r?\n/).map(s=>s.trim()).find(s=>s&&!/^```/.test(s));return!n||n==="No additional detail"?t:n.replace(/^#{1,6}\s+/,"").replace(/^>\s*/,"").replace(/^[-+*]\s+/,"").replace(/!\[([^\]]*)\]\([^)]+\)/g,"$1").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/`([^`]+)`/g,"$1").replace(/\*\*([^*]+)\*\*/g,"$1").replace(/__([^_]+)__/g,"$1").replace(/~~([^~]+)~~/g,"$1").replace(/[*_]/g,"").replace(/\s+/g," ").trim()||t}function gt(e){if(!(e.kind!=="user"&&e.kind!=="agent"&&e.kind!=="reasoning"))return pt(e.detail,e.title)}function ft(e,t,n){return t?"terminal":e.kind==="agent"?"message":e.kind==="reasoning"?"activity":n??I(e.kind)}function D(e,t){var f;const n=e.kind==="tool"&&ut(t),i=e.kind==="skill",s=e.kind==="mcp"?pe(C(t)):void 0,a=(s==null?void 0:s.kind)==="browser"?"web":(s==null?void 0:s.kind)==="computer-use"?"monitor":(s==null?void 0:s.kind)==="javascript"?"braces":void 0,d=(f=e.meta)==null?void 0:f.split(" · ",1)[0],c=n?dt(e.detail,d):void 0,p=n?ve(e.detail):void 0,m=gt(e);return{displayIcon:ft(e,n,a),displayTitle:c??m??(i?mt(e.title):(s==null?void 0:s.title)??e.title),detailTitle:p?`Shell · ${p}`:m&&m!==e.title?`${e.title} · ${m}`:e.title,exportTitle:c?`Shell · ${c}`:e.title,isCommand:n}}function ht(e,t="main",n){const i=fe(e).map(o=>({event:o,node:F(o)})),s=[],a=new Set(["user","agent"]);let d=1;for(const{event:o,node:l}of i)if(l.kind==="user")a.add("user"),a.add("agent"),s.push({id:`seq-${N(o)}`,seq:d++,from:"user",to:"agent",type:"call",label:t==="subagent"?"Task input":"User prompt",title:l.title,...D(l,o),detail:l.detail,meta:l.meta,status:o.status,durationMs:o.durationMs,at:o.at,event:o,node:l});else if(l.kind==="agent"){a.add("agent"),a.add("user");const g=l.meta==="final_answer";s.push({id:`seq-${N(o)}`,seq:d++,from:"agent",to:"user",type:g?"return":"call",label:g?t==="subagent"?"Result":"Final Answer":t==="subagent"?"Progress update":"Commentary / Update",title:l.title,...D(l,o),detail:l.detail,meta:l.meta,status:o.status,durationMs:o.durationMs,at:o.at,event:o,node:l})}else if(l.kind==="reasoning"||l.kind==="skill"){a.add("agent");const g=l.kind==="skill";s.push({id:`seq-${N(o)}`,seq:d++,from:"agent",to:"agent",type:"self",label:g?"Skill load":"Think & Plan",title:l.title,...D(l,o),detail:l.detail,meta:l.meta,status:o.status,durationMs:o.durationMs,at:o.at,event:o,node:l})}else{const g=it(l.kind),_=t==="subagent"&&g==="subagent"&&ot(o,n);a.add(_?"user":g),a.add("agent");const x=g==="subagent"&&l.sequenceDirection==="return",$=_?x?"agent":"user":x?"subagent":"agent",w=_?x?"user":"agent":x?"agent":g;s.push({id:`seq-${N(o)}`,seq:d++,from:$,to:w,toLabel:w==="mcp"?l.participantName:void 0,type:x?"return":"call",label:`${l.label} execution`,title:l.title,...D(l,o),detail:l.detail,meta:l.meta,status:o.status,durationMs:o.durationMs,at:o.at,event:o,node:l})}const c=[];if(s.length>0){c.push({participant:"agent",startStepIndex:0,endStepIndex:s.length-1,status:"completed"});const o=new Map;s.forEach((l,g)=>{const _=l.to!=="agent"&&l.to!=="user"?l.to:l.from!=="agent"&&l.from!=="user"?l.from:null;if(_){const x=o.get(_);x?(x.end=g,(l.status==="failed"||l.status==="error")&&(x.status="failed")):o.set(_,{start:g,end:g,status:l.status})}}),o.forEach((l,g)=>{c.push({participant:g,startStepIndex:l.start,endStepIndex:l.end,status:l.status})})}const p=["user","agent","tool","mcp","subagent"],m=t==="subagent"?at:be,f=p.filter(o=>a.has(o)).map(o=>m[o]),b=new Map(s.map((o,l)=>[W(o.event),l])),h=he(i.map(({event:o})=>o)).flatMap(o=>{const l=o.eventIds.flatMap(x=>{const $=b.get(x);return $===void 0?[]:[$]});if(!l.length)return[];const g=Math.min(...l),_=Math.max(...l);return[{id:o.id,stepIds:l.map(x=>s[x].id),startStepIndex:g,endStepIndex:_,maxConcurrency:o.maxConcurrency,evidence:o.evidence,label:Ke(o)}]});return{participants:f,steps:s,activations:c,parallelGroups:h}}function K(e){return e.replace(/["\n\r;]/g," ").slice(0,80).trim()}function bt(e){const t=["sequenceDiagram"," autonumber"];for(const a of e.participants)t.push(` participant ${a.key} as ${a.label}`);t.push("");const n=new Map(e.parallelGroups.map(a=>[a.startStepIndex,a])),i=new Map(e.parallelGroups.map(a=>[a.endStepIndex,a])),s=new Map(e.parallelGroups.flatMap(a=>a.stepIds.map((d,c)=>[d,{group:a,index:c}])));for(const[a,d]of e.steps.entries()){const c=n.get(a),p=s.get(d.id);c?t.push(` par ${K(c.label)}`):p&&p.index>0&&t.push(` and ${K(d.exportTitle)}`);const m=K(d.exportTitle||d.label),f=d.durationMs!==void 0?` (${d.durationMs}ms)`:"",b=`${m}${f}`;d.type==="self"?t.push(` ${d.from}->>${d.to}: ${b}`):d.type==="return"?t.push(` ${d.from}-->>${d.to}: ${b}`):t.push(` ${d.from}->>+${d.to}: ${b}`),i.has(a)&&t.push(" end")}return t.join(`
8
+ `)}function vt(e,t){return{seq:e.seq,kind:e.node.kind,title:e.displayTitle,fullTitle:e.detailTitle,detail:e.detail,status:e.status,durationMs:e.durationMs,at:e.at,from:t.get(e.from)??e.from,to:e.toLabel??t.get(e.to)??e.to,type:e.type,event:e.event}}function xt(e,t){const s=Math.max(1,Math.min(480,t.width-24))/2,a=Math.max(0,t.height-e.bottom-12),d=Math.max(0,e.top-12),c=a<Math.min(240,d);return{above:c,left:Math.min(Math.max(e.left+e.width/2,12+s),t.width-12-s),maxHeight:Math.max(24,Math.min(320,c?d:a)),top:c?e.top-8:e.bottom+8}}function G(e){return e.detail.trim()||e.detailTitle}function yt(e,t,n){return t<=0?null:n==="Home"?0:n==="End"?t-1:n==="ArrowUp"?Math.max(0,e-1):n==="ArrowDown"?Math.min(t-1,e+1):null}function kt({initialSelectedStepId:e,items:t,onOpenSubagent:n,scope:i="main",threadContext:s}){const[a,d]=q.useState(e??null),{copy:c,state:p}=Te(t,2e3),[m,f]=q.useState(null),b=q.useRef(null),h=q.useRef(null),o=q.useMemo(()=>ht(t,i,s),[t,i,s]),l=q.useMemo(()=>o.steps.find(u=>u.id===a),[o.steps,a]),g=u=>{const M=o.steps.find(y=>y.id===`seq-${u}`);M&&(f(null),d(y=>y===M.id?null:M.id))};q.useEffect(()=>{a&&!l&&d(null)},[l,a]),q.useEffect(()=>()=>{h.current&&clearTimeout(h.current)},[]),q.useLayoutEffect(()=>{if(!l)return;const u=b.current,M=document.getElementById(`sequence-step-${l.seq}`);if(!u||!M)return;const y=u.getBoundingClientRect(),S=M.getBoundingClientRect(),T=12;S.bottom>y.bottom-T?u.scrollTop+=S.bottom-y.bottom+T:S.top<y.top+T&&(u.scrollTop-=y.top-S.top+T)},[l]);const _=()=>{if(!l)return;const u=`sequence-step-${l.seq}`;d(null),tt(u)},x=()=>{h.current&&(clearTimeout(h.current),h.current=null)},$=(u=0)=>{if(x(),u===0){f(null);return}h.current=setTimeout(()=>{h.current=null,f(null)},u)},w=(u,M)=>{x();const y=u.getBoundingClientRect(),S=xt(y,{height:window.innerHeight,width:window.innerWidth});f({stepId:M.id,text:G(M),...S})},Y=q.useMemo(()=>{const u=new Map;return o.participants.forEach((M,y)=>{u.set(M.key,y)}),u},[o.participants]),O=q.useMemo(()=>new Map(o.participants.map(u=>[u.key,u.label])),[o.participants]),xe=q.useMemo(()=>new Map(o.parallelGroups.flatMap(u=>u.stepIds.map(M=>[M,u]))),[o.parallelGroups]),ye={"--vbg-sequence-columns":o.participants.length,minWidth:`${Math.max(420,o.participants.length*156)}px`};return r.jsxs("section",{"aria-label":"Run sequence diagram",className:"vbg-custom-sequence",onKeyDown:u=>{u.key==="Escape"&&l&&(u.preventDefault(),_())},children:[o.steps.length===0?r.jsx("div",{className:"vbg-custom-sequence__empty",children:r.jsx("p",{children:"No sequence events to display for this run."})}):r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"vbg-custom-sequence__overview",children:r.jsx(et,{items:t,onSelect:g,selectedId:l==null?void 0:l.id.replace(/^seq-/,"")})}),r.jsxs("div",{className:`vbg-custom-sequence__workspace${l?" vbg-custom-sequence__workspace--with-inspector":""}`,children:[r.jsxs("button",{type:"button","aria-label":p==="copied"?"Mermaid copied":p==="error"?"Copy Mermaid failed":"Copy Mermaid",className:"vbg-custom-sequence__copy-btn",onClick:()=>void c(bt(o)),title:p==="copied"?"Mermaid copied":p==="error"?"Copy failed":"Copy Mermaid sequence syntax",children:[r.jsx(L,{name:p==="copied"?"check":p==="error"?"alert":"copy"},p),r.jsx("span",{"aria-live":"polite",className:"vbg-custom-sr-only",children:p==="copied"?"Copied":p==="error"?"Copy failed":"Copy Mermaid"})]}),r.jsx("div",{ref:b,className:"vbg-custom-sequence__canvas","aria-label":"Sequence interaction flow",onScroll:()=>$(),children:r.jsxs("div",{className:"vbg-custom-sequence__diagram",style:ye,children:[r.jsx("div",{className:"vbg-custom-sequence__lifelines-header",children:o.participants.map(u=>r.jsx("div",{className:`vbg-custom-sequence__participant vbg-custom-sequence__participant--${u.key}`,children:r.jsxs("div",{className:"vbg-custom-sequence__participant-box",children:[r.jsx("span",{className:"vbg-custom-sequence__participant-icon",children:r.jsx(L,{name:u.iconName})}),r.jsxs("div",{className:"vbg-custom-sequence__participant-info",children:[r.jsx("strong",{children:u.label}),r.jsx("span",{children:u.subtext})]})]})},u.key))}),r.jsxs("div",{className:"vbg-custom-sequence__body",children:[r.jsx("div",{className:"vbg-custom-sequence__lifelines-bg",children:o.participants.map(u=>r.jsx("div",{className:"vbg-custom-sequence__lifeline-col",children:r.jsx("div",{className:"vbg-custom-sequence__lifeline-wire"})},u.key))}),r.jsx("div",{className:"vbg-custom-sequence__steps",children:o.steps.map((u,M)=>{const y=xe.get(u.id),S=(y==null?void 0:y.startStepIndex)===M,T=(y==null?void 0:y.endStepIndex)===M,H=Y.get(u.from)??0,U=Y.get(u.to)??0,_e=u.type==="self"||H===U,Me=u.type==="return",Q=100/o.participants.length,E=a===u.id,Z=u.status==="completed"||u.status==="complete"||u.status==="approved",ke=`sequence-step-${u.seq}`,qe=u.node.kind==="file"||u.node.kind==="web"?"tool":u.node.kind==="reasoning"?"agent":u.node.kind,z=(H+.5)*Q,ee=(U+.5)*Q,$e=Math.min(z,ee),we=Math.abs(ee-z),Se=U>=H?"right":"left";return r.jsxs("button",{id:ke,className:`vbg-custom-sequence__step-row vbg-custom-sequence__step-row--role-${qe} vbg-custom-sequence__step-row--status-${u.status}${y?" vbg-custom-sequence__step-row--parallel":""}${S?" vbg-custom-sequence__step-row--parallel-start":""}${T?" vbg-custom-sequence__step-row--parallel-end":""} ${E?"vbg-custom-sequence__step-row--selected":""}`,onClick:()=>{if(E){_();return}d(u.id)},onKeyDown:j=>{const P=yt(M,o.steps.length,j.key);if(P===null)return;j.preventDefault();const te=o.steps[P];f(null),d(te.id),window.requestAnimationFrame(()=>{var ne;(ne=document.getElementById(`sequence-step-${te.seq}`))==null||ne.focus()})},type:"button",tabIndex:a?E?0:-1:M===0?0:-1,"aria-expanded":E,"aria-controls":E?"execution-inspector":void 0,"aria-describedby":(m==null?void 0:m.stepId)===u.id?"sequence-step-tooltip":void 0,"aria-label":`Step ${u.seq}: ${u.label} - ${u.detailTitle}, ${O.get(u.from)??u.from} to ${u.toLabel??O.get(u.to)??u.to}${y?`, ${y.label}`:""}`,onBlur:()=>$(),onFocus:j=>{if(!j.currentTarget.matches(":focus-visible"))return;const P=j.currentTarget.querySelector(".vbg-custom-sequence__step-title");P&&w(P,u)},children:[y&&S&&r.jsxs("span",{className:"vbg-custom-sequence__parallel-label",children:[r.jsx("strong",{children:y.label}),r.jsx("small",{children:y.evidence==="lifecycle"?"lifecycle overlap":y.evidence.replace("-"," ")})]}),r.jsx("div",{className:"vbg-custom-sequence__step-line-container",children:_e?r.jsxs("div",{className:"vbg-custom-sequence__self-loop",style:{left:`${z}%`},children:[r.jsx("span",{"aria-hidden":"true",className:"vbg-custom-sequence__self-path"}),r.jsxs("span",{className:"vbg-custom-sequence__self-badge",children:[r.jsx("span",{className:"vbg-custom-sequence__step-num",children:u.seq}),u.displayIcon&&r.jsx("span",{"aria-hidden":"true",className:"vbg-custom-sequence__step-icon",children:r.jsx(L,{name:u.displayIcon})}),r.jsx("strong",{className:`vbg-custom-sequence__step-title${u.isCommand?" vbg-custom-sequence__step-title--command":""}`,"data-tooltip":G(u),onMouseEnter:j=>w(j.currentTarget,u),onMouseLeave:()=>$(100),children:u.displayTitle}),!Z&&r.jsx(J,{status:u.status})]})]}):r.jsxs("div",{className:`vbg-custom-sequence__arrow vbg-custom-sequence__arrow--${Se} ${Me?"vbg-custom-sequence__arrow--return":"vbg-custom-sequence__arrow--call"} vbg-custom-sequence__arrow--status-${u.status}`,style:{left:`${$e}%`,width:`${we}%`},children:[r.jsx("div",{className:"vbg-custom-sequence__arrow-line"}),r.jsx("div",{className:"vbg-custom-sequence__arrow-head"}),r.jsxs("div",{className:"vbg-custom-sequence__arrow-label",children:[r.jsx("span",{className:"vbg-custom-sequence__step-num",children:u.seq}),u.displayIcon&&r.jsx("span",{"aria-hidden":"true",className:"vbg-custom-sequence__step-icon",children:r.jsx(L,{name:u.displayIcon})}),r.jsx("strong",{className:`vbg-custom-sequence__step-title${u.isCommand?" vbg-custom-sequence__step-title--command":""}`,"data-tooltip":G(u),onMouseEnter:j=>w(j.currentTarget,u),onMouseLeave:()=>$(100),children:u.displayTitle}),!Z&&r.jsx(J,{status:u.status})]})]})})]},u.id)})})]})]})}),l&&r.jsx(st,{autoFocusClose:!1,item:vt(l,O),onClose:_,onOpenSubagent:n,subagentView:"sequence"},l.id)]})]}),m&&typeof document<"u"&&Ce.createPortal(r.jsx("div",{className:`vbg-custom-sequence__tooltip${m.above?" vbg-custom-sequence__tooltip--above":""}`,id:"sequence-step-tooltip",onMouseEnter:x,onMouseLeave:()=>$(),role:"tooltip",style:{left:m.left,maxHeight:m.maxHeight,top:m.top},children:r.jsx(Ee,{children:m.text})}),document.body)]})}export{kt as SequenceDiagram,yt as nextSequenceStepIndex,G as sequenceTooltipContent,xt as sequenceTooltipLayout};