hammoc 1.8.3 → 1.9.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 (304) hide show
  1. package/README.md +9 -6
  2. package/package.json +1 -1
  3. package/packages/client/dist/assets/MermaidViewer-B-LwclIl.js +7 -0
  4. package/packages/client/dist/assets/PdfViewer-C3Nymwn3.js +12 -0
  5. package/packages/client/dist/assets/PdfViewer-QCQEGvBO.css +1 -0
  6. package/packages/client/dist/assets/abnfDiagram-VRR7QNED-GfhY_hnV.js +1 -0
  7. package/packages/client/dist/assets/{agentExampleHighlight-B0EHAvjx.js → agentExampleHighlight-CyhVLy0_.js} +1 -1
  8. package/packages/client/dist/assets/arc-8nyjXGC3.js +1 -0
  9. package/packages/client/dist/assets/architectureDiagram-ZJ3FMSHR-B4onXLm4.js +36 -0
  10. package/packages/client/dist/assets/blockDiagram-677ZJIJ3-D0D6ncaN.js +132 -0
  11. package/packages/client/dist/assets/c4Diagram-LMCZKHZV-CE7Tip-_.js +10 -0
  12. package/packages/client/dist/assets/channel-CPjlbdOo.js +1 -0
  13. package/packages/client/dist/assets/chunk-2Q5K7J3B-4rW1da1Z.js +1 -0
  14. package/packages/client/dist/assets/chunk-32BRIVSS-JuzxS4QA.js +1 -0
  15. package/packages/client/dist/assets/chunk-5VM5RSS4-WRNf-xsi.js +15 -0
  16. package/packages/client/dist/assets/chunk-EX3LRPZG-BDWPlBKO.js +231 -0
  17. package/packages/client/dist/assets/chunk-JWPE2WC7-B8nCyQAc.js +1 -0
  18. package/packages/client/dist/assets/chunk-MOJQB5TN-7c-yriHe.js +88 -0
  19. package/packages/client/dist/assets/chunk-RYQCIY6F-LTDywRs7.js +1 -0
  20. package/packages/client/dist/assets/chunk-V7JOEXUC-DjVgQpjl.js +206 -0
  21. package/packages/client/dist/assets/chunk-VR4S4FIN-7jDdkUpx.js +1 -0
  22. package/packages/client/dist/assets/chunk-XXDRQBXY-ENKV2O8a.js +1 -0
  23. package/packages/client/dist/assets/classDiagram-OUVF2IWQ-C0PbC7Pi.js +1 -0
  24. package/packages/client/dist/assets/classDiagram-v2-EOCWNBFH-C0PbC7Pi.js +1 -0
  25. package/packages/client/dist/assets/{commandTokenHighlight-BFQeQmwm.js → commandTokenHighlight-DGP0RKx0.js} +1 -1
  26. package/packages/client/dist/assets/cose-bilkent-JH36ORCC-CQTNdQ-g.js +1 -0
  27. package/packages/client/dist/assets/cynefin-VYW2F7L2-BYlAJRcO.js +178 -0
  28. package/packages/client/dist/assets/cynefinDiagram-TSTJHNR4-7zyUTflT.js +62 -0
  29. package/packages/client/dist/assets/cytoscape.esm-DTSO7Bv0.js +331 -0
  30. package/packages/client/dist/assets/dagre-VKFMJZFB-DyZir42W.js +4 -0
  31. package/packages/client/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
  32. package/packages/client/dist/assets/diagram-FQU43EPY-CmNAU8Nw.js +3 -0
  33. package/packages/client/dist/assets/diagram-G47NLZAW-B0EIk03o.js +24 -0
  34. package/packages/client/dist/assets/diagram-NH7WQ7WH-Dulv0f1N.js +24 -0
  35. package/packages/client/dist/assets/diagram-OA4YK3LP-DEEcMLgi.js +30 -0
  36. package/packages/client/dist/assets/diagram-WEI45ONY-ZYebAZ93.js +41 -0
  37. package/packages/client/dist/assets/ebnfDiagram-CCIWWBDH-DCHpt3qn.js +1 -0
  38. package/packages/client/dist/assets/erDiagram-Q63AITRT-B6T87-48.js +85 -0
  39. package/packages/client/dist/assets/flowDiagram-23GEKE2U-DAcW6mKJ.js +156 -0
  40. package/packages/client/dist/assets/ganttDiagram-NO4QXBWP-Ct_eFFcM.js +292 -0
  41. package/packages/client/dist/assets/gitGraphDiagram-IHSO6WYX-BGi8Fdm2.js +106 -0
  42. package/packages/client/dist/assets/graph-C9eacEi8.js +1 -0
  43. package/packages/client/dist/assets/index-CtMiUbMJ.js +1671 -0
  44. package/packages/client/dist/assets/index-hTu6ZG2N.js +2 -0
  45. package/packages/client/dist/assets/index-oBa2uNlv.css +32 -0
  46. package/packages/client/dist/assets/infoDiagram-FWYZ7A6U-CqvwbXJn.js +2 -0
  47. package/packages/client/dist/assets/init-Gi6I4Gst.js +1 -0
  48. package/packages/client/dist/assets/ishikawaDiagram-FXEZZL3T-CHhr5ioQ.js +70 -0
  49. package/packages/client/dist/assets/journeyDiagram-5HDEW3XC-d20NzZAd.js +139 -0
  50. package/packages/client/dist/assets/kanban-definition-HUTT4EX6-CHx3wOer.js +89 -0
  51. package/packages/client/dist/assets/katex-C5jXJg4s.js +257 -0
  52. package/packages/client/dist/assets/layout-DEXfKzaS.js +1 -0
  53. package/packages/client/dist/assets/linear-Cnp1E9M4.js +1 -0
  54. package/packages/client/dist/assets/map-Czzmt4hB.js +1 -0
  55. package/packages/client/dist/assets/mermaid.core-jAhLhPYr.js +314 -0
  56. package/packages/client/dist/assets/mindmap-definition-LN4V7U3C-zi30RPoJ.js +96 -0
  57. package/packages/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  58. package/packages/client/dist/assets/pdf.worker.min-qwK7q_zL.mjs +28 -0
  59. package/packages/client/dist/assets/pegDiagram-2B236MQR-4gKLzTqu.js +1 -0
  60. package/packages/client/dist/assets/pieDiagram-ENE6RG2P-DRDhpjxP.js +39 -0
  61. package/packages/client/dist/assets/quadrantDiagram-ABIIQ3AL-FmTxRIlW.js +7 -0
  62. package/packages/client/dist/assets/railroadDiagram-RFXS5EU6-Bc-Q7iPs.js +1 -0
  63. package/packages/client/dist/assets/requirementDiagram-TGXJPOKE-D209tlqv.js +84 -0
  64. package/packages/client/dist/assets/sankeyDiagram-HTMAVEWB--I_lSbCV.js +40 -0
  65. package/packages/client/dist/assets/sequenceDiagram-DBY2YBRQ-Da5YJcDJ.js +162 -0
  66. package/packages/client/dist/assets/sizeCapture-X5ZJPWSS-DYuc-rzB.js +1 -0
  67. package/packages/client/dist/assets/{snippetTokenHighlight-DVju7SBc.js → snippetTokenHighlight-qXHxvlCE.js} +1 -1
  68. package/packages/client/dist/assets/stateDiagram-2N3HPSRC-DoOeZoRP.js +1 -0
  69. package/packages/client/dist/assets/stateDiagram-v2-6OUMAXLB-DLkUyWs6.js +1 -0
  70. package/packages/client/dist/assets/swimlanes-5IMT3BWC-BcR7uCTf.js +2 -0
  71. package/packages/client/dist/assets/swimlanesDiagram-G3AALYLV-C0FDo-hf.js +8 -0
  72. package/packages/client/dist/assets/timeline-definition-FHXFAJF6-CLzKR6_i.js +120 -0
  73. package/packages/client/dist/assets/vennDiagram-L72KCM5P-TajEacPR.js +34 -0
  74. package/packages/client/dist/assets/wardleyDiagram-EHGQE667-DKvVEb3V.js +78 -0
  75. package/packages/client/dist/assets/xychartDiagram-FW5EYKEG-CaJG8r0j.js +7 -0
  76. package/packages/client/dist/index.html +2 -2
  77. package/packages/client/dist/sw.js +2 -2
  78. package/packages/server/dist/controllers/accountController.d.ts.map +1 -1
  79. package/packages/server/dist/controllers/accountController.js +31 -11
  80. package/packages/server/dist/controllers/accountController.js.map +1 -1
  81. package/packages/server/dist/controllers/fileSystemController.d.ts +6 -0
  82. package/packages/server/dist/controllers/fileSystemController.d.ts.map +1 -1
  83. package/packages/server/dist/controllers/fileSystemController.js +34 -0
  84. package/packages/server/dist/controllers/fileSystemController.js.map +1 -1
  85. package/packages/server/dist/controllers/projectController.d.ts.map +1 -1
  86. package/packages/server/dist/controllers/projectController.js +4 -2
  87. package/packages/server/dist/controllers/projectController.js.map +1 -1
  88. package/packages/server/dist/controllers/sessionController.d.ts +5 -0
  89. package/packages/server/dist/controllers/sessionController.d.ts.map +1 -1
  90. package/packages/server/dist/controllers/sessionController.js +95 -3
  91. package/packages/server/dist/controllers/sessionController.js.map +1 -1
  92. package/packages/server/dist/handlers/hookBridge.d.ts +131 -0
  93. package/packages/server/dist/handlers/hookBridge.d.ts.map +1 -0
  94. package/packages/server/dist/handlers/hookBridge.js +178 -0
  95. package/packages/server/dist/handlers/hookBridge.js.map +1 -0
  96. package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
  97. package/packages/server/dist/handlers/streamCallbacks.js +30 -4
  98. package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
  99. package/packages/server/dist/handlers/websocket.d.ts +44 -2
  100. package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
  101. package/packages/server/dist/handlers/websocket.js +666 -64
  102. package/packages/server/dist/handlers/websocket.js.map +1 -1
  103. package/packages/server/dist/index.js +4 -1
  104. package/packages/server/dist/index.js.map +1 -1
  105. package/packages/server/dist/locales/en/server.json +9 -3
  106. package/packages/server/dist/locales/es/server.json +9 -3
  107. package/packages/server/dist/locales/ja/server.json +9 -3
  108. package/packages/server/dist/locales/ko/server.json +9 -3
  109. package/packages/server/dist/locales/pt/server.json +9 -3
  110. package/packages/server/dist/locales/zh-CN/server.json +9 -3
  111. package/packages/server/dist/routes/account.d.ts.map +1 -1
  112. package/packages/server/dist/routes/account.js +4 -2
  113. package/packages/server/dist/routes/account.js.map +1 -1
  114. package/packages/server/dist/routes/fileSystem.d.ts.map +1 -1
  115. package/packages/server/dist/routes/fileSystem.js +2 -0
  116. package/packages/server/dist/routes/fileSystem.js.map +1 -1
  117. package/packages/server/dist/routes/sessions.d.ts.map +1 -1
  118. package/packages/server/dist/routes/sessions.js +2 -0
  119. package/packages/server/dist/routes/sessions.js.map +1 -1
  120. package/packages/server/dist/services/accountInfoService.d.ts +36 -1
  121. package/packages/server/dist/services/accountInfoService.d.ts.map +1 -1
  122. package/packages/server/dist/services/accountInfoService.js +90 -4
  123. package/packages/server/dist/services/accountInfoService.js.map +1 -1
  124. package/packages/server/dist/services/accountStorageService.d.ts +55 -9
  125. package/packages/server/dist/services/accountStorageService.d.ts.map +1 -1
  126. package/packages/server/dist/services/accountStorageService.js +244 -12
  127. package/packages/server/dist/services/accountStorageService.js.map +1 -1
  128. package/packages/server/dist/services/chatEngine.d.ts +59 -3
  129. package/packages/server/dist/services/chatEngine.d.ts.map +1 -1
  130. package/packages/server/dist/services/chatService.d.ts +112 -3
  131. package/packages/server/dist/services/chatService.d.ts.map +1 -1
  132. package/packages/server/dist/services/chatService.js +353 -98
  133. package/packages/server/dist/services/chatService.js.map +1 -1
  134. package/packages/server/dist/services/claudeLoginService.d.ts +14 -3
  135. package/packages/server/dist/services/claudeLoginService.d.ts.map +1 -1
  136. package/packages/server/dist/services/claudeLoginService.js +18 -4
  137. package/packages/server/dist/services/claudeLoginService.js.map +1 -1
  138. package/packages/server/dist/services/cliChatEngine.d.ts.map +1 -1
  139. package/packages/server/dist/services/cliChatEngine.js +124 -22
  140. package/packages/server/dist/services/cliChatEngine.js.map +1 -1
  141. package/packages/server/dist/services/cliModalDetect.d.ts +14 -0
  142. package/packages/server/dist/services/cliModalDetect.d.ts.map +1 -1
  143. package/packages/server/dist/services/cliModalDetect.js +12 -3
  144. package/packages/server/dist/services/cliModalDetect.js.map +1 -1
  145. package/packages/server/dist/services/cliSessionPool.js +1 -1
  146. package/packages/server/dist/services/cliSessionPool.js.map +1 -1
  147. package/packages/server/dist/services/commandService.d.ts.map +1 -1
  148. package/packages/server/dist/services/commandService.js +19 -9
  149. package/packages/server/dist/services/commandService.js.map +1 -1
  150. package/packages/server/dist/services/engineResidencyRegistry.d.ts +112 -0
  151. package/packages/server/dist/services/engineResidencyRegistry.d.ts.map +1 -0
  152. package/packages/server/dist/services/engineResidencyRegistry.js +195 -0
  153. package/packages/server/dist/services/engineResidencyRegistry.js.map +1 -0
  154. package/packages/server/dist/services/harnessAgentService.d.ts.map +1 -1
  155. package/packages/server/dist/services/harnessAgentService.js +12 -2
  156. package/packages/server/dist/services/harnessAgentService.js.map +1 -1
  157. package/packages/server/dist/services/harnessLintService.d.ts.map +1 -1
  158. package/packages/server/dist/services/harnessLintService.js +25 -114
  159. package/packages/server/dist/services/harnessLintService.js.map +1 -1
  160. package/packages/server/dist/services/historyParser.d.ts.map +1 -1
  161. package/packages/server/dist/services/historyParser.js +23 -6
  162. package/packages/server/dist/services/historyParser.js.map +1 -1
  163. package/packages/server/dist/services/imageStorageService.d.ts.map +1 -1
  164. package/packages/server/dist/services/imageStorageService.js +7 -0
  165. package/packages/server/dist/services/imageStorageService.js.map +1 -1
  166. package/packages/server/dist/services/projectService.d.ts +4 -1
  167. package/packages/server/dist/services/projectService.d.ts.map +1 -1
  168. package/packages/server/dist/services/projectService.js +14 -1
  169. package/packages/server/dist/services/projectService.js.map +1 -1
  170. package/packages/server/dist/services/promptQueue.d.ts +34 -0
  171. package/packages/server/dist/services/promptQueue.d.ts.map +1 -0
  172. package/packages/server/dist/services/promptQueue.js +80 -0
  173. package/packages/server/dist/services/promptQueue.js.map +1 -0
  174. package/packages/server/dist/services/ptyService.d.ts.map +1 -1
  175. package/packages/server/dist/services/ptyService.js +4 -1
  176. package/packages/server/dist/services/ptyService.js.map +1 -1
  177. package/packages/server/dist/services/queueService.d.ts.map +1 -1
  178. package/packages/server/dist/services/queueService.js +62 -4
  179. package/packages/server/dist/services/queueService.js.map +1 -1
  180. package/packages/server/dist/services/rateLimitProbeService.d.ts +73 -3
  181. package/packages/server/dist/services/rateLimitProbeService.d.ts.map +1 -1
  182. package/packages/server/dist/services/rateLimitProbeService.js +397 -30
  183. package/packages/server/dist/services/rateLimitProbeService.js.map +1 -1
  184. package/packages/server/dist/services/sessionBufferManager.d.ts.map +1 -1
  185. package/packages/server/dist/services/sessionBufferManager.js +22 -4
  186. package/packages/server/dist/services/sessionBufferManager.js.map +1 -1
  187. package/packages/server/dist/services/sessionExportService.d.ts +34 -0
  188. package/packages/server/dist/services/sessionExportService.d.ts.map +1 -0
  189. package/packages/server/dist/services/sessionExportService.js +269 -0
  190. package/packages/server/dist/services/sessionExportService.js.map +1 -0
  191. package/packages/server/dist/services/sessionService.d.ts +6 -0
  192. package/packages/server/dist/services/sessionService.d.ts.map +1 -1
  193. package/packages/server/dist/services/sessionService.js +30 -9
  194. package/packages/server/dist/services/sessionService.js.map +1 -1
  195. package/packages/server/dist/services/streamHandler.d.ts +177 -1
  196. package/packages/server/dist/services/streamHandler.d.ts.map +1 -1
  197. package/packages/server/dist/services/streamHandler.js +425 -39
  198. package/packages/server/dist/services/streamHandler.js.map +1 -1
  199. package/packages/server/dist/services/workspaceContext.d.ts.map +1 -1
  200. package/packages/server/dist/services/workspaceContext.js +6 -0
  201. package/packages/server/dist/services/workspaceContext.js.map +1 -1
  202. package/packages/server/dist/snippets/fix-lint-command-not-on-path +13 -0
  203. package/packages/server/dist/snippets/fix-lint-duplicate-name +12 -0
  204. package/packages/server/dist/snippets/fix-lint-env-var-undefined +13 -0
  205. package/packages/server/dist/snippets/fix-lint-regex-invalid +14 -0
  206. package/packages/server/dist/snippets/fix-lint-tools-non-standard +14 -0
  207. package/packages/server/dist/snippets/fix-lint-url-invalid +13 -0
  208. package/packages/server/dist/snippets/fix-lint-yaml-parse-error +14 -0
  209. package/packages/server/dist/snippets/fix-malformed-skill +17 -0
  210. package/packages/server/dist/utils/backgroundHookSettings.d.ts +31 -0
  211. package/packages/server/dist/utils/backgroundHookSettings.d.ts.map +1 -0
  212. package/packages/server/dist/utils/backgroundHookSettings.js +41 -0
  213. package/packages/server/dist/utils/backgroundHookSettings.js.map +1 -0
  214. package/packages/server/dist/utils/backgroundTaskPoller.d.ts +69 -0
  215. package/packages/server/dist/utils/backgroundTaskPoller.d.ts.map +1 -0
  216. package/packages/server/dist/utils/backgroundTaskPoller.js +356 -0
  217. package/packages/server/dist/utils/backgroundTaskPoller.js.map +1 -0
  218. package/packages/server/dist/utils/backgroundTaskTracker.d.ts +51 -3
  219. package/packages/server/dist/utils/backgroundTaskTracker.d.ts.map +1 -1
  220. package/packages/server/dist/utils/backgroundTaskTracker.js +117 -9
  221. package/packages/server/dist/utils/backgroundTaskTracker.js.map +1 -1
  222. package/packages/server/dist/utils/backgroundToolGuard.d.ts +26 -0
  223. package/packages/server/dist/utils/backgroundToolGuard.d.ts.map +1 -0
  224. package/packages/server/dist/utils/backgroundToolGuard.js +40 -0
  225. package/packages/server/dist/utils/backgroundToolGuard.js.map +1 -0
  226. package/packages/server/dist/utils/boundedRing.d.ts +44 -0
  227. package/packages/server/dist/utils/boundedRing.d.ts.map +1 -0
  228. package/packages/server/dist/utils/boundedRing.js +77 -0
  229. package/packages/server/dist/utils/boundedRing.js.map +1 -0
  230. package/packages/server/dist/utils/effortUtils.d.ts +7 -6
  231. package/packages/server/dist/utils/effortUtils.d.ts.map +1 -1
  232. package/packages/server/dist/utils/effortUtils.js +10 -9
  233. package/packages/server/dist/utils/effortUtils.js.map +1 -1
  234. package/packages/server/dist/utils/messageTree.d.ts +25 -0
  235. package/packages/server/dist/utils/messageTree.d.ts.map +1 -1
  236. package/packages/server/dist/utils/messageTree.js +167 -3
  237. package/packages/server/dist/utils/messageTree.js.map +1 -1
  238. package/packages/server/dist/utils/pathUtils.d.ts.map +1 -1
  239. package/packages/server/dist/utils/pathUtils.js +1 -0
  240. package/packages/server/dist/utils/pathUtils.js.map +1 -1
  241. package/packages/server/dist/utils/residencyActivation.d.ts +61 -0
  242. package/packages/server/dist/utils/residencyActivation.d.ts.map +1 -0
  243. package/packages/server/dist/utils/residencyActivation.js +60 -0
  244. package/packages/server/dist/utils/residencyActivation.js.map +1 -0
  245. package/packages/server/dist/utils/residencyPolicy.d.ts +62 -0
  246. package/packages/server/dist/utils/residencyPolicy.d.ts.map +1 -0
  247. package/packages/server/dist/utils/residencyPolicy.js +82 -0
  248. package/packages/server/dist/utils/residencyPolicy.js.map +1 -0
  249. package/packages/server/dist/utils/runtimeParamStrategy.d.ts +51 -0
  250. package/packages/server/dist/utils/runtimeParamStrategy.d.ts.map +1 -0
  251. package/packages/server/dist/utils/runtimeParamStrategy.js +60 -0
  252. package/packages/server/dist/utils/runtimeParamStrategy.js.map +1 -0
  253. package/packages/server/dist/utils/stopStrategy.d.ts +62 -0
  254. package/packages/server/dist/utils/stopStrategy.d.ts.map +1 -0
  255. package/packages/server/dist/utils/stopStrategy.js +65 -0
  256. package/packages/server/dist/utils/stopStrategy.js.map +1 -0
  257. package/packages/server/resources/internals/INDEX.md +1 -1
  258. package/packages/server/resources/internals/image-storage.md +14 -2
  259. package/packages/server/resources/manual/02-chat.md +30 -13
  260. package/packages/server/resources/manual/03-sessions.md +22 -1
  261. package/packages/server/resources/manual/04-slash-commands-favorites.md +2 -1
  262. package/packages/server/resources/manual/05-projects.md +1 -0
  263. package/packages/server/resources/manual/06-file-explorer-editor.md +21 -2
  264. package/packages/server/resources/manual/07-git.md +1 -1
  265. package/packages/server/resources/manual/08-terminal.md +1 -1
  266. package/packages/server/resources/manual/12-harness-workbench.md +21 -16
  267. package/packages/server/resources/manual/13-settings.md +22 -6
  268. package/packages/server/resources/manual/14-keyboard-shortcuts.md +8 -1
  269. package/packages/shared/dist/constants/messageTree.d.ts +2 -0
  270. package/packages/shared/dist/constants/messageTree.d.ts.map +1 -1
  271. package/packages/shared/dist/constants/messageTree.js +6 -0
  272. package/packages/shared/dist/constants/messageTree.js.map +1 -1
  273. package/packages/shared/dist/index.d.ts +1 -1
  274. package/packages/shared/dist/index.d.ts.map +1 -1
  275. package/packages/shared/dist/index.js.map +1 -1
  276. package/packages/shared/dist/types/accounts.d.ts +13 -0
  277. package/packages/shared/dist/types/accounts.d.ts.map +1 -1
  278. package/packages/shared/dist/types/history.d.ts +14 -1
  279. package/packages/shared/dist/types/history.d.ts.map +1 -1
  280. package/packages/shared/dist/types/message.d.ts +26 -3
  281. package/packages/shared/dist/types/message.d.ts.map +1 -1
  282. package/packages/shared/dist/types/message.js +21 -1
  283. package/packages/shared/dist/types/message.js.map +1 -1
  284. package/packages/shared/dist/types/preferences.d.ts +5 -1
  285. package/packages/shared/dist/types/preferences.d.ts.map +1 -1
  286. package/packages/shared/dist/types/preferences.js +3 -0
  287. package/packages/shared/dist/types/preferences.js.map +1 -1
  288. package/packages/shared/dist/types/sdk.d.ts +68 -10
  289. package/packages/shared/dist/types/sdk.d.ts.map +1 -1
  290. package/packages/shared/dist/types/sdk.js +56 -16
  291. package/packages/shared/dist/types/sdk.js.map +1 -1
  292. package/packages/shared/dist/types/session.d.ts +6 -0
  293. package/packages/shared/dist/types/session.d.ts.map +1 -1
  294. package/packages/shared/dist/types/session.js +6 -0
  295. package/packages/shared/dist/types/session.js.map +1 -1
  296. package/packages/shared/dist/types/streaming.d.ts +32 -2
  297. package/packages/shared/dist/types/streaming.d.ts.map +1 -1
  298. package/packages/shared/dist/types/streaming.js.map +1 -1
  299. package/packages/shared/dist/types/websocket.d.ts +4 -0
  300. package/packages/shared/dist/types/websocket.d.ts.map +1 -1
  301. package/scripts/probe-persistent-hooks.mjs +795 -0
  302. package/packages/client/dist/assets/index-BX7y_Qt3.css +0 -32
  303. package/packages/client/dist/assets/index-Bav7AMMy.js +0 -2
  304. package/packages/client/dist/assets/index-DgRQoBIg.js +0 -1657
