hammoc 1.6.0 → 1.7.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 (226) hide show
  1. package/README.md +6 -4
  2. package/package.json +2 -2
  3. package/packages/client/dist/assets/{agentExampleHighlight-ltj9ce0U.js → agentExampleHighlight-7Olvqdpf.js} +1 -1
  4. package/packages/client/dist/assets/{commandTokenHighlight-ji_ViMb4.js → commandTokenHighlight-DtKwh4lx.js} +1 -1
  5. package/packages/client/dist/assets/{index-BT4RIi0U.js → index-Bee52CKG.js} +556 -510
  6. package/packages/client/dist/assets/index-CVy582lU.css +32 -0
  7. package/packages/client/dist/assets/{index-B-DiRGuz.js → index-DLHBUw8c.js} +1 -1
  8. package/packages/client/dist/assets/{snippetTokenHighlight-CP3v4o2g.js → snippetTokenHighlight-C8O688f4.js} +1 -1
  9. package/packages/client/dist/index.html +2 -2
  10. package/packages/client/dist/sw.js +2 -2
  11. package/packages/server/dist/_dbg_agent_rows.d.ts +2 -0
  12. package/packages/server/dist/_dbg_agent_rows.d.ts.map +1 -0
  13. package/packages/server/dist/_dbg_agent_rows.js +60 -0
  14. package/packages/server/dist/_dbg_agent_rows.js.map +1 -0
  15. package/packages/server/dist/_dbg_flicker.d.ts +2 -0
  16. package/packages/server/dist/_dbg_flicker.d.ts.map +1 -0
  17. package/packages/server/dist/_dbg_flicker.js +38 -0
  18. package/packages/server/dist/_dbg_flicker.js.map +1 -0
  19. package/packages/server/dist/_harness_cli.d.ts +2 -0
  20. package/packages/server/dist/_harness_cli.d.ts.map +1 -0
  21. package/packages/server/dist/_harness_cli.js +81 -0
  22. package/packages/server/dist/_harness_cli.js.map +1 -0
  23. package/packages/server/dist/_harness_provcard.d.ts +2 -0
  24. package/packages/server/dist/_harness_provcard.d.ts.map +1 -0
  25. package/packages/server/dist/_harness_provcard.js +67 -0
  26. package/packages/server/dist/_harness_provcard.js.map +1 -0
  27. package/packages/server/dist/_replay_dump.d.ts +2 -0
  28. package/packages/server/dist/_replay_dump.d.ts.map +1 -0
  29. package/packages/server/dist/_replay_dump.js +62 -0
  30. package/packages/server/dist/_replay_dump.js.map +1 -0
  31. package/packages/server/dist/app.d.ts.map +1 -1
  32. package/packages/server/dist/app.js +6 -0
  33. package/packages/server/dist/app.js.map +1 -1
  34. package/packages/server/dist/config/index.d.ts.map +1 -1
  35. package/packages/server/dist/config/index.js.map +1 -1
  36. package/packages/server/dist/controllers/projectController.d.ts.map +1 -1
  37. package/packages/server/dist/controllers/projectController.js +7 -1
  38. package/packages/server/dist/controllers/projectController.js.map +1 -1
  39. package/packages/server/dist/controllers/sessionController.d.ts.map +1 -1
  40. package/packages/server/dist/controllers/sessionController.js +16 -4
  41. package/packages/server/dist/controllers/sessionController.js.map +1 -1
  42. package/packages/server/dist/controllers/systemBrowseController.d.ts +33 -0
  43. package/packages/server/dist/controllers/systemBrowseController.d.ts.map +1 -0
  44. package/packages/server/dist/controllers/systemBrowseController.js +105 -0
  45. package/packages/server/dist/controllers/systemBrowseController.js.map +1 -0
  46. package/packages/server/dist/handlers/streamCallbacks.d.ts +2 -0
  47. package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
  48. package/packages/server/dist/handlers/streamCallbacks.js +17 -4
  49. package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
  50. package/packages/server/dist/handlers/websocket.d.ts +43 -3
  51. package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
  52. package/packages/server/dist/handlers/websocket.js +362 -92
  53. package/packages/server/dist/handlers/websocket.js.map +1 -1
  54. package/packages/server/dist/index.js +2 -0
  55. package/packages/server/dist/index.js.map +1 -1
  56. package/packages/server/dist/locales/en/server.json +17 -0
  57. package/packages/server/dist/locales/es/server.json +17 -0
  58. package/packages/server/dist/locales/ja/server.json +17 -0
  59. package/packages/server/dist/locales/ko/server.json +17 -0
  60. package/packages/server/dist/locales/pt/server.json +17 -0
  61. package/packages/server/dist/locales/zh-CN/server.json +17 -0
  62. package/packages/server/dist/routes/preferences.d.ts.map +1 -1
  63. package/packages/server/dist/routes/preferences.js +12 -2
  64. package/packages/server/dist/routes/preferences.js.map +1 -1
  65. package/packages/server/dist/routes/systemBrowse.d.ts +17 -0
  66. package/packages/server/dist/routes/systemBrowse.d.ts.map +1 -0
  67. package/packages/server/dist/routes/systemBrowse.js +22 -0
  68. package/packages/server/dist/routes/systemBrowse.js.map +1 -0
  69. package/packages/server/dist/services/bmadStatusService.d.ts.map +1 -1
  70. package/packages/server/dist/services/bmadStatusService.js +18 -7
  71. package/packages/server/dist/services/bmadStatusService.js.map +1 -1
  72. package/packages/server/dist/services/chatEngine.d.ts +81 -0
  73. package/packages/server/dist/services/chatEngine.d.ts.map +1 -0
  74. package/packages/server/dist/services/chatEngine.js +2 -0
  75. package/packages/server/dist/services/chatEngine.js.map +1 -0
  76. package/packages/server/dist/services/chatEngineFactory.d.ts +15 -0
  77. package/packages/server/dist/services/chatEngineFactory.d.ts.map +1 -0
  78. package/packages/server/dist/services/chatEngineFactory.js +28 -0
  79. package/packages/server/dist/services/chatEngineFactory.js.map +1 -0
  80. package/packages/server/dist/services/chatService.d.ts +34 -26
  81. package/packages/server/dist/services/chatService.d.ts.map +1 -1
  82. package/packages/server/dist/services/chatService.js +43 -103
  83. package/packages/server/dist/services/chatService.js.map +1 -1
  84. package/packages/server/dist/services/cliChatEngine.d.ts +198 -0
  85. package/packages/server/dist/services/cliChatEngine.d.ts.map +1 -0
  86. package/packages/server/dist/services/cliChatEngine.js +2977 -0
  87. package/packages/server/dist/services/cliChatEngine.js.map +1 -0
  88. package/packages/server/dist/services/cliGridCards.d.ts +87 -0
  89. package/packages/server/dist/services/cliGridCards.d.ts.map +1 -0
  90. package/packages/server/dist/services/cliGridCards.js +298 -0
  91. package/packages/server/dist/services/cliGridCards.js.map +1 -0
  92. package/packages/server/dist/services/cliGridRegion.d.ts +44 -0
  93. package/packages/server/dist/services/cliGridRegion.d.ts.map +1 -0
  94. package/packages/server/dist/services/cliGridRegion.js +94 -0
  95. package/packages/server/dist/services/cliGridRegion.js.map +1 -0
  96. package/packages/server/dist/services/cliModalDetect.d.ts +299 -0
  97. package/packages/server/dist/services/cliModalDetect.d.ts.map +1 -0
  98. package/packages/server/dist/services/cliModalDetect.js +583 -0
  99. package/packages/server/dist/services/cliModalDetect.js.map +1 -0
  100. package/packages/server/dist/services/cliScreenCache.d.ts +33 -0
  101. package/packages/server/dist/services/cliScreenCache.d.ts.map +1 -0
  102. package/packages/server/dist/services/cliScreenCache.js +48 -0
  103. package/packages/server/dist/services/cliScreenCache.js.map +1 -0
  104. package/packages/server/dist/services/cliScreenModel.d.ts +141 -0
  105. package/packages/server/dist/services/cliScreenModel.d.ts.map +1 -0
  106. package/packages/server/dist/services/cliScreenModel.js +196 -0
  107. package/packages/server/dist/services/cliScreenModel.js.map +1 -0
  108. package/packages/server/dist/services/cliScreenStallWatchdog.d.ts +41 -0
  109. package/packages/server/dist/services/cliScreenStallWatchdog.d.ts.map +1 -0
  110. package/packages/server/dist/services/cliScreenStallWatchdog.js +45 -0
  111. package/packages/server/dist/services/cliScreenStallWatchdog.js.map +1 -0
  112. package/packages/server/dist/services/cliSessionPool.d.ts +97 -0
  113. package/packages/server/dist/services/cliSessionPool.d.ts.map +1 -0
  114. package/packages/server/dist/services/cliSessionPool.js +278 -0
  115. package/packages/server/dist/services/cliSessionPool.js.map +1 -0
  116. package/packages/server/dist/services/cliSpinnerProgress.d.ts +41 -0
  117. package/packages/server/dist/services/cliSpinnerProgress.d.ts.map +1 -0
  118. package/packages/server/dist/services/cliSpinnerProgress.js +131 -0
  119. package/packages/server/dist/services/cliSpinnerProgress.js.map +1 -0
  120. package/packages/server/dist/services/fileRewind.d.ts +46 -0
  121. package/packages/server/dist/services/fileRewind.d.ts.map +1 -0
  122. package/packages/server/dist/services/fileRewind.js +77 -0
  123. package/packages/server/dist/services/fileRewind.js.map +1 -0
  124. package/packages/server/dist/services/historyParser.d.ts +11 -0
  125. package/packages/server/dist/services/historyParser.d.ts.map +1 -1
  126. package/packages/server/dist/services/historyParser.js +10 -8
  127. package/packages/server/dist/services/historyParser.js.map +1 -1
  128. package/packages/server/dist/services/imageStorageService.d.ts +12 -0
  129. package/packages/server/dist/services/imageStorageService.d.ts.map +1 -1
  130. package/packages/server/dist/services/imageStorageService.js +22 -0
  131. package/packages/server/dist/services/imageStorageService.js.map +1 -1
  132. package/packages/server/dist/services/projectService.d.ts +13 -1
  133. package/packages/server/dist/services/projectService.d.ts.map +1 -1
  134. package/packages/server/dist/services/projectService.js +32 -0
  135. package/packages/server/dist/services/projectService.js.map +1 -1
  136. package/packages/server/dist/services/queueService.d.ts.map +1 -1
  137. package/packages/server/dist/services/queueService.js +9 -3
  138. package/packages/server/dist/services/queueService.js.map +1 -1
  139. package/packages/server/dist/services/rateLimitProbeService.d.ts +15 -0
  140. package/packages/server/dist/services/rateLimitProbeService.d.ts.map +1 -1
  141. package/packages/server/dist/services/rateLimitProbeService.js +48 -19
  142. package/packages/server/dist/services/rateLimitProbeService.js.map +1 -1
  143. package/packages/server/dist/services/streamHandler.d.ts +8 -1
  144. package/packages/server/dist/services/streamHandler.d.ts.map +1 -1
  145. package/packages/server/dist/services/streamHandler.js +12 -5
  146. package/packages/server/dist/services/streamHandler.js.map +1 -1
  147. package/packages/server/dist/services/systemBrowseService.d.ts +91 -0
  148. package/packages/server/dist/services/systemBrowseService.d.ts.map +1 -0
  149. package/packages/server/dist/services/systemBrowseService.js +372 -0
  150. package/packages/server/dist/services/systemBrowseService.js.map +1 -0
  151. package/packages/server/dist/services/workspaceContext.d.ts +24 -0
  152. package/packages/server/dist/services/workspaceContext.d.ts.map +1 -0
  153. package/packages/server/dist/services/workspaceContext.js +109 -0
  154. package/packages/server/dist/services/workspaceContext.js.map +1 -0
  155. package/packages/server/dist/snippets/qa-review +2 -0
  156. package/packages/server/dist/utils/backgroundBlock.d.ts +29 -0
  157. package/packages/server/dist/utils/backgroundBlock.d.ts.map +1 -0
  158. package/packages/server/dist/utils/backgroundBlock.js +33 -0
  159. package/packages/server/dist/utils/backgroundBlock.js.map +1 -0
  160. package/packages/server/dist/utils/backgroundTaskTracker.d.ts +20 -0
  161. package/packages/server/dist/utils/backgroundTaskTracker.d.ts.map +1 -0
  162. package/packages/server/dist/utils/backgroundTaskTracker.js +40 -0
  163. package/packages/server/dist/utils/backgroundTaskTracker.js.map +1 -0
  164. package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts +7 -0
  165. package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts.map +1 -1
  166. package/packages/server/dist/utils/bundledBinaryModelSupport.js +9 -4
  167. package/packages/server/dist/utils/bundledBinaryModelSupport.js.map +1 -1
  168. package/packages/server/dist/utils/cliDebugLog.d.ts +38 -0
  169. package/packages/server/dist/utils/cliDebugLog.d.ts.map +1 -0
  170. package/packages/server/dist/utils/cliDebugLog.js +65 -0
  171. package/packages/server/dist/utils/cliDebugLog.js.map +1 -0
  172. package/packages/server/dist/utils/cliEngineUtils.d.ts +35 -0
  173. package/packages/server/dist/utils/cliEngineUtils.d.ts.map +1 -0
  174. package/packages/server/dist/utils/cliEngineUtils.js +38 -0
  175. package/packages/server/dist/utils/cliEngineUtils.js.map +1 -0
  176. package/packages/server/dist/utils/effortUtils.d.ts.map +1 -1
  177. package/packages/server/dist/utils/effortUtils.js +5 -3
  178. package/packages/server/dist/utils/effortUtils.js.map +1 -1
  179. package/packages/server/dist/utils/trailingThrottle.d.ts +21 -0
  180. package/packages/server/dist/utils/trailingThrottle.d.ts.map +1 -0
  181. package/packages/server/dist/utils/trailingThrottle.js +36 -0
  182. package/packages/server/dist/utils/trailingThrottle.js.map +1 -0
  183. package/packages/server/package.json +61 -59
  184. package/packages/server/resources/internals/image-storage.md +9 -0
  185. package/packages/server/resources/manual/02-chat.md +22 -3
  186. package/packages/server/resources/manual/03-sessions.md +1 -0
  187. package/packages/server/resources/manual/05-projects.md +12 -1
  188. package/packages/server/resources/manual/11-bmad-method-integration.md +2 -0
  189. package/packages/server/resources/manual/13-settings.md +57 -5
  190. package/packages/shared/dist/index.d.ts +3 -0
  191. package/packages/shared/dist/index.d.ts.map +1 -1
  192. package/packages/shared/dist/index.js +6 -0
  193. package/packages/shared/dist/index.js.map +1 -1
  194. package/packages/shared/dist/types/bmadStatus.d.ts +16 -0
  195. package/packages/shared/dist/types/bmadStatus.d.ts.map +1 -1
  196. package/packages/shared/dist/types/bmadStatus.js.map +1 -1
  197. package/packages/shared/dist/types/preferences.d.ts +14 -2
  198. package/packages/shared/dist/types/preferences.d.ts.map +1 -1
  199. package/packages/shared/dist/types/preferences.js +1 -0
  200. package/packages/shared/dist/types/preferences.js.map +1 -1
  201. package/packages/shared/dist/types/project.d.ts +7 -1
  202. package/packages/shared/dist/types/project.d.ts.map +1 -1
  203. package/packages/shared/dist/types/project.js.map +1 -1
  204. package/packages/shared/dist/types/sdk.d.ts +123 -11
  205. package/packages/shared/dist/types/sdk.d.ts.map +1 -1
  206. package/packages/shared/dist/types/sdk.js +64 -19
  207. package/packages/shared/dist/types/sdk.js.map +1 -1
  208. package/packages/shared/dist/types/streaming.d.ts +2 -2
  209. package/packages/shared/dist/types/streaming.d.ts.map +1 -1
  210. package/packages/shared/dist/types/streaming.js.map +1 -1
  211. package/packages/shared/dist/types/systemBrowse.d.ts +120 -0
  212. package/packages/shared/dist/types/systemBrowse.d.ts.map +1 -0
  213. package/packages/shared/dist/types/systemBrowse.js +57 -0
  214. package/packages/shared/dist/types/systemBrowse.js.map +1 -0
  215. package/packages/shared/dist/types/websocket.d.ts +38 -0
  216. package/packages/shared/dist/types/websocket.d.ts.map +1 -1
  217. package/packages/shared/dist/utils/interruptFiller.d.ts +30 -0
  218. package/packages/shared/dist/utils/interruptFiller.d.ts.map +1 -0
  219. package/packages/shared/dist/utils/interruptFiller.js +38 -0
  220. package/packages/shared/dist/utils/interruptFiller.js.map +1 -0
  221. package/packages/shared/dist/utils/toolResultContent.d.ts +22 -0
  222. package/packages/shared/dist/utils/toolResultContent.d.ts.map +1 -0
  223. package/packages/shared/dist/utils/toolResultContent.js +29 -0
  224. package/packages/shared/dist/utils/toolResultContent.js.map +1 -0
  225. package/scripts/run-integration-test.mjs +362 -362
  226. package/packages/client/dist/assets/index-DyNJ5jEW.css +0 -32
