codebuff 1.0.334 → 1.0.335

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 (379) hide show
  1. package/index.js +334 -0
  2. package/package.json +23 -72
  3. package/dist/__tests__/display.test.d.ts +0 -1
  4. package/dist/__tests__/display.test.js +0 -174
  5. package/dist/__tests__/display.test.js.map +0 -1
  6. package/dist/__tests__/rage-detectors.test.d.ts +0 -1
  7. package/dist/__tests__/rage-detectors.test.js +0 -127
  8. package/dist/__tests__/rage-detectors.test.js.map +0 -1
  9. package/dist/background-process-manager.d.ts +0 -50
  10. package/dist/background-process-manager.js +0 -364
  11. package/dist/background-process-manager.js.map +0 -1
  12. package/dist/browser-runner.d.ts +0 -35
  13. package/dist/browser-runner.js +0 -689
  14. package/dist/browser-runner.js.map +0 -1
  15. package/dist/chat-storage.d.ts +0 -2
  16. package/dist/chat-storage.js +0 -98
  17. package/dist/chat-storage.js.map +0 -1
  18. package/dist/checkpoints/checkpoint-manager.d.ts +0 -94
  19. package/dist/checkpoints/checkpoint-manager.js +0 -291
  20. package/dist/checkpoints/checkpoint-manager.js.map +0 -1
  21. package/dist/checkpoints/file-manager.d.ts +0 -72
  22. package/dist/checkpoints/file-manager.js +0 -498
  23. package/dist/checkpoints/file-manager.js.map +0 -1
  24. package/dist/cli-definitions.d.ts +0 -9
  25. package/dist/cli-definitions.js +0 -60
  26. package/dist/cli-definitions.js.map +0 -1
  27. package/dist/cli-handlers/api-key.d.ts +0 -25
  28. package/dist/cli-handlers/api-key.js +0 -66
  29. package/dist/cli-handlers/api-key.js.map +0 -1
  30. package/dist/cli-handlers/checkpoint.d.ts +0 -19
  31. package/dist/cli-handlers/checkpoint.js +0 -221
  32. package/dist/cli-handlers/checkpoint.js.map +0 -1
  33. package/dist/cli-handlers/diff.d.ts +0 -2
  34. package/dist/cli-handlers/diff.js +0 -31
  35. package/dist/cli-handlers/diff.js.map +0 -1
  36. package/dist/cli-handlers/easter-egg.d.ts +0 -1
  37. package/dist/cli-handlers/easter-egg.js +0 -126
  38. package/dist/cli-handlers/easter-egg.js.map +0 -1
  39. package/dist/cli-handlers/inititalization-flow.d.ts +0 -1
  40. package/dist/cli-handlers/inititalization-flow.js +0 -25
  41. package/dist/cli-handlers/inititalization-flow.js.map +0 -1
  42. package/dist/cli.d.ts +0 -67
  43. package/dist/cli.js +0 -812
  44. package/dist/cli.js.map +0 -1
  45. package/dist/client.d.ts +0 -91
  46. package/dist/client.js +0 -1112
  47. package/dist/client.js.map +0 -1
  48. package/dist/code-map/languages.d.ts +0 -12
  49. package/dist/code-map/languages.d.ts.map +0 -1
  50. package/dist/code-map/languages.js +0 -130
  51. package/dist/code-map/languages.js.map +0 -1
  52. package/dist/code-map/parse.d.ts +0 -22
  53. package/dist/code-map/parse.d.ts.map +0 -1
  54. package/dist/code-map/parse.js +0 -180
  55. package/dist/code-map/parse.js.map +0 -1
  56. package/dist/code-map/tree-sitter-queries/readme.md +0 -23
  57. package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +0 -16
  58. package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +0 -23
  59. package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +0 -29
  60. package/dist/code-map/tree-sitter-queries/tree-sitter-go-tags.scm +0 -26
  61. package/dist/code-map/tree-sitter-queries/tree-sitter-java-tags.scm +0 -19
  62. package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +0 -16
  63. package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +0 -23
  64. package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +0 -12
  65. package/dist/code-map/tree-sitter-queries/tree-sitter-ruby-tags.scm +0 -58
  66. package/dist/code-map/tree-sitter-queries/tree-sitter-rust-tags.scm +0 -26
  67. package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +0 -22
  68. package/dist/code-map/tsconfig.tsbuildinfo +0 -1
  69. package/dist/common/actions.d.ts +0 -1809
  70. package/dist/common/actions.d.ts.map +0 -1
  71. package/dist/common/actions.js +0 -140
  72. package/dist/common/actions.js.map +0 -1
  73. package/dist/common/analytics.d.ts +0 -6
  74. package/dist/common/analytics.d.ts.map +0 -1
  75. package/dist/common/analytics.js +0 -60
  76. package/dist/common/analytics.js.map +0 -1
  77. package/dist/common/api-keys/constants.d.ts +0 -9
  78. package/dist/common/api-keys/constants.d.ts.map +0 -1
  79. package/dist/common/api-keys/constants.js +0 -26
  80. package/dist/common/api-keys/constants.js.map +0 -1
  81. package/dist/common/api-keys/crypto.d.ts +0 -25
  82. package/dist/common/api-keys/crypto.d.ts.map +0 -1
  83. package/dist/common/api-keys/crypto.js +0 -186
  84. package/dist/common/api-keys/crypto.js.map +0 -1
  85. package/dist/common/browser-actions.d.ts +0 -4416
  86. package/dist/common/browser-actions.d.ts.map +0 -1
  87. package/dist/common/browser-actions.js +0 -343
  88. package/dist/common/browser-actions.js.map +0 -1
  89. package/dist/common/constants/analytics-events.d.ts +0 -31
  90. package/dist/common/constants/analytics-events.d.ts.map +0 -1
  91. package/dist/common/constants/analytics-events.js +0 -39
  92. package/dist/common/constants/analytics-events.js.map +0 -1
  93. package/dist/common/constants/grant-priorities.d.ts +0 -3
  94. package/dist/common/constants/grant-priorities.d.ts.map +0 -1
  95. package/dist/common/constants/grant-priorities.js +0 -11
  96. package/dist/common/constants/grant-priorities.js.map +0 -1
  97. package/dist/common/constants/tools.d.ts +0 -19
  98. package/dist/common/constants/tools.d.ts.map +0 -1
  99. package/dist/common/constants/tools.js +0 -45
  100. package/dist/common/constants/tools.js.map +0 -1
  101. package/dist/common/constants.d.ts +0 -149
  102. package/dist/common/constants.d.ts.map +0 -1
  103. package/dist/common/constants.js +0 -234
  104. package/dist/common/constants.js.map +0 -1
  105. package/dist/common/db/drizzle.config.d.ts +0 -3
  106. package/dist/common/db/drizzle.config.d.ts.map +0 -1
  107. package/dist/common/db/drizzle.config.js +0 -17
  108. package/dist/common/db/drizzle.config.js.map +0 -1
  109. package/dist/common/db/index.d.ts +0 -7
  110. package/dist/common/db/index.d.ts.map +0 -1
  111. package/dist/common/db/index.js +0 -35
  112. package/dist/common/db/index.js.map +0 -1
  113. package/dist/common/db/schema.d.ts +0 -2449
  114. package/dist/common/db/schema.d.ts.map +0 -1
  115. package/dist/common/db/schema.js +0 -310
  116. package/dist/common/db/schema.js.map +0 -1
  117. package/dist/common/db/transaction.d.ts +0 -13
  118. package/dist/common/db/transaction.d.ts.map +0 -1
  119. package/dist/common/db/transaction.js +0 -36
  120. package/dist/common/db/transaction.js.map +0 -1
  121. package/dist/common/json-config/__tests__/__snapshots__/stringify-schema.test.js.snap +0 -144
  122. package/dist/common/json-config/__tests__/constants.test.d.ts +0 -2
  123. package/dist/common/json-config/__tests__/constants.test.d.ts.map +0 -1
  124. package/dist/common/json-config/__tests__/constants.test.js +0 -273
  125. package/dist/common/json-config/__tests__/constants.test.js.map +0 -1
  126. package/dist/common/json-config/__tests__/stringify-schema.test.d.ts +0 -2
  127. package/dist/common/json-config/__tests__/stringify-schema.test.d.ts.map +0 -1
  128. package/dist/common/json-config/__tests__/stringify-schema.test.js +0 -66
  129. package/dist/common/json-config/__tests__/stringify-schema.test.js.map +0 -1
  130. package/dist/common/json-config/constants.d.ts +0 -138
  131. package/dist/common/json-config/constants.d.ts.map +0 -1
  132. package/dist/common/json-config/constants.js +0 -78
  133. package/dist/common/json-config/constants.js.map +0 -1
  134. package/dist/common/json-config/default.d.ts +0 -3
  135. package/dist/common/json-config/default.d.ts.map +0 -1
  136. package/dist/common/json-config/default.js +0 -12
  137. package/dist/common/json-config/default.js.map +0 -1
  138. package/dist/common/json-config/stringify-schema.d.ts +0 -10
  139. package/dist/common/json-config/stringify-schema.d.ts.map +0 -1
  140. package/dist/common/json-config/stringify-schema.js +0 -131
  141. package/dist/common/json-config/stringify-schema.js.map +0 -1
  142. package/dist/common/project-file-tree.d.ts +0 -12
  143. package/dist/common/project-file-tree.d.ts.map +0 -1
  144. package/dist/common/project-file-tree.js +0 -212
  145. package/dist/common/project-file-tree.js.map +0 -1
  146. package/dist/common/types/agent-state.d.ts +0 -265
  147. package/dist/common/types/agent-state.d.ts.map +0 -1
  148. package/dist/common/types/agent-state.js +0 -48
  149. package/dist/common/types/agent-state.js.map +0 -1
  150. package/dist/common/types/grant.d.ts +0 -3
  151. package/dist/common/types/grant.d.ts.map +0 -1
  152. package/dist/common/types/grant.js +0 -11
  153. package/dist/common/types/grant.js.map +0 -1
  154. package/dist/common/types/message.d.ts +0 -320
  155. package/dist/common/types/message.d.ts.map +0 -1
  156. package/dist/common/types/message.js +0 -60
  157. package/dist/common/types/message.js.map +0 -1
  158. package/dist/common/types/organization.d.ts +0 -106
  159. package/dist/common/types/organization.d.ts.map +0 -1
  160. package/dist/common/types/organization.js +0 -3
  161. package/dist/common/types/organization.js.map +0 -1
  162. package/dist/common/types/referral.d.ts +0 -3
  163. package/dist/common/types/referral.d.ts.map +0 -1
  164. package/dist/common/types/referral.js +0 -5
  165. package/dist/common/types/referral.js.map +0 -1
  166. package/dist/common/types/tools.d.ts +0 -6
  167. package/dist/common/types/tools.d.ts.map +0 -1
  168. package/dist/common/types/tools.js +0 -3
  169. package/dist/common/types/tools.js.map +0 -1
  170. package/dist/common/types/usage.d.ts +0 -41
  171. package/dist/common/types/usage.d.ts.map +0 -1
  172. package/dist/common/types/usage.js +0 -16
  173. package/dist/common/types/usage.js.map +0 -1
  174. package/dist/common/util/__tests__/messages.test.d.ts +0 -2
  175. package/dist/common/util/__tests__/messages.test.d.ts.map +0 -1
  176. package/dist/common/util/__tests__/messages.test.js +0 -70
  177. package/dist/common/util/__tests__/messages.test.js.map +0 -1
  178. package/dist/common/util/__tests__/saxy.test.d.ts +0 -2
  179. package/dist/common/util/__tests__/saxy.test.d.ts.map +0 -1
  180. package/dist/common/util/__tests__/saxy.test.js +0 -906
  181. package/dist/common/util/__tests__/saxy.test.js.map +0 -1
  182. package/dist/common/util/__tests__/string.test.d.ts +0 -2
  183. package/dist/common/util/__tests__/string.test.d.ts.map +0 -1
  184. package/dist/common/util/__tests__/string.test.js +0 -82
  185. package/dist/common/util/__tests__/string.test.js.map +0 -1
  186. package/dist/common/util/array.d.ts +0 -7
  187. package/dist/common/util/array.d.ts.map +0 -1
  188. package/dist/common/util/array.js +0 -32
  189. package/dist/common/util/array.js.map +0 -1
  190. package/dist/common/util/changes.d.ts +0 -9
  191. package/dist/common/util/changes.d.ts.map +0 -1
  192. package/dist/common/util/changes.js +0 -87
  193. package/dist/common/util/changes.js.map +0 -1
  194. package/dist/common/util/credentials.d.ts +0 -26
  195. package/dist/common/util/credentials.d.ts.map +0 -1
  196. package/dist/common/util/credentials.js +0 -24
  197. package/dist/common/util/credentials.js.map +0 -1
  198. package/dist/common/util/currency.d.ts +0 -15
  199. package/dist/common/util/currency.d.ts.map +0 -1
  200. package/dist/common/util/currency.js +0 -23
  201. package/dist/common/util/currency.js.map +0 -1
  202. package/dist/common/util/dates.d.ts +0 -11
  203. package/dist/common/util/dates.d.ts.map +0 -1
  204. package/dist/common/util/dates.js +0 -22
  205. package/dist/common/util/dates.js.map +0 -1
  206. package/dist/common/util/file.d.ts +0 -171
  207. package/dist/common/util/file.d.ts.map +0 -1
  208. package/dist/common/util/file.js +0 -216
  209. package/dist/common/util/file.js.map +0 -1
  210. package/dist/common/util/git.d.ts +0 -7
  211. package/dist/common/util/git.d.ts.map +0 -1
  212. package/dist/common/util/git.js +0 -81
  213. package/dist/common/util/git.js.map +0 -1
  214. package/dist/common/util/logger.d.ts +0 -9
  215. package/dist/common/util/logger.d.ts.map +0 -1
  216. package/dist/common/util/logger.js +0 -52
  217. package/dist/common/util/logger.js.map +0 -1
  218. package/dist/common/util/lru-cache.d.ts +0 -31
  219. package/dist/common/util/lru-cache.d.ts.map +0 -1
  220. package/dist/common/util/lru-cache.js +0 -68
  221. package/dist/common/util/lru-cache.js.map +0 -1
  222. package/dist/common/util/messages.d.ts +0 -12
  223. package/dist/common/util/messages.d.ts.map +0 -1
  224. package/dist/common/util/messages.js +0 -81
  225. package/dist/common/util/messages.js.map +0 -1
  226. package/dist/common/util/min-heap.d.ts +0 -16
  227. package/dist/common/util/min-heap.d.ts.map +0 -1
  228. package/dist/common/util/min-heap.js +0 -73
  229. package/dist/common/util/min-heap.js.map +0 -1
  230. package/dist/common/util/object.d.ts +0 -19
  231. package/dist/common/util/object.d.ts.map +0 -1
  232. package/dist/common/util/object.js +0 -91
  233. package/dist/common/util/object.js.map +0 -1
  234. package/dist/common/util/patch.d.ts +0 -2
  235. package/dist/common/util/patch.d.ts.map +0 -1
  236. package/dist/common/util/patch.js +0 -215
  237. package/dist/common/util/patch.js.map +0 -1
  238. package/dist/common/util/promise.d.ts +0 -17
  239. package/dist/common/util/promise.d.ts.map +0 -1
  240. package/dist/common/util/promise.js +0 -51
  241. package/dist/common/util/promise.js.map +0 -1
  242. package/dist/common/util/random.d.ts +0 -2
  243. package/dist/common/util/random.d.ts.map +0 -1
  244. package/dist/common/util/random.js +0 -17
  245. package/dist/common/util/random.js.map +0 -1
  246. package/dist/common/util/referral.d.ts +0 -2
  247. package/dist/common/util/referral.d.ts.map +0 -1
  248. package/dist/common/util/referral.js +0 -6
  249. package/dist/common/util/referral.js.map +0 -1
  250. package/dist/common/util/saxy.d.ts +0 -179
  251. package/dist/common/util/saxy.d.ts.map +0 -1
  252. package/dist/common/util/saxy.js +0 -548
  253. package/dist/common/util/saxy.js.map +0 -1
  254. package/dist/common/util/string.d.ts +0 -80
  255. package/dist/common/util/string.d.ts.map +0 -1
  256. package/dist/common/util/string.js +0 -275
  257. package/dist/common/util/string.js.map +0 -1
  258. package/dist/common/util/stripe.d.ts +0 -4
  259. package/dist/common/util/stripe.d.ts.map +0 -1
  260. package/dist/common/util/stripe.js +0 -22
  261. package/dist/common/util/stripe.js.map +0 -1
  262. package/dist/common/util/sync-failure.d.ts +0 -2
  263. package/dist/common/util/sync-failure.d.ts.map +0 -1
  264. package/dist/common/util/sync-failure.js +0 -57
  265. package/dist/common/util/sync-failure.js.map +0 -1
  266. package/dist/common/websockets/websocket-client.d.ts +0 -43
  267. package/dist/common/websockets/websocket-client.d.ts.map +0 -1
  268. package/dist/common/websockets/websocket-client.js +0 -216
  269. package/dist/common/websockets/websocket-client.js.map +0 -1
  270. package/dist/common/websockets/websocket-schema.d.ts +0 -3679
  271. package/dist/common/websockets/websocket-schema.d.ts.map +0 -1
  272. package/dist/common/websockets/websocket-schema.js +0 -55
  273. package/dist/common/websockets/websocket-schema.js.map +0 -1
  274. package/dist/config.d.ts +0 -4
  275. package/dist/config.js +0 -12
  276. package/dist/config.js.map +0 -1
  277. package/dist/create-template-project.d.ts +0 -1
  278. package/dist/create-template-project.js +0 -131
  279. package/dist/create-template-project.js.map +0 -1
  280. package/dist/credentials.d.ts +0 -4
  281. package/dist/credentials.js +0 -44
  282. package/dist/credentials.js.map +0 -1
  283. package/dist/dev-process-manager.d.ts +0 -10
  284. package/dist/dev-process-manager.js +0 -56
  285. package/dist/dev-process-manager.js.map +0 -1
  286. package/dist/display.d.ts +0 -9
  287. package/dist/display.js +0 -137
  288. package/dist/display.js.map +0 -1
  289. package/dist/fingerprint.d.ts +0 -1
  290. package/dist/fingerprint.js +0 -48
  291. package/dist/fingerprint.js.map +0 -1
  292. package/dist/index.d.ts +0 -2
  293. package/dist/index.js +0 -128
  294. package/dist/index.js.map +0 -1
  295. package/dist/json-config/hooks.d.ts +0 -9
  296. package/dist/json-config/hooks.js +0 -60
  297. package/dist/json-config/hooks.js.map +0 -1
  298. package/dist/json-config/parser.d.ts +0 -7
  299. package/dist/json-config/parser.js +0 -54
  300. package/dist/json-config/parser.js.map +0 -1
  301. package/dist/menu.d.ts +0 -14
  302. package/dist/menu.js +0 -344
  303. package/dist/menu.js.map +0 -1
  304. package/dist/project-files.d.ts +0 -104
  305. package/dist/project-files.js +0 -621
  306. package/dist/project-files.js.map +0 -1
  307. package/dist/rage-detectors.d.ts +0 -15
  308. package/dist/rage-detectors.js +0 -55
  309. package/dist/rage-detectors.js.map +0 -1
  310. package/dist/startup-process-handler.d.ts +0 -1
  311. package/dist/startup-process-handler.js +0 -25
  312. package/dist/startup-process-handler.js.map +0 -1
  313. package/dist/terminal/background.d.ts +0 -12
  314. package/dist/terminal/background.js +0 -148
  315. package/dist/terminal/background.js.map +0 -1
  316. package/dist/terminal/base.d.ts +0 -41
  317. package/dist/terminal/base.js +0 -553
  318. package/dist/terminal/base.js.map +0 -1
  319. package/dist/tool-handlers.d.ts +0 -31
  320. package/dist/tool-handlers.js +0 -275
  321. package/dist/tool-handlers.js.map +0 -1
  322. package/dist/types.d.ts +0 -15
  323. package/dist/types.js +0 -3
  324. package/dist/types.js.map +0 -1
  325. package/dist/update-codebuff.d.ts +0 -1
  326. package/dist/update-codebuff.js +0 -169
  327. package/dist/update-codebuff.js.map +0 -1
  328. package/dist/utils/__tests__/background-process-manager.test.d.ts +0 -1
  329. package/dist/utils/__tests__/background-process-manager.test.js +0 -326
  330. package/dist/utils/__tests__/background-process-manager.test.js.map +0 -1
  331. package/dist/utils/__tests__/rage-detector.test.d.ts +0 -1
  332. package/dist/utils/__tests__/rage-detector.test.js +0 -450
  333. package/dist/utils/__tests__/rage-detector.test.js.map +0 -1
  334. package/dist/utils/__tests__/response-example-4-files.txt +0 -621
  335. package/dist/utils/__tests__/tool-renderers.test.d.ts +0 -1
  336. package/dist/utils/__tests__/tool-renderers.test.js +0 -83
  337. package/dist/utils/__tests__/tool-renderers.test.js.map +0 -1
  338. package/dist/utils/__tests__/xml-stream-parser.test.d.ts +0 -1
  339. package/dist/utils/__tests__/xml-stream-parser.test.js +0 -255
  340. package/dist/utils/__tests__/xml-stream-parser.test.js.map +0 -1
  341. package/dist/utils/analytics.d.ts +0 -7
  342. package/dist/utils/analytics.js +0 -132
  343. package/dist/utils/analytics.js.map +0 -1
  344. package/dist/utils/detect-shell.d.ts +0 -1
  345. package/dist/utils/detect-shell.js +0 -65
  346. package/dist/utils/detect-shell.js.map +0 -1
  347. package/dist/utils/git.d.ts +0 -13
  348. package/dist/utils/git.js +0 -143
  349. package/dist/utils/git.js.map +0 -1
  350. package/dist/utils/logger.d.ts +0 -21
  351. package/dist/utils/logger.js +0 -109
  352. package/dist/utils/logger.js.map +0 -1
  353. package/dist/utils/rage-detector.d.ts +0 -32
  354. package/dist/utils/rage-detector.js +0 -143
  355. package/dist/utils/rage-detector.js.map +0 -1
  356. package/dist/utils/spinner.d.ts +0 -13
  357. package/dist/utils/spinner.js +0 -94
  358. package/dist/utils/spinner.js.map +0 -1
  359. package/dist/utils/system-info.d.ts +0 -8
  360. package/dist/utils/system-info.js +0 -22
  361. package/dist/utils/system-info.js.map +0 -1
  362. package/dist/utils/tool-renderers.d.ts +0 -16
  363. package/dist/utils/tool-renderers.js +0 -216
  364. package/dist/utils/tool-renderers.js.map +0 -1
  365. package/dist/utils/with-hang-detection.d.ts +0 -1
  366. package/dist/utils/with-hang-detection.js +0 -18
  367. package/dist/utils/with-hang-detection.js.map +0 -1
  368. package/dist/utils/xml-stream-parser.d.ts +0 -9
  369. package/dist/utils/xml-stream-parser.js +0 -143
  370. package/dist/utils/xml-stream-parser.js.map +0 -1
  371. package/dist/web-scraper.d.ts +0 -3
  372. package/dist/web-scraper.js +0 -59
  373. package/dist/web-scraper.js.map +0 -1
  374. package/dist/workers/checkpoint-worker.d.ts +0 -1
  375. package/dist/workers/checkpoint-worker.js +0 -51
  376. package/dist/workers/checkpoint-worker.js.map +0 -1
  377. package/dist/workers/project-context.d.ts +0 -1
  378. package/dist/workers/project-context.js +0 -27
  379. package/dist/workers/project-context.js.map +0 -1
