codebuff 1.0.333 → 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 (363) 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/background-process-manager.d.ts +0 -50
  7. package/dist/background-process-manager.js +0 -364
  8. package/dist/background-process-manager.js.map +0 -1
  9. package/dist/browser-runner.d.ts +0 -35
  10. package/dist/browser-runner.js +0 -689
  11. package/dist/browser-runner.js.map +0 -1
  12. package/dist/chat-storage.d.ts +0 -2
  13. package/dist/chat-storage.js +0 -98
  14. package/dist/chat-storage.js.map +0 -1
  15. package/dist/checkpoints/checkpoint-manager.d.ts +0 -94
  16. package/dist/checkpoints/checkpoint-manager.js +0 -291
  17. package/dist/checkpoints/checkpoint-manager.js.map +0 -1
  18. package/dist/checkpoints/file-manager.d.ts +0 -72
  19. package/dist/checkpoints/file-manager.js +0 -495
  20. package/dist/checkpoints/file-manager.js.map +0 -1
  21. package/dist/cli-definitions.d.ts +0 -9
  22. package/dist/cli-definitions.js +0 -60
  23. package/dist/cli-definitions.js.map +0 -1
  24. package/dist/cli-handlers/api-key.d.ts +0 -25
  25. package/dist/cli-handlers/api-key.js +0 -66
  26. package/dist/cli-handlers/api-key.js.map +0 -1
  27. package/dist/cli-handlers/checkpoint.d.ts +0 -19
  28. package/dist/cli-handlers/checkpoint.js +0 -221
  29. package/dist/cli-handlers/checkpoint.js.map +0 -1
  30. package/dist/cli-handlers/diff.d.ts +0 -2
  31. package/dist/cli-handlers/diff.js +0 -31
  32. package/dist/cli-handlers/diff.js.map +0 -1
  33. package/dist/cli-handlers/easter-egg.d.ts +0 -1
  34. package/dist/cli-handlers/easter-egg.js +0 -126
  35. package/dist/cli-handlers/easter-egg.js.map +0 -1
  36. package/dist/cli-handlers/inititalization-flow.d.ts +0 -1
  37. package/dist/cli-handlers/inititalization-flow.js +0 -25
  38. package/dist/cli-handlers/inititalization-flow.js.map +0 -1
  39. package/dist/cli.d.ts +0 -67
  40. package/dist/cli.js +0 -777
  41. package/dist/cli.js.map +0 -1
  42. package/dist/client.d.ts +0 -91
  43. package/dist/client.js +0 -1112
  44. package/dist/client.js.map +0 -1
  45. package/dist/code-map/languages.d.ts +0 -12
  46. package/dist/code-map/languages.d.ts.map +0 -1
  47. package/dist/code-map/languages.js +0 -130
  48. package/dist/code-map/languages.js.map +0 -1
  49. package/dist/code-map/parse.d.ts +0 -22
  50. package/dist/code-map/parse.d.ts.map +0 -1
  51. package/dist/code-map/parse.js +0 -180
  52. package/dist/code-map/parse.js.map +0 -1
  53. package/dist/code-map/tree-sitter-queries/readme.md +0 -23
  54. package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +0 -16
  55. package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +0 -23
  56. package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +0 -29
  57. package/dist/code-map/tree-sitter-queries/tree-sitter-go-tags.scm +0 -26
  58. package/dist/code-map/tree-sitter-queries/tree-sitter-java-tags.scm +0 -19
  59. package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +0 -16
  60. package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +0 -23
  61. package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +0 -12
  62. package/dist/code-map/tree-sitter-queries/tree-sitter-ruby-tags.scm +0 -58
  63. package/dist/code-map/tree-sitter-queries/tree-sitter-rust-tags.scm +0 -26
  64. package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +0 -22
  65. package/dist/code-map/tsconfig.tsbuildinfo +0 -1
  66. package/dist/common/actions.d.ts +0 -1809
  67. package/dist/common/actions.d.ts.map +0 -1
  68. package/dist/common/actions.js +0 -140
  69. package/dist/common/actions.js.map +0 -1
  70. package/dist/common/analytics.d.ts +0 -6
  71. package/dist/common/analytics.d.ts.map +0 -1
  72. package/dist/common/analytics.js +0 -60
  73. package/dist/common/analytics.js.map +0 -1
  74. package/dist/common/api-keys/constants.d.ts +0 -9
  75. package/dist/common/api-keys/constants.d.ts.map +0 -1
  76. package/dist/common/api-keys/constants.js +0 -26
  77. package/dist/common/api-keys/constants.js.map +0 -1
  78. package/dist/common/api-keys/crypto.d.ts +0 -25
  79. package/dist/common/api-keys/crypto.d.ts.map +0 -1
  80. package/dist/common/api-keys/crypto.js +0 -186
  81. package/dist/common/api-keys/crypto.js.map +0 -1
  82. package/dist/common/browser-actions.d.ts +0 -4416
  83. package/dist/common/browser-actions.d.ts.map +0 -1
  84. package/dist/common/browser-actions.js +0 -343
  85. package/dist/common/browser-actions.js.map +0 -1
  86. package/dist/common/constants/analytics-events.d.ts +0 -29
  87. package/dist/common/constants/analytics-events.d.ts.map +0 -1
  88. package/dist/common/constants/analytics-events.js +0 -37
  89. package/dist/common/constants/analytics-events.js.map +0 -1
  90. package/dist/common/constants/grant-priorities.d.ts +0 -3
  91. package/dist/common/constants/grant-priorities.d.ts.map +0 -1
  92. package/dist/common/constants/grant-priorities.js +0 -11
  93. package/dist/common/constants/grant-priorities.js.map +0 -1
  94. package/dist/common/constants/tools.d.ts +0 -19
  95. package/dist/common/constants/tools.d.ts.map +0 -1
  96. package/dist/common/constants/tools.js +0 -45
  97. package/dist/common/constants/tools.js.map +0 -1
  98. package/dist/common/constants.d.ts +0 -149
  99. package/dist/common/constants.d.ts.map +0 -1
  100. package/dist/common/constants.js +0 -234
  101. package/dist/common/constants.js.map +0 -1
  102. package/dist/common/db/drizzle.config.d.ts +0 -3
  103. package/dist/common/db/drizzle.config.d.ts.map +0 -1
  104. package/dist/common/db/drizzle.config.js +0 -17
  105. package/dist/common/db/drizzle.config.js.map +0 -1
  106. package/dist/common/db/index.d.ts +0 -7
  107. package/dist/common/db/index.d.ts.map +0 -1
  108. package/dist/common/db/index.js +0 -35
  109. package/dist/common/db/index.js.map +0 -1
  110. package/dist/common/db/schema.d.ts +0 -2449
  111. package/dist/common/db/schema.d.ts.map +0 -1
  112. package/dist/common/db/schema.js +0 -310
  113. package/dist/common/db/schema.js.map +0 -1
  114. package/dist/common/db/transaction.d.ts +0 -13
  115. package/dist/common/db/transaction.d.ts.map +0 -1
  116. package/dist/common/db/transaction.js +0 -36
  117. package/dist/common/db/transaction.js.map +0 -1
  118. package/dist/common/json-config/__tests__/constants.test.d.ts +0 -2
  119. package/dist/common/json-config/__tests__/constants.test.d.ts.map +0 -1
  120. package/dist/common/json-config/__tests__/constants.test.js +0 -273
  121. package/dist/common/json-config/__tests__/constants.test.js.map +0 -1
  122. package/dist/common/json-config/__tests__/stringify-schema.test.d.ts +0 -2
  123. package/dist/common/json-config/__tests__/stringify-schema.test.d.ts.map +0 -1
  124. package/dist/common/json-config/__tests__/stringify-schema.test.js +0 -66
  125. package/dist/common/json-config/__tests__/stringify-schema.test.js.map +0 -1
  126. package/dist/common/json-config/constants.d.ts +0 -138
  127. package/dist/common/json-config/constants.d.ts.map +0 -1
  128. package/dist/common/json-config/constants.js +0 -78
  129. package/dist/common/json-config/constants.js.map +0 -1
  130. package/dist/common/json-config/default.d.ts +0 -3
  131. package/dist/common/json-config/default.d.ts.map +0 -1
  132. package/dist/common/json-config/default.js +0 -12
  133. package/dist/common/json-config/default.js.map +0 -1
  134. package/dist/common/json-config/stringify-schema.d.ts +0 -10
  135. package/dist/common/json-config/stringify-schema.d.ts.map +0 -1
  136. package/dist/common/json-config/stringify-schema.js +0 -131
  137. package/dist/common/json-config/stringify-schema.js.map +0 -1
  138. package/dist/common/project-file-tree.d.ts +0 -12
  139. package/dist/common/project-file-tree.d.ts.map +0 -1
  140. package/dist/common/project-file-tree.js +0 -212
  141. package/dist/common/project-file-tree.js.map +0 -1
  142. package/dist/common/types/agent-state.d.ts +0 -265
  143. package/dist/common/types/agent-state.d.ts.map +0 -1
  144. package/dist/common/types/agent-state.js +0 -48
  145. package/dist/common/types/agent-state.js.map +0 -1
  146. package/dist/common/types/grant.d.ts +0 -3
  147. package/dist/common/types/grant.d.ts.map +0 -1
  148. package/dist/common/types/grant.js +0 -11
  149. package/dist/common/types/grant.js.map +0 -1
  150. package/dist/common/types/message.d.ts +0 -320
  151. package/dist/common/types/message.d.ts.map +0 -1
  152. package/dist/common/types/message.js +0 -60
  153. package/dist/common/types/message.js.map +0 -1
  154. package/dist/common/types/organization.d.ts +0 -106
  155. package/dist/common/types/organization.d.ts.map +0 -1
  156. package/dist/common/types/organization.js +0 -3
  157. package/dist/common/types/organization.js.map +0 -1
  158. package/dist/common/types/referral.d.ts +0 -3
  159. package/dist/common/types/referral.d.ts.map +0 -1
  160. package/dist/common/types/referral.js +0 -5
  161. package/dist/common/types/referral.js.map +0 -1
  162. package/dist/common/types/tools.d.ts +0 -6
  163. package/dist/common/types/tools.d.ts.map +0 -1
  164. package/dist/common/types/tools.js +0 -3
  165. package/dist/common/types/tools.js.map +0 -1
  166. package/dist/common/types/usage.d.ts +0 -41
  167. package/dist/common/types/usage.d.ts.map +0 -1
  168. package/dist/common/types/usage.js +0 -16
  169. package/dist/common/types/usage.js.map +0 -1
  170. package/dist/common/util/__tests__/messages.test.d.ts +0 -2
  171. package/dist/common/util/__tests__/messages.test.d.ts.map +0 -1
  172. package/dist/common/util/__tests__/messages.test.js +0 -70
  173. package/dist/common/util/__tests__/messages.test.js.map +0 -1
  174. package/dist/common/util/__tests__/saxy.test.d.ts +0 -2
  175. package/dist/common/util/__tests__/saxy.test.d.ts.map +0 -1
  176. package/dist/common/util/__tests__/saxy.test.js +0 -906
  177. package/dist/common/util/__tests__/saxy.test.js.map +0 -1
  178. package/dist/common/util/__tests__/string.test.d.ts +0 -2
  179. package/dist/common/util/__tests__/string.test.d.ts.map +0 -1
  180. package/dist/common/util/__tests__/string.test.js +0 -82
  181. package/dist/common/util/__tests__/string.test.js.map +0 -1
  182. package/dist/common/util/array.d.ts +0 -7
  183. package/dist/common/util/array.d.ts.map +0 -1
  184. package/dist/common/util/array.js +0 -32
  185. package/dist/common/util/array.js.map +0 -1
  186. package/dist/common/util/changes.d.ts +0 -9
  187. package/dist/common/util/changes.d.ts.map +0 -1
  188. package/dist/common/util/changes.js +0 -87
  189. package/dist/common/util/changes.js.map +0 -1
  190. package/dist/common/util/credentials.d.ts +0 -26
  191. package/dist/common/util/credentials.d.ts.map +0 -1
  192. package/dist/common/util/credentials.js +0 -24
  193. package/dist/common/util/credentials.js.map +0 -1
  194. package/dist/common/util/currency.d.ts +0 -15
  195. package/dist/common/util/currency.d.ts.map +0 -1
  196. package/dist/common/util/currency.js +0 -23
  197. package/dist/common/util/currency.js.map +0 -1
  198. package/dist/common/util/dates.d.ts +0 -11
  199. package/dist/common/util/dates.d.ts.map +0 -1
  200. package/dist/common/util/dates.js +0 -22
  201. package/dist/common/util/dates.js.map +0 -1
  202. package/dist/common/util/file.d.ts +0 -171
  203. package/dist/common/util/file.d.ts.map +0 -1
  204. package/dist/common/util/file.js +0 -216
  205. package/dist/common/util/file.js.map +0 -1
  206. package/dist/common/util/git.d.ts +0 -7
  207. package/dist/common/util/git.d.ts.map +0 -1
  208. package/dist/common/util/git.js +0 -81
  209. package/dist/common/util/git.js.map +0 -1
  210. package/dist/common/util/logger.d.ts +0 -9
  211. package/dist/common/util/logger.d.ts.map +0 -1
  212. package/dist/common/util/logger.js +0 -52
  213. package/dist/common/util/logger.js.map +0 -1
  214. package/dist/common/util/lru-cache.d.ts +0 -31
  215. package/dist/common/util/lru-cache.d.ts.map +0 -1
  216. package/dist/common/util/lru-cache.js +0 -68
  217. package/dist/common/util/lru-cache.js.map +0 -1
  218. package/dist/common/util/messages.d.ts +0 -12
  219. package/dist/common/util/messages.d.ts.map +0 -1
  220. package/dist/common/util/messages.js +0 -81
  221. package/dist/common/util/messages.js.map +0 -1
  222. package/dist/common/util/min-heap.d.ts +0 -16
  223. package/dist/common/util/min-heap.d.ts.map +0 -1
  224. package/dist/common/util/min-heap.js +0 -73
  225. package/dist/common/util/min-heap.js.map +0 -1
  226. package/dist/common/util/object.d.ts +0 -19
  227. package/dist/common/util/object.d.ts.map +0 -1
  228. package/dist/common/util/object.js +0 -91
  229. package/dist/common/util/object.js.map +0 -1
  230. package/dist/common/util/patch.d.ts +0 -2
  231. package/dist/common/util/patch.d.ts.map +0 -1
  232. package/dist/common/util/patch.js +0 -215
  233. package/dist/common/util/patch.js.map +0 -1
  234. package/dist/common/util/promise.d.ts +0 -17
  235. package/dist/common/util/promise.d.ts.map +0 -1
  236. package/dist/common/util/promise.js +0 -51
  237. package/dist/common/util/promise.js.map +0 -1
  238. package/dist/common/util/random.d.ts +0 -2
  239. package/dist/common/util/random.d.ts.map +0 -1
  240. package/dist/common/util/random.js +0 -17
  241. package/dist/common/util/random.js.map +0 -1
  242. package/dist/common/util/referral.d.ts +0 -2
  243. package/dist/common/util/referral.d.ts.map +0 -1
  244. package/dist/common/util/referral.js +0 -6
  245. package/dist/common/util/referral.js.map +0 -1
  246. package/dist/common/util/saxy.d.ts +0 -179
  247. package/dist/common/util/saxy.d.ts.map +0 -1
  248. package/dist/common/util/saxy.js +0 -548
  249. package/dist/common/util/saxy.js.map +0 -1
  250. package/dist/common/util/string.d.ts +0 -80
  251. package/dist/common/util/string.d.ts.map +0 -1
  252. package/dist/common/util/string.js +0 -275
  253. package/dist/common/util/string.js.map +0 -1
  254. package/dist/common/util/stripe.d.ts +0 -4
  255. package/dist/common/util/stripe.d.ts.map +0 -1
  256. package/dist/common/util/stripe.js +0 -22
  257. package/dist/common/util/stripe.js.map +0 -1
  258. package/dist/common/util/sync-failure.d.ts +0 -2
  259. package/dist/common/util/sync-failure.d.ts.map +0 -1
  260. package/dist/common/util/sync-failure.js +0 -57
  261. package/dist/common/util/sync-failure.js.map +0 -1
  262. package/dist/common/websockets/websocket-client.d.ts +0 -43
  263. package/dist/common/websockets/websocket-client.d.ts.map +0 -1
  264. package/dist/common/websockets/websocket-client.js +0 -216
  265. package/dist/common/websockets/websocket-client.js.map +0 -1
  266. package/dist/common/websockets/websocket-schema.d.ts +0 -3679
  267. package/dist/common/websockets/websocket-schema.d.ts.map +0 -1
  268. package/dist/common/websockets/websocket-schema.js +0 -55
  269. package/dist/common/websockets/websocket-schema.js.map +0 -1
  270. package/dist/config.d.ts +0 -4
  271. package/dist/config.js +0 -12
  272. package/dist/config.js.map +0 -1
  273. package/dist/create-template-project.d.ts +0 -1
  274. package/dist/create-template-project.js +0 -131
  275. package/dist/create-template-project.js.map +0 -1
  276. package/dist/credentials.d.ts +0 -4
  277. package/dist/credentials.js +0 -44
  278. package/dist/credentials.js.map +0 -1
  279. package/dist/dev-process-manager.d.ts +0 -10
  280. package/dist/dev-process-manager.js +0 -56
  281. package/dist/dev-process-manager.js.map +0 -1
  282. package/dist/display.d.ts +0 -9
  283. package/dist/display.js +0 -137
  284. package/dist/display.js.map +0 -1
  285. package/dist/fingerprint.d.ts +0 -1
  286. package/dist/fingerprint.js +0 -48
  287. package/dist/fingerprint.js.map +0 -1
  288. package/dist/index.d.ts +0 -2
  289. package/dist/index.js +0 -125
  290. package/dist/index.js.map +0 -1
  291. package/dist/json-config/hooks.d.ts +0 -9
  292. package/dist/json-config/hooks.js +0 -60
  293. package/dist/json-config/hooks.js.map +0 -1
  294. package/dist/json-config/parser.d.ts +0 -7
  295. package/dist/json-config/parser.js +0 -54
  296. package/dist/json-config/parser.js.map +0 -1
  297. package/dist/menu.d.ts +0 -14
  298. package/dist/menu.js +0 -344
  299. package/dist/menu.js.map +0 -1
  300. package/dist/project-files.d.ts +0 -104
  301. package/dist/project-files.js +0 -621
  302. package/dist/project-files.js.map +0 -1
  303. package/dist/startup-process-handler.d.ts +0 -1
  304. package/dist/startup-process-handler.js +0 -25
  305. package/dist/startup-process-handler.js.map +0 -1
  306. package/dist/terminal/background.d.ts +0 -12
  307. package/dist/terminal/background.js +0 -148
  308. package/dist/terminal/background.js.map +0 -1
  309. package/dist/terminal/base.d.ts +0 -41
  310. package/dist/terminal/base.js +0 -553
  311. package/dist/terminal/base.js.map +0 -1
  312. package/dist/tool-handlers.d.ts +0 -31
  313. package/dist/tool-handlers.js +0 -275
  314. package/dist/tool-handlers.js.map +0 -1
  315. package/dist/types.d.ts +0 -15
  316. package/dist/types.js +0 -3
  317. package/dist/types.js.map +0 -1
  318. package/dist/update-codebuff.d.ts +0 -1
  319. package/dist/update-codebuff.js +0 -169
  320. package/dist/update-codebuff.js.map +0 -1
  321. package/dist/utils/__tests__/background-process-manager.test.d.ts +0 -1
  322. package/dist/utils/__tests__/background-process-manager.test.js +0 -327
  323. package/dist/utils/__tests__/background-process-manager.test.js.map +0 -1
  324. package/dist/utils/__tests__/response-example-4-files.txt +0 -621
  325. package/dist/utils/__tests__/tool-renderers.test.d.ts +0 -1
  326. package/dist/utils/__tests__/tool-renderers.test.js +0 -83
  327. package/dist/utils/__tests__/tool-renderers.test.js.map +0 -1
  328. package/dist/utils/__tests__/xml-stream-parser.test.d.ts +0 -1
  329. package/dist/utils/__tests__/xml-stream-parser.test.js +0 -255
  330. package/dist/utils/__tests__/xml-stream-parser.test.js.map +0 -1
  331. package/dist/utils/analytics.d.ts +0 -7
  332. package/dist/utils/analytics.js +0 -132
  333. package/dist/utils/analytics.js.map +0 -1
  334. package/dist/utils/detect-shell.d.ts +0 -1
  335. package/dist/utils/detect-shell.js +0 -65
  336. package/dist/utils/detect-shell.js.map +0 -1
  337. package/dist/utils/git.d.ts +0 -13
  338. package/dist/utils/git.js +0 -143
  339. package/dist/utils/git.js.map +0 -1
  340. package/dist/utils/logger.d.ts +0 -21
  341. package/dist/utils/logger.js +0 -109
  342. package/dist/utils/logger.js.map +0 -1
  343. package/dist/utils/spinner.d.ts +0 -12
  344. package/dist/utils/spinner.js +0 -85
  345. package/dist/utils/spinner.js.map +0 -1
  346. package/dist/utils/system-info.d.ts +0 -8
  347. package/dist/utils/system-info.js +0 -22
  348. package/dist/utils/system-info.js.map +0 -1
  349. package/dist/utils/tool-renderers.d.ts +0 -16
  350. package/dist/utils/tool-renderers.js +0 -216
  351. package/dist/utils/tool-renderers.js.map +0 -1
  352. package/dist/utils/xml-stream-parser.d.ts +0 -9
  353. package/dist/utils/xml-stream-parser.js +0 -143
  354. package/dist/utils/xml-stream-parser.js.map +0 -1
  355. package/dist/web-scraper.d.ts +0 -3
  356. package/dist/web-scraper.js +0 -59
  357. package/dist/web-scraper.js.map +0 -1
  358. package/dist/workers/checkpoint-worker.d.ts +0 -1
  359. package/dist/workers/checkpoint-worker.js +0 -51
  360. package/dist/workers/checkpoint-worker.js.map +0 -1
  361. package/dist/workers/project-context.d.ts +0 -1
  362. package/dist/workers/project-context.js +0 -27
  363. 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.333",
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: bun:test types aren't available
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":"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"}