factory-factory 0.1.0

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 (655) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +177 -0
  3. package/dist/client/assets/_baseUniq-CEWTr5A3.js +1 -0
  4. package/dist/client/assets/arc-BT6PnV3g.js +1 -0
  5. package/dist/client/assets/architectureDiagram-VXUJARFQ-BTQ09GhI.js +36 -0
  6. package/dist/client/assets/blockDiagram-VD42YOAC-CSTIi_S_.js +122 -0
  7. package/dist/client/assets/c4Diagram-YG6GDRKO-BJwO03Pg.js +10 -0
  8. package/dist/client/assets/channel-DZXx08Q5.js +1 -0
  9. package/dist/client/assets/chunk-4BX2VUAB-DvhKC4oO.js +1 -0
  10. package/dist/client/assets/chunk-55IACEB6-DKnQAkk-.js +1 -0
  11. package/dist/client/assets/chunk-B4BG7PRW-DI470WJo.js +165 -0
  12. package/dist/client/assets/chunk-DI55MBZ5-CYVtbky6.js +220 -0
  13. package/dist/client/assets/chunk-FMBD7UC4-Dw7uUrif.js +15 -0
  14. package/dist/client/assets/chunk-QN33PNHL-B1O9h01P.js +1 -0
  15. package/dist/client/assets/chunk-QZHKN3VN-EF2nkGZu.js +1 -0
  16. package/dist/client/assets/chunk-TZMSLE5B-MdJIaxR8.js +1 -0
  17. package/dist/client/assets/classDiagram-2ON5EDUG-CJjqssfy.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-WZHVMYZB-CJjqssfy.js +1 -0
  19. package/dist/client/assets/clone-Cbn2C3Vf.js +1 -0
  20. package/dist/client/assets/cose-bilkent-S5V4N54A-B-JLDSzU.js +1 -0
  21. package/dist/client/assets/cytoscape.esm-5J0xJHOV.js +321 -0
  22. package/dist/client/assets/dagre-6UL2VRFP-Dixw870s.js +4 -0
  23. package/dist/client/assets/defaultLocale-DX6XiGOO.js +1 -0
  24. package/dist/client/assets/diagram-PSM6KHXK-DlWXZXMp.js +24 -0
  25. package/dist/client/assets/diagram-QEK2KX5R-D91m_YLv.js +43 -0
  26. package/dist/client/assets/diagram-S2PKOQOG-NpPCZxiK.js +24 -0
  27. package/dist/client/assets/erDiagram-Q2GNP2WA-BMnORxC_.js +60 -0
  28. package/dist/client/assets/flowDiagram-NV44I4VS-Dm3EeWoS.js +162 -0
  29. package/dist/client/assets/ganttDiagram-JELNMOA3-fLMptK1a.js +267 -0
  30. package/dist/client/assets/gitGraphDiagram-NY62KEGX-xB7NT2eZ.js +65 -0
  31. package/dist/client/assets/graph-DN3wB-AH.js +1 -0
  32. package/dist/client/assets/index-Ci14MvQ6.js +379 -0
  33. package/dist/client/assets/index-CxiZFewN.css +1 -0
  34. package/dist/client/assets/infoDiagram-WHAUD3N6-DJpjmiwp.js +2 -0
  35. package/dist/client/assets/init-Gi6I4Gst.js +1 -0
  36. package/dist/client/assets/journeyDiagram-XKPGCS4Q-CLwIJ-ZW.js +139 -0
  37. package/dist/client/assets/kanban-definition-3W4ZIXB7-TJV37HHm.js +89 -0
  38. package/dist/client/assets/katex-DhXJpUyf.js +261 -0
  39. package/dist/client/assets/layout-BTmLOTwi.js +1 -0
  40. package/dist/client/assets/linear-DW3u-GbE.js +1 -0
  41. package/dist/client/assets/min-BO4DeCt4.js +1 -0
  42. package/dist/client/assets/mindmap-definition-VGOIOE7T-BlEdGkMQ.js +68 -0
  43. package/dist/client/assets/ordinal-Cboi1Yqb.js +1 -0
  44. package/dist/client/assets/pieDiagram-ADFJNKIX-CwO8jqs_.js +30 -0
  45. package/dist/client/assets/quadrantDiagram-AYHSOK5B-BrcwzhE9.js +7 -0
  46. package/dist/client/assets/requirementDiagram-UZGBJVZJ-DevAd9qX.js +64 -0
  47. package/dist/client/assets/sankeyDiagram-TZEHDZUN-DtCF0Arf.js +10 -0
  48. package/dist/client/assets/sequenceDiagram-WL72ISMW-BS9POkF8.js +145 -0
  49. package/dist/client/assets/stateDiagram-FKZM4ZOC-MyAN5caA.js +1 -0
  50. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CAhHhSgs.js +1 -0
  51. package/dist/client/assets/terminal-instance-kwfCyhkM.js +1 -0
  52. package/dist/client/assets/timeline-definition-IT6M3QCI-BXRKCZwK.js +61 -0
  53. package/dist/client/assets/treemap-KMMF4GRG-Dqwbp84g.js +128 -0
  54. package/dist/client/assets/xychartDiagram-PRI3JC2R-dNxFEavc.js +7 -0
  55. package/dist/client/favicon.svg +5 -0
  56. package/dist/client/index.html +29 -0
  57. package/dist/client/logo-full-dark.svg +10 -0
  58. package/dist/client/logo-full.svg +10 -0
  59. package/dist/client/logo.svg +6 -0
  60. package/dist/prisma/generated/browser.d.ts +11 -0
  61. package/dist/prisma/generated/browser.d.ts.map +1 -0
  62. package/dist/prisma/generated/browser.js +5 -0
  63. package/dist/prisma/generated/browser.js.map +1 -0
  64. package/dist/prisma/generated/client.d.ts +15 -0
  65. package/dist/prisma/generated/client.d.ts.map +1 -0
  66. package/dist/prisma/generated/client.js +10 -0
  67. package/dist/prisma/generated/client.js.map +1 -0
  68. package/dist/prisma/generated/commonInputTypes.d.ts +507 -0
  69. package/dist/prisma/generated/commonInputTypes.d.ts.map +1 -0
  70. package/dist/prisma/generated/commonInputTypes.js +2 -0
  71. package/dist/prisma/generated/commonInputTypes.js.map +1 -0
  72. package/dist/prisma/generated/enums.d.ts +44 -0
  73. package/dist/prisma/generated/enums.d.ts.map +1 -0
  74. package/dist/prisma/generated/enums.js +39 -0
  75. package/dist/prisma/generated/enums.js.map +1 -0
  76. package/dist/prisma/generated/internal/class.d.ts +51 -0
  77. package/dist/prisma/generated/internal/class.d.ts.map +1 -0
  78. package/dist/prisma/generated/internal/class.js +31 -0
  79. package/dist/prisma/generated/internal/class.js.map +1 -0
  80. package/dist/prisma/generated/internal/prismaNamespace.d.ts +818 -0
  81. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -0
  82. package/dist/prisma/generated/internal/prismaNamespace.js +131 -0
  83. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -0
  84. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +127 -0
  85. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -0
  86. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +115 -0
  87. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -0
  88. package/dist/prisma/generated/models/ClaudeSession.d.ts +745 -0
  89. package/dist/prisma/generated/models/ClaudeSession.d.ts.map +1 -0
  90. package/dist/prisma/generated/models/ClaudeSession.js +2 -0
  91. package/dist/prisma/generated/models/ClaudeSession.js.map +1 -0
  92. package/dist/prisma/generated/models/DecisionLog.d.ts +428 -0
  93. package/dist/prisma/generated/models/DecisionLog.d.ts.map +1 -0
  94. package/dist/prisma/generated/models/DecisionLog.js +2 -0
  95. package/dist/prisma/generated/models/DecisionLog.js.map +1 -0
  96. package/dist/prisma/generated/models/Project.d.ts +843 -0
  97. package/dist/prisma/generated/models/Project.d.ts.map +1 -0
  98. package/dist/prisma/generated/models/Project.js +2 -0
  99. package/dist/prisma/generated/models/Project.js.map +1 -0
  100. package/dist/prisma/generated/models/TerminalSession.d.ts +640 -0
  101. package/dist/prisma/generated/models/TerminalSession.d.ts.map +1 -0
  102. package/dist/prisma/generated/models/TerminalSession.js +2 -0
  103. package/dist/prisma/generated/models/TerminalSession.js.map +1 -0
  104. package/dist/prisma/generated/models/UserSettings.d.ts +428 -0
  105. package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -0
  106. package/dist/prisma/generated/models/UserSettings.js +2 -0
  107. package/dist/prisma/generated/models/UserSettings.js.map +1 -0
  108. package/dist/prisma/generated/models/Workspace.d.ts +1883 -0
  109. package/dist/prisma/generated/models/Workspace.d.ts.map +1 -0
  110. package/dist/prisma/generated/models/Workspace.js +2 -0
  111. package/dist/prisma/generated/models/Workspace.js.map +1 -0
  112. package/dist/prisma/generated/models.d.ts +8 -0
  113. package/dist/prisma/generated/models.d.ts.map +1 -0
  114. package/dist/prisma/generated/models.js +2 -0
  115. package/dist/prisma/generated/models.js.map +1 -0
  116. package/dist/prompts/quick-actions/fetch-rebase.md +15 -0
  117. package/dist/prompts/quick-actions/rename-branch.md +15 -0
  118. package/dist/prompts/quick-actions/review.md +11 -0
  119. package/dist/prompts/quick-actions/simplify.md +7 -0
  120. package/dist/prompts/workflows/bugfix.md +57 -0
  121. package/dist/prompts/workflows/explore.md +54 -0
  122. package/dist/prompts/workflows/feature.md +54 -0
  123. package/dist/prompts/workflows/followup.md +32 -0
  124. package/dist/src/backend/agents/process-adapter.d.ts +99 -0
  125. package/dist/src/backend/agents/process-adapter.d.ts.map +1 -0
  126. package/dist/src/backend/agents/process-adapter.js +224 -0
  127. package/dist/src/backend/agents/process-adapter.js.map +1 -0
  128. package/dist/src/backend/claude/index.d.ts +81 -0
  129. package/dist/src/backend/claude/index.d.ts.map +1 -0
  130. package/dist/src/backend/claude/index.js +249 -0
  131. package/dist/src/backend/claude/index.js.map +1 -0
  132. package/dist/src/backend/claude/permissions.d.ts +67 -0
  133. package/dist/src/backend/claude/permissions.d.ts.map +1 -0
  134. package/dist/src/backend/claude/permissions.js +269 -0
  135. package/dist/src/backend/claude/permissions.js.map +1 -0
  136. package/dist/src/backend/claude/permissions.test.d.ts +2 -0
  137. package/dist/src/backend/claude/permissions.test.d.ts.map +1 -0
  138. package/dist/src/backend/claude/permissions.test.js +835 -0
  139. package/dist/src/backend/claude/permissions.test.js.map +1 -0
  140. package/dist/src/backend/claude/process.d.ts +117 -0
  141. package/dist/src/backend/claude/process.d.ts.map +1 -0
  142. package/dist/src/backend/claude/process.js +438 -0
  143. package/dist/src/backend/claude/process.js.map +1 -0
  144. package/dist/src/backend/claude/protocol.d.ts +57 -0
  145. package/dist/src/backend/claude/protocol.d.ts.map +1 -0
  146. package/dist/src/backend/claude/protocol.js +264 -0
  147. package/dist/src/backend/claude/protocol.js.map +1 -0
  148. package/dist/src/backend/claude/protocol.test.d.ts +2 -0
  149. package/dist/src/backend/claude/protocol.test.d.ts.map +1 -0
  150. package/dist/src/backend/claude/protocol.test.js +599 -0
  151. package/dist/src/backend/claude/protocol.test.js.map +1 -0
  152. package/dist/src/backend/claude/registry.d.ts +16 -0
  153. package/dist/src/backend/claude/registry.d.ts.map +1 -0
  154. package/dist/src/backend/claude/registry.js +21 -0
  155. package/dist/src/backend/claude/registry.js.map +1 -0
  156. package/dist/src/backend/claude/session.d.ts +29 -0
  157. package/dist/src/backend/claude/session.d.ts.map +1 -0
  158. package/dist/src/backend/claude/session.js +293 -0
  159. package/dist/src/backend/claude/session.js.map +1 -0
  160. package/dist/src/backend/claude/session.test.d.ts +2 -0
  161. package/dist/src/backend/claude/session.test.d.ts.map +1 -0
  162. package/dist/src/backend/claude/session.test.js +440 -0
  163. package/dist/src/backend/claude/session.test.js.map +1 -0
  164. package/dist/src/backend/claude/types/process-types.d.ts +7 -0
  165. package/dist/src/backend/claude/types/process-types.d.ts.map +1 -0
  166. package/dist/src/backend/claude/types/process-types.js +2 -0
  167. package/dist/src/backend/claude/types/process-types.js.map +1 -0
  168. package/dist/src/backend/claude/types.d.ts +345 -0
  169. package/dist/src/backend/claude/types.d.ts.map +1 -0
  170. package/dist/src/backend/claude/types.js +61 -0
  171. package/dist/src/backend/claude/types.js.map +1 -0
  172. package/dist/src/backend/claude/types.test.d.ts +2 -0
  173. package/dist/src/backend/claude/types.test.d.ts.map +1 -0
  174. package/dist/src/backend/claude/types.test.js +593 -0
  175. package/dist/src/backend/claude/types.test.js.map +1 -0
  176. package/dist/src/backend/clients/git.client.d.ts +50 -0
  177. package/dist/src/backend/clients/git.client.d.ts.map +1 -0
  178. package/dist/src/backend/clients/git.client.js +187 -0
  179. package/dist/src/backend/clients/git.client.js.map +1 -0
  180. package/dist/src/backend/clients/git.client.test.d.ts +2 -0
  181. package/dist/src/backend/clients/git.client.test.d.ts.map +1 -0
  182. package/dist/src/backend/clients/git.client.test.js +350 -0
  183. package/dist/src/backend/clients/git.client.test.js.map +1 -0
  184. package/dist/src/backend/clients/index.d.ts +2 -0
  185. package/dist/src/backend/clients/index.d.ts.map +1 -0
  186. package/dist/src/backend/clients/index.js +2 -0
  187. package/dist/src/backend/clients/index.js.map +1 -0
  188. package/dist/src/backend/constants/http.d.ts +10 -0
  189. package/dist/src/backend/constants/http.d.ts.map +1 -0
  190. package/dist/src/backend/constants/http.js +9 -0
  191. package/dist/src/backend/constants/http.js.map +1 -0
  192. package/dist/src/backend/constants/index.d.ts +3 -0
  193. package/dist/src/backend/constants/index.d.ts.map +1 -0
  194. package/dist/src/backend/constants/index.js +3 -0
  195. package/dist/src/backend/constants/index.js.map +1 -0
  196. package/dist/src/backend/constants/websocket.d.ts +8 -0
  197. package/dist/src/backend/constants/websocket.d.ts.map +1 -0
  198. package/dist/src/backend/constants/websocket.js +7 -0
  199. package/dist/src/backend/constants/websocket.js.map +1 -0
  200. package/dist/src/backend/db.d.ts +5 -0
  201. package/dist/src/backend/db.d.ts.map +1 -0
  202. package/dist/src/backend/db.js +36 -0
  203. package/dist/src/backend/db.js.map +1 -0
  204. package/dist/src/backend/index.d.ts +2 -0
  205. package/dist/src/backend/index.d.ts.map +1 -0
  206. package/dist/src/backend/index.js +33 -0
  207. package/dist/src/backend/index.js.map +1 -0
  208. package/dist/src/backend/interceptors/branch-rename.interceptor.d.ts +3 -0
  209. package/dist/src/backend/interceptors/branch-rename.interceptor.d.ts.map +1 -0
  210. package/dist/src/backend/interceptors/branch-rename.interceptor.js +44 -0
  211. package/dist/src/backend/interceptors/branch-rename.interceptor.js.map +1 -0
  212. package/dist/src/backend/interceptors/conversation-rename.interceptor.d.ts +3 -0
  213. package/dist/src/backend/interceptors/conversation-rename.interceptor.d.ts.map +1 -0
  214. package/dist/src/backend/interceptors/conversation-rename.interceptor.js +105 -0
  215. package/dist/src/backend/interceptors/conversation-rename.interceptor.js.map +1 -0
  216. package/dist/src/backend/interceptors/index.d.ts +4 -0
  217. package/dist/src/backend/interceptors/index.d.ts.map +1 -0
  218. package/dist/src/backend/interceptors/index.js +11 -0
  219. package/dist/src/backend/interceptors/index.js.map +1 -0
  220. package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts +3 -0
  221. package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts.map +1 -0
  222. package/dist/src/backend/interceptors/pr-detection.interceptor.js +58 -0
  223. package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -0
  224. package/dist/src/backend/interceptors/registry.d.ts +11 -0
  225. package/dist/src/backend/interceptors/registry.d.ts.map +1 -0
  226. package/dist/src/backend/interceptors/registry.js +51 -0
  227. package/dist/src/backend/interceptors/registry.js.map +1 -0
  228. package/dist/src/backend/interceptors/types.d.ts +22 -0
  229. package/dist/src/backend/interceptors/types.d.ts.map +1 -0
  230. package/dist/src/backend/interceptors/types.js +2 -0
  231. package/dist/src/backend/interceptors/types.js.map +1 -0
  232. package/dist/src/backend/lib/env.d.ts +4 -0
  233. package/dist/src/backend/lib/env.d.ts.map +1 -0
  234. package/dist/src/backend/lib/env.js +29 -0
  235. package/dist/src/backend/lib/env.js.map +1 -0
  236. package/dist/src/backend/lib/file-helpers.d.ts +10 -0
  237. package/dist/src/backend/lib/file-helpers.d.ts.map +1 -0
  238. package/dist/src/backend/lib/file-helpers.js +66 -0
  239. package/dist/src/backend/lib/file-helpers.js.map +1 -0
  240. package/dist/src/backend/lib/file-helpers.test.d.ts +2 -0
  241. package/dist/src/backend/lib/file-helpers.test.d.ts.map +1 -0
  242. package/dist/src/backend/lib/file-helpers.test.js +282 -0
  243. package/dist/src/backend/lib/file-helpers.test.js.map +1 -0
  244. package/dist/src/backend/lib/git-helpers.d.ts +19 -0
  245. package/dist/src/backend/lib/git-helpers.d.ts.map +1 -0
  246. package/dist/src/backend/lib/git-helpers.js +77 -0
  247. package/dist/src/backend/lib/git-helpers.js.map +1 -0
  248. package/dist/src/backend/lib/git-helpers.test.d.ts +2 -0
  249. package/dist/src/backend/lib/git-helpers.test.d.ts.map +1 -0
  250. package/dist/src/backend/lib/git-helpers.test.js +139 -0
  251. package/dist/src/backend/lib/git-helpers.test.js.map +1 -0
  252. package/dist/src/backend/lib/ide-helpers.d.ts +10 -0
  253. package/dist/src/backend/lib/ide-helpers.d.ts.map +1 -0
  254. package/dist/src/backend/lib/ide-helpers.js +90 -0
  255. package/dist/src/backend/lib/ide-helpers.js.map +1 -0
  256. package/dist/src/backend/lib/ide-helpers.test.d.ts +2 -0
  257. package/dist/src/backend/lib/ide-helpers.test.d.ts.map +1 -0
  258. package/dist/src/backend/lib/ide-helpers.test.js +202 -0
  259. package/dist/src/backend/lib/ide-helpers.test.js.map +1 -0
  260. package/dist/src/backend/lib/shell.d.ts +26 -0
  261. package/dist/src/backend/lib/shell.d.ts.map +1 -0
  262. package/dist/src/backend/lib/shell.js +87 -0
  263. package/dist/src/backend/lib/shell.js.map +1 -0
  264. package/dist/src/backend/middleware/cors.middleware.d.ts +3 -0
  265. package/dist/src/backend/middleware/cors.middleware.d.ts.map +1 -0
  266. package/dist/src/backend/middleware/cors.middleware.js +17 -0
  267. package/dist/src/backend/middleware/cors.middleware.js.map +1 -0
  268. package/dist/src/backend/middleware/index.d.ts +4 -0
  269. package/dist/src/backend/middleware/index.d.ts.map +1 -0
  270. package/dist/src/backend/middleware/index.js +4 -0
  271. package/dist/src/backend/middleware/index.js.map +1 -0
  272. package/dist/src/backend/middleware/middleware.test.d.ts +2 -0
  273. package/dist/src/backend/middleware/middleware.test.d.ts.map +1 -0
  274. package/dist/src/backend/middleware/middleware.test.js +295 -0
  275. package/dist/src/backend/middleware/middleware.test.js.map +1 -0
  276. package/dist/src/backend/middleware/request-logger.middleware.d.ts +3 -0
  277. package/dist/src/backend/middleware/request-logger.middleware.d.ts.map +1 -0
  278. package/dist/src/backend/middleware/request-logger.middleware.js +18 -0
  279. package/dist/src/backend/middleware/request-logger.middleware.js.map +1 -0
  280. package/dist/src/backend/middleware/security.middleware.d.ts +3 -0
  281. package/dist/src/backend/middleware/security.middleware.d.ts.map +1 -0
  282. package/dist/src/backend/middleware/security.middleware.js +8 -0
  283. package/dist/src/backend/middleware/security.middleware.js.map +1 -0
  284. package/dist/src/backend/migrate.d.ts +7 -0
  285. package/dist/src/backend/migrate.d.ts.map +1 -0
  286. package/dist/src/backend/migrate.js +76 -0
  287. package/dist/src/backend/migrate.js.map +1 -0
  288. package/dist/src/backend/prompts/branch-rename.d.ts +8 -0
  289. package/dist/src/backend/prompts/branch-rename.d.ts.map +1 -0
  290. package/dist/src/backend/prompts/branch-rename.js +25 -0
  291. package/dist/src/backend/prompts/branch-rename.js.map +1 -0
  292. package/dist/src/backend/prompts/quick-actions.d.ts +15 -0
  293. package/dist/src/backend/prompts/quick-actions.d.ts.map +1 -0
  294. package/dist/src/backend/prompts/quick-actions.js +109 -0
  295. package/dist/src/backend/prompts/quick-actions.js.map +1 -0
  296. package/dist/src/backend/prompts/workflows.d.ts +14 -0
  297. package/dist/src/backend/prompts/workflows.d.ts.map +1 -0
  298. package/dist/src/backend/prompts/workflows.js +92 -0
  299. package/dist/src/backend/prompts/workflows.js.map +1 -0
  300. package/dist/src/backend/prompts/workflows.test.d.ts +2 -0
  301. package/dist/src/backend/prompts/workflows.test.d.ts.map +1 -0
  302. package/dist/src/backend/prompts/workflows.test.js +127 -0
  303. package/dist/src/backend/prompts/workflows.test.js.map +1 -0
  304. package/dist/src/backend/resource_accessors/claude-session.accessor.d.ts +35 -0
  305. package/dist/src/backend/resource_accessors/claude-session.accessor.d.ts.map +1 -0
  306. package/dist/src/backend/resource_accessors/claude-session.accessor.js +53 -0
  307. package/dist/src/backend/resource_accessors/claude-session.accessor.js.map +1 -0
  308. package/dist/src/backend/resource_accessors/decision-log.accessor.d.ts +25 -0
  309. package/dist/src/backend/resource_accessors/decision-log.accessor.d.ts.map +1 -0
  310. package/dist/src/backend/resource_accessors/decision-log.accessor.js +87 -0
  311. package/dist/src/backend/resource_accessors/decision-log.accessor.js.map +1 -0
  312. package/dist/src/backend/resource_accessors/index.d.ts +7 -0
  313. package/dist/src/backend/resource_accessors/index.d.ts.map +1 -0
  314. package/dist/src/backend/resource_accessors/index.js +7 -0
  315. package/dist/src/backend/resource_accessors/index.js.map +1 -0
  316. package/dist/src/backend/resource_accessors/project.accessor.d.ts +63 -0
  317. package/dist/src/backend/resource_accessors/project.accessor.d.ts.map +1 -0
  318. package/dist/src/backend/resource_accessors/project.accessor.js +167 -0
  319. package/dist/src/backend/resource_accessors/project.accessor.js.map +1 -0
  320. package/dist/src/backend/resource_accessors/terminal-session.accessor.d.ts +33 -0
  321. package/dist/src/backend/resource_accessors/terminal-session.accessor.d.ts.map +1 -0
  322. package/dist/src/backend/resource_accessors/terminal-session.accessor.js +63 -0
  323. package/dist/src/backend/resource_accessors/terminal-session.accessor.js.map +1 -0
  324. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts +12 -0
  325. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts.map +1 -0
  326. package/dist/src/backend/resource_accessors/user-settings.accessor.js +33 -0
  327. package/dist/src/backend/resource_accessors/user-settings.accessor.js.map +1 -0
  328. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +66 -0
  329. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -0
  330. package/dist/src/backend/resource_accessors/workspace.accessor.js +158 -0
  331. package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -0
  332. package/dist/src/backend/routers/api/health.router.d.ts +3 -0
  333. package/dist/src/backend/routers/api/health.router.d.ts.map +1 -0
  334. package/dist/src/backend/routers/api/health.router.js +70 -0
  335. package/dist/src/backend/routers/api/health.router.js.map +1 -0
  336. package/dist/src/backend/routers/api/health.router.test.d.ts +2 -0
  337. package/dist/src/backend/routers/api/health.router.test.d.ts.map +1 -0
  338. package/dist/src/backend/routers/api/health.router.test.js +200 -0
  339. package/dist/src/backend/routers/api/health.router.test.js.map +1 -0
  340. package/dist/src/backend/routers/api/mcp.router.d.ts +3 -0
  341. package/dist/src/backend/routers/api/mcp.router.d.ts.map +1 -0
  342. package/dist/src/backend/routers/api/mcp.router.js +38 -0
  343. package/dist/src/backend/routers/api/mcp.router.js.map +1 -0
  344. package/dist/src/backend/routers/api/mcp.router.test.d.ts +2 -0
  345. package/dist/src/backend/routers/api/mcp.router.test.d.ts.map +1 -0
  346. package/dist/src/backend/routers/api/mcp.router.test.js +191 -0
  347. package/dist/src/backend/routers/api/mcp.router.test.js.map +1 -0
  348. package/dist/src/backend/routers/api/project.router.d.ts +3 -0
  349. package/dist/src/backend/routers/api/project.router.d.ts.map +1 -0
  350. package/dist/src/backend/routers/api/project.router.js +273 -0
  351. package/dist/src/backend/routers/api/project.router.js.map +1 -0
  352. package/dist/src/backend/routers/mcp/errors.d.ts +3 -0
  353. package/dist/src/backend/routers/mcp/errors.d.ts.map +1 -0
  354. package/dist/src/backend/routers/mcp/errors.js +14 -0
  355. package/dist/src/backend/routers/mcp/errors.js.map +1 -0
  356. package/dist/src/backend/routers/mcp/index.d.ts +5 -0
  357. package/dist/src/backend/routers/mcp/index.d.ts.map +1 -0
  358. package/dist/src/backend/routers/mcp/index.js +16 -0
  359. package/dist/src/backend/routers/mcp/index.js.map +1 -0
  360. package/dist/src/backend/routers/mcp/lock.mcp.d.ts +2 -0
  361. package/dist/src/backend/routers/mcp/lock.mcp.d.ts.map +1 -0
  362. package/dist/src/backend/routers/mcp/lock.mcp.js +105 -0
  363. package/dist/src/backend/routers/mcp/lock.mcp.js.map +1 -0
  364. package/dist/src/backend/routers/mcp/server.d.ts +9 -0
  365. package/dist/src/backend/routers/mcp/server.d.ts.map +1 -0
  366. package/dist/src/backend/routers/mcp/server.js +136 -0
  367. package/dist/src/backend/routers/mcp/server.js.map +1 -0
  368. package/dist/src/backend/routers/mcp/system.mcp.d.ts +2 -0
  369. package/dist/src/backend/routers/mcp/system.mcp.d.ts.map +1 -0
  370. package/dist/src/backend/routers/mcp/system.mcp.js +34 -0
  371. package/dist/src/backend/routers/mcp/system.mcp.js.map +1 -0
  372. package/dist/src/backend/routers/mcp/terminal.mcp.d.ts +2 -0
  373. package/dist/src/backend/routers/mcp/terminal.mcp.d.ts.map +1 -0
  374. package/dist/src/backend/routers/mcp/terminal.mcp.js +113 -0
  375. package/dist/src/backend/routers/mcp/terminal.mcp.js.map +1 -0
  376. package/dist/src/backend/routers/mcp/terminal.mcp.test.d.ts +2 -0
  377. package/dist/src/backend/routers/mcp/terminal.mcp.test.d.ts.map +1 -0
  378. package/dist/src/backend/routers/mcp/terminal.mcp.test.js +218 -0
  379. package/dist/src/backend/routers/mcp/terminal.mcp.test.js.map +1 -0
  380. package/dist/src/backend/routers/mcp/types.d.ts +37 -0
  381. package/dist/src/backend/routers/mcp/types.d.ts.map +1 -0
  382. package/dist/src/backend/routers/mcp/types.js +13 -0
  383. package/dist/src/backend/routers/mcp/types.js.map +1 -0
  384. package/dist/src/backend/routers/websocket/chat.handler.d.ts +7 -0
  385. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -0
  386. package/dist/src/backend/routers/websocket/chat.handler.js +172 -0
  387. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -0
  388. package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts +7 -0
  389. package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts.map +1 -0
  390. package/dist/src/backend/routers/websocket/dev-logs.handler.js +64 -0
  391. package/dist/src/backend/routers/websocket/dev-logs.handler.js.map +1 -0
  392. package/dist/src/backend/routers/websocket/index.d.ts +4 -0
  393. package/dist/src/backend/routers/websocket/index.d.ts.map +1 -0
  394. package/dist/src/backend/routers/websocket/index.js +4 -0
  395. package/dist/src/backend/routers/websocket/index.js.map +1 -0
  396. package/dist/src/backend/routers/websocket/terminal.handler.d.ts +7 -0
  397. package/dist/src/backend/routers/websocket/terminal.handler.d.ts.map +1 -0
  398. package/dist/src/backend/routers/websocket/terminal.handler.js +268 -0
  399. package/dist/src/backend/routers/websocket/terminal.handler.js.map +1 -0
  400. package/dist/src/backend/server.d.ts +9 -0
  401. package/dist/src/backend/server.d.ts.map +1 -0
  402. package/dist/src/backend/server.js +165 -0
  403. package/dist/src/backend/server.js.map +1 -0
  404. package/dist/src/backend/services/chat-connection.service.d.ts +18 -0
  405. package/dist/src/backend/services/chat-connection.service.d.ts.map +1 -0
  406. package/dist/src/backend/services/chat-connection.service.js +66 -0
  407. package/dist/src/backend/services/chat-connection.service.js.map +1 -0
  408. package/dist/src/backend/services/chat-event-forwarder.service.d.ts +21 -0
  409. package/dist/src/backend/services/chat-event-forwarder.service.d.ts.map +1 -0
  410. package/dist/src/backend/services/chat-event-forwarder.service.js +246 -0
  411. package/dist/src/backend/services/chat-event-forwarder.service.js.map +1 -0
  412. package/dist/src/backend/services/chat-message-handlers.service.d.ts +60 -0
  413. package/dist/src/backend/services/chat-message-handlers.service.d.ts.map +1 -0
  414. package/dist/src/backend/services/chat-message-handlers.service.js +405 -0
  415. package/dist/src/backend/services/chat-message-handlers.service.js.map +1 -0
  416. package/dist/src/backend/services/cli-health.service.d.ts +22 -0
  417. package/dist/src/backend/services/cli-health.service.d.ts.map +1 -0
  418. package/dist/src/backend/services/cli-health.service.js +61 -0
  419. package/dist/src/backend/services/cli-health.service.js.map +1 -0
  420. package/dist/src/backend/services/config.service.d.ts +96 -0
  421. package/dist/src/backend/services/config.service.d.ts.map +1 -0
  422. package/dist/src/backend/services/config.service.js +229 -0
  423. package/dist/src/backend/services/config.service.js.map +1 -0
  424. package/dist/src/backend/services/factory-config.service.d.ts +16 -0
  425. package/dist/src/backend/services/factory-config.service.d.ts.map +1 -0
  426. package/dist/src/backend/services/factory-config.service.js +42 -0
  427. package/dist/src/backend/services/factory-config.service.js.map +1 -0
  428. package/dist/src/backend/services/file-lock.service.d.ts +93 -0
  429. package/dist/src/backend/services/file-lock.service.d.ts.map +1 -0
  430. package/dist/src/backend/services/file-lock.service.js +355 -0
  431. package/dist/src/backend/services/file-lock.service.js.map +1 -0
  432. package/dist/src/backend/services/file-lock.service.test.d.ts +2 -0
  433. package/dist/src/backend/services/file-lock.service.test.d.ts.map +1 -0
  434. package/dist/src/backend/services/file-lock.service.test.js +490 -0
  435. package/dist/src/backend/services/file-lock.service.test.js.map +1 -0
  436. package/dist/src/backend/services/github-cli.service.d.ts +72 -0
  437. package/dist/src/backend/services/github-cli.service.d.ts.map +1 -0
  438. package/dist/src/backend/services/github-cli.service.js +399 -0
  439. package/dist/src/backend/services/github-cli.service.js.map +1 -0
  440. package/dist/src/backend/services/index.d.ts +18 -0
  441. package/dist/src/backend/services/index.d.ts.map +1 -0
  442. package/dist/src/backend/services/index.js +18 -0
  443. package/dist/src/backend/services/index.js.map +1 -0
  444. package/dist/src/backend/services/kanban-state.service.d.ts +22 -0
  445. package/dist/src/backend/services/kanban-state.service.d.ts.map +1 -0
  446. package/dist/src/backend/services/kanban-state.service.js +94 -0
  447. package/dist/src/backend/services/kanban-state.service.js.map +1 -0
  448. package/dist/src/backend/services/kanban-state.service.test.d.ts +2 -0
  449. package/dist/src/backend/services/kanban-state.service.test.d.ts.map +1 -0
  450. package/dist/src/backend/services/kanban-state.service.test.js +204 -0
  451. package/dist/src/backend/services/kanban-state.service.test.js.map +1 -0
  452. package/dist/src/backend/services/logger.service.d.ts +29 -0
  453. package/dist/src/backend/services/logger.service.d.ts.map +1 -0
  454. package/dist/src/backend/services/logger.service.js +161 -0
  455. package/dist/src/backend/services/logger.service.js.map +1 -0
  456. package/dist/src/backend/services/message-queue.service.d.ts +21 -0
  457. package/dist/src/backend/services/message-queue.service.d.ts.map +1 -0
  458. package/dist/src/backend/services/message-queue.service.js +105 -0
  459. package/dist/src/backend/services/message-queue.service.js.map +1 -0
  460. package/dist/src/backend/services/message-queue.service.test.d.ts +2 -0
  461. package/dist/src/backend/services/message-queue.service.test.d.ts.map +1 -0
  462. package/dist/src/backend/services/message-queue.service.test.js +278 -0
  463. package/dist/src/backend/services/message-queue.service.test.js.map +1 -0
  464. package/dist/src/backend/services/notification.service.d.ts +22 -0
  465. package/dist/src/backend/services/notification.service.d.ts.map +1 -0
  466. package/dist/src/backend/services/notification.service.js +208 -0
  467. package/dist/src/backend/services/notification.service.js.map +1 -0
  468. package/dist/src/backend/services/port-allocation.service.d.ts +8 -0
  469. package/dist/src/backend/services/port-allocation.service.d.ts.map +1 -0
  470. package/dist/src/backend/services/port-allocation.service.js +36 -0
  471. package/dist/src/backend/services/port-allocation.service.js.map +1 -0
  472. package/dist/src/backend/services/port.service.d.ts +3 -0
  473. package/dist/src/backend/services/port.service.d.ts.map +1 -0
  474. package/dist/src/backend/services/port.service.js +48 -0
  475. package/dist/src/backend/services/port.service.js.map +1 -0
  476. package/dist/src/backend/services/port.service.test.d.ts +2 -0
  477. package/dist/src/backend/services/port.service.test.d.ts.map +1 -0
  478. package/dist/src/backend/services/port.service.test.js +140 -0
  479. package/dist/src/backend/services/port.service.test.js.map +1 -0
  480. package/dist/src/backend/services/rate-limiter.service.d.ts +38 -0
  481. package/dist/src/backend/services/rate-limiter.service.d.ts.map +1 -0
  482. package/dist/src/backend/services/rate-limiter.service.js +141 -0
  483. package/dist/src/backend/services/rate-limiter.service.js.map +1 -0
  484. package/dist/src/backend/services/reconciliation.service.d.ts +14 -0
  485. package/dist/src/backend/services/reconciliation.service.d.ts.map +1 -0
  486. package/dist/src/backend/services/reconciliation.service.js +125 -0
  487. package/dist/src/backend/services/reconciliation.service.js.map +1 -0
  488. package/dist/src/backend/services/reconciliation.service.test.d.ts +2 -0
  489. package/dist/src/backend/services/reconciliation.service.test.d.ts.map +1 -0
  490. package/dist/src/backend/services/reconciliation.service.test.js +231 -0
  491. package/dist/src/backend/services/reconciliation.service.test.js.map +1 -0
  492. package/dist/src/backend/services/run-script.service.d.ts +35 -0
  493. package/dist/src/backend/services/run-script.service.d.ts.map +1 -0
  494. package/dist/src/backend/services/run-script.service.js +349 -0
  495. package/dist/src/backend/services/run-script.service.js.map +1 -0
  496. package/dist/src/backend/services/scheduler.service.d.ts +21 -0
  497. package/dist/src/backend/services/scheduler.service.d.ts.map +1 -0
  498. package/dist/src/backend/services/scheduler.service.js +156 -0
  499. package/dist/src/backend/services/scheduler.service.js.map +1 -0
  500. package/dist/src/backend/services/scheduler.service.test.d.ts +2 -0
  501. package/dist/src/backend/services/scheduler.service.test.d.ts.map +1 -0
  502. package/dist/src/backend/services/scheduler.service.test.js +212 -0
  503. package/dist/src/backend/services/scheduler.service.test.js.map +1 -0
  504. package/dist/src/backend/services/server-instance.service.d.ts +6 -0
  505. package/dist/src/backend/services/server-instance.service.d.ts.map +1 -0
  506. package/dist/src/backend/services/server-instance.service.js +13 -0
  507. package/dist/src/backend/services/server-instance.service.js.map +1 -0
  508. package/dist/src/backend/services/session-file-logger.service.d.ts +12 -0
  509. package/dist/src/backend/services/session-file-logger.service.d.ts.map +1 -0
  510. package/dist/src/backend/services/session-file-logger.service.js +146 -0
  511. package/dist/src/backend/services/session-file-logger.service.js.map +1 -0
  512. package/dist/src/backend/services/session-file-logger.service.test.d.ts +2 -0
  513. package/dist/src/backend/services/session-file-logger.service.test.d.ts.map +1 -0
  514. package/dist/src/backend/services/session-file-logger.service.test.js +313 -0
  515. package/dist/src/backend/services/session-file-logger.service.test.js.map +1 -0
  516. package/dist/src/backend/services/session.service.d.ts +43 -0
  517. package/dist/src/backend/services/session.service.d.ts.map +1 -0
  518. package/dist/src/backend/services/session.service.js +290 -0
  519. package/dist/src/backend/services/session.service.js.map +1 -0
  520. package/dist/src/backend/services/startup-script.service.d.ts +26 -0
  521. package/dist/src/backend/services/startup-script.service.d.ts.map +1 -0
  522. package/dist/src/backend/services/startup-script.service.js +187 -0
  523. package/dist/src/backend/services/startup-script.service.js.map +1 -0
  524. package/dist/src/backend/services/terminal.service.d.ts +73 -0
  525. package/dist/src/backend/services/terminal.service.d.ts.map +1 -0
  526. package/dist/src/backend/services/terminal.service.js +303 -0
  527. package/dist/src/backend/services/terminal.service.js.map +1 -0
  528. package/dist/src/backend/services/workspace-state-machine.service.d.ts +27 -0
  529. package/dist/src/backend/services/workspace-state-machine.service.d.ts.map +1 -0
  530. package/dist/src/backend/services/workspace-state-machine.service.js +168 -0
  531. package/dist/src/backend/services/workspace-state-machine.service.js.map +1 -0
  532. package/dist/src/backend/services/workspace-state-machine.service.test.d.ts +2 -0
  533. package/dist/src/backend/services/workspace-state-machine.service.test.d.ts.map +1 -0
  534. package/dist/src/backend/services/workspace-state-machine.service.test.js +376 -0
  535. package/dist/src/backend/services/workspace-state-machine.service.test.js.map +1 -0
  536. package/dist/src/backend/testing/setup.d.ts +2 -0
  537. package/dist/src/backend/testing/setup.d.ts.map +1 -0
  538. package/dist/src/backend/testing/setup.js +8 -0
  539. package/dist/src/backend/testing/setup.js.map +1 -0
  540. package/dist/src/backend/trpc/admin.trpc.d.ts +135 -0
  541. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -0
  542. package/dist/src/backend/trpc/admin.trpc.js +182 -0
  543. package/dist/src/backend/trpc/admin.trpc.js.map +1 -0
  544. package/dist/src/backend/trpc/decision-log.trpc.d.ts +54 -0
  545. package/dist/src/backend/trpc/decision-log.trpc.d.ts.map +1 -0
  546. package/dist/src/backend/trpc/decision-log.trpc.js +30 -0
  547. package/dist/src/backend/trpc/decision-log.trpc.js.map +1 -0
  548. package/dist/src/backend/trpc/index.d.ts +1541 -0
  549. package/dist/src/backend/trpc/index.d.ts.map +1 -0
  550. package/dist/src/backend/trpc/index.js +20 -0
  551. package/dist/src/backend/trpc/index.js.map +1 -0
  552. package/dist/src/backend/trpc/pr-review.trpc.d.ts +70 -0
  553. package/dist/src/backend/trpc/pr-review.trpc.d.ts.map +1 -0
  554. package/dist/src/backend/trpc/pr-review.trpc.js +72 -0
  555. package/dist/src/backend/trpc/pr-review.trpc.js.map +1 -0
  556. package/dist/src/backend/trpc/procedures/index.d.ts +2 -0
  557. package/dist/src/backend/trpc/procedures/index.d.ts.map +1 -0
  558. package/dist/src/backend/trpc/procedures/index.js +2 -0
  559. package/dist/src/backend/trpc/procedures/index.js.map +1 -0
  560. package/dist/src/backend/trpc/procedures/project-scoped.d.ts +8 -0
  561. package/dist/src/backend/trpc/procedures/project-scoped.d.ts.map +1 -0
  562. package/dist/src/backend/trpc/procedures/project-scoped.js +18 -0
  563. package/dist/src/backend/trpc/procedures/project-scoped.js.map +1 -0
  564. package/dist/src/backend/trpc/project.trpc.d.ts +236 -0
  565. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -0
  566. package/dist/src/backend/trpc/project.trpc.js +112 -0
  567. package/dist/src/backend/trpc/project.trpc.js.map +1 -0
  568. package/dist/src/backend/trpc/session.trpc.d.ts +391 -0
  569. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -0
  570. package/dist/src/backend/trpc/session.trpc.js +148 -0
  571. package/dist/src/backend/trpc/session.trpc.js.map +1 -0
  572. package/dist/src/backend/trpc/trpc.d.ts +18 -0
  573. package/dist/src/backend/trpc/trpc.d.ts.map +1 -0
  574. package/dist/src/backend/trpc/trpc.js +17 -0
  575. package/dist/src/backend/trpc/trpc.js.map +1 -0
  576. package/dist/src/backend/trpc/user-settings.trpc.d.ts +48 -0
  577. package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -0
  578. package/dist/src/backend/trpc/user-settings.trpc.js +56 -0
  579. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -0
  580. package/dist/src/backend/trpc/workspace/files.trpc.d.ts +37 -0
  581. package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -0
  582. package/dist/src/backend/trpc/workspace/files.trpc.js +111 -0
  583. package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -0
  584. package/dist/src/backend/trpc/workspace/git.trpc.d.ts +61 -0
  585. package/dist/src/backend/trpc/workspace/git.trpc.d.ts.map +1 -0
  586. package/dist/src/backend/trpc/workspace/git.trpc.js +126 -0
  587. package/dist/src/backend/trpc/workspace/git.trpc.js.map +1 -0
  588. package/dist/src/backend/trpc/workspace/ide.trpc.d.ts +32 -0
  589. package/dist/src/backend/trpc/workspace/ide.trpc.d.ts.map +1 -0
  590. package/dist/src/backend/trpc/workspace/ide.trpc.js +61 -0
  591. package/dist/src/backend/trpc/workspace/ide.trpc.js.map +1 -0
  592. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +85 -0
  593. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -0
  594. package/dist/src/backend/trpc/workspace/init.trpc.js +170 -0
  595. package/dist/src/backend/trpc/workspace/init.trpc.js.map +1 -0
  596. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts +52 -0
  597. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts.map +1 -0
  598. package/dist/src/backend/trpc/workspace/run-script.trpc.js +40 -0
  599. package/dist/src/backend/trpc/workspace/run-script.trpc.js.map +1 -0
  600. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +116 -0
  601. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -0
  602. package/dist/src/backend/trpc/workspace/workspace-helpers.js +56 -0
  603. package/dist/src/backend/trpc/workspace/workspace-helpers.js.map +1 -0
  604. package/dist/src/backend/trpc/workspace.trpc.d.ts +605 -0
  605. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -0
  606. package/dist/src/backend/trpc/workspace.trpc.js +270 -0
  607. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -0
  608. package/dist/src/backend/trpc/workspace.trpc.test.d.ts +2 -0
  609. package/dist/src/backend/trpc/workspace.trpc.test.d.ts.map +1 -0
  610. package/dist/src/backend/trpc/workspace.trpc.test.js +203 -0
  611. package/dist/src/backend/trpc/workspace.trpc.test.js.map +1 -0
  612. package/dist/src/backend/utils/conversation-analyzer.d.ts +4 -0
  613. package/dist/src/backend/utils/conversation-analyzer.d.ts.map +1 -0
  614. package/dist/src/backend/utils/conversation-analyzer.js +110 -0
  615. package/dist/src/backend/utils/conversation-analyzer.js.map +1 -0
  616. package/dist/src/backend/utils/conversation-analyzer.test.d.ts +2 -0
  617. package/dist/src/backend/utils/conversation-analyzer.test.d.ts.map +1 -0
  618. package/dist/src/backend/utils/conversation-analyzer.test.js +81 -0
  619. package/dist/src/backend/utils/conversation-analyzer.test.js.map +1 -0
  620. package/dist/src/cli/index.d.ts +3 -0
  621. package/dist/src/cli/index.d.ts.map +1 -0
  622. package/dist/src/cli/index.js +464 -0
  623. package/dist/src/cli/index.js.map +1 -0
  624. package/dist/src/lib/claude-types.d.ts +317 -0
  625. package/dist/src/lib/claude-types.d.ts.map +1 -0
  626. package/dist/src/lib/claude-types.js +351 -0
  627. package/dist/src/lib/claude-types.js.map +1 -0
  628. package/dist/src/shared/github-types.d.ts +69 -0
  629. package/dist/src/shared/github-types.d.ts.map +1 -0
  630. package/dist/src/shared/github-types.js +2 -0
  631. package/dist/src/shared/github-types.js.map +1 -0
  632. package/dist/src/shared/pending-request-types.d.ts +9 -0
  633. package/dist/src/shared/pending-request-types.d.ts.map +1 -0
  634. package/dist/src/shared/pending-request-types.js +2 -0
  635. package/dist/src/shared/pending-request-types.js.map +1 -0
  636. package/dist/tsconfig.backend.tsbuildinfo +1 -0
  637. package/package.json +200 -0
  638. package/prisma/migrations/20260127181600_init/migration.sql +119 -0
  639. package/prisma/migrations/20260128024701_add_pr_ci_status/migration.sql +39 -0
  640. package/prisma/migrations/20260129212214_add_composite_indexes/migration.sql +5 -0
  641. package/prisma/migrations/20260130134009_add_user_settings/migration.sql +15 -0
  642. package/prisma/migrations/20260130193212_add_workspace_run_script_fields/migration.sql +46 -0
  643. package/prisma/migrations/20260130212107_add_workspace_run_script_cleanup_field/migration.sql +2 -0
  644. package/prisma/migrations/20260131000000_consolidate_workspace_status/migration.sql +89 -0
  645. package/prisma/migrations/migration_lock.toml +3 -0
  646. package/prisma/schema.prisma +195 -0
  647. package/prompts/quick-actions/fetch-rebase.md +15 -0
  648. package/prompts/quick-actions/rename-branch.md +15 -0
  649. package/prompts/quick-actions/review.md +11 -0
  650. package/prompts/quick-actions/simplify.md +7 -0
  651. package/prompts/workflows/bugfix.md +57 -0
  652. package/prompts/workflows/explore.md +54 -0
  653. package/prompts/workflows/feature.md +54 -0
  654. package/prompts/workflows/followup.md +32 -0
  655. package/scripts/postinstall.mjs +63 -0
