agent-replay 0.1.0

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 (109) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +113 -0
  3. package/bin/agent-replay.js +20 -0
  4. package/build/client/_app/immutable/assets/0.D9-tUsfl.css +1 -0
  5. package/build/client/_app/immutable/assets/0.D9-tUsfl.css.br +0 -0
  6. package/build/client/_app/immutable/assets/0.D9-tUsfl.css.gz +0 -0
  7. package/build/client/_app/immutable/assets/2.Ch4de4ty.css +1 -0
  8. package/build/client/_app/immutable/assets/2.Ch4de4ty.css.br +0 -0
  9. package/build/client/_app/immutable/assets/2.Ch4de4ty.css.gz +0 -0
  10. package/build/client/_app/immutable/assets/3.BP1aEJ1A.css +1 -0
  11. package/build/client/_app/immutable/assets/3.BP1aEJ1A.css.br +0 -0
  12. package/build/client/_app/immutable/assets/3.BP1aEJ1A.css.gz +0 -0
  13. package/build/client/_app/immutable/chunks/8LyLqy0e.js +1 -0
  14. package/build/client/_app/immutable/chunks/8LyLqy0e.js.br +3 -0
  15. package/build/client/_app/immutable/chunks/8LyLqy0e.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/BmaMsIzI.js +3 -0
  17. package/build/client/_app/immutable/chunks/BmaMsIzI.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/BmaMsIzI.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/BoUXsunA.js +1 -0
  20. package/build/client/_app/immutable/chunks/BoUXsunA.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/BoUXsunA.js.gz +0 -0
  22. package/build/client/_app/immutable/chunks/CCa20sJM.js +1 -0
  23. package/build/client/_app/immutable/chunks/CCa20sJM.js.br +0 -0
  24. package/build/client/_app/immutable/chunks/CCa20sJM.js.gz +0 -0
  25. package/build/client/_app/immutable/chunks/CP-o74wi.js +2 -0
  26. package/build/client/_app/immutable/chunks/CP-o74wi.js.br +0 -0
  27. package/build/client/_app/immutable/chunks/CP-o74wi.js.gz +0 -0
  28. package/build/client/_app/immutable/chunks/CZWwZlGk.js +1 -0
  29. package/build/client/_app/immutable/chunks/CZWwZlGk.js.br +0 -0
  30. package/build/client/_app/immutable/chunks/CZWwZlGk.js.gz +0 -0
  31. package/build/client/_app/immutable/chunks/D6SnDtAs.js +1 -0
  32. package/build/client/_app/immutable/chunks/D6SnDtAs.js.br +0 -0
  33. package/build/client/_app/immutable/chunks/D6SnDtAs.js.gz +0 -0
  34. package/build/client/_app/immutable/chunks/DApgqo7x.js +1 -0
  35. package/build/client/_app/immutable/chunks/DApgqo7x.js.br +0 -0
  36. package/build/client/_app/immutable/chunks/DApgqo7x.js.gz +0 -0
  37. package/build/client/_app/immutable/chunks/DCcb0kkP.js +1 -0
  38. package/build/client/_app/immutable/chunks/DCcb0kkP.js.br +0 -0
  39. package/build/client/_app/immutable/chunks/DCcb0kkP.js.gz +0 -0
  40. package/build/client/_app/immutable/entry/app.CelDjTDX.js +2 -0
  41. package/build/client/_app/immutable/entry/app.CelDjTDX.js.br +0 -0
  42. package/build/client/_app/immutable/entry/app.CelDjTDX.js.gz +0 -0
  43. package/build/client/_app/immutable/entry/start.Bo8U6P_2.js +1 -0
  44. package/build/client/_app/immutable/entry/start.Bo8U6P_2.js.br +2 -0
  45. package/build/client/_app/immutable/entry/start.Bo8U6P_2.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/0.DdgnJbSm.js +1 -0
  47. package/build/client/_app/immutable/nodes/0.DdgnJbSm.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/0.DdgnJbSm.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/1.DUCL1Cc_.js +1 -0
  50. package/build/client/_app/immutable/nodes/1.DUCL1Cc_.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/1.DUCL1Cc_.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/2.FNRc_Nvw.js +1 -0
  53. package/build/client/_app/immutable/nodes/2.FNRc_Nvw.js.br +0 -0
  54. package/build/client/_app/immutable/nodes/2.FNRc_Nvw.js.gz +0 -0
  55. package/build/client/_app/immutable/nodes/3.CaEmUkA2.js +29 -0
  56. package/build/client/_app/immutable/nodes/3.CaEmUkA2.js.br +0 -0
  57. package/build/client/_app/immutable/nodes/3.CaEmUkA2.js.gz +0 -0
  58. package/build/client/_app/version.json +1 -0
  59. package/build/client/_app/version.json.br +0 -0
  60. package/build/client/_app/version.json.gz +0 -0
  61. package/build/client/favicon.svg +13 -0
  62. package/build/client/favicon.svg.br +0 -0
  63. package/build/client/favicon.svg.gz +0 -0
  64. package/build/client/robots.txt +3 -0
  65. package/build/client/screenshot.png +0 -0
  66. package/build/env.js +94 -0
  67. package/build/handler.js +1494 -0
  68. package/build/index.js +345 -0
  69. package/build/server/chunks/0-CkGitm9W.js +9 -0
  70. package/build/server/chunks/0-CkGitm9W.js.map +1 -0
  71. package/build/server/chunks/1-BU8Hl3FY.js +9 -0
  72. package/build/server/chunks/1-BU8Hl3FY.js.map +1 -0
  73. package/build/server/chunks/2-DenZJmTh.js +27 -0
  74. package/build/server/chunks/2-DenZJmTh.js.map +1 -0
  75. package/build/server/chunks/3-Df2VKXDy.js +73 -0
  76. package/build/server/chunks/3-Df2VKXDy.js.map +1 -0
  77. package/build/server/chunks/_layout.svelte-BK7oCPlN.js +26 -0
  78. package/build/server/chunks/_layout.svelte-BK7oCPlN.js.map +1 -0
  79. package/build/server/chunks/_page.svelte-BMqbzglq.js +178 -0
  80. package/build/server/chunks/_page.svelte-BMqbzglq.js.map +1 -0
  81. package/build/server/chunks/_page.svelte-C2kNC2pi.js +504 -0
  82. package/build/server/chunks/_page.svelte-C2kNC2pi.js.map +1 -0
  83. package/build/server/chunks/context-JUYyv6NC.js +74 -0
  84. package/build/server/chunks/context-JUYyv6NC.js.map +1 -0
  85. package/build/server/chunks/error.svelte-Epasb48G.js +46 -0
  86. package/build/server/chunks/error.svelte-Epasb48G.js.map +1 -0
  87. package/build/server/chunks/escaping-CqgfEcN3.js +19 -0
  88. package/build/server/chunks/escaping-CqgfEcN3.js.map +1 -0
  89. package/build/server/chunks/exports-CURVw3-F.js +303 -0
  90. package/build/server/chunks/exports-CURVw3-F.js.map +1 -0
  91. package/build/server/chunks/format-dOzJq-yD.js +59 -0
  92. package/build/server/chunks/format-dOzJq-yD.js.map +1 -0
  93. package/build/server/chunks/index-C0L7m6Jv.js +1497 -0
  94. package/build/server/chunks/index-C0L7m6Jv.js.map +1 -0
  95. package/build/server/chunks/index-CoD1IJuy.js +190 -0
  96. package/build/server/chunks/index-CoD1IJuy.js.map +1 -0
  97. package/build/server/chunks/index2-f44F-4KW.js +614 -0
  98. package/build/server/chunks/index2-f44F-4KW.js.map +1 -0
  99. package/build/server/chunks/shared-server-DaWdgxVh.js +11 -0
  100. package/build/server/chunks/shared-server-DaWdgxVh.js.map +1 -0
  101. package/build/server/index.js +8152 -0
  102. package/build/server/index.js.map +1 -0
  103. package/build/server/manifest.js +54 -0
  104. package/build/server/manifest.js.map +1 -0
  105. package/build/shims.js +32 -0
  106. package/package.json +71 -0
  107. package/static/favicon.svg +13 -0
  108. package/static/robots.txt +3 -0
  109. package/static/screenshot.png +0 -0
