purplemux 0.1.2 → 0.1.4

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 (103) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +19 -19
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +5 -5
  5. package/.next/standalone/.next/routes-manifest.json +14 -14
  6. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-b6_mp._.js +1 -1
  7. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-mkvww._.js +1 -1
  8. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0.0bk0z._.js +3 -3
  9. package/.next/standalone/.next/server/chunks/[root-of-the-server]__03a9it3._.js +3 -3
  10. package/.next/standalone/.next/server/chunks/[root-of-the-server]__048ezfh._.js +1 -1
  11. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06w_edj._.js +1 -1
  12. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06wyqp.._.js +1 -1
  13. package/.next/standalone/.next/server/chunks/[root-of-the-server]__07zihhi._.js +1 -1
  14. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08tvfml._.js +1 -1
  15. package/.next/standalone/.next/server/chunks/[root-of-the-server]__09p6pnz._.js +1 -1
  16. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_f-dh_._.js +1 -1
  17. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0f_172y._.js +1 -1
  18. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g72ro1._.js +1 -1
  19. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ikhn.y._.js +2 -2
  20. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0kf~p_j._.js +1 -1
  21. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l6mk72._.js +1 -1
  22. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0p9_~nf._.js +2 -2
  23. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ph65.n._.js +1 -1
  24. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0q8r.ui._.js +1 -1
  25. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0r4bv6-._.js +2 -2
  26. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vk9ge6._.js +1 -1
  27. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0whnfn2._.js +2 -2
  28. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~chgwm._.js +1 -1
  29. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~c~kbp._.js +1 -1
  30. package/.next/standalone/.next/server/chunks/[root-of-the-server]__137c.~f._.js +1 -1
  31. package/.next/standalone/.next/server/chunks/src_lib_agent-manager_ts_09xmrha._.js +1 -1
  32. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__029rkn6._.js +1 -1
  33. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__06~dy-s._.js +1 -1
  34. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0chk03e._.js +1 -1
  35. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0eoedgl._.js +1 -1
  36. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0exdolp._.js +1 -1
  37. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0gwo-rp._.js +1 -1
  38. package/.next/standalone/.next/server/chunks/ssr/src_lib_0ixr_4n._.js +1 -1
  39. package/.next/standalone/.next/server/middleware-build-manifest.js +19 -19
  40. package/.next/standalone/.next/server/pages/agents/[agentId]/chat/build-manifest.json +2 -2
  41. package/.next/standalone/.next/server/pages/agents/[agentId]/chat/client-build-manifest.json +1 -1
  42. package/.next/standalone/.next/server/pages/agents/[agentId]/memory/build-manifest.json +2 -2
  43. package/.next/standalone/.next/server/pages/agents/[agentId]/memory/client-build-manifest.json +1 -1
  44. package/.next/standalone/.next/server/pages/agents/[agentId]/workspace/build-manifest.json +2 -2
  45. package/.next/standalone/.next/server/pages/agents/[agentId]/workspace/client-build-manifest.json +1 -1
  46. package/.next/standalone/.next/server/pages/agents/build-manifest.json +2 -2
  47. package/.next/standalone/.next/server/pages/agents/client-build-manifest.json +1 -1
  48. package/.next/standalone/.next/server/pages/de/404.html +1 -1
  49. package/.next/standalone/.next/server/pages/de/500.html +1 -1
  50. package/.next/standalone/.next/server/pages/en/404.html +1 -1
  51. package/.next/standalone/.next/server/pages/en/500.html +1 -1
  52. package/.next/standalone/.next/server/pages/es/404.html +1 -1
  53. package/.next/standalone/.next/server/pages/es/500.html +1 -1
  54. package/.next/standalone/.next/server/pages/fr/404.html +1 -1
  55. package/.next/standalone/.next/server/pages/fr/500.html +1 -1
  56. package/.next/standalone/.next/server/pages/index/build-manifest.json +2 -2
  57. package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
  58. package/.next/standalone/.next/server/pages/ja/404.html +1 -1
  59. package/.next/standalone/.next/server/pages/ja/500.html +1 -1
  60. package/.next/standalone/.next/server/pages/ko/404.html +1 -1
  61. package/.next/standalone/.next/server/pages/ko/500.html +1 -1
  62. package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
  63. package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
  64. package/.next/standalone/.next/server/pages/reports/build-manifest.json +2 -2
  65. package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
  66. package/.next/standalone/.next/server/pages/ru/404.html +1 -1
  67. package/.next/standalone/.next/server/pages/ru/500.html +1 -1
  68. package/.next/standalone/.next/server/pages/stats/build-manifest.json +2 -2
  69. package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
  70. package/.next/standalone/.next/server/pages/tr/404.html +1 -1
  71. package/.next/standalone/.next/server/pages/tr/500.html +1 -1
  72. package/.next/standalone/.next/server/pages/webview/build-manifest.json +2 -2
  73. package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
  74. package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
  75. package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
  76. package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
  77. package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
  78. package/.next/standalone/.next/static/{Zma-iDFeQkOGMBvTllQr7 → LdvH_uboDkVMv3Ni6E2m3}/_buildManifest.js +8 -8
  79. package/.next/standalone/.next/static/chunks/{01__picb_p6fe.js → 0-wd-y2_ra-~h.js} +2 -2
  80. package/.next/standalone/.next/static/chunks/{0faefom6yish3.js → 0.qafank8bvot.js} +2 -2
  81. package/.next/standalone/.next/static/chunks/{0i2rk8zovlrqn.js → 029lj6297olo0.js} +2 -2
  82. package/.next/standalone/.next/static/chunks/{0wqn8nuy2imic.js → 0794-g~h1ywi6.js} +2 -2
  83. package/.next/standalone/.next/static/chunks/{0hzlby_ttchsl.js → 0_m1r1_o.qtzj.js} +2 -2
  84. package/.next/standalone/.next/static/chunks/{0klgt~0-~x218.js → 0_qszca.b.4uw.js} +2 -2
  85. package/.next/standalone/.next/static/chunks/{07kjkllolb7wg.js → 0kjnf5fjayz43.js} +1 -1
  86. package/.next/standalone/.next/static/chunks/{0v.kh_mkun9bx.js → 0p_as3d2vjqic.js} +2 -2
  87. package/.next/standalone/.next/static/chunks/{0b49~354d-ong.js → 0tskv_kgnso8z.js} +1 -1
  88. package/.next/standalone/.next/static/chunks/{15v7ygx_v64d6.js → 171osdn3i-f52.js} +1 -1
  89. package/.next/standalone/.next/static/chunks/{16y57_d410su~.js → 17fure7-r.9wc.js} +2 -2
  90. package/.next/standalone/.next/static/chunks/{turbopack-09366mpv31_t3.js → turbopack-02_-j3y5xwqak.js} +1 -1
  91. package/.next/standalone/.next/static/chunks/{turbopack-0b5jcsyziervm.js → turbopack-0_yqhug53iy0n.js} +1 -1
  92. package/.next/standalone/.next/static/chunks/{turbopack-000.wwx44v~ta.js → turbopack-0d369-gcwy4ug.js} +1 -1
  93. package/.next/standalone/.next/static/chunks/{turbopack-0fys4q0v~kji4.js → turbopack-0k931svu60vxl.js} +1 -1
  94. package/.next/standalone/.next/static/chunks/{turbopack-0jr_ek2v1rqkk.js → turbopack-0lcgf79no8hle.js} +1 -1
  95. package/.next/standalone/.next/static/chunks/{turbopack-0.6unxftyj_d-.js → turbopack-0qfmedmu272ot.js} +1 -1
  96. package/.next/standalone/.next/static/chunks/{turbopack-0yd~_c3_moady.js → turbopack-0s5nf~9y3_gks.js} +1 -1
  97. package/.next/standalone/.next/static/chunks/{turbopack-0m7v9.hzigy2-.js → turbopack-0u5.bkpceql17.js} +1 -1
  98. package/.next/standalone/package.json +1 -1
  99. package/.next/standalone/server.js +1 -1
  100. package/dist/server.js +22 -22
  101. package/package.json +1 -1
  102. /package/.next/standalone/.next/static/{Zma-iDFeQkOGMBvTllQr7 → LdvH_uboDkVMv3Ni6E2m3}/_clientMiddlewareManifest.js +0 -0
  103. /package/.next/standalone/.next/static/{Zma-iDFeQkOGMBvTllQr7 → LdvH_uboDkVMv3Ni6E2m3}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- Zma-iDFeQkOGMBvTllQr7
1
+ LdvH_uboDkVMv3Ni6E2m3
@@ -12,14 +12,14 @@
12
12
  "static/chunks/006n8mzwjuel9.js",
13
13
  "static/chunks/04nm1z937xe5t.js",
14
14
  "static/chunks/0a5pwl9afr6l_.js",
15
- "static/chunks/0b49~354d-ong.js",
15
+ "static/chunks/0tskv_kgnso8z.js",
16
16
  "static/chunks/05q0_ebo_6bqp.js",
17
17
  "static/chunks/09wg815lxyi._.js",
18
18
  "static/chunks/0tgf56mm9k7pr.js",
19
19
  "static/chunks/17-b_.zl.b.v5.js",
20
20
  "static/chunks/15aj3kd.p7zw6.js",
21
21
  "static/chunks/00yfl7agnve...js",
22
- "static/chunks/turbopack-09366mpv31_t3.js"
22
+ "static/chunks/turbopack-02_-j3y5xwqak.js"
23
23
  ],
24
24
  "/_app": [
25
25
  "static/chunks/0g.hz7eglx5s..js",
@@ -50,7 +50,7 @@
50
50
  "static/chunks/0jeilzoa7f71s.js",
51
51
  "static/chunks/06fd4gm.ayhf7.js",
52
52
  "static/chunks/04nm1z937xe5t.js",
53
- "static/chunks/0b49~354d-ong.js",
53
+ "static/chunks/0tskv_kgnso8z.js",
54
54
  "static/chunks/0tgf56mm9k7pr.js",
55
55
  "static/chunks/17-b_.zl.b.v5.js",
56
56
  "static/chunks/05q0_ebo_6bqp.js",
@@ -58,7 +58,7 @@
58
58
  "static/chunks/0a5pwl9afr6l_.js",
59
59
  "static/chunks/15aj3kd.p7zw6.js",
60
60
  "static/chunks/09wg815lxyi._.js",
61
- "static/chunks/turbopack-0fys4q0v~kji4.js"
61
+ "static/chunks/turbopack-0k931svu60vxl.js"
62
62
  ],
63
63
  "/agents/[agentId]/chat": [
64
64
  "static/chunks/0.uz2amfosjm9.js",
@@ -71,7 +71,7 @@
71
71
  "static/chunks/0f9jd56j5p-o5.js",
72
72
  "static/chunks/0jeilzoa7f71s.js",
73
73
  "static/chunks/09u0sojp2zkmg.js",
74
- "static/chunks/0b49~354d-ong.js",
74
+ "static/chunks/0tskv_kgnso8z.js",
75
75
  "static/chunks/0p15~kn-ue177.js",
76
76
  "static/chunks/0py3p~barq9qm.js",
77
77
  "static/chunks/0tgf56mm9k7pr.js",
@@ -82,7 +82,7 @@
82
82
  "static/chunks/0232nf6heuurn.js",
83
83
  "static/chunks/05q0_ebo_6bqp.js",
84
84
  "static/chunks/0a5pwl9afr6l_.js",
85
- "static/chunks/turbopack-000.wwx44v~ta.js"
85
+ "static/chunks/turbopack-0d369-gcwy4ug.js"
86
86
  ],
87
87
  "/agents/[agentId]/memory": [
88
88
  "static/chunks/0mi.f1.iffvs7.js",
@@ -90,7 +90,7 @@
90
90
  "static/chunks/0jeilzoa7f71s.js",
91
91
  "static/chunks/0suodavub2~no.js",
92
92
  "static/chunks/0h40b.46e5ixf.js",
93
- "static/chunks/0b49~354d-ong.js",
93
+ "static/chunks/0tskv_kgnso8z.js",
94
94
  "static/chunks/10r8rypk5fanv.js",
95
95
  "static/chunks/04nm1z937xe5t.js",
96
96
  "static/chunks/134ajz_dj-3mn.js",
@@ -106,7 +106,7 @@
106
106
  "static/chunks/0a5pwl9afr6l_.js",
107
107
  "static/chunks/15aj3kd.p7zw6.js",
108
108
  "static/chunks/0232nf6heuurn.js",
109
- "static/chunks/turbopack-0m7v9.hzigy2-.js"
109
+ "static/chunks/turbopack-0u5.bkpceql17.js"
110
110
  ],
111
111
  "/agents/[agentId]/workspace": [
112
112
  "static/chunks/0kmwqchx6vxwc.js",
@@ -121,13 +121,13 @@
121
121
  "static/chunks/17-b_.zl.b.v5.js",
122
122
  "static/chunks/04nm1z937xe5t.js",
123
123
  "static/chunks/05q0_ebo_6bqp.js",
124
- "static/chunks/0b49~354d-ong.js",
124
+ "static/chunks/0tskv_kgnso8z.js",
125
125
  "static/chunks/0tgf56mm9k7pr.js",
126
126
  "static/chunks/00yfl7agnve...js",
127
127
  "static/chunks/0a5pwl9afr6l_.js",
128
128
  "static/chunks/15aj3kd.p7zw6.js",
129
129
  "static/chunks/09wg815lxyi._.js",
130
- "static/chunks/turbopack-0jr_ek2v1rqkk.js"
130
+ "static/chunks/turbopack-0lcgf79no8hle.js"
131
131
  ],
132
132
  "/login": [
133
133
  "static/chunks/0d9zihg27zvf..js",
@@ -158,13 +158,13 @@
158
158
  "static/chunks/05q0_ebo_6bqp.js",
159
159
  "static/chunks/00yfl7agnve...js",
160
160
  "static/chunks/17-b_.zl.b.v5.js",
161
- "static/chunks/15v7ygx_v64d6.js",
161
+ "static/chunks/171osdn3i-f52.js",
162
162
  "static/chunks/0py3p~barq9qm.js",
163
163
  "static/chunks/04nm1z937xe5t.js",
164
164
  "static/chunks/134ajz_dj-3mn.js",
165
165
  "static/chunks/09wg815lxyi._.js",
166
166
  "static/chunks/15aj3kd.p7zw6.js",
167
- "static/chunks/turbopack-0b5jcsyziervm.js"
167
+ "static/chunks/turbopack-0_yqhug53iy0n.js"
168
168
  ],
169
169
  "/reset": [
170
170
  "static/chunks/0zcm8t5rl6cj8.js",
@@ -187,13 +187,13 @@
187
187
  "static/chunks/04nm1z937xe5t.js",
188
188
  "static/chunks/0a5pwl9afr6l_.js",
189
189
  "static/chunks/0tgf56mm9k7pr.js",
190
- "static/chunks/07kjkllolb7wg.js",
190
+ "static/chunks/0kjnf5fjayz43.js",
191
191
  "static/chunks/05q0_ebo_6bqp.js",
192
192
  "static/chunks/134ajz_dj-3mn.js",
193
193
  "static/chunks/09wg815lxyi._.js",
194
194
  "static/chunks/0232nf6heuurn.js",
195
195
  "static/chunks/0f9jd56j5p-o5.js",
196
- "static/chunks/turbopack-0yd~_c3_moady.js"
196
+ "static/chunks/turbopack-0s5nf~9y3_gks.js"
197
197
  ],