@@ -0,0 +1,599 @@
1
+ import { PassThrough } from 'node:stream';
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
+ import { ClaudeProtocol } from './protocol.js';
4
+ describe('ClaudeProtocol', () => {
5
+ let stdin;
6
+ let stdout;
7
+ let protocol;
8
+ beforeEach(() => {
9
+ stdin = new PassThrough();
10
+ stdout = new PassThrough();
11
+ protocol = new ClaudeProtocol(stdin, stdout);
12
+ protocol.start();
13
+ });
14
+ afterEach(() => {
15
+ protocol.stop();
16
+ });
17
+ describe('sendUserMessage', () => {
18
+ it('should send message with string content', () => {
19
+ const chunks = [];
20
+ stdin.on('data', (chunk) => chunks.push(chunk));
21
+ protocol.sendUserMessage('Hello, Claude!');
22
+ const written = Buffer.concat(chunks).toString();
23
+ const parsed = JSON.parse(written.trim());
24
+ expect(parsed.type).toBe('user');
25
+ expect(parsed.message.role).toBe('user');
26
+ expect(parsed.message.content).toBe('Hello, Claude!');
27
+ });
28
+ it('should send message with content array', () => {
29
+ const chunks = [];
30
+ stdin.on('data', (chunk) => chunks.push(chunk));
31
+ protocol.sendUserMessage([{ type: 'text', text: 'Hello!' }]);
32
+ const written = Buffer.concat(chunks).toString();
33
+ const parsed = JSON.parse(written.trim());
34
+ expect(parsed.type).toBe('user');
35
+ expect(parsed.message.role).toBe('user');
36
+ expect(parsed.message.content).toEqual([{ type: 'text', text: 'Hello!' }]);
37
+ });
38
+ it('should send message with multiple content items', () => {
39
+ const chunks = [];
40
+ stdin.on('data', (chunk) => chunks.push(chunk));
41
+ protocol.sendUserMessage([
42
+ { type: 'text', text: 'First part' },
43
+ { type: 'text', text: 'Second part' },
44
+ ]);
45
+ const written = Buffer.concat(chunks).toString();
46
+ const parsed = JSON.parse(written.trim());
47
+ expect(parsed.message.content).toHaveLength(2);
48
+ expect(parsed.message.content[0].text).toBe('First part');
49
+ expect(parsed.message.content[1].text).toBe('Second part');
50
+ });
51
+ it('should append newline to message for NDJSON format', () => {
52
+ const chunks = [];
53
+ stdin.on('data', (chunk) => chunks.push(chunk));
54
+ protocol.sendUserMessage('Test');
55
+ const written = Buffer.concat(chunks).toString();
56
+ expect(written.endsWith('\n')).toBe(true);
57
+ });
58
+ });
59
+ describe('sendSetPermissionMode', () => {
60
+ it('should send set_permission_mode request with bypassPermissions', () => {
61
+ const chunks = [];
62
+ stdin.on('data', (chunk) => chunks.push(chunk));
63
+ protocol.sendSetPermissionMode('bypassPermissions');
64
+ const written = Buffer.concat(chunks).toString();
65
+ const parsed = JSON.parse(written.trim());
66
+ expect(parsed.type).toBe('control_request');
67
+ expect(parsed.request.subtype).toBe('set_permission_mode');
68
+ expect(parsed.request.mode).toBe('bypassPermissions');
69
+ });
70
+ it('should send set_permission_mode request with default mode', () => {
71
+ const chunks = [];
72
+ stdin.on('data', (chunk) => chunks.push(chunk));
73
+ protocol.sendSetPermissionMode('default');
74
+ const written = Buffer.concat(chunks).toString();
75
+ const parsed = JSON.parse(written.trim());
76
+ expect(parsed.request.mode).toBe('default');
77
+ });
78
+ it('should send set_permission_mode request with acceptEdits mode', () => {
79
+ const chunks = [];
80
+ stdin.on('data', (chunk) => chunks.push(chunk));
81
+ protocol.sendSetPermissionMode('acceptEdits');
82
+ const written = Buffer.concat(chunks).toString();
83
+ const parsed = JSON.parse(written.trim());
84
+ expect(parsed.request.mode).toBe('acceptEdits');
85
+ });
86
+ it('should send set_permission_mode request with plan mode', () => {
87
+ const chunks = [];
88
+ stdin.on('data', (chunk) => chunks.push(chunk));
89
+ protocol.sendSetPermissionMode('plan');
90
+ const written = Buffer.concat(chunks).toString();
91
+ const parsed = JSON.parse(written.trim());
92
+ expect(parsed.request.mode).toBe('plan');
93
+ });
94
+ it('should include a unique request_id', () => {
95
+ const chunks = [];
96
+ stdin.on('data', (chunk) => chunks.push(chunk));
97
+ protocol.sendSetPermissionMode('bypassPermissions');
98
+ const written = Buffer.concat(chunks).toString();
99
+ const parsed = JSON.parse(written.trim());
100
+ expect(parsed.request_id).toBeDefined();
101
+ expect(typeof parsed.request_id).toBe('string');
102
+ expect(parsed.request_id.length).toBeGreaterThan(0);
103
+ });
104
+ });
105
+ describe('sendInterrupt', () => {
106
+ it('should send interrupt request', () => {
107
+ const chunks = [];
108
+ stdin.on('data', (chunk) => chunks.push(chunk));
109
+ protocol.sendInterrupt();
110
+ const written = Buffer.concat(chunks).toString();
111
+ const parsed = JSON.parse(written.trim());
112
+ expect(parsed.type).toBe('control_request');
113
+ expect(parsed.request.subtype).toBe('interrupt');
114
+ });
115
+ it('should include a unique request_id', () => {
116
+ const chunks = [];
117
+ stdin.on('data', (chunk) => chunks.push(chunk));
118
+ protocol.sendInterrupt();
119
+ const written = Buffer.concat(chunks).toString();
120
+ const parsed = JSON.parse(written.trim());
121
+ expect(parsed.request_id).toBeDefined();
122
+ expect(typeof parsed.request_id).toBe('string');
123
+ });
124
+ it('should generate different request_ids for multiple interrupts', () => {
125
+ const chunks = [];
126
+ stdin.on('data', (chunk) => chunks.push(chunk));
127
+ protocol.sendInterrupt();
128
+ protocol.sendInterrupt();
129
+ const written = Buffer.concat(chunks).toString();
130
+ const lines = written.trim().split('\n');
131
+ const parsed1 = JSON.parse(lines[0]);
132
+ const parsed2 = JSON.parse(lines[1]);
133
+ expect(parsed1.request_id).not.toBe(parsed2.request_id);
134
+ });
135
+ });
136
+ describe('sendControlResponse', () => {
137
+ it('should send control response with request_id', () => {
138
+ const chunks = [];
139
+ stdin.on('data', (chunk) => chunks.push(chunk));
140
+ protocol.sendControlResponse('req-123', { behavior: 'allow', updatedInput: {} });
141
+ const written = Buffer.concat(chunks).toString();
142
+ const parsed = JSON.parse(written.trim());
143
+ expect(parsed.type).toBe('control_response');
144
+ expect(parsed.response.request_id).toBe('req-123');
145
+ expect(parsed.response.subtype).toBe('success');
146
+ expect(parsed.response.response).toEqual({ behavior: 'allow', updatedInput: {} });
147
+ });
148
+ it('should send deny response with message', () => {
149
+ const chunks = [];
150
+ stdin.on('data', (chunk) => chunks.push(chunk));
151
+ protocol.sendControlResponse('req-456', {
152
+ behavior: 'deny',
153
+ message: 'Not allowed',
154
+ });
155
+ const written = Buffer.concat(chunks).toString();
156
+ const parsed = JSON.parse(written.trim());
157
+ expect(parsed.response.response.behavior).toBe('deny');
158
+ expect(parsed.response.response.message).toBe('Not allowed');
159
+ });
160
+ it('should send allow response with updated input', () => {
161
+ const chunks = [];
162
+ stdin.on('data', (chunk) => chunks.push(chunk));
163
+ protocol.sendControlResponse('req-789', {
164
+ behavior: 'allow',
165
+ updatedInput: { file_path: '/modified/path.txt' },
166
+ });
167
+ const written = Buffer.concat(chunks).toString();
168
+ const parsed = JSON.parse(written.trim());
169
+ expect(parsed.response.response.behavior).toBe('allow');
170
+ expect(parsed.response.response.updatedInput).toEqual({ file_path: '/modified/path.txt' });
171
+ });
172
+ it('should send hook response data', () => {
173
+ const chunks = [];
174
+ stdin.on('data', (chunk) => chunks.push(chunk));
175
+ protocol.sendControlResponse('req-hook', {
176
+ hookSpecificOutput: {
177
+ hookEventName: 'PreToolUse',
178
+ permissionDecision: 'allow',
179
+ permissionDecisionReason: 'Safe tool',
180
+ },
181
+ });
182
+ const written = Buffer.concat(chunks).toString();
183
+ const parsed = JSON.parse(written.trim());
184
+ expect(parsed.response.response.hookSpecificOutput.hookEventName).toBe('PreToolUse');
185
+ expect(parsed.response.response.hookSpecificOutput.permissionDecision).toBe('allow');
186
+ });
187
+ });
188
+ describe('sendInitialize', () => {
189
+ it('should send initialize request', () => {
190
+ const chunks = [];
191
+ stdin.on('data', (chunk) => chunks.push(chunk));
192
+ const initPromise = protocol.sendInitialize();
193
+ const written = Buffer.concat(chunks).toString();
194
+ const parsed = JSON.parse(written.trim());
195
+ expect(parsed.type).toBe('control_request');
196
+ expect(parsed.request.subtype).toBe('initialize');
197
+ expect(parsed.request_id).toBeDefined();
198
+ protocol.stop();
199
+ initPromise.catch(() => {
200
+ });
201
+ });
202
+ it('should send initialize request with hooks config', () => {
203
+ const chunks = [];
204
+ stdin.on('data', (chunk) => chunks.push(chunk));
205
+ const hooksConfig = {
206
+ PreToolUse: [{ matcher: 'Bash', hookCallbackIds: ['cb-1'] }],
207
+ Stop: [{ hookCallbackIds: ['cb-2'] }],
208
+ };
209
+ const initPromise = protocol.sendInitialize(hooksConfig);
210
+ const written = Buffer.concat(chunks).toString();
211
+ const parsed = JSON.parse(written.trim());
212
+ expect(parsed.request.hooks).toEqual(hooksConfig);
213
+ protocol.stop();
214
+ initPromise.catch(() => {
215
+ });
216
+ });
217
+ it('should resolve with response data when CLI responds', async () => {
218
+ const initPromise = protocol.sendInitialize();
219
+ await new Promise((resolve) => setImmediate(resolve));
220
+ const chunks = [];
221
+ stdin.on('data', (chunk) => chunks.push(chunk));
222
+ const responseData = {
223
+ commands: [{ name: 'test', description: 'Test command' }],
224
+ output_style: 'stream-json',
225
+ available_output_styles: ['stream-json', 'json'],
226
+ models: [{ value: 'claude-3', displayName: 'Claude 3', description: 'Latest' }],
227
+ account: { email: 'test@example.com', organization: 'Test', subscriptionType: 'pro' },
228
+ };
229
+ const stdin2 = new PassThrough();
230
+ const stdout2 = new PassThrough();
231
+ const protocol2 = new ClaudeProtocol(stdin2, stdout2, { requestTimeout: 1000 });
232
+ protocol2.start();
233
+ const chunks2 = [];
234
+ stdin2.on('data', (chunk) => chunks2.push(chunk.toString()));
235
+ const initPromise2 = protocol2.sendInitialize();
236
+ await new Promise((resolve) => setImmediate(resolve));
237
+ const sentMessage = JSON.parse(chunks2[0].trim());
238
+ const requestId = sentMessage.request_id;
239
+ const response = {
240
+ type: 'control_response',
241
+ response: {
242
+ subtype: 'success',
243
+ request_id: requestId,
244
+ response: responseData,
245
+ },
246
+ };
247
+ stdout2.write(`${JSON.stringify(response)}\n`);
248
+ const result = await initPromise2;
249
+ expect(result).toEqual(responseData);
250
+ protocol2.stop();
251
+ protocol.stop();
252
+ initPromise.catch(() => {
253
+ });
254
+ });
255
+ it('should reject on timeout', async () => {
256
+ const shortTimeoutProtocol = new ClaudeProtocol(stdin, stdout, { requestTimeout: 50 });
257
+ shortTimeoutProtocol.start();
258
+ await expect(shortTimeoutProtocol.sendInitialize()).rejects.toThrow('timed out');
259
+ shortTimeoutProtocol.stop();
260
+ });
261
+ });
262
+ describe('message parsing', () => {
263
+ it('should emit message event for valid JSON', async () => {
264
+ const messagePromise = new Promise((resolve) => {
265
+ protocol.on('message', resolve);
266
+ });
267
+ const msg = {
268
+ type: 'assistant',
269
+ session_id: 'abc',
270
+ message: { role: 'assistant', content: [] },
271
+ };
272
+ stdout.write(`${JSON.stringify(msg)}\n`);
273
+ const received = await messagePromise;
274
+ expect(received).toEqual(msg);
275
+ });
276
+ it('should emit control_request event for control requests', async () => {
277
+ const requestPromise = new Promise((resolve) => {
278
+ protocol.on('control_request', resolve);
279
+ });
280
+ const msg = {
281
+ type: 'control_request',
282
+ request_id: 'req-123',
283
+ request: {
284
+ subtype: 'can_use_tool',
285
+ tool_name: 'Read',
286
+ input: { file_path: '/test.txt' },
287
+ tool_use_id: 'tool-1',
288
+ },
289
+ };
290
+ stdout.write(`${JSON.stringify(msg)}\n`);
291
+ const received = await requestPromise;
292
+ expect(received).toEqual(msg);
293
+ });
294
+ it('should emit stream_event for stream events', async () => {
295
+ const eventPromise = new Promise((resolve) => {
296
+ protocol.on('stream_event', resolve);
297
+ });
298
+ const msg = {
299
+ type: 'stream_event',
300
+ session_id: 'abc',
301
+ event: {
302
+ type: 'content_block_delta',
303
+ index: 0,
304
+ delta: { type: 'text_delta', text: 'Hi' },
305
+ },
306
+ };
307
+ stdout.write(`${JSON.stringify(msg)}\n`);
308
+ const received = await eventPromise;
309
+ expect(received).toEqual(msg);
310
+ });
311
+ it('should emit control_cancel event for cancel requests', async () => {
312
+ const cancelPromise = new Promise((resolve) => {
313
+ protocol.on('control_cancel', resolve);
314
+ });
315
+ const msg = {
316
+ type: 'control_cancel_request',
317
+ request_id: 'req-to-cancel',
318
+ };
319
+ stdout.write(`${JSON.stringify(msg)}\n`);
320
+ const received = await cancelPromise;
321
+ expect(received).toEqual(msg);
322
+ });
323
+ it('should skip empty lines', async () => {
324
+ const messages = [];
325
+ protocol.on('message', (msg) => messages.push(msg));
326
+ stdout.write('\n');
327
+ stdout.write(' \n');
328
+ stdout.write('\t\n');
329
+ const msg = {
330
+ type: 'assistant',
331
+ session_id: 'test',
332
+ message: { role: 'assistant', content: [] },
333
+ };
334
+ stdout.write(`${JSON.stringify(msg)}\n`);
335
+ await new Promise((resolve) => setImmediate(resolve));
336
+ expect(messages).toHaveLength(1);
337
+ expect(messages[0]).toEqual(msg);
338
+ });
339
+ it('should handle malformed JSON gracefully', async () => {
340
+ const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => {
341
+ });
342
+ const messages = [];
343
+ protocol.on('message', (msg) => messages.push(msg));
344
+ stdout.write('{ invalid json }\n');
345
+ const validMsg = {
346
+ type: 'assistant',
347
+ session_id: 'test',
348
+ message: { role: 'assistant', content: [] },
349
+ };
350
+ stdout.write(`${JSON.stringify(validMsg)}\n`);
351
+ await new Promise((resolve) => setImmediate(resolve));
352
+ expect(messages).toHaveLength(1);
353
+ expect(messages[0]).toEqual(validMsg);
354
+ expect(consoleErrorSpy).toHaveBeenCalled();
355
+ consoleErrorSpy.mockRestore();
356
+ });
357
+ it('should emit both message and specific event for control requests', async () => {
358
+ const messages = [];
359
+ const controlRequests = [];
360
+ protocol.on('message', (msg) => messages.push(msg));
361
+ protocol.on('control_request', (req) => controlRequests.push(req));
362
+ const msg = {
363
+ type: 'control_request',
364
+ request_id: 'req-123',
365
+ request: {
366
+ subtype: 'can_use_tool',
367
+ tool_name: 'Bash',
368
+ input: { command: 'ls' },
369
+ },
370
+ };
371
+ stdout.write(`${JSON.stringify(msg)}\n`);
372
+ await new Promise((resolve) => setImmediate(resolve));
373
+ expect(messages).toHaveLength(1);
374
+ expect(controlRequests).toHaveLength(1);
375
+ });
376
+ it('should handle multiple messages in sequence', async () => {
377
+ const messages = [];
378
+ protocol.on('message', (msg) => messages.push(msg));
379
+ const msg1 = {
380
+ type: 'assistant',
381
+ session_id: 'test',
382
+ message: { role: 'assistant', content: [{ type: 'text', text: 'First' }] },
383
+ };
384
+ const msg2 = {
385
+ type: 'assistant',
386
+ session_id: 'test',
387
+ message: { role: 'assistant', content: [{ type: 'text', text: 'Second' }] },
388
+ };
389
+ stdout.write(`${JSON.stringify(msg1)}\n`);
390
+ stdout.write(`${JSON.stringify(msg2)}\n`);
391
+ await new Promise((resolve) => setImmediate(resolve));
392
+ expect(messages).toHaveLength(2);
393
+ expect(messages[0]).toEqual(msg1);
394
+ expect(messages[1]).toEqual(msg2);
395
+ });
396
+ });
397
+ describe('request tracking', () => {
398
+ it('should reject pending requests when protocol is stopped', async () => {
399
+ const stdin2 = new PassThrough();
400
+ const stdout2 = new PassThrough();
401
+ const protocol2 = new ClaudeProtocol(stdin2, stdout2, { requestTimeout: 60_000 });
402
+ protocol2.start();
403
+ const initPromise = protocol2.sendInitialize();
404
+ protocol2.stop();
405
+ await expect(initPromise).rejects.toThrow(/Protocol stopped|Connection closed/);
406
+ });
407
+ it('should reject pending requests when stream closes', async () => {
408
+ const stdin2 = new PassThrough();
409
+ const stdout2 = new PassThrough();
410
+ const protocol2 = new ClaudeProtocol(stdin2, stdout2, { requestTimeout: 60_000 });
411
+ protocol2.start();
412
+ const initPromise = protocol2.sendInitialize();
413
+ stdout2.end();
414
+ await expect(initPromise).rejects.toThrow('Connection closed');
415
+ });
416
+ it('should reject pending request when control_cancel is received', async () => {
417
+ const stdin2 = new PassThrough();
418
+ const stdout2 = new PassThrough();
419
+ const protocol2 = new ClaudeProtocol(stdin2, stdout2, { requestTimeout: 60_000 });
420
+ protocol2.start();
421
+ const chunks = [];
422
+ stdin2.on('data', (chunk) => chunks.push(chunk.toString()));
423
+ const initPromise = protocol2.sendInitialize();
424
+ await new Promise((resolve) => setImmediate(resolve));
425
+ const sentMessage = JSON.parse(chunks[0].trim());
426
+ const requestId = sentMessage.request_id;
427
+ const cancelMsg = {
428
+ type: 'control_cancel_request',
429
+ request_id: requestId,
430
+ };
431
+ stdout2.write(`${JSON.stringify(cancelMsg)}\n`);
432
+ await expect(initPromise).rejects.toThrow('Request cancelled by CLI');
433
+ protocol2.stop();
434
+ });
435
+ it('should emit close event when stream ends', async () => {
436
+ const closePromise = new Promise((resolve) => {
437
+ protocol.on('close', resolve);
438
+ });
439
+ stdout.end();
440
+ await closePromise;
441
+ expect(true).toBe(true);
442
+ });
443
+ });
444
+ describe('start/stop', () => {
445
+ it('should not start twice', () => {
446
+ const messages = [];
447
+ protocol.on('message', (msg) => messages.push(msg));
448
+ protocol.start();
449
+ const msg = {
450
+ type: 'assistant',
451
+ session_id: 'test',
452
+ message: { role: 'assistant', content: [] },
453
+ };
454
+ stdout.write(`${JSON.stringify(msg)}\n`);
455
+ return new Promise((resolve) => {
456
+ setImmediate(() => {
457
+ expect(messages).toHaveLength(1);
458
+ resolve();
459
+ });
460
+ });
461
+ });
462
+ it('should not stop twice without error', () => {
463
+ protocol.stop();
464
+ expect(() => protocol.stop()).not.toThrow();
465
+ });
466
+ it('should not emit events after stop', async () => {
467
+ const messages = [];
468
+ protocol.on('message', (msg) => messages.push(msg));
469
+ protocol.stop();
470
+ const msg = {
471
+ type: 'assistant',
472
+ session_id: 'test',
473
+ message: { role: 'assistant', content: [] },
474
+ };
475
+ stdout.write(`${JSON.stringify(msg)}\n`);
476
+ await new Promise((resolve) => setImmediate(resolve));
477
+ expect(messages).toHaveLength(0);
478
+ });
479
+ });
480
+ describe('error handling', () => {
481
+ it('should have error event handler registered for stdout', () => {
482
+ const stdin2 = new PassThrough();
483
+ const stdout2 = new PassThrough();
484
+ const protocol2 = new ClaudeProtocol(stdin2, stdout2);
485
+ const listenersBefore = stdout2.listenerCount('error');
486
+ protocol2.start();
487
+ const listenersAfter = stdout2.listenerCount('error');
488
+ expect(listenersAfter).toBeGreaterThan(listenersBefore);
489
+ protocol2.stop();
490
+ });
491
+ it('should forward error events from the protocol to listeners', () => {
492
+ const errorHandler = vi.fn();
493
+ protocol.on('error', errorHandler);
494
+ const testError = new Error('Test error');
495
+ protocol.emit('error', testError);
496
+ expect(errorHandler).toHaveBeenCalledWith(testError);
497
+ });
498
+ });
499
+ describe('protocol options', () => {
500
+ it('should use default request timeout of 60000ms', () => {
501
+ const defaultProtocol = new ClaudeProtocol(stdin, stdout);
502
+ expect(defaultProtocol).toBeDefined();
503
+ });
504
+ it('should use custom request timeout', async () => {
505
+ const customTimeout = 100;
506
+ const customProtocol = new ClaudeProtocol(stdin, stdout, { requestTimeout: customTimeout });
507
+ customProtocol.start();
508
+ const startTime = Date.now();
509
+ try {
510
+ await customProtocol.sendInitialize();
511
+ }
512
+ catch (_e) {
513
+ }
514
+ const elapsed = Date.now() - startTime;
515
+ expect(elapsed).toBeGreaterThanOrEqual(customTimeout - 10);
516
+ expect(elapsed).toBeLessThan(customTimeout + 100);
517
+ customProtocol.stop();
518
+ });
519
+ });
520
+ describe('backpressure handling', () => {
521
+ it('should reject pending send when stop() is called during backpressure', async () => {
522
+ const smallStdin = new PassThrough({ highWaterMark: 16 });
523
+ const stdout2 = new PassThrough();
524
+ const protocol2 = new ClaudeProtocol(smallStdin, stdout2);
525
+ protocol2.start();
526
+ smallStdin.pause();
527
+ const sendPromise = protocol2.sendUserMessage('x'.repeat(100));
528
+ await new Promise((resolve) => setTimeout(resolve, 10));
529
+ protocol2.stop();
530
+ await expect(sendPromise).rejects.toThrow('Protocol stopped');
531
+ });
532
+ it('should reject queued sends when stop() is called', async () => {
533
+ const smallStdin = new PassThrough({ highWaterMark: 16 });
534
+ const stdout2 = new PassThrough();
535
+ const protocol2 = new ClaudeProtocol(smallStdin, stdout2);
536
+ protocol2.start();
537
+ smallStdin.pause();
538
+ const sendPromise1 = protocol2.sendUserMessage('first'.repeat(20));
539
+ const sendPromise2 = protocol2.sendUserMessage('second'.repeat(20));
540
+ await new Promise((resolve) => setTimeout(resolve, 10));
541
+ protocol2.stop();
542
+ await expect(sendPromise1).rejects.toThrow('Protocol stopped');
543
+ await expect(sendPromise2).rejects.toThrow('Protocol stopped');
544
+ });
545
+ });
546
+ describe('edge cases', () => {
547
+ it('should handle messages with special characters', async () => {
548
+ const messagePromise = new Promise((resolve) => {
549
+ protocol.on('message', resolve);
550
+ });
551
+ const msg = {
552
+ type: 'assistant',
553
+ session_id: 'test',
554
+ message: {
555
+ role: 'assistant',
556
+ content: [{ type: 'text', text: 'Hello "world" with\nnewlines\tand\ttabs' }],
557
+ },
558
+ };
559
+ stdout.write(`${JSON.stringify(msg)}\n`);
560
+ const received = await messagePromise;
561
+ expect(received).toEqual(msg);
562
+ });
563
+ it('should handle messages with unicode', async () => {
564
+ const messagePromise = new Promise((resolve) => {
565
+ protocol.on('message', resolve);
566
+ });
567
+ const msg = {
568
+ type: 'assistant',
569
+ session_id: 'test',
570
+ message: {
571
+ role: 'assistant',
572
+ content: [{ type: 'text', text: 'Hello World!' }],
573
+ },
574
+ };
575
+ stdout.write(`${JSON.stringify(msg)}\n`);
576
+ const received = await messagePromise;
577
+ expect(received).toEqual(msg);
578
+ });
579
+ it('should handle very long messages', async () => {
580
+ const messagePromise = new Promise((resolve) => {
581
+ protocol.on('message', resolve);
582
+ });
583
+ const longText = 'x'.repeat(100_000);
584
+ const msg = {
585
+ type: 'assistant',
586
+ session_id: 'test',
587
+ message: {
588
+ role: 'assistant',
589
+ content: [{ type: 'text', text: longText }],
590
+ },
591
+ };
592
+ stdout.write(`${JSON.stringify(msg)}\n`);
593
+ const received = (await messagePromise);
594
+ const content = received.message.content;
595
+ expect(content[0].text).toBe(longText);
596
+ });
597
+ });
598
+ });
599
+ //# sourceMappingURL=protocol.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.test.js","sourceRoot":"","sources":["../../../../src/backend/claude/protocol.test.ts"],"names":[],"mappings":"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"}