@@ -0,0 +1,54 @@
1
+ const manifest = (() => {
2
+ function __memo(fn) {
3
+ let value;
4
+ return () => value ??= (value = fn());
5
+ }
6
+
7
+ return {
8
+ appDir: "_app",
9
+ appPath: "_app",
10
+ assets: new Set(["favicon.svg","robots.txt","screenshot.png"]),
11
+ mimeTypes: {".svg":"image/svg+xml",".txt":"text/plain",".png":"image/png"},
12
+ _: {
13
+ client: {start:"_app/immutable/entry/start.Bo8U6P_2.js",app:"_app/immutable/entry/app.CelDjTDX.js",imports:["_app/immutable/entry/start.Bo8U6P_2.js","_app/immutable/chunks/BmaMsIzI.js","_app/immutable/chunks/DApgqo7x.js","_app/immutable/chunks/D6SnDtAs.js","_app/immutable/entry/app.CelDjTDX.js","_app/immutable/chunks/DApgqo7x.js","_app/immutable/chunks/CP-o74wi.js","_app/immutable/chunks/D6SnDtAs.js","_app/immutable/chunks/8LyLqy0e.js","_app/immutable/chunks/BoUXsunA.js","_app/immutable/chunks/DCcb0kkP.js"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},
14
+ nodes: [
15
+ __memo(() => import('./chunks/0-CkGitm9W.js')),
16
+ __memo(() => import('./chunks/1-BU8Hl3FY.js')),
17
+ __memo(() => import('./chunks/2-DenZJmTh.js')),
18
+ __memo(() => import('./chunks/3-Df2VKXDy.js'))
19
+ ],
20
+ remotes: {
21
+
22
+ },
23
+ routes: [
24
+ {
25
+ id: "/",
26
+ pattern: /^\/$/,
27
+ params: [],
28
+ page: { layouts: [0,], errors: [1,], leaf: 2 },
29
+ endpoint: null
30
+ },
31
+ {
32
+ id: "/sessions/[sessionId]",
33
+ pattern: /^\/sessions\/([^/]+?)\/?$/,
34
+ params: [{"name":"sessionId","optional":false,"rest":false,"chained":false}],
35
+ page: { layouts: [0,], errors: [1,], leaf: 3 },
36
+ endpoint: null
37
+ }
38
+ ],
39
+ prerendered_routes: new Set([]),
40
+ matchers: async () => {
41
+
42
+ return { };
43
+ },
44
+ server_assets: {}
45
+ }
46
+ }
47
+ })();
48
+
49
+ const prerendered = new Set([]);
50
+
51
+ const base = "";
52
+
53
+ export { base, manifest, prerendered };
54
+ //# sourceMappingURL=manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.js","sources":["../../.svelte-kit/adapter-node/manifest.js"],"sourcesContent":["export const manifest = (() => {\nfunction __memo(fn) {\n\tlet value;\n\treturn () => value ??= (value = fn());\n}\n\nreturn {\n\tappDir: \"_app\",\n\tappPath: \"_app\",\n\tassets: new Set([\"favicon.svg\",\"robots.txt\",\"screenshot.png\"]),\n\tmimeTypes: {\".svg\":\"image/svg+xml\",\".txt\":\"text/plain\",\".png\":\"image/png\"},\n\t_: {\n\t\tclient: {start:\"_app/immutable/entry/start.Bo8U6P_2.js\",app:\"_app/immutable/entry/app.CelDjTDX.js\",imports:[\"_app/immutable/entry/start.Bo8U6P_2.js\",\"_app/immutable/chunks/BmaMsIzI.js\",\"_app/immutable/chunks/DApgqo7x.js\",\"_app/immutable/chunks/D6SnDtAs.js\",\"_app/immutable/entry/app.CelDjTDX.js\",\"_app/immutable/chunks/DApgqo7x.js\",\"_app/immutable/chunks/CP-o74wi.js\",\"_app/immutable/chunks/D6SnDtAs.js\",\"_app/immutable/chunks/8LyLqy0e.js\",\"_app/immutable/chunks/BoUXsunA.js\",\"_app/immutable/chunks/DCcb0kkP.js\"],stylesheets:[],fonts:[],uses_env_dynamic_public:false},\n\t\tnodes: [\n\t\t\t__memo(() => import('./nodes/0.js')),\n\t\t\t__memo(() => import('./nodes/1.js')),\n\t\t\t__memo(() => import('./nodes/2.js')),\n\t\t\t__memo(() => import('./nodes/3.js'))\n\t\t],\n\t\tremotes: {\n\t\t\t\n\t\t},\n\t\troutes: [\n\t\t\t{\n\t\t\t\tid: \"/\",\n\t\t\t\tpattern: /^\\/$/,\n\t\t\t\tparams: [],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 2 },\n\t\t\t\tendpoint: null\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"/sessions/[sessionId]\",\n\t\t\t\tpattern: /^\\/sessions\\/([^/]+?)\\/?$/,\n\t\t\t\tparams: [{\"name\":\"sessionId\",\"optional\":false,\"rest\":false,\"chained\":false}],\n\t\t\t\tpage: { layouts: [0,], errors: [1,], leaf: 3 },\n\t\t\t\tendpoint: null\n\t\t\t}\n\t\t],\n\t\tprerendered_routes: new Set([]),\n\t\tmatchers: async () => {\n\t\t\t\n\t\t\treturn { };\n\t\t},\n\t\tserver_assets: {}\n\t}\n}\n})();\n\nexport const prerendered = new Set([]);\n\nexport const base = \"\";"],"names":[],"mappings":"AAAY,MAAC,QAAQ,GAAG,CAAC,MAAM;AAC/B,SAAS,MAAM,CAAC,EAAE,EAAE;AACpB,CAAC,IAAI,KAAK;AACV,CAAC,OAAO,MAAM,KAAK,MAAM,KAAK,GAAG,EAAE,EAAE,CAAC;AACtC;;AAEA,OAAO;AACP,CAAC,MAAM,EAAE,MAAM;AACf,CAAC,OAAO,EAAE,MAAM;AAChB,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAC/D,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;AAC3E,CAAC,CAAC,EAAE;AACJ,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC,GAAG,CAAC,sCAAsC,CAAC,OAAO,CAAC,CAAC,wCAAwC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,sCAAsC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACzjB,EAAE,KAAK,EAAE;AACT,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC,CAAC;AACvC,GAAG,MAAM,CAAC,MAAM,OAAO,wBAAc,CAAC;AACtC,GAAG;AACH,EAAE,OAAO,EAAE;AACX;AACA,GAAG;AACH,EAAE,MAAM,EAAE;AACV,GAAG;AACH,IAAI,EAAE,EAAE,GAAG;AACX,IAAI,OAAO,EAAE,MAAM;AACnB,IAAI,MAAM,EAAE,EAAE;AACd,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd,IAAI;AACJ,GAAG;AACH,IAAI,EAAE,EAAE,uBAAuB;AAC/B,IAAI,OAAO,EAAE,2BAA2B;AACxC,IAAI,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChF,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE;AAClD,IAAI,QAAQ,EAAE;AACd;AACA,GAAG;AACH,EAAE,kBAAkB,EAAE,IAAI,GAAG,CAAC,EAAE,CAAC;AACjC,EAAE,QAAQ,EAAE,YAAY;AACxB;AACA,GAAG,OAAO,IAAI;AACd,EAAE,CAAC;AACH,EAAE,aAAa,EAAE;AACjB;AACA;AACA,CAAC;;AAEW,MAAC,WAAW,GAAG,IAAI,GAAG,CAAC,EAAE;;AAEzB,MAAC,IAAI,GAAG;;;;"}
package/build/shims.js ADDED
@@ -0,0 +1,32 @@
1
+ import buffer from 'node:buffer';
2
+ import { webcrypto } from 'node:crypto';
3
+
4
+ // `buffer.File` was added in Node 18.13.0 while the `File` global was added in Node 20.0.0
5
+ const File = /** @type {import('node:buffer') & { File?: File}} */ (buffer).File;
6
+
7
+ /** @type {Record<string, any>} */
8
+ const globals = {
9
+ crypto: webcrypto,
10
+ File
11
+ };
12
+
13
+ // exported for dev/preview and node environments
14
+ /**
15
+ * Make various web APIs available as globals:
16
+ * - `crypto`
17
+ * - `File`
18
+ */
19
+ function installPolyfills() {
20
+ for (const name in globals) {
21
+ if (name in globalThis) continue;
22
+
23
+ Object.defineProperty(globalThis, name, {
24
+ enumerable: true,
25
+ configurable: true,
26
+ writable: true,
27
+ value: globals[name]
28
+ });
29
+ }
30
+ }
31
+
32
+ installPolyfills();
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "agent-replay",
3
+ "version": "0.1.0",
4
+ "description": "DevTools for replaying AI agent sessions — browse, inspect, and debug Claude Code and Cursor sessions with a timeline-based UI",
5
+ "type": "module",
6
+ "bin": {
7
+ "agent-replay": "bin/agent-replay.js"
8
+ },
9
+ "files": [
10
+ "build/",
11
+ "bin/",
12
+ "static/",
13
+ "README.md",
14
+ "LICENSE"
15
+ ],
16
+ "scripts": {
17
+ "dev": "vite dev",
18
+ "build": "vite build",
19
+ "preview": "vite preview",
20
+ "start": "node build/index.js",
21
+ "prepare": "svelte-kit sync || echo ''",
22
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json"
23
+ },
24
+ "keywords": [
25
+ "ai",
26
+ "agent",
27
+ "replay",
28
+ "devtools",
29
+ "claude",
30
+ "claude-code",
31
+ "cursor",
32
+ "debugger",
33
+ "session",
34
+ "timeline"
35
+ ],
36
+ "author": "mttetc",
37
+ "license": "MIT",
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "git+https://github.com/mttetc/agent-replay.git"
41
+ },
42
+ "homepage": "https://github.com/mttetc/agent-replay#readme",
43
+ "bugs": {
44
+ "url": "https://github.com/mttetc/agent-replay/issues"
45
+ },
46
+ "engines": {
47
+ "node": ">=18"
48
+ },
49
+ "devDependencies": {
50
+ "@sveltejs/adapter-node": "^5",
51
+ "@sveltejs/eslint-config": "^8.3.5",
52
+ "@sveltejs/kit": "^2.50.2",
53
+ "@sveltejs/vite-plugin-svelte": "^6.2.4",
54
+ "@tailwindcss/vite": "^4",
55
+ "@types/better-sqlite3": "^7.6.13",
56
+ "@types/diff": "^7.0.2",
57
+ "eslint": "^9.39.2",
58
+ "eslint-plugin-svelte": "^3.15.0",
59
+ "prettier": "^3.8.1",
60
+ "prettier-plugin-svelte": "^3.4.1",
61
+ "svelte": "^5.49.2",
62
+ "svelte-check": "^4.3.6",
63
+ "tailwindcss": "^4",
64
+ "typescript": "^5.9.3",
65
+ "vite": "^7.3.1"
66
+ },
67
+ "dependencies": {
68
+ "better-sqlite3": "^12.6.2",
69
+ "diff": "^7"
70
+ }
71
+ }
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
2
+ <defs>
3
+ <linearGradient id="g" x1="0" y1="0" x2="0" y2="1">
4
+ <stop offset="0%" stop-color="#67e8f9"/>
5
+ <stop offset="100%" stop-color="#818cf8"/>
6
+ </linearGradient>
7
+ </defs>
8
+ <path d="M16 2C9.373 2 4 7.373 4 14v14l3-3 3 3 3-3 3 3 3-3 3 3 3-3 3 3V14c0-6.627-5.373-12-12-12z" fill="url(#g)"/>
9
+ <circle cx="12" cy="14" r="2.5" fill="#0f172a"/>
10
+ <circle cx="20" cy="14" r="2.5" fill="#0f172a"/>
11
+ <circle cx="13" cy="13.2" r="0.8" fill="#fff"/>
12
+ <circle cx="21" cy="13.2" r="0.8" fill="#fff"/>
13
+ </svg>
@@ -0,0 +1,3 @@
1
+ # allow crawling everything by default
2
+ User-agent: *
3
+ Disallow:
Binary file