@posthog/wizard 2.9.1 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (740) hide show
  1. package/README.md +40 -0
  2. package/dist/McpScreen-DINVFEYh.js +3356 -0
  3. package/dist/McpScreen-DINVFEYh.js.map +1 -0
  4. package/dist/add-mcp-server-to-clients-BlbtWGU0.js +436 -0
  5. package/dist/add-mcp-server-to-clients-BlbtWGU0.js.map +1 -0
  6. package/dist/agent-runner-D_eXxXPp.js +1114 -0
  7. package/dist/agent-runner-D_eXxXPp.js.map +1 -0
  8. package/dist/agent-skill-BVjJqol6.js +59 -0
  9. package/dist/agent-skill-BVjJqol6.js.map +1 -0
  10. package/dist/analytics-Bu1XKP2S.js +207 -0
  11. package/dist/analytics-Bu1XKP2S.js.map +1 -0
  12. package/dist/analytics-DjWAOHun.js +2 -0
  13. package/dist/bin.d.ts +1 -2
  14. package/dist/bin.js +635 -521
  15. package/dist/bin.js.map +1 -1
  16. package/dist/craft-pre-release.sh +10 -0
  17. package/dist/debug-CIyf0ZGx.js +2 -0
  18. package/dist/debug-CyJ_3dTP.js +201 -0
  19. package/dist/debug-CyJ_3dTP.js.map +1 -0
  20. package/dist/defaults-DoVkE0gW.js +234 -0
  21. package/dist/defaults-DoVkE0gW.js.map +1 -0
  22. package/dist/detection-B6EEBoZk.js +122 -0
  23. package/dist/detection-B6EEBoZk.js.map +1 -0
  24. package/dist/env-api-key-K8TdTDII.js +20 -0
  25. package/dist/env-api-key-K8TdTDII.js.map +1 -0
  26. package/dist/file-utils-BWneZy6p.js +38 -0
  27. package/dist/file-utils-BWneZy6p.js.map +1 -0
  28. package/dist/generate-version.cjs +11 -0
  29. package/dist/package-json-BQgl5C3Z.js +2 -0
  30. package/dist/package-json-Ctq6LSl8.js +25 -0
  31. package/dist/package-json-Ctq6LSl8.js.map +1 -0
  32. package/dist/package-manager-BTZ75a-a.js +222 -0
  33. package/dist/package-manager-BTZ75a-a.js.map +1 -0
  34. package/dist/posthog-integration-_xd3kuTB.js +230 -0
  35. package/dist/posthog-integration-_xd3kuTB.js.map +1 -0
  36. package/dist/readiness-BPPVNQum.js +2156 -0
  37. package/dist/readiness-BPPVNQum.js.map +1 -0
  38. package/dist/registry-BY4HuKIE.js +2922 -0
  39. package/dist/registry-BY4HuKIE.js.map +1 -0
  40. package/dist/rolldown-runtime-B_-DWIq7.js +15 -0
  41. package/dist/router-D5A1Sb4p.js +141 -0
  42. package/dist/router-D5A1Sb4p.js.map +1 -0
  43. package/dist/setup-utils-Dymympue.js +928 -0
  44. package/dist/setup-utils-Dymympue.js.map +1 -0
  45. package/dist/smoke-test-ci.sh +165 -0
  46. package/dist/start-playground-BjIMB4sp.js +1005 -0
  47. package/dist/start-playground-BjIMB4sp.js.map +1 -0
  48. package/dist/start-tui-xs7DNbH9.js +1885 -0
  49. package/dist/start-tui-xs7DNbH9.js.map +1 -0
  50. package/dist/steps-CCz4dZOV.js +146 -0
  51. package/dist/steps-CCz4dZOV.js.map +1 -0
  52. package/dist/telemetry-DfPvsfxj.js +13 -0
  53. package/dist/telemetry-DfPvsfxj.js.map +1 -0
  54. package/dist/wizard-abort-BPf5l506.js +39 -0
  55. package/dist/wizard-abort-BPf5l506.js.map +1 -0
  56. package/dist/wizard-abort-WACKybRA.js +2 -0
  57. package/dist/wizard-session-Db6R023m.js +62 -0
  58. package/dist/wizard-session-Db6R023m.js.map +1 -0
  59. package/dist/wizard-session-y7nf6aKH.js +2 -0
  60. package/npm-shrinkwrap.json +2 -2
  61. package/package.json +16 -8
  62. package/dist/src/__tests__/cli.test.d.ts +0 -1
  63. package/dist/src/__tests__/cli.test.js +0 -256
  64. package/dist/src/__tests__/cli.test.js.map +0 -1
  65. package/dist/src/__tests__/package-json.test.d.ts +0 -1
  66. package/dist/src/__tests__/package-json.test.js +0 -173
  67. package/dist/src/__tests__/package-json.test.js.map +0 -1
  68. package/dist/src/__tests__/wizard-abort.test.d.ts +0 -1
  69. package/dist/src/__tests__/wizard-abort.test.js +0 -148
  70. package/dist/src/__tests__/wizard-abort.test.js.map +0 -1
  71. package/dist/src/frameworks/android/android-wizard-agent.d.ts +0 -6
  72. package/dist/src/frameworks/android/android-wizard-agent.js +0 -142
  73. package/dist/src/frameworks/android/android-wizard-agent.js.map +0 -1
  74. package/dist/src/frameworks/android/utils.d.ts +0 -11
  75. package/dist/src/frameworks/android/utils.js +0 -97
  76. package/dist/src/frameworks/android/utils.js.map +0 -1
  77. package/dist/src/frameworks/angular/angular-wizard-agent.d.ts +0 -4
  78. package/dist/src/frameworks/angular/angular-wizard-agent.js +0 -65
  79. package/dist/src/frameworks/angular/angular-wizard-agent.js.map +0 -1
  80. package/dist/src/frameworks/angular/utils.d.ts +0 -4
  81. package/dist/src/frameworks/angular/utils.js +0 -9
  82. package/dist/src/frameworks/angular/utils.js.map +0 -1
  83. package/dist/src/frameworks/astro/astro-wizard-agent.d.ts +0 -7
  84. package/dist/src/frameworks/astro/astro-wizard-agent.js +0 -102
  85. package/dist/src/frameworks/astro/astro-wizard-agent.js.map +0 -1
  86. package/dist/src/frameworks/astro/utils.d.ts +0 -14
  87. package/dist/src/frameworks/astro/utils.js +0 -114
  88. package/dist/src/frameworks/astro/utils.js.map +0 -1
  89. package/dist/src/frameworks/django/django-wizard-agent.d.ts +0 -8
  90. package/dist/src/frameworks/django/django-wizard-agent.js +0 -173
  91. package/dist/src/frameworks/django/django-wizard-agent.js.map +0 -1
  92. package/dist/src/frameworks/django/utils.d.ts +0 -31
  93. package/dist/src/frameworks/django/utils.js +0 -306
  94. package/dist/src/frameworks/django/utils.js.map +0 -1
  95. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.d.ts +0 -5
  96. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js +0 -191
  97. package/dist/src/frameworks/fastapi/fastapi-wizard-agent.js.map +0 -1
  98. package/dist/src/frameworks/fastapi/utils.d.ts +0 -26
  99. package/dist/src/frameworks/fastapi/utils.js +0 -258
  100. package/dist/src/frameworks/fastapi/utils.js.map +0 -1
  101. package/dist/src/frameworks/flask/flask-wizard-agent.d.ts +0 -8
  102. package/dist/src/frameworks/flask/flask-wizard-agent.js +0 -179
  103. package/dist/src/frameworks/flask/flask-wizard-agent.js.map +0 -1
  104. package/dist/src/frameworks/flask/utils.d.ts +0 -28
  105. package/dist/src/frameworks/flask/utils.js +0 -344
  106. package/dist/src/frameworks/flask/utils.js.map +0 -1
  107. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.d.ts +0 -4
  108. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js +0 -61
  109. package/dist/src/frameworks/javascript-node/javascript-node-wizard-agent.js.map +0 -1
  110. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.d.ts +0 -3
  111. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js +0 -152
  112. package/dist/src/frameworks/javascript-web/javascript-web-wizard-agent.js.map +0 -1
  113. package/dist/src/frameworks/javascript-web/utils.d.ts +0 -28
  114. package/dist/src/frameworks/javascript-web/utils.js +0 -147
  115. package/dist/src/frameworks/javascript-web/utils.js.map +0 -1
  116. package/dist/src/frameworks/laravel/laravel-wizard-agent.d.ts +0 -10
  117. package/dist/src/frameworks/laravel/laravel-wizard-agent.js +0 -182
  118. package/dist/src/frameworks/laravel/laravel-wizard-agent.js.map +0 -1
  119. package/dist/src/frameworks/laravel/utils.d.ts +0 -38
  120. package/dist/src/frameworks/laravel/utils.js +0 -238
  121. package/dist/src/frameworks/laravel/utils.js.map +0 -1
  122. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.d.ts +0 -7
  123. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js +0 -94
  124. package/dist/src/frameworks/nextjs/nextjs-wizard-agent.js.map +0 -1
  125. package/dist/src/frameworks/nextjs/utils.d.ts +0 -12
  126. package/dist/src/frameworks/nextjs/utils.js +0 -52
  127. package/dist/src/frameworks/nextjs/utils.js.map +0 -1
  128. package/dist/src/frameworks/nuxt/nuxt-wizard-agent.d.ts +0 -6
  129. package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js +0 -77
  130. package/dist/src/frameworks/nuxt/nuxt-wizard-agent.js.map +0 -1
  131. package/dist/src/frameworks/python/python-wizard-agent.d.ts +0 -7
  132. package/dist/src/frameworks/python/python-wizard-agent.js +0 -195
  133. package/dist/src/frameworks/python/python-wizard-agent.js.map +0 -1
  134. package/dist/src/frameworks/python/utils.d.ts +0 -28
  135. package/dist/src/frameworks/python/utils.js +0 -147
  136. package/dist/src/frameworks/python/utils.js.map +0 -1
  137. package/dist/src/frameworks/rails/rails-wizard-agent.d.ts +0 -8
  138. package/dist/src/frameworks/rails/rails-wizard-agent.js +0 -90
  139. package/dist/src/frameworks/rails/rails-wizard-agent.js.map +0 -1
  140. package/dist/src/frameworks/rails/utils.d.ts +0 -37
  141. package/dist/src/frameworks/rails/utils.js +0 -187
  142. package/dist/src/frameworks/rails/utils.js.map +0 -1
  143. package/dist/src/frameworks/react-native/react-native-wizard-agent.d.ts +0 -7
  144. package/dist/src/frameworks/react-native/react-native-wizard-agent.js +0 -89
  145. package/dist/src/frameworks/react-native/react-native-wizard-agent.js.map +0 -1
  146. package/dist/src/frameworks/react-native/utils.d.ts +0 -8
  147. package/dist/src/frameworks/react-native/utils.js +0 -28
  148. package/dist/src/frameworks/react-native/utils.js.map +0 -1
  149. package/dist/src/frameworks/react-router/react-router-wizard-agent.d.ts +0 -7
  150. package/dist/src/frameworks/react-router/react-router-wizard-agent.js +0 -94
  151. package/dist/src/frameworks/react-router/react-router-wizard-agent.js.map +0 -1
  152. package/dist/src/frameworks/react-router/utils.d.ts +0 -13
  153. package/dist/src/frameworks/react-router/utils.js +0 -161
  154. package/dist/src/frameworks/react-router/utils.js.map +0 -1
  155. package/dist/src/frameworks/ruby/ruby-wizard-agent.d.ts +0 -7
  156. package/dist/src/frameworks/ruby/ruby-wizard-agent.js +0 -113
  157. package/dist/src/frameworks/ruby/ruby-wizard-agent.js.map +0 -1
  158. package/dist/src/frameworks/ruby/utils.d.ts +0 -25
  159. package/dist/src/frameworks/ruby/utils.js +0 -158
  160. package/dist/src/frameworks/ruby/utils.js.map +0 -1
  161. package/dist/src/frameworks/svelte/svelte-wizard-agent.d.ts +0 -4
  162. package/dist/src/frameworks/svelte/svelte-wizard-agent.js +0 -61
  163. package/dist/src/frameworks/svelte/svelte-wizard-agent.js.map +0 -1
  164. package/dist/src/frameworks/swift/swift-wizard-agent.d.ts +0 -7
  165. package/dist/src/frameworks/swift/swift-wizard-agent.js +0 -143
  166. package/dist/src/frameworks/swift/swift-wizard-agent.js.map +0 -1
  167. package/dist/src/frameworks/swift/utils.d.ts +0 -8
  168. package/dist/src/frameworks/swift/utils.js +0 -105
  169. package/dist/src/frameworks/swift/utils.js.map +0 -1
  170. package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.d.ts +0 -7
  171. package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js +0 -96
  172. package/dist/src/frameworks/tanstack-router/tanstack-router-wizard-agent.js.map +0 -1
  173. package/dist/src/frameworks/tanstack-router/utils.d.ts +0 -11
  174. package/dist/src/frameworks/tanstack-router/utils.js +0 -149
  175. package/dist/src/frameworks/tanstack-router/utils.js.map +0 -1
  176. package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.d.ts +0 -4
  177. package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js +0 -64
  178. package/dist/src/frameworks/tanstack-start/tanstack-start-wizard-agent.js.map +0 -1
  179. package/dist/src/frameworks/tanstack-start/utils.d.ts +0 -4
  180. package/dist/src/frameworks/tanstack-start/utils.js +0 -9
  181. package/dist/src/frameworks/tanstack-start/utils.js.map +0 -1
  182. package/dist/src/frameworks/vue/vue-wizard-agent.d.ts +0 -4
  183. package/dist/src/frameworks/vue/vue-wizard-agent.js +0 -62
  184. package/dist/src/frameworks/vue/vue-wizard-agent.js.map +0 -1
  185. package/dist/src/lib/__tests__/agent-interface.test.d.ts +0 -1
  186. package/dist/src/lib/__tests__/agent-interface.test.js +0 -317
  187. package/dist/src/lib/__tests__/agent-interface.test.js.map +0 -1
  188. package/dist/src/lib/__tests__/cloudflare-detection.test.d.ts +0 -1
  189. package/dist/src/lib/__tests__/cloudflare-detection.test.js +0 -119
  190. package/dist/src/lib/__tests__/cloudflare-detection.test.js.map +0 -1
  191. package/dist/src/lib/__tests__/wizard-tools.test.d.ts +0 -1
  192. package/dist/src/lib/__tests__/wizard-tools.test.js +0 -200
  193. package/dist/src/lib/__tests__/wizard-tools.test.js.map +0 -1
  194. package/dist/src/lib/__tests__/yara-hooks.test.d.ts +0 -1
  195. package/dist/src/lib/__tests__/yara-hooks.test.js +0 -432
  196. package/dist/src/lib/__tests__/yara-hooks.test.js.map +0 -1
  197. package/dist/src/lib/__tests__/yara-scanner.test.d.ts +0 -1
  198. package/dist/src/lib/__tests__/yara-scanner.test.js +0 -613
  199. package/dist/src/lib/__tests__/yara-scanner.test.js.map +0 -1
  200. package/dist/src/lib/agent/__tests__/agent-prompt.test.d.ts +0 -1
  201. package/dist/src/lib/agent/__tests__/agent-prompt.test.js +0 -57
  202. package/dist/src/lib/agent/__tests__/agent-prompt.test.js.map +0 -1
  203. package/dist/src/lib/agent/agent-interface.d.ts +0 -171
  204. package/dist/src/lib/agent/agent-interface.js +0 -1082
  205. package/dist/src/lib/agent/agent-interface.js.map +0 -1
  206. package/dist/src/lib/agent/agent-prompt.d.ts +0 -23
  207. package/dist/src/lib/agent/agent-prompt.js +0 -47
  208. package/dist/src/lib/agent/agent-prompt.js.map +0 -1
  209. package/dist/src/lib/agent/agent-runner.d.ts +0 -78
  210. package/dist/src/lib/agent/agent-runner.js +0 -325
  211. package/dist/src/lib/agent/agent-runner.js.map +0 -1
  212. package/dist/src/lib/agent/commandments.d.ts +0 -1
  213. package/dist/src/lib/agent/commandments.js +0 -26
  214. package/dist/src/lib/agent/commandments.js.map +0 -1
  215. package/dist/src/lib/api.d.ts +0 -75
  216. package/dist/src/lib/api.js +0 -105
  217. package/dist/src/lib/api.js.map +0 -1
  218. package/dist/src/lib/cloudflare-detection.d.ts +0 -14
  219. package/dist/src/lib/cloudflare-detection.js +0 -74
  220. package/dist/src/lib/cloudflare-detection.js.map +0 -1
  221. package/dist/src/lib/constants.d.ts +0 -74
  222. package/dist/src/lib/constants.js +0 -98
  223. package/dist/src/lib/constants.js.map +0 -1
  224. package/dist/src/lib/detection/__tests__/context.test.d.ts +0 -1
  225. package/dist/src/lib/detection/__tests__/context.test.js +0 -72
  226. package/dist/src/lib/detection/__tests__/context.test.js.map +0 -1
  227. package/dist/src/lib/detection/__tests__/features.test.d.ts +0 -1
  228. package/dist/src/lib/detection/__tests__/features.test.js +0 -75
  229. package/dist/src/lib/detection/__tests__/features.test.js.map +0 -1
  230. package/dist/src/lib/detection/__tests__/package-manager.test.d.ts +0 -1
  231. package/dist/src/lib/detection/__tests__/package-manager.test.js +0 -195
  232. package/dist/src/lib/detection/__tests__/package-manager.test.js.map +0 -1
  233. package/dist/src/lib/detection/context.d.ts +0 -31
  234. package/dist/src/lib/detection/context.js +0 -92
  235. package/dist/src/lib/detection/context.js.map +0 -1
  236. package/dist/src/lib/detection/features.d.ts +0 -16
  237. package/dist/src/lib/detection/features.js +0 -56
  238. package/dist/src/lib/detection/features.js.map +0 -1
  239. package/dist/src/lib/detection/framework.d.ts +0 -14
  240. package/dist/src/lib/detection/framework.js +0 -35
  241. package/dist/src/lib/detection/framework.js.map +0 -1
  242. package/dist/src/lib/detection/index.d.ts +0 -3
  243. package/dist/src/lib/detection/index.js +0 -11
  244. package/dist/src/lib/detection/index.js.map +0 -1
  245. package/dist/src/lib/detection/package-manager.d.ts +0 -37
  246. package/dist/src/lib/detection/package-manager.js +0 -183
  247. package/dist/src/lib/detection/package-manager.js.map +0 -1
  248. package/dist/src/lib/framework-config.d.ts +0 -175
  249. package/dist/src/lib/framework-config.js +0 -22
  250. package/dist/src/lib/framework-config.js.map +0 -1
  251. package/dist/src/lib/health-checks/__tests__/health-checks.test.d.ts +0 -18
  252. package/dist/src/lib/health-checks/__tests__/health-checks.test.js +0 -759
  253. package/dist/src/lib/health-checks/__tests__/health-checks.test.js.map +0 -1
  254. package/dist/src/lib/health-checks/endpoints.d.ts +0 -4
  255. package/dist/src/lib/health-checks/endpoints.js +0 -49
  256. package/dist/src/lib/health-checks/endpoints.js.map +0 -1
  257. package/dist/src/lib/health-checks/index.d.ts +0 -4
  258. package/dist/src/lib/health-checks/index.js +0 -24
  259. package/dist/src/lib/health-checks/index.js.map +0 -1
  260. package/dist/src/lib/health-checks/readiness.d.ts +0 -29
  261. package/dist/src/lib/health-checks/readiness.js +0 -188
  262. package/dist/src/lib/health-checks/readiness.js.map +0 -1
  263. package/dist/src/lib/health-checks/statuspage.d.ts +0 -9
  264. package/dist/src/lib/health-checks/statuspage.js +0 -105
  265. package/dist/src/lib/health-checks/statuspage.js.map +0 -1
  266. package/dist/src/lib/health-checks/types.d.ts +0 -32
  267. package/dist/src/lib/health-checks/types.js +0 -10
  268. package/dist/src/lib/health-checks/types.js.map +0 -1
  269. package/dist/src/lib/helper-functions.d.ts +0 -1
  270. package/dist/src/lib/helper-functions.js +0 -6
  271. package/dist/src/lib/helper-functions.js.map +0 -1
  272. package/dist/src/lib/middleware/benchmark.d.ts +0 -54
  273. package/dist/src/lib/middleware/benchmark.js +0 -45
  274. package/dist/src/lib/middleware/benchmark.js.map +0 -1
  275. package/dist/src/lib/middleware/benchmarks/cache-tracker.d.ts +0 -44
  276. package/dist/src/lib/middleware/benchmarks/cache-tracker.js +0 -81
  277. package/dist/src/lib/middleware/benchmarks/cache-tracker.js.map +0 -1
  278. package/dist/src/lib/middleware/benchmarks/compaction-tracker.d.ts +0 -29
  279. package/dist/src/lib/middleware/benchmarks/compaction-tracker.js +0 -60
  280. package/dist/src/lib/middleware/benchmarks/compaction-tracker.js.map +0 -1
  281. package/dist/src/lib/middleware/benchmarks/context-size-tracker.d.ts +0 -26
  282. package/dist/src/lib/middleware/benchmarks/context-size-tracker.js +0 -56
  283. package/dist/src/lib/middleware/benchmarks/context-size-tracker.js.map +0 -1
  284. package/dist/src/lib/middleware/benchmarks/cost-tracker.d.ts +0 -16
  285. package/dist/src/lib/middleware/benchmarks/cost-tracker.js +0 -76
  286. package/dist/src/lib/middleware/benchmarks/cost-tracker.js.map +0 -1
  287. package/dist/src/lib/middleware/benchmarks/duration-tracker.d.ts +0 -20
  288. package/dist/src/lib/middleware/benchmarks/duration-tracker.js +0 -40
  289. package/dist/src/lib/middleware/benchmarks/duration-tracker.js.map +0 -1
  290. package/dist/src/lib/middleware/benchmarks/index.d.ts +0 -9
  291. package/dist/src/lib/middleware/benchmarks/index.js +0 -60
  292. package/dist/src/lib/middleware/benchmarks/index.js.map +0 -1
  293. package/dist/src/lib/middleware/benchmarks/json-writer.d.ts +0 -15
  294. package/dist/src/lib/middleware/benchmarks/json-writer.js +0 -144
  295. package/dist/src/lib/middleware/benchmarks/json-writer.js.map +0 -1
  296. package/dist/src/lib/middleware/benchmarks/summary.d.ts +0 -9
  297. package/dist/src/lib/middleware/benchmarks/summary.js +0 -102
  298. package/dist/src/lib/middleware/benchmarks/summary.js.map +0 -1
  299. package/dist/src/lib/middleware/benchmarks/token-tracker.d.ts +0 -40
  300. package/dist/src/lib/middleware/benchmarks/token-tracker.js +0 -77
  301. package/dist/src/lib/middleware/benchmarks/token-tracker.js.map +0 -1
  302. package/dist/src/lib/middleware/benchmarks/turn-counter.d.ts +0 -34
  303. package/dist/src/lib/middleware/benchmarks/turn-counter.js +0 -59
  304. package/dist/src/lib/middleware/benchmarks/turn-counter.js.map +0 -1
  305. package/dist/src/lib/middleware/config.d.ts +0 -24
  306. package/dist/src/lib/middleware/config.js +0 -78
  307. package/dist/src/lib/middleware/config.js.map +0 -1
  308. package/dist/src/lib/middleware/index.d.ts +0 -11
  309. package/dist/src/lib/middleware/index.js +0 -18
  310. package/dist/src/lib/middleware/index.js.map +0 -1
  311. package/dist/src/lib/middleware/phase-detector.d.ts +0 -7
  312. package/dist/src/lib/middleware/phase-detector.js +0 -64
  313. package/dist/src/lib/middleware/phase-detector.js.map +0 -1
  314. package/dist/src/lib/middleware/pipeline.d.ts +0 -29
  315. package/dist/src/lib/middleware/pipeline.js +0 -82
  316. package/dist/src/lib/middleware/pipeline.js.map +0 -1
  317. package/dist/src/lib/middleware/types.d.ts +0 -40
  318. package/dist/src/lib/middleware/types.js +0 -9
  319. package/dist/src/lib/middleware/types.js.map +0 -1
  320. package/dist/src/lib/registry.d.ts +0 -3
  321. package/dist/src/lib/registry.js +0 -49
  322. package/dist/src/lib/registry.js.map +0 -1
  323. package/dist/src/lib/safe-tools.d.ts +0 -2
  324. package/dist/src/lib/safe-tools.js +0 -215
  325. package/dist/src/lib/safe-tools.js.map +0 -1
  326. package/dist/src/lib/skill-install.d.ts +0 -10
  327. package/dist/src/lib/skill-install.js +0 -23
  328. package/dist/src/lib/skill-install.js.map +0 -1
  329. package/dist/src/lib/version.d.ts +0 -1
  330. package/dist/src/lib/version.js +0 -6
  331. package/dist/src/lib/version.js.map +0 -1
  332. package/dist/src/lib/wizard-session.d.ts +0 -146
  333. package/dist/src/lib/wizard-session.js +0 -116
  334. package/dist/src/lib/wizard-session.js.map +0 -1
  335. package/dist/src/lib/wizard-tools.d.ts +0 -91
  336. package/dist/src/lib/wizard-tools.js +0 -389
  337. package/dist/src/lib/wizard-tools.js.map +0 -1
  338. package/dist/src/lib/workflows/__tests__/agent-skill.test.d.ts +0 -1
  339. package/dist/src/lib/workflows/__tests__/agent-skill.test.js +0 -73
  340. package/dist/src/lib/workflows/__tests__/agent-skill.test.js.map +0 -1
  341. package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.d.ts +0 -1
  342. package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.js +0 -101
  343. package/dist/src/lib/workflows/__tests__/revenue-analytics-detect.test.js.map +0 -1
  344. package/dist/src/lib/workflows/__tests__/workflow-registry.test.d.ts +0 -1
  345. package/dist/src/lib/workflows/__tests__/workflow-registry.test.js +0 -32
  346. package/dist/src/lib/workflows/__tests__/workflow-registry.test.js.map +0 -1
  347. package/dist/src/lib/workflows/__tests__/workflow-step.test.d.ts +0 -1
  348. package/dist/src/lib/workflows/__tests__/workflow-step.test.js +0 -54
  349. package/dist/src/lib/workflows/__tests__/workflow-step.test.js.map +0 -1
  350. package/dist/src/lib/workflows/agent-skill/index.d.ts +0 -44
  351. package/dist/src/lib/workflows/agent-skill/index.js +0 -47
  352. package/dist/src/lib/workflows/agent-skill/index.js.map +0 -1
  353. package/dist/src/lib/workflows/agent-skill/steps.d.ts +0 -8
  354. package/dist/src/lib/workflows/agent-skill/steps.js +0 -43
  355. package/dist/src/lib/workflows/agent-skill/steps.js.map +0 -1
  356. package/dist/src/lib/workflows/posthog-integration/detect.d.ts +0 -12
  357. package/dist/src/lib/workflows/posthog-integration/detect.js +0 -57
  358. package/dist/src/lib/workflows/posthog-integration/detect.js.map +0 -1
  359. package/dist/src/lib/workflows/posthog-integration/index.d.ts +0 -3
  360. package/dist/src/lib/workflows/posthog-integration/index.js +0 -152
  361. package/dist/src/lib/workflows/posthog-integration/index.js.map +0 -1
  362. package/dist/src/lib/workflows/posthog-integration/steps.d.ts +0 -9
  363. package/dist/src/lib/workflows/posthog-integration/steps.js +0 -100
  364. package/dist/src/lib/workflows/posthog-integration/steps.js.map +0 -1
  365. package/dist/src/lib/workflows/revenue-analytics/detect.d.ts +0 -40
  366. package/dist/src/lib/workflows/revenue-analytics/detect.js +0 -156
  367. package/dist/src/lib/workflows/revenue-analytics/detect.js.map +0 -1
  368. package/dist/src/lib/workflows/revenue-analytics/index.d.ts +0 -4
  369. package/dist/src/lib/workflows/revenue-analytics/index.js +0 -30
  370. package/dist/src/lib/workflows/revenue-analytics/index.js.map +0 -1
  371. package/dist/src/lib/workflows/revenue-analytics/steps.d.ts +0 -8
  372. package/dist/src/lib/workflows/revenue-analytics/steps.js +0 -53
  373. package/dist/src/lib/workflows/revenue-analytics/steps.js.map +0 -1
  374. package/dist/src/lib/workflows/workflow-registry.d.ts +0 -18
  375. package/dist/src/lib/workflows/workflow-registry.js +0 -32
  376. package/dist/src/lib/workflows/workflow-registry.js.map +0 -1
  377. package/dist/src/lib/workflows/workflow-step.d.ts +0 -126
  378. package/dist/src/lib/workflows/workflow-step.js +0 -28
  379. package/dist/src/lib/workflows/workflow-step.js.map +0 -1
  380. package/dist/src/lib/yara-hooks.d.ts +0 -44
  381. package/dist/src/lib/yara-hooks.js +0 -377
  382. package/dist/src/lib/yara-hooks.js.map +0 -1
  383. package/dist/src/lib/yara-scanner.d.ts +0 -61
  384. package/dist/src/lib/yara-scanner.js +0 -328
  385. package/dist/src/lib/yara-scanner.js.map +0 -1
  386. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.d.ts +0 -30
  387. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js +0 -138
  388. package/dist/src/steps/add-mcp-server-to-clients/MCPClient.js.map +0 -1
  389. package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.d.ts +0 -1
  390. package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js +0 -72
  391. package/dist/src/steps/add-mcp-server-to-clients/__tests__/defaults.test.js.map +0 -1
  392. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.d.ts +0 -1
  393. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js +0 -341
  394. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/claude.test.js.map +0 -1
  395. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.d.ts +0 -1
  396. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js +0 -108
  397. package/dist/src/steps/add-mcp-server-to-clients/clients/__tests__/codex.test.js.map +0 -1
  398. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.d.ts +0 -89
  399. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js +0 -169
  400. package/dist/src/steps/add-mcp-server-to-clients/clients/claude-code.js.map +0 -1
  401. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.d.ts +0 -80
  402. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.js +0 -64
  403. package/dist/src/steps/add-mcp-server-to-clients/clients/claude.js.map +0 -1
  404. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.d.ts +0 -88
  405. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js +0 -76
  406. package/dist/src/steps/add-mcp-server-to-clients/clients/codex.js.map +0 -1
  407. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.d.ts +0 -84
  408. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js +0 -61
  409. package/dist/src/steps/add-mcp-server-to-clients/clients/cursor.js.map +0 -1
  410. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.d.ts +0 -92
  411. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js +0 -101
  412. package/dist/src/steps/add-mcp-server-to-clients/clients/visual-studio-code.js.map +0 -1
  413. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.d.ts +0 -110
  414. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js +0 -102
  415. package/dist/src/steps/add-mcp-server-to-clients/clients/zed.js.map +0 -1
  416. package/dist/src/steps/add-mcp-server-to-clients/defaults.d.ts +0 -119
  417. package/dist/src/steps/add-mcp-server-to-clients/defaults.js +0 -239
  418. package/dist/src/steps/add-mcp-server-to-clients/defaults.js.map +0 -1
  419. package/dist/src/steps/add-mcp-server-to-clients/index.d.ts +0 -23
  420. package/dist/src/steps/add-mcp-server-to-clients/index.js +0 -111
  421. package/dist/src/steps/add-mcp-server-to-clients/index.js.map +0 -1
  422. package/dist/src/steps/add-or-update-environment-variables.d.ts +0 -10
  423. package/dist/src/steps/add-or-update-environment-variables.js +0 -188
  424. package/dist/src/steps/add-or-update-environment-variables.js.map +0 -1
  425. package/dist/src/steps/index.d.ts +0 -4
  426. package/dist/src/steps/index.js +0 -21
  427. package/dist/src/steps/index.js.map +0 -1
  428. package/dist/src/steps/run-prettier.d.ts +0 -5
  429. package/dist/src/steps/run-prettier.js +0 -91
  430. package/dist/src/steps/run-prettier.js.map +0 -1
  431. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.d.ts +0 -11
  432. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js +0 -12
  433. package/dist/src/steps/upload-environment-variables/EnvironmentProvider.js.map +0 -1
  434. package/dist/src/steps/upload-environment-variables/index.d.ts +0 -6
  435. package/dist/src/steps/upload-environment-variables/index.js +0 -38
  436. package/dist/src/steps/upload-environment-variables/index.js.map +0 -1
  437. package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.d.ts +0 -1
  438. package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.js +0 -117
  439. package/dist/src/steps/upload-environment-variables/providers/__tests__/vercel.test.js.map +0 -1
  440. package/dist/src/steps/upload-environment-variables/providers/vercel.d.ts +0 -15
  441. package/dist/src/steps/upload-environment-variables/providers/vercel.js +0 -142
  442. package/dist/src/steps/upload-environment-variables/providers/vercel.js.map +0 -1
  443. package/dist/src/telemetry.d.ts +0 -2
  444. package/dist/src/telemetry.js +0 -13
  445. package/dist/src/telemetry.js.map +0 -1
  446. package/dist/src/ui/index.d.ts +0 -8
  447. package/dist/src/ui/index.js +0 -17
  448. package/dist/src/ui/index.js.map +0 -1
  449. package/dist/src/ui/logging-ui.d.ts +0 -52
  450. package/dist/src/ui/logging-ui.js +0 -121
  451. package/dist/src/ui/logging-ui.js.map +0 -1
  452. package/dist/src/ui/tui/App.d.ts +0 -6
  453. package/dist/src/ui/tui/App.js +0 -10
  454. package/dist/src/ui/tui/App.js.map +0 -1
  455. package/dist/src/ui/tui/__tests__/flows.test.d.ts +0 -1
  456. package/dist/src/ui/tui/__tests__/flows.test.js +0 -115
  457. package/dist/src/ui/tui/__tests__/flows.test.js.map +0 -1
  458. package/dist/src/ui/tui/__tests__/layout-helpers.test.d.ts +0 -1
  459. package/dist/src/ui/tui/__tests__/layout-helpers.test.js +0 -68
  460. package/dist/src/ui/tui/__tests__/layout-helpers.test.js.map +0 -1
  461. package/dist/src/ui/tui/__tests__/router.test.d.ts +0 -1
  462. package/dist/src/ui/tui/__tests__/router.test.js +0 -87
  463. package/dist/src/ui/tui/__tests__/router.test.js.map +0 -1
  464. package/dist/src/ui/tui/__tests__/store.test.d.ts +0 -1
  465. package/dist/src/ui/tui/__tests__/store.test.js +0 -935
  466. package/dist/src/ui/tui/__tests__/store.test.js.map +0 -1
  467. package/dist/src/ui/tui/components/LearnCard.d.ts +0 -10
  468. package/dist/src/ui/tui/components/LearnCard.js +0 -217
  469. package/dist/src/ui/tui/components/LearnCard.js.map +0 -1
  470. package/dist/src/ui/tui/components/ServiceHealthList.d.ts +0 -15
  471. package/dist/src/ui/tui/components/ServiceHealthList.js +0 -57
  472. package/dist/src/ui/tui/components/ServiceHealthList.js.map +0 -1
  473. package/dist/src/ui/tui/components/TipsCard.d.ts +0 -9
  474. package/dist/src/ui/tui/components/TipsCard.js +0 -55
  475. package/dist/src/ui/tui/components/TipsCard.js.map +0 -1
  476. package/dist/src/ui/tui/components/TitleBar.d.ts +0 -6
  477. package/dist/src/ui/tui/components/TitleBar.js +0 -17
  478. package/dist/src/ui/tui/components/TitleBar.js.map +0 -1
  479. package/dist/src/ui/tui/flows.d.ts +0 -52
  480. package/dist/src/ui/tui/flows.js +0 -76
  481. package/dist/src/ui/tui/flows.js.map +0 -1
  482. package/dist/src/ui/tui/hooks/useStdoutDimensions.d.ts +0 -9
  483. package/dist/src/ui/tui/hooks/useStdoutDimensions.js +0 -37
  484. package/dist/src/ui/tui/hooks/useStdoutDimensions.js.map +0 -1
  485. package/dist/src/ui/tui/ink-ui.d.ts +0 -58
  486. package/dist/src/ui/tui/ink-ui.js +0 -125
  487. package/dist/src/ui/tui/ink-ui.js.map +0 -1
  488. package/dist/src/ui/tui/package.json +0 -1
  489. package/dist/src/ui/tui/playground/PlaygroundApp.d.ts +0 -12
  490. package/dist/src/ui/tui/playground/PlaygroundApp.js +0 -50
  491. package/dist/src/ui/tui/playground/PlaygroundApp.js.map +0 -1
  492. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.d.ts +0 -11
  493. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.js +0 -57
  494. package/dist/src/ui/tui/playground/demos/HealthCheckDemo.js.map +0 -1
  495. package/dist/src/ui/tui/playground/demos/InputDemo.d.ts +0 -4
  496. package/dist/src/ui/tui/playground/demos/InputDemo.js +0 -53
  497. package/dist/src/ui/tui/playground/demos/InputDemo.js.map +0 -1
  498. package/dist/src/ui/tui/playground/demos/LayoutDemo.d.ts +0 -5
  499. package/dist/src/ui/tui/playground/demos/LayoutDemo.js +0 -25
  500. package/dist/src/ui/tui/playground/demos/LayoutDemo.js.map +0 -1
  501. package/dist/src/ui/tui/playground/demos/LogDemo.d.ts +0 -5
  502. package/dist/src/ui/tui/playground/demos/LogDemo.js +0 -53
  503. package/dist/src/ui/tui/playground/demos/LogDemo.js.map +0 -1
  504. package/dist/src/ui/tui/playground/demos/McpDemo.d.ts +0 -12
  505. package/dist/src/ui/tui/playground/demos/McpDemo.js +0 -27
  506. package/dist/src/ui/tui/playground/demos/McpDemo.js.map +0 -1
  507. package/dist/src/ui/tui/playground/demos/ModalDemo.d.ts +0 -6
  508. package/dist/src/ui/tui/playground/demos/ModalDemo.js +0 -13
  509. package/dist/src/ui/tui/playground/demos/ModalDemo.js.map +0 -1
  510. package/dist/src/ui/tui/playground/demos/ProgressDemo.d.ts +0 -5
  511. package/dist/src/ui/tui/playground/demos/ProgressDemo.js +0 -58
  512. package/dist/src/ui/tui/playground/demos/ProgressDemo.js.map +0 -1
  513. package/dist/src/ui/tui/playground/demos/RunScreenDemo.d.ts +0 -11
  514. package/dist/src/ui/tui/playground/demos/RunScreenDemo.js +0 -159
  515. package/dist/src/ui/tui/playground/demos/RunScreenDemo.js.map +0 -1
  516. package/dist/src/ui/tui/playground/demos/WelcomeDemo.d.ts +0 -9
  517. package/dist/src/ui/tui/playground/demos/WelcomeDemo.js +0 -15
  518. package/dist/src/ui/tui/playground/demos/WelcomeDemo.js.map +0 -1
  519. package/dist/src/ui/tui/playground/start-playground.d.ts +0 -4
  520. package/dist/src/ui/tui/playground/start-playground.js +0 -24
  521. package/dist/src/ui/tui/playground/start-playground.js.map +0 -1
  522. package/dist/src/ui/tui/primitives/CardLayout.d.ts +0 -12
  523. package/dist/src/ui/tui/primitives/CardLayout.js +0 -10
  524. package/dist/src/ui/tui/primitives/CardLayout.js.map +0 -1
  525. package/dist/src/ui/tui/primitives/ConfirmationInput.d.ts +0 -13
  526. package/dist/src/ui/tui/primitives/ConfirmationInput.js +0 -35
  527. package/dist/src/ui/tui/primitives/ConfirmationInput.js.map +0 -1
  528. package/dist/src/ui/tui/primitives/ContentSequencer.d.ts +0 -42
  529. package/dist/src/ui/tui/primitives/ContentSequencer.js +0 -137
  530. package/dist/src/ui/tui/primitives/ContentSequencer.js.map +0 -1
  531. package/dist/src/ui/tui/primitives/DissolveTransition.d.ts +0 -21
  532. package/dist/src/ui/tui/primitives/DissolveTransition.js +0 -149
  533. package/dist/src/ui/tui/primitives/DissolveTransition.js.map +0 -1
  534. package/dist/src/ui/tui/primitives/Divider.d.ts +0 -6
  535. package/dist/src/ui/tui/primitives/Divider.js +0 -15
  536. package/dist/src/ui/tui/primitives/Divider.js.map +0 -1
  537. package/dist/src/ui/tui/primitives/EventPlanViewer.d.ts +0 -9
  538. package/dist/src/ui/tui/primitives/EventPlanViewer.js +0 -9
  539. package/dist/src/ui/tui/primitives/EventPlanViewer.js.map +0 -1
  540. package/dist/src/ui/tui/primitives/GroupedPickerMenu.d.ts +0 -23
  541. package/dist/src/ui/tui/primitives/GroupedPickerMenu.js +0 -182
  542. package/dist/src/ui/tui/primitives/GroupedPickerMenu.js.map +0 -1
  543. package/dist/src/ui/tui/primitives/HNViewer.d.ts +0 -7
  544. package/dist/src/ui/tui/primitives/HNViewer.js +0 -63
  545. package/dist/src/ui/tui/primitives/HNViewer.js.map +0 -1
  546. package/dist/src/ui/tui/primitives/LinesBlock.d.ts +0 -16
  547. package/dist/src/ui/tui/primitives/LinesBlock.js +0 -37
  548. package/dist/src/ui/tui/primitives/LinesBlock.js.map +0 -1
  549. package/dist/src/ui/tui/primitives/LoadingBox.d.ts +0 -8
  550. package/dist/src/ui/tui/primitives/LoadingBox.js +0 -10
  551. package/dist/src/ui/tui/primitives/LoadingBox.js.map +0 -1
  552. package/dist/src/ui/tui/primitives/LogViewer.d.ts +0 -11
  553. package/dist/src/ui/tui/primitives/LogViewer.js +0 -55
  554. package/dist/src/ui/tui/primitives/LogViewer.js.map +0 -1
  555. package/dist/src/ui/tui/primitives/ModalOverlay.d.ts +0 -25
  556. package/dist/src/ui/tui/primitives/ModalOverlay.js +0 -7
  557. package/dist/src/ui/tui/primitives/ModalOverlay.js.map +0 -1
  558. package/dist/src/ui/tui/primitives/NodeBlock.d.ts +0 -13
  559. package/dist/src/ui/tui/primitives/NodeBlock.js +0 -17
  560. package/dist/src/ui/tui/primitives/NodeBlock.js.map +0 -1
  561. package/dist/src/ui/tui/primitives/PickerMenu.d.ts +0 -20
  562. package/dist/src/ui/tui/primitives/PickerMenu.js +0 -143
  563. package/dist/src/ui/tui/primitives/PickerMenu.js.map +0 -1
  564. package/dist/src/ui/tui/primitives/ProgressList.d.ts +0 -15
  565. package/dist/src/ui/tui/primitives/ProgressList.js +0 -32
  566. package/dist/src/ui/tui/primitives/ProgressList.js.map +0 -1
  567. package/dist/src/ui/tui/primitives/PromptLabel.d.ts +0 -11
  568. package/dist/src/ui/tui/primitives/PromptLabel.js +0 -13
  569. package/dist/src/ui/tui/primitives/PromptLabel.js.map +0 -1
  570. package/dist/src/ui/tui/primitives/ScreenContainer.d.ts +0 -16
  571. package/dist/src/ui/tui/primitives/ScreenContainer.js +0 -36
  572. package/dist/src/ui/tui/primitives/ScreenContainer.js.map +0 -1
  573. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.d.ts +0 -22
  574. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js +0 -35
  575. package/dist/src/ui/tui/primitives/ScreenErrorBoundary.js.map +0 -1
  576. package/dist/src/ui/tui/primitives/SplitView.d.ts +0 -11
  577. package/dist/src/ui/tui/primitives/SplitView.js +0 -9
  578. package/dist/src/ui/tui/primitives/SplitView.js.map +0 -1
  579. package/dist/src/ui/tui/primitives/TabContainer.d.ts +0 -23
  580. package/dist/src/ui/tui/primitives/TabContainer.js +0 -45
  581. package/dist/src/ui/tui/primitives/TabContainer.js.map +0 -1
  582. package/dist/src/ui/tui/primitives/TextBlock.d.ts +0 -41
  583. package/dist/src/ui/tui/primitives/TextBlock.js +0 -144
  584. package/dist/src/ui/tui/primitives/TextBlock.js.map +0 -1
  585. package/dist/src/ui/tui/primitives/content-types.d.ts +0 -37
  586. package/dist/src/ui/tui/primitives/content-types.js +0 -19
  587. package/dist/src/ui/tui/primitives/content-types.js.map +0 -1
  588. package/dist/src/ui/tui/primitives/index.d.ts +0 -27
  589. package/dist/src/ui/tui/primitives/index.js +0 -24
  590. package/dist/src/ui/tui/primitives/index.js.map +0 -1
  591. package/dist/src/ui/tui/primitives/layout-helpers.d.ts +0 -36
  592. package/dist/src/ui/tui/primitives/layout-helpers.js +0 -95
  593. package/dist/src/ui/tui/primitives/layout-helpers.js.map +0 -1
  594. package/dist/src/ui/tui/primitives/text-helpers.d.ts +0 -10
  595. package/dist/src/ui/tui/primitives/text-helpers.js +0 -43
  596. package/dist/src/ui/tui/primitives/text-helpers.js.map +0 -1
  597. package/dist/src/ui/tui/router.d.ts +0 -58
  598. package/dist/src/ui/tui/router.js +0 -96
  599. package/dist/src/ui/tui/router.js.map +0 -1
  600. package/dist/src/ui/tui/screen-registry.d.ts +0 -19
  601. package/dist/src/ui/tui/screen-registry.js +0 -46
  602. package/dist/src/ui/tui/screen-registry.js.map +0 -1
  603. package/dist/src/ui/tui/screens/AgentSkillIntroScreen.d.ts +0 -12
  604. package/dist/src/ui/tui/screens/AgentSkillIntroScreen.js +0 -75
  605. package/dist/src/ui/tui/screens/AgentSkillIntroScreen.js.map +0 -1
  606. package/dist/src/ui/tui/screens/AuthErrorScreen.d.ts +0 -7
  607. package/dist/src/ui/tui/screens/AuthErrorScreen.js +0 -16
  608. package/dist/src/ui/tui/screens/AuthErrorScreen.js.map +0 -1
  609. package/dist/src/ui/tui/screens/AuthScreen.d.ts +0 -13
  610. package/dist/src/ui/tui/screens/AuthScreen.js +0 -20
  611. package/dist/src/ui/tui/screens/AuthScreen.js.map +0 -1
  612. package/dist/src/ui/tui/screens/IntroScreenLayout.d.ts +0 -46
  613. package/dist/src/ui/tui/screens/IntroScreenLayout.js +0 -33
  614. package/dist/src/ui/tui/screens/IntroScreenLayout.js.map +0 -1
  615. package/dist/src/ui/tui/screens/KeepSkillsScreen.d.ts +0 -14
  616. package/dist/src/ui/tui/screens/KeepSkillsScreen.js +0 -74
  617. package/dist/src/ui/tui/screens/KeepSkillsScreen.js.map +0 -1
  618. package/dist/src/ui/tui/screens/ManagedSettingsScreen.d.ts +0 -13
  619. package/dist/src/ui/tui/screens/ManagedSettingsScreen.js +0 -32
  620. package/dist/src/ui/tui/screens/ManagedSettingsScreen.js.map +0 -1
  621. package/dist/src/ui/tui/screens/McpScreen.d.ts +0 -24
  622. package/dist/src/ui/tui/screens/McpScreen.js +0 -130
  623. package/dist/src/ui/tui/screens/McpScreen.js.map +0 -1
  624. package/dist/src/ui/tui/screens/OutroScreen.d.ts +0 -11
  625. package/dist/src/ui/tui/screens/OutroScreen.js +0 -22
  626. package/dist/src/ui/tui/screens/OutroScreen.js.map +0 -1
  627. package/dist/src/ui/tui/screens/PortConflictScreen.d.ts +0 -11
  628. package/dist/src/ui/tui/screens/PortConflictScreen.js +0 -30
  629. package/dist/src/ui/tui/screens/PortConflictScreen.js.map +0 -1
  630. package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.d.ts +0 -15
  631. package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.js +0 -135
  632. package/dist/src/ui/tui/screens/PostHogIntegrationIntroScreen.js.map +0 -1
  633. package/dist/src/ui/tui/screens/RevenueIntroScreen.d.ts +0 -16
  634. package/dist/src/ui/tui/screens/RevenueIntroScreen.js +0 -89
  635. package/dist/src/ui/tui/screens/RevenueIntroScreen.js.map +0 -1
  636. package/dist/src/ui/tui/screens/RunScreen.d.ts +0 -16
  637. package/dist/src/ui/tui/screens/RunScreen.js +0 -73
  638. package/dist/src/ui/tui/screens/RunScreen.js.map +0 -1
  639. package/dist/src/ui/tui/screens/SettingsOverrideScreen.d.ts +0 -6
  640. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js +0 -30
  641. package/dist/src/ui/tui/screens/SettingsOverrideScreen.js.map +0 -1
  642. package/dist/src/ui/tui/screens/SetupScreen.d.ts +0 -13
  643. package/dist/src/ui/tui/screens/SetupScreen.js +0 -74
  644. package/dist/src/ui/tui/screens/SetupScreen.js.map +0 -1
  645. package/dist/src/ui/tui/screens/health/HealthCheckScreen.d.ts +0 -14
  646. package/dist/src/ui/tui/screens/health/HealthCheckScreen.js +0 -77
  647. package/dist/src/ui/tui/screens/health/HealthCheckScreen.js.map +0 -1
  648. package/dist/src/ui/tui/services/mcp-installer.d.ts +0 -21
  649. package/dist/src/ui/tui/services/mcp-installer.js +0 -58
  650. package/dist/src/ui/tui/services/mcp-installer.js.map +0 -1
  651. package/dist/src/ui/tui/start-tui.d.ts +0 -9
  652. package/dist/src/ui/tui/start-tui.js +0 -41
  653. package/dist/src/ui/tui/start-tui.js.map +0 -1
  654. package/dist/src/ui/tui/store.d.ts +0 -190
  655. package/dist/src/ui/tui/store.js +0 -474
  656. package/dist/src/ui/tui/store.js.map +0 -1
  657. package/dist/src/ui/tui/styles.d.ts +0 -32
  658. package/dist/src/ui/tui/styles.js +0 -35
  659. package/dist/src/ui/tui/styles.js.map +0 -1
  660. package/dist/src/ui/wizard-ui.d.ts +0 -81
  661. package/dist/src/ui/wizard-ui.js +0 -19
  662. package/dist/src/ui/wizard-ui.js.map +0 -1
  663. package/dist/src/utils/__tests__/analytics.test.d.ts +0 -1
  664. package/dist/src/utils/__tests__/analytics.test.js +0 -136
  665. package/dist/src/utils/__tests__/analytics.test.js.map +0 -1
  666. package/dist/src/utils/__tests__/provisioning.test.d.ts +0 -1
  667. package/dist/src/utils/__tests__/provisioning.test.js +0 -192
  668. package/dist/src/utils/__tests__/provisioning.test.js.map +0 -1
  669. package/dist/src/utils/__tests__/semver.test.d.ts +0 -1
  670. package/dist/src/utils/__tests__/semver.test.js +0 -159
  671. package/dist/src/utils/__tests__/semver.test.js.map +0 -1
  672. package/dist/src/utils/__tests__/setup-utils.test.d.ts +0 -1
  673. package/dist/src/utils/__tests__/setup-utils.test.js +0 -138
  674. package/dist/src/utils/__tests__/setup-utils.test.js.map +0 -1
  675. package/dist/src/utils/analytics.d.ts +0 -33
  676. package/dist/src/utils/analytics.js +0 -137
  677. package/dist/src/utils/analytics.js.map +0 -1
  678. package/dist/src/utils/anthropic-status.d.ts +0 -17
  679. package/dist/src/utils/anthropic-status.js +0 -49
  680. package/dist/src/utils/anthropic-status.js.map +0 -1
  681. package/dist/src/utils/bash.d.ts +0 -2
  682. package/dist/src/utils/bash.js +0 -54
  683. package/dist/src/utils/bash.js.map +0 -1
  684. package/dist/src/utils/custom-headers.d.ts +0 -9
  685. package/dist/src/utils/custom-headers.js +0 -24
  686. package/dist/src/utils/custom-headers.js.map +0 -1
  687. package/dist/src/utils/debug.d.ts +0 -29
  688. package/dist/src/utils/debug.js +0 -87
  689. package/dist/src/utils/debug.js.map +0 -1
  690. package/dist/src/utils/env-api-key.d.ts +0 -5
  691. package/dist/src/utils/env-api-key.js +0 -57
  692. package/dist/src/utils/env-api-key.js.map +0 -1
  693. package/dist/src/utils/environment.d.ts +0 -4
  694. package/dist/src/utils/environment.js +0 -77
  695. package/dist/src/utils/environment.js.map +0 -1
  696. package/dist/src/utils/file-utils.d.ts +0 -10
  697. package/dist/src/utils/file-utils.js +0 -49
  698. package/dist/src/utils/file-utils.js.map +0 -1
  699. package/dist/src/utils/logging.d.ts +0 -9
  700. package/dist/src/utils/logging.js +0 -47
  701. package/dist/src/utils/logging.js.map +0 -1
  702. package/dist/src/utils/oauth.d.ts +0 -33
  703. package/dist/src/utils/oauth.js +0 -288
  704. package/dist/src/utils/oauth.js.map +0 -1
  705. package/dist/src/utils/package-json.d.ts +0 -30
  706. package/dist/src/utils/package-json.js +0 -47
  707. package/dist/src/utils/package-json.js.map +0 -1
  708. package/dist/src/utils/package-manager.d.ts +0 -21
  709. package/dist/src/utils/package-manager.js +0 -210
  710. package/dist/src/utils/package-manager.js.map +0 -1
  711. package/dist/src/utils/provisioning.d.ts +0 -25
  712. package/dist/src/utils/provisioning.js +0 -191
  713. package/dist/src/utils/provisioning.js.map +0 -1
  714. package/dist/src/utils/rules/astro-rules.md +0 -44
  715. package/dist/src/utils/rules/next-rules.md +0 -9
  716. package/dist/src/utils/rules/react-native-rules.md +0 -7
  717. package/dist/src/utils/rules/react-rules.md +0 -7
  718. package/dist/src/utils/rules/svelte-rules.md +0 -7
  719. package/dist/src/utils/rules/universal.md +0 -32
  720. package/dist/src/utils/semver.d.ts +0 -21
  721. package/dist/src/utils/semver.js +0 -87
  722. package/dist/src/utils/semver.js.map +0 -1
  723. package/dist/src/utils/setup-utils.d.ts +0 -79
  724. package/dist/src/utils/setup-utils.js +0 -406
  725. package/dist/src/utils/setup-utils.js.map +0 -1
  726. package/dist/src/utils/string.d.ts +0 -1
  727. package/dist/src/utils/string.js +0 -9
  728. package/dist/src/utils/string.js.map +0 -1
  729. package/dist/src/utils/types.d.ts +0 -85
  730. package/dist/src/utils/types.js +0 -3
  731. package/dist/src/utils/types.js.map +0 -1
  732. package/dist/src/utils/urls.d.ts +0 -7
  733. package/dist/src/utils/urls.js +0 -78
  734. package/dist/src/utils/urls.js.map +0 -1
  735. package/dist/src/utils/vendor/is-unicorn-supported.d.ts +0 -1
  736. package/dist/src/utils/vendor/is-unicorn-supported.js +0 -24
  737. package/dist/src/utils/vendor/is-unicorn-supported.js.map +0 -1
  738. package/dist/src/utils/wizard-abort.d.ts +0 -16
  739. package/dist/src/utils/wizard-abort.js +0 -59
  740. package/dist/src/utils/wizard-abort.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"cost-tracker.js","sourceRoot":"","sources":["../../../../../src/lib/middleware/benchmarks/cost-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TokenData } from './token-tracker';\nimport type { CacheData } from './cache-tracker';\n\nexport interface CostData {\n totalCost: number;\n phaseCosts: Array<{ phase: string; cost: number }>;\n}\n\n/** Claude Sonnet 4.6 pricing (USD per 1M tokens) */\nconst PRICE_PER_MTOK = {\n input: 3,\n output: 15,\n cacheRead: 0.3,\n cacheCreation5m: 3.75,\n cacheCreation1h: 6,\n} as const;\n\nfunction computeCost(\n inputTokens: number,\n outputTokens: number,\n cacheReadTokens: number,\n cacheCreation5m: number,\n cacheCreation1h: number,\n cacheCreationFallback: number,\n): number {\n const hasBreakdown = cacheCreation5m > 0 || cacheCreation1h > 0;\n return (\n inputTokens * (PRICE_PER_MTOK.input / 1e6) +\n outputTokens * (PRICE_PER_MTOK.output / 1e6) +\n cacheReadTokens * (PRICE_PER_MTOK.cacheRead / 1e6) +\n (hasBreakdown\n ? cacheCreation5m * (PRICE_PER_MTOK.cacheCreation5m / 1e6) +\n cacheCreation1h * (PRICE_PER_MTOK.cacheCreation1h / 1e6)\n : cacheCreationFallback * (PRICE_PER_MTOK.cacheCreation5m / 1e6))\n );\n}\n\nexport class CostTrackerPlugin implements Middleware {\n readonly name = 'cost';\n\n private phaseCosts: Array<{ phase: string; cost: number }> = [];\n private totalCost = 0;\n\n onPhaseTransition(\n fromPhase: string,\n _toPhase: string,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const tokens = ctx.get<TokenData>('tokens');\n const cache = ctx.get<CacheData>('cache');\n const tokenSnap = tokens?.phaseSnapshots.at(-1);\n const cacheSnap = cache?.phaseSnapshots.at(-1);\n\n const totalIn = tokenSnap?.inputTokens ?? 0;\n const read = cacheSnap?.cacheReadTokens ?? 0;\n const creation = cacheSnap?.cacheCreationTokens ?? 0;\n const c5m = cacheSnap?.cacheCreation5m ?? 0;\n const c1h = cacheSnap?.cacheCreation1h ?? 0;\n const baseIn = Math.max(0, totalIn - read - creation);\n\n const phaseCost = computeCost(\n baseIn,\n tokenSnap?.outputTokens ?? 0,\n read,\n c5m,\n c1h,\n creation,\n );\n\n this.phaseCosts.push({ phase: fromPhase, cost: phaseCost });\n this.totalCost += phaseCost;\n store.set('cost', this.getData());\n }\n\n onFinalize(\n resultMessage: any,\n _totalDurationMs: number,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const tokens = ctx.get<TokenData>('tokens');\n const cache = ctx.get<CacheData>('cache');\n const tokenSnap = tokens?.phaseSnapshots.at(-1);\n const cacheSnap = cache?.phaseSnapshots.at(-1);\n\n const totalIn = tokenSnap?.inputTokens ?? 0;\n const read = cacheSnap?.cacheReadTokens ?? 0;\n const creation = cacheSnap?.cacheCreationTokens ?? 0;\n const c5m = cacheSnap?.cacheCreation5m ?? 0;\n const c1h = cacheSnap?.cacheCreation1h ?? 0;\n const baseIn = Math.max(0, totalIn - read - creation);\n\n const lastPhaseCost = computeCost(\n baseIn,\n tokenSnap?.outputTokens ?? 0,\n read,\n c5m,\n c1h,\n creation,\n );\n\n this.phaseCosts.push({ phase: ctx.currentPhase, cost: lastPhaseCost });\n this.totalCost += lastPhaseCost;\n\n const sdkTotal =\n Number(resultMessage?.usage?.total_cost_usd ?? 0) ||\n Number(resultMessage?.total_cost_usd ?? 0);\n\n if (sdkTotal > 0 && this.totalCost > 0) {\n const scale = sdkTotal / this.totalCost;\n this.phaseCosts = this.phaseCosts.map((p) => ({\n phase: p.phase,\n cost: p.cost * scale,\n }));\n this.totalCost = sdkTotal;\n }\n\n store.set('cost', this.getData());\n }\n\n private getData(): CostData {\n return {\n totalCost: this.totalCost,\n phaseCosts: [...this.phaseCosts],\n };\n }\n}\n"]}
