zeitzeuge 0.3.2 → 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/analysis/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,eAAe,EAA4C,MAAM,YAAY,CAAC;AAE7G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAM/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AA0C3C;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,OAAO,EAAE,CAAC,CAoCpB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,OAAO,EAAE,CAAC,CAgCpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/analysis/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAM/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAwC3C;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,OAAO,EAAE,CAAC,CAoCpB;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,OAAO,EAAE,CAAC,CAgCpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIjD"}
package/dist/cli.js CHANGED
@@ -260,20 +260,15 @@ class TodoProgressRenderer {
260
260
  printedHeader = false;
261
261
  constructor(spinner) {
262
262
  this.spinner = spinner;
263
- this.baseSpinnerText = spinner?.text;
263
+ this.baseSpinnerText = spinner.text;
264
264
  }
265
265
  printHeaderOnce() {
266
266
  if (this.printedHeader)
267
267
  return;
268
268
  this.printedHeader = true;
269
- const header = "Deep Agent progress:";
270
- if (this.spinner) {
271
- this.spinner.stopAndPersist({ symbol: " ", text: header });
272
- this.spinner.start();
273
- } else {
274
- console.log(`
275
- ${header}`);
276
- }
269
+ const header = "Performance analysis progress:";
270
+ this.spinner.stopAndPersist({ symbol: " ", text: header });
271
+ this.spinner.start();
277
272
  }
278
273
  handleChunk(chunk) {
279
274
  const todos = extractTodosFromStreamChunk(chunk);
@@ -287,22 +282,14 @@ ${header}`);
287
282
  this.lastStatusByKey.set(key, nextStatus);
288
283
  if (nextStatus === "completed" && prevStatus !== "completed") {
289
284
  this.printHeaderOnce();
290
- if (this.spinner) {
291
- this.spinner.stopAndPersist({ symbol: " ", text: ` ✓ ${todo.content}` });
292
- this.spinner.start();
293
- } else {
294
- console.log(` ✓ ${todo.content}`);
295
- }
285
+ this.spinner.stopAndPersist({ symbol: " ", text: ` ✓ ${todo.content}` });
286
+ this.spinner.start();
296
287
  }
297
288
  if (nextStatus === "in_progress" && this.lastInProgressKey !== key) {
298
289
  this.lastInProgressKey = key;
299
290
  this.printHeaderOnce();
300
- if (this.spinner) {
301
- const base = this.baseSpinnerText ?? this.spinner.text;
302
- this.spinner.text = base ? `${base} (${todo.content})` : todo.content;
303
- } else {
304
- console.log(` → Next: ${todo.content}`);
305
- }
291
+ const base = this.baseSpinnerText ?? this.spinner.text;
292
+ this.spinner.text = base ? `${base} (${todo.content})` : todo.content;
306
293
  }
307
294
  }
308
295
  }
@@ -330,7 +317,9 @@ __export(exports_agent, {
330
317
  analyzeTestPerformance: () => analyzeTestPerformance,
331
318
  analyze: () => analyze
332
319
  });
333
- import { createDeepAgent } from "deepagents";
320
+ import {
321
+ createDeepAgent
322
+ } from "deepagents";
334
323
  import { providerStrategy } from "langchain";
335
324
  async function invokeWithTodoStreaming(agent, userMessage, spinner) {
336
325
  const renderer = new TodoProgressRenderer(spinner);
@@ -1845,7 +1834,7 @@ async function main() {
1845
1834
  throw new Error(`Failed to create workspace.
1846
1835
  ` + (err instanceof Error ? ` Details: ${err.message}` : ""));
1847
1836
  }
1848
- const agentSpinner = createSpinner("Deep Agent analyzing...");
1837
+ const agentSpinner = createSpinner("Analyzing...");
1849
1838
  let findings;
1850
1839
  try {
1851
1840
  findings = await analyze(model, workspace.backend, agentSpinner);
@@ -1,11 +1,11 @@
1
1
  import type { Ora } from 'ora';
2
2
  export declare class TodoProgressRenderer {
3
- private spinner?;
3
+ private spinner;
4
4
  private lastStatusByKey;
5
5
  private lastInProgressKey;
6
6
  private baseSpinnerText;
7
7
  private printedHeader;
8
- constructor(spinner?: Ora | undefined);
8
+ constructor(spinner: Ora);
9
9
  private printHeaderOnce;
10
10
  handleChunk(chunk: unknown): void;
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/output/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAU/B,qBAAa,oBAAoB;IAMjB,OAAO,CAAC,OAAO,CAAC;IAL5B,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAS;gBAEV,OAAO,CAAC,EAAE,GAAG,YAAA;IAIjC,OAAO,CAAC,eAAe;IAavB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CAmCpC"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/output/progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAU/B,qBAAa,oBAAoB;IAMnB,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,aAAa,CAAS;gBAEV,OAAO,EAAE,GAAG;IAIhC,OAAO,CAAC,eAAe;IASvB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CA2BlC"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,iaA2BjB,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;iBA0BxB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;iBAEzB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,iaA2BjB,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;iBAwBxB,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;iBAEzB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { z } from "zod";
2
- import { FindingSchema } from "./schema";
1
+ import { z } from 'zod';
2
+ import { FindingSchema } from './schema';
3
3
  /**
4
4
  * Shared TypeScript types for zeitzeuge.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"heap-profile-parser.d.ts","sourceRoot":"","sources":["../../src/vitest/heap-profile-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EAId,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CA0E5F"}
1
+ {"version":3,"file":"heap-profile-parser.d.ts","sourceRoot":"","sources":["../../src/vitest/heap-profile-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EAId,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,kBAAkB,CA2E5F"}
@@ -259,20 +259,15 @@ class TodoProgressRenderer {
259
259
  printedHeader = false;
260
260
  constructor(spinner) {
261
261
  this.spinner = spinner;
262
- this.baseSpinnerText = spinner?.text;
262
+ this.baseSpinnerText = spinner.text;
263
263
  }
264
264
  printHeaderOnce() {
265
265
  if (this.printedHeader)
266
266
  return;
267
267
  this.printedHeader = true;
268
- const header = "Deep Agent progress:";
269
- if (this.spinner) {
270
- this.spinner.stopAndPersist({ symbol: " ", text: header });
271
- this.spinner.start();
272
- } else {
273
- console.log(`
274
- ${header}`);
275
- }
268
+ const header = "Performance analysis progress:";
269
+ this.spinner.stopAndPersist({ symbol: " ", text: header });
270
+ this.spinner.start();
276
271
  }
277
272
  handleChunk(chunk) {
278
273
  const todos = extractTodosFromStreamChunk(chunk);
@@ -286,22 +281,14 @@ ${header}`);
286
281
  this.lastStatusByKey.set(key, nextStatus);
287
282
  if (nextStatus === "completed" && prevStatus !== "completed") {
288
283
  this.printHeaderOnce();
289
- if (this.spinner) {
290
- this.spinner.stopAndPersist({ symbol: " ", text: ` ✓ ${todo.content}` });
291
- this.spinner.start();
292
- } else {
293
- console.log(` ✓ ${todo.content}`);
294
- }
284
+ this.spinner.stopAndPersist({ symbol: " ", text: ` ✓ ${todo.content}` });
285
+ this.spinner.start();
295
286
  }
296
287
  if (nextStatus === "in_progress" && this.lastInProgressKey !== key) {
297
288
  this.lastInProgressKey = key;
298
289
  this.printHeaderOnce();
299
- if (this.spinner) {
300
- const base = this.baseSpinnerText ?? this.spinner.text;
301
- this.spinner.text = base ? `${base} (${todo.content})` : todo.content;
302
- } else {
303
- console.log(` → Next: ${todo.content}`);
304
- }
290
+ const base = this.baseSpinnerText ?? this.spinner.text;
291
+ this.spinner.text = base ? `${base} (${todo.content})` : todo.content;
305
292
  }
306
293
  }