198
198
  "/tools-required": [
199
199
  "static/chunks/0bmo3rmwduxpw.js",
@@ -219,22 +219,22 @@
219
219
  "static/chunks/06fd4gm.ayhf7.js",
220
220
  "static/chunks/0232nf6heuurn.js",
221
221
  "static/chunks/00yfl7agnve...js",
222
- "static/chunks/0b49~354d-ong.js",
222
+ "static/chunks/0tskv_kgnso8z.js",
223
223
  "static/chunks/0a5pwl9afr6l_.js",
224
224
  "static/chunks/05q0_ebo_6bqp.js",
225
225
  "static/chunks/0tgf56mm9k7pr.js",
226
226
  "static/chunks/04nm1z937xe5t.js",
227
227
  "static/chunks/0f9jd56j5p-o5.js",
228
228
  "static/chunks/09wg815lxyi._.js",
229
- "static/chunks/turbopack-0.6unxftyj_d-.js"
229
+ "static/chunks/turbopack-0qfmedmu272ot.js"
230
230
  ]
231
231
  },
232
232
  "devFiles": [],
233
233
  "polyfillFiles": [],
234
234
  "lowPriorityFiles": [
235
- "static/Zma-iDFeQkOGMBvTllQr7/_buildManifest.js",
236
- "static/Zma-iDFeQkOGMBvTllQr7/_ssgManifest.js",
237
- "static/Zma-iDFeQkOGMBvTllQr7/_clientMiddlewareManifest.js"
235
+ "static/LdvH_uboDkVMv3Ni6E2m3/_buildManifest.js",
236
+ "static/LdvH_uboDkVMv3Ni6E2m3/_ssgManifest.js",
237
+ "static/LdvH_uboDkVMv3Ni6E2m3/_clientMiddlewareManifest.js"
238
238
  ],
239
239
  "rootMainFiles": []
240
240
  }
@@ -3,9 +3,9 @@
3
3
  "routes": {},
4
4
  "dynamicRoutes": {},
5
5
  "preview": {
6
- "previewModeId": "b2ea6eb57abd11ad91544e2f904273c3",
7
- "previewModeSigningKey": "fa174505903351a557b71bbeacb1575df0250de5b78e669b536ae1cd75a0247a",
8
- "previewModeEncryptionKey": "0d0d691e9ef8f0459c61552bc6c5d50ed8905d2732e90aa48965fad4ce56da8f"
6
+ "previewModeId": "f56d4701c5240c7592b416f482ae5095",
7
+ "previewModeSigningKey": "f7effae93076f25c014a7da6d7f10d14ebc64b1c442d8e977eb5193dc9126656",
8
+ "previewModeEncryptionKey": "b511f69046b426fc11a57a96cf955abc1cedfed2438322b5b885f93150aef195"
9
9
  },
10
10
  "notFoundRoutes": []
11
11
  }
@@ -2,7 +2,7 @@
2
2
  "version": 1,
3
3
  "config": {
4
4
  "env": {
5
- "NEXT_PUBLIC_COMMIT_HASH": "4ee4bb7"
5
+ "NEXT_PUBLIC_COMMIT_HASH": "1a05b91"
6
6
  },
7
7
  "webpack": null,
8
8
  "typescript": {
@@ -123,7 +123,7 @@
123
123
  "transform": "lodash/{{member}}"
124
124
  }
125
125
  },
126
- "outputFileTracingRoot": "/Users/subicura/Workspace/github.com/subicura/purplemux",
126
+ "outputFileTracingRoot": "/home/runner/work/purplemux/purplemux",
127
127
  "cacheComponents": false,
128
128
  "cacheLife": {
129
129
  "default": {
@@ -185,7 +185,7 @@
185
185
  "proxyPrefetch": "flexible",
186
186
  "optimisticClientCache": true,
187
187
  "manualClientBasePath": false,
188
- "cpus": 13,
188
+ "cpus": 3,
189
189
  "memoryBasedWorkersCount": false,
190
190
  "imgOptConcurrency": null,
191
191
  "imgOptTimeoutInSeconds": 7,
@@ -335,11 +335,11 @@
335
335
  ]
336
336
  },
337
337
  "turbopack": {
338
- "root": "/Users/subicura/Workspace/github.com/subicura/purplemux"
338
+ "root": "/home/runner/work/purplemux/purplemux"
339
339
  },
340
340
  "distDirRoot": ".next"
341
341
  },
342
- "appDir": "/Users/subicura/Workspace/github.com/subicura/purplemux",
342
+ "appDir": "/home/runner/work/purplemux/purplemux",
343
343
  "relativeAppDir": "",