@@ -19,6 +19,7 @@ Claude's responses stream in real-time, character by character. You'll see:
19
19
  - **Timestamps** — Each message shows a relative timestamp (e.g., "2 hours ago")
20
20
  - **Copy button** — Click the copy icon on any message to copy its content to the clipboard
21
21
  - **Scroll to bottom** — When scrolled up, a down-arrow button appears to jump back to the latest message
22
+ - **Turn grouping** — When one response arrives as several fragments (text, tool calls, more text), the fragments are grouped tightly together as a single turn instead of rendering as widely-spaced separate messages
22
23
 
23
24
  ### 2.3 Markdown & Code Blocks
24
25
 
@@ -45,18 +46,25 @@ Messages support full GitHub-flavored markdown:
45
46
  - Copy button (top-right corner)
46
47
  - File reference links that open directly in the editor
47
48
 
48
- ### 2.4 Image Attachments
49
+ **Mermaid diagrams:**
50
+ - Code blocks tagged `mermaid` get a **"View diagram"** button in the block header
51
+ - Clicking it renders the diagram in a fullscreen viewer with zoom controls (25%–400%), a fit-reset button, and `Escape` / X to close
52
+ - The diagram engine loads on demand the first time you open a diagram, so it adds nothing to normal page loads
49
53
 
