hammoc 1.5.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 (372) hide show
  1. package/README.md +12 -4
  2. package/package.json +2 -2
  3. package/packages/client/dist/assets/{agentExampleHighlight-BgwTm15v.js → agentExampleHighlight-7Olvqdpf.js} +1 -1
  4. package/packages/client/dist/assets/{commandTokenHighlight-BljHwnrK.js → commandTokenHighlight-DtKwh4lx.js} +1 -1
  5. package/packages/client/dist/assets/index-B09doO8H.js +139 -0
  6. package/packages/client/dist/assets/index-Bee52CKG.js +1569 -0
  7. package/packages/client/dist/assets/index-CVy582lU.css +32 -0
  8. package/packages/client/dist/assets/{index-D3LxqW3f.js → index-DLHBUw8c.js} +1 -1
  9. package/packages/client/dist/assets/{snippetTokenHighlight-DWsaQXX0.js → snippetTokenHighlight-C8O688f4.js} +1 -1
  10. package/packages/client/dist/index.html +2 -2
  11. package/packages/client/dist/sw.js +2 -2
  12. package/packages/server/dist/_dbg_agent_rows.d.ts +2 -0
  13. package/packages/server/dist/_dbg_agent_rows.d.ts.map +1 -0
  14. package/packages/server/dist/_dbg_agent_rows.js +60 -0
  15. package/packages/server/dist/_dbg_agent_rows.js.map +1 -0
  16. package/packages/server/dist/_dbg_flicker.d.ts +2 -0
  17. package/packages/server/dist/_dbg_flicker.d.ts.map +1 -0
  18. package/packages/server/dist/_dbg_flicker.js +38 -0
  19. package/packages/server/dist/_dbg_flicker.js.map +1 -0
  20. package/packages/server/dist/_harness_cli.d.ts +2 -0
  21. package/packages/server/dist/_harness_cli.d.ts.map +1 -0
  22. package/packages/server/dist/_harness_cli.js +81 -0
  23. package/packages/server/dist/_harness_cli.js.map +1 -0
  24. package/packages/server/dist/_harness_provcard.d.ts +2 -0
  25. package/packages/server/dist/_harness_provcard.d.ts.map +1 -0
  26. package/packages/server/dist/_harness_provcard.js +67 -0
  27. package/packages/server/dist/_harness_provcard.js.map +1 -0
  28. package/packages/server/dist/_replay_dump.d.ts +2 -0
  29. package/packages/server/dist/_replay_dump.d.ts.map +1 -0
  30. package/packages/server/dist/_replay_dump.js +62 -0
  31. package/packages/server/dist/_replay_dump.js.map +1 -0
  32. package/packages/server/dist/app.d.ts.map +1 -1
  33. package/packages/server/dist/app.js +6 -0
  34. package/packages/server/dist/app.js.map +1 -1
  35. package/packages/server/dist/config/index.d.ts.map +1 -1
  36. package/packages/server/dist/config/index.js.map +1 -1
  37. package/packages/server/dist/controllers/bmadCoreConfigController.d.ts +41 -0
  38. package/packages/server/dist/controllers/bmadCoreConfigController.d.ts.map +1 -0
  39. package/packages/server/dist/controllers/bmadCoreConfigController.js +172 -0
  40. package/packages/server/dist/controllers/bmadCoreConfigController.js.map +1 -0
  41. package/packages/server/dist/controllers/contextBuilderController.d.ts +43 -0
  42. package/packages/server/dist/controllers/contextBuilderController.d.ts.map +1 -0
  43. package/packages/server/dist/controllers/contextBuilderController.js +159 -0
  44. package/packages/server/dist/controllers/contextBuilderController.js.map +1 -0
  45. package/packages/server/dist/controllers/harnessAgentController.d.ts +7 -0
  46. package/packages/server/dist/controllers/harnessAgentController.d.ts.map +1 -1
  47. package/packages/server/dist/controllers/harnessAgentController.js +33 -0
  48. package/packages/server/dist/controllers/harnessAgentController.js.map +1 -1
  49. package/packages/server/dist/controllers/harnessBundleController.d.ts +37 -0
  50. package/packages/server/dist/controllers/harnessBundleController.d.ts.map +1 -0
  51. package/packages/server/dist/controllers/harnessBundleController.js +312 -0
  52. package/packages/server/dist/controllers/harnessBundleController.js.map +1 -0
  53. package/packages/server/dist/controllers/harnessCommandController.d.ts +7 -0
  54. package/packages/server/dist/controllers/harnessCommandController.d.ts.map +1 -1
  55. package/packages/server/dist/controllers/harnessCommandController.js +33 -0
  56. package/packages/server/dist/controllers/harnessCommandController.js.map +1 -1
  57. package/packages/server/dist/controllers/harnessHookController.d.ts.map +1 -1
  58. package/packages/server/dist/controllers/harnessHookController.js +44 -1
  59. package/packages/server/dist/controllers/harnessHookController.js.map +1 -1
  60. package/packages/server/dist/controllers/harnessMcpController.d.ts.map +1 -1
  61. package/packages/server/dist/controllers/harnessMcpController.js +62 -1
  62. package/packages/server/dist/controllers/harnessMcpController.js.map +1 -1
  63. package/packages/server/dist/controllers/harnessShareScopeController.d.ts +9 -0
  64. package/packages/server/dist/controllers/harnessShareScopeController.d.ts.map +1 -1
  65. package/packages/server/dist/controllers/harnessShareScopeController.js +48 -1
  66. package/packages/server/dist/controllers/harnessShareScopeController.js.map +1 -1
  67. package/packages/server/dist/controllers/marketplaceController.d.ts +19 -0
  68. package/packages/server/dist/controllers/marketplaceController.d.ts.map +1 -0
  69. package/packages/server/dist/controllers/marketplaceController.js +74 -0
  70. package/packages/server/dist/controllers/marketplaceController.js.map +1 -0
  71. package/packages/server/dist/controllers/observabilityController.d.ts +32 -0
  72. package/packages/server/dist/controllers/observabilityController.d.ts.map +1 -0
  73. package/packages/server/dist/controllers/observabilityController.js +148 -0
  74. package/packages/server/dist/controllers/observabilityController.js.map +1 -0
  75. package/packages/server/dist/controllers/projectController.d.ts.map +1 -1
  76. package/packages/server/dist/controllers/projectController.js +7 -1
  77. package/packages/server/dist/controllers/projectController.js.map +1 -1
  78. package/packages/server/dist/controllers/sessionController.d.ts.map +1 -1
  79. package/packages/server/dist/controllers/sessionController.js +16 -4
  80. package/packages/server/dist/controllers/sessionController.js.map +1 -1
  81. package/packages/server/dist/controllers/systemBrowseController.d.ts +33 -0
  82. package/packages/server/dist/controllers/systemBrowseController.d.ts.map +1 -0
  83. package/packages/server/dist/controllers/systemBrowseController.js +105 -0
  84. package/packages/server/dist/controllers/systemBrowseController.js.map +1 -0
  85. package/packages/server/dist/handlers/streamCallbacks.d.ts +10 -0
  86. package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
  87. package/packages/server/dist/handlers/streamCallbacks.js +25 -4
  88. package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
  89. package/packages/server/dist/handlers/websocket.d.ts +43 -3
  90. package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
  91. package/packages/server/dist/handlers/websocket.js +385 -93
  92. package/packages/server/dist/handlers/websocket.js.map +1 -1
  93. package/packages/server/dist/index.js +2 -0
  94. package/packages/server/dist/index.js.map +1 -1
  95. package/packages/server/dist/locales/en/server.json +17 -0
  96. package/packages/server/dist/locales/es/server.json +17 -0
  97. package/packages/server/dist/locales/ja/server.json +17 -0
  98. package/packages/server/dist/locales/ko/server.json +17 -0
  99. package/packages/server/dist/locales/pt/server.json +17 -0
  100. package/packages/server/dist/locales/zh-CN/server.json +17 -0
  101. package/packages/server/dist/routes/harness.d.ts.map +1 -1
  102. package/packages/server/dist/routes/harness.js +58 -0
  103. package/packages/server/dist/routes/harness.js.map +1 -1
  104. package/packages/server/dist/routes/preferences.d.ts.map +1 -1
  105. package/packages/server/dist/routes/preferences.js +12 -2
  106. package/packages/server/dist/routes/preferences.js.map +1 -1
  107. package/packages/server/dist/routes/systemBrowse.d.ts +17 -0
  108. package/packages/server/dist/routes/systemBrowse.d.ts.map +1 -0
  109. package/packages/server/dist/routes/systemBrowse.js +22 -0
  110. package/packages/server/dist/routes/systemBrowse.js.map +1 -0
  111. package/packages/server/dist/services/bmadCoreConfigService.d.ts +86 -0
  112. package/packages/server/dist/services/bmadCoreConfigService.d.ts.map +1 -0
  113. package/packages/server/dist/services/bmadCoreConfigService.js +175 -0
  114. package/packages/server/dist/services/bmadCoreConfigService.js.map +1 -0
  115. package/packages/server/dist/services/bmadStatusService.d.ts +9 -0
  116. package/packages/server/dist/services/bmadStatusService.d.ts.map +1 -1
  117. package/packages/server/dist/services/bmadStatusService.js +77 -13
  118. package/packages/server/dist/services/bmadStatusService.js.map +1 -1
  119. package/packages/server/dist/services/chatEngine.d.ts +81 -0
  120. package/packages/server/dist/services/chatEngine.d.ts.map +1 -0
  121. package/packages/server/dist/services/chatEngine.js +2 -0
  122. package/packages/server/dist/services/chatEngine.js.map +1 -0
  123. package/packages/server/dist/services/chatEngineFactory.d.ts +15 -0
  124. package/packages/server/dist/services/chatEngineFactory.d.ts.map +1 -0
  125. package/packages/server/dist/services/chatEngineFactory.js +28 -0
  126. package/packages/server/dist/services/chatEngineFactory.js.map +1 -0
  127. package/packages/server/dist/services/chatService.d.ts +34 -26
  128. package/packages/server/dist/services/chatService.d.ts.map +1 -1
  129. package/packages/server/dist/services/chatService.js +44 -104
  130. package/packages/server/dist/services/chatService.js.map +1 -1
  131. package/packages/server/dist/services/cliChatEngine.d.ts +198 -0
  132. package/packages/server/dist/services/cliChatEngine.d.ts.map +1 -0
  133. package/packages/server/dist/services/cliChatEngine.js +2977 -0
  134. package/packages/server/dist/services/cliChatEngine.js.map +1 -0
  135. package/packages/server/dist/services/cliGridCards.d.ts +87 -0
  136. package/packages/server/dist/services/cliGridCards.d.ts.map +1 -0
  137. package/packages/server/dist/services/cliGridCards.js +298 -0
  138. package/packages/server/dist/services/cliGridCards.js.map +1 -0
  139. package/packages/server/dist/services/cliGridRegion.d.ts +44 -0
  140. package/packages/server/dist/services/cliGridRegion.d.ts.map +1 -0
  141. package/packages/server/dist/services/cliGridRegion.js +94 -0
  142. package/packages/server/dist/services/cliGridRegion.js.map +1 -0
  143. package/packages/server/dist/services/cliModalDetect.d.ts +299 -0
  144. package/packages/server/dist/services/cliModalDetect.d.ts.map +1 -0
  145. package/packages/server/dist/services/cliModalDetect.js +583 -0
  146. package/packages/server/dist/services/cliModalDetect.js.map +1 -0
  147. package/packages/server/dist/services/cliScreenCache.d.ts +33 -0
  148. package/packages/server/dist/services/cliScreenCache.d.ts.map +1 -0
  149. package/packages/server/dist/services/cliScreenCache.js +48 -0
  150. package/packages/server/dist/services/cliScreenCache.js.map +1 -0
  151. package/packages/server/dist/services/cliScreenModel.d.ts +141 -0
  152. package/packages/server/dist/services/cliScreenModel.d.ts.map +1 -0
  153. package/packages/server/dist/services/cliScreenModel.js +196 -0
  154. package/packages/server/dist/services/cliScreenModel.js.map +1 -0
  155. package/packages/server/dist/services/cliScreenStallWatchdog.d.ts +41 -0
  156. package/packages/server/dist/services/cliScreenStallWatchdog.d.ts.map +1 -0
  157. package/packages/server/dist/services/cliScreenStallWatchdog.js +45 -0
  158. package/packages/server/dist/services/cliScreenStallWatchdog.js.map +1 -0
  159. package/packages/server/dist/services/cliSessionPool.d.ts +97 -0
  160. package/packages/server/dist/services/cliSessionPool.d.ts.map +1 -0
  161. package/packages/server/dist/services/cliSessionPool.js +278 -0
  162. package/packages/server/dist/services/cliSessionPool.js.map +1 -0
  163. package/packages/server/dist/services/cliSpinnerProgress.d.ts +41 -0
  164. package/packages/server/dist/services/cliSpinnerProgress.d.ts.map +1 -0
  165. package/packages/server/dist/services/cliSpinnerProgress.js +131 -0
  166. package/packages/server/dist/services/cliSpinnerProgress.js.map +1 -0
  167. package/packages/server/dist/services/contextBuilderScriptTemplate.d.ts +24 -0
  168. package/packages/server/dist/services/contextBuilderScriptTemplate.d.ts.map +1 -0
  169. package/packages/server/dist/services/contextBuilderScriptTemplate.js +181 -0
  170. package/packages/server/dist/services/contextBuilderScriptTemplate.js.map +1 -0
  171. package/packages/server/dist/services/contextBuilderService.d.ts +68 -0
  172. package/packages/server/dist/services/contextBuilderService.d.ts.map +1 -0
  173. package/packages/server/dist/services/contextBuilderService.js +345 -0
  174. package/packages/server/dist/services/contextBuilderService.js.map +1 -0
  175. package/packages/server/dist/services/fileRewind.d.ts +46 -0
  176. package/packages/server/dist/services/fileRewind.d.ts.map +1 -0
  177. package/packages/server/dist/services/fileRewind.js +77 -0
  178. package/packages/server/dist/services/fileRewind.js.map +1 -0
  179. package/packages/server/dist/services/fileWatcherService.d.ts.map +1 -1
  180. package/packages/server/dist/services/fileWatcherService.js +40 -0
  181. package/packages/server/dist/services/fileWatcherService.js.map +1 -1
  182. package/packages/server/dist/services/harnessAgentService.d.ts +18 -0
  183. package/packages/server/dist/services/harnessAgentService.d.ts.map +1 -1
  184. package/packages/server/dist/services/harnessAgentService.js +55 -0
  185. package/packages/server/dist/services/harnessAgentService.js.map +1 -1
  186. package/packages/server/dist/services/harnessBundleService.d.ts +145 -0
  187. package/packages/server/dist/services/harnessBundleService.d.ts.map +1 -0
  188. package/packages/server/dist/services/harnessBundleService.js +1318 -0
  189. package/packages/server/dist/services/harnessBundleService.js.map +1 -0
  190. package/packages/server/dist/services/harnessCommandService.d.ts +21 -0
  191. package/packages/server/dist/services/harnessCommandService.d.ts.map +1 -1
  192. package/packages/server/dist/services/harnessCommandService.js +64 -0
  193. package/packages/server/dist/services/harnessCommandService.js.map +1 -1
  194. package/packages/server/dist/services/harnessHookService.d.ts +27 -0
  195. package/packages/server/dist/services/harnessHookService.d.ts.map +1 -1
  196. package/packages/server/dist/services/harnessHookService.js +52 -0
  197. package/packages/server/dist/services/harnessHookService.js.map +1 -1
  198. package/packages/server/dist/services/harnessMcpService.d.ts +24 -1
  199. package/packages/server/dist/services/harnessMcpService.d.ts.map +1 -1
  200. package/packages/server/dist/services/harnessMcpService.js +70 -0
  201. package/packages/server/dist/services/harnessMcpService.js.map +1 -1
  202. package/packages/server/dist/services/harnessShareScopeService.d.ts +19 -0
  203. package/packages/server/dist/services/harnessShareScopeService.d.ts.map +1 -1
  204. package/packages/server/dist/services/harnessShareScopeService.js +65 -0
  205. package/packages/server/dist/services/harnessShareScopeService.js.map +1 -1
  206. package/packages/server/dist/services/historyParser.d.ts +11 -0
  207. package/packages/server/dist/services/historyParser.d.ts.map +1 -1
  208. package/packages/server/dist/services/historyParser.js +10 -8
  209. package/packages/server/dist/services/historyParser.js.map +1 -1
  210. package/packages/server/dist/services/imageStorageService.d.ts +12 -0
  211. package/packages/server/dist/services/imageStorageService.d.ts.map +1 -1
  212. package/packages/server/dist/services/imageStorageService.js +22 -0
  213. package/packages/server/dist/services/imageStorageService.js.map +1 -1
  214. package/packages/server/dist/services/issueService.d.ts.map +1 -1
  215. package/packages/server/dist/services/issueService.js +1 -0
  216. package/packages/server/dist/services/issueService.js.map +1 -1
  217. package/packages/server/dist/services/marketplaceService.d.ts +50 -0
  218. package/packages/server/dist/services/marketplaceService.d.ts.map +1 -0
  219. package/packages/server/dist/services/marketplaceService.js +326 -0
  220. package/packages/server/dist/services/marketplaceService.js.map +1 -0
  221. package/packages/server/dist/services/observabilityService.d.ts +87 -0
  222. package/packages/server/dist/services/observabilityService.d.ts.map +1 -0
  223. package/packages/server/dist/services/observabilityService.js +0 -0
  224. package/packages/server/dist/services/observabilityService.js.map +1 -0
  225. package/packages/server/dist/services/projectService.d.ts +13 -1
  226. package/packages/server/dist/services/projectService.d.ts.map +1 -1
  227. package/packages/server/dist/services/projectService.js +32 -0
  228. package/packages/server/dist/services/projectService.js.map +1 -1
  229. package/packages/server/dist/services/queueService.d.ts.map +1 -1
  230. package/packages/server/dist/services/queueService.js +12 -3
  231. package/packages/server/dist/services/queueService.js.map +1 -1
  232. package/packages/server/dist/services/rateLimitProbeService.d.ts +15 -0
  233. package/packages/server/dist/services/rateLimitProbeService.d.ts.map +1 -1
  234. package/packages/server/dist/services/rateLimitProbeService.js +48 -19
  235. package/packages/server/dist/services/rateLimitProbeService.js.map +1 -1
  236. package/packages/server/dist/services/sessionService.d.ts +16 -0
  237. package/packages/server/dist/services/sessionService.d.ts.map +1 -1
  238. package/packages/server/dist/services/sessionService.js +125 -0
  239. package/packages/server/dist/services/sessionService.js.map +1 -1
  240. package/packages/server/dist/services/streamHandler.d.ts +8 -1
  241. package/packages/server/dist/services/streamHandler.d.ts.map +1 -1
  242. package/packages/server/dist/services/streamHandler.js +12 -5
  243. package/packages/server/dist/services/streamHandler.js.map +1 -1
  244. package/packages/server/dist/services/systemBrowseService.d.ts +91 -0
  245. package/packages/server/dist/services/systemBrowseService.d.ts.map +1 -0
  246. package/packages/server/dist/services/systemBrowseService.js +372 -0
  247. package/packages/server/dist/services/systemBrowseService.js.map +1 -0
  248. package/packages/server/dist/services/tokenCountService.d.ts +71 -0
  249. package/packages/server/dist/services/tokenCountService.d.ts.map +1 -0
  250. package/packages/server/dist/services/tokenCountService.js +313 -0
  251. package/packages/server/dist/services/tokenCountService.js.map +1 -0
  252. package/packages/server/dist/services/workspaceContext.d.ts +24 -0
  253. package/packages/server/dist/services/workspaceContext.d.ts.map +1 -0
  254. package/packages/server/dist/services/workspaceContext.js +109 -0
  255. package/packages/server/dist/services/workspaceContext.js.map +1 -0
  256. package/packages/server/dist/snippets/apply-qa-fixes +7 -5
  257. package/packages/server/dist/snippets/qa-review +7 -1
  258. package/packages/server/dist/utils/assertSafeBundlePath.d.ts +29 -0
  259. package/packages/server/dist/utils/assertSafeBundlePath.d.ts.map +1 -0
  260. package/packages/server/dist/utils/assertSafeBundlePath.js +53 -0
  261. package/packages/server/dist/utils/assertSafeBundlePath.js.map +1 -0
  262. package/packages/server/dist/utils/backgroundBlock.d.ts +29 -0
  263. package/packages/server/dist/utils/backgroundBlock.d.ts.map +1 -0
  264. package/packages/server/dist/utils/backgroundBlock.js +33 -0
  265. package/packages/server/dist/utils/backgroundBlock.js.map +1 -0
  266. package/packages/server/dist/utils/backgroundTaskTracker.d.ts +20 -0
  267. package/packages/server/dist/utils/backgroundTaskTracker.d.ts.map +1 -0
  268. package/packages/server/dist/utils/backgroundTaskTracker.js +40 -0
  269. package/packages/server/dist/utils/backgroundTaskTracker.js.map +1 -0
  270. package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts +14 -0
  271. package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts.map +1 -0
  272. package/packages/server/dist/utils/bundledBinaryModelSupport.js +112 -0
  273. package/packages/server/dist/utils/bundledBinaryModelSupport.js.map +1 -0
  274. package/packages/server/dist/utils/cliDebugLog.d.ts +38 -0
  275. package/packages/server/dist/utils/cliDebugLog.d.ts.map +1 -0
  276. package/packages/server/dist/utils/cliDebugLog.js +65 -0
  277. package/packages/server/dist/utils/cliDebugLog.js.map +1 -0
  278. package/packages/server/dist/utils/cliEngineUtils.d.ts +35 -0
  279. package/packages/server/dist/utils/cliEngineUtils.d.ts.map +1 -0
  280. package/packages/server/dist/utils/cliEngineUtils.js +38 -0
  281. package/packages/server/dist/utils/cliEngineUtils.js.map +1 -0
  282. package/packages/server/dist/utils/effortUtils.d.ts +2 -2
  283. package/packages/server/dist/utils/effortUtils.d.ts.map +1 -1
  284. package/packages/server/dist/utils/effortUtils.js +7 -5
  285. package/packages/server/dist/utils/effortUtils.js.map +1 -1
  286. package/packages/server/dist/utils/errors.d.ts +1 -0
  287. package/packages/server/dist/utils/errors.d.ts.map +1 -1
  288. package/packages/server/dist/utils/errors.js +17 -0
  289. package/packages/server/dist/utils/errors.js.map +1 -1
  290. package/packages/server/dist/utils/harnessBundleSchema.d.ts +14 -12
  291. package/packages/server/dist/utils/harnessBundleSchema.d.ts.map +1 -1
  292. package/packages/server/dist/utils/harnessBundleSchema.js +11 -1
  293. package/packages/server/dist/utils/harnessBundleSchema.js.map +1 -1
  294. package/packages/server/dist/utils/harnessPaths.d.ts +40 -0
  295. package/packages/server/dist/utils/harnessPaths.d.ts.map +1 -1
  296. package/packages/server/dist/utils/harnessPaths.js +123 -0
  297. package/packages/server/dist/utils/harnessPaths.js.map +1 -1
  298. package/packages/server/dist/utils/trailingThrottle.d.ts +21 -0
  299. package/packages/server/dist/utils/trailingThrottle.d.ts.map +1 -0
  300. package/packages/server/dist/utils/trailingThrottle.js +36 -0
  301. package/packages/server/dist/utils/trailingThrottle.js.map +1 -0
  302. package/packages/server/package.json +61 -58
  303. package/packages/server/resources/internals/INDEX.md +3 -1
  304. package/packages/server/resources/internals/bmad-qa-fix-marker.md +32 -0
  305. package/packages/server/resources/internals/harness-files.md +22 -0
  306. package/packages/server/resources/internals/image-storage.md +9 -0
  307. package/packages/server/resources/internals/observability-storage.md +23 -0
  308. package/packages/server/resources/manual/02-chat.md +23 -4
  309. package/packages/server/resources/manual/03-sessions.md +1 -0
  310. package/packages/server/resources/manual/05-projects.md +15 -2
  311. package/packages/server/resources/manual/10-project-board.md +4 -3
  312. package/packages/server/resources/manual/11-bmad-method-integration.md +12 -8
  313. package/packages/server/resources/manual/12-harness-workbench.md +82 -1
  314. package/packages/server/resources/manual/13-settings.md +61 -9
  315. package/packages/shared/dist/index.d.ts +7 -0
  316. package/packages/shared/dist/index.d.ts.map +1 -1
  317. package/packages/shared/dist/index.js +14 -0
  318. package/packages/shared/dist/index.js.map +1 -1
  319. package/packages/shared/dist/types/bmadCoreConfig.d.ts +71 -0
  320. package/packages/shared/dist/types/bmadCoreConfig.d.ts.map +1 -0
  321. package/packages/shared/dist/types/bmadCoreConfig.js +30 -0
  322. package/packages/shared/dist/types/bmadCoreConfig.js.map +1 -0
  323. package/packages/shared/dist/types/bmadStatus.d.ts +26 -0
  324. package/packages/shared/dist/types/bmadStatus.d.ts.map +1 -1
  325. package/packages/shared/dist/types/bmadStatus.js.map +1 -1
  326. package/packages/shared/dist/types/board.d.ts +6 -0
  327. package/packages/shared/dist/types/board.d.ts.map +1 -1
  328. package/packages/shared/dist/types/contextBuilder.d.ts +102 -0
  329. package/packages/shared/dist/types/contextBuilder.d.ts.map +1 -0
  330. package/packages/shared/dist/types/contextBuilder.js +55 -0
  331. package/packages/shared/dist/types/contextBuilder.js.map +1 -0
  332. package/packages/shared/dist/types/harnessBundle.d.ts +35 -0
  333. package/packages/shared/dist/types/harnessBundle.d.ts.map +1 -1
  334. package/packages/shared/dist/types/marketplace.d.ts +83 -0
  335. package/packages/shared/dist/types/marketplace.d.ts.map +1 -0
  336. package/packages/shared/dist/types/marketplace.js +18 -0
  337. package/packages/shared/dist/types/marketplace.js.map +1 -0
  338. package/packages/shared/dist/types/observability.d.ts +148 -0
  339. package/packages/shared/dist/types/observability.d.ts.map +1 -0
  340. package/packages/shared/dist/types/observability.js +24 -0
  341. package/packages/shared/dist/types/observability.js.map +1 -0
  342. package/packages/shared/dist/types/preferences.d.ts +16 -2
  343. package/packages/shared/dist/types/preferences.d.ts.map +1 -1
  344. package/packages/shared/dist/types/preferences.js +1 -0
  345. package/packages/shared/dist/types/preferences.js.map +1 -1
  346. package/packages/shared/dist/types/project.d.ts +7 -1
  347. package/packages/shared/dist/types/project.d.ts.map +1 -1
  348. package/packages/shared/dist/types/project.js.map +1 -1
  349. package/packages/shared/dist/types/sdk.d.ts +124 -12
  350. package/packages/shared/dist/types/sdk.d.ts.map +1 -1
  351. package/packages/shared/dist/types/sdk.js +64 -19
  352. package/packages/shared/dist/types/sdk.js.map +1 -1
  353. package/packages/shared/dist/types/streaming.d.ts +2 -2
  354. package/packages/shared/dist/types/streaming.d.ts.map +1 -1
  355. package/packages/shared/dist/types/streaming.js.map +1 -1
  356. package/packages/shared/dist/types/systemBrowse.d.ts +120 -0
  357. package/packages/shared/dist/types/systemBrowse.d.ts.map +1 -0
  358. package/packages/shared/dist/types/systemBrowse.js +57 -0
  359. package/packages/shared/dist/types/systemBrowse.js.map +1 -0
  360. package/packages/shared/dist/types/websocket.d.ts +38 -0
  361. package/packages/shared/dist/types/websocket.d.ts.map +1 -1
  362. package/packages/shared/dist/utils/interruptFiller.d.ts +30 -0
  363. package/packages/shared/dist/utils/interruptFiller.d.ts.map +1 -0
  364. package/packages/shared/dist/utils/interruptFiller.js +38 -0
  365. package/packages/shared/dist/utils/interruptFiller.js.map +1 -0
  366. package/packages/shared/dist/utils/toolResultContent.d.ts +22 -0
  367. package/packages/shared/dist/utils/toolResultContent.d.ts.map +1 -0
  368. package/packages/shared/dist/utils/toolResultContent.js +29 -0
  369. package/packages/shared/dist/utils/toolResultContent.js.map +1 -0
  370. package/scripts/run-integration-test.mjs +362 -362
  371. package/packages/client/dist/assets/index-CjyjnXB8.css +0 -32
  372. package/packages/client/dist/assets/index-NqJdhlek.js +0 -1498