@@ -1,689 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.activeBrowserRunner = exports.handleBrowserInstruction = exports.BrowserRunner = void 0;
30
- const browser_actions_1 = require("./common/browser-actions");
31
- const file_1 = require("./common/util/file");
32
- const promise_1 = require("./common/util/promise");
33
- const string_1 = require("./common/util/string");
34
- const fs = __importStar(require("fs"));
35
- const path = __importStar(require("path"));
36
- const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
37
- const project_files_1 = require("./project-files");
38
- const logger_1 = require("./utils/logger");
39
- class BrowserRunner {
40
- // Add getter methods for diagnostic loop
41
- getLogs() {
42
- return this.logs;
43
- }
44
- getNetworkEvents() {
45
- return this.networkEvents;
46
- }
47
- browser = null;
48
- page = null;
49
- logs = [];
50
- jsErrorCount = 0;
51
- retryCount = 0;
52
- startTime = 0;
53
- // Error tracking
54
- consecutiveErrors = 0;
55
- totalErrors = 0;
56
- constructor() { }
57
- // Error tracking configuration
58
- maxConsecutiveErrors = 3;
59
- totalErrorThreshold = 10;
60
- performanceMetrics = {};
61
- networkEvents = [];
62
- async executeWithRetry(action) {
63
- const retryOptions = action.retryOptions ?? browser_actions_1.BROWSER_DEFAULTS.retryOptions;
64
- let lastError = null;
65
- for (let attempt = 0; attempt <= (retryOptions.maxRetries ?? 3); attempt++) {
66
- try {
67
- const result = await this.executeAction(action);
68
- // Reset consecutive errors on success
69
- this.consecutiveErrors = 0;
70
- return result;
71
- }
72
- catch (error) {
73
- // Track errors
74
- this.consecutiveErrors++;
75
- this.totalErrors++;
76
- // Log error analysis
77
- this.logErrorForAnalysis(error);
78
- // Check error thresholds
79
- if (this.consecutiveErrors >= this.maxConsecutiveErrors) {
80
- const msg = `Max consecutive errors reached (${this.maxConsecutiveErrors}).`;
81
- this.logs.push({
82
- type: 'error',
83
- message: msg,
84
- timestamp: Date.now(),
85
- source: 'tool',
86
- });
87
- await this.shutdown();
88
- return {
89
- success: false,
90
- error: msg,
91
- logs: this.logs,
92
- };
93
- }
94
- if (this.totalErrors >= this.totalErrorThreshold) {
95
- const msg = `Total error threshold reached (${this.totalErrorThreshold}).`;
96
- this.logs.push({
97
- type: 'error',
98
- message: msg,
99
- timestamp: Date.now(),
100
- source: 'tool',
101
- });
102
- await this.shutdown();
103
- return {
104
- success: false,
105
- error: msg,
106
- logs: this.logs,
107
- };
108
- }
109
- lastError = error;
110
- const shouldRetry = retryOptions.retryOnErrors?.includes(error.name);
111
- if (!shouldRetry || attempt === retryOptions.maxRetries) {
112
- throw error;
113
- }
114
- await new Promise((resolve) => setTimeout(resolve, retryOptions.retryDelay ?? 1000));
115
- this.logs.push({
116
- type: 'info',
117
- message: `Retrying action (attempt ${attempt + 1}/${retryOptions.maxRetries})`,
118
- timestamp: Date.now(),
119
- category: 'retry',
120
- source: 'tool',
121
- });
122
- }
123
- }
124
- throw lastError;
125
- }
126
- async executeAction(action) {
127
- try {
128
- // Only take pre-action screenshot if browser is already running
129
- let preActionResult = null;
130
- if (this.browser && this.page) {
131
- // preActionResult = await this.takeScreenshot(
132
- // {
133
- // type: 'screenshot',
134
- // },
135
- // this.page
136
- // )
137
- }
138
- let response;
139
- switch (action.type) {
140
- case 'start':
141
- await this.getBrowser(action);
142
- if (!action.url) {
143
- break;
144
- }
145
- case 'navigate':
146
- response = await this.navigate({ ...action, type: 'navigate' });
147
- break;
148
- case 'click':
149
- console.log('Clicking has not been implemented yet');
150
- break;
151
- case 'type':
152
- await this.typeText(action);
153
- break;
154
- case 'scroll':
155
- await this.scroll(action);
156
- break;
157
- case 'screenshot':
158
- break;
159
- case 'stop':
160
- await this.shutdown();
161
- return {
162
- success: true,
163
- logs: this.logs,
164
- metrics: await this.collectMetrics(),
165
- };
166
- default:
167
- throw new Error(`Unknown action type: ${action.type}`);
168
- }
169
- // Take post-action screenshot
170
- let postActionResult = null;
171
- if (this.page) {
172
- // postActionResult = await this.takeScreenshot(
173
- // {
174
- // type: 'screenshot',
175
- // },
176
- // this.page
177
- // )
178
- }
179
- const metrics = await this.collectMetrics();
180
- response = {
181
- success: true,
182
- logs: this.logs,
183
- metrics,
184
- // ...(postActionResult && {
185
- // screenshots: {
186
- // ...(preActionResult && {
187
- // pre: {
188
- // type: 'image',
189
- // source: {
190
- // type: 'base64',
191
- // media_type: 'image/jpeg',
192
- // data: preActionResult.data,
193
- // },
194
- // },
195
- // }),
196
- // post: {
197
- // type: 'image',
198
- // source: {
199
- // type: 'base64',
200
- // media_type: 'image/jpeg',
201
- // data: postActionResult.data,
202
- // },
203
- // },
204
- // },
205
- // }),
206
- };
207
- return response;
208
- }
209
- catch (err) {
210
- await this.shutdown();
211
- return {
212
- success: false,
213
- error: err?.message ?? String(err),
214
- logs: this.logs,
215
- };
216
- }
217
- }
218
- logErrorForAnalysis(error) {
219
- // Add helpful hints based on error patterns
220
- const errorPatterns = {
221
- 'not defined': 'Check for missing script dependencies or undefined variables',
222
- 'Failed to fetch': 'Verify endpoint URLs and network connectivity',
223
- '404': 'Resource not found - verify URLs and paths',
224
- SSL: 'SSL certificate error - check HTTPS configuration',
225
- ERR_NAME_NOT_RESOLVED: 'DNS resolution failed - check domain name',
226
- ERR_CONNECTION_TIMED_OUT: 'Connection timeout - check network or firewall',
227
- ERR_NETWORK_CHANGED: 'Network changed during request - retry operation',
228
- ERR_INTERNET_DISCONNECTED: 'No internet connection',
229
- 'Navigation timeout': 'Page took too long to load - check performance or timeouts',
230
- WebSocket: 'WebSocket connection issue - check server status',
231
- ERR_TUNNEL_CONNECTION_FAILED: 'Proxy or VPN connection issue',
232
- ERR_CERT_: 'SSL/TLS certificate validation error',
233
- ERR_BLOCKED_BY_CLIENT: 'Request blocked by browser extension or policy',
234
- ERR_TOO_MANY_REDIRECTS: 'Redirect loop detected',
235
- 'Frame detached': 'Target frame or element no longer exists',
236
- 'Node is detached': 'Element was removed from DOM',
237
- ERR_ABORTED: 'Request was aborted - possible navigation or reload',
238
- ERR_CONTENT_LENGTH_MISMATCH: 'Incomplete response - check server stability',
239
- ERR_RESPONSE_HEADERS_TRUNCATED: 'Response headers too large or malformed',
240
- };
241
- for (const [pattern, hint] of Object.entries(errorPatterns)) {
242
- if (error.message.includes(pattern)) {
243
- this.logs.push({
244
- type: 'info',
245
- message: `Hint: ${hint}`,
246
- timestamp: Date.now(),
247
- category: 'hint',
248
- source: 'tool',
249
- });
250
- break; // Stop after first matching pattern
251
- }
252
- }
253
- this.logs.push({
254
- type: 'error',
255
- message: `Action error: ${error.message}`,
256
- timestamp: Date.now(),
257
- stack: error.stack,
258
- source: 'tool',
259
- });
260
- }
261
- async getBrowser(config) {
262
- // Check if browser exists and is connected
263
- if (!this.browser || !this.page) {
264
- await this.startBrowser(config);
265
- }
266
- else {
267
- try {
268
- // Test if browser is still responsive
269
- await this.page.evaluate(() => true);
270
- }
271
- catch (error) {
272
- // Browser is dead or unresponsive, restart it
273
- await this.shutdown();
274
- await this.startBrowser(config);
275
- }
276
- }
277
- if (!this.browser || !this.page) {
278
- throw new Error('Failed to initialize browser');
279
- }
280
- return { browser: this.browser, page: this.page };
281
- }
282
- async startBrowser(config) {
283
- if (this.browser) {
284
- await this.shutdown();
285
- }
286
- // Set start time for session tracking
287
- this.startTime = Date.now();
288
- // Update session configuration
289
- this.maxConsecutiveErrors =
290
- config?.maxConsecutiveErrors ?? browser_actions_1.BROWSER_DEFAULTS.maxConsecutiveErrors;
291
- this.totalErrorThreshold =
292
- config?.totalErrorThreshold ?? browser_actions_1.BROWSER_DEFAULTS.totalErrorThreshold;
293
- // Reset error counters
294
- this.consecutiveErrors = 0;
295
- this.totalErrors = 0;
296
- // Set up user data directory for profile persistence, scoped to current project
297
- let userDataDir = undefined;
298
- try {
299
- userDataDir = path.join((0, project_files_1.getProjectDataDir)(), browser_actions_1.BROWSER_DEFAULTS.userDataDir);
300
- (0, file_1.ensureDirectoryExists)(userDataDir);
301
- }
302
- catch (error) { }
303
- try {
304
- // Define helper to find Chrome in standard locations
305
- const findChrome = () => {
306
- switch (process.platform) {
307
- case 'win32':
308
- return 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe';
309
- case 'darwin':
310
- return '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome';
311
- default:
312
- return '/usr/bin/google-chrome';
313
- }
314
- };
315
- this.browser = await puppeteer_core_1.default.launch({
316
- defaultViewport: {
317
- width: browser_actions_1.BROWSER_DEFAULTS.viewportWidth,
318
- height: browser_actions_1.BROWSER_DEFAULTS.viewportHeight,
319
- },
320
- headless: browser_actions_1.BROWSER_DEFAULTS.headless,
321
- userDataDir,
322
- waitForInitialPage: true,
323
- args: [
324
- '--window-size=1200,800',
325
- '--disable-backgrounding-occluded-windows',
326
- '--disable-breakpad',
327
- '--disable-sync',
328
- '--no-sandbox',
329
- '--no-first-run',
330
- '--disable-session-crashed-bubble',
331
- '--disable-restore-session-state',
332
- '--hide-crash-restore-bubble',
333
- '--noerrdialogs',
334
- '--disable-infobars',
335
- ],
336
- executablePath: findChrome(),
337
- });
338
- }
339
- catch (error) {
340
- // If launch fails, guide the user to install Google Chrome
341
- console.log("Couldn't launch Chrome browser. Please ensure Google Chrome is installed on your system.");
342
- return {
343
- success: false,
344
- error: 'Chrome browser not found. Please install Google Chrome to use browser features.',
345
- logs: this.logs,
346
- networkEvents: this.networkEvents,
347
- };
348
- }
349
- // this.logs.push({
350
- // type: 'info',
351
- // message: 'Browser started',
352
- // timestamp: Date.now(),
353
- // source: 'tool',
354
- // })
355
- // Pick the first existing page or create a new one
356
- const pages = await this.browser.pages();
357
- this.page = pages.length > 0 ? pages[0] : await this.browser.newPage();
358
- this.attachPageListeners();
359
- await (0, promise_1.sleep)(500);
360
- return {
361
- success: true,
362
- logs: this.logs,
363
- networkEvents: [],
364
- };
365
- }
366
- async navigate(action) {
367
- try {
368
- const { page } = await this.getBrowser(action);
369
- const url = (0, string_1.ensureUrlProtocol)(action.url);
370
- await page.goto(url, {
371
- waitUntil: action.waitUntil ?? browser_actions_1.BROWSER_DEFAULTS.waitUntil,
372
- timeout: action.timeout ?? browser_actions_1.BROWSER_DEFAULTS.timeout,
373
- });
374
- this.logs.push({
375
- type: 'info',
376
- message: `Navigated to ${url}`,
377
- timestamp: Date.now(),
378
- source: 'tool',
379
- });
380
- return {
381
- success: true,
382
- logs: this.logs,
383
- networkEvents: [],
384
- };
385
- }
386
- catch (error) {
387
- const errorMessage = error?.message || 'Unknown navigation error';
388
- this.logs.push({
389
- type: 'error',
390
- message: `Navigation failed: ${errorMessage}`,
391
- timestamp: Date.now(),
392
- source: 'tool',
393
- });
394
- return {
395
- success: false,
396
- error: errorMessage,
397
- logs: this.logs,
398
- networkEvents: [],
399
- };
400
- }
401
- }
402
- async typeText(action) {
403
- const { page } = await this.getBrowser();
404
- await page.type(action.selector, action.text, {
405
- delay: action.delay ?? browser_actions_1.BROWSER_DEFAULTS.delay,
406
- });
407
- }
408
- async scroll(action) {
409
- const { page } = await this.getBrowser();
410
- // Get viewport height
411
- const viewport = page.viewport();
412
- if (!viewport)
413
- throw new Error('No viewport found');
414
- // Default to scrolling down if no direction specified
415
- const direction = action.direction ?? 'down';
416
- const scrollAmount = direction === 'up' ? -viewport.height : viewport.height;
417
- await page.evaluate((amount) => {
418
- window.scrollBy(0, amount);
419
- }, scrollAmount);
420
- this.logs.push({
421
- type: 'info',
422
- message: `Scrolled ${direction}`,
423
- timestamp: Date.now(),
424
- source: 'tool',
425
- });
426
- return {
427
- success: true,
428
- logs: this.logs,
429
- networkEvents: [],
430
- };
431
- }
432
- async takeScreenshot(action, page) {
433
- // Take a screenshot with aggressive compression settings
434
- const screenshot = await page.screenshot({
435
- fullPage: browser_actions_1.BROWSER_DEFAULTS.fullPage,
436
- type: 'jpeg',
437
- quality: action.screenshotCompressionQuality ??
438
- browser_actions_1.BROWSER_DEFAULTS.screenshotCompressionQuality,
439
- encoding: 'base64',
440
- });
441
- // Log screenshot capture and size
442
- const sizeInKB = Math.round((screenshot.length * 3) / 4 / 1024);
443
- this.logs.push({
444
- type: 'info',
445
- message: `Captured screenshot (${sizeInKB}KB)`,
446
- timestamp: Date.now(),
447
- category: 'screenshot',
448
- source: 'tool',
449
- });
450
- // If debug mode is enabled, save the screenshot
451
- if (action.debug) {
452
- console.debug({
453
- message: 'Saving screenshot to disk...',
454
- timestamp: Date.now(),
455
- source: 'tool',
456
- });
457
- try {
458
- const chatDir = (0, project_files_1.getCurrentChatDir)();
459
- const screenshotsDir = path.join(chatDir, 'screenshots');
460
- (0, file_1.ensureDirectoryExists)(screenshotsDir);
461
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
462
- const filename = `screenshot-${timestamp}.jpg`;
463
- const filepath = path.join(screenshotsDir, filename);
464
- fs.writeFileSync(filepath, Buffer.from(screenshot, 'base64'));
465
- console.debug({
466
- type: 'debug',
467
- message: `Saved screenshot to ${filepath}`,
468
- timestamp: Date.now(),
469
- source: 'tool',
470
- });
471
- // Save metadata
472
- const metadataPath = path.join(screenshotsDir, `${timestamp}-metadata.json`);
473
- const metadata = {
474
- timestamp,
475
- format: 'jpeg',
476
- quality: 25,
477
- fullPage: action.fullPage ?? browser_actions_1.BROWSER_DEFAULTS.fullPage,
478
- metrics: await this.collectMetrics(),
479
- };
480
- fs.writeFileSync(metadataPath, JSON.stringify(metadata, null, 2));
481
- }
482
- catch (error) {
483
- console.error({
484
- message: `Failed to save screenshot: ${error.message}`,
485
- timestamp: Date.now(),
486
- source: 'tool',
487
- });
488
- logger_1.logger.error({
489
- errorMessage: error instanceof Error ? error.message : String(error),
490
- errorStack: error instanceof Error ? error.stack : undefined,
491
- }, 'Failed to save screenshot');
492
- }
493
- }
494
- return {
495
- data: screenshot,
496
- logs: this.logs,
497
- };
498
- }
499
- attachPageListeners() {
500
- if (!this.page)
501
- return;
502
- // Console messages
503
- this.page.on('console', (msg) => {
504
- const type = msg.type() === 'error' ? 'error' : msg.type();
505
- this.logs.push({
506
- type,
507
- message: msg.text(),
508
- timestamp: Date.now(),
509
- source: 'browser',
510
- });
511
- });
512
- // Page errors
513
- this.page.on('pageerror', (err) => {
514
- this.logs.push({
515
- type: 'error',
516
- message: err.message,
517
- timestamp: Date.now(),
518
- stack: err.stack,
519
- source: 'browser',
520
- });
521
- this.jsErrorCount++;
522
- });
523
- // Network requests
524
- this.page.on('request', (request) => {
525
- const method = request.method();
526
- if (method) {
527
- this.networkEvents.push({
528
- url: request.url(),
529
- method,
530
- timestamp: Date.now(),
531
- });
532
- }
533
- });
534
- // Network responses
535
- this.page.on('response', async (response) => {
536
- const req = response.request();
537
- const index = this.networkEvents.findIndex((evt) => evt.url === req.url() && evt.method === req.method());
538
- const status = response.status();
539
- const errorText = status >= 400 ? await response.text().catch(() => '') : undefined;
540
- if (index !== -1) {
541
- this.networkEvents[index].status = status;
542
- this.networkEvents[index].errorText = errorText;
543
- }
544
- else {
545
- const method = req.method();
546
- if (method) {
547
- this.networkEvents.push({
548
- url: req.url(),
549
- method,
550
- status,
551
- errorText,
552
- timestamp: Date.now(),
553
- });
554
- }
555
- }
556
- // Log network errors
557
- if (status >= 400) {
558
- this.logs.push({
559
- type: 'error',
560
- message: `Network error ${status} for ${req.url()}`,
561
- timestamp: Date.now(),
562
- source: 'tool',
563
- });
564
- }
565
- });
566
- }
567
- async collectPerformanceMetrics() {
568
- if (!this.page)
569
- return;
570
- // Collect Web Vitals and other performance metrics
571
- const metrics = await this.page.evaluate(() => {
572
- const lcpEntry = performance.getEntriesByType('largest-contentful-paint')[0];
573
- const navEntry = performance.getEntriesByType('navigation')[0];
574
- const fcpEntry = performance
575
- .getEntriesByType('paint')
576
- .find((entry) => entry.name === 'first-contentful-paint');
577
- return {
578
- ttfb: navEntry?.responseStart - navEntry?.requestStart,
579
- lcp: lcpEntry?.startTime,
580
- fcp: fcpEntry?.startTime,
581
- domContentLoaded: navEntry?.domContentLoadedEventEnd - navEntry?.startTime,
582
- };
583
- });
584
- this.performanceMetrics = metrics;
585
- }
586
- async collectMetrics() {
587
- if (!this.page)
588
- return undefined;
589
- const perfEntries = JSON.parse(await this.page.evaluate(() => JSON.stringify(performance.getEntriesByType('navigation'))));
590
- let loadTime = 0;
591
- if (perfEntries && perfEntries.length > 0) {
592
- const navTiming = perfEntries[0];
593
- loadTime = navTiming.loadEventEnd - navTiming.startTime;
594
- }
595
- const memoryUsed = await this.page
596
- .metrics()
597
- .then((m) => m.JSHeapUsedSize || 0);
598
- await this.collectPerformanceMetrics();
599
- return {
600
- loadTime,
601
- memoryUsage: memoryUsed,
602
- jsErrors: this.jsErrorCount,
603
- networkErrors: this.networkEvents.filter((e) => e.status && e.status >= 400).length,
604
- ttfb: this.performanceMetrics.ttfb,
605
- lcp: this.performanceMetrics.lcp,
606
- fcp: this.performanceMetrics.fcp,
607
- domContentLoaded: this.performanceMetrics.domContentLoaded,
608
- sessionDuration: Date.now() - this.startTime,
609
- };
610
- }
611
- filterLogs(logs, filter) {
612
- // First deduplicate logs
613
- const seen = new Set();
614
- logs = logs.filter((log) => {
615
- const key = `${log.type}|${log.message}|${log.timestamp}|${log.source}`;
616
- if (seen.has(key)) {
617
- return false;
618
- }
619
- seen.add(key);
620
- return true;
621
- });
622
- // Then apply any filters
623
- if (!filter)
624
- return logs;
625
- return logs.filter((log) => {
626
- if (filter.types && !filter.types.includes(log.type))
627
- return false;
628
- if (filter.minLevel && log.level && log.level < filter.minLevel)
629
- return false;
630
- if (filter.categories &&
631
- log.category &&
632
- !filter.categories.includes(log.category))
633
- return false;
634
- return true;
635
- });
636
- }
637
- async execute(action) {
638
- try {
639
- const response = await this.executeWithRetry(action);
640
- // Filter and deduplicate logs
641
- response.logs = this.filterLogs(response.logs, action.logFilter ?? undefined);
642
- this.logs = []; // Clear logs after sending them in response
643
- return response;
644
- }
645
- catch (error) {
646
- if (error.name === 'TargetClosedError' ||
647
- (error.message && error.message.includes('detached Frame'))) {
648
- this.logs.push({
649
- type: 'error',
650
- message: 'Browser was closed or detached. Starting new session...',
651
- timestamp: Date.now(),
652
- category: 'browser',
653
- source: 'tool',
654
- });
655
- await this.shutdown();
656
- if (action.type !== 'stop') {
657
- return this.executeWithRetry(action);
658
- }
659
- }
660
- throw error;
661
- }
662
- }
663
- async shutdown() {
664
- const browser = this.browser;
665
- if (browser) {
666
- // Clear references first to prevent double shutdown
667
- this.browser = null;
668
- this.page = null;
669
- try {
670
- await browser.close();
671
- }
672
- catch (err) {
673
- console.error('Error closing browser:', err);
674
- logger_1.logger.error({
675
- errorMessage: err instanceof Error ? err.message : String(err),
676
- errorStack: err instanceof Error ? err.stack : undefined,
677
- }, 'Error closing browser');
678
- }
679
- }
680
- }
681
- }
682
- exports.BrowserRunner = BrowserRunner;
683
- const handleBrowserInstruction = async (action) => {
684
- const response = await exports.activeBrowserRunner.execute(action);
685
- return response;
686
- };
687
- exports.handleBrowserInstruction = handleBrowserInstruction;
688
- exports.activeBrowserRunner = new BrowserRunner();
689
- //# sourceMappingURL=browser-runner.js.map