50
- Attach images to your messages for Claude to analyze:
54
+ ### 2.4 Attachments (Images & PDFs)
55
+
56
+ Attach images or PDF documents to your messages for Claude to analyze:
51
57
 
52
58
  - Click the attachment button (paperclip icon) in the input area
53
- - Drag and drop images directly onto the input area
59
+ - Drag and drop files directly onto the input area
54
60
  - Paste from clipboard (`Ctrl+V` / `Cmd+V`)
55
- - Supported formats: PNG, JPEG, GIF, WebP
56
- - Maximum: 5 images per message, 10MB per image
57
- - Images preview in the input area before sending
61
+ - Supported formats: PNG, JPEG, GIF, WebP images and PDF documents
62
+ - Limits: **5 attachments per message** (images and PDFs combined), 10MB per image, 20MB per PDF, and 20MB combined per message
63
+ - Attachments preview in the input area before sending — images as thumbnails, PDFs as a file chip with name and size
58
64
  - Sent images display as clickable thumbnails above the message text. Clicking a thumbnail opens the full image viewer with multi-image navigation (see §6.4)
65
+ - Sent PDFs display as a file chip (icon + filename). The chip is informational only — it is not yet clickable
59
66
  - Image attachments work with both conversation engines (SDK and CLI). With the CLI engine the image is passed to Claude by file reference instead of being embedded inline, but you attach it exactly the same way — the model still sees it
