@opencode-trace/plugin 0.0.4 → 0.0.6

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.
@@ -1,26 +1,38 @@
1
- import { StateManager } from "@opencode-trace/core/state";
1
+ import { ConfigManager } from "@opencode-trace/core/state";
2
+ export interface TracerConfig {
3
+ globalDir?: string;
4
+ localDir: string;
5
+ }
6
+ export type TraceScope = "global" | "local" | "session";
7
+ export type StorageLocation = "global" | "local";
8
+ export interface ScopeStatus {
9
+ globalEnabled: boolean;
10
+ localEnabled: boolean;
11
+ sessionEnabled: boolean | null;
12
+ effectiveEnabled: boolean;
13
+ storageLocation: StorageLocation;
14
+ globalDir: string;
15
+ localDir: string;
16
+ }
2
17
  export declare class TracePlugin {
3
18
  private origFetch;
4
19
  private ids;
5
20
  private writeQueue;
6
- private stateQueue;
7
- private stateManager;
8
21
  private interceptorInstalled;
9
22
  private globalDir;
10
23
  private localDir;
11
- private currentDir;
12
- constructor(globalDir: string, localDir: string);
13
- useGlobalDir(): void;
14
- useLocalDir(): void;
15
- getStorageStatus(): {
16
- mode: string;
17
- globalDir: string;
18
- localDir: string;
19
- currentDir: string;
20
- };
21
- tracedFetch(input: Parameters<typeof globalThis.fetch>[0], init?: Parameters<typeof globalThis.fetch>[1]): Promise<Response>;
24
+ private globalConfigManager;
25
+ private localConfigManager;
26
+ constructor(config: TracerConfig);
27
+ initStateManager(): Promise<void>;
28
+ getStateManager(): ConfigManager | null;
29
+ getGlobalConfigManager(): ConfigManager | null;
30
+ getLocalConfigManager(): ConfigManager | null;
31
+ resolveTraceDir(sessionId?: string): string;
32
+ shouldRecord(sessionId?: string): boolean;
33
+ getScopeStatus(sessionId?: string): ScopeStatus;
34
+ tracedFetch(input: Parameters<typeof globalThis.fetch>[0], init?: Parameters<typeof globalThis.fetch>[1], origFetch?: typeof globalThis.fetch): Promise<Response>;
22
35
  private getSessionId;
23
- private shouldRecord;
24
36
  private parseBody;
25
37
  private headersToObject;
26
38
  private classifyPurpose;
@@ -28,12 +40,14 @@ export declare class TracePlugin {
28
40
  private captureRequestMeta;
29
41
  private wrapStreamResponse;
30
42
  private recordResponse;
43
+ private buildTimelineEntry;
31
44
  private sanitizeStackTrace;
32
45
  private createTraceRecord;
46
+ private writeParsedCacheAsync;
47
+ flush(): Promise<void>;
48
+ wrap(fetch: typeof globalThis.fetch): typeof fetch;
33
49
  getInterceptor(): typeof fetch;
34
50
  installInterceptor(): void;
35
51
  uninstallInterceptor(): void;
36
- initStateManager(): Promise<void>;
37
- getStateManager(): StateManager | null;
38
52
  }
39
53
  //# sourceMappingURL=plugin-instance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-instance.d.ts","sourceRoot":"","sources":["../src/plugin-instance.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAQ1D,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;gBAEf,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAS/C,YAAY,IAAI,IAAI;IAKpB,WAAW,IAAI,IAAI;IAKnB,gBAAgB,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IASvF,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IA+BlI,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;YAQN,kBAAkB;IAqChC,OAAO,CAAC,kBAAkB;YAyBZ,cAAc;IAiC5B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IAuBzB,cAAc,IAAI,OAAO,KAAK;IAI9B,kBAAkB,IAAI,IAAI;IAO1B,oBAAoB,IAAI,IAAI;IAMtB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvC,eAAe,IAAI,YAAY,GAAG,IAAI;CAGvC"}
1
+ {"version":3,"file":"plugin-instance.d.ts","sourceRoot":"","sources":["../src/plugin-instance.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAM3D,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,oBAAoB,CAAkB;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,mBAAmB,CAA8B;IACzD,OAAO,CAAC,kBAAkB,CAA8B;gBAE5C,MAAM,EAAE,YAAY;IAU1B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvC,eAAe,IAAI,aAAa,GAAG,IAAI;IAIvC,sBAAsB,IAAI,aAAa,GAAG,IAAI;IAI9C,qBAAqB,IAAI,aAAa,GAAG,IAAI;IAI7C,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAe3C,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBzC,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW;IA6BzC,WAAW,CACf,KAAK,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC7C,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC7C,SAAS,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,GAClC,OAAO,CAAC,QAAQ,CAAC;IAuEpB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,YAAY;YAWN,kBAAkB;YAmElB,kBAAkB;YAgElB,cAAc;IAsF5B,OAAO,CAAC,kBAAkB;IAqD1B,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,qBAAqB;IAcvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,CAAC,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,GAAG,OAAO,KAAK;IAKlD,cAAc,IAAI,OAAO,KAAK;IAK9B,kBAAkB,IAAI,IAAI;IAO1B,oBAAoB,IAAI,IAAI;CAK7B"}
@@ -1,80 +1,131 @@
1
1
  import { AsyncWriteQueue } from "./write-queue.js";
2
- import { AsyncStateQueue } from "./state-queue.js";
3
- import { StateManager } from "@opencode-trace/core/state";
4
2
  import { redactHeaders } from "./redact.js";
5
- import { sanitizePath } from "@opencode-trace/core";
3
+ import { sanitizePath, parse, logger } from "@opencode-trace/core";
4
+ import { ConfigManager } from "@opencode-trace/core/state";
6
5
  import { homedir } from "node:os";
7
- import { logger } from "@opencode-trace/core";
6
+ import { join } from "node:path";
7
+ import { promises as fs } from "node:fs";
8
8
  export class TracePlugin {
9
9
  origFetch;
10
10
  ids = new Map();
11
11
  writeQueue;
12
- stateQueue;
13
- stateManager = null;
14
12
  interceptorInstalled = false;
15
13
  globalDir;
16
14
  localDir;
17
- currentDir;
18
- constructor(globalDir, localDir) {
19
- this.globalDir = globalDir;
20
- this.localDir = localDir;
21
- this.currentDir = globalDir; // Default to global
22
- this.origFetch = globalThis.fetch; // Will be updated in installInterceptor
23
- this.writeQueue = new AsyncWriteQueue(this.currentDir);
24
- this.stateQueue = new AsyncStateQueue();
25
- }
26
- useGlobalDir() {
27
- this.currentDir = this.globalDir;
28
- this.writeQueue = new AsyncWriteQueue(this.currentDir);
29
- }
30
- useLocalDir() {
31
- this.currentDir = this.localDir;
32
- this.writeQueue = new AsyncWriteQueue(this.currentDir);
33
- }
34
- getStorageStatus() {
15
+ globalConfigManager = null;
16
+ localConfigManager = null;
17
+ constructor(config) {
18
+ if (!config.localDir) {
19
+ throw new TypeError("TracerConfig.localDir is required");
20
+ }
21
+ this.globalDir = config.globalDir ?? join(homedir(), ".opencode-trace");
22
+ this.localDir = config.localDir;
23
+ this.origFetch = globalThis.fetch;
24
+ this.writeQueue = new AsyncWriteQueue(this.globalDir);
25
+ }
26
+ async initStateManager() {
27
+ this.globalConfigManager = new ConfigManager(this.globalDir);
28
+ await this.globalConfigManager.init();
29
+ this.localConfigManager = new ConfigManager(this.localDir);
30
+ await this.localConfigManager.init();
31
+ }
32
+ getStateManager() {
33
+ return this.globalConfigManager;
34
+ }
35
+ getGlobalConfigManager() {
36
+ return this.globalConfigManager;
37
+ }
38
+ getLocalConfigManager() {
39
+ return this.localConfigManager;
40
+ }
41
+ resolveTraceDir(sessionId) {
42
+ if (sessionId && this.globalConfigManager) {
43
+ const sessionPref = this.globalConfigManager.getSessionStoragePreference(sessionId);
44
+ if (sessionPref === "local")
45
+ return this.localDir;
46
+ if (sessionPref === "global")
47
+ return this.globalDir;
48
+ }
49
+ if (this.globalConfigManager) {
50
+ const globalPref = this.globalConfigManager.getStoragePreference();
51
+ if (globalPref === "local")
52
+ return this.localDir;
53
+ }
54
+ return this.globalDir;
55
+ }
56
+ shouldRecord(sessionId) {
57
+ if (!this.globalConfigManager)
58
+ return true;
59
+ const globalEnabled = this.globalConfigManager.getGlobalState("global_trace_enabled") === "true";
60
+ if (globalEnabled)
61
+ return true;
62
+ if (this.localConfigManager) {
63
+ const localEnabled = this.localConfigManager.getGlobalState("global_trace_enabled") === "true";
64
+ if (localEnabled)
65
+ return true;
66
+ }
67
+ if (!sessionId)
68
+ return false;
69
+ return this.globalConfigManager.getSessionEnabled(sessionId);
70
+ }
71
+ getScopeStatus(sessionId) {
72
+ const globalEnabled = this.globalConfigManager
73
+ ? this.globalConfigManager.getGlobalState("global_trace_enabled") === "true"
74
+ : false;
75
+ const localEnabled = this.localConfigManager
76
+ ? this.localConfigManager.getGlobalState("global_trace_enabled") === "true"
77
+ : false;
78
+ const sessionEnabled = sessionId && this.globalConfigManager
79
+ ? this.globalConfigManager.getSessionEnabled(sessionId)
80
+ : null;
81
+ const effectiveEnabled = this.shouldRecord(sessionId);
82
+ const traceDir = this.resolveTraceDir(sessionId);
83
+ const storageLocation = traceDir === this.localDir ? "local" : "global";
35
84
  return {
36
- mode: this.currentDir === this.globalDir ? "global" : "local",
85
+ globalEnabled,
86
+ localEnabled,
87
+ sessionEnabled,
88
+ effectiveEnabled,
89
+ storageLocation,
37
90
  globalDir: this.globalDir,
38
91
  localDir: this.localDir,
39
- currentDir: this.currentDir,
40
92
  };
41
93
  }
42
- async tracedFetch(input, init) {
94
+ async tracedFetch(input, init, origFetch) {
95
+ const delegate = origFetch ?? this.origFetch;
43
96
  const req = this.parseRequest(input, init);
44
97
  if (!req)
45
- return this.origFetch(input, init);
98
+ return delegate(input, init);
46
99
  const meta = await this.captureRequestMeta(req);
47
100
  if (!meta)
48
- return this.origFetch(req);
101
+ return delegate(req);
49
102
  let res;
50
103
  try {
51
- res = await this.origFetch(req);
104
+ res = await delegate(req);
52
105
  }
53
106
  catch (err) {
54
107
  const error = err instanceof Error
55
108
  ? { message: err.message, stack: this.sanitizeStackTrace(err.stack) }
56
109
  : { message: String(err) };
57
110
  const record = this.createTraceRecord(meta.seq, meta.purpose, meta.requestAt, meta.traceReq, null, error, { requestSentAt: meta.requestSentAt });
58
- this.writeQueue.enqueue(meta.session, meta.seq, record);
59
- this.stateQueue.enqueue(meta.session, meta.seq, record);
111
+ const timelineEntry = this.buildTimelineEntry(meta.session, meta.seq, meta.purpose, meta.requestAt, meta.traceReq, null, error);
112
+ this.writeQueue.enqueue(meta.session, meta.seq, record, timelineEntry, meta.traceDir);
113
+ this.writeParsedCacheAsync(meta.session, meta.seq, record, meta.traceDir);
60
114
  throw err;
61
115
  }
62
116
  let latencyMeta;
63
117
  if (meta.isStream && res.body) {
64
- res = this.wrapStreamResponse(res, meta.requestSentAt);
118
+ res = await this.wrapStreamResponse(res, meta.requestSentAt, meta.session, meta.seq, meta.traceDir);
65
119
  latencyMeta = res.__latencyMeta;
66
120
  }
67
- void this.recordResponse(meta.session, meta.seq, meta.purpose, meta.requestAt, meta.traceReq, res, latencyMeta);
121
+ void this.recordResponse(meta.session, meta.seq, meta.purpose, meta.requestAt, meta.traceReq, res, latencyMeta, meta.traceDir);
68
122
  return res;
69
123
  }
70
124
  getSessionId(req) {
71
- return req.headers.get("x-opencode-session") ?? req.headers.get("x-session-affinity") ?? req.headers.get("session_id") ?? undefined;
72
- }
73
- shouldRecord(sessionId) {
74
- if (!this.stateManager)
75
- return true;
76
- this.stateManager.reload();
77
- return this.stateManager.isTraceEnabled(sessionId);
125
+ return (req.headers.get("x-opencode-session") ??
126
+ req.headers.get("x-session-affinity") ??
127
+ req.headers.get("session_id") ??
128
+ undefined);
78
129
  }
79
130
  parseBody(text) {
80
131
  try {
@@ -86,11 +137,17 @@ export class TracePlugin {
86
137
  }
87
138
  headersToObject(headers) {
88
139
  const obj = {};
89
- headers.forEach((value, key) => { obj[key] = value; });
140
+ headers.forEach((value, key) => {
141
+ obj[key] = value;
142
+ });
90
143
  return obj;
91
144
  }
92
145
  classifyPurpose(raw) {
93
- if (typeof raw === "object" && raw !== null && !Array.isArray(raw) && Array.isArray(raw.tools) && raw.tools.length > 0)
146
+ if (typeof raw === "object" &&
147
+ raw !== null &&
148
+ !Array.isArray(raw) &&
149
+ Array.isArray(raw.tools) &&
150
+ raw.tools.length > 0)
94
151
  return "";
95
152
  return "[meta]";
96
153
  }
@@ -108,12 +165,19 @@ export class TracePlugin {
108
165
  return null;
109
166
  if (!this.shouldRecord(session))
110
167
  return null;
168
+ const traceDir = this.resolveTraceDir(session);
111
169
  const seq = (this.ids.get(session) ?? 0) + 1;
112
170
  this.ids.set(session, seq);
113
171
  const requestSentAt = performance.now();
114
172
  const requestAt = new Date().toISOString();
115
- const reqBodyText = await req.clone().text().catch((err) => {
116
- logger.error("Failed to clone request body", { url: req.url, error: String(err) });
173
+ const reqBodyText = await req
174
+ .clone()
175
+ .text()
176
+ .catch((err) => {
177
+ logger.error("Failed to clone request body", {
178
+ url: req.url,
179
+ error: String(err),
180
+ });
117
181
  return "";
118
182
  });
119
183
  const reqBody = this.parseBody(reqBodyText);
@@ -131,19 +195,60 @@ export class TracePlugin {
131
195
  headers: redactHeaders(this.headersToObject(req.headers)),
132
196
  body: reqBody,
133
197
  };
134
- return { session, seq, requestSentAt, requestAt, reqBody, isStream, purpose, traceReq };
198
+ return {
199
+ session,
200
+ seq,
201
+ requestSentAt,
202
+ requestAt,
203
+ reqBody,
204
+ isStream,
205
+ purpose,
206
+ traceReq,
207
+ traceDir,
208
+ };
135
209
  }
136
- wrapStreamResponse(res, requestSentAt) {
210
+ async wrapStreamResponse(res, requestSentAt, session, seq, traceDir) {
137
211
  const latencyMeta = { requestSentAt, firstTokenAt: null, lastTokenAt: null };
212
+ const sessionDir = join(traceDir, session);
213
+ const sseTmpPath = join(sessionDir, `${seq}.sse.tmp`);
214
+ const sseFinalPath = join(sessionDir, `${seq}.sse`);
215
+ await fs.mkdir(sessionDir, { recursive: true });
216
+ const fileHandle = await fs.open(sseTmpPath, "w");
217
+ let bytesWritten = 0;
138
218
  const transform = new TransformStream({
139
- transform(chunk, controller) {
219
+ async transform(chunk, controller) {
140
220
  if (latencyMeta.firstTokenAt === null) {
141
221
  latencyMeta.firstTokenAt = performance.now();
142
222
  }
223
+ try {
224
+ await fileHandle.write(chunk);
225
+ bytesWritten += chunk.byteLength;
226
+ }
227
+ catch (err) {
228
+ logger.error("Failed to write SSE chunk", {
229
+ seq,
230
+ error: String(err),
231
+ });
232
+ }
143
233
  controller.enqueue(chunk);
144
234
  },
145
- flush() {
235
+ async flush() {
146
236
  latencyMeta.lastTokenAt = performance.now();
237
+ try {
238
+ await fileHandle.close();
239
+ if (bytesWritten > 0) {
240
+ await fs.rename(sseTmpPath, sseFinalPath);
241
+ }
242
+ else {
243
+ await fs.unlink(sseTmpPath).catch(() => { });
244
+ }
245
+ }
246
+ catch (err) {
247
+ logger.error("Failed to finalize SSE file", {
248
+ seq,
249
+ error: String(err),
250
+ });
251
+ }
147
252
  },
148
253
  });
149
254
  const wrappedBody = res.body.pipeThrough(transform);
@@ -155,7 +260,8 @@ export class TracePlugin {
155
260
  wrappedRes.__latencyMeta = latencyMeta;
156
261
  return wrappedRes;
157
262
  }
158
- async recordResponse(session, seq, purpose, requestAt, traceReq, res, latencyMeta) {
263
+ async recordResponse(session, seq, purpose, requestAt, traceReq, res, latencyMeta, traceDir) {
264
+ const dir = traceDir ?? this.globalDir;
159
265
  try {
160
266
  const resBodyText = await res.clone().text();
161
267
  const resBody = this.parseBody(resBodyText);
@@ -165,36 +271,88 @@ export class TracePlugin {
165
271
  headers: redactHeaders(this.headersToObject(res.headers)),
166
272
  body: resBody,
167
273
  };
168
- const normalizedLatency = latencyMeta ? {
169
- requestSentAt: latencyMeta.requestSentAt,
170
- firstTokenAt: latencyMeta.firstTokenAt ?? undefined,
171
- lastTokenAt: latencyMeta.lastTokenAt ?? undefined,
172
- } : undefined;
274
+ const normalizedLatency = latencyMeta
275
+ ? {
276
+ requestSentAt: latencyMeta.requestSentAt,
277
+ firstTokenAt: latencyMeta.firstTokenAt ?? undefined,
278
+ lastTokenAt: latencyMeta.lastTokenAt ?? undefined,
279
+ }
280
+ : undefined;
173
281
  const record = this.createTraceRecord(seq, purpose, requestAt, traceReq, traceRes, null, normalizedLatency);
174
- this.writeQueue.enqueue(session, seq, record);
175
- this.stateQueue.enqueue(session, seq, record);
282
+ const timelineEntry = this.buildTimelineEntry(session, seq, purpose, requestAt, traceReq, traceRes, null);
283
+ this.writeQueue.enqueue(session, seq, record, timelineEntry, dir);
284
+ this.writeParsedCacheAsync(session, seq, record, dir);
176
285
  }
177
286
  catch (err) {
178
287
  const error = err instanceof Error
179
288
  ? { message: err.message, stack: this.sanitizeStackTrace(err.stack) }
180
289
  : { message: String(err) };
181
- const normalizedLatency = latencyMeta ? {
182
- requestSentAt: latencyMeta.requestSentAt,
183
- firstTokenAt: latencyMeta.firstTokenAt ?? undefined,
184
- lastTokenAt: latencyMeta.lastTokenAt ?? undefined,
185
- } : undefined;
290
+ const normalizedLatency = latencyMeta
291
+ ? {
292
+ requestSentAt: latencyMeta.requestSentAt,
293
+ firstTokenAt: latencyMeta.firstTokenAt ?? undefined,
294
+ lastTokenAt: latencyMeta.lastTokenAt ?? undefined,
295
+ }
296
+ : undefined;
186
297
  const record = this.createTraceRecord(seq, purpose, requestAt, traceReq, null, error, normalizedLatency);
187
- this.writeQueue.enqueue(session, seq, record);
188
- this.stateQueue.enqueue(session, seq, record);
298
+ const timelineEntry = this.buildTimelineEntry(session, seq, purpose, requestAt, traceReq, null, error);
299
+ this.writeQueue.enqueue(session, seq, record, timelineEntry, dir);
300
+ this.writeParsedCacheAsync(session, seq, record, dir);
189
301
  }
190
302
  }
303
+ buildTimelineEntry(_session, seq, purpose, requestAt, traceReq, traceRes, error) {
304
+ const responseAt = new Date().toISOString();
305
+ const requestTime = new Date(requestAt).getTime();
306
+ const responseTime = new Date(responseAt).getTime();
307
+ const totalDurationMs = responseTime - requestTime;
308
+ let provider = null;
309
+ let model = null;
310
+ let inputTokens = null;
311
+ let outputTokens = null;
312
+ if (traceRes?.body && typeof traceRes.body === "object" && traceRes.body !== null) {
313
+ const body = traceRes.body;
314
+ if (typeof body.model === "string")
315
+ model = body.model;
316
+ if (body.usage && typeof body.usage === "object") {
317
+ const usage = body.usage;
318
+ if (typeof usage.input_tokens === "number")
319
+ inputTokens = usage.input_tokens;
320
+ if (typeof usage.output_tokens === "number")
321
+ outputTokens = usage.output_tokens;
322
+ if (typeof usage.prompt_tokens === "number")
323
+ inputTokens = usage.prompt_tokens;
324
+ if (typeof usage.completion_tokens === "number")
325
+ outputTokens = usage.completion_tokens;
326
+ }
327
+ }
328
+ if (traceReq.url.includes("openai.com") || traceReq.url.includes("api.openai")) {
329
+ provider = "openai";
330
+ }
331
+ else if (traceReq.url.includes("anthropic.com") || traceReq.url.includes("api.anthropic")) {
332
+ provider = "anthropic";
333
+ }
334
+ return {
335
+ seq,
336
+ url: traceReq.url,
337
+ method: traceReq.method,
338
+ purpose,
339
+ requestAt,
340
+ responseAt: error ? null : responseAt,
341
+ status: error ? 0 : (traceRes?.status ?? 0),
342
+ provider,
343
+ model,
344
+ inputTokens,
345
+ outputTokens,
346
+ totalDurationMs,
347
+ };
348
+ }
191
349
  sanitizeStackTrace(stack) {
192
350
  if (!stack)
193
351
  return undefined;
194
352
  const userHome = homedir();
195
353
  return sanitizePath(stack, userHome)
196
- .replace(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g, '[IP]')
197
- .replace(/:\d{4,5}(?=[\/\\\s]|$)/g, ':[PORT]');
354
+ .replace(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g, "[IP]")
355
+ .replace(/:\d{4,5}(?=[\/\\\s]|$)/g, ":[PORT]");
198
356
  }
199
357
  createTraceRecord(seq, purpose, requestAt, traceReq, traceRes, error, latency) {
200
358
  return {
@@ -210,14 +368,36 @@ export class TracePlugin {
210
368
  lastTokenAt: latency?.lastTokenAt ?? undefined,
211
369
  };
212
370
  }
371
+ writeParsedCacheAsync(session, seq, record, traceDir) {
372
+ setImmediate(() => {
373
+ try {
374
+ const parsed = parse.detectAndParse(record);
375
+ this.writeQueue.writeParsedCache(session, seq, {
376
+ ...parsed,
377
+ _pcv: parse.PARSED_CACHE_VERSION,
378
+ }, traceDir);
379
+ }
380
+ catch {
381
+ // fail silently — parsed cache is optional
382
+ }
383
+ });
384
+ }
385
+ async flush() {
386
+ await this.writeQueue.flush();
387
+ }
388
+ wrap(fetch) {
389
+ const capturedOrig = fetch;
390
+ return async (input, init) => this.tracedFetch(input, init, capturedOrig);
391
+ }
213
392
  getInterceptor() {
214
- return this.tracedFetch.bind(this);
393
+ const capturedOrig = this.origFetch;
394
+ return async (input, init) => this.tracedFetch(input, init, capturedOrig);
215
395
  }
216
396
  installInterceptor() {
217
397
  if (this.interceptorInstalled)
218
398
  return;
219
- this.origFetch = globalThis.fetch; // Capture current fetch at installation time
220
- globalThis.fetch = this.getInterceptor();
399
+ this.origFetch = globalThis.fetch;
400
+ globalThis.fetch = async (input, init) => this.tracedFetch(input, init, this.origFetch);
221
401
  this.interceptorInstalled = true;
222
402
  }
223
403
  uninstallInterceptor() {
@@ -226,14 +406,5 @@ export class TracePlugin {
226
406
  globalThis.fetch = this.origFetch;
227
407
  this.interceptorInstalled = false;
228
408
  }
229
- async initStateManager() {
230
- this.stateManager = new StateManager(this.globalDir);
231
- await this.stateManager.init();
232
- this.stateManager.sync();
233
- this.stateQueue.setStateManager(this.stateManager);
234
- }
235
- getStateManager() {
236
- return this.stateManager;
237
- }
238
409
  }
239
410
  //# sourceMappingURL=plugin-instance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-instance.js","sourceRoot":"","sources":["../src/plugin-instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C,MAAM,OAAO,WAAW;IACd,SAAS,CAAe;IACxB,GAAG,GAAwB,IAAI,GAAG,EAAE,CAAC;IACrC,UAAU,CAAkB;IAC5B,UAAU,CAAkB;IAC5B,YAAY,GAAwB,IAAI,CAAC;IACzC,oBAAoB,GAAY,KAAK,CAAC;IACtC,SAAS,CAAS;IAClB,QAAQ,CAAS;IACjB,UAAU,CAAS;IAE3B,YAAY,SAAiB,EAAE,QAAgB;QAC7C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,oBAAoB;QACjD,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,wCAAwC;QAC3E,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAC1C,CAAC;IAED,YAAY;QACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,WAAW;QACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;YAC7D,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA6C,EAAE,IAA6C;QAC5G,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtC,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK;gBAChC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACrE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACjJ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACxD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACxD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,IAAI,WAA2G,CAAC;QAChH,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,WAAW,GAAI,GAAW,CAAC,aAAa,CAAC;QAC3C,CAAC;QAED,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;QAEhH,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,YAAY,CAAC,GAAY;QAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC;IACtI,CAAC;IAEO,YAAY,CAAC,SAAkB;QACrC,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACrD,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,IAAI,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAgB;QACtC,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,eAAe,CAAC,GAAY;QAClC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAE,GAAW,CAAC,KAAK,CAAC,IAAK,GAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QACpJ,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,YAAY,CAAC,KAA6C,EAAE,IAA6C;QAC/G,IAAI,CAAC;YACH,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,GAAY;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAE7C,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE3B,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE3C,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACzD,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAE5C,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG;YACf,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACzD,IAAI,EAAE,OAAO;SACd,CAAC;QAEF,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC1F,CAAC;IAEO,kBAAkB,CAAC,GAAa,EAAE,aAAqB;QAC7D,MAAM,WAAW,GAAuF,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAEjK,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC;YACpC,SAAS,CAAC,KAAK,EAAE,UAAU;gBACzB,IAAI,WAAW,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;oBACtC,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAC/C,CAAC;gBACD,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YACD,KAAK;gBACH,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;YAC9C,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,GAAG,CAAC,IAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,QAAQ,CAAC,WAAW,EAAE;YAC3C,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;QACF,UAAkB,CAAC,aAAa,GAAG,WAAW,CAAC;QAChD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,GAAW,EAAE,OAAe,EAAE,SAAiB,EAAE,QAAsB,EAAE,GAAa,EAAE,WAAkG;QACtO,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG;gBACf,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACzD,IAAI,EAAE,OAAO;aACd,CAAC;YACF,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC;gBACtC,aAAa,EAAE,WAAW,CAAC,aAAa;gBACxC,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,SAAS;gBACnD,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,SAAS;aAClD,CAAC,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAC;YAC5G,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK;gBAChC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACrE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,CAAC;gBACtC,aAAa,EAAE,WAAW,CAAC,aAAa;gBACxC,YAAY,EAAE,WAAW,CAAC,YAAY,IAAI,SAAS;gBACnD,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,SAAS;aAClD,CAAC,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;YACzG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,KAAc;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;QAC3B,OAAO,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC;aACjC,OAAO,CAAC,yCAAyC,EAAE,MAAM,CAAC;aAC1D,OAAO,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,iBAAiB,CACvB,GAAW,EACX,OAAe,EACf,SAAiB,EACjB,QAAsB,EACtB,QAA8B,EAC9B,KAAiD,EACjD,OAAiF;QAEjF,OAAO;YACL,EAAE,EAAE,GAAG;YACP,OAAO;YACP,SAAS;YACT,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,QAAQ;YAClB,KAAK;YACL,aAAa,EAAE,OAAO,EAAE,aAAa;YACrC,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,SAAS;YAChD,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,SAAS;SAC/C,CAAC;IACJ,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,oBAAoB;YAAE,OAAO;QACtC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,6CAA6C;QAChF,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAAE,OAAO;QACvC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF"}
1
+ {"version":3,"file":"plugin-instance.js","sourceRoot":"","sources":["../src/plugin-instance.ts"],"names":[],"mappings":"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"}