@@ -1,20 +0,0 @@
1
- /**
2
- * Duration tracking plugin (per-phase and total).
3
- */
4
- import type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';
5
- export interface DurationData {
6
- phaseSnapshots: Array<{
7
- phase: string;
8
- startTime: number;
9
- endTime: number;
10
- durationMs: number;
11
- }>;
12
- totalDurationMs: number;
13
- }
14
- export declare class DurationTrackerPlugin implements Middleware {
15
- readonly name = "duration";
16
- private phaseStartTime;
17
- private phaseSnapshots;
18
- onPhaseTransition(fromPhase: string, _toPhase: string, _ctx: MiddlewareContext, store: MiddlewareStore): void;
19
- onFinalize(_resultMessage: any, totalDurationMs: number, ctx: MiddlewareContext, store: MiddlewareStore): void;
20
- }
@@ -1,40 +0,0 @@
1
- "use strict";
2
- /**
3
- * Duration tracking plugin (per-phase and total).
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DurationTrackerPlugin = void 0;
7
- class DurationTrackerPlugin {
8
- name = 'duration';
9
- phaseStartTime = Date.now();
10
- phaseSnapshots = [];
11
- onPhaseTransition(fromPhase, _toPhase, _ctx, store) {
12
- const now = Date.now();
13
- this.phaseSnapshots.push({
14
- phase: fromPhase,
15
- startTime: this.phaseStartTime,
16
- endTime: now,
17
- durationMs: now - this.phaseStartTime,
18
- });
19
- this.phaseStartTime = now;
20
- store.set('duration', {
21
- phaseSnapshots: [...this.phaseSnapshots],
22
- totalDurationMs: 0,
23
- });
24
- }
25
- onFinalize(_resultMessage, totalDurationMs, ctx, store) {
26
- const now = Date.now();
27
- this.phaseSnapshots.push({
28
- phase: ctx.currentPhase,
29
- startTime: this.phaseStartTime,
30
- endTime: now,
31
- durationMs: now - this.phaseStartTime,
32
- });
33
- store.set('duration', {
34
- phaseSnapshots: [...this.phaseSnapshots],
35
- totalDurationMs,
36
- });
37
- }
38
- }
39
- exports.DurationTrackerPlugin = DurationTrackerPlugin;
40
- //# sourceMappingURL=duration-tracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"duration-tracker.js","sourceRoot":"","sources":["../../../../../src/lib/middleware/benchmarks/duration-tracker.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAcH,MAAa,qBAAqB;IACvB,IAAI,GAAG,UAAU,CAAC;IAEnB,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,cAAc,GAKjB,EAAE,CAAC;IAER,iBAAiB,CACf,SAAiB,EACjB,QAAgB,EAChB,IAAuB,EACvB,KAAsB;QAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI,CAAC,cAAc;YAC9B,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,cAAc;SACtC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC1B,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE;YACpB,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;YACxC,eAAe,EAAE,CAAC;SACI,CAAC,CAAC;IAC5B,CAAC;IAED,UAAU,CACR,cAAmB,EACnB,eAAuB,EACvB,GAAsB,EACtB,KAAsB;QAEtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YACvB,KAAK,EAAE,GAAG,CAAC,YAAY;YACvB,SAAS,EAAE,IAAI,CAAC,cAAc;YAC9B,OAAO,EAAE,GAAG;YACZ,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,cAAc;SACtC,CAAC,CAAC;QAEH,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE;YACpB,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;YACxC,eAAe;SACO,CAAC,CAAC;IAC5B,CAAC;CACF;AAlDD,sDAkDC","sourcesContent":["/**\n * Duration tracking plugin (per-phase and total).\n */\n\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\n\nexport interface DurationData {\n phaseSnapshots: Array<{\n phase: string;\n startTime: number;\n endTime: number;\n durationMs: number;\n }>;\n totalDurationMs: number;\n}\n\nexport class DurationTrackerPlugin implements Middleware {\n readonly name = 'duration';\n\n private phaseStartTime = Date.now();\n private phaseSnapshots: Array<{\n phase: string;\n startTime: number;\n endTime: number;\n durationMs: number;\n }> = [];\n\n onPhaseTransition(\n fromPhase: string,\n _toPhase: string,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const now = Date.now();\n this.phaseSnapshots.push({\n phase: fromPhase,\n startTime: this.phaseStartTime,\n endTime: now,\n durationMs: now - this.phaseStartTime,\n });\n this.phaseStartTime = now;\n store.set('duration', {\n phaseSnapshots: [...this.phaseSnapshots],\n totalDurationMs: 0,\n } satisfies DurationData);\n }\n\n onFinalize(\n _resultMessage: any,\n totalDurationMs: number,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n const now = Date.now();\n this.phaseSnapshots.push({\n phase: ctx.currentPhase,\n startTime: this.phaseStartTime,\n endTime: now,\n durationMs: now - this.phaseStartTime,\n });\n\n store.set('duration', {\n phaseSnapshots: [...this.phaseSnapshots],\n totalDurationMs,\n } satisfies DurationData);\n }\n}\n"]}
@@ -1,9 +0,0 @@
1
- /**
2
- * Plugin registry and factory.
3
- *
4
- * Maps plugin names to constructors and creates the ordered plugin list
5
- * from a BenchmarkConfig.
6
- */
7
- import type { Middleware, MiddlewareFactoryOptions } from '../types';
8
- import type { BenchmarkConfig } from '../config';
9
- export declare function createPluginsFromConfig(config: BenchmarkConfig, opts: MiddlewareFactoryOptions): Middleware[];
@@ -1,60 +0,0 @@
1
- "use strict";
2
- /**
3
- * Plugin registry and factory.
4
- *
5
- * Maps plugin names to constructors and creates the ordered plugin list
6
- * from a BenchmarkConfig.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.createPluginsFromConfig = createPluginsFromConfig;
10
- const turn_counter_1 = require("./turn-counter");
11
- const token_tracker_1 = require("./token-tracker");
12
- const cache_tracker_1 = require("./cache-tracker");
13
- const compaction_tracker_1 = require("./compaction-tracker");
14
- const context_size_tracker_1 = require("./context-size-tracker");
15
- const cost_tracker_1 = require("./cost-tracker");
16
- const duration_tracker_1 = require("./duration-tracker");
17
- const summary_1 = require("./summary");
18
- const json_writer_1 = require("./json-writer");
19
- const PLUGIN_REGISTRY = {
20
- turns: () => new turn_counter_1.TurnCounterPlugin(),
21
- tokens: () => new token_tracker_1.TokenTrackerPlugin(),
22
- cache: () => new cache_tracker_1.CacheTrackerPlugin(),
23
- compactions: () => new compaction_tracker_1.CompactionTrackerPlugin(),
24
- contextSize: () => new context_size_tracker_1.ContextSizeTrackerPlugin(),
25
- cost: () => new cost_tracker_1.CostTrackerPlugin(),
26
- duration: () => new duration_tracker_1.DurationTrackerPlugin(),
27
- summary: (opts) => new summary_1.SummaryPlugin(opts.spinner),
28
- jsonWriter: (opts) => new json_writer_1.JsonWriterPlugin(opts.outputPath),
29
- };
30
- /**
31
- * Execution order — data producers before consumers:
32
- * turns (dedup) -> tokens -> cache -> compactions -> contextSize -> cost -> duration -> summary -> jsonWriter
33
- */
34
- const PLUGIN_ORDER = [
35
- 'turns',
36
- 'tokens',
37
- 'cache',
38
- 'compactions',
39
- 'contextSize',
40
- 'cost',
41
- 'duration',
42
- 'summary',
43
- 'jsonWriter',
44
- ];
45
- function createPluginsFromConfig(config, opts) {
46
- const resolvedOpts = {
47
- ...opts,
48
- outputPath: opts.outputPath ?? config.output.benchmarkPath,
49
- };
50
- // If suppressWizardLogs is set, disable the summary plugin
51
- const effectivePlugins = { ...config.plugins };
52
- if (config.output.suppressWizardLogs) {
53
- effectivePlugins.summary = false;
54
- }
55
- return PLUGIN_ORDER.filter((name) => effectivePlugins[name] !== false)
56
- .map((name) => PLUGIN_REGISTRY[name])
57
- .filter(Boolean)
58
- .map((factory) => factory(resolvedOpts));
59
- }
60
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/middleware/benchmarks/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AA4CH,0DAmBC;AA3DD,iDAAmD;AACnD,mDAAqD;AACrD,mDAAqD;AACrD,6DAA+D;AAC/D,iEAAkE;AAClE,iDAAmD;AACnD,yDAA2D;AAC3D,uCAA0C;AAC1C,+CAAiD;AAIjD,MAAM,eAAe,GAAkC;IACrD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,gCAAiB,EAAE;IACpC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAkB,EAAE;IACtC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kCAAkB,EAAE;IACrC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,4CAAuB,EAAE;IAChD,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,+CAAwB,EAAE;IACjD,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,gCAAiB,EAAE;IACnC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,wCAAqB,EAAE;IAC3C,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,uBAAa,CAAC,IAAI,CAAC,OAAQ,CAAC;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,8BAAgB,CAAC,IAAI,CAAC,UAAW,CAAC;CAC7D,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG;IACnB,OAAO;IACP,QAAQ;IACR,OAAO;IACP,aAAa;IACb,aAAa;IACb,MAAM;IACN,UAAU;IACV,SAAS;IACT,YAAY;CACb,CAAC;AAEF,SAAgB,uBAAuB,CACrC,MAAuB,EACvB,IAA8B;IAE9B,MAAM,YAAY,GAA6B;QAC7C,GAAG,IAAI;QACP,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa;KAC3D,CAAC;IAEF,2DAA2D;IAC3D,MAAM,gBAAgB,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACrC,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;IACnC,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;SACnE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACpC,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;AAC7C,CAAC","sourcesContent":["/**\n * Plugin registry and factory.\n *\n * Maps plugin names to constructors and creates the ordered plugin list\n * from a BenchmarkConfig.\n */\n\nimport type { Middleware, MiddlewareFactoryOptions } from '../types';\nimport type { BenchmarkConfig } from '../config';\nimport { TurnCounterPlugin } from './turn-counter';\nimport { TokenTrackerPlugin } from './token-tracker';\nimport { CacheTrackerPlugin } from './cache-tracker';\nimport { CompactionTrackerPlugin } from './compaction-tracker';\nimport { ContextSizeTrackerPlugin } from './context-size-tracker';\nimport { CostTrackerPlugin } from './cost-tracker';\nimport { DurationTrackerPlugin } from './duration-tracker';\nimport { SummaryPlugin } from './summary';\nimport { JsonWriterPlugin } from './json-writer';\n\ntype PluginFactory = (opts: MiddlewareFactoryOptions) => Middleware;\n\nconst PLUGIN_REGISTRY: Record<string, PluginFactory> = {\n turns: () => new TurnCounterPlugin(),\n tokens: () => new TokenTrackerPlugin(),\n cache: () => new CacheTrackerPlugin(),\n compactions: () => new CompactionTrackerPlugin(),\n contextSize: () => new ContextSizeTrackerPlugin(),\n cost: () => new CostTrackerPlugin(),\n duration: () => new DurationTrackerPlugin(),\n summary: (opts) => new SummaryPlugin(opts.spinner!),\n jsonWriter: (opts) => new JsonWriterPlugin(opts.outputPath!),\n};\n\n/**\n * Execution order — data producers before consumers:\n * turns (dedup) -> tokens -> cache -> compactions -> contextSize -> cost -> duration -> summary -> jsonWriter\n */\nconst PLUGIN_ORDER = [\n 'turns',\n 'tokens',\n 'cache',\n 'compactions',\n 'contextSize',\n 'cost',\n 'duration',\n 'summary',\n 'jsonWriter',\n];\n\nexport function createPluginsFromConfig(\n config: BenchmarkConfig,\n opts: MiddlewareFactoryOptions,\n): Middleware[] {\n const resolvedOpts: MiddlewareFactoryOptions = {\n ...opts,\n outputPath: opts.outputPath ?? config.output.benchmarkPath,\n };\n\n // If suppressWizardLogs is set, disable the summary plugin\n const effectivePlugins = { ...config.plugins };\n if (config.output.suppressWizardLogs) {\n effectivePlugins.summary = false;\n }\n\n return PLUGIN_ORDER.filter((name) => effectivePlugins[name] !== false)\n .map((name) => PLUGIN_REGISTRY[name])\n .filter(Boolean)\n .map((factory) => factory(resolvedOpts));\n}\n"]}
@@ -1,15 +0,0 @@
1
- /**
2
- * JSON file output plugin.
3
- *
4
- * Assembles the BenchmarkData structure from all upstream plugin data
5
- * and writes it to a JSON file. Returns the BenchmarkData for backward compat.
6
- */
7
- import type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';
8
- import type { BenchmarkData } from '../benchmark';
9
- export declare class JsonWriterPlugin implements Middleware {
10
- readonly name = "jsonWriter";
11
- private outputPath;
12
- constructor(outputPath: string);
13
- onFinalize(resultMessage: any, totalDurationMs: number, ctx: MiddlewareContext, _store: MiddlewareStore): BenchmarkData;
14
- private writeBenchmarkData;
15
- }
@@ -1,144 +0,0 @@
1
- "use strict";
2
- /**
3
- * JSON file output plugin.
4
- *
5
- * Assembles the BenchmarkData structure from all upstream plugin data
6
- * and writes it to a JSON file. Returns the BenchmarkData for backward compat.
7
- */
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.JsonWriterPlugin = void 0;
13
- const fs_1 = __importDefault(require("fs"));
14
- const ui_1 = require("../../../ui");
15
- const debug_1 = require("../../../utils/debug");
16
- const agent_interface_1 = require("../../agent/agent-interface");
17
- /**
18
- * Sum token usage across all models from the SDK's modelUsage field.
19
- */
20
- function sumModelUsage(modelUsage) {
21
- let input_tokens = 0;
22
- let output_tokens = 0;
23
- let cache_creation_input_tokens = 0;
24
- let cache_read_input_tokens = 0;
25
- for (const model of Object.values(modelUsage)) {
26
- input_tokens += model.inputTokens ?? 0;
27
- output_tokens += model.outputTokens ?? 0;
28
- cache_creation_input_tokens += model.cacheCreationInputTokens ?? 0;
29
- cache_read_input_tokens += model.cacheReadInputTokens ?? 0;
30
- }
31
- return {
32
- input_tokens,
33
- output_tokens,
34
- cache_creation_input_tokens,
35
- cache_read_input_tokens,
36
- };
37
- }
38
- class JsonWriterPlugin {
39
- name = 'jsonWriter';
40
- outputPath;
41
- constructor(outputPath) {
42
- this.outputPath = outputPath;
43
- }
44
- onFinalize(resultMessage, totalDurationMs, ctx, _store) {
45
- const tokens = ctx.get('tokens');
46
- const cache = ctx.get('cache');
47
- const turns = ctx.get('turns');
48
- const cost = ctx.get('cost');
49
- const duration = ctx.get('duration');
50
- const compactions = ctx.get('compactions');
51
- const contextSize = ctx.get('contextSize');
52
- const modelUsage = resultMessage?.modelUsage ?? {};
53
- const aggregateUsage = sumModelUsage(modelUsage);
54
- const phaseCount = duration?.phaseSnapshots.length ?? 0;
55
- const steps = [];
56
- for (let i = 0; i < phaseCount; i++) {
57
- const dur = duration.phaseSnapshots[i];
58
- const tokenSnap = tokens?.phaseSnapshots[i];
59
- const cacheSnap = cache?.phaseSnapshots[i];
60
- const turnSnap = turns?.phaseSnapshots[i];
61
- const costSnap = cost?.phaseCosts[i];
62
- const compSnap = compactions?.phaseSnapshots[i];
63
- const ctxSnap = contextSize?.phaseSnapshots[i];
64
- const step = {
65
- name: dur.phase,
66
- usage: {
67
- input_tokens: tokenSnap?.inputTokens ?? 0,
68
- output_tokens: tokenSnap?.outputTokens ?? 0,
69
- cache_creation_input_tokens: cacheSnap?.cacheCreationTokens ?? 0,
70
- cache_read_input_tokens: cacheSnap?.cacheReadTokens ?? 0,
71
- ...((cacheSnap?.cacheCreation5m ?? 0) +
72
- (cacheSnap?.cacheCreation1h ?? 0) >
73
- 0 && {
74
- cache_creation: {
75
- ephemeral_5m_input_tokens: cacheSnap?.cacheCreation5m ?? 0,
76
- ephemeral_1h_input_tokens: cacheSnap?.cacheCreation1h ?? 0,
77
- },
78
- }),
79
- },
80
- modelUsage: {},
81
- totalCostUsd: costSnap?.cost ?? 0,
82
- durationMs: dur.durationMs,
83
- durationApiMs: 0,
84
- numTurns: turnSnap?.turns ?? 0,
85
- ...(ctxSnap?.contextTokensIn !== undefined && {
86
- contextTokensIn: ctxSnap.contextTokensIn,
87
- }),
88
- ...(ctxSnap?.contextTokensOut !== undefined && {
89
- contextTokensOut: ctxSnap.contextTokensOut,
90
- }),
91
- ...(compSnap && compSnap.compactions > 0
92
- ? {
93
- compactions: compSnap.compactions,
94
- compactionPreTokens: compSnap.preTokens,
95
- }
96
- : {}),
97
- };
98
- steps.push(step);
99
- }
100
- const totalTurns = turns?.totalTurns ?? 0;
101
- const totalCost = cost?.totalCost ?? 0;
102
- const totalCompactions = compactions?.totalCompactions ?? 0;
103
- const fromModelUsage = aggregateUsage.input_tokens +
104
- aggregateUsage.cache_read_input_tokens +
105
- aggregateUsage.cache_creation_input_tokens;
106
- const inputTokens = fromModelUsage > 0
107
- ? fromModelUsage
108
- : (tokens?.totalInput ?? 0) +
109
- (cache?.totalRead ?? 0) +
110
- (cache?.totalCreation ?? 0);
111
- const outputTokens = aggregateUsage.output_tokens > 0
112
- ? aggregateUsage.output_tokens
113
- : tokens?.totalOutput ?? 0;
114
- const benchmark = {
115
- timestamp: new Date().toISOString(),
116
- steps,
117
- totals: {
118
- totalCostUsd: totalCost,
119
- durationMs: totalDurationMs,
120
- inputTokens,
121
- outputTokens,
122
- numTurns: resultMessage?.num_turns ?? totalTurns,
123
- totalCompactions,
124
- totalCacheReadTokens: cache?.totalRead ?? 0,
125
- totalCacheCreation5mTokens: cache?.totalCreation5m ?? 0,
126
- totalCacheCreation1hTokens: cache?.totalCreation1h ?? 0,
127
- },
128
- };
129
- this.writeBenchmarkData(benchmark);
130
- return benchmark;
131
- }
132
- writeBenchmarkData(data) {
133
- try {
134
- fs_1.default.writeFileSync(this.outputPath, JSON.stringify(data, null, 2));
135
- (0, debug_1.logToFile)(`Benchmark data written to ${this.outputPath}`);
136
- (0, ui_1.getUI)().log.info(`● ${agent_interface_1.AgentSignals.BENCHMARK} Results written to ${this.outputPath}`);
137
- }
138
- catch (error) {
139
- (0, debug_1.logToFile)('Failed to write benchmark data:', error);
140
- }
141
- }
142
- }
143
- exports.JsonWriterPlugin = JsonWriterPlugin;
144
- //# sourceMappingURL=json-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-writer.js","sourceRoot":"","sources":["../../../../../src/lib/middleware/benchmarks/json-writer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * JSON file output plugin.\n *\n * Assembles the BenchmarkData structure from all upstream plugin data\n * and writes it to a JSON file. Returns the BenchmarkData for backward compat.\n */\n\nimport fs from 'fs';\nimport { getUI } from '../../../ui';\nimport { logToFile } from '../../../utils/debug';\nimport { AgentSignals } from '../../agent/agent-interface';\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TokenData } from './token-tracker';\nimport type { CacheData } from './cache-tracker';\nimport type { TurnData } from './turn-counter';\nimport type { CostData } from './cost-tracker';\nimport type { DurationData } from './duration-tracker';\nimport type { CompactionData } from './compaction-tracker';\nimport type { ContextSizeData } from './context-size-tracker';\nimport type { BenchmarkData, StepUsage } from '../benchmark';\n\n/**\n * Sum token usage across all models from the SDK's modelUsage field.\n */\nfunction sumModelUsage(modelUsage: Record<string, any>): {\n input_tokens: number;\n output_tokens: number;\n cache_creation_input_tokens: number;\n cache_read_input_tokens: number;\n} {\n let input_tokens = 0;\n let output_tokens = 0;\n let cache_creation_input_tokens = 0;\n let cache_read_input_tokens = 0;\n\n for (const model of Object.values(modelUsage)) {\n input_tokens += model.inputTokens ?? 0;\n output_tokens += model.outputTokens ?? 0;\n cache_creation_input_tokens += model.cacheCreationInputTokens ?? 0;\n cache_read_input_tokens += model.cacheReadInputTokens ?? 0;\n }\n\n return {\n input_tokens,\n output_tokens,\n cache_creation_input_tokens,\n cache_read_input_tokens,\n };\n}\n\nexport class JsonWriterPlugin implements Middleware {\n readonly name = 'jsonWriter';\n\n private outputPath: string;\n\n constructor(outputPath: string) {\n this.outputPath = outputPath;\n }\n\n onFinalize(\n resultMessage: any,\n totalDurationMs: number,\n ctx: MiddlewareContext,\n _store: MiddlewareStore,\n ): BenchmarkData {\n const tokens = ctx.get<TokenData>('tokens');\n const cache = ctx.get<CacheData>('cache');\n const turns = ctx.get<TurnData>('turns');\n const cost = ctx.get<CostData>('cost');\n const duration = ctx.get<DurationData>('duration');\n const compactions = ctx.get<CompactionData>('compactions');\n const contextSize = ctx.get<ContextSizeData>('contextSize');\n\n const modelUsage = resultMessage?.modelUsage ?? {};\n const aggregateUsage = sumModelUsage(modelUsage);\n\n const phaseCount = duration?.phaseSnapshots.length ?? 0;\n const steps: StepUsage[] = [];\n\n for (let i = 0; i < phaseCount; i++) {\n const dur = duration!.phaseSnapshots[i];\n const tokenSnap = tokens?.phaseSnapshots[i];\n const cacheSnap = cache?.phaseSnapshots[i];\n const turnSnap = turns?.phaseSnapshots[i];\n const costSnap = cost?.phaseCosts[i];\n const compSnap = compactions?.phaseSnapshots[i];\n const ctxSnap = contextSize?.phaseSnapshots[i];\n\n const step: StepUsage = {\n name: dur.phase,\n usage: {\n input_tokens: tokenSnap?.inputTokens ?? 0,\n output_tokens: tokenSnap?.outputTokens ?? 0,\n cache_creation_input_tokens: cacheSnap?.cacheCreationTokens ?? 0,\n cache_read_input_tokens: cacheSnap?.cacheReadTokens ?? 0,\n ...((cacheSnap?.cacheCreation5m ?? 0) +\n (cacheSnap?.cacheCreation1h ?? 0) >\n 0 && {\n cache_creation: {\n ephemeral_5m_input_tokens: cacheSnap?.cacheCreation5m ?? 0,\n ephemeral_1h_input_tokens: cacheSnap?.cacheCreation1h ?? 0,\n },\n }),\n },\n modelUsage: {},\n totalCostUsd: costSnap?.cost ?? 0,\n durationMs: dur.durationMs,\n durationApiMs: 0,\n numTurns: turnSnap?.turns ?? 0,\n ...(ctxSnap?.contextTokensIn !== undefined && {\n contextTokensIn: ctxSnap.contextTokensIn,\n }),\n ...(ctxSnap?.contextTokensOut !== undefined && {\n contextTokensOut: ctxSnap.contextTokensOut,\n }),\n ...(compSnap && compSnap.compactions > 0\n ? {\n compactions: compSnap.compactions,\n compactionPreTokens: compSnap.preTokens,\n }\n : {}),\n };\n\n steps.push(step);\n }\n\n const totalTurns = turns?.totalTurns ?? 0;\n const totalCost = cost?.totalCost ?? 0;\n const totalCompactions = compactions?.totalCompactions ?? 0;\n const fromModelUsage =\n aggregateUsage.input_tokens +\n aggregateUsage.cache_read_input_tokens +\n aggregateUsage.cache_creation_input_tokens;\n const inputTokens =\n fromModelUsage > 0\n ? fromModelUsage\n : (tokens?.totalInput ?? 0) +\n (cache?.totalRead ?? 0) +\n (cache?.totalCreation ?? 0);\n const outputTokens =\n aggregateUsage.output_tokens > 0\n ? aggregateUsage.output_tokens\n : tokens?.totalOutput ?? 0;\n\n const benchmark: BenchmarkData = {\n timestamp: new Date().toISOString(),\n steps,\n totals: {\n totalCostUsd: totalCost,\n durationMs: totalDurationMs,\n inputTokens,\n outputTokens,\n numTurns: resultMessage?.num_turns ?? totalTurns,\n totalCompactions,\n totalCacheReadTokens: cache?.totalRead ?? 0,\n totalCacheCreation5mTokens: cache?.totalCreation5m ?? 0,\n totalCacheCreation1hTokens: cache?.totalCreation1h ?? 0,\n },\n };\n\n this.writeBenchmarkData(benchmark);\n return benchmark;\n }\n\n private writeBenchmarkData(data: BenchmarkData): void {\n try {\n fs.writeFileSync(this.outputPath, JSON.stringify(data, null, 2));\n logToFile(`Benchmark data written to ${this.outputPath}`);\n getUI().log.info(\n `● ${AgentSignals.BENCHMARK} Results written to ${this.outputPath}`,\n );\n } catch (error) {\n logToFile('Failed to write benchmark data:', error);\n }\n }\n}\n"]}
@@ -1,9 +0,0 @@
1
- import { type SpinnerHandle } from '../../../ui';
2
- import type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';
3
- export declare class SummaryPlugin implements Middleware {
4
- readonly name = "summary";
5
- private spinner;
6
- constructor(spinner: SpinnerHandle);
7
- onPhaseTransition(fromPhase: string, toPhase: string, ctx: MiddlewareContext, _store: MiddlewareStore): void;
8
- onFinalize(_resultMessage: any, totalDurationMs: number, ctx: MiddlewareContext, _store: MiddlewareStore): void;
9
- }
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SummaryPlugin = void 0;
4
- const ui_1 = require("../../../ui");
5
- const agent_interface_1 = require("../../agent/agent-interface");
6
- function fmtDuration(ms) {
7
- const s = Math.round(ms / 1000);
8
- const m = Math.floor(s / 60);
9
- return m > 0 ? `${m}m ${s % 60}s` : `${s}s`;
10
- }
11
- function fmtTok(n) {
12
- if (n >= 1_000_000)
13
- return `${(n / 1_000_000).toFixed(1)}M`;
14
- if (n >= 1_000)
15
- return `${(n / 1000).toFixed(1)}K`;
16
- return n.toLocaleString();
17
- }
18
- function fmtCost(usd) {
19
- if (usd > 0 && usd < 0.01)
20
- return `$${usd.toFixed(4)}`;
21
- return `$${usd.toFixed(2)}`;
22
- }
23
- function printPhase(s) {
24
- const baseIn = Math.max(0, s.inputTokens - s.cacheRead - s.cacheCreation5m - s.cacheCreation1h);
25
- return [
26
- `${s.phase}: ${fmtDuration(s.durationMs)}, ${s.turns} turns, cost: ${fmtCost(s.cost)}`,
27
- ` in: ${fmtTok(baseIn)}, out: ${fmtTok(s.outputTokens)}, cache_read: ${fmtTok(s.cacheRead)}, cache_5m: ${fmtTok(s.cacheCreation5m)}, cache_1h: ${fmtTok(s.cacheCreation1h)}`,
28
- s.compactions > 0 ? ` ${s.compactions} compaction(s)` : null,
29
- s.contextOut !== undefined ? ` ctx_out: ${fmtTok(s.contextOut)}` : null,
30
- ]
31
- .filter(Boolean)
32
- .join('\n');
33
- }
34
- function getPhaseStats(i, ctx) {
35
- const duration = ctx.get('duration');
36
- const dur = duration?.phaseSnapshots[i];
37
- if (!dur)
38
- return null;
39
- const tokens = ctx.get('tokens');
40
- const turns = ctx.get('turns');
41
- const cost = ctx.get('cost');
42
- const compactions = ctx.get('compactions');
43
- const contextSize = ctx.get('contextSize');
44
- const cache = ctx.get('cache');
45
- return {
46
- phase: dur.phase,
47
- durationMs: dur.durationMs,
48
- turns: turns?.phaseSnapshots[i]?.turns ?? 0,
49
- inputTokens: tokens?.phaseSnapshots[i]?.inputTokens ?? 0,
50
- outputTokens: tokens?.phaseSnapshots[i]?.outputTokens ?? 0,
51
- cacheRead: cache?.phaseSnapshots[i]?.cacheReadTokens ?? 0,
52
- cacheCreation5m: cache?.phaseSnapshots[i]?.cacheCreation5m ?? 0,
53
- cacheCreation1h: cache?.phaseSnapshots[i]?.cacheCreation1h ?? 0,
54
- cost: cost?.phaseCosts[i]?.cost ?? 0,
55
- compactions: compactions?.phaseSnapshots[i]?.compactions ?? 0,
56
- contextOut: contextSize?.phaseSnapshots[i]?.contextTokensOut,
57
- };
58
- }
59
- class SummaryPlugin {
60
- name = 'summary';
61
- spinner;
62
- constructor(spinner) {
63
- this.spinner = spinner;
64
- }
65
- onPhaseTransition(fromPhase, toPhase, ctx, _store) {
66
- const duration = ctx.get('duration');
67
- const idx = (duration?.phaseSnapshots.length ?? 1) - 1;
68
- const stats = getPhaseStats(idx, ctx);
69
- if (stats) {
70
- this.spinner.stop(`${agent_interface_1.AgentSignals.BENCHMARK} ${printPhase(stats)}`);
71
- }
72
- else {
73
- this.spinner.stop(`${agent_interface_1.AgentSignals.BENCHMARK} ${fromPhase}`);
74
- }
75
- (0, ui_1.getUI)().log.info(`${agent_interface_1.AgentSignals.BENCHMARK} Starting phase: ${toPhase}`);
76
- this.spinner.start(`Integrating PostHog (${toPhase})...`);
77
- }
78
- onFinalize(_resultMessage, totalDurationMs, ctx, _store) {
79
- const duration = ctx.get('duration');
80
- const cost = ctx.get('cost');
81
- const tokens = ctx.get('tokens');
82
- const cache = ctx.get('cache');
83
- const phaseCount = duration?.phaseSnapshots.length ?? 0;
84
- const totalCost = cost?.totalCost ?? 0;
85
- (0, ui_1.getUI)().log.info('');
86
- (0, ui_1.getUI)().log.info(`◇ ${agent_interface_1.AgentSignals.BENCHMARK} ${phaseCount} phases in ${fmtDuration(totalDurationMs)}, cost: ${fmtCost(totalCost)}`);
87
- (0, ui_1.getUI)().log.info(` total in: ${fmtTok(tokens?.totalInput ?? 0)}, out: ${fmtTok(tokens?.totalOutput ?? 0)}, cache_read: ${fmtTok(cache?.totalRead ?? 0)}, cache_5m: ${fmtTok(cache?.totalCreation5m ?? 0)}, cache_1h: ${fmtTok(cache?.totalCreation1h ?? 0)}`);
88
- (0, ui_1.getUI)().log.info('');
89
- (0, ui_1.getUI)().log.info(`● ${agent_interface_1.AgentSignals.BENCHMARK} Summary by phase:`);
90
- if (duration?.phaseSnapshots) {
91
- for (let i = 0; i < duration.phaseSnapshots.length; i++) {
92
- const stats = getPhaseStats(i, ctx);
93
- if (stats) {
94
- (0, ui_1.getUI)().log.info(printPhase(stats));
95
- }
96
- }
97
- }
98
- (0, ui_1.getUI)().log.info('');
99
- }
100
- }
101
- exports.SummaryPlugin = SummaryPlugin;
102
- //# sourceMappingURL=summary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../../../src/lib/middleware/benchmarks/summary.ts"],"names":[],"mappings":"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","sourcesContent":["import { getUI, type SpinnerHandle } from '../../../ui';\nimport { AgentSignals } from '../../agent/agent-interface';\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TokenData } from './token-tracker';\nimport type { TurnData } from './turn-counter';\nimport type { CostData } from './cost-tracker';\nimport type { DurationData } from './duration-tracker';\nimport type { CompactionData } from './compaction-tracker';\nimport type { ContextSizeData } from './context-size-tracker';\nimport type { CacheData } from './cache-tracker';\n\nfunction fmtDuration(ms: number): string {\n const s = Math.round(ms / 1000);\n const m = Math.floor(s / 60);\n return m > 0 ? `${m}m ${s % 60}s` : `${s}s`;\n}\n\nfunction fmtTok(n: number): string {\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (n >= 1_000) return `${(n / 1000).toFixed(1)}K`;\n return n.toLocaleString();\n}\n\nfunction fmtCost(usd: number): string {\n if (usd > 0 && usd < 0.01) return `$${usd.toFixed(4)}`;\n return `$${usd.toFixed(2)}`;\n}\n\ninterface PhaseStats {\n phase: string;\n durationMs: number;\n turns: number;\n inputTokens: number;\n outputTokens: number;\n cacheRead: number;\n cacheCreation5m: number;\n cacheCreation1h: number;\n cost: number;\n compactions: number;\n contextOut: number | undefined;\n}\n\nfunction printPhase(s: PhaseStats): string {\n const baseIn = Math.max(\n 0,\n s.inputTokens - s.cacheRead - s.cacheCreation5m - s.cacheCreation1h,\n );\n return [\n `${s.phase}: ${fmtDuration(s.durationMs)}, ${\n s.turns\n } turns, cost: ${fmtCost(s.cost)}`,\n ` in: ${fmtTok(baseIn)}, out: ${fmtTok(\n s.outputTokens,\n )}, cache_read: ${fmtTok(s.cacheRead)}, cache_5m: ${fmtTok(\n s.cacheCreation5m,\n )}, cache_1h: ${fmtTok(s.cacheCreation1h)}`,\n s.compactions > 0 ? ` ${s.compactions} compaction(s)` : null,\n s.contextOut !== undefined ? ` ctx_out: ${fmtTok(s.contextOut)}` : null,\n ]\n .filter(Boolean)\n .join('\\n');\n}\n\nfunction getPhaseStats(i: number, ctx: MiddlewareContext): PhaseStats | null {\n const duration = ctx.get<DurationData>('duration');\n const dur = duration?.phaseSnapshots[i];\n if (!dur) return null;\n\n const tokens = ctx.get<TokenData>('tokens');\n const turns = ctx.get<TurnData>('turns');\n const cost = ctx.get<CostData>('cost');\n const compactions = ctx.get<CompactionData>('compactions');\n const contextSize = ctx.get<ContextSizeData>('contextSize');\n const cache = ctx.get<CacheData>('cache');\n\n return {\n phase: dur.phase,\n durationMs: dur.durationMs,\n turns: turns?.phaseSnapshots[i]?.turns ?? 0,\n inputTokens: tokens?.phaseSnapshots[i]?.inputTokens ?? 0,\n outputTokens: tokens?.phaseSnapshots[i]?.outputTokens ?? 0,\n cacheRead: cache?.phaseSnapshots[i]?.cacheReadTokens ?? 0,\n cacheCreation5m: cache?.phaseSnapshots[i]?.cacheCreation5m ?? 0,\n cacheCreation1h: cache?.phaseSnapshots[i]?.cacheCreation1h ?? 0,\n cost: cost?.phaseCosts[i]?.cost ?? 0,\n compactions: compactions?.phaseSnapshots[i]?.compactions ?? 0,\n contextOut: contextSize?.phaseSnapshots[i]?.contextTokensOut,\n };\n}\n\nexport class SummaryPlugin implements Middleware {\n readonly name = 'summary';\n\n private spinner: SpinnerHandle;\n\n constructor(spinner: SpinnerHandle) {\n this.spinner = spinner;\n }\n\n onPhaseTransition(\n fromPhase: string,\n toPhase: string,\n ctx: MiddlewareContext,\n _store: MiddlewareStore,\n ): void {\n const duration = ctx.get<DurationData>('duration');\n const idx = (duration?.phaseSnapshots.length ?? 1) - 1;\n const stats = getPhaseStats(idx, ctx);\n\n if (stats) {\n this.spinner.stop(`${AgentSignals.BENCHMARK} ${printPhase(stats)}`);\n } else {\n this.spinner.stop(`${AgentSignals.BENCHMARK} ${fromPhase}`);\n }\n\n getUI().log.info(`${AgentSignals.BENCHMARK} Starting phase: ${toPhase}`);\n this.spinner.start(`Integrating PostHog (${toPhase})...`);\n }\n\n onFinalize(\n _resultMessage: any,\n totalDurationMs: number,\n ctx: MiddlewareContext,\n _store: MiddlewareStore,\n ): void {\n const duration = ctx.get<DurationData>('duration');\n const cost = ctx.get<CostData>('cost');\n const tokens = ctx.get<TokenData>('tokens');\n const cache = ctx.get<CacheData>('cache');\n\n const phaseCount = duration?.phaseSnapshots.length ?? 0;\n const totalCost = cost?.totalCost ?? 0;\n\n getUI().log.info('');\n getUI().log.info(\n `◇ ${AgentSignals.BENCHMARK} ${phaseCount} phases in ${fmtDuration(\n totalDurationMs,\n )}, cost: ${fmtCost(totalCost)}`,\n );\n getUI().log.info(\n ` total in: ${fmtTok(tokens?.totalInput ?? 0)}, out: ${fmtTok(\n tokens?.totalOutput ?? 0,\n )}, cache_read: ${fmtTok(cache?.totalRead ?? 0)}, cache_5m: ${fmtTok(\n cache?.totalCreation5m ?? 0,\n )}, cache_1h: ${fmtTok(cache?.totalCreation1h ?? 0)}`,\n );\n getUI().log.info('');\n getUI().log.info(`● ${AgentSignals.BENCHMARK} Summary by phase:`);\n\n if (duration?.phaseSnapshots) {\n for (let i = 0; i < duration.phaseSnapshots.length; i++) {\n const stats = getPhaseStats(i, ctx);\n if (stats) {\n getUI().log.info(printPhase(stats));\n }\n }\n }\n\n getUI().log.info('');\n }\n}\n"]}
@@ -1,40 +0,0 @@
1
- /**
2
- * Token tracking plugin for input/output tokens.
3
- *
4
- * Accumulates per-turn token usage (input_tokens + cache_read_input_tokens
5
- * + cache_creation_input_tokens = total input; output_tokens = output).
6
- * Respects the dedup flag from TurnCounterPlugin. Cache breakdown (r/5m/1h)
7
- * is tracked by CacheTrackerPlugin for reporting and pricing.
8
- */
9
- import type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';
10
- export interface TokenData {
11
- phaseInput: number;
12
- phaseOutput: number;
13
- totalInput: number;
14
- totalOutput: number;
15
- /** The raw usage object from the last non-duplicate assistant message */
16
- lastUsage: any;
17
- /** Per-phase token snapshots */
18
- phaseSnapshots: Array<{
19
- phase: string;
20
- inputTokens: number;
21
- outputTokens: number;
22
- /** Number of turns in this phase that had usage (SDK may not report all) */
23
- messagesWithUsage: number;
24
- }>;
25
- }
26
- export declare class TokenTrackerPlugin implements Middleware {
27
- readonly name = "tokens";
28
- private phaseInput;
29
- private phaseOutput;
30
- private totalInput;
31
- private totalOutput;
32
- private lastUsage;
33
- private phaseSnapshots;
34
- private currentPhase;
35
- private phaseMessagesWithUsage;
36
- onMessage(message: any, ctx: MiddlewareContext, store: MiddlewareStore): void;
37
- onPhaseTransition(fromPhase: string, toPhase: string, _ctx: MiddlewareContext, store: MiddlewareStore): void;
38
- onFinalize(_resultMessage: any, _totalDurationMs: number, _ctx: MiddlewareContext, store: MiddlewareStore): void;
39
- private getData;
40
- }
@@ -1,77 +0,0 @@
1
- "use strict";
2
- /**
3
- * Token tracking plugin for input/output tokens.
4
- *
5
- * Accumulates per-turn token usage (input_tokens + cache_read_input_tokens
6
- * + cache_creation_input_tokens = total input; output_tokens = output).
7
- * Respects the dedup flag from TurnCounterPlugin. Cache breakdown (r/5m/1h)
8
- * is tracked by CacheTrackerPlugin for reporting and pricing.
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.TokenTrackerPlugin = void 0;
12
- class TokenTrackerPlugin {
13
- name = 'tokens';
14
- phaseInput = 0;
15
- phaseOutput = 0;
16
- totalInput = 0;
17
- totalOutput = 0;
18
- lastUsage = null;
19
- phaseSnapshots = [];
20
- currentPhase = 'setup';
21
- phaseMessagesWithUsage = 0;
22
- onMessage(message, ctx, store) {
23
- if (message.type !== 'assistant')
24
- return;
25
- const turns = ctx.get('turns');
26
- if (turns?.isDuplicate)
27
- return;
28
- const usage = message.message?.usage;
29
- if (usage) {
30
- const input = Number(usage.input_tokens ?? 0) +
31
- Number(usage.cache_read_input_tokens ?? 0) +
32
- Number(usage.cache_creation_input_tokens ?? 0);
33
- const output = Number(usage.output_tokens ?? 0);
34
- this.phaseInput += input;
35
- this.phaseOutput += output;
36
- this.totalInput += input;
37
- this.totalOutput += output;
38
- this.lastUsage = usage;
39
- this.phaseMessagesWithUsage += 1;
40
- }
41
- store.set('tokens', this.getData());
42
- }
43
- onPhaseTransition(fromPhase, toPhase, _ctx, store) {
44
- this.phaseSnapshots.push({
45
- phase: fromPhase,
46
- inputTokens: this.phaseInput,
47
- outputTokens: this.phaseOutput,
48
- messagesWithUsage: this.phaseMessagesWithUsage,
49
- });
50
- this.currentPhase = toPhase;
51
- this.phaseInput = 0;
52
- this.phaseOutput = 0;
53
- this.phaseMessagesWithUsage = 0;
54
- store.set('tokens', this.getData());
55
- }
56
- onFinalize(_resultMessage, _totalDurationMs, _ctx, store) {
57
- this.phaseSnapshots.push({
58
- phase: this.currentPhase,
59
- inputTokens: this.phaseInput,
60
- outputTokens: this.phaseOutput,
61
- messagesWithUsage: this.phaseMessagesWithUsage,
62
- });
63
- store.set('tokens', this.getData());
64
- }
65
- getData() {
66
- return {
67
- phaseInput: this.phaseInput,
68
- phaseOutput: this.phaseOutput,
69
- totalInput: this.totalInput,
70
- totalOutput: this.totalOutput,
71
- lastUsage: this.lastUsage,
72
- phaseSnapshots: [...this.phaseSnapshots],
73
- };
74
- }
75
- }
76
- exports.TokenTrackerPlugin = TokenTrackerPlugin;
77
- //# sourceMappingURL=token-tracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"token-tracker.js","sourceRoot":"","sources":["../../../../../src/lib/middleware/benchmarks/token-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Token tracking plugin for input/output tokens.\n *\n * Accumulates per-turn token usage (input_tokens + cache_read_input_tokens\n * + cache_creation_input_tokens = total input; output_tokens = output).\n * Respects the dedup flag from TurnCounterPlugin. Cache breakdown (r/5m/1h)\n * is tracked by CacheTrackerPlugin for reporting and pricing.\n */\n\nimport type { Middleware, MiddlewareContext, MiddlewareStore } from '../types';\nimport type { TurnData } from './turn-counter';\n\nexport interface TokenData {\n phaseInput: number;\n phaseOutput: number;\n totalInput: number;\n totalOutput: number;\n /** The raw usage object from the last non-duplicate assistant message */\n lastUsage: any;\n /** Per-phase token snapshots */\n phaseSnapshots: Array<{\n phase: string;\n inputTokens: number;\n outputTokens: number;\n /** Number of turns in this phase that had usage (SDK may not report all) */\n messagesWithUsage: number;\n }>;\n}\n\nexport class TokenTrackerPlugin implements Middleware {\n readonly name = 'tokens';\n\n private phaseInput = 0;\n private phaseOutput = 0;\n private totalInput = 0;\n private totalOutput = 0;\n private lastUsage: any = null;\n private phaseSnapshots: Array<{\n phase: string;\n inputTokens: number;\n outputTokens: number;\n messagesWithUsage: number;\n }> = [];\n private currentPhase = 'setup';\n private phaseMessagesWithUsage = 0;\n\n onMessage(\n message: any,\n ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n if (message.type !== 'assistant') return;\n\n const turns = ctx.get<TurnData>('turns');\n if (turns?.isDuplicate) return;\n\n const usage = message.message?.usage;\n if (usage) {\n const input =\n Number(usage.input_tokens ?? 0) +\n Number(usage.cache_read_input_tokens ?? 0) +\n Number(usage.cache_creation_input_tokens ?? 0);\n const output = Number(usage.output_tokens ?? 0);\n this.phaseInput += input;\n this.phaseOutput += output;\n this.totalInput += input;\n this.totalOutput += output;\n this.lastUsage = usage;\n this.phaseMessagesWithUsage += 1;\n }\n\n store.set('tokens', this.getData());\n }\n\n onPhaseTransition(\n fromPhase: string,\n toPhase: string,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: fromPhase,\n inputTokens: this.phaseInput,\n outputTokens: this.phaseOutput,\n messagesWithUsage: this.phaseMessagesWithUsage,\n });\n this.currentPhase = toPhase;\n this.phaseInput = 0;\n this.phaseOutput = 0;\n this.phaseMessagesWithUsage = 0;\n store.set('tokens', this.getData());\n }\n\n onFinalize(\n _resultMessage: any,\n _totalDurationMs: number,\n _ctx: MiddlewareContext,\n store: MiddlewareStore,\n ): void {\n this.phaseSnapshots.push({\n phase: this.currentPhase,\n inputTokens: this.phaseInput,\n outputTokens: this.phaseOutput,\n messagesWithUsage: this.phaseMessagesWithUsage,\n });\n store.set('tokens', this.getData());\n }\n\n private getData(): TokenData {\n return {\n phaseInput: this.phaseInput,\n phaseOutput: this.phaseOutput,\n totalInput: this.totalInput,\n totalOutput: this.totalOutput,\n lastUsage: this.lastUsage,\n phaseSnapshots: [...this.phaseSnapshots],\n };\n }\n}\n"]}