67
+ - **PDF attachments require the SDK engine.** On the CLI engine, sending a message with a PDF attached is rejected with an error — remove the PDF or switch engines (see §13.17)
60
68
 
61
69
  ### 2.5 Tool Call Visualization
62
70
 
@@ -125,7 +133,7 @@ Monitor token usage in real-time:
125
133
  - **Usage donut** — Visual indicator showing used/limit tokens and percentage
126
134
  - **Cost display** — Estimated cost for the session
127
135
  - **Cache tokens** — Cache creation and read token counts
128
- - **Rate limit dots** — 5h/7d utilization indicators in the input area
136
+ - **Rate limit dots** — 5h/7d utilization indicators in the input area. When a subscription window is fully used and extra-usage credits are enabled, the indicator alternates every few seconds with your remaining **credit balance** (see §13.14)
129
137
  - **Color thresholds** — Green (normal), Yellow (moderate), Red (high usage)
130
138
  - **Context compaction** — Click the usage donut to trigger compaction, which summarizes the conversation to free up context space. At critical usage levels, clicking instead creates a new session
131
139
  - **Auto-compact on overflow** — When message history hits the context window limit, Hammoc automatically compacts the context and retries the message instead of losing the session. A master switch in Advanced Settings (see §13.18) lets you disable auto-compaction entirely and manage compaction manually instead
@@ -145,6 +153,7 @@ Navigate through your previous inputs:
145
153
  - Press `↑` (Up arrow) to recall the previous prompt
146
154
  - Press `↓` (Down arrow) to go forward
147
155
  - History is per-session
156
+ - **On touch devices** — Swipe up on the empty input field to open the prompt history list above it. Tap an entry to fill the input (it is not sent automatically). Dismiss by tapping the input again, the ✕ button in the list header, tapping outside, or just starting to type
148
157
 
149
158
  ### 2.13 Voice Input (Speech Recognition)
150
159
 
@@ -170,11 +179,11 @@ When Claude uses extended thinking, the reasoning is shown in a collapsible bloc
170
179
 
171
180
  The model selector button is located in the chat input toolbar. It displays the current model family name (e.g., "Opus", "Sonnet", "Haiku") directly on the button. When using the default model, it shows "Default". Click to open a dropdown for choosing a different model and adjusting thinking effort.
172
181
 
173
- **1M context window** — For models that support a 1-million-token context window (Opus 4.8, Sonnet 4.6), a **"1M context"** toggle appears near the top of the dropdown:
182
+ **1M context window** — For models that support a 1-million-token context window, a **"1M context"** toggle appears near the top of the dropdown:
174
183
 
175
- - **Opus** — Locked on. The 1M window is included with your Max subscription at no extra cost, so it is always engaged and cannot be switched off (the toggle shows "Included with Max").
176
- - **Sonnet** (and other non-Opus 1M-capable models) — Off by default. Sonnet's 1M window bills to usage credits rather than your subscription, so you opt in explicitly. The toggle shows a "Requires usage credits" hint that turns amber once enabled. Left off, Sonnet runs at the standard 200K context window.
177
- - **Fable 5** — Opt-in, same as Sonnet. The toggle appears and defaults to off.
184
+ - **Opus 4.8 / Sonnet 5** — Locked on. Their 1M window is included with your Max subscription at no extra cost, so it is always engaged and cannot be switched off (the toggle shows "Included with Max").
185
+ - **Sonnet 4.6** — Off by default. Its 1M window bills to usage credits rather than your subscription, so you opt in explicitly. The toggle shows a "Requires usage credits" hint that turns amber once enabled. Left off, Sonnet 4.6 runs at the standard 200K context window. The bare **Sonnet** alias follows the same opt-in rule, since it may resolve to a version whose 1M window is credit-billed.
186
+ - **Fable 5** — No toggle at all. Mythos-class models always run at 1M; their billing is per-model (usage credits, see §13.3), not per-window, so there is nothing to opt into.
178
187
 
179
188
  The toggle only appears for 1M-capable models; every other model uses its native context window and shows no toggle.
180
189
 
@@ -183,8 +192,8 @@ The toggle only appears for 1M-capable models; every other model uses its native
183
192
  Control how much Claude "thinks" before responding. The intensity bar appears inside the model selector dropdown. The number of bars depends on the selected model:
184
193
 
185
194
  - **Low / Medium / High** — 3 levels, available for all models
186
- - **Max** — 4th level, added for Opus 4.6 / Sonnet 4.6
187
- - **XHigh** — 5th level, added for **Opus 4.7+** and **Fable 5** (the default effort for these models is XHigh)
195
+ - **Max** — 4th level, added for Opus 4.6 / Sonnet 4.6 / Sonnet 5
196
+ - **XHigh** — 5th level, added for **Opus 4.7+**, **Sonnet 5**, and **Fable 5** (the default effort for Opus 4.7+ and Fable 5 is XHigh; Sonnet 5 defaults to High)
188
197
 
189
198
  Behavior:
190
199
 
@@ -302,3 +311,11 @@ When Claude launches background tasks (e.g., background `Agent` sub-tasks), an a
302
311
 
303
312
  The card disappears automatically once all background tasks complete.
304
313
 
314
+ ### 2.26 Input Drafts
315
+
316
+ Text you type in the chat input but haven't sent is kept as a per-session draft:
317
+
318
+ - Switching to another session, navigating to other tabs, or closing the browser does not lose it — the draft is restored when you return to that session
319
+ - The draft is cleared the moment the message is sent
320
+ - Only text is kept; attachments are not part of the draft
321
+
@@ -15,7 +15,7 @@ Access the session list via the sidebar or quick panel:
15
15
  - **Pending question indicator** — Cyan pulsing dot with "Awaiting selection" badge when a session has an active `AskUserQuestion` waiting for user input. Appears alongside the session entry so you can spot sessions that need attention without opening each one
16
16
  - **Queue badge** — Shown when queue runner is active on the session
17
17
  - **Early visibility** — New sessions appear in the list as soon as a message is sent, with no brief delay