307
294
  }
@@ -329,7 +316,9 @@ __export(exports_agent, {
329
316
  analyzeTestPerformance: () => analyzeTestPerformance,
330
317
  analyze: () => analyze
331
318
  });
332
- import { createDeepAgent } from "deepagents";
319
+ import {
320
+ createDeepAgent
321
+ } from "deepagents";
333
322
  import { providerStrategy } from "langchain";
334
323
  async function invokeWithTodoStreaming(agent, userMessage, spinner) {
335
324
  const renderer = new TodoProgressRenderer(spinner);
@@ -1371,7 +1360,7 @@ function classifyScript(scriptUrl, projectRoot, testFiles) {
1371
1360
  // package.json
1372
1361
  var package_default = {
1373
1362
  name: "zeitzeuge",
1374
- version: "0.3.0",
1363
+ version: "0.3.2",
1375
1364
  description: "A deepagent to witnessing slowdowns in your test runs.",
1376
1365
  keywords: [
1377
1366
  "analysis",
@@ -1415,6 +1404,7 @@ var package_default = {
1415
1404
  "fmt:check": "oxfmt --check",
1416
1405
  lint: "bun ./node_modules/oxlint/dist/cli.js",
1417
1406
  "lint:fix": "bun ./node_modules/oxlint/dist/cli.js --fix",
1407
+ prepare: "simple-git-hooks",
1418
1408
  test: "bun test"
1419
1409
  },
1420
1410
  dependencies: {
@@ -1435,13 +1425,27 @@ var package_default = {
1435
1425
  devDependencies: {
1436
1426
  "@types/bun": "latest",
1437
1427
  "@types/yargs": "^17",
1428
+ "lint-staged": "^16.2.7",
1438
1429
  oxfmt: "^0.32.0",
1439
1430
  oxlint: "^1.47.0",
1431
+ "simple-git-hooks": "^2.13.1",
1440
1432
  typescript: "^5"
1441
1433
  },
1442
1434
  peerDependencies: {
1443
1435
  vitest: ">=3.1.0"
1444
1436
  },
1437
+ "simple-git-hooks": {
1438
+ "pre-commit": "bunx lint-staged"
1439
+ },
1440
+ "lint-staged": {
1441
+ "*.{js,jsx,ts,tsx,mjs,cjs}": [
1442
+ "oxfmt",
1443
+ "bun ./node_modules/oxlint/dist/cli.js"
1444
+ ],
1445
+ "*.{json,md,css,html,yaml,yml}": [
1446
+ "oxfmt"
1447
+ ]
1448
+ },
1445
1449
  engines: {
1446
1450
  node: ">=24"
1447
1451
  }
@@ -1509,7 +1513,7 @@ class ZeitZeugeReporter {
1509
1513
  wsSpinner?.succeed("zeitzeuge: Workspace ready");
1510
1514
  if (this.options.analyzeOnFinish) {
1511
1515
  const agentSpinner = ora2({
1512
- text: "zeitzeuge: Deep Agent analyzing test performance...",
1516
+ text: "zeitzeuge: Analyzing test performance...",
1513
1517
  color: "cyan",
1514
1518
  isEnabled: !this.isCI
1515
1519
  }).start();
@@ -1749,6 +1753,9 @@ zeitzeuge: Performance Analysis
1749
1753
  }
1750
1754
 
1751
1755
  // src/vitest/plugin.ts
1756
+ function uniq(values) {
1757
+ return Array.from(new Set(values));
1758
+ }
1752
1759
  function zeitzeuge(options = {}) {
1753
1760
  const {
1754
1761
  enabled = true,
@@ -1759,47 +1766,54 @@ function zeitzeuge(options = {}) {
1759
1766
  verbose = false,
1760
1767
  projectRoot = process.cwd()
1761
1768
  } = options;
1769
+ let reporterAttached = false;
1762
1770
  return {
1763
1771
  name: "vitest:zeitzeuge",
1764
1772
  configureVitest(context) {
1765
1773
  if (!enabled)
1766
1774
  return;
1767
- const { vitest } = context;
1775
+ const { vitest, project } = context;
1768
1776
  const resolvedProfileDir = resolve3(profileDir);
1769
1777
  try {
1770
1778
  mkdirSync2(resolvedProfileDir, { recursive: true });
1771
1779
  } catch {}
1780
+ const targetConfig = project?.config ?? vitest.config;
1772
1781
  const cpuProfArgs = ["--cpu-prof", `--cpu-prof-dir=${resolvedProfileDir}`];
1773
1782
  const heapProfArgs = heapProf ? ["--heap-prof", `--heap-prof-dir=${resolvedProfileDir}`] : [];
1774
1783
  const profilingArgs = [...cpuProfArgs, ...heapProfArgs];
1775
- const existingArgv = vitest.config.execArgv ?? [];
1776
- vitest.config.execArgv = [...existingArgv, ...profilingArgs];
1777
- vitest.config.pool = "forks";
1778
- if (!vitest.config.poolOptions) {
1779
- vitest.config.poolOptions = {};
1784
+ const existingArgv = targetConfig.execArgv ?? [];
1785
+ targetConfig.execArgv = uniq([...existingArgv, ...profilingArgs]);
1786
+ targetConfig.pool = "forks";
1787
+ if (!targetConfig.poolOptions) {
1788
+ targetConfig.poolOptions = {};
1780
1789
  }
1781
- if (!vitest.config.poolOptions.forks) {
1782
- vitest.config.poolOptions.forks = {};
1790
+ if (!targetConfig.poolOptions.forks) {
1791
+ targetConfig.poolOptions.forks = {};
1783
1792
  }
1784
- const existingForksArgv = vitest.config.poolOptions.forks.execArgv ?? [];
1785
- vitest.config.poolOptions.forks.execArgv = [...existingForksArgv, ...profilingArgs];
1786
- vitest.config.fileParallelism = false;
1787
- const reporter = new ZeitZeugeReporter({
1788
- output: resolve3(output),
1789
- profileDir: resolvedProfileDir,
1790
- analyzeOnFinish,
1791
- verbose,
1792
- projectRoot: resolve3(projectRoot)
1793
- });
1794
- if (Array.isArray(vitest.config.reporters)) {
1795
- vitest.config.reporters.push(reporter);
1796
- } else {
1797
- vitest.config.reporters = [reporter];
1793
+ const existingForksArgv = targetConfig.poolOptions.forks.execArgv ?? [];
1794
+ targetConfig.poolOptions.forks.execArgv = uniq([...existingForksArgv, ...profilingArgs]);
1795
+ targetConfig.fileParallelism = false;
1796
+ if (!reporterAttached) {
1797
+ const reporter = new ZeitZeugeReporter({
1798
+ output: resolve3(output),
1799
+ profileDir: resolvedProfileDir,
1800
+ analyzeOnFinish,
1801
+ verbose,
1802
+ projectRoot: resolve3(projectRoot)
1803
+ });
1804
+ if (Array.isArray(vitest.config.reporters)) {
1805
+ vitest.config.reporters.push(reporter);
1806
+ } else {
1807
+ vitest.config.reporters = [reporter];
1808
+ }
1809
+ reporterAttached = true;
1798
1810
  }
1799
1811
  if (verbose) {
1812
+ const projectName = project?.name ? String(project.name) : "(root)";
1800
1813
  console.log(`[zeitzeuge] Plugin enabled — CPU profiling to ${resolvedProfileDir}`);
1801
- console.log(`[zeitzeuge] execArgv: ${JSON.stringify(vitest.config.execArgv)}`);
1802
- console.log(`[zeitzeuge] pool: ${vitest.config.pool}`);
1814
+ console.log(`[zeitzeuge] project: ${projectName}`);
1815
+ console.log(`[zeitzeuge] execArgv: ${JSON.stringify(targetConfig.execArgv)}`);
1816
+ console.log(`[zeitzeuge] pool: ${targetConfig.pool}`);
1803
1817
  }
1804
1818
  }
1805
1819
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/vitest/plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,sBAA2B;;6BAcjC,GAAG;EAgE/B"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/vitest/plugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAMzD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,sBAA2B;;6BAkBjC,GAAG;EA2E/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/vitest/workspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAKrE,OAAO,KAAK,EACV,iBAAiB,EAEjB,WAAW,EACX,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,OAAO,EAAE,eAAe,CAAC;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAQD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAqNhC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,CA+B9E"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/vitest/workspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAKrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzF,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,OAAO,EAAE,eAAe,CAAC;IACzB,iDAAiD;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAQD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAqNhC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,WAAW,EAAE,CA+B9E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zeitzeuge",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "A deepagent to witnessing slowdowns in your test runs.",
5
5
  "keywords": [
6
6
  "analysis",