hammoc 1.4.0 → 1.6.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 (353) hide show
  1. package/README.md +428 -405
  2. package/bin/hammoc.js +0 -6
  3. package/package.json +100 -94
  4. package/packages/client/dist/assets/agentExampleHighlight-ltj9ce0U.js +1 -0
  5. package/packages/client/dist/assets/commandTokenHighlight-ji_ViMb4.js +1 -0
  6. package/packages/client/dist/assets/index-B-DiRGuz.js +2 -0
  7. package/packages/client/dist/assets/index-B09doO8H.js +139 -0
  8. package/packages/client/dist/assets/index-BT4RIi0U.js +1523 -0
  9. package/packages/client/dist/assets/index-DyNJ5jEW.css +32 -0
  10. package/packages/client/dist/assets/snippetTokenHighlight-CP3v4o2g.js +1 -0
  11. package/packages/client/dist/index.html +2 -2
  12. package/packages/client/dist/sw.js +1 -1
  13. package/packages/server/dist/app.d.ts.map +1 -1
  14. package/packages/server/dist/app.js +13 -21
  15. package/packages/server/dist/app.js.map +1 -1
  16. package/packages/server/dist/controllers/bmadCoreConfigController.d.ts +41 -0
  17. package/packages/server/dist/controllers/bmadCoreConfigController.d.ts.map +1 -0
  18. package/packages/server/dist/controllers/bmadCoreConfigController.js +172 -0
  19. package/packages/server/dist/controllers/bmadCoreConfigController.js.map +1 -0
  20. package/packages/server/dist/controllers/claudeMdController.d.ts +26 -0
  21. package/packages/server/dist/controllers/claudeMdController.d.ts.map +1 -0
  22. package/packages/server/dist/controllers/claudeMdController.js +158 -0
  23. package/packages/server/dist/controllers/claudeMdController.js.map +1 -0
  24. package/packages/server/dist/controllers/contextBuilderController.d.ts +43 -0
  25. package/packages/server/dist/controllers/contextBuilderController.d.ts.map +1 -0
  26. package/packages/server/dist/controllers/contextBuilderController.js +159 -0
  27. package/packages/server/dist/controllers/contextBuilderController.js.map +1 -0
  28. package/packages/server/dist/controllers/harnessAgentController.d.ts +35 -0
  29. package/packages/server/dist/controllers/harnessAgentController.d.ts.map +1 -0
  30. package/packages/server/dist/controllers/harnessAgentController.js +372 -0
  31. package/packages/server/dist/controllers/harnessAgentController.js.map +1 -0
  32. package/packages/server/dist/controllers/harnessBundleController.d.ts +37 -0
  33. package/packages/server/dist/controllers/harnessBundleController.d.ts.map +1 -0
  34. package/packages/server/dist/controllers/harnessBundleController.js +312 -0
  35. package/packages/server/dist/controllers/harnessBundleController.js.map +1 -0
  36. package/packages/server/dist/controllers/harnessCommandController.d.ts +35 -0
  37. package/packages/server/dist/controllers/harnessCommandController.d.ts.map +1 -0
  38. package/packages/server/dist/controllers/harnessCommandController.js +415 -0
  39. package/packages/server/dist/controllers/harnessCommandController.js.map +1 -0
  40. package/packages/server/dist/controllers/harnessController.d.ts +21 -0
  41. package/packages/server/dist/controllers/harnessController.d.ts.map +1 -0
  42. package/packages/server/dist/controllers/harnessController.js +176 -0
  43. package/packages/server/dist/controllers/harnessController.js.map +1 -0
  44. package/packages/server/dist/controllers/harnessHookController.d.ts +32 -0
  45. package/packages/server/dist/controllers/harnessHookController.d.ts.map +1 -0
  46. package/packages/server/dist/controllers/harnessHookController.js +406 -0
  47. package/packages/server/dist/controllers/harnessHookController.js.map +1 -0
  48. package/packages/server/dist/controllers/harnessLintController.d.ts +18 -0
  49. package/packages/server/dist/controllers/harnessLintController.d.ts.map +1 -0
  50. package/packages/server/dist/controllers/harnessLintController.js +72 -0
  51. package/packages/server/dist/controllers/harnessLintController.js.map +1 -0
  52. package/packages/server/dist/controllers/harnessMcpController.d.ts +28 -0
  53. package/packages/server/dist/controllers/harnessMcpController.d.ts.map +1 -0
  54. package/packages/server/dist/controllers/harnessMcpController.js +371 -0
  55. package/packages/server/dist/controllers/harnessMcpController.js.map +1 -0
  56. package/packages/server/dist/controllers/harnessPluginController.d.ts +17 -0
  57. package/packages/server/dist/controllers/harnessPluginController.d.ts.map +1 -0
  58. package/packages/server/dist/controllers/harnessPluginController.js +115 -0
  59. package/packages/server/dist/controllers/harnessPluginController.js.map +1 -0
  60. package/packages/server/dist/controllers/harnessShareScopeController.d.ts +24 -0
  61. package/packages/server/dist/controllers/harnessShareScopeController.d.ts.map +1 -0
  62. package/packages/server/dist/controllers/harnessShareScopeController.js +120 -0
  63. package/packages/server/dist/controllers/harnessShareScopeController.js.map +1 -0
  64. package/packages/server/dist/controllers/harnessSkillController.d.ts +32 -0
  65. package/packages/server/dist/controllers/harnessSkillController.d.ts.map +1 -0
  66. package/packages/server/dist/controllers/harnessSkillController.js +453 -0
  67. package/packages/server/dist/controllers/harnessSkillController.js.map +1 -0
  68. package/packages/server/dist/controllers/marketplaceController.d.ts +19 -0
  69. package/packages/server/dist/controllers/marketplaceController.d.ts.map +1 -0
  70. package/packages/server/dist/controllers/marketplaceController.js +74 -0
  71. package/packages/server/dist/controllers/marketplaceController.js.map +1 -0
  72. package/packages/server/dist/controllers/observabilityController.d.ts +32 -0
  73. package/packages/server/dist/controllers/observabilityController.d.ts.map +1 -0
  74. package/packages/server/dist/controllers/observabilityController.js +148 -0
  75. package/packages/server/dist/controllers/observabilityController.js.map +1 -0
  76. package/packages/server/dist/controllers/projectController.d.ts.map +1 -1
  77. package/packages/server/dist/controllers/projectController.js +11 -0
  78. package/packages/server/dist/controllers/projectController.js.map +1 -1
  79. package/packages/server/dist/controllers/snippetController.d.ts +35 -0
  80. package/packages/server/dist/controllers/snippetController.d.ts.map +1 -0
  81. package/packages/server/dist/controllers/snippetController.js +294 -0
  82. package/packages/server/dist/controllers/snippetController.js.map +1 -0
  83. package/packages/server/dist/handlers/streamCallbacks.d.ts +8 -0
  84. package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
  85. package/packages/server/dist/handlers/streamCallbacks.js +8 -0
  86. package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
  87. package/packages/server/dist/handlers/websocket.d.ts +15 -0
  88. package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
  89. package/packages/server/dist/handlers/websocket.js +103 -2
  90. package/packages/server/dist/handlers/websocket.js.map +1 -1
  91. package/packages/server/dist/index.js +5 -0
  92. package/packages/server/dist/index.js.map +1 -1
  93. package/packages/server/dist/locales/en/server.json +37 -4
  94. package/packages/server/dist/locales/es/server.json +0 -4
  95. package/packages/server/dist/locales/ja/server.json +0 -4
  96. package/packages/server/dist/locales/ko/server.json +0 -4
  97. package/packages/server/dist/locales/pt/server.json +0 -4
  98. package/packages/server/dist/locales/zh-CN/server.json +0 -4
  99. package/packages/server/dist/routes/harness.d.ts +8 -0
  100. package/packages/server/dist/routes/harness.d.ts.map +1 -0
  101. package/packages/server/dist/routes/harness.js +150 -0
  102. package/packages/server/dist/routes/harness.js.map +1 -0
  103. package/packages/server/dist/routes/projects.d.ts.map +1 -1
  104. package/packages/server/dist/routes/projects.js +5 -60
  105. package/packages/server/dist/routes/projects.js.map +1 -1
  106. package/packages/server/dist/routes/snippets.d.ts +14 -0
  107. package/packages/server/dist/routes/snippets.d.ts.map +1 -0
  108. package/packages/server/dist/routes/snippets.js +27 -0
  109. package/packages/server/dist/routes/snippets.js.map +1 -0
  110. package/packages/server/dist/services/bmadCoreConfigService.d.ts +86 -0
  111. package/packages/server/dist/services/bmadCoreConfigService.d.ts.map +1 -0
  112. package/packages/server/dist/services/bmadCoreConfigService.js +175 -0
  113. package/packages/server/dist/services/bmadCoreConfigService.js.map +1 -0
  114. package/packages/server/dist/services/bmadStatusService.d.ts +15 -2
  115. package/packages/server/dist/services/bmadStatusService.d.ts.map +1 -1
  116. package/packages/server/dist/services/bmadStatusService.js +146 -37
  117. package/packages/server/dist/services/bmadStatusService.js.map +1 -1
  118. package/packages/server/dist/services/chatService.d.ts +3 -0
  119. package/packages/server/dist/services/chatService.d.ts.map +1 -1
  120. package/packages/server/dist/services/chatService.js +28 -7
  121. package/packages/server/dist/services/chatService.js.map +1 -1
  122. package/packages/server/dist/services/claudeMdService.d.ts +48 -0
  123. package/packages/server/dist/services/claudeMdService.d.ts.map +1 -0
  124. package/packages/server/dist/services/claudeMdService.js +240 -0
  125. package/packages/server/dist/services/claudeMdService.js.map +1 -0
  126. package/packages/server/dist/services/commandService.d.ts +10 -0
  127. package/packages/server/dist/services/commandService.d.ts.map +1 -1
  128. package/packages/server/dist/services/commandService.js +129 -4
  129. package/packages/server/dist/services/commandService.js.map +1 -1
  130. package/packages/server/dist/services/contextBuilderScriptTemplate.d.ts +24 -0
  131. package/packages/server/dist/services/contextBuilderScriptTemplate.d.ts.map +1 -0
  132. package/packages/server/dist/services/contextBuilderScriptTemplate.js +181 -0
  133. package/packages/server/dist/services/contextBuilderScriptTemplate.js.map +1 -0
  134. package/packages/server/dist/services/contextBuilderService.d.ts +68 -0
  135. package/packages/server/dist/services/contextBuilderService.d.ts.map +1 -0
  136. package/packages/server/dist/services/contextBuilderService.js +345 -0
  137. package/packages/server/dist/services/contextBuilderService.js.map +1 -0
  138. package/packages/server/dist/services/fileWatcherService.d.ts +24 -0
  139. package/packages/server/dist/services/fileWatcherService.d.ts.map +1 -1
  140. package/packages/server/dist/services/fileWatcherService.js +232 -1
  141. package/packages/server/dist/services/fileWatcherService.js.map +1 -1
  142. package/packages/server/dist/services/harnessAgentService.d.ts +97 -0
  143. package/packages/server/dist/services/harnessAgentService.d.ts.map +1 -0
  144. package/packages/server/dist/services/harnessAgentService.js +988 -0
  145. package/packages/server/dist/services/harnessAgentService.js.map +1 -0
  146. package/packages/server/dist/services/harnessBundleService.d.ts +145 -0
  147. package/packages/server/dist/services/harnessBundleService.d.ts.map +1 -0
  148. package/packages/server/dist/services/harnessBundleService.js +1318 -0
  149. package/packages/server/dist/services/harnessBundleService.js.map +1 -0
  150. package/packages/server/dist/services/harnessCommandService.d.ts +81 -0
  151. package/packages/server/dist/services/harnessCommandService.d.ts.map +1 -0
  152. package/packages/server/dist/services/harnessCommandService.js +917 -0
  153. package/packages/server/dist/services/harnessCommandService.js.map +1 -0
  154. package/packages/server/dist/services/harnessHookService.d.ts +82 -0
  155. package/packages/server/dist/services/harnessHookService.d.ts.map +1 -0
  156. package/packages/server/dist/services/harnessHookService.js +1112 -0
  157. package/packages/server/dist/services/harnessHookService.js.map +1 -0
  158. package/packages/server/dist/services/harnessLintService.d.ts +49 -0
  159. package/packages/server/dist/services/harnessLintService.d.ts.map +1 -0
  160. package/packages/server/dist/services/harnessLintService.js +628 -0
  161. package/packages/server/dist/services/harnessLintService.js.map +1 -0
  162. package/packages/server/dist/services/harnessMcpService.d.ts +100 -0
  163. package/packages/server/dist/services/harnessMcpService.d.ts.map +1 -0
  164. package/packages/server/dist/services/harnessMcpService.js +884 -0
  165. package/packages/server/dist/services/harnessMcpService.js.map +1 -0
  166. package/packages/server/dist/services/harnessPluginService.d.ts +66 -0
  167. package/packages/server/dist/services/harnessPluginService.d.ts.map +1 -0
  168. package/packages/server/dist/services/harnessPluginService.js +559 -0
  169. package/packages/server/dist/services/harnessPluginService.js.map +1 -0
  170. package/packages/server/dist/services/harnessService.d.ts +40 -0
  171. package/packages/server/dist/services/harnessService.d.ts.map +1 -0
  172. package/packages/server/dist/services/harnessService.js +222 -0
  173. package/packages/server/dist/services/harnessService.js.map +1 -0
  174. package/packages/server/dist/services/harnessShareScopeService.d.ts +50 -0
  175. package/packages/server/dist/services/harnessShareScopeService.d.ts.map +1 -0
  176. package/packages/server/dist/services/harnessShareScopeService.js +158 -0
  177. package/packages/server/dist/services/harnessShareScopeService.js.map +1 -0
  178. package/packages/server/dist/services/harnessSkillService.d.ts +70 -0
  179. package/packages/server/dist/services/harnessSkillService.d.ts.map +1 -0
  180. package/packages/server/dist/services/harnessSkillService.js +636 -0
  181. package/packages/server/dist/services/harnessSkillService.js.map +1 -0
  182. package/packages/server/dist/services/issueService.d.ts.map +1 -1
  183. package/packages/server/dist/services/issueService.js +3 -1
  184. package/packages/server/dist/services/issueService.js.map +1 -1
  185. package/packages/server/dist/services/manualSyncService.d.ts +19 -0
  186. package/packages/server/dist/services/manualSyncService.d.ts.map +1 -0
  187. package/packages/server/dist/services/manualSyncService.js +110 -0
  188. package/packages/server/dist/services/manualSyncService.js.map +1 -0
  189. package/packages/server/dist/services/marketplaceService.d.ts +50 -0
  190. package/packages/server/dist/services/marketplaceService.d.ts.map +1 -0
  191. package/packages/server/dist/services/marketplaceService.js +326 -0
  192. package/packages/server/dist/services/marketplaceService.js.map +1 -0
  193. package/packages/server/dist/services/observabilityService.d.ts +87 -0
  194. package/packages/server/dist/services/observabilityService.d.ts.map +1 -0
  195. package/packages/server/dist/services/observabilityService.js +0 -0
  196. package/packages/server/dist/services/observabilityService.js.map +1 -0
  197. package/packages/server/dist/services/queueService.d.ts.map +1 -1
  198. package/packages/server/dist/services/queueService.js +48 -2
  199. package/packages/server/dist/services/queueService.js.map +1 -1
  200. package/packages/server/dist/services/sessionService.d.ts +16 -0
  201. package/packages/server/dist/services/sessionService.d.ts.map +1 -1
  202. package/packages/server/dist/services/sessionService.js +125 -0
  203. package/packages/server/dist/services/sessionService.js.map +1 -1
  204. package/packages/server/dist/services/snippetService.d.ts +54 -0
  205. package/packages/server/dist/services/snippetService.d.ts.map +1 -0
  206. package/packages/server/dist/services/snippetService.js +371 -0
  207. package/packages/server/dist/services/snippetService.js.map +1 -0
  208. package/packages/server/dist/services/tokenCountService.d.ts +71 -0
  209. package/packages/server/dist/services/tokenCountService.d.ts.map +1 -0
  210. package/packages/server/dist/services/tokenCountService.js +313 -0
  211. package/packages/server/dist/services/tokenCountService.js.map +1 -0
  212. package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.d.ts +46 -0
  213. package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.d.ts.map +1 -0
  214. package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.js +125 -0
  215. package/packages/server/dist/services/utils/applyYamlFrontmatterPatch.js.map +1 -0
  216. package/packages/server/dist/snippets/apply-qa-fixes +7 -5
  217. package/packages/server/dist/snippets/qa-review +5 -1
  218. package/packages/server/dist/snippets/split-commit +9 -0
  219. package/packages/server/dist/utils/applySecretsPolicy.d.ts +53 -0
  220. package/packages/server/dist/utils/applySecretsPolicy.d.ts.map +1 -0
  221. package/packages/server/dist/utils/applySecretsPolicy.js +204 -0
  222. package/packages/server/dist/utils/applySecretsPolicy.js.map +1 -0
  223. package/packages/server/dist/utils/assertNoSecretOnShared.d.ts +40 -0
  224. package/packages/server/dist/utils/assertNoSecretOnShared.d.ts.map +1 -0
  225. package/packages/server/dist/utils/assertNoSecretOnShared.js +47 -0
  226. package/packages/server/dist/utils/assertNoSecretOnShared.js.map +1 -0
  227. package/packages/server/dist/utils/assertSafeBundlePath.d.ts +29 -0
  228. package/packages/server/dist/utils/assertSafeBundlePath.d.ts.map +1 -0
  229. package/packages/server/dist/utils/assertSafeBundlePath.js +53 -0
  230. package/packages/server/dist/utils/assertSafeBundlePath.js.map +1 -0
  231. package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts +7 -0
  232. package/packages/server/dist/utils/bundledBinaryModelSupport.d.ts.map +1 -0
  233. package/packages/server/dist/utils/bundledBinaryModelSupport.js +107 -0
  234. package/packages/server/dist/utils/bundledBinaryModelSupport.js.map +1 -0
  235. package/packages/server/dist/utils/effortUtils.d.ts +2 -2
  236. package/packages/server/dist/utils/effortUtils.js +5 -5
  237. package/packages/server/dist/utils/effortUtils.js.map +1 -1
  238. package/packages/server/dist/utils/errors.d.ts +1 -0
  239. package/packages/server/dist/utils/errors.d.ts.map +1 -1
  240. package/packages/server/dist/utils/errors.js +17 -0
  241. package/packages/server/dist/utils/errors.js.map +1 -1
  242. package/packages/server/dist/utils/gitignoreFilter.d.ts +23 -0
  243. package/packages/server/dist/utils/gitignoreFilter.d.ts.map +1 -0
  244. package/packages/server/dist/utils/gitignoreFilter.js +42 -0
  245. package/packages/server/dist/utils/gitignoreFilter.js.map +1 -0
  246. package/packages/server/dist/utils/harnessBundleSchema.d.ts +107 -0
  247. package/packages/server/dist/utils/harnessBundleSchema.d.ts.map +1 -0
  248. package/packages/server/dist/utils/harnessBundleSchema.js +89 -0
  249. package/packages/server/dist/utils/harnessBundleSchema.js.map +1 -0
  250. package/packages/server/dist/utils/harnessPaths.d.ts +74 -0
  251. package/packages/server/dist/utils/harnessPaths.d.ts.map +1 -0
  252. package/packages/server/dist/utils/harnessPaths.js +247 -0
  253. package/packages/server/dist/utils/harnessPaths.js.map +1 -0
  254. package/packages/server/dist/utils/secretHeuristic.d.ts +72 -0
  255. package/packages/server/dist/utils/secretHeuristic.d.ts.map +1 -0
  256. package/packages/server/dist/utils/secretHeuristic.js +163 -0
  257. package/packages/server/dist/utils/secretHeuristic.js.map +1 -0
  258. package/packages/server/dist/utils/secretPlaceholderNamer.d.ts +41 -0
  259. package/packages/server/dist/utils/secretPlaceholderNamer.d.ts.map +1 -0
  260. package/packages/server/dist/utils/secretPlaceholderNamer.js +81 -0
  261. package/packages/server/dist/utils/secretPlaceholderNamer.js.map +1 -0
  262. package/packages/server/dist/utils/serverPathResolver.d.ts +29 -0
  263. package/packages/server/dist/utils/serverPathResolver.d.ts.map +1 -0
  264. package/packages/server/dist/utils/serverPathResolver.js +59 -0
  265. package/packages/server/dist/utils/serverPathResolver.js.map +1 -0
  266. package/packages/server/dist/utils/snippetPaths.d.ts +61 -0
  267. package/packages/server/dist/utils/snippetPaths.d.ts.map +1 -0
  268. package/packages/server/dist/utils/snippetPaths.js +123 -0
  269. package/packages/server/dist/utils/snippetPaths.js.map +1 -0
  270. package/packages/server/dist/utils/structuredEditor.d.ts +34 -0
  271. package/packages/server/dist/utils/structuredEditor.d.ts.map +1 -0
  272. package/packages/server/dist/utils/structuredEditor.js +111 -0
  273. package/packages/server/dist/utils/structuredEditor.js.map +1 -0
  274. package/packages/server/package.json +6 -2
  275. package/packages/server/resources/internals/INDEX.md +25 -0
  276. package/packages/server/resources/internals/bmad-qa-fix-marker.md +32 -0
  277. package/packages/server/resources/internals/harness-files.md +85 -0
  278. package/packages/server/resources/internals/image-storage.md +43 -0
  279. package/packages/server/resources/internals/observability-storage.md +23 -0
  280. package/packages/server/resources/manual/01-getting-started.md +104 -0
  281. package/packages/server/resources/manual/02-chat.md +285 -0
  282. package/packages/server/resources/manual/03-sessions.md +48 -0
  283. package/packages/server/resources/manual/04-slash-commands-favorites.md +152 -0
  284. package/packages/server/resources/manual/05-projects.md +76 -0
  285. package/packages/server/resources/manual/06-file-explorer-editor.md +90 -0
  286. package/packages/server/resources/manual/07-git.md +94 -0
  287. package/packages/server/resources/manual/08-terminal.md +59 -0
  288. package/packages/server/resources/manual/09-queue-runner.md +262 -0
  289. package/packages/server/resources/manual/10-project-board.md +194 -0
  290. package/packages/server/resources/manual/11-bmad-method-integration.md +130 -0
  291. package/packages/server/resources/manual/12-harness-workbench.md +256 -0
  292. package/packages/server/resources/manual/13-settings.md +241 -0
  293. package/packages/server/resources/manual/14-keyboard-shortcuts.md +68 -0
  294. package/packages/server/resources/manual/15-environment-variables.md +28 -0
  295. package/packages/server/resources/manual/16-troubleshooting.md +110 -0
  296. package/packages/server/resources/manual/INDEX.md +60 -0
  297. package/packages/shared/dist/index.d.ts +7 -0
  298. package/packages/shared/dist/index.d.ts.map +1 -1
  299. package/packages/shared/dist/index.js +14 -0
  300. package/packages/shared/dist/index.js.map +1 -1
  301. package/packages/shared/dist/types/bmadCoreConfig.d.ts +71 -0
  302. package/packages/shared/dist/types/bmadCoreConfig.d.ts.map +1 -0
  303. package/packages/shared/dist/types/bmadCoreConfig.js +30 -0
  304. package/packages/shared/dist/types/bmadCoreConfig.js.map +1 -0
  305. package/packages/shared/dist/types/bmadStatus.d.ts +10 -0
  306. package/packages/shared/dist/types/bmadStatus.d.ts.map +1 -1
  307. package/packages/shared/dist/types/bmadStatus.js.map +1 -1
  308. package/packages/shared/dist/types/board.d.ts +6 -0
  309. package/packages/shared/dist/types/board.d.ts.map +1 -1
  310. package/packages/shared/dist/types/command.d.ts +3 -3
  311. package/packages/shared/dist/types/command.d.ts.map +1 -1
  312. package/packages/shared/dist/types/contextBuilder.d.ts +102 -0
  313. package/packages/shared/dist/types/contextBuilder.d.ts.map +1 -0
  314. package/packages/shared/dist/types/contextBuilder.js +55 -0
  315. package/packages/shared/dist/types/contextBuilder.js.map +1 -0
  316. package/packages/shared/dist/types/harness.d.ts +1211 -0
  317. package/packages/shared/dist/types/harness.d.ts.map +1 -0
  318. package/packages/shared/dist/types/harness.js +107 -0
  319. package/packages/shared/dist/types/harness.js.map +1 -0
  320. package/packages/shared/dist/types/harnessBundle.d.ts +205 -0
  321. package/packages/shared/dist/types/harnessBundle.d.ts.map +1 -0
  322. package/packages/shared/dist/types/harnessBundle.js +18 -0
  323. package/packages/shared/dist/types/harnessBundle.js.map +1 -0
  324. package/packages/shared/dist/types/marketplace.d.ts +83 -0
  325. package/packages/shared/dist/types/marketplace.d.ts.map +1 -0
  326. package/packages/shared/dist/types/marketplace.js +18 -0
  327. package/packages/shared/dist/types/marketplace.js.map +1 -0
  328. package/packages/shared/dist/types/observability.d.ts +148 -0
  329. package/packages/shared/dist/types/observability.d.ts.map +1 -0
  330. package/packages/shared/dist/types/observability.js +24 -0
  331. package/packages/shared/dist/types/observability.js.map +1 -0
  332. package/packages/shared/dist/types/preferences.d.ts +4 -0
  333. package/packages/shared/dist/types/preferences.d.ts.map +1 -1
  334. package/packages/shared/dist/types/preferences.js.map +1 -1
  335. package/packages/shared/dist/types/queue.d.ts +9 -0
  336. package/packages/shared/dist/types/queue.d.ts.map +1 -1
  337. package/packages/shared/dist/types/sdk.d.ts +1 -1
  338. package/packages/shared/dist/types/sdk.d.ts.map +1 -1
  339. package/packages/shared/dist/types/sdk.js +1 -1
  340. package/packages/shared/dist/types/sdk.js.map +1 -1
  341. package/packages/shared/dist/types/websocket.d.ts +10 -0
  342. package/packages/shared/dist/types/websocket.d.ts.map +1 -1
  343. package/packages/shared/dist/utils/markdownSections.d.ts +50 -0
  344. package/packages/shared/dist/utils/markdownSections.d.ts.map +1 -0
  345. package/packages/shared/dist/utils/markdownSections.js +111 -0
  346. package/packages/shared/dist/utils/markdownSections.js.map +1 -0
  347. package/packages/shared/dist/utils/queueParser.d.ts.map +1 -1
  348. package/packages/shared/dist/utils/queueParser.js +104 -0
  349. package/packages/shared/dist/utils/queueParser.js.map +1 -1
  350. package/scripts/build-manual-shards.mjs +100 -0
  351. package/packages/client/dist/assets/index-6jREnVYd.js +0 -2
  352. package/packages/client/dist/assets/index-BFF0iqyW.css +0 -32
  353. package/packages/client/dist/assets/index-BcI4y-fU.js +0 -1454