@@ -52,6 +52,16 @@ export interface BmadStoryStatus {
52
52
  title?: string;
53
53
  /** Latest QA gate decision: 'PASS' | 'CONCERNS' | 'FAIL' | 'WAIVED' */
54
54
  gateResult?: string;
55
+ /**
56
+ * The story's qa-fix marker state relative to the CURRENT gate:
57
+ * - 'applied': Dev ran apply-qa-fixes against this gate → QA re-review is next
58
+ * - 'needed': QA flagged this gate (CONCERNS/FAIL) and it is not yet
59
+ * addressed → apply-qa-fixes is next
60
+ * - undefined: no marker matches the current gate (legacy story or external
61
+ * BMad project) → the UI shows BOTH actions and lets the user pick
62
+ * Derived from explicit marker comments in the story, never from file mtime.
63
+ */
64
+ gateFixState?: 'needed' | 'applied';
55
65
  }
56
66
  /** Epic with its stories */
57
67
  export interface BmadEpicStatus {
@@ -77,11 +87,27 @@ export interface BmadAuxDocument {
77
87
  files?: DirEntry[];
78
88
  }
79
89
  /** Response for GET /api/projects/:projectSlug/bmad-status */
90
+ /**
91
+ * A QA gate file that failed to parse as YAML. Surfaced to the UI so it can warn
92
+ * that next-step recommendations may be inaccurate until the file is fixed —
93
+ * an unparseable gate is treated as "no gate", which silently misroutes the
94
+ * recommendation (e.g. a PASS gate that won't parse looks like "needs review").
95
+ */
96
+ export interface GateParseError {
97
+ /** Gate file name, e.g. "1.7-rule-firing-pool-entry-accrual.yml" */
98
+ file: string;
99
+ /** Story id parsed from the file name, e.g. "1.7" */
100
+ storyId: string;
101
+ /** Parser error message */
102
+ message: string;
103
+ }
80
104
  export interface BmadStatusResponse {
81
105
  config: BmadConfig;
82
106
  documents: BmadDocuments;
83
107
  auxiliaryDocuments: BmadAuxDocument[];
84
108
  epics: BmadEpicStatus[];
109
+ /** QA gate files that failed to parse. Omitted/empty when all gates parsed. */
110
+ gateParseErrors?: GateParseError[];
85
111
  }
86
112
  export declare const BMAD_STATUS_ERRORS: {
87
113
  readonly NOT_BMAD_PROJECT: {
@@ -1 +1 @@
1
- {"version":3,"file":"bmadStatus.d.ts","sourceRoot":"","sources":["../../src/types/bmadStatus.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4FAA4F;AAC5F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED,gCAAgC;AAChC,UAAU,kBAAkB;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;CAC3B;AAED,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,kBAAkB,CAAC;IACxB,YAAY,EAAE,kBAAkB,CAAC;IACjC,6DAA6D;IAC7D,aAAa,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED,6CAA6C;AAC7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,4BAA4B;AAC5B,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,iFAAiF;IACjF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;CACpB;AAED,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,aAAa,CAAC;IACzB,kBAAkB,EAAE,eAAe,EAAE,CAAC;IACtC,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;CAgBrB,CAAC"}
1
+ {"version":3,"file":"bmadStatus.d.ts","sourceRoot":"","sources":["../../src/types/bmadStatus.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bmadStatus.js","sourceRoot":"","sources":["../../src/types/bmadStatus.ts"],"names":[],"mappings":"AA8FA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,gBAAgB,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,mDAAmD;QAC5D,UAAU,EAAE,GAAG;KAChB;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,mCAAmC;QAC5C,UAAU,EAAE,GAAG;KAChB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,uBAAuB;QAChC,UAAU,EAAE,GAAG;KAChB;CACO,CAAC"}
1
+ {"version":3,"file":"bmadStatus.js","sourceRoot":"","sources":["../../src/types/bmadStatus.ts"],"names":[],"mappings":"AAyHA,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,gBAAgB,EAAE;QAChB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,mDAAmD;QAC5D,UAAU,EAAE,GAAG;KAChB;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,mCAAmC;QAC5C,UAAU,EAAE,GAAG;KAChB;IACD,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,uBAAuB;QAChC,UAAU,EAAE,GAAG;KAChB;CACO,CAAC"}
@@ -40,6 +40,12 @@ export interface BoardItem {
40
40
  externalRef?: string;
41
41
  /** Latest QA gate decision: 'PASS' | 'CONCERNS' | 'FAIL' | 'WAIVED' */
42
42
  gateResult?: string;
43
+ /**
44
+ * qa-fix marker state vs the CURRENT gate: 'applied' (Dev addressed this gate
45
+ * → re-review), 'needed' (QA flagged it, not yet addressed → apply fixes), or
46
+ * undefined (no matching marker → show both actions). Marker-based, not mtime.
47
+ */
48
+ gateFixState?: 'needed' | 'applied';
43
49
  /** Project-relative path to the source file (story/epic markdown) */
44
50
  filePath?: string;
45
51
  attachments?: IssueAttachment[];
@@ -1 +1 @@
1
- {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/types/board.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAGD,eAAO,MAAM,oBAAoB,uOAWvB,CAAC;AA8BX,eAAO,MAAM,oBAAoB,EAAE,WAGlC,CAAC;AAGF,eAAO,MAAM,mBAAmB,4BAA6B,CAAC;AAE9D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAkD7D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,SAAS,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,SAAS,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,SAAS,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"board.d.ts","sourceRoot":"","sources":["../../src/types/board.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC;AAGD,eAAO,MAAM,oBAAoB,uOAWvB,CAAC;AA8BX,eAAO,MAAM,oBAAoB,EAAE,WAGlC,CAAC;AAGF,eAAO,MAAM,mBAAmB,4BAA6B,CAAC;AAE9D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAkD7D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,SAAS,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,YAAY,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,SAAS,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,SAAS,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * The 5 built-in dynamic variable identifiers, mirroring Epic 31 § Story 31.2
3
+ * Scope examples (*"현재 브랜치 / 활성 BMad 스토리 / 최근 커밋 N개 / 오늘 날짜 /
4
+ * 미커밋 파일 개수"*). Each is recomputed at script runtime on every session
5
+ * start (AC2.b) — never snapshotted at generation time.
6
+ */
7
+ export type ContextBuilderVariableId = 'gitBranch' | 'activeBmadStory' | 'recentCommits' | 'today' | 'uncommittedCount';
8
+ /**
9
+ * Ordered list of the built-in variable IDs — single source of truth shared by
10
+ * the server (zod validation + script generation) and the client
11
+ * (`CONTEXT_BUILDER_VARIABLES` widget definitions). Order is the canonical
12
+ * display order in the toggle list.
13
+ */
14
+ export declare const CONTEXT_BUILDER_VARIABLE_IDS: readonly ContextBuilderVariableId[];
15
+ /** One user-defined shell command block (AC5). */
16
+ export interface ContextBuilderCustomCommand {
17
+ /** The shell command whose stdout is appended as a context block. */
18
+ command: string;
19
+ /**
20
+ * AC5.b — only `acknowledged: true` commands are written into the generated
21
+ * script. The acknowledgement is the explicit "I understand this runs every
22
+ * session" confirmation captured by the security checkbox.
23
+ */
24
+ acknowledged: boolean;
25
+ }
26
+ /**
27
+ * The declarative manifest — single source of truth for one project's context
28
+ * builder. Persisted at `<projectRoot>/.hammoc/context-builder.json`.
29
+ */
30
+ export interface ContextBuilderManifest {
31
+ /** Schema version — bump only on a breaking shape change. */
32
+ version: 1;
33
+ /**
34
+ * AC1.f — when false the generated script + settings entry are removed and
35
+ * NOT regenerated (the declaration is retained so re-enabling restores it).
36
+ */
37
+ enabled: boolean;
38
+ /** Reference files, as project-root-relative POSIX paths (e.g. `docs/architecture.md`). */
39
+ files: string[];
40
+ /** Built-in dynamic variables, on/off. A full record of all 5 IDs. */
41
+ variables: Record<ContextBuilderVariableId, boolean>;
42
+ /** N for the `recentCommits` variable (default 5). Ignored when that variable is off. */
43
+ recentCommitsCount?: number;
44
+ /** User-defined shell command blocks (AC5). */
45
+ customCommands: ContextBuilderCustomCommand[];
46
+ }
47
+ /**
48
+ * GET /api/harness/context-builder/:projectSlug response.
49
+ *
50
+ * When the manifest file does not yet exist the server returns a default
51
+ * (disabled, empty) manifest with `mtime: ''` so the panel opens in an
52
+ * empty-state instead of erroring (API table — *"매니페스트 없음 → 빈 기본
53
+ * 매니페스트 반환도 허용"*).
54
+ */
55
+ export interface ContextBuilderReadResponse {
56
+ manifest: ContextBuilderManifest;
57
+ /** ISO 8601 mtime of the manifest — STALE_WRITE ETag. Empty string when the file is absent. */
58
+ mtime: string;
59
+ /** True when the generated `.hammoc/hooks/context-builder.mjs` exists on disk. */
60
+ scriptExists: boolean;
61
+ /** True when a Hammoc-managed `hooks.SessionStart` entry currently points at the script. */
62
+ entryRegistered: boolean;
63
+ }
64
+ /**
65
+ * PUT /api/harness/context-builder/:projectSlug response (save + generate).
66
+ * Extends the write ETag with the generated artifact locations.
67
+ */
68
+ export interface ContextBuilderGenerateResponse {
69
+ /** ISO 8601 mtime of the manifest after the write — next STALE_WRITE ETag. */
70
+ mtime: string;
71
+ /** Absolute path of the generated script (empty string when manifest.enabled === false). */
72
+ scriptPath: string;
73
+ /** ISO 8601 mtime of `.claude/settings.json` after the entry registration. */
74
+ settingsMtime: string;
75
+ /**
76
+ * AC5.c — indices (into `manifest.customCommands`) whose command string the
77
+ * secret heuristic flagged. NON-BLOCKING: the save still succeeds; the client
78
+ * surfaces these as a notice ("고지"), never a hard block. Empty/omitted when
79
+ * nothing matched.
80
+ */
81
+ secretWarningCommandIndices?: number[];
82
+ }
83
+ /** POST /api/harness/context-builder/:projectSlug/disable response. */
84
+ export interface ContextBuilderDisableResponse {
85
+ success: true;
86
+ }
87
+ /**
88
+ * Canonical command-path marker that identifies a Hammoc-managed SessionStart
89
+ * entry. AC1.e / AC3.a identify ownership purely by the command string
90
+ * containing this fragment — no extra metadata key is written into
91
+ * settings.json (the path IS the ownership identifier). The generated entry's
92
+ * command is `node "<abs>/.hammoc/hooks/context-builder.mjs"`, so a substring
93
+ * match on this marker is the ownership test on both server and client.
94
+ */
95
+ export declare const CONTEXT_BUILDER_SCRIPT_MARKER = ".hammoc/hooks/context-builder.";
96
+ /**
97
+ * Build the default empty manifest (disabled, no files, all variables off, no
98
+ * custom commands). Shared by the server empty-state GET and the client store's
99
+ * initial state so the two never drift.
100
+ */
101
+ export declare function createDefaultContextBuilderManifest(): ContextBuilderManifest;
102
+ //# sourceMappingURL=contextBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextBuilder.d.ts","sourceRoot":"","sources":["../../src/types/contextBuilder.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,GAChC,WAAW,GACX,iBAAiB,GACjB,eAAe,GACf,OAAO,GACP,kBAAkB,CAAC;AAEvB;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,wBAAwB,EAMlE,CAAC;AAEX,kDAAkD;AAClD,MAAM,WAAW,2BAA2B;IAC1C,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,OAAO,EAAE,CAAC,CAAC;IACX;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sEAAsE;IACtE,SAAS,EAAE,MAAM,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IACrD,yFAAyF;IACzF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,cAAc,EAAE,2BAA2B,EAAE,CAAC;CAC/C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,4FAA4F;IAC5F,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,2BAA2B,CAAC,EAAE,MAAM,EAAE,CAAC;CACxC;AAED,uEAAuE;AACvE,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,IAAI,CAAC;CACf;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,mCAAmC,CAAC;AAE9E;;;;GAIG;AACH,wBAAgB,mCAAmC,IAAI,sBAAsB,CAe5E"}
@@ -0,0 +1,55 @@
1
+ // Story 31.2: SessionStart context-builder shared types (Epic 31)
2
+ //
3
+ // Single source of truth for the declarative "context builder" manifest that
4
+ // drives the generated `.hammoc/hooks/context-builder.mjs` SessionStart hook
5
+ // script and the `.claude/settings.json` `hooks.SessionStart` entry.
6
+ //
7
+ // The manifest at `<projectRoot>/.hammoc/context-builder.json` is the SSoT;
8
+ // the script + settings entry are GENERATED artifacts derived from it. Server
9
+ // (`contextBuilderService`) and client (`contextBuilderStore`) both import
10
+ // these types, so they live in `packages/shared` (one-way dependency
11
+ // `shared → server/client`).
12
+ /**
13
+ * Ordered list of the built-in variable IDs — single source of truth shared by
14
+ * the server (zod validation + script generation) and the client
15
+ * (`CONTEXT_BUILDER_VARIABLES` widget definitions). Order is the canonical
16
+ * display order in the toggle list.
17
+ */
18
+ export const CONTEXT_BUILDER_VARIABLE_IDS = [
19
+ 'gitBranch',
20
+ 'activeBmadStory',
21
+ 'recentCommits',
22
+ 'today',
23
+ 'uncommittedCount',
24
+ ];
25
+ /**
26
+ * Canonical command-path marker that identifies a Hammoc-managed SessionStart
27
+ * entry. AC1.e / AC3.a identify ownership purely by the command string
28
+ * containing this fragment — no extra metadata key is written into
29
+ * settings.json (the path IS the ownership identifier). The generated entry's
30
+ * command is `node "<abs>/.hammoc/hooks/context-builder.mjs"`, so a substring
31
+ * match on this marker is the ownership test on both server and client.
32
+ */
33
+ export const CONTEXT_BUILDER_SCRIPT_MARKER = '.hammoc/hooks/context-builder.';
34
+ /**
35
+ * Build the default empty manifest (disabled, no files, all variables off, no
36
+ * custom commands). Shared by the server empty-state GET and the client store's
37
+ * initial state so the two never drift.
38
+ */
39
+ export function createDefaultContextBuilderManifest() {
40
+ return {
41
+ version: 1,
42
+ enabled: false,
43
+ files: [],
44
+ variables: {
45
+ gitBranch: false,
46
+ activeBmadStory: false,
47
+ recentCommits: false,
48
+ today: false,
49
+ uncommittedCount: false,
50
+ },
51
+ recentCommitsCount: 5,
52
+ customCommands: [],
53
+ };
54
+ }
55
+ //# sourceMappingURL=contextBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextBuilder.js","sourceRoot":"","sources":["../../src/types/contextBuilder.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,qEAAqE;AACrE,6BAA6B;AAe7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAwC;IAC/E,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,OAAO;IACP,kBAAkB;CACV,CAAC;AA+EX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,gCAAgC,CAAC;AAE9E;;;;GAIG;AACH,MAAM,UAAU,mCAAmC;IACjD,OAAO;QACL,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,EAAE;QACT,SAAS,EAAE;YACT,SAAS,EAAE,KAAK;YAChB,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,KAAK;SACxB;QACD,kBAAkB,EAAE,CAAC;QACrB,cAAc,EAAE,EAAE;KACnB,CAAC;AACJ,CAAC"}
@@ -154,15 +154,50 @@ export interface ExportBundleRequest {
154
154
  includes: BundleSection[];
155
155
  secretsPolicy: SecretsPolicy;
156
156
  }
157
+ /**
158
+ * Compatibility verdict of an import preview — see AC5 of Story 30.5.
159
+ * - 'compatible' : bundleVersion === 1, manifest Zod-valid, apply allowed
160
+ * - 'future' : bundleVersion > 1 (later Hammoc release wrote this bundle)
161
+ * - 'invalid' : bundleVersion missing or < 1 (theoretical, since the
162
+ * first published version is 1)
163
+ * - 'malformed' : manifest.json missing, JSON parse failed, or Zod refused
164
+ * the strict schema
165
+ */
166
+ export type ImportCompatibility = 'compatible' | 'future' | 'invalid' | 'malformed';
167
+ /**
168
+ * Diagnostic payload accompanying a non-'compatible' compatibility verdict.
169
+ * Surfaced verbatim to the UI so the user can understand the rejection.
170
+ */
171
+ export interface ImportCompatibilityDetail {
172
+ /** Set when the manifest had a parseable `bundleVersion` field. */
173
+ bundleVersion?: number;
174
+ /** JSON.parse error message for malformed manifests. */
175
+ jsonError?: string;
176
+ /** Zod refine issues for schema-mismatch manifests. */
177
+ issues?: Array<{
178
+ path: (string | number)[];
179
+ message: string;
180
+ }>;
181
+ }
157
182
  /**
158
183
  * Server response of `POST /api/harness/bundle/import/preview`. The
159
184
  * `bundleToken` is the handle the apply call must echo (the server stashes
160
185
  * the parsed ZIP in a temp directory keyed by this token until apply or TTL).
186
+ *
187
+ * `manifest` and `preview` are best-effort:
188
+ * - compatibility === 'compatible' → manifest is fully Zod-validated; preview
189
+ * has per-item rows + missing-plugin diff + unknown-section list.
190
+ * - compatibility === 'future' → manifest carries the loosely-parsed
191
+ * fields (bundleVersion + raw passthrough); preview is empty.
192
+ * - compatibility === 'invalid'/'malformed' → manifest may be a stub with
193
+ * placeholder fields; preview is empty. Detail carries the rejection cause.
161
194
  */
162
195
  export interface ImportPreviewResponse {
163
196
  bundleToken: string;
164
197
  manifest: BundleManifest;
165
198
  preview: ImportPreview;
199
+ compatibility: ImportCompatibility;
200
+ compatibilityDetail?: ImportCompatibilityDetail;
166
201
  }
167
202
  export interface PluginDependenciesResponse {
168
203
  pluginDependencies: BundlePluginRef[];
@@ -1 +1 @@
1
- {"version":3,"file":"harnessBundle.d.ts","sourceRoot":"","sources":["../../src/types/harnessBundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harnessBundle.d.ts","sourceRoot":"","sources":["../../src/types/harnessBundle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Story 31.4: Plugin marketplace catalog DTOs (Epic 31).
3
+ *
4
+ * Read-only view models for the marketplace browse experience. The server
5
+ * `marketplaceService` parses `~/.claude/plugins/known_marketplaces.json` and
6
+ * each market's `.claude-plugin/marketplace.json` into a unified catalog, joins
7
+ * it with `installed_plugins.json` for the "installed" flag, and reports
8
+ * per-market parse failures + an `installed_plugins.json` format warning
9
+ * (without aborting the whole catalog).
10
+ *
11
+ * Reuses `HarnessPluginType` and `HarnessPluginComponentCounts` from
12
+ * `harness.ts` — no duplicate definitions. The existing
13
+ * `HarnessMarketplacePluginMeta` (harness.ts) is the raw marketplace.json
14
+ * entry shape; the catalog entry below is that shape *enriched* with plugin
15
+ * type, installed flag, and best-effort component counts.
16
+ */
17
+ import type { HarnessPluginType, HarnessPluginComponentCounts } from './harness.js';
18
+ /**
19
+ * One installable plugin surfaced from a market's `marketplace.json` `plugins[]`
20
+ * array, enriched for the browse UI.
21
+ */
22
+ export interface HarnessMarketplaceCatalogEntry {
23
+ /** "<name>@<marketplace>" — same key space as installed_plugins.json. */
24
+ key: string;
25
+ name: string;
26
+ /** known_marketplaces.json market name this entry belongs to. */
27
+ marketplace: string;
28
+ description?: string;
29
+ version?: string;
30
+ author?: {
31
+ name?: string;
32
+ email?: string;
33
+ } | string;
34
+ category?: string;
35
+ /**
36
+ * 'standard' | 'external-mcp' — decided by the `source` path prefix
37
+ * (`./plugins/...` → standard, `./external_plugins/...` → external-mcp).
38
+ * Distinct from installed cards' count-based `decideType`, since unbuilt
39
+ * catalog entries have no installPath. (AC1.c)
40
+ */
41
+ pluginType: HarnessPluginType;
42
+ /** marketplace.json plugins[].source — the type-decision signal. */
43
+ source?: string;
44
+ /** True when `key` exists in installed_plugins.json. (AC1.d) */
45
+ installed: boolean;
46
+ /**
47
+ * Best-effort component tally read from the cloned market repo source dir
48
+ * (`plugins/marketplaces/<name>/<source>/`). Omitted when unreadable —
49
+ * the type badge still renders. (AC1.c)
50
+ */
51
+ componentCounts?: HarnessPluginComponentCounts;
52
+ }
53
+ /**
54
+ * Per-market parse failure. A single bad `marketplace.json` is isolated here
55
+ * instead of aborting the whole catalog (AC5). `code` reuses a `HARNESS_ERRORS`
56
+ * code (e.g. `HARNESS_PARSE_ERROR`).
57
+ */
58
+ export interface HarnessMarketplaceCatalogError {
59
+ marketplace: string;
60
+ code: string;
61
+ }
62
+ /**
63
+ * Warning emitted when `installed_plugins.json` does not match the known shape
64
+ * (e.g. an unrecognized `version`, possibly from the
65
+ * `tengu_enable_versioned_plugins` feature flag). The catalog still renders;
66
+ * the "installed" join degrades gracefully. (AC6)
67
+ */
68
+ export interface HarnessMarketplaceFormatWarning {
69
+ detectedVersion?: number;
70
+ reason: string;
71
+ }
72
+ /**
73
+ * GET /api/harness/marketplace/:projectSlug/catalog response. Partial success
74
+ * is expressed via `errors[]` (per-market) and `formatWarning`.
75
+ */
76
+ export interface HarnessMarketplaceCatalogResponse {
77
+ /** Market names discovered in known_marketplaces.json. */
78
+ marketplaces: string[];
79
+ entries: HarnessMarketplaceCatalogEntry[];
80
+ errors: HarnessMarketplaceCatalogError[];
81
+ formatWarning?: HarnessMarketplaceFormatWarning;
82
+ }
83
+ //# sourceMappingURL=marketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/types/marketplace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAEpF;;;GAGG;AACH,MAAM,WAAW,8BAA8B;IAC7C,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,UAAU,EAAE,iBAAiB,CAAC;IAC9B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,EAAE,4BAA4B,CAAC;CAChD;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,+BAA+B;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,iCAAiC;IAChD,0DAA0D;IAC1D,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC1C,MAAM,EAAE,8BAA8B,EAAE,CAAC;IACzC,aAAa,CAAC,EAAE,+BAA+B,CAAC;CACjD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Story 31.4: Plugin marketplace catalog DTOs (Epic 31).
3
+ *
4
+ * Read-only view models for the marketplace browse experience. The server
5
+ * `marketplaceService` parses `~/.claude/plugins/known_marketplaces.json` and
6
+ * each market's `.claude-plugin/marketplace.json` into a unified catalog, joins
7
+ * it with `installed_plugins.json` for the "installed" flag, and reports
8
+ * per-market parse failures + an `installed_plugins.json` format warning
9
+ * (without aborting the whole catalog).
10
+ *
11
+ * Reuses `HarnessPluginType` and `HarnessPluginComponentCounts` from
12
+ * `harness.ts` — no duplicate definitions. The existing
13
+ * `HarnessMarketplacePluginMeta` (harness.ts) is the raw marketplace.json
14
+ * entry shape; the catalog entry below is that shape *enriched* with plugin
15
+ * type, installed flag, and best-effort component counts.
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=marketplace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/types/marketplace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * One persisted tool-call record (AC-A1.c). Collected read-only from the shared
3
+ * stream callback builder (`buildStreamCallbacks`) on the browser + queue paths.
4
+ *
5
+ * **append lifecycle (S-A)** — a record is appended EXACTLY ONCE per call, at
6
+ * `onToolResult` time (complete record with `durationMs`/`success` filled). An
7
+ * orphan (onToolUse fired but onToolResult never arrived — session abort / tool
8
+ * hang) is flushed ONCE at turn end with the nullable fields set to `null`.
9
+ * Because the log is append-only JSONL, a `null` in `durationMs`/`resultBytes`/
10
+ * `success` therefore unambiguously means "started-never-returned", and a single
11
+ * call never produces two records.
12
+ *
13
+ * **secret policy** — argument/result BODIES are never stored; only their UTF-8
14
+ * byte sizes (`argBytes`/`resultBytes`). File contents / secrets cannot leak.
15
+ */
16
+ export interface McpCallRecord {
17
+ /** toolUseId — also the orphan-flush key. */
18
+ id: string;
19
+ projectSlug: string;
20
+ sessionId: string;
21
+ /** `mcp__<server>__<tool>` → `<server>`; built-in tools (Read/Edit/Bash/…) → null. */
22
+ serverName: string | null;
23
+ /** Full tool name (`mcp__server__tool` or `Read`/`Edit`/…). */
24
+ toolName: string;
25
+ /** epoch ms — stamped at onToolUse. */
26
+ startedAt: number;
27
+ /** onToolResult − onToolUse, in ms. `null` ⟺ orphan (turn-end flush). */
28
+ durationMs: number | null;
29
+ /** `Buffer.byteLength(JSON.stringify(input), 'utf8')` — body discarded (UTF-8 bytes). */
30
+ argBytes: number;
31
+ /** Result size in UTF-8 bytes. `null` ⟺ orphan (result never arrived). */
32
+ resultBytes: number | null;
33
+ /** Tool success. `null` ⟺ orphan (result never arrived, turn-end flush). */
34
+ success: boolean | null;
35
+ }
36
+ /** One aggregation row (grouped by serverName + toolName). */
37
+ export interface McpCallAggregate {
38
+ serverName: string | null;
39
+ toolName: string;
40
+ count: number;
41
+ /** Mean of non-null durationMs across the group (0 when all orphans). */
42
+ avgDurationMs: number;
43
+ /** Count of records whose `success === false`. */
44
+ errorCount: number;
45
+ }
46
+ /** Filter/query for the MCP call log (AC-A2). */
47
+ export interface ObservabilityQuery {
48
+ /** Filter by server name (`null` selects built-ins via the literal string "null"? — no: omitted = all). */
49
+ server?: string;
50
+ /** Filter by full tool name. */
51
+ tool?: string;
52
+ /** Filter to a single session. */
53
+ sessionId?: string;
54
+ /** Only records within the last N days (defaults to the retention window). */
55
+ sinceDays?: number;
56
+ }
57
+ /** GET …/mcp-calls response — aggregates (for the chart) + a recent timeline. */
58
+ export interface ObservabilityMcpCallsResponse {
59
+ aggregates: McpCallAggregate[];
60
+ /** Most-recent-first slice of raw records (capped by the server). */
61
+ timeline: McpCallRecord[];
62
+ }
63
+ /**
64
+ * Measured harness element kinds (AC-B1.a). `'hook'` is intentionally absent
65
+ * (S-2): arbitrary SessionStart hook runtime output is NOT measured (requires
66
+ * executing the hook, out of scope). The Hammoc-managed context-builder
67
+ * injection is represented by `'contextBuilder'` and estimated from the Story
68
+ * 31.2 manifest WITHOUT execution.
69
+ */
70
+ export type TokenAttributionKind = 'claudeMd-project' | 'claudeMd-global' | 'skill' | 'contextBuilder';
71
+ /**
72
+ * One harness element's token weight (AC-B1). `bytes` is UTF-8 bytes
73
+ * (`Buffer.byteLength`); `approxTokens = ceil(bytes/4)` (the size-based
74
+ * heuristic — see spike #1, §14). `exactTokens` is filled in lazily by the
75
+ * "exact count" button (AC-B3). File-based kinds (`claudeMd-*`/`skill`) carry a
76
+ * `path`; `contextBuilder` has none (assembled from the manifest, N-1).
77
+ */
78
+ export interface TokenAttributionItem {
79
+ kind: TokenAttributionKind;
80
+ /** Human label (file name / skill name / "Context builder"). */
81
+ label: string;
82
+ /** Present for file-based kinds; absent for `contextBuilder`. */
83
+ path?: string;
84
+ /** UTF-8 byte size of the element's text. */
85
+ bytes: number;
86
+ /** ceil(bytes / 4) — always `~`-prefixed in the UI (heuristic). */
87
+ approxTokens: number;
88
+ /** Filled by the exact-count proxy (count_tokens); absent until requested. */
89
+ exactTokens?: number;
90
+ /** sha256 of the element's text — exact-count cache key + change detection. */
91
+ contentHash: string;
92
+ }
93
+ /** GET …/token-attribution response. */
94
+ export interface TokenAttributionResponse {
95
+ items: TokenAttributionItem[];
96
+ }
97
+ /** POST …/exact-count request (AC-B3). */
98
+ export interface ExactTokenCountRequest {
99
+ kind: TokenAttributionKind;
100
+ /** Required for file-based kinds; omitted for `contextBuilder`. */
101
+ path?: string;
102
+ /**
103
+ * Optimistic cache-key hint echoed from the last token-attribution response.
104
+ * The server RE-COMPUTES the sha from the real input before trusting it
105
+ * (N-B), so a stale/forged value just forces a cache miss + recompute.
106
+ */
107
+ contentHash: string;
108
+ }
109
+ /** POST …/exact-count response (AC-B3). */
110
+ export interface ExactTokenCountResponse {
111
+ /** Official token count (count_tokens input_tokens). 0 when `failed`. */
112
+ tokens: number;
113
+ /** True when served from the file-hash cache (no API call made). */
114
+ cached: boolean;
115
+ /** True when the count_tokens proxy failed — client keeps the approximation (AC-B3.c). */
116
+ failed?: boolean;
117
+ }
118
+ /**
119
+ * Approximation tokenizer tier for the SERVER-side approximation (AC-B4). The
120
+ * client inline hint is always byte `size/4` (AC-B2.b) and is NOT switched by
121
+ * this preference.
122
+ *
123
+ * spike #1 (§14, 2026-06-02) measured `@anthropic-ai/tokenizer` at −25%~−45%
124
+ * vs `count_tokens` for Latin text — it does not beat `size/4`, so the
125
+ * `'anthropic-tokenizer'` tier is NOT adopted (Task A.4 skipped). The toggle
126
+ * still renders (AC-B4.b) with `'size/4'` as the single active option; the
127
+ * second option remains reserved should a future accurate tokenizer land.
128
+ */
129
+ export type ObservabilityTokenizer = 'size/4' | 'anthropic-tokenizer';
130
+ export declare const OBSERVABILITY_TOKENIZER_DEFAULT: ObservabilityTokenizer;
131
+ /**
132
+ * Tokenizer options the server reports as selectable. Per spike #1 only
133
+ * `'size/4'` is active; the panel renders the rest disabled with a rationale
134
+ * notice (AC-B4.b). This list is the single source of truth for "which tiers
135
+ * exist" so the client never hard-codes the degrade branch.
136
+ */
137
+ export declare const OBSERVABILITY_TOKENIZER_OPTIONS: readonly ObservabilityTokenizer[];
138
+ /** GET/PUT …/tokenizer-pref response (AC-B4). */
139
+ export interface ObservabilityTokenizerPrefResponse {
140
+ tokenizer: ObservabilityTokenizer;
141
+ /** The selectable tiers (mirrors OBSERVABILITY_TOKENIZER_OPTIONS). */
142
+ options: ObservabilityTokenizer[];
143
+ }
144
+ /** Default MCP-log retention window in days (AC-A3.b). */
145
+ export declare const OBSERVABILITY_RETENTION_DAYS = 30;
146
+ /** Max timeline records returned by …/mcp-calls (server-side cap). */
147
+ export declare const OBSERVABILITY_TIMELINE_CAP = 500;
148
+ //# sourceMappingURL=observability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.d.ts","sourceRoot":"","sources":["../../src/types/observability.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ // Story 31.3: Observability — MCP call log + token attribution (Epic 31).
2
+ //
3
+ // Single source of truth for the observability domain shared between the
4
+ // server (persistence + collection hook + count_tokens proxy + attribution)
5
+ // and the client (api → store → panel). Mirrors the type-locality convention
6
+ // of `harness.ts` / `contextBuilder` types.
7
+ export const OBSERVABILITY_TOKENIZER_DEFAULT = 'size/4';
8
+ /**
9
+ * Tokenizer options the server reports as selectable. Per spike #1 only
10
+ * `'size/4'` is active; the panel renders the rest disabled with a rationale
11
+ * notice (AC-B4.b). This list is the single source of truth for "which tiers
12
+ * exist" so the client never hard-codes the degrade branch.
13
+ */
14
+ export const OBSERVABILITY_TOKENIZER_OPTIONS = [
15
+ 'size/4',
16
+ ];
17
+ // ---------------------------------------------------------------------------
18
+ // Retention
19
+ // ---------------------------------------------------------------------------
20
+ /** Default MCP-log retention window in days (AC-A3.b). */
21
+ export const OBSERVABILITY_RETENTION_DAYS = 30;
22
+ /** Max timeline records returned by …/mcp-calls (server-side cap). */
23
+ export const OBSERVABILITY_TIMELINE_CAP = 500;
24
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../../src/types/observability.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,6EAA6E;AAC7E,4CAA4C;AA6J5C,MAAM,CAAC,MAAM,+BAA+B,GAA2B,QAAQ,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAsC;IAChF,QAAQ;CACA,CAAC;AASX,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,0DAA0D;AAC1D,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C,sEAAsE;AACtE,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,CAAC"}