344
344
  "files": [
345
345
  ".next/routes-manifest.json",
@@ -608,59 +608,59 @@
608
608
  "dataRoutes": [
609
609
  {
610
610
  "page": "/",
611
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/index\\.json$"
611
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/index\\.json$"
612
612
  },
613
613
  {
614
614
  "page": "/agents",
615
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/agents\\.json$"
615
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/agents\\.json$"
616
616
  },
617
617
  {
618
618
  "page": "/agents/[agentId]/chat",
619
619
  "routeKeys": {
620
620
  "nxtPagentId": "nxtPagentId"
621
621
  },
622
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/agents/([^/]+?)/chat\\.json$",
623
- "namedDataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/agents/(?<nxtPagentId>[^/]+?)/chat\\.json$"
622
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/agents/([^/]+?)/chat\\.json$",
623
+ "namedDataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/agents/(?<nxtPagentId>[^/]+?)/chat\\.json$"
624
624
  },
625
625
  {
626
626
  "page": "/agents/[agentId]/memory",
627
627
  "routeKeys": {
628
628
  "nxtPagentId": "nxtPagentId"
629
629
  },
630
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/agents/([^/]+?)/memory\\.json$",
631
- "namedDataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/agents/(?<nxtPagentId>[^/]+?)/memory\\.json$"
630
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/agents/([^/]+?)/memory\\.json$",
631
+ "namedDataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/agents/(?<nxtPagentId>[^/]+?)/memory\\.json$"
632
632
  },
633
633
  {
634
634
  "page": "/agents/[agentId]/workspace",
635
635
  "routeKeys": {
636
636
  "nxtPagentId": "nxtPagentId"
637
637
  },
638
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/agents/([^/]+?)/workspace\\.json$",
639
- "namedDataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/agents/(?<nxtPagentId>[^/]+?)/workspace\\.json$"
638
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/agents/([^/]+?)/workspace\\.json$",
639
+ "namedDataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/agents/(?<nxtPagentId>[^/]+?)/workspace\\.json$"
640
640
  },
641
641
  {
642
642
  "page": "/login",
643
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/login\\.json$"
643
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/login\\.json$"
644
644
  },
645
645
  {
646
646
  "page": "/reports",
647
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/reports\\.json$"
647
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/reports\\.json$"
648
648
  },
649
649
  {
650
650
  "page": "/reset",
651
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/reset\\.json$"
651
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/reset\\.json$"
652
652
  },
653
653
  {
654
654
  "page": "/stats",
655
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/stats\\.json$"
655
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/stats\\.json$"
656
656
  },
657
657
  {
658
658
  "page": "/tools-required",
659
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/tools-required\\.json$"
659
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/tools-required\\.json$"
660
660
  },
661
661
  {
662
662
  "page": "/webview",
663
- "dataRouteRegex": "^/_next/data/Zma\\-iDFeQkOGMBvTllQr7/webview\\.json$"
663
+ "dataRouteRegex": "^/_next/data/LdvH_uboDkVMv3Ni6E2m3/webview\\.json$"
664
664
  }
665
665
  ],
666
666
  "i18n": {
@@ -1,3 +1,3 @@
1
- module.exports=[270406,(t,e,a)=>{e.exports=t.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(t,e,a)=>{e.exports=t.x("path",()=>require("path"))},446786,(t,e,a)=>{e.exports=t.x("os",()=>require("os"))},924868,(t,e,a)=>{e.exports=t.x("fs/promises",()=>require("fs/promises"))},130146,(t,e,a)=>{e.exports=t.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(t,e,a)=>{e.exports=t.x("util",()=>require("util"))},233405,(t,e,a)=>{e.exports=t.x("child_process",()=>require("child_process"))},667585,t=>t.a(async(e,a)=>{try{let e=await t.y("nanoid-782ff4eee3a5ce9a");t.n(e),a()}catch(t){a(t)}},!0),25146,t=>{"use strict";var e=t.i(130146),a=t.i(814747),r=t.i(446786);let i=a.default.join(r.default.homedir(),".purplemux","logs"),n=process.env.LOG_LEVEL||"info",s=(t=>{if(!t)return{};let e={};for(let a of t.split(",")){let[t,r]=a.split("=").map(t=>t.trim());t&&r&&(e[t]=r)}return e})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let t=[n,...Object.values(s)].reduce((t,e)=>l.indexOf(e)<l.indexOf(t)?e:t,"fatal");o.__ptRootLogger=(0,e.default)({level:t,transport:{targets:[{target:"pino-roll",level:t,options:{file:a.default.join(i,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:t,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=o.__ptRootLogger;t.s(["createLogger",0,t=>{let e=u.child({module:t});return e.level=s[t]??n,e}])},544538,t=>{"use strict";process.platform;let e="linux"===process.platform;t.s(["isLinux",0,e])},459015,t=>t.a(async(e,a)=>{try{var r=t.i(233405),i=t.i(924868),n=t.i(224361),s=t.i(814747),l=t.i(667585),o=t.i(25146),u=t.i(544538),c=e([l]);[l]=c.then?(await c)():c;let p=(0,o.createLogger)("terminal"),d=(0,n.promisify)(r.execFile),m="purple",h=s.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),f=new Set(["AUTH_PASSWORD","NEXTAUTH_SECRET"]),y=()=>Object.fromEntries(Object.entries(process.env).filter(([t])=>!t.startsWith("npm_")&&!t.startsWith("NODE_")&&!f.has(t))),w=async()=>{try{let{stdout:t}=await d("tmux",["-L",m,"ls","-F","#{session_name}"],{timeout:5e3});return t.trim().split("\n").map(t=>t.trim()).filter(t=>t.startsWith("pt-"))}catch{return[]}},g=async(t,e,a,r)=>{let i=process.env.SHELL||"/bin/zsh";await d("tmux",["-u","-L",m,"-f",h,"new-session","-d","-s",t,"-x",String(e),"-y",String(a),i],{timeout:5e3,env:{...y(),TERM:"xterm-256color",COLORTERM:"truecolor"},cwd:r||process.env.HOME||"/"}),await P(),p.debug(`tmux session created: ${t} (cols: ${e}, rows: ${a})`)},x=t=>new Promise(e=>setTimeout(e,t)),S=async t=>{if(!await v(t))return;p.info(`killSession start: ${t}`);let e=await I(t);if(e)try{p.info(`SIGTERM → process group ${e}: ${t}`),process.kill(-e,"SIGTERM")}catch{}try{await d("tmux",["-L",m,"kill-session","-t",t],{timeout:5e3})}catch{}for(let e=0;e<5;e++){if(!await v(t))return void p.info(`killSession done (SIGTERM): ${t}`);await x(200)}if(p.warn(`session survived SIGTERM, escalating to SIGKILL: ${t}`),e)try{p.info(`SIGKILL → process group ${e}: ${t}`),process.kill(-e,"SIGKILL")}catch{}try{await d("tmux",["-L",m,"kill-session","-t",t],{timeout:5e3})}catch{}for(let e=0;e<3;e++){if(!await v(t))return void p.info(`killSession done (SIGKILL): ${t}`);await x(200)}p.warn(`tmux session still alive after kill: ${t}`)},v=async t=>{try{return await d("tmux",["-L",m,"has-session","-t",t],{timeout:5e3}),!0}catch{return!1}},L=async()=>{},_=async()=>{await L();let t=await w();t.length>0&&t.forEach(t=>{p.debug(`existing tmux session found: ${t}`)})},E=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"display-message","-p","-t",t,"#{pane_current_path}"],{timeout:5e3});return e.trim()||null}catch{return null}},I=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"display-message","-p","-t",t,"#{pane_pid}"],{timeout:5e3}),a=parseInt(e.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},P=async()=>{try{await d("tmux",["-L",m,"source-file",h],{timeout:5e3})}catch{}},$=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"list-panes","-t",t,"-F","#{pane_current_command}"],{timeout:5e3});return e.trim()||null}catch{return null}},b=async()=>{try{let{stdout:t}=await d("tmux",["-L",m,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),e=new Map;for(let a of t.trim().split("\n")){if(!a)continue;let[t,r,i,n,s]=a.split(" ");if(t&&r){let a=parseInt(n,10),l=parseInt(s,10);e.set(t,{command:r,path:i||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(l)?0:l})}}return e}catch{return new Map}},R=new Set(["bash","zsh","fish","sh","dash"]),C=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"display-message","-p","-t",t,"#{pane_title}"],{timeout:5e3});return e.trim()||null}catch{return null}},N=async t=>{await d("tmux",["-L",m,"copy-mode","-q","-t",t],{timeout:5e3}).catch(()=>{})},k=async(t,e)=>{await N(t),await d("tmux",["-L",m,"send-keys","-t",t,e,"Enter"],{timeout:5e3})},M=async(t,e)=>{await N(t),await d("tmux",["-L",m,"send-keys","-t",t,e],{timeout:5e3})},q=async(t,e)=>{await N(t),await d("tmux",["-L",m,"send-keys","-t",t,"-l",`\x1b[200~${e}\x1b[201~`],{timeout:5e3}),await d("tmux",["-L",m,"send-keys","-t",t,"Enter"],{timeout:5e3}),await new Promise(t=>setTimeout(t,600)),await d("tmux",["-L",m,"send-keys","-t",t,"Enter"],{timeout:5e3})},A=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"display-message","-p","-t",t,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,i,n,s,l]=e.trim().split(" ");return{cwd:a||null,command:r||null,pid:i&&parseInt(i,10)||null,width:n&&parseInt(n,10)||null,height:s&&parseInt(s,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},T=new Set(["node","python","python3","ruby","perl","deno","bun"]),j=async()=>{try{await d("tmux",["-L",m,"kill-server"],{timeout:5e3}),p.info("tmux server killed")}catch{}},G=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"capture-pane","-p","-t",t],{timeout:5e3});return e}catch{return null}},D=async(t,e)=>{try{let{stdout:a}=await d("tmux",["-L",m,"capture-pane","-p","-S",`-${e}`,"-t",t],{timeout:5e3});return a}catch{return null}},H=async t=>{if(u.isLinux){let e=[];return await Promise.all(t.map(async t=>{try{for(let a of(await i.default.readFile(`/proc/${t}/task/${t}/children`,"utf-8")).trim().split(/\s+/)){let t=parseInt(a,10);Number.isNaN(t)||e.push(t)}}catch{}})),e}try{let{stdout:e}=await d("pgrep",["-P",t.join(",")],{timeout:5e3});return e.trim().split("\n").map(t=>parseInt(t,10)).filter(t=>!Number.isNaN(t))}catch{return[]}},O=async t=>{let e=[],a=[t];for(;a.length>0;){let t=await H(a);if(0===t.length)break;e.push(...t),a=t}return e},F=async t=>{try{let e=new Set(t),{stdout:a}=await d("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let t of a.split("\n")){let a=t.match(/pid=(\d+)/g);if(!a||!a.some(t=>e.has(parseInt(t.replace("pid=",""),10))))continue;let i=t.match(/:(\d+)\s/);i&&r.add(parseInt(i[1],10))}return[...r].sort((t,e)=>t-e)}catch{return[]}},K=async t=>{let e=await O(t);if(0===e.length)return[];if(u.isLinux)return F(e);try{let{stdout:t}=await d("lsof",["-a","-p",e.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let e of t.split("\n"))if(e.startsWith("n")){let t=e.match(/:(\d+)$/);t&&a.add(parseInt(t[1],10))}return[...a].sort((t,e)=>t-e)}catch{return[]}},U=async t=>{let e=await I(t);if(!e)return null;try{let{stdout:t}=await d("pgrep",["-n","-P",String(e)],{timeout:5e3}),a=t.trim();if(!a)return null;let{stdout:r}=await d("ps",["-o","args=","-p",a],{timeout:5e3}),i=r.trim();if(!i)return null;let n=i.split(/\s+/);if(0===n.length)return i;if(n[0]=s.default.basename(n[0]),T.has(n[0])&&n.length>1){let t=s.default.basename(n[1]).replace(/\.(c|m)?js$/,"");n.splice(0,2,t)}return n.join(" ")}catch{return null}};t.s(["SAFE_SHELLS",0,R,"applyConfig",0,P,"capturePaneContent",0,G,"capturePaneContentWithHistory",0,D,"createSession",0,g,"defaultSessionName",0,()=>`pt-${(0,l.nanoid)(6)}-${(0,l.nanoid)(6)}-${(0,l.nanoid)(6)}`,"exitCopyMode",0,N,"getAllPanesInfo",0,b,"getLastCommand",0,U,"getListeningPorts",0,K,"getPaneCurrentCommand",0,$,"getPaneDetailInfo",0,A,"getPaneTitle",0,C,"getSessionCwd",0,E,"getSessionPanePid",0,I,"hasSession",0,v,"killServer",0,j,"killSession",0,S,"listSessions",0,w,"sanitizedEnv",0,y,"scanSessions",0,_,"sendBracketedPaste",0,q,"sendKeys",0,k,"sendRawKeys",0,M,"workspaceSessionName",0,(t,e,a)=>`pt-${t}-${e}-${a}`]),a()}catch(t){a(t)}},!1),422392,t=>{"use strict";let e=new Map,a=6e4;t.s(["getCached",0,t=>{let a=e.get(t);return a?Date.now()>a.expiresAt?(e.delete(t),null):a.data:null},"setCached",0,(t,r,i=a)=>{e.set(t,{data:r,expiresAt:Date.now()+i})}])},128413,t=>t.a(async(e,a)=>{try{var r=t.i(233405),i=t.i(224361),n=t.i(459015),s=t.i(422392),l=e([n]);[n]=l.then?(await l)():l;let o=(0,i.promisify)(r.execFile),u=async t=>{try{let{stdout:e}=await o("git",["-C",t,"rev-list","--left-right","--count","HEAD...@{upstream}"],{timeout:5e3}),a=e.trim().split(/\s+/);return{ahead:parseInt(a[0],10)||0,behind:parseInt(a[1],10)||0}}catch{return{ahead:0,behind:0}}},c=async t=>{try{let{stdout:e}=await o("git",["-C",t,"stash","list"],{timeout:5e3});return e.trim()?e.trim().split("\n").length:0}catch{return 0}},p=async t=>{try{let{stdout:e}=await o("git",["-C",t,"diff","--numstat"],{timeout:5e3}),a=0,r=0;for(let t of e.split("\n")){if(!t)continue;let[e,i]=t.split(" ");"-"!==e&&"-"!==i&&(a+=parseInt(e,10)||0,r+=parseInt(i,10)||0)}return{insertions:a,deletions:r}}catch{return{insertions:0,deletions:0}}},d=async t=>{let e=await (0,n.getSessionCwd)(t);if(!e)throw Error("tmux-session-not-found");let a=`git-status:${e}`,r=(0,s.getCached)(a);if(null!==r)return r;try{let{stdout:t}=await o("git",["-C",e,"status","--porcelain"],{timeout:5e3}),r=(t=>{let e=0,a=0,r=0;for(let i of t.split("\n")){if(!i)continue;let t=i[0],n=i[1];"?"===t?r++:(t&&" "!==t&&"?"!==t&&e++,n&&" "!==n&&"?"!==n&&a++)}return{staged:e,modified:a,untracked:r}})(t),[i,n,l]=await Promise.all([u(e),c(e),p(e)]),d={...r,...i,stash:n,...l};return(0,s.setCached)(a,d,15e3),d}catch(e){let t=e.code;if(128===t)return(0,s.setCached)(a,null,15e3),null;throw e}};t.s(["getGitStatus",0,d]),a()}catch(t){a(t)}},!1),70287,t=>t.a(async(e,a)=>{try{var r=t.i(128413),i=t.i(25146),n=e([r]);[r]=n.then?(await n)():n;let s=(0,i.createLogger)("git"),l=async(t,e)=>{if("GET"!==t.method)return e.setHeader("Allow","GET"),e.status(405).json({error:"Method not allowed"});let a=t.query.tmuxSession;if(!a)return e.status(400).json({error:"missing-param",message:"tmuxSession parameter required"});try{let t=await (0,r.getGitStatus)(a);return e.status(200).json({status:t})}catch(a){let t=a instanceof Error?a.message:String(a);if("tmux-session-not-found"===t)return e.status(404).json({error:"tmux-session-not-found"});return s.error(`status query failed: ${t}`),e.status(500).json({error:"git-error"})}};t.s(["default",0,l]),a()}catch(t){a(t)}},!1),231650,t=>t.a(async(e,a)=>{try{var r=t.i(926747),i=t.i(190406),n=t.i(244898),s=t.i(262950),l=t.i(70287),o=t.i(7031),u=t.i(181927),c=t.i(846432),p=e([l]);[l]=p.then?(await p)():p;let m=(0,s.hoist)(l,"default"),h=(0,s.hoist)(l,"config"),f=new n.PagesAPIRouteModule({definition:{kind:i.RouteKind.PAGES_API,page:"/api/git/status",pathname:"/api/git/status",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function d(t,e,a){a.requestMeta&&(0,c.setRequestMeta)(t,a.requestMeta),f.isDev&&(0,c.addRequestMeta)(t,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/git/status";i=i.replace(/\/index$/,"")||"/";let n=await f.prepare(t,e,{srcPage:i});if(!n){e.statusCode=400,e.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:s,params:l,prerenderManifest:p,routerServerContext:d}=n;try{let a,r=t.method||"GET",n=(0,o.getTracer)(),c=n.getActiveScopeSpan(),m=!!(null==d?void 0:d.isWrappedByNextServer),h=f.instrumentationOnRequestError.bind(f),y=async o=>f.render(t,e,{query:{...s,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:f.isDev,page:"/api/git/status",internalRevalidate:null==d?void 0:d.revalidate,onError:(...e)=>h(t,...e)}).finally(()=>{if(!o)return;o.setAttributes({"http.status_code":e.statusCode,"next.rsc":!1});let t=n.getRootSpanAttributes();if(!t)return;if(t.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${t.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=t.get("next.route");if(s){let t=`${r} ${s}`;o.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),o.updateName(t),a&&a!==o&&(a.setAttribute("http.route",s),a.updateName(t))}else o.updateName(`${r} ${i}`)});m&&c?await y(c):(a=n.getActiveScopeSpan(),await n.withPropagatedContext(t.headers,()=>n.trace(u.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:o.SpanKind.SERVER,attributes:{"http.method":r,"http.target":t.url}},y),void 0,!m))}catch(t){if(f.isDev)throw t;(0,r.sendError)(e,500,"Internal Server Error")}finally{null==a.waitUntil||a.waitUntil.call(a,Promise.resolve())}}t.s(["config",0,h,"default",0,m,"handler",0,d]),a()}catch(t){a(t)}},!1)];
1
+ module.exports=[270406,(t,e,a)=>{e.exports=t.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(t,e,a)=>{e.exports=t.x("path",()=>require("path"))},446786,(t,e,a)=>{e.exports=t.x("os",()=>require("os"))},924868,(t,e,a)=>{e.exports=t.x("fs/promises",()=>require("fs/promises"))},130146,(t,e,a)=>{e.exports=t.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(t,e,a)=>{e.exports=t.x("util",()=>require("util"))},233405,(t,e,a)=>{e.exports=t.x("child_process",()=>require("child_process"))},667585,t=>t.a(async(e,a)=>{try{let e=await t.y("nanoid-782ff4eee3a5ce9a");t.n(e),a()}catch(t){a(t)}},!0),25146,t=>{"use strict";var e=t.i(130146),a=t.i(814747),r=t.i(446786);let i=a.default.join(r.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",n=(t=>{if(!t)return{};let e={};for(let a of t.split(",")){let[t,r]=a.split("=").map(t=>t.trim());t&&r&&(e[t]=r)}return e})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let t=[s,...Object.values(n)].reduce((t,e)=>l.indexOf(e)<l.indexOf(t)?e:t,"fatal");o.__ptRootLogger=(0,e.default)({level:t,transport:{targets:[{target:"pino-roll",level:t,options:{file:a.default.join(i,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:t,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=o.__ptRootLogger;t.s(["createLogger",0,t=>{let e=u.child({module:t});return e.level=n[t]??s,e}])},544538,t=>{"use strict";process.platform;let e="linux"===process.platform;t.s(["isLinux",0,e])},459015,t=>t.a(async(e,a)=>{try{var r=t.i(233405),i=t.i(924868),s=t.i(224361),n=t.i(814747),l=t.i(667585),o=t.i(25146),u=t.i(544538),c=e([l]);[l]=c.then?(await c)():c;let p=(0,o.createLogger)("terminal"),d=(0,s.promisify)(r.execFile),m="purple",h=n.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),y=new Set(["AUTH_PASSWORD","NEXTAUTH_SECRET"]),f=()=>Object.fromEntries(Object.entries(process.env).filter(([t])=>!t.startsWith("npm_")&&!t.startsWith("NODE_")&&!y.has(t))),w=async()=>{try{let{stdout:t}=await d("tmux",["-L",m,"ls","-F","#{session_name}"],{timeout:5e3});return t.trim().split("\n").map(t=>t.trim()).filter(t=>t.startsWith("pt-"))}catch{return[]}},g=async(t,e,a,r)=>{let i=process.env.SHELL||"/bin/zsh";await d("tmux",["-u","-L",m,"-f",h,"new-session","-d","-s",t,"-x",String(e),"-y",String(a),i],{timeout:5e3,env:{...f(),TERM:"xterm-256color",COLORTERM:"truecolor"},cwd:r||process.env.HOME||"/"}),await I(),p.debug(`tmux session created: ${t} (cols: ${e}, rows: ${a})`)},x=t=>new Promise(e=>setTimeout(e,t)),S=async t=>{if(!await v(t))return;p.debug(`killSession start: ${t}`);let e=await b(t);if(e)try{p.debug(`SIGTERM → process group ${e}: ${t}`),process.kill(-e,"SIGTERM")}catch{}try{await d("tmux",["-L",m,"kill-session","-t",t],{timeout:5e3})}catch{}for(let e=0;e<5;e++){if(!await v(t))return void p.debug(`killSession done (SIGTERM): ${t}`);await x(200)}if(p.warn(`session survived SIGTERM, escalating to SIGKILL: ${t}`),e)try{p.debug(`SIGKILL → process group ${e}: ${t}`),process.kill(-e,"SIGKILL")}catch{}try{await d("tmux",["-L",m,"kill-session","-t",t],{timeout:5e3})}catch{}for(let e=0;e<3;e++){if(!await v(t))return void p.debug(`killSession done (SIGKILL): ${t}`);await x(200)}p.warn(`tmux session still alive after kill: ${t}`)},v=async t=>{try{return await d("tmux",["-L",m,"has-session","-t",t],{timeout:5e3}),!0}catch{return!1}},L=async()=>{},_=async()=>{await L();let t=await w();t.length>0&&t.forEach(t=>{p.debug(`existing tmux session found: ${t}`)})},E=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"display-message","-p","-t",t,"#{pane_current_path}"],{timeout:5e3});return e.trim()||null}catch{return null}},b=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"display-message","-p","-t",t,"#{pane_pid}"],{timeout:5e3}),a=parseInt(e.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},I=async()=>{try{await d("tmux",["-L",m,"source-file",h],{timeout:5e3})}catch{}},P=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"list-panes","-t",t,"-F","#{pane_current_command}"],{timeout:5e3});return e.trim()||null}catch{return null}},$=async()=>{try{let{stdout:t}=await d("tmux",["-L",m,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),e=new Map;for(let a of t.trim().split("\n")){if(!a)continue;let[t,r,i,s,n]=a.split(" ");if(t&&r){let a=parseInt(s,10),l=parseInt(n,10);e.set(t,{command:r,path:i||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(l)?0:l})}}return e}catch{return new Map}},R=new Set(["bash","zsh","fish","sh","dash"]),C=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"display-message","-p","-t",t,"#{pane_title}"],{timeout:5e3});return e.trim()||null}catch{return null}},N=async t=>{await d("tmux",["-L",m,"copy-mode","-q","-t",t],{timeout:5e3}).catch(()=>{})},k=async(t,e)=>{await N(t),await d("tmux",["-L",m,"send-keys","-t",t,e,"Enter"],{timeout:5e3})},M=async(t,e)=>{await N(t),await d("tmux",["-L",m,"send-keys","-t",t,e],{timeout:5e3})},q=async(t,e)=>{await N(t),await d("tmux",["-L",m,"send-keys","-t",t,"-l",`\x1b[200~${e}\x1b[201~`],{timeout:5e3}),await d("tmux",["-L",m,"send-keys","-t",t,"Enter"],{timeout:5e3}),await new Promise(t=>setTimeout(t,600)),await d("tmux",["-L",m,"send-keys","-t",t,"Enter"],{timeout:5e3})},A=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"display-message","-p","-t",t,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,i,s,n,l]=e.trim().split(" ");return{cwd:a||null,command:r||null,pid:i&&parseInt(i,10)||null,width:s&&parseInt(s,10)||null,height:n&&parseInt(n,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},T=new Set(["node","python","python3","ruby","perl","deno","bun"]),j=async()=>{try{await d("tmux",["-L",m,"kill-server"],{timeout:5e3}),p.debug("tmux server killed")}catch{}},G=async t=>{try{let{stdout:e}=await d("tmux",["-L",m,"capture-pane","-p","-t",t],{timeout:5e3});return e}catch{return null}},D=async(t,e)=>{try{let{stdout:a}=await d("tmux",["-L",m,"capture-pane","-p","-S",`-${e}`,"-t",t],{timeout:5e3});return a}catch{return null}},H=async t=>{if(u.isLinux){let e=[];return await Promise.all(t.map(async t=>{try{for(let a of(await i.default.readFile(`/proc/${t}/task/${t}/children`,"utf-8")).trim().split(/\s+/)){let t=parseInt(a,10);Number.isNaN(t)||e.push(t)}}catch{}})),e}try{let{stdout:e}=await d("pgrep",["-P",t.join(",")],{timeout:5e3});return e.trim().split("\n").map(t=>parseInt(t,10)).filter(t=>!Number.isNaN(t))}catch{return[]}},O=async t=>{let e=[],a=[t];for(;a.length>0;){let t=await H(a);if(0===t.length)break;e.push(...t),a=t}return e},F=async t=>{try{let e=new Set(t),{stdout:a}=await d("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let t of a.split("\n")){let a=t.match(/pid=(\d+)/g);if(!a||!a.some(t=>e.has(parseInt(t.replace("pid=",""),10))))continue;let i=t.match(/:(\d+)\s/);i&&r.add(parseInt(i[1],10))}return[...r].sort((t,e)=>t-e)}catch{return[]}},K=async t=>{let e=await O(t);if(0===e.length)return[];if(u.isLinux)return F(e);try{let{stdout:t}=await d("lsof",["-a","-p",e.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let e of t.split("\n"))if(e.startsWith("n")){let t=e.match(/:(\d+)$/);t&&a.add(parseInt(t[1],10))}return[...a].sort((t,e)=>t-e)}catch{return[]}},U=async t=>{let e=await b(t);if(!e)return null;try{let{stdout:t}=await d("pgrep",["-n","-P",String(e)],{timeout:5e3}),a=t.trim();if(!a)return null;let{stdout:r}=await d("ps",["-o","args=","-p",a],{timeout:5e3}),i=r.trim();if(!i)return null;let s=i.split(/\s+/);if(0===s.length)return i;if(s[0]=n.default.basename(s[0]),T.has(s[0])&&s.length>1){let t=n.default.basename(s[1]).replace(/\.(c|m)?js$/,"");s.splice(0,2,t)}return s.join(" ")}catch{return null}};t.s(["SAFE_SHELLS",0,R,"applyConfig",0,I,"capturePaneContent",0,G,"capturePaneContentWithHistory",0,D,"createSession",0,g,"defaultSessionName",0,()=>`pt-${(0,l.nanoid)(6)}-${(0,l.nanoid)(6)}-${(0,l.nanoid)(6)}`,"exitCopyMode",0,N,"getAllPanesInfo",0,$,"getLastCommand",0,U,"getListeningPorts",0,K,"getPaneCurrentCommand",0,P,"getPaneDetailInfo",0,A,"getPaneTitle",0,C,"getSessionCwd",0,E,"getSessionPanePid",0,b,"hasSession",0,v,"killServer",0,j,"killSession",0,S,"listSessions",0,w,"sanitizedEnv",0,f,"scanSessions",0,_,"sendBracketedPaste",0,q,"sendKeys",0,k,"sendRawKeys",0,M,"workspaceSessionName",0,(t,e,a)=>`pt-${t}-${e}-${a}`]),a()}catch(t){a(t)}},!1),422392,t=>{"use strict";let e=new Map,a=6e4;t.s(["getCached",0,t=>{let a=e.get(t);return a?Date.now()>a.expiresAt?(e.delete(t),null):a.data:null},"setCached",0,(t,r,i=a)=>{e.set(t,{data:r,expiresAt:Date.now()+i})}])},128413,t=>t.a(async(e,a)=>{try{var r=t.i(233405),i=t.i(224361),s=t.i(459015),n=t.i(422392),l=e([s]);[s]=l.then?(await l)():l;let o=(0,i.promisify)(r.execFile),u=async t=>{try{let{stdout:e}=await o("git",["-C",t,"rev-list","--left-right","--count","HEAD...@{upstream}"],{timeout:5e3}),a=e.trim().split(/\s+/);return{ahead:parseInt(a[0],10)||0,behind:parseInt(a[1],10)||0}}catch{return{ahead:0,behind:0}}},c=async t=>{try{let{stdout:e}=await o("git",["-C",t,"stash","list"],{timeout:5e3});return e.trim()?e.trim().split("\n").length:0}catch{return 0}},p=async t=>{try{let{stdout:e}=await o("git",["-C",t,"diff","--numstat"],{timeout:5e3}),a=0,r=0;for(let t of e.split("\n")){if(!t)continue;let[e,i]=t.split(" ");"-"!==e&&"-"!==i&&(a+=parseInt(e,10)||0,r+=parseInt(i,10)||0)}return{insertions:a,deletions:r}}catch{return{insertions:0,deletions:0}}},d=async t=>{let e=await (0,s.getSessionCwd)(t);if(!e)throw Error("tmux-session-not-found");let a=`git-status:${e}`,r=(0,n.getCached)(a);if(null!==r)return r;try{let{stdout:t}=await o("git",["-C",e,"status","--porcelain"],{timeout:5e3}),r=(t=>{let e=0,a=0,r=0;for(let i of t.split("\n")){if(!i)continue;let t=i[0],s=i[1];"?"===t?r++:(t&&" "!==t&&"?"!==t&&e++,s&&" "!==s&&"?"!==s&&a++)}return{staged:e,modified:a,untracked:r}})(t),[i,s,l]=await Promise.all([u(e),c(e),p(e)]),d={...r,...i,stash:s,...l};return(0,n.setCached)(a,d,15e3),d}catch(e){let t=e.code;if(128===t)return(0,n.setCached)(a,null,15e3),null;throw e}};t.s(["getGitStatus",0,d]),a()}catch(t){a(t)}},!1),70287,t=>t.a(async(e,a)=>{try{var r=t.i(128413),i=t.i(25146),s=e([r]);[r]=s.then?(await s)():s;let n=(0,i.createLogger)("git"),l=async(t,e)=>{if("GET"!==t.method)return e.setHeader("Allow","GET"),e.status(405).json({error:"Method not allowed"});let a=t.query.tmuxSession;if(!a)return e.status(400).json({error:"missing-param",message:"tmuxSession parameter required"});try{let t=await (0,r.getGitStatus)(a);return e.status(200).json({status:t})}catch(a){let t=a instanceof Error?a.message:String(a);if("tmux-session-not-found"===t)return e.status(404).json({error:"tmux-session-not-found"});return n.error(`status query failed: ${t}`),e.status(500).json({error:"git-error"})}};t.s(["default",0,l]),a()}catch(t){a(t)}},!1),231650,t=>t.a(async(e,a)=>{try{var r=t.i(926747),i=t.i(190406),s=t.i(244898),n=t.i(262950),l=t.i(70287),o=t.i(7031),u=t.i(181927),c=t.i(846432),p=e([l]);[l]=p.then?(await p)():p;let m=(0,n.hoist)(l,"default"),h=(0,n.hoist)(l,"config"),y=new s.PagesAPIRouteModule({definition:{kind:i.RouteKind.PAGES_API,page:"/api/git/status",pathname:"/api/git/status",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function d(t,e,a){a.requestMeta&&(0,c.setRequestMeta)(t,a.requestMeta),y.isDev&&(0,c.addRequestMeta)(t,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/git/status";i=i.replace(/\/index$/,"")||"/";let s=await y.prepare(t,e,{srcPage:i});if(!s){e.statusCode=400,e.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:l,prerenderManifest:p,routerServerContext:d}=s;try{let a,r=t.method||"GET",s=(0,o.getTracer)(),c=s.getActiveScopeSpan(),m=!!(null==d?void 0:d.isWrappedByNextServer),h=y.instrumentationOnRequestError.bind(y),f=async o=>y.render(t,e,{query:{...n,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:y.isDev,page:"/api/git/status",internalRevalidate:null==d?void 0:d.revalidate,onError:(...e)=>h(t,...e)}).finally(()=>{if(!o)return;o.setAttributes({"http.status_code":e.statusCode,"next.rsc":!1});let t=s.getRootSpanAttributes();if(!t)return;if(t.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${t.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=t.get("next.route");if(n){let t=`${r} ${n}`;o.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),o.updateName(t),a&&a!==o&&(a.setAttribute("http.route",n),a.updateName(t))}else o.updateName(`${r} ${i}`)});m&&c?await f(c):(a=s.getActiveScopeSpan(),await s.withPropagatedContext(t.headers,()=>s.trace(u.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:o.SpanKind.SERVER,attributes:{"http.method":r,"http.target":t.url}},f),void 0,!m))}catch(t){if(y.isDev)throw t;(0,r.sendError)(e,500,"Internal Server Error")}finally{null==a.waitUntil||a.waitUntil.call(a,Promise.resolve())}}t.s(["config",0,h,"default",0,m,"handler",0,d]),a()}catch(t){a(t)}},!1)];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0-b6_mp._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[522734,(t,e,a)=>{e.exports=t.x("fs",()=>require("fs"))},713915,t=>{"use strict";var e=t.i(233405),a=t.i(924868),n=t.i(446786),i=t.i(814747);let l=(0,t.i(224361).promisify)(e.execFile),r=null,s=null,o=async()=>{let t=n.default.userInfo().shell||process.env.SHELL||"/bin/zsh";try{let{stdout:e}=await l(t,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{HOME:n.default.homedir(),NODE_ENV:"production",DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true"}});return e.toString().trim()}catch{return process.env.PATH||""}},u=async()=>r||(s||(s=o().then(t=>(r=t,s=null,t))),s),c=async(t,e,a)=>{try{let n=await u(),{stdout:i}=await l(t,e,{timeout:5e3,env:{...process.env,PATH:n}});return{installed:!0,version:a(i)}}catch{return{installed:!1,version:null}}},d=t=>t.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,f=[i.default.join(n.default.homedir(),".local","bin")],h=async()=>{for(let t of f)try{return await (0,a.access)(i.default.join(t,"claude")),t}catch{}return null},p=t=>t.installed&&null!==t.version&&parseFloat(t.version)>=2.9,m=async()=>{try{return await l("xcode-select",["-p"],{timeout:5e3}),{installed:!0}}catch{return{installed:!1}}},w=async()=>{r=await o();let[t,e,l]=await Promise.all([c("tmux",["-V"],d),c("git",["--version"],d),c("claude",["--version"],d)]),s=p(t)&&e.installed&&l.installed,u=l.installed?null:await h(),f=!1;if(l.installed||u)try{await (0,a.access)(i.default.join(n.default.homedir(),".claude")),f=!0}catch{}let w={tmux:{...t,compatible:p(t)},git:e,claude:{...l,binaryPath:u,loggedIn:f}};if(!s){let[t,e]=await Promise.all([c("brew",["--version"],d),m()]);w.brew=t,w.clt=e}return w},g=null,y=null,_=async()=>{r=await o();let[t,e,a]=await Promise.all([c("tmux",["-V"],d),c("git",["--version"],d),c("claude",["--version"],d)]);return{tmux:{...t,compatible:p(t)},git:e,claude:a}},$=async()=>g&&Date.now()-g.checkedAt<3e4?g.result:y||(y=_().then(t=>(g={result:t,checkedAt:Date.now()},y=null,t)).catch(t=>{throw y=null,t}));t.s(["getCachedRuntimePreflight",0,$,"getPreflightStatus",0,w,"getShellPath",0,u,"invalidateRuntimeCache",0,()=>{g=null,y=null}])},143511,t=>{"use strict";var e=t.i(924868);t.i(522734);var a=t.i(814747),n=t.i(446786),i=t.i(233405),l=t.i(224361),r=t.i(713915),s=t.i(544538);let o=(0,l.promisify)(i.execFile),u=a.default.join(n.default.homedir(),".claude"),c=a.default.join(u,"sessions"),d=a.default.join(u,"projects"),f=[a.default.join(n.default.homedir(),".local","bin","claude")],h=t=>{let e=t.replace(/[^a-zA-Z0-9]/g,"-");if(e.length<=200)return e;let a=p(t);return`${e.slice(0,200)}-${a}`},p=t=>{let e=0;for(let a=0;a<t.length;a++)e=(e<<5)-e+t.charCodeAt(a)|0;return Math.abs(e).toString(36)},m=async t=>{try{let{stdout:e}=await o("pgrep",["-P",String(t)]);return e.trim().split("\n").map(t=>parseInt(t,10)).filter(t=>!Number.isNaN(t))}catch{return[]}},w=async t=>{if(s.isLinux)try{return await e.default.readlink(`/proc/${t}/cwd`)}catch{return null}try{let{stdout:e}=await o("lsof",["-a","-p",String(t),"-d","cwd","-Fn"]),a=e.split("\n").find(t=>t.startsWith("n/"));return a?a.slice(1):null}catch{return null}},g=async t=>{for(let e of t)try{let{stdout:t}=await o("ps",["-p",String(e),"-o","args="]),a=t.trim().match(/claude\s+--resume\s+([0-9a-f-]{36})/);if(a){let t=await w(e);return{pid:e,sessionId:a[1],cwd:t}}}catch{continue}return null},y=async t=>{try{let a=await e.default.readFile(t,"utf-8"),n=JSON.parse(a);if(!n.pid||!n.sessionId)return null;return n}catch{return null}},_=async(t,n)=>{let i=a.default.join(t,`${n}.jsonl`);try{return await e.default.access(i),i}catch{return null}},$=async()=>{try{return await o("claude",["--version"],{timeout:5e3,env:{...process.env,PATH:await (0,r.getShellPath)()}}),!0}catch{for(let t of f)try{return await e.default.access(t),!0}catch{}return!1}},j=async(t,e)=>{for(let a of e??await m(t))try{let{stdout:t}=await o("ps",["-p",String(a),"-o","args="]);if(t.trim().includes("claude"))return!0}catch{continue}return!1},S=async(t,n)=>{try{await e.default.access(u)}catch{return{status:await $()?"not-initialized":"not-installed",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null}}let i=n??await m(t);if(0===i.length)return{status:"not-running",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null};let l=new Set(i);try{for(let t of(await e.default.readdir(c)).filter(t=>t.endsWith(".json"))){let n=await y(a.default.join(c,t));if(!n||!l.has(n.pid))continue;let i="";try{let{stdout:t}=await o("ps",["-p",String(n.pid),"-o","args="]);i=t.trim()}catch{try{await e.default.unlink(a.default.join(c,t))}catch{}continue}if(!i.includes("claude")){try{await e.default.unlink(a.default.join(c,t))}catch{}continue}let r=h(n.cwd),s=a.default.join(d,r),u=await _(s,n.sessionId),f=n.sessionId;if(!u){let t=i.match(/--resume\s+([0-9a-f-]{36})/);if(t){let e=t[1],a=await _(s,e);a&&(u=a,f=e)}}return{status:"running",sessionId:f,jsonlPath:u,pid:n.pid,startedAt:n.startedAt,cwd:n.cwd}}}catch{}let r=await g(i);if(r){let t=r.cwd;if(t){let e=h(t),n=a.default.join(d,e),i=await _(n,r.sessionId);return{status:"running",sessionId:r.sessionId,jsonlPath:i,pid:r.pid,startedAt:null,cwd:t}}}return{status:"not-running",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null}};t.s(["detectActiveSession",0,S,"getChildPids",0,m,"isClaudeRunning",0,j,"toClaudeProjectName",0,h])},796902,t=>{"use strict";var e=t.i(814747),a=t.i(446786);let n=e.default.join(a.default.homedir(),".purplemux"),i=e.default.join(n,"statusline.sh"),l=e.default.join(n,"rate-limits.json"),r=`#!/bin/sh
1
+ module.exports=[522734,(t,e,a)=>{e.exports=t.x("fs",()=>require("fs"))},713915,t=>{"use strict";var e=t.i(233405),a=t.i(924868),n=t.i(446786),i=t.i(814747);let l=(0,t.i(224361).promisify)(e.execFile),r=null,s=null,o=async()=>{let t=n.default.userInfo().shell||process.env.SHELL||"/bin/bash";try{let{stdout:e}=await l(t,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{HOME:n.default.homedir(),NODE_ENV:"production",DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true"}});return e.toString().trim()}catch{return process.env.PATH||""}},u=async()=>r||(s||(s=o().then(t=>(r=t,s=null,t))),s),c=async(t,e,a)=>{try{let n=await u(),{stdout:i}=await l(t,e,{timeout:5e3,env:{...process.env,PATH:n}});return{installed:!0,version:a(i)}}catch{return{installed:!1,version:null}}},d=t=>t.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,f=[i.default.join(n.default.homedir(),".local","bin")],h=async()=>{for(let t of f)try{return await (0,a.access)(i.default.join(t,"claude")),t}catch{}return null},p=t=>t.installed&&null!==t.version&&parseFloat(t.version)>=2.9,m=async()=>{r=await o();let[t,e,l]=await Promise.all([c("tmux",["-V"],d),c("git",["--version"],d),c("claude",["--version"],d)]),s=(p(t)&&e.installed&&l.installed,l.installed?null:await h()),u=!1;if(l.installed||s)try{await (0,a.access)(i.default.join(n.default.homedir(),".claude")),u=!0}catch{}return{tmux:{...t,compatible:p(t)},git:e,claude:{...l,binaryPath:s,loggedIn:u}}},w=null,g=null,y=async()=>{r=await o();let[t,e,a]=await Promise.all([c("tmux",["-V"],d),c("git",["--version"],d),c("claude",["--version"],d)]);return{tmux:{...t,compatible:p(t)},git:e,claude:a}},_=async()=>w&&Date.now()-w.checkedAt<3e4?w.result:g||(g=y().then(t=>(w={result:t,checkedAt:Date.now()},g=null,t)).catch(t=>{throw g=null,t}));t.s(["getCachedRuntimePreflight",0,_,"getPreflightStatus",0,m,"getShellPath",0,u,"invalidateRuntimeCache",0,()=>{w=null,g=null}])},143511,t=>{"use strict";var e=t.i(924868);t.i(522734);var a=t.i(814747),n=t.i(446786),i=t.i(233405),l=t.i(224361),r=t.i(713915),s=t.i(544538);let o=(0,l.promisify)(i.execFile),u=a.default.join(n.default.homedir(),".claude"),c=a.default.join(u,"sessions"),d=a.default.join(u,"projects"),f=[a.default.join(n.default.homedir(),".local","bin","claude")],h=t=>{let e=t.replace(/[^a-zA-Z0-9]/g,"-");if(e.length<=200)return e;let a=p(t);return`${e.slice(0,200)}-${a}`},p=t=>{let e=0;for(let a=0;a<t.length;a++)e=(e<<5)-e+t.charCodeAt(a)|0;return Math.abs(e).toString(36)},m=async t=>{try{let{stdout:e}=await o("pgrep",["-P",String(t)]);return e.trim().split("\n").map(t=>parseInt(t,10)).filter(t=>!Number.isNaN(t))}catch{return[]}},w=async t=>{if(s.isLinux)try{return await e.default.readlink(`/proc/${t}/cwd`)}catch{return null}try{let{stdout:e}=await o("lsof",["-a","-p",String(t),"-d","cwd","-Fn"]),a=e.split("\n").find(t=>t.startsWith("n/"));return a?a.slice(1):null}catch{return null}},g=async t=>{for(let e of t)try{let{stdout:t}=await o("ps",["-p",String(e),"-o","args="]),a=t.trim().match(/claude\s+--resume\s+([0-9a-f-]{36})/);if(a){let t=await w(e);return{pid:e,sessionId:a[1],cwd:t}}}catch{continue}return null},y=async t=>{try{let a=await e.default.readFile(t,"utf-8"),n=JSON.parse(a);if(!n.pid||!n.sessionId)return null;return n}catch{return null}},_=async(t,n)=>{let i=a.default.join(t,`${n}.jsonl`);try{return await e.default.access(i),i}catch{return null}},$=async()=>{try{return await o("claude",["--version"],{timeout:5e3,env:{...process.env,PATH:await (0,r.getShellPath)()}}),!0}catch{for(let t of f)try{return await e.default.access(t),!0}catch{}return!1}},j=async(t,e)=>{for(let a of e??await m(t))try{let{stdout:t}=await o("ps",["-p",String(a),"-o","args="]);if(t.trim().includes("claude"))return!0}catch{continue}return!1},S=async(t,n)=>{try{await e.default.access(u)}catch{return{status:await $()?"not-initialized":"not-installed",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null}}let i=n??await m(t);if(0===i.length)return{status:"not-running",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null};let l=new Set(i);try{for(let t of(await e.default.readdir(c)).filter(t=>t.endsWith(".json"))){let n=await y(a.default.join(c,t));if(!n||!l.has(n.pid))continue;let i="";try{let{stdout:t}=await o("ps",["-p",String(n.pid),"-o","args="]);i=t.trim()}catch{try{await e.default.unlink(a.default.join(c,t))}catch{}continue}if(!i.includes("claude")){try{await e.default.unlink(a.default.join(c,t))}catch{}continue}let r=h(n.cwd),s=a.default.join(d,r),u=await _(s,n.sessionId),f=n.sessionId;if(!u){let t=i.match(/--resume\s+([0-9a-f-]{36})/);if(t){let e=t[1],a=await _(s,e);a&&(u=a,f=e)}}return{status:"running",sessionId:f,jsonlPath:u,pid:n.pid,startedAt:n.startedAt,cwd:n.cwd}}}catch{}let r=await g(i);if(r){let t=r.cwd;if(t){let e=h(t),n=a.default.join(d,e),i=await _(n,r.sessionId);return{status:"running",sessionId:r.sessionId,jsonlPath:i,pid:r.pid,startedAt:null,cwd:t}}}return{status:"not-running",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null}};t.s(["detectActiveSession",0,S,"getChildPids",0,m,"isClaudeRunning",0,j,"toClaudeProjectName",0,h])},796902,t=>{"use strict";var e=t.i(814747),a=t.i(446786);let n=e.default.join(a.default.homedir(),".purplemux"),i=e.default.join(n,"statusline.sh"),l=e.default.join(n,"rate-limits.json"),r=`#!/bin/sh
2
2
  input=$(cat)
3
3
  OUTPUT="$HOME/.purplemux/rate-limits.json"
4
4
  HAS_LIMITS=$(echo "$input" | jq -r 'if .rate_limits.five_hour or .rate_limits.seven_day then "yes" else "no" end' 2>/dev/null)
@@ -1,6 +1,6 @@
1
- module.exports=[99780,(e,t,a)=>{t.exports=e.x("dayjs-b172c54fd06eb767",()=>require("dayjs-b172c54fd06eb767"))},975925,e=>{"use strict";var t=e.i(99780);let a=e=>{let a=new Date;switch(e){case"today":return{start:(0,t.default)().startOf("day").toDate(),end:a};case"7d":return{start:(0,t.default)().subtract(7,"day").startOf("day").toDate(),end:a};case"30d":return{start:(0,t.default)().subtract(30,"day").startOf("day").toDate(),end:a};case"all":return{start:new Date(0),end:a}}};e.s(["isDateStringWithinPeriod",0,(e,s)=>{if("all"===s)return!0;let{start:n,end:r}=a(s),i=(0,t.default)(e).toDate();return i>=n&&i<=r},"isWithinPeriod",0,(e,t)=>{if("all"===t)return!0;let{start:s,end:n}=a(t),r=new Date(e);return r>=s&&r<=n},"parsePeriod",0,e=>"today"===e||"7d"===e||"30d"===e||"all"===e?e:"all"])},270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},522734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},713915,e=>{"use strict";var t=e.i(233405),a=e.i(924868),s=e.i(446786),n=e.i(814747);let r=(0,e.i(224361).promisify)(t.execFile),i=null,o=null,u=async()=>{let e=s.default.userInfo().shell||process.env.SHELL||"/bin/zsh";try{let{stdout:t}=await r(e,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{HOME:s.default.homedir(),NODE_ENV:"production",DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true"}});return t.toString().trim()}catch{return process.env.PATH||""}},l=async()=>i||(o||(o=u().then(e=>(i=e,o=null,e))),o),c=async(e,t,a)=>{try{let s=await l(),{stdout:n}=await r(e,t,{timeout:5e3,env:{...process.env,PATH:s}});return{installed:!0,version:a(n)}}catch{return{installed:!1,version:null}}},d=e=>e.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,p=[n.default.join(s.default.homedir(),".local","bin")],f=async()=>{for(let e of p)try{return await (0,a.access)(n.default.join(e,"claude")),e}catch{}return null},m=e=>e.installed&&null!==e.version&&parseFloat(e.version)>=2.9,h=async()=>{try{return await r("xcode-select",["-p"],{timeout:5e3}),{installed:!0}}catch{return{installed:!1}}},y=async()=>{i=await u();let[e,t,r]=await Promise.all([c("tmux",["-V"],d),c("git",["--version"],d),c("claude",["--version"],d)]),o=m(e)&&t.installed&&r.installed,l=r.installed?null:await f(),p=!1;if(r.installed||l)try{await (0,a.access)(n.default.join(s.default.homedir(),".claude")),p=!0}catch{}let y={tmux:{...e,compatible:m(e)},git:t,claude:{...r,binaryPath:l,loggedIn:p}};if(!o){let[e,t]=await Promise.all([c("brew",["--version"],d),h()]);y.brew=e,y.clt=t}return y},g=null,C=null,w=async()=>{i=await u();let[e,t,a]=await Promise.all([c("tmux",["-V"],d),c("git",["--version"],d),c("claude",["--version"],d)]);return{tmux:{...e,compatible:m(e)},git:t,claude:a}},b=async()=>g&&Date.now()-g.checkedAt<3e4?g.result:C||(C=w().then(e=>(g={result:e,checkedAt:Date.now()},C=null,e)).catch(e=>{throw C=null,e}));e.s(["getCachedRuntimePreflight",0,b,"getPreflightStatus",0,y,"getShellPath",0,l,"invalidateRuntimeCache",0,()=>{g=null,C=null}])},319668,(e,t,a)=>{t.exports=e.x("readline",()=>require("readline"))},177579,e=>{"use strict";var t=e.i(924868),a=e.i(522734),s=e.i(814747),n=e.i(446786),r=e.i(319668),i=e.i(99780);let o=s.default.join(n.default.homedir(),".purplemux","stats"),u=s.default.join(o,"cache.json"),l=s.default.join(n.default.homedir(),".claude","projects"),c=async()=>{let e=[];try{for(let a of(await t.default.readdir(l))){let n=s.default.join(l,a),r=await t.default.stat(n).catch(()=>null);if(r?.isDirectory())for(let a of(await t.default.readdir(n).catch(()=>[])))a.endsWith(".jsonl")&&!/^agent-/.test(a)&&e.push(s.default.join(n,a))}}catch{}return e},d=async(e,t)=>{let s=new Map,n=new Map;try{let i=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of r.default.createInterface({input:i,crlfDelay:1/0}))if(e.trim())try{let a=JSON.parse(e),r=String(a.timestamp??"");if(!r)continue;let i=r.slice(0,10);if(!t.has(i))continue;let o=String(a.type??"");if("user"!==o&&"assistant"!==o)continue;let u=String(a.sessionId??""),l=String(new Date(r).getHours()),c=s.get(i);c||(c={messageCount:0,sessionCount:0,toolCallCount:0,hourCounts:{},modelTokens:{},sessions:[]},s.set(i,c),n.set(i,new Map));let d=n.get(i);if("user"===o&&(c.messageCount++,c.hourCounts[l]=(c.hourCounts[l]??0)+1,u)){let e=d.get(u);e?(e.messages++,r>e.end&&(e.end=r),r<e.start&&(e.start=r)):d.set(u,{start:r,end:r,messages:1})}if("assistant"===o){let e=a.message;if(!e)continue;let t=e.content;if(Array.isArray(t)){let e=t.filter(e=>"object"==typeof e&&null!==e&&"tool_use"===e.type).length;c.toolCallCount+=e}let s=String(e.model??""),n=e.usage;if(s&&!s.startsWith("<")&&n){c.modelTokens[s]||(c.modelTokens[s]={input:0,output:0,cacheRead:0,cacheCreation:0});let e=c.modelTokens[s];e.input+=Number(n.input_tokens??0),e.output+=Number(n.output_tokens??0),e.cacheRead+=Number(n.cache_read_input_tokens??0),e.cacheCreation+=Number(n.cache_creation_input_tokens??0)}if(u){let e=d.get(u);e?(r>e.end&&(e.end=r),r<e.start&&(e.start=r)):d.set(u,{start:r,end:r,messages:0})}}}catch{}}catch{}for(let[e,t]of n){let a=s.get(e);a&&(a.sessionCount=t.size,a.sessions=Array.from(t.entries()).map(([e,t])=>({id:e,start:t.start,end:t.end,messages:t.messages})))}return s},p=async(e,t)=>{let a=[],s=0,n=async()=>{for(;s<e.length;){let t=s++;a[t]=await e[t]()}},r=Array.from({length:Math.min(t,e.length)},()=>n());return await Promise.all(r),a},f=(e,t)=>{for(let[a,s]of(e.messageCount+=t.messageCount,e.toolCallCount+=t.toolCallCount,Object.entries(t.hourCounts)))e.hourCounts[a]=(e.hourCounts[a]??0)+s;for(let[a,s]of Object.entries(t.modelTokens)){e.modelTokens[a]||(e.modelTokens[a]={input:0,output:0,cacheRead:0,cacheCreation:0});let t=e.modelTokens[a];t.input+=s.input,t.output+=s.output,t.cacheRead+=s.cacheRead,t.cacheCreation+=s.cacheCreation}let a=new Set(e.sessions.map(e=>e.id));for(let s of t.sessions)if(a.has(s.id)){let t=e.sessions.find(e=>e.id===s.id);t.messages+=s.messages,s.start<t.start&&(t.start=s.start),s.end>t.end&&(t.end=s.end)}else e.sessions.push(s);e.sessionCount=e.sessions.length},m=async()=>{try{let e=await t.default.readFile(u,"utf-8"),a=JSON.parse(e);if(1!==a.version)return null;return a}catch{return null}},h=async e=>{await t.default.mkdir(o,{recursive:!0}),await t.default.writeFile(u,JSON.stringify(e),"utf-8")},y=null,g=async e=>{try{let t=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of r.default.createInterface({input:t,crlfDelay:1/0}))if(e.trim())try{let t=JSON.parse(e),a=String(t.timestamp??"");if(a)return a.slice(0,10)}catch{}}catch{}return null},C=async()=>{let e=await c();if(0===e.length)return null;let t=e.map(e=>()=>g(e)),a=(await p(t,10)).filter(e=>null!==e);return 0===a.length?null:(a.sort(),a[0])},w=async e=>{if(0===e.size)return new Map;let t=(await c()).map(t=>()=>d(t,e)),a=await p(t,10),s=new Map;for(let e of a)for(let[t,a]of e){let e=s.get(t);e?f(e,a):s.set(t,a)}return s},b=async()=>{if(y&&Date.now()<y.expiresAt)return y.data;let e=(0,i.default)().subtract(1,"day").format("YYYY-MM-DD"),t=(0,i.default)().format("YYYY-MM-DD"),a=await m(),s=new Set;if(s.add(t),a){if(a.lastComputedDate<e){let t=(0,i.default)(a.lastComputedDate).add(1,"day"),n=(0,i.default)(e);for(;t.isBefore(n)||t.isSame(n);){let e=t.format("YYYY-MM-DD");a.days[e]||s.add(e),t=t.add(1,"day")}}}else{a={version:1,lastComputedDate:"",days:{}};let n=await C();if(!n)return S(a,t);let r=(0,i.default)(n),o=(0,i.default)(e);for(;r.isBefore(o)||r.isSame(o);)s.add(r.format("YYYY-MM-DD")),r=r.add(1,"day")}let n=await w(s);for(let[e,s]of n)e!==t&&(a.days[e]=s);a.lastComputedDate=e,await h(a);let r=n.get(t)??null,o=S(a,t,r);return y={data:o,expiresAt:Date.now()+3e5},o},S=(e,t,a)=>{let s=[],n=[],r={},i={},o={},u=0,l=0,c="",d={sessionId:"",duration:0,messageCount:0,timestamp:""},p=Object.entries(e.days);for(let[e,f]of(a&&p.push([t,a]),p.sort((e,t)=>e[0].localeCompare(t[0])),p)){!c&&f.messageCount>0&&(c=e),s.push({date:e,messageCount:f.messageCount,sessionCount:f.sessionCount,toolCallCount:f.toolCallCount});let t={};for(let[e,a]of Object.entries(f.modelTokens)){t[e]={input:a.input,output:a.output,cacheRead:a.cacheRead,cacheCreation:a.cacheCreation},r[e]||(r[e]={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,webSearchRequests:0,costUSD:0,contextWindow:0,maxOutputTokens:0});let s=r[e];s.inputTokens+=a.input,s.outputTokens+=a.output,s.cacheReadInputTokens+=a.cacheRead,s.cacheCreationInputTokens+=a.cacheCreation}n.push({date:e,tokensByModel:t});let a=new Date(e).getDay();for(let[e,t]of Object.entries(f.hourCounts)){i[e]=(i[e]??0)+t;let s=`${a}-${e}`;o[s]=(o[s]??0)+t}for(let e of(u+=f.sessionCount,l+=f.messageCount,f.sessions)){let t=new Date(e.end).getTime()-new Date(e.start).getTime();t>d.duration&&(d={sessionId:e.id,duration:t,messageCount:e.messages,timestamp:e.start})}}return{version:1,lastComputedDate:t,dailyActivity:s,dailyModelTokens:n,modelUsage:r,totalSessions:u,totalMessages:l,longestSession:d,firstSessionDate:c,hourCounts:i,dayHourCounts:o,totalSpeculationTimeSavedMs:0}};e.s(["collectJsonlFiles",0,c,"getStatsCache",0,b])},7991,e=>{"use strict";var t=e.i(924868),a=e.i(814747),s=e.i(446786),n=e.i(522734),r=e.i(319668),i=e.i(233405),o=e.i(713915),u=e.i(177579);let l=a.default.join(s.default.homedir(),".purplemux","stats","daily-reports"),c=async()=>{let e={};try{for(let s of(await t.default.readdir(l)))if(s.endsWith(".json"))try{let n=await t.default.readFile(a.default.join(l,s),"utf-8"),r=JSON.parse(n);r.date&&r.brief&&(e[r.date]=r)}catch{}}catch{}return e},d=async e=>{await t.default.mkdir(l,{recursive:!0}),await t.default.writeFile(a.default.join(l,`${e.date}.json`),JSON.stringify(e,null,2),"utf-8")},p=e=>{let t=s.default.homedir();return(e.startsWith(t)?e.slice(t.length+1):e).replace(/^Workspace\/github\.com\//g,"").replace(/^Workspace\/gitlab\.kolonfnc\.com\//g,"gitlab/").replace(/^Documents\//g,"docs/").replace(/^Downloads/g,"Downloads")},f=async e=>{let t=await (0,u.collectJsonlFiles)(),s=[];for(let i of t){let t=[],o=[],u=0,l="";try{let a=(0,n.createReadStream)(i,{encoding:"utf-8"});for await(let s of r.default.createInterface({input:a,crlfDelay:1/0}))if(s.trim())try{let a=JSON.parse(s),n=String(a.timestamp??"");if(!n.startsWith(e))continue;o.push(n);let r=String(a.type??"");if(l||"string"!=typeof a.cwd||(l=a.cwd),"user"===r){let e=a.message;if(!e)continue;let s=e.content,r="";if("string"==typeof s)r=s.slice(0,300);else if(Array.isArray(s)){let e=[];for(let t of s)"object"==typeof t&&null!==t&&"text"===t.type&&e.push(String(t.text??"").slice(0,300));r=e.join(" | ")}if(r.includes("<command-message>")){let e=r.match(/<command-name>\/([^<]+)<\/command-name>/);r=`[Command: ${e?e[1]:"unknown"}]`}if(r.includes("<local-command-caveat>")||r.includes("<task-notification>"))continue;r.trim()&&t.push({time:n.slice(11,16),text:r.slice(0,200)})}if("assistant"===r){let e=a.message;if(!e)continue;let t=e.content;Array.isArray(t)&&(u+=t.filter(e=>"object"==typeof e&&null!==e&&"tool_use"===e.type).length)}}catch{}}catch{}if(o.length>0&&t.length>0){let e=l?p(l):a.default.basename(a.default.dirname(i));s.push({project:e,start:Math.min(...o.map(e=>new Date(e).getTime())).toString(),msgCount:t.length,toolCount:u,firstMessage:t[0].text})}}return s.sort((e,t)=>Number(e.start)-Number(t.start)),s},m=async(e,t)=>{let a=await (0,o.getShellPath)();return new Promise((s,n)=>{let r=(0,i.execFile)("claude",["-p"],{timeout:12e4,maxBuffer:1048576,env:{...process.env,PATH:a}},(e,t)=>{e?n(Error(`claude -p failed: ${e.message}`)):s(t.trim())});r.stdin?.write(`${t}
1
+ module.exports=[99780,(e,t,a)=>{t.exports=e.x("dayjs-b172c54fd06eb767",()=>require("dayjs-b172c54fd06eb767"))},975925,e=>{"use strict";var t=e.i(99780);let a=e=>{let a=new Date;switch(e){case"today":return{start:(0,t.default)().startOf("day").toDate(),end:a};case"7d":return{start:(0,t.default)().subtract(7,"day").startOf("day").toDate(),end:a};case"30d":return{start:(0,t.default)().subtract(30,"day").startOf("day").toDate(),end:a};case"all":return{start:new Date(0),end:a}}};e.s(["isDateStringWithinPeriod",0,(e,s)=>{if("all"===s)return!0;let{start:n,end:r}=a(s),o=(0,t.default)(e).toDate();return o>=n&&o<=r},"isWithinPeriod",0,(e,t)=>{if("all"===t)return!0;let{start:s,end:n}=a(t),r=new Date(e);return r>=s&&r<=n},"parsePeriod",0,e=>"today"===e||"7d"===e||"30d"===e||"all"===e?e:"all"])},270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},522734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},713915,e=>{"use strict";var t=e.i(233405),a=e.i(924868),s=e.i(446786),n=e.i(814747);let r=(0,e.i(224361).promisify)(t.execFile),o=null,i=null,u=async()=>{let e=s.default.userInfo().shell||process.env.SHELL||"/bin/bash";try{let{stdout:t}=await r(e,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{HOME:s.default.homedir(),NODE_ENV:"production",DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true"}});return t.toString().trim()}catch{return process.env.PATH||""}},l=async()=>o||(i||(i=u().then(e=>(o=e,i=null,e))),i),c=async(e,t,a)=>{try{let s=await l(),{stdout:n}=await r(e,t,{timeout:5e3,env:{...process.env,PATH:s}});return{installed:!0,version:a(n)}}catch{return{installed:!1,version:null}}},d=e=>e.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,p=[n.default.join(s.default.homedir(),".local","bin")],f=async()=>{for(let e of p)try{return await (0,a.access)(n.default.join(e,"claude")),e}catch{}return null},m=e=>e.installed&&null!==e.version&&parseFloat(e.version)>=2.9,h=async()=>{o=await u();let[e,t,r]=await Promise.all([c("tmux",["-V"],d),c("git",["--version"],d),c("claude",["--version"],d)]),i=(m(e)&&t.installed&&r.installed,r.installed?null:await f()),l=!1;if(r.installed||i)try{await (0,a.access)(n.default.join(s.default.homedir(),".claude")),l=!0}catch{}return{tmux:{...e,compatible:m(e)},git:t,claude:{...r,binaryPath:i,loggedIn:l}}},y=null,g=null,C=async()=>{o=await u();let[e,t,a]=await Promise.all([c("tmux",["-V"],d),c("git",["--version"],d),c("claude",["--version"],d)]);return{tmux:{...e,compatible:m(e)},git:t,claude:a}},w=async()=>y&&Date.now()-y.checkedAt<3e4?y.result:g||(g=C().then(e=>(y={result:e,checkedAt:Date.now()},g=null,e)).catch(e=>{throw g=null,e}));e.s(["getCachedRuntimePreflight",0,w,"getPreflightStatus",0,h,"getShellPath",0,l,"invalidateRuntimeCache",0,()=>{y=null,g=null}])},319668,(e,t,a)=>{t.exports=e.x("readline",()=>require("readline"))},177579,e=>{"use strict";var t=e.i(924868),a=e.i(522734),s=e.i(814747),n=e.i(446786),r=e.i(319668),o=e.i(99780);let i=s.default.join(n.default.homedir(),".purplemux","stats"),u=s.default.join(i,"cache.json"),l=s.default.join(n.default.homedir(),".claude","projects"),c=async()=>{let e=[];try{for(let a of(await t.default.readdir(l))){let n=s.default.join(l,a),r=await t.default.stat(n).catch(()=>null);if(r?.isDirectory())for(let a of(await t.default.readdir(n).catch(()=>[])))a.endsWith(".jsonl")&&!/^agent-/.test(a)&&e.push(s.default.join(n,a))}}catch{}return e},d=async(e,t)=>{let s=new Map,n=new Map;try{let o=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of r.default.createInterface({input:o,crlfDelay:1/0}))if(e.trim())try{let a=JSON.parse(e),r=String(a.timestamp??"");if(!r)continue;let o=r.slice(0,10);if(!t.has(o))continue;let i=String(a.type??"");if("user"!==i&&"assistant"!==i)continue;let u=String(a.sessionId??""),l=String(new Date(r).getHours()),c=s.get(o);c||(c={messageCount:0,sessionCount:0,toolCallCount:0,hourCounts:{},modelTokens:{},sessions:[]},s.set(o,c),n.set(o,new Map));let d=n.get(o);if("user"===i&&(c.messageCount++,c.hourCounts[l]=(c.hourCounts[l]??0)+1,u)){let e=d.get(u);e?(e.messages++,r>e.end&&(e.end=r),r<e.start&&(e.start=r)):d.set(u,{start:r,end:r,messages:1})}if("assistant"===i){let e=a.message;if(!e)continue;let t=e.content;if(Array.isArray(t)){let e=t.filter(e=>"object"==typeof e&&null!==e&&"tool_use"===e.type).length;c.toolCallCount+=e}let s=String(e.model??""),n=e.usage;if(s&&!s.startsWith("<")&&n){c.modelTokens[s]||(c.modelTokens[s]={input:0,output:0,cacheRead:0,cacheCreation:0});let e=c.modelTokens[s];e.input+=Number(n.input_tokens??0),e.output+=Number(n.output_tokens??0),e.cacheRead+=Number(n.cache_read_input_tokens??0),e.cacheCreation+=Number(n.cache_creation_input_tokens??0)}if(u){let e=d.get(u);e?(r>e.end&&(e.end=r),r<e.start&&(e.start=r)):d.set(u,{start:r,end:r,messages:0})}}}catch{}}catch{}for(let[e,t]of n){let a=s.get(e);a&&(a.sessionCount=t.size,a.sessions=Array.from(t.entries()).map(([e,t])=>({id:e,start:t.start,end:t.end,messages:t.messages})))}return s},p=async(e,t)=>{let a=[],s=0,n=async()=>{for(;s<e.length;){let t=s++;a[t]=await e[t]()}},r=Array.from({length:Math.min(t,e.length)},()=>n());return await Promise.all(r),a},f=(e,t)=>{for(let[a,s]of(e.messageCount+=t.messageCount,e.toolCallCount+=t.toolCallCount,Object.entries(t.hourCounts)))e.hourCounts[a]=(e.hourCounts[a]??0)+s;for(let[a,s]of Object.entries(t.modelTokens)){e.modelTokens[a]||(e.modelTokens[a]={input:0,output:0,cacheRead:0,cacheCreation:0});let t=e.modelTokens[a];t.input+=s.input,t.output+=s.output,t.cacheRead+=s.cacheRead,t.cacheCreation+=s.cacheCreation}let a=new Set(e.sessions.map(e=>e.id));for(let s of t.sessions)if(a.has(s.id)){let t=e.sessions.find(e=>e.id===s.id);t.messages+=s.messages,s.start<t.start&&(t.start=s.start),s.end>t.end&&(t.end=s.end)}else e.sessions.push(s);e.sessionCount=e.sessions.length},m=async()=>{try{let e=await t.default.readFile(u,"utf-8"),a=JSON.parse(e);if(1!==a.version)return null;return a}catch{return null}},h=async e=>{await t.default.mkdir(i,{recursive:!0}),await t.default.writeFile(u,JSON.stringify(e),"utf-8")},y=null,g=async e=>{try{let t=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of r.default.createInterface({input:t,crlfDelay:1/0}))if(e.trim())try{let t=JSON.parse(e),a=String(t.timestamp??"");if(a)return a.slice(0,10)}catch{}}catch{}return null},C=async()=>{let e=await c();if(0===e.length)return null;let t=e.map(e=>()=>g(e)),a=(await p(t,10)).filter(e=>null!==e);return 0===a.length?null:(a.sort(),a[0])},w=async e=>{if(0===e.size)return new Map;let t=(await c()).map(t=>()=>d(t,e)),a=await p(t,10),s=new Map;for(let e of a)for(let[t,a]of e){let e=s.get(t);e?f(e,a):s.set(t,a)}return s},b=async()=>{if(y&&Date.now()<y.expiresAt)return y.data;let e=(0,o.default)().subtract(1,"day").format("YYYY-MM-DD"),t=(0,o.default)().format("YYYY-MM-DD"),a=await m(),s=new Set;if(s.add(t),a){if(a.lastComputedDate<e){let t=(0,o.default)(a.lastComputedDate).add(1,"day"),n=(0,o.default)(e);for(;t.isBefore(n)||t.isSame(n);){let e=t.format("YYYY-MM-DD");a.days[e]||s.add(e),t=t.add(1,"day")}}}else{a={version:1,lastComputedDate:"",days:{}};let n=await C();if(!n)return S(a,t);let r=(0,o.default)(n),i=(0,o.default)(e);for(;r.isBefore(i)||r.isSame(i);)s.add(r.format("YYYY-MM-DD")),r=r.add(1,"day")}let n=await w(s);for(let[e,s]of n)e!==t&&(a.days[e]=s);a.lastComputedDate=e,await h(a);let r=n.get(t)??null,i=S(a,t,r);return y={data:i,expiresAt:Date.now()+3e5},i},S=(e,t,a)=>{let s=[],n=[],r={},o={},i={},u=0,l=0,c="",d={sessionId:"",duration:0,messageCount:0,timestamp:""},p=Object.entries(e.days);for(let[e,f]of(a&&p.push([t,a]),p.sort((e,t)=>e[0].localeCompare(t[0])),p)){!c&&f.messageCount>0&&(c=e),s.push({date:e,messageCount:f.messageCount,sessionCount:f.sessionCount,toolCallCount:f.toolCallCount});let t={};for(let[e,a]of Object.entries(f.modelTokens)){t[e]={input:a.input,output:a.output,cacheRead:a.cacheRead,cacheCreation:a.cacheCreation},r[e]||(r[e]={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,webSearchRequests:0,costUSD:0,contextWindow:0,maxOutputTokens:0});let s=r[e];s.inputTokens+=a.input,s.outputTokens+=a.output,s.cacheReadInputTokens+=a.cacheRead,s.cacheCreationInputTokens+=a.cacheCreation}n.push({date:e,tokensByModel:t});let a=new Date(e).getDay();for(let[e,t]of Object.entries(f.hourCounts)){o[e]=(o[e]??0)+t;let s=`${a}-${e}`;i[s]=(i[s]??0)+t}for(let e of(u+=f.sessionCount,l+=f.messageCount,f.sessions)){let t=new Date(e.end).getTime()-new Date(e.start).getTime();t>d.duration&&(d={sessionId:e.id,duration:t,messageCount:e.messages,timestamp:e.start})}}return{version:1,lastComputedDate:t,dailyActivity:s,dailyModelTokens:n,modelUsage:r,totalSessions:u,totalMessages:l,longestSession:d,firstSessionDate:c,hourCounts:o,dayHourCounts:i,totalSpeculationTimeSavedMs:0}};e.s(["collectJsonlFiles",0,c,"getStatsCache",0,b])},7991,e=>{"use strict";var t=e.i(924868),a=e.i(814747),s=e.i(446786),n=e.i(522734),r=e.i(319668),o=e.i(233405),i=e.i(713915),u=e.i(177579);let l=a.default.join(s.default.homedir(),".purplemux","stats","daily-reports"),c=async()=>{let e={};try{for(let s of(await t.default.readdir(l)))if(s.endsWith(".json"))try{let n=await t.default.readFile(a.default.join(l,s),"utf-8"),r=JSON.parse(n);r.date&&r.brief&&(e[r.date]=r)}catch{}}catch{}return e},d=async e=>{await t.default.mkdir(l,{recursive:!0}),await t.default.writeFile(a.default.join(l,`${e.date}.json`),JSON.stringify(e,null,2),"utf-8")},p=e=>{let t=s.default.homedir();return(e.startsWith(t)?e.slice(t.length+1):e).replace(/^Workspace\/github\.com\//g,"").replace(/^Workspace\/gitlab\.kolonfnc\.com\//g,"gitlab/").replace(/^Documents\//g,"docs/").replace(/^Downloads/g,"Downloads")},f=async e=>{let t=await (0,u.collectJsonlFiles)(),s=[];for(let o of t){let t=[],i=[],u=0,l="";try{let a=(0,n.createReadStream)(o,{encoding:"utf-8"});for await(let s of r.default.createInterface({input:a,crlfDelay:1/0}))if(s.trim())try{let a=JSON.parse(s),n=String(a.timestamp??"");if(!n.startsWith(e))continue;i.push(n);let r=String(a.type??"");if(l||"string"!=typeof a.cwd||(l=a.cwd),"user"===r){let e=a.message;if(!e)continue;let s=e.content,r="";if("string"==typeof s)r=s.slice(0,300);else if(Array.isArray(s)){let e=[];for(let t of s)"object"==typeof t&&null!==t&&"text"===t.type&&e.push(String(t.text??"").slice(0,300));r=e.join(" | ")}if(r.includes("<command-message>")){let e=r.match(/<command-name>\/([^<]+)<\/command-name>/);r=`[Command: ${e?e[1]:"unknown"}]`}if(r.includes("<local-command-caveat>")||r.includes("<task-notification>"))continue;r.trim()&&t.push({time:n.slice(11,16),text:r.slice(0,200)})}if("assistant"===r){let e=a.message;if(!e)continue;let t=e.content;Array.isArray(t)&&(u+=t.filter(e=>"object"==typeof e&&null!==e&&"tool_use"===e.type).length)}}catch{}}catch{}if(i.length>0&&t.length>0){let e=l?p(l):a.default.basename(a.default.dirname(o));s.push({project:e,start:Math.min(...i.map(e=>new Date(e).getTime())).toString(),msgCount:t.length,toolCount:u,firstMessage:t[0].text})}}return s.sort((e,t)=>Number(e.start)-Number(t.start)),s},m=async(e,t)=>{let a=await (0,i.getShellPath)();return new Promise((s,n)=>{let r=(0,o.execFile)("claude",["-p"],{timeout:12e4,maxBuffer:1048576,env:{...process.env,PATH:a}},(e,t)=>{e?n(Error(`claude -p failed: ${e.message}`)):s(t.trim())});r.stdin?.write(`${t}
2
2
 
3
- ${e}`),r.stdin?.end()})},h=async(e,t=!1)=>{var a;let s,n;if(!t){let t=await y(e);if(t)return t}let r=await f(e);if(0===r.length){let t={date:e,brief:"No activity recorded.",detail:"",generatedAt:new Date().toISOString()};return await d(t),t}let i=r.map(e=>{let t=new Date(Number(e.start)).toTimeString().slice(0,5);return`[${t}] [${e.project}] 메시지 ${e.msgCount}개, 도구 ${e.toolCount}회 | ${e.firstMessage}`}).join("\n"),{brief:o,detail:u}=(s=(a=await m(i,`${e}의 Claude 세션 내역을 요약해주세요.
3
+ ${e}`),r.stdin?.end()})},h=async(e,t=!1)=>{var a;let s,n;if(!t){let t=await y(e);if(t)return t}let r=await f(e);if(0===r.length){let t={date:e,brief:"No activity recorded.",detail:"",generatedAt:new Date().toISOString()};return await d(t),t}let o=r.map(e=>{let t=new Date(Number(e.start)).toTimeString().slice(0,5);return`[${t}] [${e.project}] 메시지 ${e.msgCount}개, 도구 ${e.toolCount}회 | ${e.firstMessage}`}).join("\n"),{brief:i,detail:u}=(s=(a=await m(o,`${e}의 Claude 세션 내역을 요약해주세요.
4
4
 
5
5
  출력 형식 (반드시 이 형식만 사용):
6
6
 
@@ -25,6 +25,6 @@ ${e}`),r.stdin?.end()})},h=async(e,t=!1)=>{var a;let s,n;if(!t){let t=await y(e)
25
25
  - 사소한 대화(인사, 1회성 질문, 커밋 명령)는 생략
26
26
  - 한글로 작성
27
27
 
28
- 데이터:`)).match(/\[BRIEF\]\s*\n([\s\S]*?)(?=\[DETAIL\])/),n=a.match(/\[DETAIL\]\s*\n([\s\S]*?)$/),{brief:s?s[1].replace(/[\s#\-]*$/,"").trim():a.slice(0,500),detail:n?n[1].trim():""}),l={date:e,brief:o,detail:u,generatedAt:new Date().toISOString()};return await d(l),l},y=async e=>{try{let s=await t.default.readFile(a.default.join(l,`${e}.json`),"utf-8"),n=JSON.parse(s);return n.date&&n.brief?n:null}catch{return null}};e.s(["generateDailyReport",0,h,"readAllCachedReports",0,c,"shortenCwd",0,p])},180112,e=>{"use strict";var t=e.i(924868),a=e.i(814747),s=e.i(446786),n=e.i(99780),r=e.i(975925);let i={"opus-4-6":{input:5,output:25,cacheWrite:6.25,cacheRead:.5},"opus-4-5":{input:5,output:25,cacheWrite:6.25,cacheRead:.5},"opus-4-1":{input:15,output:75,cacheWrite:18.75,cacheRead:1.5},"opus-4":{input:15,output:75,cacheWrite:18.75,cacheRead:1.5},"sonnet-4-6":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"sonnet-4-5":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"sonnet-4":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"sonnet-3-7":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"sonnet-3-5":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"haiku-4-5":{input:1,output:5,cacheWrite:1.25,cacheRead:.1},"haiku-3-5":{input:.8,output:4,cacheWrite:1,cacheRead:.08},"haiku-3":{input:.25,output:1.25,cacheWrite:.3,cacheRead:.03},"opus-3":{input:15,output:75,cacheWrite:18.75,cacheRead:1.5}},o={input:30,output:150,cacheWrite:37.5,cacheRead:3},u=a.default.join(s.default.homedir(),".claude","stats-cache.json"),l=(e,t,a,s,n)=>((e,t,a,s,n)=>{let r,u=((e,t,a,s,n,r=!1)=>{let u,l=(u=e.replace(/\[.*?\]$/,"").match(/claude-(\w+-[\d]+(?:-[\d]+)*)(?:-\d{8}|-v\d)?(?:\:\d)?$/))?u[1]:null;if(!l)return null;let c=r&&"opus-4-6"===l?o:i[l];return c?t/1e6*c.input+s/1e6*c.cacheWrite+n/1e6*c.cacheRead+a/1e6*c.output:null})(e,t,a,s,n);if(null!==u)return u;let l=e.toLowerCase();return t/1e6*(r=l.includes("opus")?i["opus-4-6"]:l.includes("haiku")?i["haiku-4-5"]:i["sonnet-4-6"]).input+s/1e6*r.cacheWrite+n/1e6*r.cacheRead+a/1e6*r.output})(e,t,a,n,s),c={version:0,lastComputedDate:"",dailyActivity:[],dailyModelTokens:[],modelUsage:{},totalSessions:0,totalMessages:0,longestSession:{sessionId:"",duration:0,messageCount:0,timestamp:""},firstSessionDate:"",hourCounts:{},dayHourCounts:{},totalSpeculationTimeSavedMs:0},d=e=>"object"!=typeof e||null===e?{}:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Number(t??0)])),p=async()=>{try{var e,a,s;let n=await t.default.readFile(u,"utf-8"),r=JSON.parse(n);return{version:Number(r.version??0),lastComputedDate:String(r.lastComputedDate??""),dailyActivity:(e=r.dailyActivity,Array.isArray(e)?e.filter(e=>"object"==typeof e&&null!==e).map(e=>({date:String(e.date??""),messageCount:Number(e.messageCount??0),sessionCount:Number(e.sessionCount??0),toolCallCount:Number(e.toolCallCount??0)})):[]),dailyModelTokens:(a=r.dailyModelTokens,Array.isArray(a)?a.filter(e=>"object"==typeof e&&null!==e).map(e=>({date:String(e.date??""),tokensByModel:"object"==typeof e.tokensByModel&&null!==e.tokensByModel?Object.fromEntries(Object.entries(e.tokensByModel).map(([e,t])=>[e,"number"==typeof t?{input:t,output:0,cacheRead:0,cacheCreation:0}:"object"==typeof t&&null!==t?{input:Number(t.input??0),output:Number(t.output??0),cacheRead:Number(t.cacheRead??0),cacheCreation:Number(t.cacheCreation??0)}:{input:0,output:0,cacheRead:0,cacheCreation:0}])):{}})):[]),modelUsage:(e=>{if("object"!=typeof e||null===e)return{};let t={};for(let[a,s]of Object.entries(e))"object"==typeof s&&null!==s&&(t[a]={inputTokens:Number(s.inputTokens??0),outputTokens:Number(s.outputTokens??0),cacheReadInputTokens:Number(s.cacheReadInputTokens??0),cacheCreationInputTokens:Number(s.cacheCreationInputTokens??0),webSearchRequests:Number(s.webSearchRequests??0),costUSD:Number(s.costUSD??0),contextWindow:Number(s.contextWindow??0),maxOutputTokens:Number(s.maxOutputTokens??0)});return t})(r.modelUsage),totalSessions:Number(r.totalSessions??0),totalMessages:Number(r.totalMessages??0),longestSession:(s=r.longestSession,"object"!=typeof s||null===s?{sessionId:"",duration:0,messageCount:0,timestamp:""}:{sessionId:String(s.sessionId??""),duration:Number(s.duration??0),messageCount:Number(s.messageCount??0),timestamp:String(s.timestamp??"")}),firstSessionDate:String(r.firstSessionDate??""),hourCounts:d(r.hourCounts),dayHourCounts:d(r.dayHourCounts),totalSpeculationTimeSavedMs:Number(r.totalSpeculationTimeSavedMs??0)}}catch{return c}},f=(e,t)=>{let a=(e=>{if("all"===e||"today"===e)return null;let t="7d"===e?7:30;return{prevStart:(0,n.default)().subtract(2*t,"day").startOf("day"),prevEnd:(0,n.default)().subtract(t,"day").startOf("day")}})(t);if(!a)return!1;let s=(0,n.default)(e);return(s.isAfter(a.prevStart)||s.isSame(a.prevStart))&&s.isBefore(a.prevEnd)};e.s(["buildOverview",0,(e,t)=>{let a,s,i,o,u=e.dailyActivity.filter(e=>(0,r.isDateStringWithinPeriod)(e.date,t)),c=e.dailyModelTokens.filter(e=>(0,r.isDateStringWithinPeriod)(e.date,t)),d="all"===t?e.totalSessions:u.reduce((e,t)=>e+t.sessionCount,0),p="all"===t?e.totalMessages:u.reduce((e,t)=>e+t.messageCount,0),m=u.reduce((e,t)=>e+t.toolCallCount,0),h=(a=e.dailyActivity,s=t,a.filter(e=>f(e.date,s))),y=h.reduce((e,t)=>e+t.sessionCount,0),g=h.reduce((e,t)=>e+t.messageCount,0),C={};if("all"===t)for(let[t,a]of Object.entries(e.modelUsage))C[t]={input:a.inputTokens,output:a.outputTokens,cacheRead:a.cacheReadInputTokens,cacheCreation:a.cacheCreationInputTokens,cost:l(t,a.inputTokens,a.outputTokens,a.cacheReadInputTokens,a.cacheCreationInputTokens)};else{for(let e of c)for(let[t,a]of Object.entries(e.tokensByModel))C[t]||(C[t]={input:0,output:0,cacheRead:0,cacheCreation:0,cost:0}),C[t].input+=a.input,C[t].output+=a.output,C[t].cacheRead+=a.cacheRead,C[t].cacheCreation+=a.cacheCreation;for(let[t,a]of Object.entries(C)){let s=e.modelUsage[t];if(!s)continue;let n=s.inputTokens+s.outputTokens+s.cacheReadInputTokens+s.cacheCreationInputTokens,r=a.input+a.output+a.cacheRead+a.cacheCreation;n>0&&(a.cost=r/n*l(t,s.inputTokens,s.outputTokens,s.cacheReadInputTokens,s.cacheCreationInputTokens))}}let w=c.map(e=>{let t=0,a=0,s=0,n=0;for(let r of Object.values(e.tokensByModel))t+=r.input,a+=r.output,s+=r.cacheRead,n+=r.cacheCreation;return{date:e.date,input:t,output:a,cacheRead:s,cacheCreation:n}}),b=(0,n.default)().format("YYYY-MM-DD"),S=(0,n.default)().startOf("month").format("YYYY-MM-DD"),T=e.dailyActivity.find(e=>e.date===b)?.messageCount??0,k=e.dailyActivity.filter(e=>e.date>=S).reduce((e,t)=>e+t.messageCount,0),v=Object.values(C).reduce((e,t)=>e+t.cost,0),D=t=>{let a=0;for(let s of t)for(let[t,n]of Object.entries(s.tokensByModel)){let s=e.modelUsage[t];if(!s)continue;let r=s.inputTokens+s.outputTokens+s.cacheReadInputTokens+s.cacheCreationInputTokens,i=n.input+n.output+n.cacheRead+n.cacheCreation;r>0&&(a+=i/r*l(t,s.inputTokens,s.outputTokens,s.cacheReadInputTokens,s.cacheCreationInputTokens))}return a},R=D(e.dailyModelTokens.filter(e=>e.date===b));return{totalSessions:d,totalMessages:p,previousSessions:y,previousMessages:g,totalToolCalls:m,dailyActivity:u,modelTokens:C,dailyTokens:w,todayMessages:T,thisMonthMessages:k,totalCost:v,todayCost:R,thisMonthCost:D(e.dailyModelTokens.filter(e=>e.date>=S)),previousCost:D((i=e.dailyModelTokens,o=t,i.filter(e=>f(e.date,o)))),hourlyDistribution:e.hourCounts,dayHourDistribution:e.dayHourCounts,firstSessionDate:e.firstSessionDate,lastComputedDate:e.lastComputedDate,computedAt:new Date().toISOString()}},"readStatsCache",0,p],180112)},219839,e=>{"use strict";var t=e.i(926747),a=e.i(190406),s=e.i(244898),n=e.i(262950),r=e.i(177579),i=e.i(180112),o=e.i(7991);let u=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"method-not-allowed"});let a=Math.max(0,Number(e.query.offset)||0),s=Math.min(50,Math.max(1,Number(e.query.limit)||10)),[n,u]=await Promise.all([(0,r.getStatsCache)(),(0,o.readAllCachedReports)()]),l=(0,i.buildOverview)(n,"all"),c=l.dailyTokens.reduce((e,t)=>e+t.input+t.output+t.cacheRead+t.cacheCreation,0),d=Object.values(l.modelTokens).reduce((e,t)=>e+t.cost,0),p=l.dailyActivity.filter(e=>e.sessionCount>0).map(e=>{let t=l.dailyTokens.find(t=>t.date===e.date),a=t?t.input+t.output+t.cacheRead+t.cacheCreation:0;return{date:e.date,sessionCount:e.sessionCount,cost:c>0?a/c*d:0,report:u[e.date]??null}}).sort((e,t)=>t.date.localeCompare(e.date)),f={days:p.slice(a,a+s),total:p.length,offset:a,limit:s};return t.status(200).json(f)};e.s(["default",0,u],730099);var l=e.i(730099),c=e.i(7031),d=e.i(181927),p=e.i(846432);let f=(0,n.hoist)(l,"default"),m=(0,n.hoist)(l,"config"),h=new s.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/stats/daily-report/list",pathname:"/api/stats/daily-report/list",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function y(e,a,s){s.requestMeta&&(0,p.setRequestMeta)(e,s.requestMeta),h.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/stats/daily-report/list";n=n.replace(/\/index$/,"")||"/";let r=await h.prepare(e,a,{srcPage:n});if(!r){a.statusCode=400,a.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve());return}let{query:i,params:o,prerenderManifest:u,routerServerContext:l}=r;try{let t,s=e.method||"GET",r=(0,c.getTracer)(),p=r.getActiveScopeSpan(),f=!!(null==l?void 0:l.isWrappedByNextServer),m=h.instrumentationOnRequestError.bind(h),y=async c=>h.render(e,a,{query:{...i,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:u.preview,propagateError:!1,dev:h.isDev,page:"/api/stats/daily-report/list",internalRevalidate:null==l?void 0:l.revalidate,onError:(...t)=>m(e,...t)}).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=r.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=e.get("next.route");if(i){let e=`${s} ${i}`;c.setAttributes({"next.route":i,"http.route":i,"next.span_name":e}),c.updateName(e),t&&t!==c&&(t.setAttribute("http.route",i),t.updateName(e))}else c.updateName(`${s} ${n}`)});f&&p?await y(p):(t=r.getActiveScopeSpan(),await r.withPropagatedContext(e.headers,()=>r.trace(d.BaseServerSpan.handleRequest,{spanName:`${s} ${n}`,kind:c.SpanKind.SERVER,attributes:{"http.method":s,"http.target":e.url}},y),void 0,!f))}catch(e){if(h.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==s.waitUntil||s.waitUntil.call(s,Promise.resolve())}}e.s(["config",0,m,"default",0,f,"handler",0,y],219839)}];
28
+ 데이터:`)).match(/\[BRIEF\]\s*\n([\s\S]*?)(?=\[DETAIL\])/),n=a.match(/\[DETAIL\]\s*\n([\s\S]*?)$/),{brief:s?s[1].replace(/[\s#\-]*$/,"").trim():a.slice(0,500),detail:n?n[1].trim():""}),l={date:e,brief:i,detail:u,generatedAt:new Date().toISOString()};return await d(l),l},y=async e=>{try{let s=await t.default.readFile(a.default.join(l,`${e}.json`),"utf-8"),n=JSON.parse(s);return n.date&&n.brief?n:null}catch{return null}};e.s(["generateDailyReport",0,h,"readAllCachedReports",0,c,"shortenCwd",0,p])},180112,e=>{"use strict";var t=e.i(924868),a=e.i(814747),s=e.i(446786),n=e.i(99780),r=e.i(975925);let o={"opus-4-6":{input:5,output:25,cacheWrite:6.25,cacheRead:.5},"opus-4-5":{input:5,output:25,cacheWrite:6.25,cacheRead:.5},"opus-4-1":{input:15,output:75,cacheWrite:18.75,cacheRead:1.5},"opus-4":{input:15,output:75,cacheWrite:18.75,cacheRead:1.5},"sonnet-4-6":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"sonnet-4-5":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"sonnet-4":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"sonnet-3-7":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"sonnet-3-5":{input:3,output:15,cacheWrite:3.75,cacheRead:.3},"haiku-4-5":{input:1,output:5,cacheWrite:1.25,cacheRead:.1},"haiku-3-5":{input:.8,output:4,cacheWrite:1,cacheRead:.08},"haiku-3":{input:.25,output:1.25,cacheWrite:.3,cacheRead:.03},"opus-3":{input:15,output:75,cacheWrite:18.75,cacheRead:1.5}},i={input:30,output:150,cacheWrite:37.5,cacheRead:3},u=a.default.join(s.default.homedir(),".claude","stats-cache.json"),l=(e,t,a,s,n)=>((e,t,a,s,n)=>{let r,u=((e,t,a,s,n,r=!1)=>{let u,l=(u=e.replace(/\[.*?\]$/,"").match(/claude-(\w+-[\d]+(?:-[\d]+)*)(?:-\d{8}|-v\d)?(?:\:\d)?$/))?u[1]:null;if(!l)return null;let c=r&&"opus-4-6"===l?i:o[l];return c?t/1e6*c.input+s/1e6*c.cacheWrite+n/1e6*c.cacheRead+a/1e6*c.output:null})(e,t,a,s,n);if(null!==u)return u;let l=e.toLowerCase();return t/1e6*(r=l.includes("opus")?o["opus-4-6"]:l.includes("haiku")?o["haiku-4-5"]:o["sonnet-4-6"]).input+s/1e6*r.cacheWrite+n/1e6*r.cacheRead+a/1e6*r.output})(e,t,a,n,s),c={version:0,lastComputedDate:"",dailyActivity:[],dailyModelTokens:[],modelUsage:{},totalSessions:0,totalMessages:0,longestSession:{sessionId:"",duration:0,messageCount:0,timestamp:""},firstSessionDate:"",hourCounts:{},dayHourCounts:{},totalSpeculationTimeSavedMs:0},d=e=>"object"!=typeof e||null===e?{}:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Number(t??0)])),p=async()=>{try{var e,a,s;let n=await t.default.readFile(u,"utf-8"),r=JSON.parse(n);return{version:Number(r.version??0),lastComputedDate:String(r.lastComputedDate??""),dailyActivity:(e=r.dailyActivity,Array.isArray(e)?e.filter(e=>"object"==typeof e&&null!==e).map(e=>({date:String(e.date??""),messageCount:Number(e.messageCount??0),sessionCount:Number(e.sessionCount??0),toolCallCount:Number(e.toolCallCount??0)})):[]),dailyModelTokens:(a=r.dailyModelTokens,Array.isArray(a)?a.filter(e=>"object"==typeof e&&null!==e).map(e=>({date:String(e.date??""),tokensByModel:"object"==typeof e.tokensByModel&&null!==e.tokensByModel?Object.fromEntries(Object.entries(e.tokensByModel).map(([e,t])=>[e,"number"==typeof t?{input:t,output:0,cacheRead:0,cacheCreation:0}:"object"==typeof t&&null!==t?{input:Number(t.input??0),output:Number(t.output??0),cacheRead:Number(t.cacheRead??0),cacheCreation:Number(t.cacheCreation??0)}:{input:0,output:0,cacheRead:0,cacheCreation:0}])):{}})):[]),modelUsage:(e=>{if("object"!=typeof e||null===e)return{};let t={};for(let[a,s]of Object.entries(e))"object"==typeof s&&null!==s&&(t[a]={inputTokens:Number(s.inputTokens??0),outputTokens:Number(s.outputTokens??0),cacheReadInputTokens:Number(s.cacheReadInputTokens??0),cacheCreationInputTokens:Number(s.cacheCreationInputTokens??0),webSearchRequests:Number(s.webSearchRequests??0),costUSD:Number(s.costUSD??0),contextWindow:Number(s.contextWindow??0),maxOutputTokens:Number(s.maxOutputTokens??0)});return t})(r.modelUsage),totalSessions:Number(r.totalSessions??0),totalMessages:Number(r.totalMessages??0),longestSession:(s=r.longestSession,"object"!=typeof s||null===s?{sessionId:"",duration:0,messageCount:0,timestamp:""}:{sessionId:String(s.sessionId??""),duration:Number(s.duration??0),messageCount:Number(s.messageCount??0),timestamp:String(s.timestamp??"")}),firstSessionDate:String(r.firstSessionDate??""),hourCounts:d(r.hourCounts),dayHourCounts:d(r.dayHourCounts),totalSpeculationTimeSavedMs:Number(r.totalSpeculationTimeSavedMs??0)}}catch{return c}},f=(e,t)=>{let a=(e=>{if("all"===e||"today"===e)return null;let t="7d"===e?7:30;return{prevStart:(0,n.default)().subtract(2*t,"day").startOf("day"),prevEnd:(0,n.default)().subtract(t,"day").startOf("day")}})(t);if(!a)return!1;let s=(0,n.default)(e);return(s.isAfter(a.prevStart)||s.isSame(a.prevStart))&&s.isBefore(a.prevEnd)};e.s(["buildOverview",0,(e,t)=>{let a,s,o,i,u=e.dailyActivity.filter(e=>(0,r.isDateStringWithinPeriod)(e.date,t)),c=e.dailyModelTokens.filter(e=>(0,r.isDateStringWithinPeriod)(e.date,t)),d="all"===t?e.totalSessions:u.reduce((e,t)=>e+t.sessionCount,0),p="all"===t?e.totalMessages:u.reduce((e,t)=>e+t.messageCount,0),m=u.reduce((e,t)=>e+t.toolCallCount,0),h=(a=e.dailyActivity,s=t,a.filter(e=>f(e.date,s))),y=h.reduce((e,t)=>e+t.sessionCount,0),g=h.reduce((e,t)=>e+t.messageCount,0),C={};if("all"===t)for(let[t,a]of Object.entries(e.modelUsage))C[t]={input:a.inputTokens,output:a.outputTokens,cacheRead:a.cacheReadInputTokens,cacheCreation:a.cacheCreationInputTokens,cost:l(t,a.inputTokens,a.outputTokens,a.cacheReadInputTokens,a.cacheCreationInputTokens)};else{for(let e of c)for(let[t,a]of Object.entries(e.tokensByModel))C[t]||(C[t]={input:0,output:0,cacheRead:0,cacheCreation:0,cost:0}),C[t].input+=a.input,C[t].output+=a.output,C[t].cacheRead+=a.cacheRead,C[t].cacheCreation+=a.cacheCreation;for(let[t,a]of Object.entries(C)){let s=e.modelUsage[t];if(!s)continue;let n=s.inputTokens+s.outputTokens+s.cacheReadInputTokens+s.cacheCreationInputTokens,r=a.input+a.output+a.cacheRead+a.cacheCreation;n>0&&(a.cost=r/n*l(t,s.inputTokens,s.outputTokens,s.cacheReadInputTokens,s.cacheCreationInputTokens))}}let w=c.map(e=>{let t=0,a=0,s=0,n=0;for(let r of Object.values(e.tokensByModel))t+=r.input,a+=r.output,s+=r.cacheRead,n+=r.cacheCreation;return{date:e.date,input:t,output:a,cacheRead:s,cacheCreation:n}}),b=(0,n.default)().format("YYYY-MM-DD"),S=(0,n.default)().startOf("month").format("YYYY-MM-DD"),T=e.dailyActivity.find(e=>e.date===b)?.messageCount??0,k=e.dailyActivity.filter(e=>e.date>=S).reduce((e,t)=>e+t.messageCount,0),v=Object.values(C).reduce((e,t)=>e+t.cost,0),D=t=>{let a=0;for(let s of t)for(let[t,n]of Object.entries(s.tokensByModel)){let s=e.modelUsage[t];if(!s)continue;let r=s.inputTokens+s.outputTokens+s.cacheReadInputTokens+s.cacheCreationInputTokens,o=n.input+n.output+n.cacheRead+n.cacheCreation;r>0&&(a+=o/r*l(t,s.inputTokens,s.outputTokens,s.cacheReadInputTokens,s.cacheCreationInputTokens))}return a},R=D(e.dailyModelTokens.filter(e=>e.date===b));return{totalSessions:d,totalMessages:p,previousSessions:y,previousMessages:g,totalToolCalls:m,dailyActivity:u,modelTokens:C,dailyTokens:w,todayMessages:T,thisMonthMessages:k,totalCost:v,todayCost:R,thisMonthCost:D(e.dailyModelTokens.filter(e=>e.date>=S)),previousCost:D((o=e.dailyModelTokens,i=t,o.filter(e=>f(e.date,i)))),hourlyDistribution:e.hourCounts,dayHourDistribution:e.dayHourCounts,firstSessionDate:e.firstSessionDate,lastComputedDate:e.lastComputedDate,computedAt:new Date().toISOString()}},"readStatsCache",0,p],180112)},219839,e=>{"use strict";var t=e.i(926747),a=e.i(190406),s=e.i(244898),n=e.i(262950),r=e.i(177579),o=e.i(180112),i=e.i(7991);let u=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"method-not-allowed"});let a=Math.max(0,Number(e.query.offset)||0),s=Math.min(50,Math.max(1,Number(e.query.limit)||10)),[n,u]=await Promise.all([(0,r.getStatsCache)(),(0,i.readAllCachedReports)()]),l=(0,o.buildOverview)(n,"all"),c=l.dailyTokens.reduce((e,t)=>e+t.input+t.output+t.cacheRead+t.cacheCreation,0),d=Object.values(l.modelTokens).reduce((e,t)=>e+t.cost,0),p=l.dailyActivity.filter(e=>e.sessionCount>0).map(e=>{let t=l.dailyTokens.find(t=>t.date===e.date),a=t?t.input+t.output+t.cacheRead+t.cacheCreation:0;return{date:e.date,sessionCount:e.sessionCount,cost:c>0?a/c*d:0,report:u[e.date]??null}}).sort((e,t)=>t.date.localeCompare(e.date)),f={days:p.slice(a,a+s),total:p.length,offset:a,limit:s};return t.status(200).json(f)};e.s(["default",0,u],730099);var l=e.i(730099),c=e.i(7031),d=e.i(181927),p=e.i(846432);let f=(0,n.hoist)(l,"default"),m=(0,n.hoist)(l,"config"),h=new s.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/stats/daily-report/list",pathname:"/api/stats/daily-report/list",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function y(e,a,s){s.requestMeta&&(0,p.setRequestMeta)(e,s.requestMeta),h.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/stats/daily-report/list";n=n.replace(/\/index$/,"")||"/";let r=await h.prepare(e,a,{srcPage:n});if(!r){a.statusCode=400,a.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve());return}let{query:o,params:i,prerenderManifest:u,routerServerContext:l}=r;try{let t,s=e.method||"GET",r=(0,c.getTracer)(),p=r.getActiveScopeSpan(),f=!!(null==l?void 0:l.isWrappedByNextServer),m=h.instrumentationOnRequestError.bind(h),y=async c=>h.render(e,a,{query:{...o,...i},params:i,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:u.preview,propagateError:!1,dev:h.isDev,page:"/api/stats/daily-report/list",internalRevalidate:null==l?void 0:l.revalidate,onError:(...t)=>m(e,...t)}).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=r.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==d.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let o=e.get("next.route");if(o){let e=`${s} ${o}`;c.setAttributes({"next.route":o,"http.route":o,"next.span_name":e}),c.updateName(e),t&&t!==c&&(t.setAttribute("http.route",o),t.updateName(e))}else c.updateName(`${s} ${n}`)});f&&p?await y(p):(t=r.getActiveScopeSpan(),await r.withPropagatedContext(e.headers,()=>r.trace(d.BaseServerSpan.handleRequest,{spanName:`${s} ${n}`,kind:c.SpanKind.SERVER,attributes:{"http.method":s,"http.target":e.url}},y),void 0,!f))}catch(e){if(h.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==s.waitUntil||s.waitUntil.call(s,Promise.resolve())}}e.s(["config",0,m,"default",0,f,"handler",0,y],219839)}];
29
29
 
30
30
  //# sourceMappingURL=%5Broot-of-the-server%5D__0.0bk0z._.js.map