18
- - **Active session promotion** — When a session starts streaming, it jumps to the top of the list so the session you're actively using stays the most visible
18
+ - **Active session promotion** — When a session starts streaming, it jumps to the top of the list and its relative timestamp stays current for the whole turn (it no longer shows the previous turn's time while streaming). Project cards on the project list follow the same live ordering
19
19
  - Empty sessions are hidden by default (toggle with the eye icon)
20
20
 
21
21
  ### 3.2 Creating a New Session
@@ -35,9 +35,11 @@ Two distinct search modes:
35
35
  ### 3.4 Session Operations
36
36
 
37
37
  - **Rename** — Click the edit icon next to the session name
38
+ - **Export** — Download the session as a Markdown file from the row's kebab menu (see §3.6)
38
39
  - **Delete** — Remove a session (with confirmation)
39
40
  - **Selection mode** — Select multiple sessions for batch delete
40
41
  - **Delete empty sessions** — Bulk-delete all empty sessions at once
42
+ - **Streaming guard** — A session that is currently streaming cannot be deleted: its delete action is disabled with a "Cannot delete while streaming" hint, and batch deletion skips streaming sessions
41
43
 
42
44
  ### 3.5 Quick Session Panel
43
45
 
@@ -47,5 +49,24 @@ Access sessions without leaving the chat:
47
49
  - Switch between sessions instantly
48
50
  - See session previews and status
49
51
  - **Side toggle** — Move the panel to the left or right side using the button in the panel header
52
+ - **Open in full tab** — A maximize button in the panel header jumps to the corresponding full project tab. All four quick panels (Sessions, Files, Git, Terminal) share this button
50
53
  - **Mobile swipe** — Swipe inward from the screen edge to open, swipe back toward the edge to close
51
54
 
55
+ ### 3.6 Session Export (Markdown)
56
+
57
+ Download an entire conversation as a single Markdown file:
58
+
59
+ - **From the chat header** — Click the download icon (desktop); on mobile it lives in the header's ⋮ overflow menu
60
+ - **From the session list** — Open a session row's kebab menu (⋮) and choose **Export**
61
+
62
+ Export is a one-click browser download with no options dialog. The file is named after the session name (or the session ID if unnamed), with unsafe characters sanitized.
63
+
64
+ **What the file contains:**
65
+
66
+ - A header with the session title, session ID, project, export time, and message count
67
+ - Every user and assistant message, including **all conversation branches** — fork points are marked with `━━━ Branch N/M ━━━` dividers and the latest branch is labeled
68
+ - Thinking blocks and tool results wrapped in collapsible `<details>` sections; tool calls listed with their input parameters
69
+ - Compaction boundaries and background-task notifications as compact markers
70
+
71
+ Image and PDF attachments are noted by count only — binary content is not embedded.
72
+
@@ -59,7 +59,7 @@ Prompt snippets are reusable prompt templates stored as files. Invoke them with
59
59
 
60
60
  1. **Project snippets** — `.hammoc/snippets/` in the project directory
61
61
  2. **Global snippets** — `~/.hammoc/snippets/`
62
- 3. **Bundled snippets** — Built-in snippets shipped with Hammoc (~22 standard snippets)
62
+ 3. **Bundled snippets** — Built-in snippets shipped with Hammoc (~30 standard snippets)
63
63
 
64
64
  If the same snippet name exists in multiple tiers, the highest-priority source is used. You can override bundled snippets by placing a file with the same name in your project or global snippets directory.
65
65
 
@@ -75,6 +75,7 @@ If the same snippet name exists in multiple tiers, the highest-priority source i
75
75
  - Architecture: `create-backend-arch`, `create-frontend-arch`, `create-fullstack-arch`, `create-frontend-spec`
76
76
  - Stories: `develop-story`, `draft-story`, `brownfield-create-story`, `brownfield-create-epic`
77
77
  - QA: `qa-review`, `validate-story`
78
+ - Harness lint fixes: `fix-lint-duplicate-name`, `fix-lint-regex-invalid`, `fix-lint-yaml-parse-error`, `fix-lint-command-not-on-path`, `fix-lint-url-invalid`, `fix-lint-tools-non-standard`, `fix-lint-env-var-undefined`, `fix-malformed-skill` — used by the workbench's inline lint **Fix** buttons (see §12.12)
78
79
 
79
80
  ### 4.7 Snippet Autocomplete
80
81
 
@@ -12,6 +12,7 @@ Each project card displays:
12
12
  - **Last modified** — When the project was last active
13
13
  - **BMad badge** — Indicates BMAD-METHOD enabled projects
14
14
  - **Status indicators** — Active sessions (green dot), pending question count (cyan dot), queue status badge, terminal count (updates in real-time)
15
+ - **Live ordering** — Cards sort by latest activity; a project whose session starts streaming moves to the top and its timestamp stays current during the stream
15
16
 
16
17
  Each card has a **kebab menu** (⋮) with:
17
18
 
@@ -44,7 +44,7 @@ Click any text file to open it in the built-in editor:
44
44
  - **Close** — `Escape` key or the X button
45
45
  - **Unsaved changes warning** — Confirmation dialog prevents accidental data loss
46
46
  - **File size limit** — Files over 1MB are truncated and read-only
47
- - **Binary files** — When a binary file is opened (images, PDFs, executables, etc.), the editor body shows the file's human-readable size (e.g., `104 B`, `5.0 MB`) together with a **Download** button for direct download
47
+ - **Binary files** — When a binary file is opened (executables, archives, etc.), the editor body shows the file's human-readable size (e.g., `104 B`, `5.0 MB`) together with a **Download** button for direct download. Images open in the image viewer (§6.4) and PDFs in the PDF viewer (§6.6) instead
48
48
 
49
49
  **External change detection**
50
50
 
@@ -55,7 +55,7 @@ The server watches open files and pushes a notification if the file changes on d
55
55
  - **File deleted on disk** — Red banner with a **Dismiss** button (no reload is possible)
56
56
  - **Stale-write conflict** — If you try to save a file that was modified on disk since you opened it, the save is rejected and a red banner offers **Reload** (discard your edits) or **Overwrite** (force-save over the external changes)
57
57
 
58
- ### 6.3 Markdown Preview
58
+ ### 6.3 Markdown & HTML Preview
59
59
 
60
60
  For `.md` files:
61
61
 
@@ -63,6 +63,13 @@ For `.md` files:
63
63
  - Preview renders full markdown with styles
64
64
  - Default mode (Edit or Preview) configurable in settings
65
65
 
66
+ For `.html` / `.htm` files:
67
+
68
+ - The same **Edit / Preview** header toggle is available
69
+ - HTML files always open in **Preview** first (the markdown default-mode setting does not apply to them)
70
+ - The preview runs in a sandboxed frame isolated from the app; external resources (fonts, CDN scripts, images) are allowed so the page renders as intended
71
+ - Links open in a new browser tab instead of navigating inside the preview frame
72
+
66
73
  ### 6.4 Image Viewer
67
74
 
68
75
  Click any image file to open the viewer in a fullscreen overlay:
@@ -87,4 +94,16 @@ Access files without leaving the chat:
87
94
  - **Recently opened** files appear at the top (max 5 per session)
88
95
  - Search and navigate the file tree
89
96
  - Click to open in the editor overlay
97
+ - **Open in full tab** — The maximize button in the panel header jumps to the full Files tab (see §3.5)
98
+
99
+ ### 6.6 PDF Viewer
100
+
101
+ Click any `.pdf` file — in the file explorer, the quick file panel, or search results — to open it in a fullscreen PDF viewer:
102
+
103
+ - **Page navigation** — Previous / Next buttons or the `←` / `→` arrow keys, with the current page and total count shown in the header
104
+ - **Zoom** — In / Out buttons from 25% to 400%; at 100% the page fits the viewer width
105
+ - **Download** — Download the original file
106
+ - **Close** — `Escape` key or the X button
107
+
108
+ PDFs render in-app with no browser plugin. (Previously PDFs fell through to the generic binary-file view with only a size readout and Download button.)
90
109
 
@@ -63,7 +63,7 @@ Lightweight Git access from the quick panel side bar:
63
63
  - **"Stage All & Commit"** — Single green button that automatically stages all unstaged/untracked files and commits in one action
64
64
  - **Success message** — Displayed briefly after a successful commit
65
65
  - **Recent commits** — Shows only the 3 most recent commits (hash, timestamp, message)
66
- - **"View in Git Tab"** link Navigates to the full Git tab for advanced operations
66
+ - **Open in full tab** — The maximize button in the panel header navigates to the full Git tab for advanced operations (replaces the old "View in Git Tab" footer link)
67
67
  - **Git init support** — If the project is not a Git repository, shows an init button
68
68
 
69
69
  ### 7.8 Diff Viewer
@@ -56,7 +56,7 @@ Lightweight terminal access from the quick panel side bar:
56
56
 
57
57
  - **Multi-terminal support** — Same tab management as the full Terminal tab (create, switch, close, max 5)
58
58
  - **Font size controls** — Minus, size display (click to reset), Plus buttons in the header
59
- - **"Open in Tab"** link Navigate to the full Terminal tab
59
+ - **Open in full tab** — The maximize button in the panel header navigates to the full Terminal tab (replaces the old "Open in Tab" link)
60
60
  - **Tab keyboard navigation** — ArrowLeft/Right to switch, Delete to close
61
61
  - **Security warning** — Same access denied warning when terminal access is restricted
62
62
 
@@ -6,7 +6,7 @@ The same Settings tab also hosts four sibling harness-engineering panels next to
6
6
 
7
7
  ### 12.1 Layout
8
8
 
9
- The workbench has two stacked headers above an eight-section navigator:
9
+ The workbench has two stacked headers above a nine-section navigator:
10
10
 
11
11
  - **Mode banner** — Workbench-wide; explains whether the project's `.claude/` is git-tracked or ignored (see §12.2)
12
12
  - **Lint preferences button** — Top-right; opens a dialog to toggle the seven static-lint rules (see §12.12)
@@ -20,7 +20,8 @@ The section navigator is a vertical sidebar on desktop and a horizontally-scroll
20
20
  5. **Commands** — Slash command files (see §12.8)
21
21
  6. **Agents** — Sub-agent definitions (see §12.9)
22
22
  7. **CLAUDE.md** — Project and global instruction documents (see §12.10)
23
- 8. **Snippets** — Hammoc `%snippet` library + Claude Code slash-command favorites (see §12.11)
23
+ 8. **Snippets** — Hammoc `%snippet` library (see §12.11)
24
+ 9. **Favorites** — Slash-command favorites with scope management (see §12.20)
24
25
 
25
26
  When the workbench loads, every section's data is fetched in parallel and cached, so switching between sections feels instant. Each section's data also stays in sync with disk: any external change (made outside Hammoc) updates the corresponding card without a reload.
26
27
 
@@ -39,9 +40,9 @@ The banner is derived from the project root's `.gitignore`. Edit the rules and t
39
40
 
40
41
  Every editable card (skill, MCP, hook, command, agent, `CLAUDE.md`, snippet) shows a small **share badge** indicating that specific file's git scope:
41
42
 
42
- - **Shared** (blue) — File tracked by git; team will see your edits after a commit
43
43
  - **Local** (gray) — File exists but is not tracked
44
44
  - **Ignored** (amber) — `.claude/` is fully git-excluded; this file will not be committed
45
+ - Git-tracked files show **no badge** — shared-in-repo is the normal state, so only the exceptions are flagged. (Earlier versions put a blue "Shared" badge on every tracked file; that badge has been retired as noise)
45
46
 
46
47
  The badge is computed per-file so a single project can mix shared and local items.
47
48
 
@@ -119,11 +120,9 @@ Each column is a CodeMirror Markdown editor with edit/preview toggle and the sam
119
120
 
120
121
  Both files load into every Claude Code session in this project; the project version takes precedence when an instruction is defined in both.
121
122
 
122
- ### 12.11 Snippets & Favorites Panel
123
+ ### 12.11 Snippets Panel
123
124
 
124
- A single panel manages both Hammoc-native snippets and Claude Code slash-command favorites.
125
-
126
- **Snippets section** (top):
125
+ Manages Hammoc-native `%name` snippets. (Slash-command favorites moved to their own panel — see §12.20.)
127
126
 
128
127
  - Manages `%name` snippets from `<project-root>/.hammoc/snippets/`, `~/.hammoc/snippets/`, and the bundled set shipped with Hammoc (see §4.6)
129
128
  - **Scope filter** — All / Project / Global / Bundled
@@ -132,20 +131,15 @@ A single panel manages both Hammoc-native snippets and Claude Code slash-command
132
131
  - **Kebab menu** — Copy to the other scope, delete (with confirmation)
133
132
  - **Bundled snippets** are read-only — copy to Project or Global scope first to customize
134
133
 
135
- **Command Favorites section** (bottom):
136
-
137
- - Drag-reorder list of slash command favorites (the same favorites shown in the chat input's favorites bar, see §4.3)
138
- - Each entry shows the command name, scope, and a star toggle that moves it between regular and star favorites
139
- - **Invalid chip** marker on favorites whose underlying command no longer exists on disk
140
- - Up to 20 regular + 10 star favorites per scope
141
-
142
134
  ### 12.12 Static Lint
143
135
 
144
136
  Every harness panel (skills, MCP, hooks, commands, agents) runs a background static-lint pass against its files. Lint output surfaces in three places:
145
137
 
146
138
  - **Count badges on section nav** — A red dot with the error count and an amber dot with the warning count appear on the section tab when issues exist
147
139
  - **Inline marker on cards** — The card header shows a small red or amber pill with the issue count; clicking jumps to the card detail or opens the editor
148
- - **Issues list at the top of each panel** — Expandable list of every issue with file path, severity, message, and a "Open" link
140
+ - **Issues list at the top of each panel** — Expandable list of every issue with file path, severity, and message. Each row carries two actions: **Go to file** and **Fix** (see below)
141
+
142
+ **Inline Fix with Claude:** Every lint issue row has a **Fix** button (labeled **Override & Fix** for plugin-provided files, since the fix is applied to an editable copy). Clicking it opens a new chat session pre-loaded with a bundled fix snippet matched to that rule (see §4.6), so Claude repairs the file for you. **Go to file** jumps to the card, or opens the raw file in the editor when no card exists. This also covers **malformed files**: a skill/command/agent whose frontmatter cannot be parsed may not render a card at all, but its lint row still offers both actions — Go to file opens the broken `.md` directly, and Fix launches the repair session with the file's path. Available in all five domains (skills, MCP, hooks, commands, agents).
149
143
 
150
144
  **Rule preferences:** The **Lint preferences** button at the top-right of the workbench opens a dialog listing all seven rules. Each rule has an on/off toggle plus a description, and a **Restore defaults** button reverts the preferences. Preferences are stored globally (not per-project).
151
145
 
@@ -153,7 +147,7 @@ Every harness panel (skills, MCP, hooks, commands, agents) runs a background sta
153
147
 
154
148
  | Rule | Default | Catches |
155
149
  |------|---------|---------|
156
- | `naming/duplicate-across-sources` | on | The same name exists in two scopes (project + global, etc.) — surfaces which copy will actually load |
150
+ | `naming/duplicate-across-sources` | on | The same name is declared twice within one scope (e.g. an MCP server in both `.mcp.json` and `.claude/.mcp.json`), so one copy silently wins. Same names across different scopes are normal precedence and are not flagged the active scope is shown on the card badges |
157
151
  | `hook/matcher-regex-invalid` | on | Hook `matcher` regex won't compile |
158
152
  | `parse/yaml-json-error` | on | Frontmatter or JSON config can't be parsed |
159
153
  | `mcp/command-not-on-path` | off | MCP `stdio` command is not on the server's `PATH` |
@@ -254,3 +248,14 @@ The **Marketplace** panel lets you discover Claude Code plugins from the marketp
254
248
  - **Auto-refresh** — After you install or remove a plugin in your CLI session, Hammoc detects the on-disk change and updates both this catalog's **Installed** badges and the Plugins panel cards automatically.
255
249
  - **Resilience** — If one marketplace's catalog file can't be read, only that marketplace shows an error badge and the rest still load. If the installed-plugins file is in an unrecognized format, a warning banner notes that installed state may be incomplete.
256
250
 
251
+ ### 12.20 Command Favorites Panel
252
+
253
+ A dedicated workbench section for the slash-command favorites shown in the chat input's favorites bar (see §4.3):
254
+
255
+ - **Scope filter** — All / Project / Global tabs
256
+ - **Scope badges** — Each favorite shows where its command actually lives: **Project** (only in this project) or **Global** (available in every project — user-global, plugin-provided, and built-in commands all count as Global). The scope is derived from the command's real source at render time and cannot be set manually; the old manual scope picker is gone
257
+ - **Add favorite** — A star button opens a dialog listing every available `/slash` command not yet favorited; pick one to add it
258
+ - **Drag-reorder** — Drag the grip handle (arrow buttons on mobile) to rearrange
259
+ - **"Not found" marker** — Favorites whose underlying command no longer exists in the current project are flagged; they can be removed but not used
260
+ - Up to **20 favorites** total
261
+
@@ -39,8 +39,11 @@ Choose the default Claude model:
39
39
  - **Opus** — Latest Opus
40
40
  - **Haiku** — Latest Haiku
41
41
 
42
- **Mythos-class:**
43
- - Fable 5 (1M opt-in)
42
+ **Mythos-class** (hidden unless credit-only models are allowed — see below):
43
+ - Fable 5 (always 1M, bills to usage credits)
44
+
45
+ **Claude 5:**
46
+ - Sonnet 5 (1M context)
44
47
 
45
48
  **Claude 4.x:**
46
49
  - Opus 4.8 (most capable, 1M context), 4.7, 4.6, 4.5, 4.1, 4
@@ -52,7 +55,9 @@ Choose the default Claude model:
52
55
  - Haiku 3.5
53
56
  - Opus 3, Sonnet 3, Haiku 3
54
57
 
55
- > **1M context window**: Opus 4.8 always runs with its 1M window (included with Max). Sonnet 4.6's 1M window is **opt-in** and bills to usage credits — enable it per session with the "1M context" toggle in the model selector (see §2.15). Left off, Sonnet uses a 200K window.
58
+ > **1M context window**: Opus 4.8 and Sonnet 5 always run with their 1M window (included with Max). Sonnet 4.6's 1M window is **opt-in** and bills to usage credits — enable it per session with the "1M context" toggle in the model selector (see §2.15). Left off, Sonnet 4.6 uses a 200K window. Fable 5 always runs at 1M; its billing is per-model, not per-window.
59
+
60
+ **Allow credit-only models** — A separate checkbox in Global settings, **off by default**. Mythos-class models (e.g., Fable 5) bill to Anthropic usage credits instead of your subscription, so they are hidden from every model picker until you enable this. Once enabled, credit-only models appear in the pickers with an amber **Credit** badge and amber label text; selecting one requires no further confirmation — the badge is the cost signal. Your credit balance is visible under Settings > Claude Account (see §13.14).
56
61
 
57
62
  Can be overridden per-project (see §5.3).
58
63
 
@@ -116,8 +121,8 @@ The timeout resets on every activity, and it only guards Claude's own generation
116
121
  Set the default thinking effort for new sessions:
117
122
 
118
123
  - **SDK Default** / Low / Medium / High / XHigh / Max
119
- - Max is available on Opus 4.6, Sonnet 4.6, Opus 4.7, and Opus 4.8
120
- - XHigh is available on Opus 4.7 and Opus 4.8 (and is the SDK default for those models)
124
+ - Max is available on Opus 4.6, Sonnet 4.6, Opus 4.7, Opus 4.8, and Sonnet 5
125
+ - XHigh is available on Opus 4.7+, Sonnet 5, and Fable 5 (and is the SDK default for Opus 4.7+ and Fable 5)
121
126
  - If the active model does not support the configured level, it falls back to High automatically — the saved preference is kept, only the request to the SDK is clamped
122
127
  - The chosen level is preserved while the active model is still resolving (no flicker back to Default during project switches)
123
128
 
@@ -192,7 +197,9 @@ Shows the Claude Code account that Hammoc is using, plus live subscription usage
192
197
  **Active account info:**
193
198
 
194
199
  - **Account info** — Email, Subscription plan, Provider (e.g., Claude API / Claude.ai), Organization (if applicable), and the timestamp of the last fetch
195
- - **Usage bars** — Two progress bars showing consumption of the **5-hour window** and **7-day window** quotas, with color thresholds (green / yellow / red at 50% / 80%) and reset times
200
+ - **Usage bars** — Progress bars showing consumption of the **5-hour window** and **7-day window** quotas, with color thresholds (green / yellow / red at 50% / 80%) and reset times. Plans with per-model weekly quotas show an additional bar per capped model (e.g., "7-day window (Fable)") — these extra bars appear only here, never in the input-area status dots
201
+ - **Extra usage credits** — When the account has usage credits, a credit section (laid out after claude.ai's billing page) appears below the usage bars showing **Spent this month** (as a progress bar when a monthly limit is set), the **Monthly spending limit**, and the **Current balance**. A negative balance (overdraft) is shown in red — it is a valid state, not an error. If extra usage is turned off or exhausted, an amber notice says so
202
+ - **Rate-limit notice** — If usage lookups get throttled by the API (for example after rapid account switching), an amber note replaces the bars and states when checks resume automatically
196
203
  - **Refresh** — Manually fetch the latest account info and usage from the API (spinner shown while refreshing). Toast confirms success or failure
197
204
  - **Sign out** — Log out of the active Claude account
198
205
  - If no data has been fetched yet, a helper line explains that account info fills in automatically after the first chat or after clicking Refresh
@@ -315,3 +322,12 @@ Displays app information:
315
322
  - **Server version**
316
323
  - **Server time** — Localized timestamp
317
324
 
325
+ ### 13.21 Resident Engine (SDK)
326
+
327
+ With the SDK engine, Hammoc keeps recently used chat sessions "warm" between turns so a follow-up message starts instantly instead of paying an engine cold-start. Two Global settings bound this:
328
+
329
+ - **Resident Engine Limit** — How many sessions stay warm at once: 4 / **8 (default)** / 16 / 32 / 64. Beyond the limit, the least-recently-used session is retired; your next message to it restarts the engine (about 3 seconds) with no loss of history
330
+ - **Resident Engine Idle Timeout** — How long an idle session stays warm before being retired to free resources: 5 / **10 (default)** / 30 / 60 minutes
331
+
332
+ Turns in progress are never affected — retirement only happens between turns. Both settings are ignored by the CLI engine.
333
+
@@ -8,7 +8,7 @@
8
8
  | `Shift+Enter` | New line in message |
9
9
  | `ESC` | Abort generation / close command palette |
10
10
  | `Ctrl+C` | Abort generation (only when no text is selected; otherwise copies) |
11
- | `↑` / `↓` | Navigate prompt history (when cursor is at start/end of input) |
11
+ | `↑` / `↓` | Navigate prompt history (when cursor is at start/end of input; on touch devices, swipe up on the empty input instead) |
12
12
  | `/` | Open slash command palette (auto-triggered when input starts with `/`) |
13
13
  | `*` | Open star command palette (auto-triggered when input starts with `*`, requires active agent) |
14
14
  | `%` | Open snippet autocomplete palette (auto-triggered when input starts with `%`) |
@@ -56,6 +56,13 @@ Note: Quick panel shortcuts are disabled when an input or textarea is focused.
56
56
  | `←` / `→` | Previous / next image (when multiple images form a set) |
57
57
  | `ESC` | Close image viewer |
58
58
 
59
+ ### PDF Viewer
60
+
61
+ | Shortcut | Action |
62
+ |----------|--------|
63
+ | `←` / `→` | Previous / next page |
64
+ | `ESC` | Close PDF viewer |
65
+
59
66
  ### Terminal
60
67
 
61
68
  | Shortcut | Action |
@@ -3,4 +3,6 @@
3
3
  * Story 25.4: Server — Branch-aware Message Pagination
4
4
  */
5
5
  export declare const ROOT_BRANCH_KEY: "__root__";
6
+ export declare const COMPACT_MESSAGE_PREFIX = "This session is being continued from a previous conversation";
7
+ export declare const COMPACT_COMMAND_ECHO = "/compact";
6
8
  //# sourceMappingURL=messageTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageTree.d.ts","sourceRoot":"","sources":["../../src/constants/messageTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,eAAe,EAAG,UAAmB,CAAC"}
1
+ {"version":3,"file":"messageTree.d.ts","sourceRoot":"","sources":["../../src/constants/messageTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,eAAe,EAAG,UAAmB,CAAC;AAKnD,eAAO,MAAM,sBAAsB,iEAAiE,CAAC;AAGrG,eAAO,MAAM,oBAAoB,aAAa,CAAC"}
@@ -4,4 +4,10 @@
4
4
  */
5
5
  // Special key for root-level branch selection (multi-root from compact_boundary)
6
6
  export const ROOT_BRANCH_KEY = '__root__';
7
+ // Prefix of the SDK-generated compact summary echo user message. The chat view
8
+ // hides messages starting with this prefix (the compact_boundary divider already
9
+ // conveys the compaction), so they cannot carry branch pagination.
10
+ export const COMPACT_MESSAGE_PREFIX = 'This session is being continued from a previous conversation';
11
+ // Command echo left in the compact epoch by a manual /compact — also hidden.
12
+ export const COMPACT_COMMAND_ECHO = '/compact';
7
13
  //# sourceMappingURL=messageTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageTree.js","sourceRoot":"","sources":["../../src/constants/messageTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG,UAAmB,CAAC"}
1
+ {"version":3,"file":"messageTree.js","sourceRoot":"","sources":["../../src/constants/messageTree.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAG,UAAmB,CAAC;AAEnD,+EAA+E;AAC/E,iFAAiF;AACjF,mEAAmE;AACnE,MAAM,CAAC,MAAM,sBAAsB,GAAG,8DAA8D,CAAC;AAErG,6EAA6E;AAC7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC"}
@@ -13,7 +13,7 @@ export type { ChangePasswordRequest, ChangePasswordResponse } from './types/auth
13
13
  export { ProjectInfo, ProjectListResponse, PROJECT_ERRORS, CreateProjectRequest, CreateProjectResponse, DeleteProjectResponse, ValidatePathRequest, ValidatePathResponse, BmadVersionsResponse, ProjectSettings, UpdateProjectSettingsRequest, ProjectSettingsApiResponse, SetupBmadRequest, SetupBmadResponse, } from './types/project.js';
14
14
  export { SlashCommand, StarCommand, CommandsResponse, SnippetItem } from './types/command.js';
15
15
  export { CommandFavoriteEntry, UserPreferences, PromptHistoryData, DEFAULT_PREFERENCES, PreferencesApiResponse, TelegramSettings, TelegramSettingsApiResponse, UpdateTelegramSettingsRequest, WebPushSettings, WebPushSettingsApiResponse, WebPushSubscribeRequest, SupportedLanguage, SUPPORTED_LANGUAGES, PermissionSyncPolicy, SystemPromptSectionsResponse, ProjectSystemPromptResponse, } from './types/preferences.js';
16
- export { RawJSONLMessage, HistoryMessage, PaginationInfo, HistoryMessagesResponse, PaginationOptions, ContentBlock, TextContentBlock, ThinkingContentBlock, ToolUseContentBlock, ToolResultContentBlock, ImageContentBlock, } from './types/history.js';
16
+ export { RawJSONLMessage, HistoryMessage, PaginationInfo, HistoryMessagesResponse, PaginationOptions, ContentBlock, TextContentBlock, ThinkingContentBlock, ToolUseContentBlock, ToolResultContentBlock, ImageContentBlock, DocumentContentBlock, } from './types/history.js';
17
17
  export * from './types/fileSystem.js';
18
18
  export * from './types/systemBrowse.js';
19
19
  export * from './types/bmadStatus.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAIrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIrF,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG9F,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,6BAA6B,EAC7B,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAG5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG/E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAG/F,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG5D,cAAc,oBAAoB,CAAC;AAGnC,cAAc,0BAA0B,CAAC;AAGzC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG3F,cAAc,0BAA0B,CAAC;AAGzC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,2BAA2B,CAAC;AAG1C,cAAc,wBAAwB,CAAC;AAGvC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AAGrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAIrC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EACL,UAAU,EACV,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,aAAa,EACb,sBAAsB,EACtB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAIrF,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,4BAA4B,EAC5B,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG9F,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,2BAA2B,EAC3B,6BAA6B,EAC7B,eAAe,EACf,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,4BAA4B,EAC5B,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,cAAc,uBAAuB,CAAC;AAGtC,cAAc,yBAAyB,CAAC;AAGxC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG/E,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAG/F,cAAc,gBAAgB,CAAC;AAG/B,cAAc,qBAAqB,CAAC;AAGpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG5D,cAAc,oBAAoB,CAAC;AAGnC,cAAc,0BAA0B,CAAC;AAGzC,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG3F,cAAc,0BAA0B,CAAC;AAGzC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,2BAA2B,CAAC;AAG1C,cAAc,wBAAwB,CAAC;AAGvC,cAAc,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,cAAc,gBAAgB,CAAC;AAE/B,+CAA+C;AAC/C,cAAc,sBAAsB,CAAC;AAErC,2CAA2C;AAC3C,cAAc,sBAAsB,CAAC;AAErC,4DAA4D;AAC5D,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC,kDAAkD;AAClD,2FAA2F;AAC3F,cAAc,oBAAoB,CAAC;AAEnC,iDAAiD;AACjD,cAAc,gBAAgB,CAAC;AAE/B,mDAAmD;AACnD,OAAO,EAGL,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,yBAAyB;AACzB,OAAO,EAKL,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,0CAA0C;AAC1C,OAAO,EAGL,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC;AAEzB,iCAAiC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKtD,gDAAgD;AAChD,kDAAkD;AAClD,OAAO,EAGL,cAAc,GAYf,MAAM,oBAAoB,CAAC;AAM5B,gDAAgD;AAChD,OAAO,EAIL,mBAAmB,EASnB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAiBhC,qEAAqE;AACrE,cAAc,uBAAuB,CAAC;AAEtC,iFAAiF;AACjF,cAAc,yBAAyB,CAAC;AAExC,uDAAuD;AACvD,cAAc,uBAAuB,CAAC;AAEtC,iCAAiC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,kCAAkC;AAClC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE/E,uCAAuC;AACvC,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/F,kCAAkC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,2CAA2C;AAC3C,cAAc,qBAAqB,CAAC;AAEpC,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,oCAAoC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,kDAAkD;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5D,sEAAsE;AACtE,cAAc,oBAAoB,CAAC;AAEnC,yEAAyE;AACzE,cAAc,0BAA0B,CAAC;AAEzC,2EAA2E;AAC3E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AAErC,8EAA8E;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,kFAAkF;AAClF,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAE3F,gDAAgD;AAChD,cAAc,0BAA0B,CAAC;AAEzC,0DAA0D;AAC1D,cAAc,2BAA2B,CAAC;AAE1C,0DAA0D;AAC1D,cAAc,2BAA2B,CAAC;AAE1C,wDAAwD;AACxD,cAAc,wBAAwB,CAAC;AAEvC,wEAAwE;AACxE,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,cAAc,gBAAgB,CAAC;AAE/B,+CAA+C;AAC/C,cAAc,sBAAsB,CAAC;AAErC,2CAA2C;AAC3C,cAAc,sBAAsB,CAAC;AAErC,4DAA4D;AAC5D,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AAErC,kDAAkD;AAClD,2FAA2F;AAC3F,cAAc,oBAAoB,CAAC;AAEnC,iDAAiD;AACjD,cAAc,gBAAgB,CAAC;AAE/B,mDAAmD;AACnD,OAAO,EAGL,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,yBAAyB;AACzB,OAAO,EAKL,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,0CAA0C;AAC1C,OAAO,EAGL,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC;AAEzB,iCAAiC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAKtD,gDAAgD;AAChD,kDAAkD;AAClD,OAAO,EAGL,cAAc,GAYf,MAAM,oBAAoB,CAAC;AAM5B,gDAAgD;AAChD,OAAO,EAIL,mBAAmB,EASnB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAkBhC,qEAAqE;AACrE,cAAc,uBAAuB,CAAC;AAEtC,iFAAiF;AACjF,cAAc,yBAAyB,CAAC;AAExC,uDAAuD;AACvD,cAAc,uBAAuB,CAAC;AAEtC,iCAAiC;AACjC,cAAc,kBAAkB,CAAC;AAEjC,kCAAkC;AAClC,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE/E,uCAAuC;AACvC,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE/F,kCAAkC;AAClC,cAAc,gBAAgB,CAAC;AAE/B,2CAA2C;AAC3C,cAAc,qBAAqB,CAAC;AAEpC,8BAA8B;AAC9B,cAAc,sBAAsB,CAAC;AAErC,oCAAoC;AACpC,cAAc,kBAAkB,CAAC;AAEjC,kDAAkD;AAClD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE5D,sEAAsE;AACtE,cAAc,oBAAoB,CAAC;AAEnC,yEAAyE;AACzE,cAAc,0BAA0B,CAAC;AAEzC,2EAA2E;AAC3E,OAAO,EACL,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AAErC,8EAA8E;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAEzE,kFAAkF;AAClF,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAE3F,gDAAgD;AAChD,cAAc,0BAA0B,CAAC;AAEzC,0DAA0D;AAC1D,cAAc,2BAA2B,CAAC;AAE1C,0DAA0D;AAC1D,cAAc,2BAA2B,CAAC;AAE1C,wDAAwD;AACxD,cAAc,wBAAwB,CAAC;AAEvC,wEAAwE;AACxE,cAAc,qBAAqB,CAAC"}
@@ -10,6 +10,7 @@
10
10
  * server-side {@link StoredAccount.credential} block. It is never serialized into an
11
11
  * API response or a WebSocket payload — those carry the token-free {@link AccountSummary}.
12
12
  */
13
+ import type { AccountInfoResponse } from './sdk.js';
13
14
  /**
14
15
  * The `claudeAiOauth` block from `~/.claude/.credentials.json`, captured verbatim.
15
16
  * Shape verified against the live file (BS-8 Dev Notes › Credential File Structure):
@@ -45,6 +46,16 @@ export interface StoredAccount {
45
46
  lastUsedAt: number;
46
47
  /** True when keyed by the `account:<hash>` fallback and the email needs back-fill (AC1a). */
47
48
  needsEmailBackfill?: boolean;
49
+ /**
50
+ * The CLI's cached identity block (`oauthAccount` from `~/.claude.json`), captured verbatim
51
+ * when it verifiably belongs to this account (its `emailAddress` matches {@link email}).
52
+ * The CLI reports "who is logged in" from that on-disk cache — NOT from the credential
53
+ * file — so a switch must write this back alongside the credential, or every identity
54
+ * readout keeps showing the previously logged-in account. Server-side only, like
55
+ * {@link credential}. Absent for accounts captured before this field existed; the switch
56
+ * then drops the stale cache and the CLI re-derives it from the live token.
57
+ */
58
+ identity?: Record<string, unknown>;
48
59
  }
49
60
  /**
50
61
  * On-disk shape of `~/.hammoc/accounts.json`.
@@ -90,6 +101,8 @@ export interface AccountSwitchResponse {
90
101
  */
91
102
  reauthRequired: boolean;
92
103
  accounts: AccountSummary[];
104
+ /** Refreshed account info for the now-active credential (null when the bootstrap fetch fails). */
105
+ accountInfo?: AccountInfoResponse | null;
93
106
  }
94
107
  /** WebSocket `account:switched` payload — token-free (AC15). */
95
108
  export interface AccountSwitchedEvent {
@@ -1 +1 @@
1
- {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/types/accounts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mEAAmE;QACnE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,qFAAqF;QACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,2EAA2E;IAC3E,UAAU,EAAE,qBAAqB,CAAC;IAClC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,sDAAsD;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;CACb"}
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/types/accounts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mEAAmE;QACnE,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,qFAAqF;QACrF,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,2EAA2E;IAC3E,UAAU,EAAE,qBAAqB,CAAC;IAClC,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACzC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,sDAAsD;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,0CAA0C;AAC1C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,kGAAkG;IAClG,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1C;AAED,gEAAgE;AAChE,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;CACb"}
@@ -34,7 +34,20 @@ export interface ImageContentBlock {
34
34
  data: string;
35
35
  };
36
36
  }
37
- export type ContentBlock = TextContentBlock | ThinkingContentBlock | ToolUseContentBlock | ToolResultContentBlock | ImageContentBlock;
37
+ /**
38
+ * PDF document block (Story BS-11). Local interface mirroring the SDK's
39
+ * DocumentBlockParam shape — shared must not depend on @anthropic-ai/sdk.
40
+ */
41
+ export interface DocumentContentBlock {
42
+ type: 'document';
43
+ source: {
44
+ type: 'base64';
45
+ media_type: string;
46
+ data: string;
47
+ };
48
+ title?: string | null;
49
+ }
50
+ export type ContentBlock = TextContentBlock | ThinkingContentBlock | ToolUseContentBlock | ToolResultContentBlock | ImageContentBlock | DocumentContentBlock;
38
51
  /**
39
52
  * Raw JSONL message structure from Claude Code session file
40
53
  * Note: content can be a string or an array of content blocks
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/types/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/types/history.ts"],"names":[],"mappings":"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"}