codebuff 1.0.334 → 1.0.335

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/index.js +334 -0
  2. package/package.json +23 -72
  3. package/dist/__tests__/display.test.d.ts +0 -1
  4. package/dist/__tests__/display.test.js +0 -174
  5. package/dist/__tests__/display.test.js.map +0 -1
  6. package/dist/__tests__/rage-detectors.test.d.ts +0 -1
  7. package/dist/__tests__/rage-detectors.test.js +0 -127
  8. package/dist/__tests__/rage-detectors.test.js.map +0 -1
  9. package/dist/background-process-manager.d.ts +0 -50
  10. package/dist/background-process-manager.js +0 -364
  11. package/dist/background-process-manager.js.map +0 -1
  12. package/dist/browser-runner.d.ts +0 -35
  13. package/dist/browser-runner.js +0 -689
  14. package/dist/browser-runner.js.map +0 -1
  15. package/dist/chat-storage.d.ts +0 -2
  16. package/dist/chat-storage.js +0 -98
  17. package/dist/chat-storage.js.map +0 -1
  18. package/dist/checkpoints/checkpoint-manager.d.ts +0 -94
  19. package/dist/checkpoints/checkpoint-manager.js +0 -291
  20. package/dist/checkpoints/checkpoint-manager.js.map +0 -1
  21. package/dist/checkpoints/file-manager.d.ts +0 -72
  22. package/dist/checkpoints/file-manager.js +0 -498
  23. package/dist/checkpoints/file-manager.js.map +0 -1
  24. package/dist/cli-definitions.d.ts +0 -9
  25. package/dist/cli-definitions.js +0 -60
  26. package/dist/cli-definitions.js.map +0 -1
  27. package/dist/cli-handlers/api-key.d.ts +0 -25
  28. package/dist/cli-handlers/api-key.js +0 -66
  29. package/dist/cli-handlers/api-key.js.map +0 -1
  30. package/dist/cli-handlers/checkpoint.d.ts +0 -19
  31. package/dist/cli-handlers/checkpoint.js +0 -221
  32. package/dist/cli-handlers/checkpoint.js.map +0 -1
  33. package/dist/cli-handlers/diff.d.ts +0 -2
  34. package/dist/cli-handlers/diff.js +0 -31
  35. package/dist/cli-handlers/diff.js.map +0 -1
  36. package/dist/cli-handlers/easter-egg.d.ts +0 -1
  37. package/dist/cli-handlers/easter-egg.js +0 -126
  38. package/dist/cli-handlers/easter-egg.js.map +0 -1
  39. package/dist/cli-handlers/inititalization-flow.d.ts +0 -1
  40. package/dist/cli-handlers/inititalization-flow.js +0 -25
  41. package/dist/cli-handlers/inititalization-flow.js.map +0 -1
  42. package/dist/cli.d.ts +0 -67
  43. package/dist/cli.js +0 -812
  44. package/dist/cli.js.map +0 -1
  45. package/dist/client.d.ts +0 -91
  46. package/dist/client.js +0 -1112
  47. package/dist/client.js.map +0 -1
  48. package/dist/code-map/languages.d.ts +0 -12
  49. package/dist/code-map/languages.d.ts.map +0 -1
  50. package/dist/code-map/languages.js +0 -130
  51. package/dist/code-map/languages.js.map +0 -1
  52. package/dist/code-map/parse.d.ts +0 -22
  53. package/dist/code-map/parse.d.ts.map +0 -1
  54. package/dist/code-map/parse.js +0 -180
  55. package/dist/code-map/parse.js.map +0 -1
  56. package/dist/code-map/tree-sitter-queries/readme.md +0 -23
  57. package/dist/code-map/tree-sitter-queries/tree-sitter-c-tags.scm +0 -16
  58. package/dist/code-map/tree-sitter-queries/tree-sitter-c_sharp-tags.scm +0 -23
  59. package/dist/code-map/tree-sitter-queries/tree-sitter-cpp-tags.scm +0 -29
  60. package/dist/code-map/tree-sitter-queries/tree-sitter-go-tags.scm +0 -26
  61. package/dist/code-map/tree-sitter-queries/tree-sitter-java-tags.scm +0 -19
  62. package/dist/code-map/tree-sitter-queries/tree-sitter-javascript-tags.scm +0 -16
  63. package/dist/code-map/tree-sitter-queries/tree-sitter-php-tags.scm +0 -23
  64. package/dist/code-map/tree-sitter-queries/tree-sitter-python-tags.scm +0 -12
  65. package/dist/code-map/tree-sitter-queries/tree-sitter-ruby-tags.scm +0 -58
  66. package/dist/code-map/tree-sitter-queries/tree-sitter-rust-tags.scm +0 -26
  67. package/dist/code-map/tree-sitter-queries/tree-sitter-typescript-tags.scm +0 -22
  68. package/dist/code-map/tsconfig.tsbuildinfo +0 -1
  69. package/dist/common/actions.d.ts +0 -1809
  70. package/dist/common/actions.d.ts.map +0 -1
  71. package/dist/common/actions.js +0 -140
  72. package/dist/common/actions.js.map +0 -1
  73. package/dist/common/analytics.d.ts +0 -6
  74. package/dist/common/analytics.d.ts.map +0 -1
  75. package/dist/common/analytics.js +0 -60
  76. package/dist/common/analytics.js.map +0 -1
  77. package/dist/common/api-keys/constants.d.ts +0 -9
  78. package/dist/common/api-keys/constants.d.ts.map +0 -1
  79. package/dist/common/api-keys/constants.js +0 -26
  80. package/dist/common/api-keys/constants.js.map +0 -1
  81. package/dist/common/api-keys/crypto.d.ts +0 -25
  82. package/dist/common/api-keys/crypto.d.ts.map +0 -1
  83. package/dist/common/api-keys/crypto.js +0 -186
  84. package/dist/common/api-keys/crypto.js.map +0 -1
  85. package/dist/common/browser-actions.d.ts +0 -4416
  86. package/dist/common/browser-actions.d.ts.map +0 -1
  87. package/dist/common/browser-actions.js +0 -343
  88. package/dist/common/browser-actions.js.map +0 -1
  89. package/dist/common/constants/analytics-events.d.ts +0 -31
  90. package/dist/common/constants/analytics-events.d.ts.map +0 -1
  91. package/dist/common/constants/analytics-events.js +0 -39
  92. package/dist/common/constants/analytics-events.js.map +0 -1
  93. package/dist/common/constants/grant-priorities.d.ts +0 -3
  94. package/dist/common/constants/grant-priorities.d.ts.map +0 -1
  95. package/dist/common/constants/grant-priorities.js +0 -11
  96. package/dist/common/constants/grant-priorities.js.map +0 -1
  97. package/dist/common/constants/tools.d.ts +0 -19
  98. package/dist/common/constants/tools.d.ts.map +0 -1
  99. package/dist/common/constants/tools.js +0 -45
  100. package/dist/common/constants/tools.js.map +0 -1
  101. package/dist/common/constants.d.ts +0 -149
  102. package/dist/common/constants.d.ts.map +0 -1
  103. package/dist/common/constants.js +0 -234
  104. package/dist/common/constants.js.map +0 -1
  105. package/dist/common/db/drizzle.config.d.ts +0 -3
  106. package/dist/common/db/drizzle.config.d.ts.map +0 -1
  107. package/dist/common/db/drizzle.config.js +0 -17
  108. package/dist/common/db/drizzle.config.js.map +0 -1
  109. package/dist/common/db/index.d.ts +0 -7
  110. package/dist/common/db/index.d.ts.map +0 -1
  111. package/dist/common/db/index.js +0 -35
  112. package/dist/common/db/index.js.map +0 -1
  113. package/dist/common/db/schema.d.ts +0 -2449
  114. package/dist/common/db/schema.d.ts.map +0 -1
  115. package/dist/common/db/schema.js +0 -310
  116. package/dist/common/db/schema.js.map +0 -1
  117. package/dist/common/db/transaction.d.ts +0 -13
  118. package/dist/common/db/transaction.d.ts.map +0 -1
  119. package/dist/common/db/transaction.js +0 -36
  120. package/dist/common/db/transaction.js.map +0 -1
  121. package/dist/common/json-config/__tests__/__snapshots__/stringify-schema.test.js.snap +0 -144
  122. package/dist/common/json-config/__tests__/constants.test.d.ts +0 -2
  123. package/dist/common/json-config/__tests__/constants.test.d.ts.map +0 -1
  124. package/dist/common/json-config/__tests__/constants.test.js +0 -273
  125. package/dist/common/json-config/__tests__/constants.test.js.map +0 -1
  126. package/dist/common/json-config/__tests__/stringify-schema.test.d.ts +0 -2
  127. package/dist/common/json-config/__tests__/stringify-schema.test.d.ts.map +0 -1
  128. package/dist/common/json-config/__tests__/stringify-schema.test.js +0 -66
  129. package/dist/common/json-config/__tests__/stringify-schema.test.js.map +0 -1
  130. package/dist/common/json-config/constants.d.ts +0 -138
  131. package/dist/common/json-config/constants.d.ts.map +0 -1
  132. package/dist/common/json-config/constants.js +0 -78
  133. package/dist/common/json-config/constants.js.map +0 -1
  134. package/dist/common/json-config/default.d.ts +0 -3
  135. package/dist/common/json-config/default.d.ts.map +0 -1
  136. package/dist/common/json-config/default.js +0 -12
  137. package/dist/common/json-config/default.js.map +0 -1
  138. package/dist/common/json-config/stringify-schema.d.ts +0 -10
  139. package/dist/common/json-config/stringify-schema.d.ts.map +0 -1
  140. package/dist/common/json-config/stringify-schema.js +0 -131
  141. package/dist/common/json-config/stringify-schema.js.map +0 -1
  142. package/dist/common/project-file-tree.d.ts +0 -12
  143. package/dist/common/project-file-tree.d.ts.map +0 -1
  144. package/dist/common/project-file-tree.js +0 -212
  145. package/dist/common/project-file-tree.js.map +0 -1
  146. package/dist/common/types/agent-state.d.ts +0 -265
  147. package/dist/common/types/agent-state.d.ts.map +0 -1
  148. package/dist/common/types/agent-state.js +0 -48
  149. package/dist/common/types/agent-state.js.map +0 -1
  150. package/dist/common/types/grant.d.ts +0 -3
  151. package/dist/common/types/grant.d.ts.map +0 -1
  152. package/dist/common/types/grant.js +0 -11
  153. package/dist/common/types/grant.js.map +0 -1
  154. package/dist/common/types/message.d.ts +0 -320
  155. package/dist/common/types/message.d.ts.map +0 -1
  156. package/dist/common/types/message.js +0 -60
  157. package/dist/common/types/message.js.map +0 -1
  158. package/dist/common/types/organization.d.ts +0 -106
  159. package/dist/common/types/organization.d.ts.map +0 -1
  160. package/dist/common/types/organization.js +0 -3
  161. package/dist/common/types/organization.js.map +0 -1
  162. package/dist/common/types/referral.d.ts +0 -3
  163. package/dist/common/types/referral.d.ts.map +0 -1
  164. package/dist/common/types/referral.js +0 -5
  165. package/dist/common/types/referral.js.map +0 -1
  166. package/dist/common/types/tools.d.ts +0 -6
  167. package/dist/common/types/tools.d.ts.map +0 -1
  168. package/dist/common/types/tools.js +0 -3
  169. package/dist/common/types/tools.js.map +0 -1
  170. package/dist/common/types/usage.d.ts +0 -41
  171. package/dist/common/types/usage.d.ts.map +0 -1
  172. package/dist/common/types/usage.js +0 -16
  173. package/dist/common/types/usage.js.map +0 -1
  174. package/dist/common/util/__tests__/messages.test.d.ts +0 -2
  175. package/dist/common/util/__tests__/messages.test.d.ts.map +0 -1
  176. package/dist/common/util/__tests__/messages.test.js +0 -70
  177. package/dist/common/util/__tests__/messages.test.js.map +0 -1
  178. package/dist/common/util/__tests__/saxy.test.d.ts +0 -2
  179. package/dist/common/util/__tests__/saxy.test.d.ts.map +0 -1
  180. package/dist/common/util/__tests__/saxy.test.js +0 -906
  181. package/dist/common/util/__tests__/saxy.test.js.map +0 -1
  182. package/dist/common/util/__tests__/string.test.d.ts +0 -2
  183. package/dist/common/util/__tests__/string.test.d.ts.map +0 -1
  184. package/dist/common/util/__tests__/string.test.js +0 -82
  185. package/dist/common/util/__tests__/string.test.js.map +0 -1
  186. package/dist/common/util/array.d.ts +0 -7
  187. package/dist/common/util/array.d.ts.map +0 -1
  188. package/dist/common/util/array.js +0 -32
  189. package/dist/common/util/array.js.map +0 -1
  190. package/dist/common/util/changes.d.ts +0 -9
  191. package/dist/common/util/changes.d.ts.map +0 -1
  192. package/dist/common/util/changes.js +0 -87
  193. package/dist/common/util/changes.js.map +0 -1
  194. package/dist/common/util/credentials.d.ts +0 -26
  195. package/dist/common/util/credentials.d.ts.map +0 -1
  196. package/dist/common/util/credentials.js +0 -24
  197. package/dist/common/util/credentials.js.map +0 -1
  198. package/dist/common/util/currency.d.ts +0 -15
  199. package/dist/common/util/currency.d.ts.map +0 -1
  200. package/dist/common/util/currency.js +0 -23
  201. package/dist/common/util/currency.js.map +0 -1
  202. package/dist/common/util/dates.d.ts +0 -11
  203. package/dist/common/util/dates.d.ts.map +0 -1
  204. package/dist/common/util/dates.js +0 -22
  205. package/dist/common/util/dates.js.map +0 -1
  206. package/dist/common/util/file.d.ts +0 -171
  207. package/dist/common/util/file.d.ts.map +0 -1
  208. package/dist/common/util/file.js +0 -216
  209. package/dist/common/util/file.js.map +0 -1
  210. package/dist/common/util/git.d.ts +0 -7
  211. package/dist/common/util/git.d.ts.map +0 -1
  212. package/dist/common/util/git.js +0 -81
  213. package/dist/common/util/git.js.map +0 -1
  214. package/dist/common/util/logger.d.ts +0 -9
  215. package/dist/common/util/logger.d.ts.map +0 -1
  216. package/dist/common/util/logger.js +0 -52
  217. package/dist/common/util/logger.js.map +0 -1
  218. package/dist/common/util/lru-cache.d.ts +0 -31
  219. package/dist/common/util/lru-cache.d.ts.map +0 -1
  220. package/dist/common/util/lru-cache.js +0 -68
  221. package/dist/common/util/lru-cache.js.map +0 -1
  222. package/dist/common/util/messages.d.ts +0 -12
  223. package/dist/common/util/messages.d.ts.map +0 -1
  224. package/dist/common/util/messages.js +0 -81
  225. package/dist/common/util/messages.js.map +0 -1
  226. package/dist/common/util/min-heap.d.ts +0 -16
  227. package/dist/common/util/min-heap.d.ts.map +0 -1
  228. package/dist/common/util/min-heap.js +0 -73
  229. package/dist/common/util/min-heap.js.map +0 -1
  230. package/dist/common/util/object.d.ts +0 -19
  231. package/dist/common/util/object.d.ts.map +0 -1
  232. package/dist/common/util/object.js +0 -91
  233. package/dist/common/util/object.js.map +0 -1
  234. package/dist/common/util/patch.d.ts +0 -2
  235. package/dist/common/util/patch.d.ts.map +0 -1
  236. package/dist/common/util/patch.js +0 -215
  237. package/dist/common/util/patch.js.map +0 -1
  238. package/dist/common/util/promise.d.ts +0 -17
  239. package/dist/common/util/promise.d.ts.map +0 -1
  240. package/dist/common/util/promise.js +0 -51
  241. package/dist/common/util/promise.js.map +0 -1
  242. package/dist/common/util/random.d.ts +0 -2
  243. package/dist/common/util/random.d.ts.map +0 -1
  244. package/dist/common/util/random.js +0 -17
  245. package/dist/common/util/random.js.map +0 -1
  246. package/dist/common/util/referral.d.ts +0 -2
  247. package/dist/common/util/referral.d.ts.map +0 -1
  248. package/dist/common/util/referral.js +0 -6
  249. package/dist/common/util/referral.js.map +0 -1
  250. package/dist/common/util/saxy.d.ts +0 -179
  251. package/dist/common/util/saxy.d.ts.map +0 -1
  252. package/dist/common/util/saxy.js +0 -548
  253. package/dist/common/util/saxy.js.map +0 -1
  254. package/dist/common/util/string.d.ts +0 -80
  255. package/dist/common/util/string.d.ts.map +0 -1
  256. package/dist/common/util/string.js +0 -275
  257. package/dist/common/util/string.js.map +0 -1
  258. package/dist/common/util/stripe.d.ts +0 -4
  259. package/dist/common/util/stripe.d.ts.map +0 -1
  260. package/dist/common/util/stripe.js +0 -22
  261. package/dist/common/util/stripe.js.map +0 -1
  262. package/dist/common/util/sync-failure.d.ts +0 -2
  263. package/dist/common/util/sync-failure.d.ts.map +0 -1
  264. package/dist/common/util/sync-failure.js +0 -57
  265. package/dist/common/util/sync-failure.js.map +0 -1
  266. package/dist/common/websockets/websocket-client.d.ts +0 -43
  267. package/dist/common/websockets/websocket-client.d.ts.map +0 -1
  268. package/dist/common/websockets/websocket-client.js +0 -216
  269. package/dist/common/websockets/websocket-client.js.map +0 -1
  270. package/dist/common/websockets/websocket-schema.d.ts +0 -3679
  271. package/dist/common/websockets/websocket-schema.d.ts.map +0 -1
  272. package/dist/common/websockets/websocket-schema.js +0 -55
  273. package/dist/common/websockets/websocket-schema.js.map +0 -1
  274. package/dist/config.d.ts +0 -4
  275. package/dist/config.js +0 -12
  276. package/dist/config.js.map +0 -1
  277. package/dist/create-template-project.d.ts +0 -1
  278. package/dist/create-template-project.js +0 -131
  279. package/dist/create-template-project.js.map +0 -1
  280. package/dist/credentials.d.ts +0 -4
  281. package/dist/credentials.js +0 -44
  282. package/dist/credentials.js.map +0 -1
  283. package/dist/dev-process-manager.d.ts +0 -10
  284. package/dist/dev-process-manager.js +0 -56
  285. package/dist/dev-process-manager.js.map +0 -1
  286. package/dist/display.d.ts +0 -9
  287. package/dist/display.js +0 -137
  288. package/dist/display.js.map +0 -1
  289. package/dist/fingerprint.d.ts +0 -1
  290. package/dist/fingerprint.js +0 -48
  291. package/dist/fingerprint.js.map +0 -1
  292. package/dist/index.d.ts +0 -2
  293. package/dist/index.js +0 -128
  294. package/dist/index.js.map +0 -1
  295. package/dist/json-config/hooks.d.ts +0 -9
  296. package/dist/json-config/hooks.js +0 -60
  297. package/dist/json-config/hooks.js.map +0 -1
  298. package/dist/json-config/parser.d.ts +0 -7
  299. package/dist/json-config/parser.js +0 -54
  300. package/dist/json-config/parser.js.map +0 -1
  301. package/dist/menu.d.ts +0 -14
  302. package/dist/menu.js +0 -344
  303. package/dist/menu.js.map +0 -1
  304. package/dist/project-files.d.ts +0 -104
  305. package/dist/project-files.js +0 -621
  306. package/dist/project-files.js.map +0 -1
  307. package/dist/rage-detectors.d.ts +0 -15
  308. package/dist/rage-detectors.js +0 -55
  309. package/dist/rage-detectors.js.map +0 -1
  310. package/dist/startup-process-handler.d.ts +0 -1
  311. package/dist/startup-process-handler.js +0 -25
  312. package/dist/startup-process-handler.js.map +0 -1
  313. package/dist/terminal/background.d.ts +0 -12
  314. package/dist/terminal/background.js +0 -148
  315. package/dist/terminal/background.js.map +0 -1
  316. package/dist/terminal/base.d.ts +0 -41
  317. package/dist/terminal/base.js +0 -553
  318. package/dist/terminal/base.js.map +0 -1
  319. package/dist/tool-handlers.d.ts +0 -31
  320. package/dist/tool-handlers.js +0 -275
  321. package/dist/tool-handlers.js.map +0 -1
  322. package/dist/types.d.ts +0 -15
  323. package/dist/types.js +0 -3
  324. package/dist/types.js.map +0 -1
  325. package/dist/update-codebuff.d.ts +0 -1
  326. package/dist/update-codebuff.js +0 -169
  327. package/dist/update-codebuff.js.map +0 -1
  328. package/dist/utils/__tests__/background-process-manager.test.d.ts +0 -1
  329. package/dist/utils/__tests__/background-process-manager.test.js +0 -326
  330. package/dist/utils/__tests__/background-process-manager.test.js.map +0 -1
  331. package/dist/utils/__tests__/rage-detector.test.d.ts +0 -1
  332. package/dist/utils/__tests__/rage-detector.test.js +0 -450
  333. package/dist/utils/__tests__/rage-detector.test.js.map +0 -1
  334. package/dist/utils/__tests__/response-example-4-files.txt +0 -621
  335. package/dist/utils/__tests__/tool-renderers.test.d.ts +0 -1
  336. package/dist/utils/__tests__/tool-renderers.test.js +0 -83
  337. package/dist/utils/__tests__/tool-renderers.test.js.map +0 -1
  338. package/dist/utils/__tests__/xml-stream-parser.test.d.ts +0 -1
  339. package/dist/utils/__tests__/xml-stream-parser.test.js +0 -255
  340. package/dist/utils/__tests__/xml-stream-parser.test.js.map +0 -1
  341. package/dist/utils/analytics.d.ts +0 -7
  342. package/dist/utils/analytics.js +0 -132
  343. package/dist/utils/analytics.js.map +0 -1
  344. package/dist/utils/detect-shell.d.ts +0 -1
  345. package/dist/utils/detect-shell.js +0 -65
  346. package/dist/utils/detect-shell.js.map +0 -1
  347. package/dist/utils/git.d.ts +0 -13
  348. package/dist/utils/git.js +0 -143
  349. package/dist/utils/git.js.map +0 -1
  350. package/dist/utils/logger.d.ts +0 -21
  351. package/dist/utils/logger.js +0 -109
  352. package/dist/utils/logger.js.map +0 -1
  353. package/dist/utils/rage-detector.d.ts +0 -32
  354. package/dist/utils/rage-detector.js +0 -143
  355. package/dist/utils/rage-detector.js.map +0 -1
  356. package/dist/utils/spinner.d.ts +0 -13
  357. package/dist/utils/spinner.js +0 -94
  358. package/dist/utils/spinner.js.map +0 -1
  359. package/dist/utils/system-info.d.ts +0 -8
  360. package/dist/utils/system-info.js +0 -22
  361. package/dist/utils/system-info.js.map +0 -1
  362. package/dist/utils/tool-renderers.d.ts +0 -16
  363. package/dist/utils/tool-renderers.js +0 -216
  364. package/dist/utils/tool-renderers.js.map +0 -1
  365. package/dist/utils/with-hang-detection.d.ts +0 -1
  366. package/dist/utils/with-hang-detection.js +0 -18
  367. package/dist/utils/with-hang-detection.js.map +0 -1
  368. package/dist/utils/xml-stream-parser.d.ts +0 -9
  369. package/dist/utils/xml-stream-parser.js +0 -143
  370. package/dist/utils/xml-stream-parser.js.map +0 -1
  371. package/dist/web-scraper.d.ts +0 -3
  372. package/dist/web-scraper.js +0 -59
  373. package/dist/web-scraper.js.map +0 -1
  374. package/dist/workers/checkpoint-worker.d.ts +0 -1
  375. package/dist/workers/checkpoint-worker.js +0 -51
  376. package/dist/workers/checkpoint-worker.js.map +0 -1
  377. package/dist/workers/project-context.d.ts +0 -1
  378. package/dist/workers/project-context.js +0 -27
  379. package/dist/workers/project-context.js.map +0 -1