@@ -1 +1 @@
1
- {"version":3,"file":"chatService.d.ts","sourceRoot":"","sources":["../../src/services/chatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,UAAU,EAAuB,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACxI,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAaxB;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAqC3B,CAAC;AAEb,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAKrB,CAAC;AAEX;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA2C9E;AASD;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,YAAY,CAAsB;IAC1C,gFAAgF;IAChF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAExB,MAAM,GAAE,iBAAsB;IAO1C;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;;OAEG;YACW,mBAAmB;IASjC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAItC;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIzC;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;OAEG;IACI,WAAW,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,EACzB,UAAU,CAAC,EAAE,UAAU,GACtB,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC;IAmLjD;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,YAAY,CAAC;IAcxB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D;;;OAGG;IACG,wBAAwB,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,WAAgB,EACzB,UAAU,CAAC,EAAE,UAAU;IACvB,uEAAuE;IACvE,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,GAC3C,OAAO,CAAC,YAAY,CAAC;CA8BzB"}
1
+ {"version":3,"file":"chatService.d.ts","sourceRoot":"","sources":["../../src/services/chatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,UAAU,EAAuB,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAChK,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AASxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAYlD;;;GAGG;AACH,qBAAa,WAAY,YAAW,UAAU;IAC5C,OAAO,CAAC,gBAAgB,CAAqB;IAC7C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAW;IAC/B,OAAO,CAAC,eAAe,CAAW;IAClC,6GAA6G;IAC7G,OAAO,CAAC,kBAAkB,CAAU;IACpC,OAAO,CAAC,YAAY,CAAsB;IAC1C,gFAAgF;IAChF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAQ;gBAExB,MAAM,GAAE,iBAAsB;IAQ1C;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;;OAEG;YACW,mBAAmB;IASjC;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAItC;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIzC;;OAEG;IACH,mBAAmB,IAAI,MAAM,GAAG,SAAS;IAIzC;;OAEG;IACI,WAAW,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,EACzB,UAAU,CAAC,EAAE,UAAU,GACtB,cAAc,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC;IA4LjD;;OAEG;IACG,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,YAAY,CAAC;IAcxB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMhC;;OAEG;IACH,iBAAiB,IAAI,cAAc;IAInC;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAO5D;;;OAGG;IACG,wBAAwB,CAC5B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,WAAgB,EACzB,UAAU,CAAC,EAAE,UAAU;IACvB,uEAAuE;IACvE,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI;IAC5C;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;IAC1G,kGAAkG;IAClG,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,IAAI,KAAK,IAAI,EACzE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACxC,sBAAsB,CAAC,EAAE,MAAM,EAC/B,kBAAkB,CAAC,EAAE,OAAO,mCAAmC,EAAE,qBAAqB,EACtF,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,gBAAgB,EAAE,cAAc,KAAK,IAAI,GAC9E,OAAO,CAAC,YAAY,CAAC;IA+BxB;;;;;;;;;OASG;IACG,WAAW,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGpH"}
@@ -1,107 +1,14 @@
1
1
  import { query } from '@anthropic-ai/claude-agent-sdk';
2
- import { correctContextWindow, withNative1MSuffix } from '@hammoc/shared';
2
+ import { correctContextWindow, resolveEffectiveModel, effectiveModelIs1M } from '@hammoc/shared';
3
3
  import path from 'path';
4
- import os from 'os';
5
4
  import fs from 'fs/promises';
6
- import { execSync } from 'child_process';
7
5
  import { InvalidPathError, parseSDKError } from '../utils/errors.js';
8
6
  import { StreamHandler } from './streamHandler.js';
9
7
  import { SessionService } from './sessionService.js';
8
+ import { rewindSessionFiles } from './fileRewind.js';
9
+ import { DEFAULT_WORKSPACE_TEMPLATE, resolveTemplateVariables } from './workspaceContext.js';
10
10
  import { createLogger } from '../utils/logger.js';
11
11
  const log = createLogger('chatService');
12
- /**
13
- * Default workspace context template with system variables.
14
- * Variables like {gitBranch} are resolved at runtime via resolveTemplateVariables().
15
- */
16
- export const DEFAULT_WORKSPACE_TEMPLATE = [
17
- '',
18
- '# Hammoc Context',
19
- '',
20
- 'You are running inside Hammoc, a web-based IDE for AI-driven development workflows. Hammoc is built on Claude Code with first-class BMAD-METHOD V4 support, fully responsive (the user may instruct from a phone with very short messages), and delegates implementation work to you while the user reviews via the UI.',
21
- '',
22
- '## Code References in Text',
23
- 'IMPORTANT: When referencing files or code locations, use markdown link syntax to make them clickable:',
24
- '- For files: [filename.ts](src/filename.ts)',
25
- '- For specific lines: [filename.ts:42](src/filename.ts#L42)',
26
- '- For a range of lines: [filename.ts:42-51](src/filename.ts#L42-L51)',
27
- '- For folders: [src/utils/](src/utils/)',
28
- 'Unless explicitly asked for by the user, DO NOT USE backticks ` or HTML tags like code for file references - always use markdown [text](link) format.',
29
- "The URL links should be relative paths from the root of the user's workspace.",
30
- '',
31
- '## Hammoc-Specific Features the User May Invoke',
32
- 'When the user mentions any of these Hammoc concepts and you are unsure how the feature behaves, read the matching manual chapter (see Manual Reference below) before guessing:',
33
- '- **Snippets** (`%name`) — reusable prompt templates with arguments. Files in <project-root>/.hammoc/snippets/ and {homeDir}/.hammoc/snippets/',
34
- '- **Queue Runner** — batch script of prompts with `@`-prefixed commands (@new, @save, @load, @pause, @model, @delay, @pauseword, @loop/@end, @(/@), # comments)',
35
- '- **Project Board** — Kanban with Bug/Improvement issues, severity Low/Medium/High/Critical, status workflow Open → Draft → Approved → In Progress → Blocked → Review → Done → Closed',
36
- '- **BMAD-METHOD V4** — agile workflow with agents (SM, PM, Architect, Dev, QA, PO, etc.); .bmad-core directory holds the methodology files',
37
- '- **Permission Modes** — Plan / Ask (default) / Auto / Bypass, per-project overridable',
38
- '- **Sessions** — fork, rewind, summarize & continue, conversation branching',
39
- '',
40
- '## Manual Reference',
41
- 'The full Hammoc user manual is sharded by chapter and synced to:',
42
- ' {homeDir}/.hammoc/docs/manual/',
43
- 'Always start by reading the index — it maps each chapter to its trigger keywords and tags chapters as [agent] (worth reading) or [user-setup] (skip):',
44
- ' {homeDir}/.hammoc/docs/manual/INDEX.md',
45
- 'Read only the chapters you actually need. Do not load the full manual at once. The Read tool does not expand `~` so always use the absolute path above.',
46
- '',
47
- '## Internals Reference',
48
- 'Hammoc internal mechanisms that the user does not need to see but the agent may need to read or correlate (e.g. on-disk location of attached images) live separately at:',
49
- ' {homeDir}/.hammoc/docs/internals/',
50
- 'Index:',
51
- ' {homeDir}/.hammoc/docs/internals/INDEX.md',
52
- 'Read individual files only when the user request requires the underlying mechanism. Do not pre-load.',
53
- ].join('\n');
54
- /** Available template variables and their descriptions */
55
- export const TEMPLATE_VARIABLES = [
56
- { name: 'gitBranch', description: 'Current git branch name' },
57
- { name: 'gitMainBranch', description: 'Main branch name (main or master)' },
58
- { name: 'gitStatus', description: 'git status --short output (truncated to 30 lines)' },
59
- { name: 'homeDir', description: 'Absolute path to the user home directory' },
60
- ];
61
- /**
62
- * Resolve template variables like {gitBranch} using the project CWD.
63
- */
64
- export function resolveTemplateVariables(template, cwd) {
65
- const vars = {};
66
- // Home directory is OS-level and always resolvable, independent of git state.
67
- // The agent needs the absolute path to read ~/.hammoc/docs/manual/INDEX.md
68
- // via Read/Edit tools, which do not perform shell-style ~ expansion.
69
- vars.homeDir = os.homedir();
70
- try {
71
- const stdio = ['pipe', 'pipe', 'pipe'];
72
- const execOpts = { cwd, encoding: 'utf-8', timeout: 3000, stdio };
73
- vars.gitBranch = execSync('git rev-parse --abbrev-ref HEAD', execOpts).toString().trim();
74
- let mainBranch = 'main';
75
- try {
76
- execSync('git rev-parse --verify refs/heads/main', execOpts);
77
- mainBranch = 'main';
78
- }
79
- catch {
80
- try {
81
- execSync('git rev-parse --verify refs/heads/master', execOpts);
82
- mainBranch = 'master';
83
- }
84
- catch {
85
- // fallback
86
- }
87
- }
88
- vars.gitMainBranch = mainBranch;
89
- const gitStatus = execSync('git status --short', { ...execOpts, timeout: 5000 }).toString().trim();
90
- const statusLines = gitStatus ? gitStatus.split('\n') : [];
91
- vars.gitStatus = statusLines.length > 30
92
- ? [...statusLines.slice(0, 30), `... and ${statusLines.length - 30} more files`].join('\n')
93
- : (gitStatus || '(clean)');
94
- }
95
- catch {
96
- // Not a git repo or git not available
97
- vars.gitBranch = '(unknown)';
98
- vars.gitMainBranch = 'main';
99
- vars.gitStatus = '(not a git repo)';
100
- }
101
- return template.replace(/\{(\w+)\}/g, (match, varName) => {
102
- return vars[varName] ?? match;
103
- });
104
- }
105
12
  // Intentionally duplicated in streamHandler.ts for file independence
106
13
  function extractContextWindow(modelUsage) {
107
14
  if (!modelUsage)
@@ -118,6 +25,8 @@ export class ChatService {
118
25
  permissionMode;
119
26
  allowedTools;
120
27
  disallowedTools;
28
+ /** Auto-compaction master switch (both engines). Mirrors the autoCompactEnabled preference; default true. */
29
+ autoCompactEnabled;
121
30
  currentQuery = null;
122
31
  /** Warning message from rewindFiles failure (non-fatal, streaming continues) */
123
32
  rewindWarning = null;
@@ -126,6 +35,7 @@ export class ChatService {
126
35
  this.permissionMode = config.permissionMode ?? 'default';
127
36
  this.allowedTools = [];
128
37
  this.disallowedTools = [];
38
+ this.autoCompactEnabled = config.autoCompactEnabled ?? true;
129
39
  }
130
40
  /**
131
41
  * Initialize a new session with a project directory
@@ -189,6 +99,9 @@ export class ChatService {
189
99
  append,
190
100
  };
191
101
  })();
102
+ // Whether this request actually runs at 1M — drives both the `[1m]` suffix
103
+ // applied below and the contextWindow meter correction at the result message.
104
+ const is1M = effectiveModelIs1M(options.model);
192
105
  const queryOptions = {
193
106
  cwd: this.workingDirectory,
194
107
  permissionMode: this.permissionMode,
@@ -197,14 +110,19 @@ export class ChatService {
197
110
  disallowedTools: resolvedDisallowed.length > 0 ? resolvedDisallowed : undefined,
198
111
  maxTurns: options.maxTurns,
199
112
  abortController: options.abortController,
200
- // Append `[1m]` for native 1M models the SDK caps the auto-compact
201
- // window at the model's native size, and only recognizes 1M capacity
202
- // when the model string carries this suffix (see `fX()` in claude.exe).
203
- model: withNative1MSuffix(options.model) || undefined,
113
+ // Resolve the `[1m]` suffix that opts into the native 1M window. Centralized
114
+ // in resolveEffectiveModel: Opus auto-upgrades (free on Max), Sonnet stays
115
+ // bare unless the user explicitly opted in (Sonnet 1M bills to usage credits).
116
+ model: resolveEffectiveModel(options.model) || undefined,
204
117
  resume: options.resume,
205
118
  sessionId: options.sessionId,
206
119
  includePartialMessages: true, // Enable real-time streaming
207
120
  settingSources: ['user', 'project', 'local'], // Load settings & .claude/commands/ for skill discovery
121
+ // Auto-compaction master switch — inline flag-settings layer (highest priority among
122
+ // user-controlled settings, equivalent to the CLI's --settings). The bundled engine honors
123
+ // `autoCompactEnabled` (default true); false stops the SDK auto-compacting as context fills.
124
+ // Mirrors the user preference; sits on top of settingSources without replacing them.
125
+ settings: { autoCompactEnabled: this.autoCompactEnabled },
208
126
  systemPrompt,
209
127
  maxThinkingTokens: options.maxThinkingTokens,
210
128
  maxBudgetUsd: options.maxBudgetUsd,
@@ -310,7 +228,7 @@ export class ChatService {
310
228
  cacheReadInputTokens: msg.usage.cache_read_input_tokens ?? 0,
311
229
  cacheCreationInputTokens: msg.usage.cache_creation_input_tokens ?? 0,
312
230
  totalCostUSD: msg.total_cost_usd,
313
- contextWindow: correctContextWindow(extractContextWindow(msg.modelUsage), msg.modelUsage ? Object.keys(msg.modelUsage)[0] : undefined),
231
+ contextWindow: correctContextWindow(extractContextWindow(msg.modelUsage), is1M),
314
232
  },
315
233
  };
316
234
  }
@@ -366,8 +284,17 @@ export class ChatService {
366
284
  */
367
285
  async sendMessageWithCallbacks(content, callbacks, options = {}, canUseTool,
368
286
  /** Called for every raw SDK message yielded — use for timeout reset */
369
- onRawMessage) {
370
- const streamHandler = new StreamHandler();
287
+ onRawMessage,
288
+ /**
289
+ * Story 32.7: CLI-engine generation-progress callback. Accepted to satisfy the
290
+ * `ChatEngine` interface but intentionally UNUSED here — SDK mode streams real
291
+ * tokens, so a derived "↓ N tokens" counter adds nothing (regression-0). `_`-prefixed
292
+ * so eslint no-unused-vars stays clean.
293
+ */
294
+ _onGenerationProgress,
295
+ /** Story 36.2: CLI phase callback — accepted for the ChatEngine interface, UNUSED in SDK mode. */
296
+ _onPhase, _onScreenFrame, _screenFrameThrottleMs, _backgroundTracker, _onPermissionModeSync) {
297
+ const streamHandler = new StreamHandler(effectiveModelIs1M(options.model));
371
298
  const generator = this.sendMessage(content, options, canUseTool);
372
299
  // Wrapper generator: calls onRawMessage for every SDK message,
373
300
  // and emits heartbeat while waiting for generator.next() to confirm SDK is alive.
@@ -391,6 +318,19 @@ export class ChatService {
391
318
  }
392
319
  return streamHandler.processStream(wrapGenerator(), callbacks);
393
320
  }
321
+ /**
322
+ * Standalone file rewind (no message send) — backs the `session:rewind-files`
323
+ * handler. Delegates to the shared billing-neutral `rewindSessionFiles` helper
324
+ * (Story 32.5) so the SDK and CLI engines share ONE rewind mechanism and one
325
+ * `--session-id`+`--resume` footgun guard (no comment drift between engines).
326
+ *
327
+ * This is the *separate* operation from the inline rewind-before-send path
328
+ * (`sendMessage`'s `options.rewindToMessageUuid`, whose outcome surfaces via
329
+ * `rewindWarning`) — do not conflate the two.
330
+ */
331
+ async rewindFiles(params) {
332
+ return rewindSessionFiles(params, this.workingDirectory);
333
+ }
394
334
  }
395
335
  /**
396
336
  * Create an AsyncIterable prompt with text and image content for SDK query()
@@ -1 +1 @@
1
- {"version":3,"file":"chatService.js","sourceRoot":"","sources":["../../src/services/chatService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatService.js","sourceRoot":"","sources":["../../src/services/chatService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * CliChatEngine (Epic 32 — Story 32.4)
3
+ *
4
+ * The **second `ChatEngine` implementation** behind the Epic 32 seam — the CLI
5
+ * (subscription-pool) conversation engine. Where `ChatService` drives the Claude
6
+ * Agent SDK, this engine:
7
+ * 1. spawns an *interactive* `claude` TUI in a PTY (no `--print` — headless
8
+ * output uses the same billing as the SDK, which Epic 32 exists to avoid),
9
+ * 2. injects the prompt over stdin,
10
+ * 3. watches that session's JSONL file and re-emits each completed `assistant`
11
+ * content block through the **existing `StreamCallbacks`** (so the client and
12
+ * `@hammoc/shared` need zero changes — the wire shape matches SDK mode).
13
+ *
14
+ * Granularity differs from SDK mode by design: the session JSONL only gains a line
15
+ * when a content block *completes*, so text arrives as one chunk per block rather
16
+ * than token-by-token (accepted constraint, spike §1/§9-2). SDK mode keeps real
17
+ * token streaming.
18
+ *
19
+ * The CLI engine grows by story: 32.4 built the core happy-path (prompt → block
20
+ * response); 32.5 fills standalone rewind (`rewindFiles`, below — billing-neutral
21
+ * SDK file-rewind reuse); 32.6 wires the interactive tool-approval round-trip
22
+ * (`canUseTool` web dialog) — **constrained**: the permission prompt leaves NO
23
+ * session-JSONL signal (the `tool_use` line is written only *after* approval —
24
+ * spike §10 closed by Story 32.6 Task 1), so the dialog is detected from the PTY
25
+ * ANSI *state* (§6.2-class modal, §7.1-sanctioned state-signal use) and driven by
26
+ * keys (Enter = approve, Esc = deny); the scraped tool name/input are best-effort
27
+ * and `updatedInput` is unsupported (claude runs its own tool). See
28
+ * `handlePermission` below for the full constraint list. 32.7 adds the generation
29
+ * *progress* signal (the spinner's "↓ N tokens · Ns", read from the same PTY frames
30
+ * and emitted on value change via `onGenerationProgress` — see `emitProgressFromGrid`,
31
+ * whose token source became the Story 37.1 screen grid in Story 37.2) and
32
+ * *verifies* thinking display (mechanism-complete; see the thinking branch in
33
+ * `handleAssistantLine`). 32.8 wires the last interactive flow — the `AskUserQuestion`
34
+ * selection modal (`canUseTool` web question card) — also **constrained**: like the
35
+ * permission dialog it leaves no pre-answer JSONL signal (verified Task 1), so the modal
36
+ * is detected from the PTY ANSI state and its questions/options are scraped, the reused
37
+ * `canUseTool` answer is translated to menu keys (single-select ↓+Enter; multiSelect
38
+ * Space-toggle + → Submit), and any non-drivable case (multi-question, unparseable,
39
+ * custom "Other") is Esc-cancelled so the modal can never deadlock the response path.
40
+ * See `handleQuestion` below. 32.9 fills the last gap 32.6 AC5 left as "(optional) live
41
+ * `onToolUse` parity, only when it does not collide with the permission order / regression-0":
42
+ * `handleAssistantLine` now *emits* each tool_use block (and the drain emits each tool_result
43
+ * line) through the SAME `onToolUse`/`onToolResult` callbacks SDK mode uses (mapping copied
44
+ * from `streamHandler`), so a tool card renders live — which file is being written shows the
45
+ * moment it happens, not only on reload. The verification gate (Task 1) found the permission
46
+ * card's id namespace (synthetic `cli-perm-N`) and the real tool id (`toolu_…`) can never
47
+ * match, so id-merge is impossible; the honest floor is taken: a tool that went through the
48
+ * 32.6 permission dialog is *suppressed* live (it already has the standalone permission card
49
+ * and renders on reload), while auto-approved / safe tools (Bypass mode; read-only/auto-
50
+ * approved tools in default mode) emit live. No double-render: `stream:complete-messages`
51
+ * replaces the live cards with the authoritative reload at turn end (same as SDK mode), so
52
+ * client + `@hammoc/shared` are unchanged — the engine only *calls* the existing callbacks.
53
+ *
54
+ * [Source: docs/spike-32.1-cli-output-source.md#7.1; docs/prd/epic-32-cli-engine-core.md#Story 32.4+]
55
+ */
56
+ import type { CanUseTool, RewindFilesResult } from '@anthropic-ai/claude-agent-sdk';
57
+ import type { ChatServiceConfig, ChatOptions, ChatResponse, PermissionMode, StreamCallbacks } from '@hammoc/shared';
58
+ import { type ParsedQuestion } from './cliModalDetect.js';
59
+ import type { BackgroundTaskTracker } from '../utils/backgroundTaskTracker.js';
60
+ import type { ChatEngine } from './chatEngine.js';
61
+ import { CliDebugLog } from '../utils/cliDebugLog.js';
62
+ /**
63
+ * Translate the user's answer (canUseTool `updatedInput.answers`) into the TUI menu key
64
+ * sequence for a SINGLE-question modal (Story 32.8). The highlight starts on option 0 (verified
65
+ * Task 1). Returns null when the answer maps to no scraped option (e.g. a custom "Other" entry) —
66
+ * not safely drivable, so the caller cancels (Esc) rather than risk a wrong selection.
67
+ */
68
+ export declare function buildQuestionKeys(parsed: ParsedQuestion, answer: string | string[] | undefined): string[] | null;
69
+ /**
70
+ * ISSUE-99 — translate a MULTI-question answer set into the per-tab OPTION keys (↓ / Space) for each
71
+ * question, leaving the tab navigation (→ between tabs, final Enter) to the engine's grid-verified
72
+ * driver (`handleMultiQuestion`). Returns one key array per question, in tab order; the engine drives
73
+ * array i on tab i, then advances. Returns null when ANY question's answer maps to no listed option
74
+ * (custom/Other) — a multi-question modal submits every question at once, so one unmappable answer
75
+ * cancels the WHOLE modal (Esc) rather than half-answering it.
76
+ *
77
+ * The composed key model is derived from the verified single-question primitives (Task 1, claude
78
+ * v2.1.162): within each tab the highlight starts at option 0; a multiSelect question Space-toggles
79
+ * each pick; a SINGLE-select question only highlights its pick (↓×index) — the highlighted option is
80
+ * the recorded answer, committed by Enter (explicit per-tab confirmation). The original assumption
81
+ * that "highlight = recorded answer" (no confirmation key needed) was disproven by JSONL evidence:
82
+ * multiSelect answers (Space-toggled) were recorded, but single-select answers (highlight-only)
83
+ * were silently dropped. Enter on a single-select tab confirms THAT TAB (does not trigger Submit);
84
+ * verified by owner manual testing (2026-06-20).
85
+ */
86
+ export declare function buildMultiQuestionKeys(questions: ParsedQuestion[], answers: Record<string, string | string[]> | undefined): string[][] | null;
87
+ export declare class CliChatEngine implements ChatEngine {
88
+ private workingDirectory;
89
+ private permissionMode;
90
+ /**
91
+ * Story 37.5 fix — claude carries `bypassPermissions` in its live Shift+Tab cycle ONLY when the
92
+ * session was SPAWNED in bypass. We ALWAYS spawn in bypass (SDK parity — every mode is reachable
93
+ * live; the on-screen mode is aligned to the user's button mode before injection), so this is
94
+ * always true once a turn starts. The cycle-index helper reads it to treat bypass as on-cycle.
95
+ */
96
+ private cycleHasBypass;
97
+ /**
98
+ * Story 37.5: the live control surface for the in-flight turn (set at spawn, cleared at
99
+ * teardown). Null between turns — `setPermissionMode` reads it to decide live closed loop
100
+ * vs. store-only fallback. See `CliLiveControl`.
101
+ */
102
+ private activeCliControl;
103
+ /**
104
+ * Story 37.5 re-design — true while the live permission-mode driver loop is running. A concurrent
105
+ * `setPermissionMode` then just retargets (`this.permissionMode`) instead of starting a second
106
+ * driver that would fight the first over the same PTY's mode cycle.
107
+ */
108
+ private permissionLoopRunning;
109
+ /**
110
+ * Story 33.3: user-configured `claude` binary path override (global preference).
111
+ * Forwarded to every spawn; empty/undefined = auto-detect, invalid = graceful
112
+ * fallback in `cliSessionPool.resolveClaudeBinary`.
113
+ */
114
+ private cliBinaryPath;
115
+ /**
116
+ * When true (default), inject `--settings '{"showThinkingSummaries":true}'` so the
117
+ * interactive claude is asked to surface thinking summaries (Opus 4.7+ omit them by
118
+ * default). Session-scoped via `--settings` — the global config is untouched. NOTE:
119
+ * the actual effect depends on the server honoring the parameter for the active auth;
120
+ * a real CLI-mode chat must confirm it (the interactive PTY could not be reproduced in
121
+ * the dev shell — no Windows console there; a real entrypoint:cli session was observed
122
+ * to surface thinking, so this is expected to work).
123
+ */
124
+ private cliShowThinkingSummaries;
125
+ private cliResumeChoice;
126
+ /**
127
+ * Auto-compaction master switch (shared autoCompactEnabled preference; default true). Injected
128
+ * into the spawn's `--settings` blob — the bundled engine's enable resolver honors it, so OFF
129
+ * stops the interactive claude from auto-compacting when the context fills. Applies to BOTH
130
+ * engines (the SDK engine reads the same preference and passes it as an inline `settings`).
131
+ */
132
+ private autoCompactEnabled;
133
+ private planModeBypassBehavior;
134
+ /** Current turn's CLI decision log — populated inside sendMessageWithCallbacks, read by websocket handler. */
135
+ currentDebugLog: CliDebugLog | null;
136
+ /**
137
+ * CLI mode performs no inline rewind-before-send, so this stays null. (Standalone
138
+ * rewind is the separate `rewindFiles` operation below — implemented in Story 32.5.)
139
+ */
140
+ rewindWarning: string | null;
141
+ constructor(config?: ChatServiceConfig);
142
+ getPermissionMode(): PermissionMode;
143
+ setPermissionMode(mode: PermissionMode): Promise<void>;
144
+ /**
145
+ * Story 37.5 (re-design 2026-06-14) — drive claude's live permission mode toward the stored
146
+ * target by stepping ONE Shift+Tab (CSI Z) at a time and RE-READING the screen each step, until
147
+ * the target mode is the one shown. Self-corrects a misread or a slow frame (the next step
148
+ * re-checks) and never over-shoots permanently (it stops the moment the target is on screen). The
149
+ * target is re-read from `this.permissionMode` every step, so a mid-flight retarget (the user
150
+ * cycling Ask→Accept Edits→Plan→Auto within one turn) is followed live without restarting the driver.
151
+ *
152
+ * Replaces the old "read once → compute the N-step distance → inject the whole burst → verify
153
+ * once" loop, whose single up-front read made it brittle: one bad current-mode read sent the wrong
154
+ * key count with no chance to correct (the source of the mid-generation echo). Bounded by a step
155
+ * ceiling so a persistently-misreading screen (or one that never settles) can't spin forever — the
156
+ * next spawn's `--permission-mode` is the backstop in that abnormal case.
157
+ */
158
+ private drivePermissionModeToTarget;
159
+ /**
160
+ * Standalone file rewind (Story 32.5). Delegates to the shared billing-neutral
161
+ * `rewindSessionFiles` helper: a throwaway `query({ prompt: '' })` resumed only to
162
+ * drive its file-checkpoint rewind (0 tokens → no conflict with CLI mode's
163
+ * subscription-pool purpose). This is the documented exception to 32.4's "the CLI
164
+ * engine never spawns the SDK directly" rule, and the ONLY programmatic rewind path
165
+ * (interactive claude exposes no non-interactive rewind flag; `/rewind` is an ANSI
166
+ * picker; control-protocol rewind is headless-only — verified §AC2). Verified
167
+ * billing-neutral + working against a real CLI-created session (AC4).
168
+ *
169
+ * Separate from the inline rewind-before-send (`rewindWarning`, always null for
170
+ * CLI) — the "two rewinds"; do not conflate.
171
+ */
172
+ rewindFiles(params: {
173
+ sessionId: string;
174
+ messageUuid: string;
175
+ dryRun?: boolean;
176
+ }): Promise<RewindFilesResult>;
177
+ /**
178
+ * Core: inject `content` into an interactive claude PTY, watch the session JSONL,
179
+ * and re-emit completed assistant blocks through `callbacks`. Resolves with the
180
+ * assembled `ChatResponse` on `stop_reason:"end_turn"`. When `canUseTool` is
181
+ * provided, an interactive permission dialog detected on the PTY screen is routed
182
+ * through it (Story 32.6 — reuses the existing web round-trip; see
183
+ * `handlePermission`). `onRawMessage` is the *generation-activity* signal (S-1): it
184
+ * resets the browser path's inactivity timer while a turn streams. It no longer keeps
185
+ * an input-wait alive — Story 35.1 pauses that timer for the whole input-wait.
186
+ * `onGenerationProgress` (Story 32.7) is the transient "↓ N tokens · Ns" signal
187
+ * read from the same spinner frames — emitted on value change (see `emitProgressFromGrid`).
188
+ * `onPhase` (Story 36.2) reports the pre-generation boot/inject phase
189
+ * (launching → submitting → waiting → null) so the UI shows "working" through the ~3s
190
+ * before the first block instead of a frozen spinner; null hands off to onGenerationProgress.
191
+ */
192
+ sendMessageWithCallbacks(content: string, callbacks: StreamCallbacks, options?: ChatOptions, canUseTool?: CanUseTool, onRawMessage?: (messageType: string) => void, onGenerationProgress?: (progress: {
193
+ tokens: number;
194
+ elapsedSeconds: number;
195
+ thinking?: boolean;
196
+ }) => void, onPhase?: (phase: 'launching' | 'submitting' | 'waiting' | null) => void, onScreenFrame?: (frame: string) => void, screenFrameThrottleMs?: number, backgroundTracker?: BackgroundTaskTracker, onPermissionModeSync?: (mode: PermissionMode) => void): Promise<ChatResponse>;
197
+ }
198
+ //# sourceMappingURL=cliChatEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliChatEngine.d.ts","sourceRoot":"","sources":["../../src/services/cliChatEngine.ts"],"names":[],"mappings":"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"}