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
package/index.js ADDED
@@ -0,0 +1,334 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs')
4
+ const path = require('path')
5
+ const os = require('os')
6
+ const { spawn, execSync } = require('child_process')
7
+ const https = require('https')
8
+ const zlib = require('zlib')
9
+ const tar = require('tar')
10
+
11
+ const CONFIG = {
12
+ homeDir: os.homedir(),
13
+ configDir: path.join(os.homedir(), '.config', 'manicode'),
14
+ binaryName: process.platform === 'win32' ? 'codebuff.exe' : 'codebuff',
15
+ githubRepo: 'CodebuffAI/codebuff-community',
16
+ userAgent: 'codebuff-cli',
17
+ requestTimeout: 10000,
18
+ }
19
+
20
+ CONFIG.binaryPath = path.join(CONFIG.configDir, CONFIG.binaryName)
21
+
22
+ // Platform target mapping
23
+ const PLATFORM_TARGETS = {
24
+ 'linux-x64': 'codebuff-linux-x64.tar.gz',
25
+ 'linux-arm64': 'codebuff-linux-arm64.tar.gz',
26
+ 'darwin-x64': 'codebuff-darwin-x64.tar.gz',
27
+ 'darwin-arm64': 'codebuff-darwin-arm64.tar.gz',
28
+ 'win32-x64': 'codebuff-win32-x64.tar.gz',
29
+ }
30
+
31
+ // Terminal utilities
32
+ const term = {
33
+ clearLine: () => {
34
+ if (process.stderr.isTTY) {
35
+ process.stderr.write('\r\x1b[K')
36
+ }
37
+ },
38
+ write: (text) => {
39
+ term.clearLine()
40
+ process.stderr.write(text)
41
+ },
42
+ writeLine: (text) => {
43
+ term.clearLine()
44
+ process.stderr.write(text + '\n')
45
+ },
46
+ }
47
+
48
+ // Utility functions
49
+ function httpGet(url, options = {}) {
50
+ return new Promise((resolve, reject) => {
51
+ const parsedUrl = new URL(url)
52
+ const reqOptions = {
53
+ hostname: parsedUrl.hostname,
54
+ path: parsedUrl.pathname + parsedUrl.search,
55
+ headers: {
56
+ 'User-Agent': CONFIG.userAgent,
57
+ ...options.headers,
58
+ },
59
+ }
60
+
61
+ // Add GitHub token if available
62
+ const token = process.env.GITHUB_TOKEN
63
+ if (token) {
64
+ console.log('Using your GITHUB_TOKEN to download the latest version.')
65
+ reqOptions.headers.Authorization = `Bearer ${token}`
66
+ }
67
+
68
+ const req = https.get(reqOptions, (res) => {
69
+ if (res.statusCode === 302 || res.statusCode === 301) {
70
+ return httpGet(new URL(res.headers.location, url).href, options)
71
+ .then(resolve)
72
+ .catch(reject)
73
+ }
74
+ resolve(res)
75
+ })
76
+
77
+ req.on('error', reject)
78
+
79
+ const timeout = options.timeout || CONFIG.requestTimeout
80
+ req.setTimeout(timeout, () => {
81
+ req.destroy()
82
+ reject(new Error('Request timeout'))
83
+ })
84
+ })
85
+ }
86
+
87
+ async function getLatestVersion() {
88
+ const res = await httpGet(
89
+ `https://api.github.com/repos/${CONFIG.githubRepo}/releases/latest`
90
+ )
91
+
92
+ /* ── simple rate-limit fallback ─────────────────────────── */
93
+ if (res.statusCode === 403 && res.headers['x-ratelimit-remaining'] === '0') {
94
+ term.writeLine(
95
+ 'GitHub API rate-limit reached. Skipping version check – either wait an hour or set GITHUB_TOKEN and try again.'
96
+ )
97
+ return null
98
+ }
99
+
100
+ if (res.statusCode !== 200) return null // other errors
101
+
102
+ const body = await streamToString(res)
103
+ return JSON.parse(body).tag_name?.replace(/^v/, '') || null
104
+ }
105
+
106
+ function streamToString(stream) {
107
+ return new Promise((resolve, reject) => {
108
+ let data = ''
109
+ stream.on('data', (chunk) => (data += chunk))
110
+ stream.on('end', () => resolve(data))
111
+ stream.on('error', reject)
112
+ })
113
+ }
114
+
115
+ function getCurrentVersion() {
116
+ if (!fs.existsSync(CONFIG.binaryPath)) return null
117
+
118
+ try {
119
+ const result = execSync(`"${CONFIG.binaryPath}" --version`, {
120
+ cwd: os.homedir(),
121
+ encoding: 'utf-8',
122
+ stdio: 'pipe',
123
+ timeout: 1000,
124
+ })
125
+ return result.trim()
126
+ } catch (error) {
127
+ return null
128
+ }
129
+ }
130
+
131
+ function compareVersions(v1, v2) {
132
+ if (!v1 || !v2) return 0
133
+
134
+ const parts1 = v1.split('.').map(Number)
135
+ const parts2 = v2.split('.').map(Number)
136
+
137
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
138
+ const p1 = parts1[i] || 0
139
+ const p2 = parts2[i] || 0
140
+
141
+ if (p1 < p2) return -1
142
+ if (p1 > p2) return 1
143
+ }
144
+
145
+ return 0
146
+ }
147
+
148
+ function formatBytes(bytes) {
149
+ if (bytes === 0) return '0 B'
150
+ const k = 1024
151
+ const sizes = ['B', 'KB', 'MB', 'GB']
152
+ const i = Math.floor(Math.log(bytes) / Math.log(k))
153
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i]
154
+ }
155
+
156
+ function createProgressBar(percentage, width = 30) {
157
+ const filled = Math.round((width * percentage) / 100)
158
+ const empty = width - filled
159
+ return '[' + '█'.repeat(filled) + '░'.repeat(empty) + ']'
160
+ }
161
+
162
+ async function downloadBinary(version) {
163
+ const platformKey = `${process.platform}-${process.arch}`
164
+ const fileName = PLATFORM_TARGETS[platformKey]
165
+
166
+ if (!fileName) {
167
+ throw new Error(`Unsupported platform: ${process.platform} ${process.arch}`)
168
+ }
169
+
170
+ const downloadUrl = `https://github.com/${CONFIG.githubRepo}/releases/download/v${version}/${fileName}`
171
+
172
+ // Ensure config directory exists
173
+ fs.mkdirSync(CONFIG.configDir, { recursive: true })
174
+
175
+ term.write('Downloading...')
176
+
177
+ const res = await httpGet(downloadUrl)
178
+
179
+ if (res.statusCode !== 200) {
180
+ throw new Error(`Download failed: HTTP ${res.statusCode}`)
181
+ }
182
+
183
+ const totalSize = parseInt(res.headers['content-length'] || '0', 10)
184
+ let downloadedSize = 0
185
+ let lastProgressTime = Date.now()
186
+
187
+ res.on('data', (chunk) => {
188
+ downloadedSize += chunk.length
189
+ const now = Date.now()
190
+ if (now - lastProgressTime >= 100 || downloadedSize === totalSize) {
191
+ lastProgressTime = now
192
+ if (totalSize > 0) {
193
+ const pct = Math.round((downloadedSize / totalSize) * 100)
194
+ term.write(
195
+ `Downloading... ${createProgressBar(pct)} ${pct}% of ${formatBytes(
196
+ totalSize
197
+ )}`
198
+ )
199
+ } else {
200
+ term.write(`Downloading... ${formatBytes(downloadedSize)}`)
201
+ }
202
+ }
203
+ })
204
+
205
+ await new Promise((resolve, reject) => {
206
+ res
207
+ .pipe(zlib.createGunzip())
208
+ .pipe(tar.x({ cwd: CONFIG.configDir }))
209
+ .on('finish', resolve)
210
+ .on('error', reject)
211
+ })
212
+
213
+ try {
214
+ // Find the extracted binary - it should be named "codebuff" or "codebuff.exe"
215
+ const files = fs.readdirSync(CONFIG.configDir)
216
+ const extractedPath = path.join(CONFIG.configDir, CONFIG.binaryName)
217
+
218
+ if (fs.existsSync(extractedPath)) {
219
+ if (process.platform !== 'win32') {
220
+ fs.chmodSync(extractedPath, 0o755)
221
+ }
222
+ } else {
223
+ throw new Error(
224
+ `Binary not found after extraction. Expected: ${extractedPath}, Available files: ${files.join(', ')}`
225
+ )
226
+ }
227
+ } catch (error) {
228
+ term.clearLine()
229
+ console.error(`Extraction failed: ${error.message}`)
230
+ process.exit(1)
231
+ }
232
+
233
+ term.clearLine()
234
+ console.log('Download complete! Starting Codebuff...')
235
+ }
236
+
237
+ async function ensureBinaryExists() {
238
+ if (!fs.existsSync(CONFIG.binaryPath)) {
239
+ const version = await getLatestVersion()
240
+ if (!version) {
241
+ console.error('❌ Failed to determine latest version')
242
+ console.error('Please check your internet connection and try again')
243
+ process.exit(1)
244
+ }
245
+
246
+ try {
247
+ await downloadBinary(version)
248
+ } catch (error) {
249
+ term.clearLine()
250
+ console.error('❌ Failed to download codebuff:', error.message)
251
+ console.error('Please try again later.')
252
+ process.exit(1)
253
+ }
254
+ }
255
+ }
256
+
257
+ async function checkForUpdates(runningProcess, exitListener) {
258
+ try {
259
+ const currentVersion = getCurrentVersion()
260
+ if (!currentVersion) return
261
+
262
+ const latestVersion = await getLatestVersion()
263
+ if (!latestVersion) return
264
+
265
+ if (compareVersions(currentVersion, latestVersion) < 0) {
266
+ term.clearLine()
267
+
268
+ // Remove the specific exit listener to prevent it from interfering with the update
269
+ runningProcess.removeListener('exit', exitListener)
270
+
271
+ // Kill the running process
272
+ runningProcess.kill('SIGTERM')
273
+
274
+ // Wait for the process to actually exit
275
+ await new Promise((resolve) => {
276
+ runningProcess.on('exit', resolve)
277
+ // Fallback timeout in case the process doesn't exit gracefully
278
+ setTimeout(() => {
279
+ if (!runningProcess.killed) {
280
+ runningProcess.kill('SIGKILL')
281
+ }
282
+ resolve()
283
+ }, 5000)
284
+ })
285
+
286
+ console.log(`Update available: ${currentVersion} → ${latestVersion}`)
287
+
288
+ await downloadBinary(latestVersion)
289
+
290
+ // Restart with new binary - this replaces the current process
291
+ const newChild = spawn(CONFIG.binaryPath, process.argv.slice(2), {
292
+ stdio: 'inherit',
293
+ detached: false,
294
+ })
295
+
296
+ // Set up exit handler for the new process
297
+ newChild.on('exit', (code) => {
298
+ process.exit(code || 0)
299
+ })
300
+
301
+ // Don't return - keep this function running to maintain the wrapper
302
+ return new Promise(() => {}) // Never resolves, keeps wrapper alive
303
+ }
304
+ } catch (error) {
305
+ // Silently ignore update check errors
306
+ }
307
+ }
308
+
309
+ async function main() {
310
+ await ensureBinaryExists()
311
+
312
+ // Start codebuff
313
+ const child = spawn(CONFIG.binaryPath, process.argv.slice(2), {
314
+ stdio: 'inherit',
315
+ })
316
+
317
+ // Store reference to the exit listener so we can remove it during updates
318
+ const exitListener = (code) => {
319
+ process.exit(code || 0)
320
+ }
321
+
322
+ child.on('exit', exitListener)
323
+
324
+ // Check for updates in background
325
+ setTimeout(() => {
326
+ checkForUpdates(child, exitListener)
327
+ }, 100)
328
+ }
329
+
330
+ // Run the main function
331
+ main().catch((error) => {
332
+ console.error('❌ Unexpected error:', error.message)
333
+ process.exit(1)
334
+ })
package/package.json CHANGED
@@ -1,85 +1,36 @@
1
1
  {
2
2
  "name": "codebuff",
3
- "version": "1.0.334",
4
- "description": "AI dev assistant",
3
+ "version": "1.0.335",
4
+ "description": "AI coding agent",
5
5
  "license": "MIT",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
6
  "bin": {
9
- "codebuff": "dist/index.js"
10
- },
11
- "scripts": {
12
- "prepublishOnly": "nx clean npm-app && nx build npm-app && nx run npm-app:prepublish",
13
- "postpublish": "echo \"const fs=require('fs');fs.copyFileSync('temp.package.json','package.json');fs.unlinkSync('temp.package.json');\" | bun run -",
14
- "format": "prettier --write \"**/*.{ts,tsx,json,md}\"",
15
- "test": "jest",
16
- "start": "nx run npm-app:start",
17
- "start-js": "nx clean npm-app && nx build npm-app && nx run npm-app:start-js",
18
- "start-max": "nx run npm-app:start-max",
19
- "start-lite": "nx run npm-app:start-lite",
20
- "start-ask": "nx run npm-app:start-ask",
21
- "start-dir": "nx run npm-app:start-dir",
22
- "start-experimental": "nx run npm-app:start-experimental",
23
- "start-manifold": "nx run npm-app:start-manifold",
24
- "start-litestar": "nx run npm-app:start-litestar",
25
- "start-jpcsp": "nx run npm-app:start-jpcsp",
26
- "start-vscode": "nx run npm-app:start-vscode",
27
- "start-nushell": "nx run npm-app:start-nushell",
28
- "start-prod": "nx run npm-app:start-prod",
29
- "typecheck-this-package": "tsc --noEmit && tsc-alias",
30
- "typecheck": "npm run build",
31
- "build": "nx build npm-app"
7
+ "codebuff": "index.js"
32
8
  },
33
9
  "files": [
34
- "dist",
10
+ "index.js",
35
11
  "README.md"
36
12
  ],
13
+ "os": [
14
+ "darwin",
15
+ "linux",
16
+ "win32"
17
+ ],
18
+ "cpu": [
19
+ "x64",
20
+ "arm64"
21
+ ],
37
22
  "engines": {
38
- "node": ">=18"
23
+ "node": ">=16"
39
24
  },
40
25
  "dependencies": {
41
- "@types/diff": "5.2.1",
42
- "@types/micromatch": "^4.0.9",
43
- "@vscode/ripgrep": "1.15.9",
44
- "ai": "4.3.16",
45
- "axios": "1.7.4",
46
- "code-map": "1.0.0",
47
- "commander": "^13.1.0",
48
- "diff": "5.2.0",
49
- "git-url-parse": "^16.1.0",
50
- "ignore": "7.0.3",
51
- "isomorphic-git": "^1.29.0",
52
- "jsonc-parser": "^3.3.1",
53
- "lodash": "*",
54
- "micromatch": "^4.0.8",
55
- "nanoid": "5.0.7",
56
- "onetime": "5.1.2",
57
- "picocolors": "1.1.0",
58
- "pino": "9.4.0",
59
- "posthog-node": "4.17.2",
60
- "puppeteer-core": "^24.2.0",
61
- "systeminformation": "5.23.4",
62
- "tree-sitter": "0.21.1",
63
- "tree-sitter-c": "0.23.0",
64
- "tree-sitter-c-sharp": "0.23.0",
65
- "tree-sitter-cpp": "0.23.0",
66
- "tree-sitter-go": "0.23.1",
67
- "tree-sitter-java": "0.23.2",
68
- "tree-sitter-javascript": "0.23.0",
69
- "tree-sitter-php": "0.23.2",
70
- "tree-sitter-python": "0.23.2",
71
- "tree-sitter-ruby": "0.23.0",
72
- "tree-sitter-rust": "0.23.0",
73
- "tree-sitter-typescript": "0.23.0",
74
- "ts-pattern": "5.3.1",
75
- "ws": "8.18.0",
76
- "zod": "3.23.8"
26
+ "tar": "^6.2.0"
77
27
  },
78
- "optionalDependencies": {
79
- "@homebridge/node-pty-prebuilt-multiarch": "0.12.0"
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/CodebuffAI/codebuff-community.git"
80
31
  },
81
- "trustedDependencies": [
82
- "@homebridge/node-pty-prebuilt-multiarch",
83
- "@vscode/ripgrep"
84
- ]
85
- }
32
+ "homepage": "https://codebuff.com",
33
+ "publishConfig": {
34
+ "access": "public"
35
+ }
36
+ }
@@ -1 +0,0 @@
1
- export {};
@@ -1,174 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // @ts-ignore
4
- const bun_test_1 = require("bun:test");
5
- const picocolors_1 = require("picocolors");
6
- const display_1 = require("../display");
7
- const PREFIX = '.\r\n';
8
- // Helper function to simulate getLastTwoLines behavior
9
- function getLastTwoLines(str) {
10
- return PREFIX + str.split('\r\n').slice(-2).join('\r\n');
11
- }
12
- (0, bun_test_1.describe)('squashNewlines', () => {
13
- (0, bun_test_1.describe)('when called with getLastTwoLines(previous) + chunk', () => {
14
- (0, bun_test_1.it)('should handle simple strings', () => {
15
- const previous = 'line1\r\nline2\r\nline3';
16
- const chunk = '\r\nline4\r\nline5';
17
- const lastTwoLines = getLastTwoLines(previous);
18
- const combined = lastTwoLines + chunk;
19
- const squashed = (0, display_1.squashNewlines)(combined);
20
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + chunk);
21
- });
22
- (0, bun_test_1.it)('should handle when chunk has empty lines', () => {
23
- const previous = 'content\r\nmore content';
24
- const chunk = '\r\n\r\n\r\nfinal line';
25
- const lastTwoLines = getLastTwoLines(previous);
26
- const combined = lastTwoLines + chunk;
27
- const squashed = (0, display_1.squashNewlines)(combined);
28
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + '\r\n\r\nfinal line');
29
- });
30
- (0, bun_test_1.it)('should handle when chunk has whitespace lines', () => {
31
- const previous = 'first\r\nsecond\r\nthird';
32
- const chunk = '\r\n \r\n\t\r\nfourth';
33
- const lastTwoLines = getLastTwoLines(previous);
34
- const combined = lastTwoLines + chunk;
35
- const squashed = (0, display_1.squashNewlines)(combined);
36
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + '\r\n \r\n\tfourth');
37
- });
38
- (0, bun_test_1.it)('should handle when previous is empty', () => {
39
- const previous = '';
40
- const chunk = 'some\r\ncontent';
41
- const lastTwoLines = getLastTwoLines(previous);
42
- const combined = lastTwoLines + chunk;
43
- const squashed = (0, display_1.squashNewlines)(combined);
44
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + chunk);
45
- });
46
- (0, bun_test_1.it)('should handle when chunk is empty', () => {
47
- const previous = 'some\r\ncontent\r\nhere';
48
- const chunk = '';
49
- const lastTwoLines = getLastTwoLines(previous);
50
- const combined = lastTwoLines + chunk;
51
- const squashed = (0, display_1.squashNewlines)(combined);
52
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + chunk);
53
- });
54
- (0, bun_test_1.it)('should handle when both strings are empty', () => {
55
- const previous = '';
56
- const chunk = '';
57
- const lastTwoLines = getLastTwoLines(previous);
58
- const combined = lastTwoLines + chunk;
59
- const squashed = (0, display_1.squashNewlines)(combined);
60
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + chunk);
61
- });
62
- (0, bun_test_1.it)('should handle complex mixed content', () => {
63
- const previous = 'alpha\r\nbeta\r\ngamma\r\ndelta';
64
- const chunk = '\r\n\r\n \r\n\t\r\n\r\nepsilon\r\nzeta';
65
- const lastTwoLines = getLastTwoLines(previous);
66
- const combined = lastTwoLines + chunk;
67
- const squashed = (0, display_1.squashNewlines)(combined);
68
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + '\r\n\r\n \tepsilon\r\nzeta');
69
- });
70
- (0, bun_test_1.it)('should handle when previous has only newlines', () => {
71
- const previous = '\r\n\r\n\r\n';
72
- const chunk = 'content';
73
- const lastTwoLines = getLastTwoLines(previous);
74
- const combined = lastTwoLines + chunk;
75
- const squashed = (0, display_1.squashNewlines)(combined);
76
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + chunk);
77
- });
78
- (0, bun_test_1.it)('should handle when chunk has only newlines', () => {
79
- const previous = 'content\r\nmore';
80
- const chunk = '\r\n\r\n\r\n';
81
- const lastTwoLines = getLastTwoLines(previous);
82
- const combined = lastTwoLines + chunk;
83
- const squashed = (0, display_1.squashNewlines)(combined);
84
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + '\r\n\r\n');
85
- });
86
- (0, bun_test_1.it)('should handle single line inputs', () => {
87
- const previous = 'single line';
88
- const chunk = 'another line';
89
- const lastTwoLines = getLastTwoLines(previous);
90
- const combined = lastTwoLines + chunk;
91
- const squashed = (0, display_1.squashNewlines)(combined);
92
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + chunk);
93
- });
94
- (0, bun_test_1.it)('should handle previous ends with whitespace lines', () => {
95
- const previous = 'content\r\n \r\n\t';
96
- const chunk = '\r\nmore content';
97
- const lastTwoLines = getLastTwoLines(previous);
98
- const combined = lastTwoLines + chunk;
99
- const squashed = (0, display_1.squashNewlines)(combined);
100
- (0, bun_test_1.expect)(squashed).toEqual(lastTwoLines + 'more content');
101
- });
102
- });
103
- (0, bun_test_1.describe)('squashNewlines behavior verification', () => {
104
- (0, bun_test_1.it)('should squash consecutive empty lines correctly', () => {
105
- const input = PREFIX + 'line1\r\n\r\n\r\n\r\nline5';
106
- const result = (0, display_1.squashNewlines)(input);
107
- // Should reduce multiple consecutive empty lines to at most 2
108
- (0, bun_test_1.expect)(result).toBe(PREFIX + 'line1\r\n\r\nline5');
109
- });
110
- (0, bun_test_1.it)('should preserve single empty lines', () => {
111
- const input = PREFIX + 'line1\r\n\r\nline3';
112
- const result = (0, display_1.squashNewlines)(input);
113
- (0, bun_test_1.expect)(result).toBe(input); // Should remain unchanged
114
- });
115
- });
116
- (0, bun_test_1.describe)('error handling', () => {
117
- (0, bun_test_1.it)('should throw error when input does not start with PREFIX', () => {
118
- const invalidInput = 'invalid input without prefix';
119
- (0, bun_test_1.expect)(() => (0, display_1.squashNewlines)(invalidInput)).toThrow(`Expected string to start with ${JSON.stringify(PREFIX)}`);
120
- });
121
- });
122
- });
123
- (0, bun_test_1.describe)('onlyWhitespace', () => {
124
- (0, bun_test_1.it)('should return true for empty string', () => {
125
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('')).toBe(true);
126
- });
127
- (0, bun_test_1.it)('should return true for single space', () => {
128
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)(' ')).toBe(true);
129
- });
130
- (0, bun_test_1.it)('should return true for multiple spaces', () => {
131
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)(' ')).toBe(true);
132
- });
133
- (0, bun_test_1.it)('should return true for tab', () => {
134
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\t')).toBe(true);
135
- });
136
- (0, bun_test_1.it)('should return true for newline', () => {
137
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\n')).toBe(true);
138
- });
139
- (0, bun_test_1.it)('should return true for carriage return', () => {
140
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\r')).toBe(true);
141
- });
142
- (0, bun_test_1.it)('should return true for ANSI escape sequences', () => {
143
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u001b[31m')).toBe(true); // Red color
144
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u001b[0m')).toBe(true); // Reset
145
- });
146
- (0, bun_test_1.it)('should return true for OSC sequences', () => {
147
- const oscSequence = '\u001b]697;OSCUnlock=683fe5e7c2d2476bb61d4e0588c15eec\u0007\u001b]697;Dir=/Users/jahooma/codebuff\u0007';
148
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)(oscSequence)).toBe(true);
149
- });
150
- (0, bun_test_1.it)('should return false for control characters', () => {
151
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u0000\u0001\u0002')).toBe(true); // Null, SOH, STX
152
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u007F')).toBe(true); // DEL
153
- });
154
- (0, bun_test_1.it)('should return true for zero-width characters', () => {
155
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u200B')).toBe(true);
156
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u200C')).toBe(true);
157
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u200D')).toBe(true);
158
- });
159
- (0, bun_test_1.it)('should return true for colored empty strings', () => {
160
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)((0, picocolors_1.gray)(' '))).toBe(true);
161
- });
162
- (0, bun_test_1.it)('should return false for visible text', () => {
163
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('hello')).toBe(false);
164
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('a')).toBe(false);
165
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('123')).toBe(false);
166
- });
167
- (0, bun_test_1.describe)('real world examples', () => {
168
- (0, bun_test_1.it)('should return false for end of terminal command', () => {
169
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u001b]697;OSCUnlock=683fe5e7c2d2476bb61d4e0588c15eec\u0007\u001b]697;Dir=/Users/jahooma/codebuff\u0007\u001b]697;Shell=bash\u0007\u001b]697;ShellPath=/bin/bash\u0007\u001b]697;PID=71631\u0007\u001b]697;ExitCode=0\u0007\u001b]697;TTY=/dev/ttys036\u0007\u001b]697;Log=\u0007\u001b]697;User=jahooma\u0007\u001b]697;OSCLock=683fe5e7c2d2476bb61d4e0588c15eec\u0007\u001b]697;PreExec\u0007\u001b]697;StartPrompt\u0007')).toBe(true);
170
- (0, bun_test_1.expect)((0, display_1.onlyWhitespace)('\u001b]0;charles@charles-framework-13:~/github/codebuff\u001b\\\u001b]7;file://charles-framework-13/home/charles/github/codebuff\u001b\\\u001b[?2004h')).toBe(true);
171
- });
172
- });
173
- });
174
- //# sourceMappingURL=display.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"display.test.js","sourceRoot":"","sources":["../../src/__tests__/display.test.ts"],"names":[],"mappings":";;AAAA,aAAa;AACb,uCAA+C;AAC/C,2CAAiC;AAEjC,wCAA2D;AAE3D,MAAM,MAAM,GAAG,OAAO,CAAA;AAEtB,uDAAuD;AACvD,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC1D,CAAC;AAED,IAAA,mBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAA,mBAAQ,EAAC,oDAAoD,EAAE,GAAG,EAAE;QAClE,IAAA,aAAE,EAAC,8BAA8B,EAAE,GAAG,EAAE;YACtC,MAAM,QAAQ,GAAG,yBAAyB,CAAA;YAC1C,MAAM,KAAK,GAAG,oBAAoB,CAAA;YAClC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,QAAQ,GAAG,yBAAyB,CAAA;YAC1C,MAAM,KAAK,GAAG,wBAAwB,CAAA;YACtC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,QAAQ,GAAG,0BAA0B,CAAA;YAC3C,MAAM,KAAK,GAAG,yBAAyB,CAAA;YACvC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,qBAAqB,CAAC,CAAA;QAChE,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,QAAQ,GAAG,EAAE,CAAA;YACnB,MAAM,KAAK,GAAG,iBAAiB,CAAA;YAC/B,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,QAAQ,GAAG,yBAAyB,CAAA;YAC1C,MAAM,KAAK,GAAG,EAAE,CAAA;YAChB,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,QAAQ,GAAG,EAAE,CAAA;YACnB,MAAM,KAAK,GAAG,EAAE,CAAA;YAChB,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,QAAQ,GAAG,iCAAiC,CAAA;YAClD,MAAM,KAAK,GAAG,0CAA0C,CAAA;YACxD,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,8BAA8B,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,QAAQ,GAAG,cAAc,CAAA;YAC/B,MAAM,KAAK,GAAG,SAAS,CAAA;YACvB,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,QAAQ,GAAG,iBAAiB,CAAA;YAClC,MAAM,KAAK,GAAG,cAAc,CAAA;YAC5B,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,UAAU,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,QAAQ,GAAG,aAAa,CAAA;YAC9B,MAAM,KAAK,GAAG,cAAc,CAAA;YAC5B,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,QAAQ,GAAG,qBAAqB,CAAA;YACtC,MAAM,KAAK,GAAG,kBAAkB,CAAA;YAChC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;YAC9C,MAAM,QAAQ,GAAG,YAAY,GAAG,KAAK,CAAA;YACrC,MAAM,QAAQ,GAAG,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAA;YAEzC,IAAA,iBAAM,EAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,cAAc,CAAC,CAAA;QACzD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,mBAAQ,EAAC,sCAAsC,EAAE,GAAG,EAAE;QACpD,IAAA,aAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,KAAK,GAAG,MAAM,GAAG,4BAA4B,CAAA;YACnD,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,KAAK,CAAC,CAAA;YAEpC,8DAA8D;YAC9D,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;QAEF,IAAA,aAAE,EAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,KAAK,GAAG,MAAM,GAAG,oBAAoB,CAAA;YAC3C,MAAM,MAAM,GAAG,IAAA,wBAAc,EAAC,KAAK,CAAC,CAAA;YAEpC,IAAA,iBAAM,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,CAAC,0BAA0B;QACvD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAA,mBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,IAAA,aAAE,EAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,YAAY,GAAG,8BAA8B,CAAA;YAEnD,IAAA,iBAAM,EAAC,GAAG,EAAE,CAAC,IAAA,wBAAc,EAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAChD,iCAAiC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAC1D,CAAA;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAA,mBAAQ,EAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAA,aAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,YAAY;QAC5D,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,QAAQ;IACzD,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,WAAW,GACf,yGAAyG,CAAA;QAC3G,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,iBAAiB;QACzE,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAC,MAAM;IACpD,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,IAAA,iBAAI,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,IAAA,aAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3C,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvC,IAAA,iBAAM,EAAC,IAAA,wBAAc,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,IAAA,mBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,IAAA,aAAE,EAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,IAAA,iBAAM,EACJ,IAAA,wBAAc,EACZ,6ZAA6Z,CAC9Z,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEZ,IAAA,iBAAM,EACJ,IAAA,wBAAc,EACZ,uJAAuJ,CACxJ,CACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- export {};