@@ -1 +1 @@
1
- {"version":3,"file":"fileWatcherService.d.ts","sourceRoot":"","sources":["../../src/services/fileWatcherService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAoBH,cAAM,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAAqC;IACrD,6DAA6D;IAC7D,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAEpD;;;OAGG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAwE7D,0EAA0E;IAC1E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAYzC,kFAAkF;IAClF,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAa1C,6DAA6D;IACvD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQhC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
1
+ {"version":3,"file":"fileWatcherService.d.ts","sourceRoot":"","sources":["../../src/services/fileWatcherService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAA8B,MAAM,gBAAgB,CAAC;AAqB/E,UAAU,UAAU;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiBD,cAAM,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,eAAe,CAAqC;IAC5D,6DAA6D;IAC7D,OAAO,CAAC,kBAAkB,CAA6B;IAEvD,0FAA0F;IAC1F,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAEpD;;;OAGG;IACH,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAwE7D,0EAA0E;IAC1E,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAYzC;;;;;;;;;OASG;IACG,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA6L1D,6EAA6E;IAC7E,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAY5C,kFAAkF;IAClF,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAa1C,6DAA6D;IACvD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAchC;AAED,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -11,18 +11,33 @@
11
11
  * cause an "external change" banner on their own save. Callers must invoke
12
12
  * noteLocalWrite(absolutePath) immediately after writing — events for paths
13
13
  * noted within the last SELF_WRITE_WINDOW_MS are silently dropped.
14
+ *
15
+ * Story 28.0.5: extended with harness-scope watchers over ~/.claude (user) and
16
+ * <project>/.claude (project). Harness watchers emit `harness:external-change`
17
+ * on dedicated rooms and share the same self-write-suppression map so writes
18
+ * coming out of harnessService do not echo back to the originating client.
14
19
  */
15
20
  import chokidar from 'chokidar';
16
21
  import path from 'path';
17
22
  import { getIO } from '../handlers/websocket.js';
18
23
  import { createLogger } from '../utils/logger.js';
24
+ import { getUserHarnessRoot, getProjectHarnessRoot } from '../utils/harnessPaths.js';
19
25
  const log = createLogger('fileWatcher');
20
26
  /** Directories where we never recurse — mirrors fileSystemService.SKIP_DIRS. */
21
27
  const SKIP_DIRS = new Set([
22
28
  'node_modules', '.git', '.next', '.cache', '__pycache__', 'dist', '.turbo',
23
29
  ]);
30
+ function harnessKey(ref) {
31
+ return ref.scope === 'user'
32
+ ? 'harness:user'
33
+ : `harness:project:${ref.projectSlug ?? ''}`;
34
+ }
35
+ function harnessRoom(ref) {
36
+ return harnessKey(ref);
37
+ }
24
38
  class FileWatcherService {
25
39
  watchers = new Map();
40
+ harnessWatchers = new Map();
26
41
  /** absolute path → timestamp (ms) of the last local write */
27
42
  pendingLocalWrites = new Map();
28
43
  /** Events arriving within this window after a local write are treated as our own echo. */
@@ -113,6 +128,218 @@ class FileWatcherService {
113
128
  log.info(`stopped file watcher for project "${projectSlug}"`);
114
129
  }
115
130
  }
131
+ /**
132
+ * Start (or increment the ref count of) a harness watcher for the given scope.
133
+ * - `scope='user'` → ~/.claude (via `getUserHarnessRoot()`)
134
+ * - `scope='project'` → <project>/.claude (via `getProjectHarnessRoot()`)
135
+ *
136
+ * Idempotent + reference-counted so concurrent subscribers share one chokidar.
137
+ * Unlike the project watcher, harness watchers subscribe to `add` in addition
138
+ * to `change`/`unlink` so they can fire the `'created'` type required by
139
+ * HarnessExternalChangeEvent.
140
+ */
141
+ async ensureHarnessWatcher(ref) {
142
+ const key = harnessKey(ref);
143
+ const existing = this.harnessWatchers.get(key);
144
+ if (existing) {
145
+ existing.refCount++;
146
+ return;
147
+ }
148
+ let resolvedRoot;
149
+ try {
150
+ resolvedRoot = ref.scope === 'user'
151
+ ? getUserHarnessRoot()
152
+ : await getProjectHarnessRoot(ref.projectSlug ?? '');
153
+ }
154
+ catch (err) {
155
+ log.warn(`failed to resolve harness root for ${key}: ${String(err)}`);
156
+ return;
157
+ }
158
+ // Story 28.3: project scope must also surface external edits to
159
+ // `<projectRoot>/.mcp.json`. The file is the SIBLING of `.claude/`, so
160
+ // the standard root-only watcher cannot pick it up. We add it as a second
161
+ // path in the same chokidar instance and emit `path: '.mcp.json'`
162
+ // (hard-coded relative form) when the event lands on that file.
163
+ //
164
+ // Story 29.1 (AC2.b): same pattern is used to watch `<projectRoot>/CLAUDE.md`,
165
+ // a second sibling of `.claude/`. Its emitted path is normalized to
166
+ // `'../CLAUDE.md'` so it cannot collide with `<projectRoot>/.claude/CLAUDE.md`
167
+ // (which would also normalize to `'CLAUDE.md'`). Using the `..` prefix —
168
+ // a string that path-resolver would otherwise reject as traversal — guarantees
169
+ // a unique discriminator since no path going through the standard harness
170
+ // API can ever match it. Client matching rule (AC2.b) is `path === '../CLAUDE.md'`.
171
+ const projectMcpFilePath = ref.scope === 'project'
172
+ ? path.join(path.dirname(resolvedRoot), '.mcp.json')
173
+ : null;
174
+ const projectClaudeMdPath = ref.scope === 'project'
175
+ ? path.join(path.dirname(resolvedRoot), 'CLAUDE.md')
176
+ : null;
177
+ // Story 30.1 (AC2.b): the project's `.gitignore` lives at <projectRoot>/.gitignore,
178
+ // a sibling of `.claude/`. We watch it on the same chokidar instance as
179
+ // `.mcp.json` and `CLAUDE.md` and emit a discriminated path
180
+ // (`'../.gitignore'`) so the client can route the event to the
181
+ // share-scope store without a new socket event.
182
+ const projectGitignorePath = ref.scope === 'project'
183
+ ? path.join(path.dirname(resolvedRoot), '.gitignore')
184
+ : null;
185
+ // Story 31.1 (Task A.4): the BMad config file lives at
186
+ // `<projectRoot>/.bmad-core/core-config.yaml`, outside `.claude/`. We watch
187
+ // it on the same chokidar instance and emit a discriminated path
188
+ // (`'../.bmad-core/core-config.yaml'`) so the client can route the event to
189
+ // the BMad config store without a new socket event.
190
+ const projectBmadConfigPath = ref.scope === 'project'
191
+ ? path.join(path.dirname(resolvedRoot), '.bmad-core', 'core-config.yaml')
192
+ : null;
193
+ // Story 31.2 (Task A.4): the context-builder manifest lives at
194
+ // `<projectRoot>/.hammoc/context-builder.json`, outside `.claude/` (a
195
+ // sibling, exactly like `.bmad-core/`). Watched on the same chokidar
196
+ // instance; emits a discriminated path (`'../.hammoc/context-builder.json'`)
197
+ // so the client routes the event to the context-builder store without a new
198
+ // socket event.
199
+ const projectContextBuilderManifestPath = ref.scope === 'project'
200
+ ? path.join(path.dirname(resolvedRoot), '.hammoc', 'context-builder.json')
201
+ : null;
202
+ const watchTargets = ref.scope === 'project'
203
+ ? [
204
+ resolvedRoot,
205
+ projectMcpFilePath,
206
+ projectClaudeMdPath,
207
+ projectGitignorePath,
208
+ projectBmadConfigPath,
209
+ projectContextBuilderManifestPath,
210
+ ]
211
+ : resolvedRoot;
212
+ const watcher = chokidar.watch(watchTargets, {
213
+ ignoreInitial: true,
214
+ ignored: (target) => {
215
+ // Always allow the sibling files (`.mcp.json`, `CLAUDE.md`, `.gitignore`) —
216
+ // chokidar would otherwise drop them because they sit outside
217
+ // `resolvedRoot`.
218
+ if (projectMcpFilePath && path.resolve(target) === path.resolve(projectMcpFilePath)) {
219
+ return false;
220
+ }
221
+ if (projectClaudeMdPath && path.resolve(target) === path.resolve(projectClaudeMdPath)) {
222
+ return false;
223
+ }
224
+ if (projectGitignorePath && path.resolve(target) === path.resolve(projectGitignorePath)) {
225
+ return false;
226
+ }
227
+ if (projectBmadConfigPath && path.resolve(target) === path.resolve(projectBmadConfigPath)) {
228
+ return false;
229
+ }
230
+ if (projectContextBuilderManifestPath
231
+ && path.resolve(target) === path.resolve(projectContextBuilderManifestPath)) {
232
+ return false;
233
+ }
234
+ const rel = path.relative(resolvedRoot, target).replace(/\\/g, '/');
235
+ if (!rel || rel === '.')
236
+ return false;
237
+ const segments = rel.split('/');
238
+ for (const seg of segments) {
239
+ if (SKIP_DIRS.has(seg))
240
+ return true;
241
+ }
242
+ return false;
243
+ },
244
+ awaitWriteFinish: {
245
+ stabilityThreshold: 200,
246
+ pollInterval: 50,
247
+ },
248
+ persistent: true,
249
+ followSymlinks: false,
250
+ });
251
+ const emit = (type) => (absolutePath, stats) => {
252
+ try {
253
+ const noteTs = this.pendingLocalWrites.get(absolutePath);
254
+ if (noteTs !== undefined && Date.now() - noteTs < FileWatcherService.SELF_WRITE_WINDOW_MS) {
255
+ this.pendingLocalWrites.delete(absolutePath);
256
+ return;
257
+ }
258
+ let rel;
259
+ if (projectMcpFilePath
260
+ && path.resolve(absolutePath) === path.resolve(projectMcpFilePath)) {
261
+ rel = '.mcp.json';
262
+ }
263
+ else if (projectClaudeMdPath
264
+ && path.resolve(absolutePath) === path.resolve(projectClaudeMdPath)) {
265
+ // Story 29.1 (AC2.b): `<projectRoot>/CLAUDE.md` emits as
266
+ // `'../CLAUDE.md'` to namespace-separate it from a hypothetical
267
+ // `<projectRoot>/.claude/CLAUDE.md` that would otherwise share
268
+ // the relative path `'CLAUDE.md'`.
269
+ rel = '../CLAUDE.md';
270
+ }
271
+ else if (projectGitignorePath
272
+ && path.resolve(absolutePath) === path.resolve(projectGitignorePath)) {
273
+ // Story 30.1 (AC2.b): same trick — `'../.gitignore'` is the
274
+ // discriminated path the client store keys on to trigger a full
275
+ // share-scope reload (everything depends on `.gitignore`).
276
+ rel = '../.gitignore';
277
+ }
278
+ else if (projectBmadConfigPath
279
+ && path.resolve(absolutePath) === path.resolve(projectBmadConfigPath)) {
280
+ // Story 31.1 (Task A.4): `'../.bmad-core/core-config.yaml'` is the
281
+ // discriminated path the BMad config store keys on to surface the
282
+ // external-change → STALE_WRITE reload/overwrite modal (AC3.d/e).
283
+ rel = '../.bmad-core/core-config.yaml';
284
+ }
285
+ else if (projectContextBuilderManifestPath
286
+ && path.resolve(absolutePath) === path.resolve(projectContextBuilderManifestPath)) {
287
+ // Story 31.2 (Task A.4): `'../.hammoc/context-builder.json'` is the
288
+ // discriminated path the context-builder store keys on to surface
289
+ // the external-change reload banner / STALE_WRITE modal (AC1.b).
290
+ rel = '../.hammoc/context-builder.json';
291
+ }
292
+ else {
293
+ rel = path.relative(resolvedRoot, absolutePath).replace(/\\/g, '/');
294
+ if (!rel || rel === '.' || rel.startsWith('..'))
295
+ return;
296
+ }
297
+ const payload = {
298
+ scope: ref.scope,
299
+ projectSlug: ref.projectSlug,
300
+ path: rel,
301
+ type,
302
+ mtime: type !== 'deleted' && stats?.mtime ? stats.mtime.toISOString() : undefined,
303
+ };
304
+ try {
305
+ getIO().to(harnessRoom(ref)).emit('harness:external-change', payload);
306
+ }
307
+ catch {
308
+ // Socket.io not initialized yet — drop silently.
309
+ }
310
+ }
311
+ catch (err) {
312
+ log.warn(`failed to emit harness:external-change for ${key}: ${String(err)}`);
313
+ }
314
+ };
315
+ watcher.on('add', emit('created'));
316
+ watcher.on('change', emit('modified'));
317
+ watcher.on('unlink', emit('deleted'));
318
+ watcher.on('error', (err) => {
319
+ log.warn(`chokidar harness watcher error (${key}): ${String(err)}`);
320
+ });
321
+ this.harnessWatchers.set(key, {
322
+ watcher,
323
+ refCount: 1,
324
+ resolvedRoot,
325
+ scope: ref.scope,
326
+ projectSlug: ref.projectSlug,
327
+ });
328
+ log.info(`started harness watcher for ${key} at ${resolvedRoot}`);
329
+ }
330
+ /** Decrement the harness watcher ref count, closing when it reaches zero. */
331
+ releaseHarnessWatcher(ref) {
332
+ const key = harnessKey(ref);
333
+ const existing = this.harnessWatchers.get(key);
334
+ if (!existing)
335
+ return;
336
+ existing.refCount--;
337
+ if (existing.refCount <= 0) {
338
+ existing.watcher.close().catch(() => { });
339
+ this.harnessWatchers.delete(key);
340
+ log.info(`stopped harness watcher for ${key}`);
341
+ }
342
+ }
116
343
  /** Mark an absolute path as just-written so the next watcher event is ignored. */
117
344
  noteLocalWrite(absolutePath) {
118
345
  this.pendingLocalWrites.set(absolutePath, Date.now());
@@ -128,8 +355,12 @@ class FileWatcherService {
128
355
  }
129
356
  /** Close every active watcher. Called on server shutdown. */
130
357
  async shutdown() {
131
- const closers = Array.from(this.watchers.values()).map(({ watcher }) => watcher.close().catch(() => { }));
358
+ const closers = [
359
+ ...Array.from(this.watchers.values()).map(({ watcher }) => watcher.close().catch(() => { })),
360
+ ...Array.from(this.harnessWatchers.values()).map(({ watcher }) => watcher.close().catch(() => { })),
361
+ ];
132
362
  this.watchers.clear();
363
+ this.harnessWatchers.clear();
133
364
  this.pendingLocalWrites.clear();
134
365
  await Promise.all(closers);
135
366
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fileWatcherService.js","sourceRoot":"","sources":["../../src/services/fileWatcherService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fileWatcherService.js","sourceRoot":"","sources":["../../src/services/fileWatcherService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Story 28.6: Harness sub-agent service.
3
+ *
4
+ * Combines three sources of `.claude/agents/*.md` files into a single flat
5
+ * card list (flat-only — no recursive subdirectory walk):
6
+ * - <projectRoot>/.claude/agents/ (project scope)
7
+ * - ~/.claude/agents/ (user scope)
8
+ * - <pluginInstallPath>/agents/ (plugin scope, read-only)
9
+ *
10
+ * Each .md file has YAML frontmatter with 4 required fields
11
+ * (name/description/model/color) + 1 optional 3-state `tools` field. Body is
12
+ * the markdown system prompt. Round-trip via `applyYamlFrontmatterPatch`
13
+ * (eemeli yaml — preserves comments / key order / blank lines).
14
+ *
15
+ * Differences from 28.5 (commands):
16
+ * - flat-only scan (no subdirectory walk)
17
+ * - 4 required frontmatter fields (name regex + model/color enum)
18
+ * - tools 3-state model (omitted vs empty vs populated) round-trip
19
+ * - file stem === frontmatter.name (no slash-name conversion)
20
+ * - no chat slash palette dedup
21
+ * - no BMad mirror heuristic (`.claude/agents/` has no BMad presence)
22
+ */
23
+ import { type HarnessAgentCopyRequest, type HarnessAgentCopyResponse, type HarnessAgentCreateRequest, type HarnessAgentCreateResponse, type HarnessAgentDeleteRequest, type HarnessAgentDeleteResponse, type HarnessAgentFrontmatter, type HarnessAgentListResponse, type HarnessAgentMalformedEntry, type HarnessAgentReadResponse, type HarnessAgentSourceLocation, type HarnessAgentSourceScope, type HarnessAgentToolsState, type HarnessAgentUpdateRequest, type HarnessAgentUpdateResponse } from '@hammoc/shared';
24
+ /** Throws HARNESS_PARSE_ERROR with detail when name fails the regex / OS check. */
25
+ declare function validateAgentName(name: string): void;
26
+ declare function detectExampleBlock(body: string): boolean;
27
+ declare function detectSecretsInText(text: string): {
28
+ matched: boolean;
29
+ lines: number[];
30
+ };
31
+ interface ParsedFrontmatter {
32
+ frontmatter: HarnessAgentFrontmatter;
33
+ toolsState: HarnessAgentToolsState;
34
+ }
35
+ interface FrontmatterValidationFailure {
36
+ malformed: true;
37
+ reason: HarnessAgentMalformedEntry['reason'];
38
+ detail?: string;
39
+ }
40
+ type FrontmatterParseResult = ParsedFrontmatter | FrontmatterValidationFailure;
41
+ declare function parseAgentFrontmatter(raw: string | null, fileStem: string): FrontmatterParseResult;
42
+ interface SerializeOptions {
43
+ frontmatter: HarnessAgentFrontmatter;
44
+ toolsState?: HarnessAgentToolsState;
45
+ }
46
+ /**
47
+ * Custom YAML round-trip that preserves comments / key order / blank lines for
48
+ * untouched keys, and explicitly handles the tools 3-state model:
49
+ * - state A (omitted) → delete tools key
50
+ * - state B (empty) → write tools: []
51
+ * - state C (populated) → write tools: [...]
52
+ */
53
+ declare function serializeAgentFrontmatter(prevRaw: string, opts: SerializeOptions): string;
54
+ declare class HarnessAgentService {
55
+ listCards(currentProjectSlug?: string): Promise<HarnessAgentListResponse>;
56
+ readAgent(loc: HarnessAgentSourceLocation): Promise<HarnessAgentReadResponse>;
57
+ createAgent(req: HarnessAgentCreateRequest): Promise<HarnessAgentCreateResponse>;
58
+ updateAgent(loc: HarnessAgentSourceLocation, body: HarnessAgentUpdateRequest): Promise<HarnessAgentUpdateResponse>;
59
+ /**
60
+ * Story 30.7 (Task B.2): rewrite every detected secret in the agent body
61
+ * as an `${ENV_REF}` placeholder. Frontmatter is preserved byte-for-byte;
62
+ * only the markdown body is scanned. The save flows through
63
+ * `harnessService.write`, so the share-scope guard, stale-mtime check,
64
+ * and watcher-suppression remain unchanged — only the body substitution
65
+ * is new.
66
+ */
67
+ replaceSecretWithEnvRef(input: {
68
+ scope: 'project' | 'user';
69
+ projectSlug?: string;
70
+ name: string;
71
+ expectedMtime?: string;
72
+ }): Promise<{
73
+ success: true;
74
+ mtime: string;
75
+ replacedCount: number;
76
+ }>;
77
+ copyAgent(req: HarnessAgentCopyRequest): Promise<HarnessAgentCopyResponse>;
78
+ deleteAgent(req: HarnessAgentDeleteRequest): Promise<HarnessAgentDeleteResponse>;
79
+ private buildEditableRef;
80
+ }
81
+ export declare function resolveAgentSourceLocation(input: {
82
+ scope: HarnessAgentSourceScope;
83
+ name: string;
84
+ projectSlug?: string;
85
+ pluginKey?: string;
86
+ }): Promise<HarnessAgentSourceLocation>;
87
+ export declare const harnessAgentInternals: {
88
+ detectExampleBlock: typeof detectExampleBlock;
89
+ detectSecretsInText: typeof detectSecretsInText;
90
+ parseAgentFrontmatter: typeof parseAgentFrontmatter;
91
+ serializeAgentFrontmatter: typeof serializeAgentFrontmatter;
92
+ validateAgentName: typeof validateAgentName;
93
+ AGENT_NAME_RE: RegExp;
94
+ };
95
+ export declare const harnessAgentService: HarnessAgentService;
96
+ export {};
97
+ //# sourceMappingURL=harnessAgentService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harnessAgentService.d.ts","sourceRoot":"","sources":["../../src/services/harnessAgentService.ts"],"names":[],"mappings":"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"}