@@ -1,275 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stripNullChars = exports.generateCompactId = exports.transformJsonInString = exports.hasLazyEdit = exports.safeReplace = exports.ensureUrlProtocol = exports.snakeToTitleCase = exports.capitalize = exports.pluralize = exports.randBoolFromStr = exports.replaceNonStandardPlaceholderComments = exports.isWhitespace = exports.truncateStringWithMessage = exports.truncateString = void 0;
4
- exports.stripColors = stripColors;
5
- exports.stripAnsi = stripAnsi;
6
- exports.includesMatch = includesMatch;
7
- exports.suffixPrefixOverlap = suffixPrefixOverlap;
8
- const lodash_1 = require("lodash");
9
- const truncateString = (str, maxLength) => {
10
- if (str.length <= maxLength) {
11
- return str;
12
- }
13
- return str.slice(0, maxLength) + '...';
14
- };
15
- exports.truncateString = truncateString;
16
- const truncateStringWithMessage = ({ str, maxLength, message = 'TRUNCATED DUE TO LENGTH', remove = 'END', }) => {
17
- if (str.length <= maxLength) {
18
- return str;
19
- }
20
- if (remove === 'END') {
21
- const suffix = `\n[${message}...]`;
22
- return str.slice(0, maxLength - suffix.length) + suffix;
23
- }
24
- if (remove === 'START') {
25
- const prefix = `[...${message}]\n`;
26
- return prefix + str.slice(str.length - maxLength + prefix.length);
27
- }
28
- const middle = `\n[...${message}...]\n`;
29
- const length = Math.floor((maxLength - middle.length) / 2);
30
- return str.slice(0, length) + middle + str.slice(-length);
31
- };
32
- exports.truncateStringWithMessage = truncateStringWithMessage;
33
- /**
34
- * Check if a character is a whitespace character according
35
- * to the XML spec (space, carriage return, line feed or tab)
36
- *
37
- * @param character Character to check
38
- * @return Whether the character is whitespace or not
39
- */
40
- const isWhitespace = (character) => /\s/.test(character);
41
- exports.isWhitespace = isWhitespace;
42
- const replaceNonStandardPlaceholderComments = (content, replacement) => {
43
- const commentPatterns = [
44
- // JSX comments (match this first)
45
- {
46
- regex: /{\s*\/\*\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?\s*\*\/\s*}/gi,
47
- placeholder: replacement,
48
- },
49
- // C-style comments (C, C++, Java, JavaScript, TypeScript, etc.)
50
- {
51
- regex: /\/\/\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?/gi,
52
- placeholder: replacement,
53
- },
54
- {
55
- regex: /\/\*\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?\s*\*\//gi,
56
- placeholder: replacement,
57
- },
58
- // Python, Ruby, R comments
59
- {
60
- regex: /#\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?/gi,
61
- placeholder: replacement,
62
- },
63
- // HTML-style comments
64
- {
65
- regex: /<!--\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?\s*-->/gi,
66
- placeholder: replacement,
67
- },
68
- // SQL, Haskell, Lua comments
69
- {
70
- regex: /--\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?/gi,
71
- placeholder: replacement,
72
- },
73
- // MATLAB comments
74
- {
75
- regex: /%\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\s*\.{3})?/gi,
76
- placeholder: replacement,
77
- },
78
- ];
79
- let updatedContent = content;
80
- for (const { regex, placeholder } of commentPatterns) {
81
- updatedContent = updatedContent.replaceAll(regex, placeholder);
82
- }
83
- return updatedContent;
84
- };
85
- exports.replaceNonStandardPlaceholderComments = replaceNonStandardPlaceholderComments;
86
- const randBoolFromStr = (str) => {
87
- return (0, lodash_1.sumBy)(str.split(''), (char) => char.charCodeAt(0)) % 2 === 0;
88
- };
89
- exports.randBoolFromStr = randBoolFromStr;
90
- const pluralize = (count, word) => {
91
- if (count === 1)
92
- return `${count} ${word}`;
93
- // Handle words ending in 'y' (unless preceded by a vowel)
94
- if (word.endsWith('y') && !word.match(/[aeiou]y$/)) {
95
- return `${count} ${word.slice(0, -1) + 'ies'}`;
96
- }
97
- // Handle words ending in s, sh, ch, x, z, o
98
- if (word.match(/[sxz]$/) || word.match(/[cs]h$/) || word.match(/o$/)) {
99
- return `${count} ${word + 'es'}`;
100
- }
101
- // Handle words ending in f/fe
102
- if (word.endsWith('f')) {
103
- return `${count} ${word.slice(0, -1) + 'ves'}`;
104
- }
105
- if (word.endsWith('fe')) {
106
- return `${count} ${word.slice(0, -2) + 'ves'}`;
107
- }
108
- return `${count} ${word + 's'}`;
109
- };
110
- exports.pluralize = pluralize;
111
- /**
112
- * Safely replaces all occurrences of a search string with a replacement string,
113
- * escaping special replacement patterns (like $) in the replacement string.
114
- */
115
- const capitalize = (str) => {
116
- if (!str)
117
- return str;
118
- return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
119
- };
120
- exports.capitalize = capitalize;
121
- /**
122
- * Converts a snake_case string to Title Case
123
- * Example: "add_subgoal" -> "Add Subgoal"
124
- */
125
- const snakeToTitleCase = (str) => {
126
- return str
127
- .split('_')
128
- .map((word) => (0, exports.capitalize)(word))
129
- .join(' ');
130
- };
131
- exports.snakeToTitleCase = snakeToTitleCase;
132
- /**
133
- * Ensures a URL has the appropriate protocol (http:// or https://)
134
- * Uses http:// for localhost and local IPs, https:// for all other domains
135
- */
136
- const ensureUrlProtocol = (url) => {
137
- if (url.startsWith('http://') ||
138
- url.startsWith('https://') ||
139
- url.startsWith('file://')) {
140
- return url;
141
- }
142
- if (url.startsWith('localhost') || url.match(/^127\.\d+\.\d+\.\d+/)) {
143
- return `http://${url}`;
144
- }
145
- if (url.startsWith('/')) {
146
- return `file://${url}`;
147
- }
148
- return `https://${url}`;
149
- };
150
- exports.ensureUrlProtocol = ensureUrlProtocol;
151
- const safeReplace = (content, searchStr, replaceStr) => {
152
- const escapedReplaceStr = replaceStr.replace(/\$/g, '$$$$');
153
- return content.replace(searchStr, escapedReplaceStr);
154
- };
155
- exports.safeReplace = safeReplace;
156
- const hasLazyEdit = (content) => {
157
- const cleanedContent = content.toLowerCase().trim();
158
- return (cleanedContent.includes('... existing code ...') ||
159
- cleanedContent.includes('// rest of the') ||
160
- cleanedContent.includes('# rest of the') ||
161
- // Match various comment styles with ellipsis and specific words
162
- /\/\/\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\.{3})?/.test(cleanedContent) || // C-style single line
163
- /\/\*\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\.{3})?\s*\*\//.test(cleanedContent) || // C-style multi-line
164
- /#\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\.{3})?/.test(cleanedContent) || // Python/Ruby style
165
- /<!--\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\.{3})?\s*-->/.test(cleanedContent) || // HTML style
166
- /--\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\.{3})?/.test(cleanedContent) || // SQL/Haskell style
167
- /%\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\.{3})?/.test(cleanedContent) || // MATLAB style
168
- /{\s*\/\*\s*\.{3}.*(?:rest|unchanged|keep|file|existing|some).*(?:\.{3})?\s*\*\/\s*}/.test(cleanedContent) // JSX style
169
- );
170
- };
171
- exports.hasLazyEdit = hasLazyEdit;
172
- /**
173
- * Extracts a JSON field from a string, transforms it, and puts it back.
174
- * Handles both array and object JSON values.
175
- * @param content The string containing JSON-like content
176
- * @param field The field name to find and transform
177
- * @param transform Function to transform the parsed JSON value
178
- * @param fallback String to use if parsing fails
179
- * @returns The content string with the transformed JSON field
180
- */
181
- const transformJsonInString = (content, field, transform, fallback) => {
182
- // Use a non-greedy match for objects/arrays to prevent over-matching
183
- const pattern = new RegExp(`"${field}"\\s*:\\s*(\\{[^}]*?\\}|\\[[^\\]]*?\\])`);
184
- const match = content.match(pattern);
185
- if (!match) {
186
- return content;
187
- }
188
- try {
189
- const json = JSON.parse(match[1]);
190
- const transformed = transform(json);
191
- // Important: Only replace the exact matched portion to prevent duplicates
192
- return content.replace(match[0], `"${field}":${JSON.stringify(transformed)}`);
193
- }
194
- catch (error) {
195
- // Only replace the exact matched portion even in error case
196
- return content.replace(match[0], `"${field}":${fallback}`);
197
- }
198
- };
199
- exports.transformJsonInString = transformJsonInString;
200
- /**
201
- * Generates a compact unique identifier by combining timestamp bits with random bits.
202
- * Uses 40 bits of timestamp (enough for ~34 years) and 24 random bits for exactly 64 total bits.
203
- * Encodes in base64url for compact, URL-safe strings (~11 chars).
204
- * @param prefix Optional prefix to add to the ID
205
- * @returns A unique string ID
206
- * @example
207
- * generateCompactId() // => "1a2b3c4d5e6"
208
- * generateCompactId('msg-') // => "msg-1a2b3c4d5e6"
209
- */
210
- const generateCompactId = (prefix) => {
211
- // Get the last 32 bits of the timestamp
212
- const timestamp = (Date.now() & 0xffffffff) >>> 0;
213
- // Generate a 32-bit random number
214
- const random = Math.floor(Math.random() * 0x100000000) >>> 0;
215
- // Combine them into a 64-bit representation as two 32-bit numbers
216
- const high = timestamp;
217
- const low = random;
218
- // Convert to a hex string, pad if necessary, and combine
219
- const highHex = high.toString(16).padStart(8, '0');
220
- const lowHex = low.toString(16).padStart(8, '0');
221
- const combinedHex = highHex + lowHex;
222
- // Convert hex to a Buffer and then to base64url
223
- const bytes = Buffer.from(combinedHex, 'hex');
224
- const str = bytes.toString('base64url').replace(/=/g, '');
225
- return prefix ? `${prefix}${str}` : str;
226
- };
227
- exports.generateCompactId = generateCompactId;
228
- /**
229
- * Removes null characters from a string
230
- */
231
- const stripNullChars = (str) => {
232
- return str.replace(/\u0000/g, '');
233
- };
234
- exports.stripNullChars = stripNullChars;
235
- const ansiColorsRegex = /\x1B\[[0-9;]*m/g;
236
- function stripColors(str) {
237
- return str.replace(ansiColorsRegex, '');
238
- }
239
- const ansiRegex = /\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~]|\][^\x1B]*\x1B\\?)/g;
240
- function stripAnsi(str) {
241
- return str.replace(ansiRegex, '');
242
- }
243
- function includesMatch(array, value) {
244
- return array.some((p) => {
245
- if (typeof p === 'string') {
246
- return p === value;
247
- }
248
- return p.test(value);
249
- });
250
- }
251
- /**
252
- * Finds the longest substring that is **both** a suffix of `source`
253
- * **and** a prefix of `next`.
254
- * Useful when concatenating strings while avoiding duplicate overlap.
255
- *
256
- * @example
257
- * ```ts
258
- * suffixPrefixOverlap('foobar', 'barbaz'); // ➜ 'bar'
259
- * suffixPrefixOverlap('abc', 'def'); // ➜ ''
260
- * ```
261
- *
262
- * @param source The string whose **suffix** is inspected.
263
- * @param next The string whose **prefix** is inspected.
264
- * @returns The longest overlapping edge, or an empty string if none exists.
265
- */
266
- function suffixPrefixOverlap(source, next) {
267
- for (let len = next.length; len > 0; len--) {
268
- const prefix = next.slice(0, len);
269
- if (source.endsWith(prefix)) {
270
- return prefix;
271
- }
272
- }
273
- return '';
274
- }
275
- //# sourceMappingURL=string.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string.js","sourceRoot":"","sources":["../../src/util/string.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import Stripe from 'stripe';
2
- export declare const stripeServer: Stripe;
3
- export declare function getCurrentSubscription(customerId: string): Promise<Stripe.Subscription>;
4
- //# sourceMappingURL=stripe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stripe.d.ts","sourceRoot":"","sources":["../../src/util/stripe.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAG3B,eAAO,MAAM,YAAY,QAGvB,CAAA;AAEF,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,gCAO9D"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.stripeServer = void 0;
7
- exports.getCurrentSubscription = getCurrentSubscription;
8
- const stripe_1 = __importDefault(require("stripe"));
9
- const env_1 = require("@/env");
10
- exports.stripeServer = new stripe_1.default(env_1.env.STRIPE_SECRET_KEY, {
11
- apiVersion: '2024-06-20',
12
- typescript: true,
13
- });
14
- async function getCurrentSubscription(customerId) {
15
- const subscriptions = await exports.stripeServer.subscriptions.list({
16
- customer: customerId,
17
- status: 'active',
18
- limit: 1,
19
- });
20
- return subscriptions.data[0];
21
- }
22
- //# sourceMappingURL=stripe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stripe.js","sourceRoot":"","sources":["../../src/util/stripe.ts"],"names":[],"mappings":";;;;;;AAQA,wDAOC;AAfD,oDAA2B;AAC3B,+BAA2B;AAEd,QAAA,YAAY,GAAG,IAAI,gBAAM,CAAC,SAAG,CAAC,iBAAiB,EAAE;IAC5D,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,IAAI;CACjB,CAAC,CAAA;AAEK,KAAK,UAAU,sBAAsB,CAAC,UAAkB;IAC7D,MAAM,aAAa,GAAG,MAAM,oBAAY,CAAC,aAAa,CAAC,IAAI,CAAC;QAC1D,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,CAAC;KACT,CAAC,CAAA;IACF,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC9B,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function logSyncFailure(id: string, errorMessage: string, provider?: string): Promise<void>;
2
- //# sourceMappingURL=sync-failure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-failure.d.ts","sourceRoot":"","sources":["../../src/util/sync-failure.ts"],"names":[],"mappings":"AAKA,wBAAsB,cAAc,CAClC,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,EACpB,QAAQ,SAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -1,57 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.logSyncFailure = logSyncFailure;
30
- const drizzle_orm_1 = require("drizzle-orm");
31
- const db_1 = __importDefault(require("../db"));
32
- const schema = __importStar(require("../db/schema"));
33
- const logger_1 = require("./logger");
34
- async function logSyncFailure(id, errorMessage, provider = 'stripe') {
35
- try {
36
- await db_1.default
37
- .insert(schema.syncFailure)
38
- .values({
39
- message_id: id,
40
- provider,
41
- last_error: errorMessage,
42
- last_attempt_at: new Date(),
43
- })
44
- .onConflictDoUpdate({
45
- target: schema.syncFailure.message_id,
46
- set: {
47
- last_error: errorMessage,
48
- last_attempt_at: new Date(),
49
- retry_count: (0, drizzle_orm_1.sql) `${schema.syncFailure.retry_count} + 1`,
50
- },
51
- });
52
- }
53
- catch (dbError) {
54
- logger_1.logger.error({ id, provider, error: dbError }, 'Failed to log sync failure to database.');
55
- }
56
- }
57
- //# sourceMappingURL=sync-failure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync-failure.js","sourceRoot":"","sources":["../../src/util/sync-failure.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wCA4BC;AAjCD,6CAAiC;AACjC,+CAAsB;AACtB,qDAAsC;AACtC,qCAAiC;AAE1B,KAAK,UAAU,cAAc,CAClC,EAAU,EACV,YAAoB,EACpB,QAAQ,GAAG,QAAQ;IAEnB,IAAI,CAAC;QACH,MAAM,YAAE;aACL,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;aAC1B,MAAM,CAAC;YACN,UAAU,EAAE,EAAE;YACd,QAAQ;YACR,UAAU,EAAE,YAAY;YACxB,eAAe,EAAE,IAAI,IAAI,EAAE;SAC5B,CAAC;aACD,kBAAkB,CAAC;YAClB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU;YACrC,GAAG,EAAE;gBACH,UAAU,EAAE,YAAY;gBACxB,eAAe,EAAE,IAAI,IAAI,EAAE;gBAC3B,WAAW,EAAE,IAAA,iBAAG,EAAA,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,MAAM;aACxD;SACF,CAAC,CAAA;IACN,CAAC;IAAC,OAAO,OAAO,EAAE,CAAC;QACjB,eAAM,CAAC,KAAK,CACV,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAChC,yCAAyC,CAC1C,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -1,43 +0,0 @@
1
- import { WebSocket } from 'ws';
2
- import { ClientAction, ServerAction } from '../actions';
3
- import { ClientMessage, ClientMessageType, ServerMessage } from './websocket-schema';
4
- type ConnectingState = typeof WebSocket.CONNECTING;
5
- type OpenState = typeof WebSocket.OPEN;
6
- type ClosingState = typeof WebSocket.CLOSING;
7
- type ClosedState = typeof WebSocket.CLOSED;
8
- export type ReadyState = OpenState | ConnectingState | ClosedState | ClosingState;
9
- export declare function formatState(state: ReadyState): "connecting" | "open" | "closing" | "closed";
10
- type OutstandingTxn = {
11
- resolve: () => void;
12
- reject: (err: Error) => void;
13
- timeout?: any;
14
- };
15
- /** Client for the API websocket realtime server. Automatically manages reconnection
16
- * and resubscription on disconnect, and allows subscribers to get a callback
17
- * when something is broadcasted. */
18
- export declare class APIRealtimeClient {
19
- ws: WebSocket;
20
- url: string;
21
- subscribers: Map<ServerAction['type'], ((action: ServerAction) => void)[]>;
22
- txid: number;
23
- txns: Map<number, OutstandingTxn>;
24
- connectTimeout?: any;
25
- heartbeat?: any;
26
- hadError: boolean;
27
- onError: () => void;
28
- onReconnect: () => void;
29
- constructor(url: string, onError: () => void, onReconnect: () => void);
30
- get state(): ReadyState;
31
- close(): void;
32
- connect(): Promise<void>;
33
- waitAndReconnect(): void;
34
- forceReconnect(): void;
35
- receiveMessage(msg: ServerMessage): void;
36
- sendMessage<T extends ClientMessageType>(type: T, data: Omit<ClientMessage<T>, 'type' | 'txid'>): Promise<void>;
37
- sendAction(action: ClientAction): Promise<void>;
38
- subscribe<T extends ServerAction['type']>(action: T, callback: (action: Extract<ServerAction, {
39
- type: T;
40
- }>) => void): () => void;
41
- }
42
- export {};
43
- //# sourceMappingURL=websocket-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/websockets/websocket-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAE9B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AACvD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,EACd,MAAM,oBAAoB,CAAA;AAS3B,KAAK,eAAe,GAAG,OAAO,SAAS,CAAC,UAAU,CAAA;AAClD,KAAK,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AACtC,KAAK,YAAY,GAAG,OAAO,SAAS,CAAC,OAAO,CAAA;AAC5C,KAAK,WAAW,GAAG,OAAO,SAAS,CAAC,MAAM,CAAA;AAE1C,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,eAAe,GACf,WAAW,GACX,YAAY,CAAA;AAEhB,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,gDAa5C;AAED,KAAK,cAAc,GAAG;IACpB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAA;IAC5B,OAAO,CAAC,EAAE,GAAG,CAAA;CACd,CAAA;AAED;;oCAEoC;AACpC,qBAAa,iBAAiB;IAC5B,EAAE,EAAG,SAAS,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IAEX,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC,EAAE,CAAC,CAAA;IAC1E,IAAI,EAAE,MAAM,CAAA;IAEZ,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACjC,cAAc,CAAC,EAAE,GAAG,CAAA;IACpB,SAAS,CAAC,EAAE,GAAG,CAAA;IACf,QAAQ,UAAQ;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,WAAW,EAAE,MAAM,IAAI,CAAA;gBAEX,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,EAAE,WAAW,EAAE,MAAM,IAAI;IASrE,IAAI,KAAK,IACsB,UAAU,CACxC;IAED,KAAK;IAKL,OAAO;IA2DP,gBAAgB;IAShB,cAAc;IAcd,cAAc,CAAC,GAAG,EAAE,aAAa;IAoC3B,WAAW,CAAC,CAAC,SAAS,iBAAiB,EAC3C,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAsBzC,UAAU,CAAC,MAAM,EAAE,YAAY;IAwBrC,SAAS,CAAC,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,EACtC,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,KAAK,IAAI;CAajE"}
@@ -1,216 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.APIRealtimeClient = void 0;
4
- exports.formatState = formatState;
5
- const ws_1 = require("ws");
6
- // mqp: useful for debugging
7
- const VERBOSE_LOGGING = false;
8
- const TIMEOUT_MS = 120_000;
9
- const RECONNECT_WAIT_MS = 5_000;
10
- function formatState(state) {
11
- switch (state) {
12
- case ws_1.WebSocket.CONNECTING:
13
- return 'connecting';
14
- case ws_1.WebSocket.OPEN:
15
- return 'open';
16
- case ws_1.WebSocket.CLOSING:
17
- return 'closing';
18
- case ws_1.WebSocket.CLOSED:
19
- return 'closed';
20
- default:
21
- throw new Error('Invalid websocket state.');
22
- }
23
- }
24
- /** Client for the API websocket realtime server. Automatically manages reconnection
25
- * and resubscription on disconnect, and allows subscribers to get a callback
26
- * when something is broadcasted. */
27
- class APIRealtimeClient {
28
- ws;
29
- url;
30
- // Callbacks subscribed to individual actions.
31
- subscribers;
32
- txid;
33
- // all txns that are in flight, with no ack/error/timeout
34
- txns;
35
- connectTimeout;
36
- heartbeat;
37
- hadError = false;
38
- onError;
39
- onReconnect;
40
- constructor(url, onError, onReconnect) {
41
- this.url = url;
42
- this.txid = 0;
43
- this.txns = new Map();
44
- this.subscribers = new Map();
45
- this.onError = onError;
46
- this.onReconnect = onReconnect;
47
- }
48
- get state() {
49
- return this.ws.readyState;
50
- }
51
- close() {
52
- this.ws.close(1000, 'Closed manually.');
53
- clearTimeout(this.connectTimeout);
54
- }
55
- connect() {
56
- // you may wish to refer to https://websockets.spec.whatwg.org/
57
- // in order to check the semantics of events etc.
58
- this.ws = new ws_1.WebSocket(this.url);
59
- this.ws.onmessage = (ev) => {
60
- if (this.hadError) {
61
- this.hadError = false;
62
- this.onReconnect();
63
- }
64
- this.receiveMessage(JSON.parse(ev.data));
65
- };
66
- this.ws.onerror = (ev) => {
67
- if (!this.hadError) {
68
- this.onError();
69
- this.hadError = true;
70
- }
71
- // this can fire without an onclose if this is the first time we ever try
72
- // to connect, so we need to turn on our reconnect in that case
73
- this.waitAndReconnect();
74
- };
75
- this.ws.onclose = (ev) => {
76
- // note that if the connection closes due to an error, onerror fires and then this
77
- if (VERBOSE_LOGGING) {
78
- console.info(`API websocket closed with code=${ev.code}: ${ev.reason}`);
79
- }
80
- clearInterval(this.heartbeat);
81
- // mqp: we might need to change how the txn stuff works if we ever want to
82
- // implement "wait until i am subscribed, and then do something" in a component.
83
- // right now it cannot be reliably used to detect that in the presence of reconnects
84
- for (const txn of Array.from(this.txns.values())) {
85
- clearTimeout(txn.timeout);
86
- // NOTE (James): Don't throw an error when the websocket is closed...
87
- // This seems to be happening, but the client can recover.
88
- txn.resolve();
89
- // txn.reject(new Error('Websocket was closed.'))
90
- }
91
- this.txns.clear();
92
- // 1000 is RFC code for normal on-purpose closure
93
- if (ev.code !== 1000) {
94
- this.waitAndReconnect();
95
- }
96
- };
97
- return new Promise((resolve) => {
98
- this.ws.onopen = (_ev) => {
99
- if (VERBOSE_LOGGING) {
100
- console.info('API websocket opened.');
101
- }
102
- this.heartbeat = setInterval(async () => this.sendMessage('ping', {}).catch(() => { }), 30000);
103
- resolve();
104
- };
105
- });
106
- }
107
- waitAndReconnect() {
108
- if (this.connectTimeout == null) {
109
- this.connectTimeout = setTimeout(() => {
110
- this.connectTimeout = undefined;
111
- this.connect();
112
- }, RECONNECT_WAIT_MS);
113
- }
114
- }
115
- forceReconnect() {
116
- // Close the current connection if it's open
117
- if (this.ws && this.state !== ws_1.WebSocket.CLOSED) {
118
- this.ws.close(1000, 'Forced reconnection due to server shutdown notice');
119
- }
120
- // Immediately attempt to reconnect
121
- this.connect().catch((err) => {
122
- console.error('Failed to reconnect after server shutdown notice:', err);
123
- // Still set up delayed reconnect as fallback
124
- this.waitAndReconnect();
125
- });
126
- }
127
- receiveMessage(msg) {
128
- if (VERBOSE_LOGGING) {
129
- console.info('< Incoming API websocket message: ', msg);
130
- }
131
- switch (msg.type) {
132
- case 'action': {
133
- const action = msg.data;
134
- const subscribers = this.subscribers.get(action.type) ?? [];
135
- for (const callback of subscribers) {
136
- callback(action);
137
- }
138
- return;
139
- }
140
- case 'ack': {
141
- if (msg.txid != null) {
142
- const txn = this.txns.get(msg.txid);
143
- if (txn == null) {
144
- // mqp: only reason this should happen is getting an ack after timeout
145
- console.warn(`Websocket message with old txid=${msg.txid}.`);
146
- }
147
- else {
148
- clearTimeout(txn.timeout);
149
- if (msg.error != null) {
150
- txn.reject(new Error(msg.error));
151
- }
152
- else {
153
- txn.resolve();
154
- }
155
- this.txns.delete(msg.txid);
156
- }
157
- }
158
- return;
159
- }
160
- default:
161
- console.warn(`Unknown API websocket message type received: ${msg}`);
162
- }
163
- }
164
- async sendMessage(type, data) {
165
- if (VERBOSE_LOGGING) {
166
- console.info(`> Outgoing API websocket ${type} message: `, data);
167
- }
168
- if (this.state === ws_1.WebSocket.OPEN) {
169
- return new Promise((resolve, reject) => {
170
- const txid = this.txid++;
171
- const timeout = setTimeout(() => {
172
- this.txns.delete(txid);
173
- reject(new Error(`Websocket message with txid ${txid} timed out.`));
174
- }, TIMEOUT_MS);
175
- this.txns.set(txid, { resolve, reject, timeout });
176
- this.ws.send(JSON.stringify({ type, txid, ...data }));
177
- });
178
- }
179
- else {
180
- // expected if components in the code try to subscribe or unsubscribe
181
- // while the socket is closed -- in this case we expect to get the state
182
- // fixed up in the websocket onopen handler when we reconnect
183
- }
184
- }
185
- async sendAction(action) {
186
- try {
187
- return await this.sendMessage('action', {
188
- data: action,
189
- });
190
- }
191
- catch (e) {
192
- // Print the error message for debugging.
193
- console.error('Error sending action:', action.type, typeof e === 'object' && e !== null && 'message' in e ? e.message : e);
194
- console.log();
195
- console.log('Codebuff is exiting due to an error.');
196
- console.log('Make sure you are on the latest version of Codebuff!');
197
- console.log('-----------------------------------');
198
- console.log('Please run: npm install -g codebuff');
199
- console.log('-----------------------------------');
200
- process.exit(1);
201
- }
202
- }
203
- subscribe(action, callback) {
204
- const currSubscribers = this.subscribers.get(action) ?? [];
205
- this.subscribers.set(action, [
206
- ...currSubscribers,
207
- callback,
208
- ]);
209
- return () => {
210
- const newSubscribers = currSubscribers.filter((cb) => cb !== callback);
211
- this.subscribers.set(action, newSubscribers);
212
- };
213
- }
214
- }
215
- exports.APIRealtimeClient = APIRealtimeClient;
216
- //# sourceMappingURL=websocket-client.js.map