harness-engineering-agent 0.1.8 → 0.2.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 (268) hide show
  1. package/README.md +146 -60
  2. package/dist/agent/harness-agent-capabilities.d.ts +4 -0
  3. package/dist/agent/harness-agent-capabilities.d.ts.map +1 -0
  4. package/dist/agent/harness-agent-capabilities.js +4 -0
  5. package/dist/agent/harness-agent-capabilities.js.map +1 -0
  6. package/dist/agent/harness-agent-capability-builders.d.ts +11 -0
  7. package/dist/agent/harness-agent-capability-builders.d.ts.map +1 -0
  8. package/dist/agent/harness-agent-capability-builders.js +57 -0
  9. package/dist/agent/harness-agent-capability-builders.js.map +1 -0
  10. package/dist/agent/harness-agent-capability-data.d.ts +3 -0
  11. package/dist/agent/harness-agent-capability-data.d.ts.map +1 -0
  12. package/dist/agent/harness-agent-capability-data.js +23 -0
  13. package/dist/agent/harness-agent-capability-data.js.map +1 -0
  14. package/dist/agent/harness-agent-capability-types.d.ts +50 -0
  15. package/dist/agent/harness-agent-capability-types.d.ts.map +1 -0
  16. package/dist/agent/harness-agent-capability-types.js +3 -0
  17. package/dist/agent/harness-agent-capability-types.js.map +1 -0
  18. package/dist/agent/harness-role-capability-directory-data.d.ts +3 -0
  19. package/dist/agent/harness-role-capability-directory-data.d.ts.map +1 -0
  20. package/dist/agent/harness-role-capability-directory-data.js +208 -0
  21. package/dist/agent/harness-role-capability-directory-data.js.map +1 -0
  22. package/dist/agent/harness-role-capability-directory.d.ts +43 -0
  23. package/dist/agent/harness-role-capability-directory.d.ts.map +1 -0
  24. package/dist/agent/harness-role-capability-directory.js +57 -0
  25. package/dist/agent/harness-role-capability-directory.js.map +1 -0
  26. package/dist/agent/index.d.ts +7 -0
  27. package/dist/agent/index.d.ts.map +1 -0
  28. package/dist/agent/index.js +6 -0
  29. package/dist/agent/index.js.map +1 -0
  30. package/dist/config/config-defaults.d.ts +22 -0
  31. package/dist/config/config-defaults.d.ts.map +1 -1
  32. package/dist/config/config-defaults.js +22 -0
  33. package/dist/config/config-defaults.js.map +1 -1
  34. package/dist/config/config-merge.d.ts.map +1 -1
  35. package/dist/config/config-merge.js +30 -0
  36. package/dist/config/config-merge.js.map +1 -1
  37. package/dist/config/config-schema.d.ts +59 -0
  38. package/dist/config/config-schema.d.ts.map +1 -1
  39. package/dist/config/config-schema.js +18 -1
  40. package/dist/config/config-schema.js.map +1 -1
  41. package/dist/config/config-types.d.ts +5 -1
  42. package/dist/config/config-types.d.ts.map +1 -1
  43. package/dist/config/harness-config.d.ts +2 -1
  44. package/dist/config/harness-config.d.ts.map +1 -1
  45. package/dist/config/harness-config.js +1 -0
  46. package/dist/config/harness-config.js.map +1 -1
  47. package/dist/config/index.d.ts +1 -1
  48. package/dist/config/index.d.ts.map +1 -1
  49. package/dist/config/index.js.map +1 -1
  50. package/dist/config/opencode-compatibility.d.ts +37 -0
  51. package/dist/config/opencode-compatibility.d.ts.map +1 -0
  52. package/dist/config/opencode-compatibility.js +99 -0
  53. package/dist/config/opencode-compatibility.js.map +1 -0
  54. package/dist/controller/agent-output.d.ts +1 -1
  55. package/dist/controller/agent-output.d.ts.map +1 -1
  56. package/dist/controller/agent-output.js +18 -1
  57. package/dist/controller/agent-output.js.map +1 -1
  58. package/dist/controller/agent-session-types.d.ts +56 -0
  59. package/dist/controller/agent-session-types.d.ts.map +1 -0
  60. package/dist/controller/agent-session-types.js +2 -0
  61. package/dist/controller/agent-session-types.js.map +1 -0
  62. package/dist/controller/agent-session-utils.d.ts +52 -0
  63. package/dist/controller/agent-session-utils.d.ts.map +1 -0
  64. package/dist/controller/agent-session-utils.js +118 -0
  65. package/dist/controller/agent-session-utils.js.map +1 -0
  66. package/dist/controller/agent-session.d.ts +2 -55
  67. package/dist/controller/agent-session.d.ts.map +1 -1
  68. package/dist/controller/agent-session.js +82 -129
  69. package/dist/controller/agent-session.js.map +1 -1
  70. package/dist/controller/contracts.d.ts +3 -2
  71. package/dist/controller/contracts.d.ts.map +1 -1
  72. package/dist/controller/contracts.js.map +1 -1
  73. package/dist/controller/evidence-factory.js +7 -1
  74. package/dist/controller/evidence-factory.js.map +1 -1
  75. package/dist/controller/failure-analysis.d.ts +12 -0
  76. package/dist/controller/failure-analysis.d.ts.map +1 -1
  77. package/dist/controller/failure-analysis.js +41 -0
  78. package/dist/controller/failure-analysis.js.map +1 -1
  79. package/dist/controller/failure-analyzer-schemas.d.ts +87 -0
  80. package/dist/controller/failure-analyzer-schemas.d.ts.map +1 -0
  81. package/dist/controller/failure-analyzer-schemas.js +117 -0
  82. package/dist/controller/failure-analyzer-schemas.js.map +1 -0
  83. package/dist/controller/graph-validator.js +18 -4
  84. package/dist/controller/graph-validator.js.map +1 -1
  85. package/dist/controller/index.d.ts +7 -2
  86. package/dist/controller/index.d.ts.map +1 -1
  87. package/dist/controller/index.js +4 -1
  88. package/dist/controller/index.js.map +1 -1
  89. package/dist/controller/repair-loop.d.ts +1 -1
  90. package/dist/controller/repair-loop.d.ts.map +1 -1
  91. package/dist/controller/repair-loop.js +28 -0
  92. package/dist/controller/repair-loop.js.map +1 -1
  93. package/dist/controller/report-factory.d.ts.map +1 -1
  94. package/dist/controller/report-factory.js +49 -21
  95. package/dist/controller/report-factory.js.map +1 -1
  96. package/dist/controller/role-prompts.d.ts +2 -1
  97. package/dist/controller/role-prompts.d.ts.map +1 -1
  98. package/dist/controller/role-prompts.js +3 -9
  99. package/dist/controller/role-prompts.js.map +1 -1
  100. package/dist/controller/run-acceptance.d.ts +17 -0
  101. package/dist/controller/run-acceptance.d.ts.map +1 -0
  102. package/dist/controller/run-acceptance.js +179 -0
  103. package/dist/controller/run-acceptance.js.map +1 -0
  104. package/dist/controller/run-controller.d.ts.map +1 -1
  105. package/dist/controller/run-controller.js +244 -22
  106. package/dist/controller/run-controller.js.map +1 -1
  107. package/dist/controller/session-tool-authorization.d.ts +14 -0
  108. package/dist/controller/session-tool-authorization.d.ts.map +1 -0
  109. package/dist/controller/session-tool-authorization.js +88 -0
  110. package/dist/controller/session-tool-authorization.js.map +1 -0
  111. package/dist/controller/task-agent-output.d.ts +13 -2
  112. package/dist/controller/task-agent-output.d.ts.map +1 -1
  113. package/dist/controller/task-agent-output.js +58 -1
  114. package/dist/controller/task-agent-output.js.map +1 -1
  115. package/dist/controller/task-agent-schemas.d.ts +745 -26
  116. package/dist/controller/task-agent-schemas.d.ts.map +1 -1
  117. package/dist/controller/task-agent-schemas.js +70 -21
  118. package/dist/controller/task-agent-schemas.js.map +1 -1
  119. package/dist/controller/task-executor.d.ts +1 -1
  120. package/dist/controller/task-executor.d.ts.map +1 -1
  121. package/dist/controller/task-executor.js +269 -105
  122. package/dist/controller/task-executor.js.map +1 -1
  123. package/dist/doctor/cli.d.ts +3 -0
  124. package/dist/doctor/cli.d.ts.map +1 -0
  125. package/dist/doctor/cli.js +10 -0
  126. package/dist/doctor/cli.js.map +1 -0
  127. package/dist/doctor/index.d.ts +7 -0
  128. package/dist/doctor/index.d.ts.map +1 -0
  129. package/dist/doctor/index.js +16 -0
  130. package/dist/doctor/index.js.map +1 -0
  131. package/dist/doctor/local-mcp-probe.d.ts +3 -0
  132. package/dist/doctor/local-mcp-probe.d.ts.map +1 -0
  133. package/dist/doctor/local-mcp-probe.js +151 -0
  134. package/dist/doctor/local-mcp-probe.js.map +1 -0
  135. package/dist/doctor/opencode-config.d.ts +43 -0
  136. package/dist/doctor/opencode-config.d.ts.map +1 -0
  137. package/dist/doctor/opencode-config.js +103 -0
  138. package/dist/doctor/opencode-config.js.map +1 -0
  139. package/dist/doctor/run-harness-doctor.d.ts +23 -0
  140. package/dist/doctor/run-harness-doctor.d.ts.map +1 -0
  141. package/dist/doctor/run-harness-doctor.js +176 -0
  142. package/dist/doctor/run-harness-doctor.js.map +1 -0
  143. package/dist/doctor/types.d.ts +69 -0
  144. package/dist/doctor/types.d.ts.map +1 -0
  145. package/dist/doctor/types.js +8 -0
  146. package/dist/doctor/types.js.map +1 -0
  147. package/dist/domain/acceptance-criteria.d.ts +9 -0
  148. package/dist/domain/acceptance-criteria.d.ts.map +1 -0
  149. package/dist/domain/acceptance-criteria.js +38 -0
  150. package/dist/domain/acceptance-criteria.js.map +1 -0
  151. package/dist/domain/context-package.d.ts +43 -0
  152. package/dist/domain/context-package.d.ts.map +1 -0
  153. package/dist/domain/context-package.js +54 -0
  154. package/dist/domain/context-package.js.map +1 -0
  155. package/dist/domain/evidence.d.ts +1 -0
  156. package/dist/domain/evidence.d.ts.map +1 -1
  157. package/dist/domain/evidence.js +1 -2
  158. package/dist/domain/evidence.js.map +1 -1
  159. package/dist/domain/index.d.ts +14 -4
  160. package/dist/domain/index.d.ts.map +1 -1
  161. package/dist/domain/index.js +7 -2
  162. package/dist/domain/index.js.map +1 -1
  163. package/dist/domain/plan-artifacts.d.ts +170 -0
  164. package/dist/domain/plan-artifacts.d.ts.map +1 -0
  165. package/dist/domain/plan-artifacts.js +187 -0
  166. package/dist/domain/plan-artifacts.js.map +1 -0
  167. package/dist/domain/project-context.d.ts +10 -0
  168. package/dist/domain/project-context.d.ts.map +1 -0
  169. package/dist/domain/project-context.js +11 -0
  170. package/dist/domain/project-context.js.map +1 -0
  171. package/dist/domain/report.d.ts +608 -11
  172. package/dist/domain/report.d.ts.map +1 -1
  173. package/dist/domain/report.js +6 -4
  174. package/dist/domain/report.js.map +1 -1
  175. package/dist/domain/requirement.d.ts +22 -2
  176. package/dist/domain/requirement.d.ts.map +1 -1
  177. package/dist/domain/requirement.js +26 -3
  178. package/dist/domain/requirement.js.map +1 -1
  179. package/dist/domain/run-acceptance.d.ts +33 -0
  180. package/dist/domain/run-acceptance.d.ts.map +1 -0
  181. package/dist/domain/run-acceptance.js +29 -0
  182. package/dist/domain/run-acceptance.js.map +1 -0
  183. package/dist/domain/run.d.ts +596 -7
  184. package/dist/domain/run.d.ts.map +1 -1
  185. package/dist/domain/run.js +58 -0
  186. package/dist/domain/run.js.map +1 -1
  187. package/dist/domain/shared.d.ts +40 -2
  188. package/dist/domain/shared.d.ts.map +1 -1
  189. package/dist/domain/shared.js +26 -0
  190. package/dist/domain/shared.js.map +1 -1
  191. package/dist/domain/task-review.d.ts +57 -0
  192. package/dist/domain/task-review.d.ts.map +1 -0
  193. package/dist/domain/task-review.js +63 -0
  194. package/dist/domain/task-review.js.map +1 -0
  195. package/dist/domain/task.d.ts +24 -2
  196. package/dist/domain/task.d.ts.map +1 -1
  197. package/dist/domain/task.js +20 -12
  198. package/dist/domain/task.js.map +1 -1
  199. package/dist/index.d.ts +5 -0
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +5 -0
  202. package/dist/index.js.map +1 -1
  203. package/dist/plugin/create-harness-plugin.d.ts +4 -28
  204. package/dist/plugin/create-harness-plugin.d.ts.map +1 -1
  205. package/dist/plugin/create-harness-plugin.js +33 -166
  206. package/dist/plugin/create-harness-plugin.js.map +1 -1
  207. package/dist/plugin/harness-agent-config.d.ts +7 -0
  208. package/dist/plugin/harness-agent-config.d.ts.map +1 -1
  209. package/dist/plugin/harness-agent-config.js +72 -118
  210. package/dist/plugin/harness-agent-config.js.map +1 -1
  211. package/dist/plugin/harness-chat-protocol.d.ts.map +1 -1
  212. package/dist/plugin/harness-chat-protocol.js +29 -6
  213. package/dist/plugin/harness-chat-protocol.js.map +1 -1
  214. package/dist/plugin/harness-plugin-identifiers.d.ts +5 -0
  215. package/dist/plugin/harness-plugin-identifiers.d.ts.map +1 -0
  216. package/dist/plugin/harness-plugin-identifiers.js +24 -0
  217. package/dist/plugin/harness-plugin-identifiers.js.map +1 -0
  218. package/dist/plugin/harness-plugin-runtime.d.ts +64 -0
  219. package/dist/plugin/harness-plugin-runtime.d.ts.map +1 -0
  220. package/dist/plugin/harness-plugin-runtime.js +125 -0
  221. package/dist/plugin/harness-plugin-runtime.js.map +1 -0
  222. package/dist/plugin/harness-plugin-scheduler.d.ts +16 -0
  223. package/dist/plugin/harness-plugin-scheduler.d.ts.map +1 -0
  224. package/dist/plugin/harness-plugin-scheduler.js +51 -0
  225. package/dist/plugin/harness-plugin-scheduler.js.map +1 -0
  226. package/dist/plugin/harness-requirement.d.ts +1 -1
  227. package/dist/plugin/harness-requirement.d.ts.map +1 -1
  228. package/dist/plugin/harness-requirement.js +2 -3
  229. package/dist/plugin/harness-requirement.js.map +1 -1
  230. package/dist/session/contracts.d.ts +9 -0
  231. package/dist/session/contracts.d.ts.map +1 -1
  232. package/dist/session/contracts.js.map +1 -1
  233. package/dist/session/fake-session-adapter.d.ts.map +1 -1
  234. package/dist/session/fake-session-adapter.js +1 -0
  235. package/dist/session/fake-session-adapter.js.map +1 -1
  236. package/dist/session/index.d.ts +1 -1
  237. package/dist/session/index.d.ts.map +1 -1
  238. package/dist/session/index.js.map +1 -1
  239. package/dist/session/opencode-session-adapter.d.ts +2 -1
  240. package/dist/session/opencode-session-adapter.d.ts.map +1 -1
  241. package/dist/session/opencode-session-adapter.js +7 -2
  242. package/dist/session/opencode-session-adapter.js.map +1 -1
  243. package/dist/session/opencode-session-prompts.d.ts +2 -10
  244. package/dist/session/opencode-session-prompts.d.ts.map +1 -1
  245. package/dist/session/opencode-session-prompts.js +7 -9
  246. package/dist/session/opencode-session-prompts.js.map +1 -1
  247. package/dist/store/run-event.d.ts +596 -7
  248. package/dist/store/run-event.d.ts.map +1 -1
  249. package/dist/tools/harness-research-tools.d.ts +22 -0
  250. package/dist/tools/harness-research-tools.d.ts.map +1 -1
  251. package/dist/tools/harness-research-tools.js +173 -64
  252. package/dist/tools/harness-research-tools.js.map +1 -1
  253. package/dist/tools/harness-tool-capabilities.d.ts +342 -0
  254. package/dist/tools/harness-tool-capabilities.d.ts.map +1 -0
  255. package/dist/tools/harness-tool-capabilities.js +170 -0
  256. package/dist/tools/harness-tool-capabilities.js.map +1 -0
  257. package/dist/verification/command-policy.d.ts.map +1 -1
  258. package/dist/verification/command-policy.js +2 -2
  259. package/dist/verification/command-policy.js.map +1 -1
  260. package/dist/workspace/collect-project-context.d.ts +3 -0
  261. package/dist/workspace/collect-project-context.d.ts.map +1 -0
  262. package/dist/workspace/collect-project-context.js +92 -0
  263. package/dist/workspace/collect-project-context.js.map +1 -0
  264. package/dist/workspace/index.d.ts +1 -0
  265. package/dist/workspace/index.d.ts.map +1 -1
  266. package/dist/workspace/index.js +1 -0
  267. package/dist/workspace/index.js.map +1 -1
  268. package/package.json +6 -1
package/dist/index.d.ts CHANGED
@@ -1,7 +1,10 @@
1
+ export * from "./agent/index.js";
1
2
  export * from "./config/index.js";
2
3
  export * from "./controller/index.js";
4
+ export * from "./doctor/index.js";
3
5
  export * from "./domain/index.js";
4
6
  export { createHarnessPlugin, harnessPlugin, harnessPlugin as server, resolveHarnessProjectRoot, } from "./plugin/create-harness-plugin.js";
7
+ export { applyHarnessAgentConfig, detectHarnessConfigConflicts, } from "./plugin/harness-agent-config.js";
5
8
  export { HARNESS_BACKGROUND_ACK_MARKER, HARNESS_INTERNAL_RESULT_MARKER, } from "./plugin/harness-chat-protocol.js";
6
9
  export { createHarnessCoordinator, type HarnessCoordinator, type HarnessCoordinatorResponse, } from "./plugin/harness-coordinator.js";
7
10
  export { type HarnessIntent, HarnessIntentSchema, } from "./plugin/harness-intent.js";
@@ -9,6 +12,8 @@ export * from "./session/index.js";
9
12
  export * from "./store/index.js";
10
13
  export * from "./tools/context7-client.js";
11
14
  export * from "./tools/grep-app-client.js";
15
+ export { executeHarnessResearchTool, HARNESS_RESEARCH_PLUGIN_TOOL_NAMES, type ResearchClients, registerHarnessResearchTools, } from "./tools/harness-research-tools.js";
16
+ export * from "./tools/harness-tool-capabilities.js";
12
17
  export * from "./tools/lsp-client.js";
13
18
  export * from "./verification/index.js";
14
19
  export * from "./workspace/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,aAAa,IAAI,MAAM,EACvB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAChC,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,KAAK,aAAa,EAClB,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,aAAa,IAAI,MAAM,EACvB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,GAChC,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,KAAK,aAAa,EAClB,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,EAClC,KAAK,eAAe,EACpB,4BAA4B,GAC7B,MAAM,mCAAmC,CAAA;AAC1C,cAAc,sCAAsC,CAAA;AACpD,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA"}
package/dist/index.js CHANGED
@@ -1,7 +1,10 @@
1
+ export * from "./agent/index.js";
1
2
  export * from "./config/index.js";
2
3
  export * from "./controller/index.js";
4
+ export * from "./doctor/index.js";
3
5
  export * from "./domain/index.js";
4
6
  export { createHarnessPlugin, harnessPlugin, harnessPlugin as server, resolveHarnessProjectRoot, } from "./plugin/create-harness-plugin.js";
7
+ export { applyHarnessAgentConfig, detectHarnessConfigConflicts, } from "./plugin/harness-agent-config.js";
5
8
  export { HARNESS_BACKGROUND_ACK_MARKER, HARNESS_INTERNAL_RESULT_MARKER, } from "./plugin/harness-chat-protocol.js";
6
9
  export { createHarnessCoordinator, } from "./plugin/harness-coordinator.js";
7
10
  export { HarnessIntentSchema, } from "./plugin/harness-intent.js";
@@ -9,6 +12,8 @@ export * from "./session/index.js";
9
12
  export * from "./store/index.js";
10
13
  export * from "./tools/context7-client.js";
11
14
  export * from "./tools/grep-app-client.js";
15
+ export { executeHarnessResearchTool, HARNESS_RESEARCH_PLUGIN_TOOL_NAMES, registerHarnessResearchTools, } from "./tools/harness-research-tools.js";
16
+ export * from "./tools/harness-tool-capabilities.js";
12
17
  export * from "./tools/lsp-client.js";
13
18
  export * from "./verification/index.js";
14
19
  export * from "./workspace/index.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,aAAa,IAAI,MAAM,EACvB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,wBAAwB,GAGzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAEL,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,aAAa,IAAI,MAAM,EACvB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAC7B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,wBAAwB,GAGzB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAEL,mBAAmB,GACpB,MAAM,4BAA4B,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,4BAA4B,CAAA;AAC1C,OAAO,EACL,0BAA0B,EAC1B,kCAAkC,EAElC,4BAA4B,GAC7B,MAAM,mCAAmC,CAAA;AAC1C,cAAc,sCAAsC,CAAA;AACpD,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA"}
@@ -1,31 +1,7 @@
1
- import type { Plugin, PluginInput } from "@opencode-ai/plugin";
2
- import type { OpencodeClient } from "@opencode-ai/sdk";
3
- import { type HarnessConfig } from "../config/index.js";
4
- import { type ControllerClock, type ControllerIdSource, type RunController } from "../controller/index.js";
5
- import { type SessionAdapter } from "../session/index.js";
6
- import { type RunStore } from "../store/index.js";
7
- import { type ProcessRunner, type VerificationRunner } from "../verification/index.js";
8
- import { type CreateHarnessCoordinatorOptions, type HarnessCoordinator } from "./harness-coordinator.js";
9
- export type HarnessPluginDependencies = {
10
- readonly loadConfig?: (projectRoot: string) => Promise<HarnessConfig>;
11
- readonly createStore?: (projectRoot: string, stateDirectory: string) => RunStore;
12
- readonly createSessionAdapter?: (client: OpencodeClient, config: HarnessConfig) => SessionAdapter;
13
- readonly createProcessRunner?: () => ProcessRunner;
14
- readonly createVerificationRunner?: (processRunner: ProcessRunner) => VerificationRunner;
15
- readonly createController?: (input: {
16
- readonly config: HarnessConfig;
17
- readonly projectRoot: string;
18
- readonly store: RunStore;
19
- readonly sessionAdapter: SessionAdapter;
20
- readonly verificationRunner: VerificationRunner;
21
- readonly clock: ControllerClock;
22
- readonly ids: ControllerIdSource;
23
- }) => RunController;
24
- readonly createCoordinator?: (input: CreateHarnessCoordinatorOptions) => HarnessCoordinator;
25
- readonly clock?: ControllerClock;
26
- readonly ids?: ControllerIdSource;
27
- };
1
+ import type { Plugin } from "@opencode-ai/plugin";
2
+ import { type HarnessPluginDependencies } from "./harness-plugin-runtime.js";
3
+ export { resolveHarnessProjectRoot } from "./harness-plugin-identifiers.js";
4
+ export type { HarnessPluginDependencies } from "./harness-plugin-runtime.js";
28
5
  export declare const createHarnessPlugin: (dependencies?: HarnessPluginDependencies) => Plugin;
29
6
  export declare const harnessPlugin: Plugin;
30
- export declare const resolveHarnessProjectRoot: (input: Pick<PluginInput, "directory" | "worktree">) => string;
31
7
  //# sourceMappingURL=create-harness-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-harness-plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/create-harness-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EAAE,KAAK,aAAa,EAAqB,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,kBAAkB,EAEvB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAA4B,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAA;AAOjC,OAAO,EACL,KAAK,+BAA+B,EAEpC,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAA;AAEjC,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAA;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,QAAQ,CAAA;IAChF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,KAAK,cAAc,CAAA;IACjG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,aAAa,CAAA;IAClD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,kBAAkB,CAAA;IACxF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAClC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;QAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;QACxB,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;QACvC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;QAC/C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;QAC/B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,CAAA;KACjC,KAAK,aAAa,CAAA;IACnB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,+BAA+B,KAAK,kBAAkB,CAAA;IAC3F,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAA;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAA;CAClC,CAAA;AAUD,eAAO,MAAM,mBAAmB,GAAI,eAAc,yBAA8B,KAAG,MAoDlF,CAAA;AAED,eAAO,MAAM,aAAa,QAAwB,CAAA;AAmLlD,eAAO,MAAM,yBAAyB,GACpC,OAAO,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,CAAC,KACjD,MAOF,CAAA"}
1
+ {"version":3,"file":"create-harness-plugin.d.ts","sourceRoot":"","sources":["../../src/plugin/create-harness-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAMjD,OAAO,EAEL,KAAK,yBAAyB,EAE/B,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAE5E,eAAO,MAAM,mBAAmB,GAAI,eAAc,yBAA8B,KAAG,MA4ElF,CAAA;AAED,eAAO,MAAM,aAAa,QAAwB,CAAA"}
@@ -1,33 +1,49 @@
1
- import { randomUUID } from "node:crypto";
2
- import { resolve } from "node:path";
3
- import { loadHarnessConfig } from "../config/index.js";
4
- import { createRunController, } from "../controller/index.js";
5
- import { RunIdSchema } from "../domain/index.js";
6
- import { createOpencodeSessionAdapter, createOpencodeSessionClient, } from "../session/index.js";
7
- import { createFilesystemRunStore } from "../store/index.js";
8
- import { createNodeProcessRunner, createVerificationRunner, } from "../verification/index.js";
1
+ import { authorizeSessionToolExecution } from "../controller/index.js";
2
+ import { createPluginResearchTools } from "../tools/harness-research-tools.js";
9
3
  import { applyHarnessAgentConfig } from "./harness-agent-config.js";
10
4
  import { handleHarnessChatMessage } from "./harness-chat-hook.js";
11
- import { createInternalCompletionMessage, createInternalFailureMessage, } from "./harness-chat-protocol.js";
12
- import { createHarnessCoordinator, } from "./harness-coordinator.js";
5
+ import { createRuntime, resolveHarnessResearchRole, } from "./harness-plugin-runtime.js";
6
+ export { resolveHarnessProjectRoot } from "./harness-plugin-identifiers.js";
13
7
  export const createHarnessPlugin = (dependencies = {}) => {
14
8
  return async (input) => {
15
- const runtime = await createRuntime(input, dependencies);
9
+ const runtime = await createRuntime({ client: input.client, input, dependencies });
16
10
  if (runtime.config === undefined ||
17
11
  runtime.controller === undefined ||
18
12
  runtime.coordinator === undefined ||
19
13
  runtime.projectRoot === undefined ||
20
- runtime.sessionGuards === undefined) {
14
+ runtime.sessionGuards === undefined ||
15
+ runtime.researchClients === undefined ||
16
+ runtime.sessionAdapter === undefined) {
21
17
  return {};
22
18
  }
23
- const config = runtime.config;
24
- const coordinator = runtime.coordinator;
25
- const sessionGuards = runtime.sessionGuards;
26
- const projectRoot = runtime.projectRoot;
19
+ const { config, coordinator, projectRoot, researchClients, sessionGuards, sessionAdapter } = runtime;
27
20
  return {
21
+ dispose: async () => {
22
+ await researchClients.lsp.close();
23
+ },
28
24
  config: async (mutableConfig) => {
29
25
  applyHarnessAgentConfig(mutableConfig, config);
30
26
  },
27
+ tool: createPluginResearchTools({
28
+ clients: researchClients,
29
+ resolveRole: resolveHarnessResearchRole,
30
+ workspaceRoot: projectRoot,
31
+ }),
32
+ "tool.execute.before": async (toolInput, output) => {
33
+ const snapshot = sessionAdapterSnapshot(sessionAdapter, toolInput.sessionID);
34
+ if (snapshot === undefined) {
35
+ return;
36
+ }
37
+ authorizeSessionToolExecution({
38
+ tool: toolInput.tool,
39
+ args: output.args,
40
+ policy: {
41
+ role: snapshot.role,
42
+ workingDirectory: snapshot.workingDirectory,
43
+ ...(snapshot.promptInput === undefined ? {} : { promptInput: snapshot.promptInput }),
44
+ },
45
+ });
46
+ },
31
47
  "chat.message": async (messageInput, output) => {
32
48
  const replyModel = messageInput.model ?? output.message.model;
33
49
  await handleHarnessChatMessage({
@@ -61,154 +77,5 @@ export const createHarnessPlugin = (dependencies = {}) => {
61
77
  };
62
78
  };
63
79
  export const harnessPlugin = createHarnessPlugin();
64
- const createRuntime = async (input, dependencies) => {
65
- const projectRoot = resolveHarnessProjectRoot(input);
66
- const config = await (dependencies.loadConfig ?? ((root) => loadHarnessConfig({ projectRoot: root })))(projectRoot);
67
- if (!config.enabled) {
68
- return {};
69
- }
70
- const store = (dependencies.createStore ??
71
- ((root, stateDirectory) => createFilesystemRunStore({ projectRoot: root, stateDirectory })))(projectRoot, config.stateDirectory);
72
- const processRunner = (dependencies.createProcessRunner ??
73
- (() => createNodeProcessRunner({ maxCapturedOutputBytes: 64 * 1024 })))();
74
- const verificationRunner = (dependencies.createVerificationRunner ??
75
- ((runner) => createVerificationRunner({
76
- processRunner: runner,
77
- clock: dependencies.clock ?? { now: () => new Date() },
78
- createOutputRefId: () => `output-${randomUUID()}`,
79
- maxCapturedOutputBytes: 64 * 1024,
80
- outputSummaryMaxLength: 2000,
81
- })))(processRunner);
82
- const sessionAdapter = (dependencies.createSessionAdapter ??
83
- ((client, currentConfig) => createOpencodeSessionAdapter({
84
- client: createOpencodeSessionClient(client),
85
- profiles: {
86
- intake: currentConfig.harness,
87
- planner: currentConfig.planner,
88
- worker: currentConfig.worker,
89
- verifier: currentConfig.verifier,
90
- acceptance: currentConfig.acceptance,
91
- "failure-analyzer": currentConfig.failureAnalyzer,
92
- "repair-worker": currentConfig.worker,
93
- },
94
- })))(input.client, config);
95
- const clock = dependencies.clock ?? { now: () => new Date() };
96
- const ids = dependencies.ids ?? createIdSource();
97
- const sessionGuards = {
98
- inFlightRuns: new Map(),
99
- internalSessionIds: new Set(),
100
- };
101
- const controller = (dependencies.createController ??
102
- ((options) => createRunController({
103
- store: options.store,
104
- sessionAdapter: options.sessionAdapter,
105
- verificationRunner: options.verificationRunner,
106
- clock: options.clock,
107
- ids: options.ids,
108
- workingDirectory: options.projectRoot,
109
- maxRunAttempts: options.config.maxRunAttempts,
110
- })))({
111
- config,
112
- projectRoot,
113
- store,
114
- sessionAdapter,
115
- verificationRunner,
116
- clock,
117
- ids,
118
- });
119
- const coordinator = (dependencies.createCoordinator ??
120
- ((options) => createHarnessCoordinator({
121
- config: options.config,
122
- controller: options.controller,
123
- ids: options.ids,
124
- projectRoot: options.projectRoot,
125
- registerInternalSession: (sessionID) => {
126
- sessionGuards.internalSessionIds.add(sessionID);
127
- },
128
- sessionAdapter: options.sessionAdapter,
129
- scheduleAdvance: ({ sessionID, runId }) => {
130
- const existing = sessionGuards.inFlightRuns.get(runId);
131
- if (existing !== undefined) {
132
- return;
133
- }
134
- const advancement = controller.advanceRun(runId).then((run) => {
135
- return input.client.session.promptAsync({
136
- path: { id: sessionID },
137
- query: { directory: projectRoot },
138
- body: {
139
- agent: "harness",
140
- parts: [
141
- {
142
- type: "text",
143
- text: createInternalCompletionMessage({
144
- kind: "run",
145
- operation: "status",
146
- run,
147
- }),
148
- synthetic: true,
149
- metadata: { source: "harness" },
150
- },
151
- ],
152
- },
153
- throwOnError: true,
154
- });
155
- }, async (error) => {
156
- await input.client.session.promptAsync({
157
- path: { id: sessionID },
158
- query: { directory: projectRoot },
159
- body: {
160
- agent: "harness",
161
- parts: [
162
- {
163
- type: "text",
164
- text: createInternalFailureMessage(error instanceof Error ? error.message : "Harness 后台推进失败。"),
165
- synthetic: true,
166
- metadata: { source: "harness" },
167
- },
168
- ],
169
- },
170
- throwOnError: true,
171
- });
172
- });
173
- sessionGuards.inFlightRuns.set(runId, advancement.then(() => undefined));
174
- void advancement.finally(() => sessionGuards.inFlightRuns.delete(runId));
175
- },
176
- })))({
177
- config,
178
- controller,
179
- ids,
180
- projectRoot,
181
- registerInternalSession: (sessionID) => {
182
- sessionGuards.internalSessionIds.add(sessionID);
183
- },
184
- sessionAdapter,
185
- });
186
- return {
187
- config,
188
- controller,
189
- coordinator,
190
- projectRoot,
191
- sessionGuards,
192
- };
193
- };
194
- const createIdSource = () => ({
195
- createRunId: () => RunIdSchema.parse(randomUUID()),
196
- createEventId: (label) => `${normalizeLabel(label)}-${randomUUID()}`,
197
- createMessageId: (label) => `msg_${normalizeLabel(label)}_${randomUUID()}`,
198
- createEvidenceId: (label) => `${normalizeLabel(label)}-${randomUUID()}`,
199
- createFailureId: (label) => `${normalizeLabel(label)}-${randomUUID()}`,
200
- createAgentResultId: (label) => `${normalizeLabel(label)}-${randomUUID()}`,
201
- });
202
- const normalizeLabel = (label) => label
203
- .toLowerCase()
204
- .replace(/[^a-z0-9]+/g, "-")
205
- .replace(/^-|-$/g, "") || "harness";
206
- export const resolveHarnessProjectRoot = (input) => {
207
- const worktree = input.worktree.trim();
208
- const candidate = worktree.length === 0 ? undefined : resolve(worktree);
209
- if (candidate === undefined || resolve(candidate, "..") === candidate) {
210
- return resolve(input.directory);
211
- }
212
- return candidate;
213
- };
80
+ const sessionAdapterSnapshot = (sessionAdapter, sessionID) => sessionAdapter.getSession(sessionID);
214
81
  //# sourceMappingURL=create-harness-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-harness-plugin.js","sourceRoot":"","sources":["../../src/plugin/create-harness-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-harness-plugin.js","sourceRoot":"","sources":["../../src/plugin/create-harness-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,13 @@
1
1
  import type { Config } from "@opencode-ai/plugin";
2
2
  import type { HarnessConfig } from "../config/index.js";
3
3
  import { HARNESS_ACCEPTANCE_AGENT_NAME, HARNESS_ACCEPTANCE_DISPLAY_NAME, HARNESS_FAILURE_ANALYZER_AGENT_NAME, HARNESS_FAILURE_ANALYZER_DISPLAY_NAME, HARNESS_INTAKE_AGENT_NAME, HARNESS_INTAKE_DISPLAY_NAME, HARNESS_PLANNER_AGENT_NAME, HARNESS_PLANNER_DISPLAY_NAME, HARNESS_PRIMARY_AGENT_NAME, HARNESS_REPAIR_WORKER_AGENT_NAME, HARNESS_REPAIR_WORKER_DISPLAY_NAME, HARNESS_VERIFIER_AGENT_NAME, HARNESS_VERIFIER_DISPLAY_NAME, HARNESS_WORKER_AGENT_NAME, HARNESS_WORKER_DISPLAY_NAME } from "../session/harness-agent-names.js";
4
+ export type HarnessConfigConflict = {
5
+ readonly name: string;
6
+ readonly summary: string;
7
+ };
8
+ export declare const detectHarnessConfigConflicts: (config: {
9
+ readonly agent?: Readonly<Record<string, unknown>>;
10
+ }, harnessConfig: HarnessConfig) => readonly HarnessConfigConflict[];
4
11
  export declare const applyHarnessAgentConfig: (config: Config, harnessConfig: HarnessConfig) => void;
5
12
  export { HARNESS_ACCEPTANCE_AGENT_NAME, HARNESS_ACCEPTANCE_DISPLAY_NAME, HARNESS_FAILURE_ANALYZER_AGENT_NAME, HARNESS_FAILURE_ANALYZER_DISPLAY_NAME, HARNESS_INTAKE_AGENT_NAME, HARNESS_INTAKE_DISPLAY_NAME, HARNESS_PLANNER_AGENT_NAME, HARNESS_PLANNER_DISPLAY_NAME, HARNESS_PRIMARY_AGENT_NAME, HARNESS_REPAIR_WORKER_AGENT_NAME, HARNESS_REPAIR_WORKER_DISPLAY_NAME, HARNESS_VERIFIER_AGENT_NAME, HARNESS_VERIFIER_DISPLAY_NAME, HARNESS_WORKER_AGENT_NAME, HARNESS_WORKER_DISPLAY_NAME, };
6
13
  //# sourceMappingURL=harness-agent-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness-agent-config.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,gCAAgC,EAChC,kCAAkC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,mCAAmC,CAAA;AA8E1C,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,EAAE,eAAe,aAAa,KAAG,IA4FtF,CAAA;AAED,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,gCAAgC,EAChC,kCAAkC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,GAC5B,CAAA"}
1
+ {"version":3,"file":"harness-agent-config.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAQjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,gCAAgC,EAChC,kCAAkC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,EAC5B,MAAM,mCAAmC,CAAA;AAE1C,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AA8FD,eAAO,MAAM,4BAA4B,GACvC,QAAQ;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,EAC9D,eAAe,aAAa,KAC3B,SAAS,qBAAqB,EAehC,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,QAAQ,MAAM,EAAE,eAAe,aAAa,KAAG,IAiBtF,CAAA;AAED,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,mCAAmC,EACnC,qCAAqC,EACrC,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,EAC1B,gCAAgC,EAChC,kCAAkC,EAClC,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,2BAA2B,GAC5B,CAAA"}
@@ -1,22 +1,5 @@
1
+ import { buildCapabilityPermission, buildCapabilityPrompt, buildCapabilityToolConfig, getHarnessAgentCapability, } from "../agent/index.js";
1
2
  import { HARNESS_ACCEPTANCE_AGENT_NAME, HARNESS_ACCEPTANCE_DISPLAY_NAME, HARNESS_FAILURE_ANALYZER_AGENT_NAME, HARNESS_FAILURE_ANALYZER_DISPLAY_NAME, HARNESS_INTAKE_AGENT_NAME, HARNESS_INTAKE_DISPLAY_NAME, HARNESS_PLANNER_AGENT_NAME, HARNESS_PLANNER_DISPLAY_NAME, HARNESS_PRIMARY_AGENT_NAME, HARNESS_REPAIR_WORKER_AGENT_NAME, HARNESS_REPAIR_WORKER_DISPLAY_NAME, HARNESS_VERIFIER_AGENT_NAME, HARNESS_VERIFIER_DISPLAY_NAME, HARNESS_WORKER_AGENT_NAME, HARNESS_WORKER_DISPLAY_NAME, } from "../session/harness-agent-names.js";
2
- const HARNESS_AGENT_DESCRIPTION = "Use for natural-language Harness lifecycle operations: start, status, resume, cancel, report.";
3
- const HARNESS_AGENT_PROMPT = [
4
- "你是 Harness Agent,只负责呈现 Harness 运行结果和确定的生命周期状态。",
5
- "关于可用模型、当前模型、MCP、智能体、配置、帮助或工具的普通能力查询,直接按 OpenCode 正常能力回答,不要进入 Harness 协调。",
6
- "首轮受理消息带有版本化 Harness 受理 payload,包含 runId 和初始状态;后台完成或失败消息带有 <!-- HARNESS_INTERNAL_RESULT --> 标记的 synthetic result。",
7
- "你只基于结构化受理或 synthetic result 做总结,不要猜测、补造或改写运行状态,也不要要求用户查看控制面板。",
8
- "不要直接编辑文件、执行 shell、调用 task 委派子 Agent 或声明未完成的任务已完成。",
9
- "向用户清楚展示 runId、当前状态、阻塞原因和下一步操作。",
10
- ].join("\n");
11
- const RESEARCH_TOOL_NAMES = [
12
- "harness_context7_resolve",
13
- "harness_context7_query",
14
- "harness_grep_app_search",
15
- "harness_lsp_status",
16
- "harness_lsp_diagnostics",
17
- "harness_lsp_definition",
18
- "harness_lsp_references",
19
- ];
20
3
  const MANAGED_HARNESS_AGENT_NAMES = [
21
4
  HARNESS_PRIMARY_AGENT_NAME,
22
5
  HARNESS_INTAKE_AGENT_NAME,
@@ -34,115 +17,86 @@ const MANAGED_HARNESS_AGENT_NAMES = [
34
17
  HARNESS_FAILURE_ANALYZER_DISPLAY_NAME,
35
18
  HARNESS_REPAIR_WORKER_DISPLAY_NAME,
36
19
  ];
37
- const createReadOnlyAgent = (input) => ({
38
- mode: "all",
39
- hidden: true,
40
- model: input.model,
41
- description: input.description,
42
- prompt: input.prompt,
43
- tools: {
44
- task: false,
45
- edit: false,
46
- bash: false,
47
- write: false,
48
- patch: false,
49
- ...Object.fromEntries((input.researchTools ?? []).map((name) => [name, true])),
50
- },
51
- permission: { edit: "deny", bash: "deny" },
52
- });
53
- const createWorkerAgent = (model) => ({
54
- mode: "all",
55
- hidden: true,
56
- model,
57
- description: "Internal Harness Worker executor; the only Harness role allowed to modify code.",
58
- prompt: "你是 Harness Worker 子 Agent。仅在允许路径内实现任务,输出结构化结果,不要切换角色。",
59
- tools: {
60
- task: false,
61
- edit: true,
62
- bash: true,
63
- write: true,
64
- patch: true,
65
- ...Object.fromEntries(RESEARCH_TOOL_NAMES.map((name) => [name, true])),
66
- },
67
- permission: { edit: "allow", bash: "allow" },
20
+ const profileModel = (config, profileKey) => {
21
+ const profile = config[profileKey];
22
+ return `${profile.provider}/${profile.model}`;
23
+ };
24
+ const createManagedAgent = (input) => {
25
+ const capability = getHarnessAgentCapability(input.agentId);
26
+ return {
27
+ mode: capability.mode,
28
+ hidden: capability.hidden,
29
+ model: profileModel(input.harnessConfig, capability.profileKey),
30
+ description: capability.description,
31
+ prompt: buildCapabilityPrompt(capability),
32
+ tools: buildCapabilityToolConfig(capability),
33
+ permission: buildCapabilityPermission(capability),
34
+ };
35
+ };
36
+ const buildHarnessManagedAgents = (harnessConfig) => ({
37
+ [HARNESS_PRIMARY_AGENT_NAME]: createManagedAgent({
38
+ harnessConfig,
39
+ agentId: HARNESS_PRIMARY_AGENT_NAME,
40
+ }),
41
+ [HARNESS_INTAKE_AGENT_NAME]: createManagedAgent({
42
+ harnessConfig,
43
+ agentId: HARNESS_INTAKE_AGENT_NAME,
44
+ }),
45
+ [HARNESS_PLANNER_AGENT_NAME]: createManagedAgent({
46
+ harnessConfig,
47
+ agentId: HARNESS_PLANNER_AGENT_NAME,
48
+ }),
49
+ [HARNESS_WORKER_AGENT_NAME]: createManagedAgent({
50
+ harnessConfig,
51
+ agentId: HARNESS_WORKER_AGENT_NAME,
52
+ }),
53
+ [HARNESS_VERIFIER_AGENT_NAME]: createManagedAgent({
54
+ harnessConfig,
55
+ agentId: HARNESS_VERIFIER_AGENT_NAME,
56
+ }),
57
+ [HARNESS_ACCEPTANCE_AGENT_NAME]: createManagedAgent({
58
+ harnessConfig,
59
+ agentId: HARNESS_ACCEPTANCE_AGENT_NAME,
60
+ }),
61
+ [HARNESS_FAILURE_ANALYZER_AGENT_NAME]: createManagedAgent({
62
+ harnessConfig,
63
+ agentId: HARNESS_FAILURE_ANALYZER_AGENT_NAME,
64
+ }),
65
+ [HARNESS_REPAIR_WORKER_AGENT_NAME]: createManagedAgent({
66
+ harnessConfig,
67
+ agentId: HARNESS_REPAIR_WORKER_AGENT_NAME,
68
+ }),
68
69
  });
70
+ export const detectHarnessConfigConflicts = (config, harnessConfig) => {
71
+ const expected = buildHarnessManagedAgents(harnessConfig);
72
+ return Object.entries(config.agent ?? {}).flatMap(([name, agent]) => {
73
+ if (!MANAGED_HARNESS_AGENT_NAMES.includes(name) || agent === undefined)
74
+ return [];
75
+ const expectedAgent = expected[name];
76
+ if (expectedAgent !== undefined && JSON.stringify(agent) === JSON.stringify(expectedAgent)) {
77
+ return [];
78
+ }
79
+ return [
80
+ {
81
+ name,
82
+ summary: `Harness configuration conflict: 保留名称 ${name} 已被其他插件或配置占用`,
83
+ },
84
+ ];
85
+ });
86
+ };
69
87
  export const applyHarnessAgentConfig = (config, harnessConfig) => {
70
- const existingAgent = config.agent?.[HARNESS_PRIMARY_AGENT_NAME];
88
+ const conflicts = detectHarnessConfigConflicts(config, harnessConfig);
89
+ if (conflicts.length > 0) {
90
+ throw new Error(conflicts[0]?.summary ?? "Harness configuration conflict");
91
+ }
71
92
  const existingUnmanagedAgents = {};
72
93
  for (const [name, agent] of Object.entries(config.agent ?? {})) {
73
94
  if (!MANAGED_HARNESS_AGENT_NAMES.includes(name) && agent !== undefined) {
74
95
  existingUnmanagedAgents[name] = agent;
75
96
  }
76
97
  }
77
- const nextAgent = {
78
- ...existingAgent,
79
- mode: "primary",
80
- hidden: false,
81
- model: `${harnessConfig.harness.provider}/${harnessConfig.harness.model}`,
82
- description: HARNESS_AGENT_DESCRIPTION,
83
- prompt: HARNESS_AGENT_PROMPT,
84
- tools: {
85
- ...existingAgent?.tools,
86
- task: false,
87
- edit: false,
88
- bash: false,
89
- write: false,
90
- patch: false,
91
- ...Object.fromEntries(RESEARCH_TOOL_NAMES.map((name) => [name, false])),
92
- },
93
- permission: {
94
- ...existingAgent?.permission,
95
- edit: "deny",
96
- bash: "deny",
97
- },
98
- };
99
- const internalAgents = {
100
- [HARNESS_INTAKE_AGENT_NAME]: createReadOnlyAgent({
101
- model: `${harnessConfig.harness.provider}/${harnessConfig.harness.model}`,
102
- description: "Internal Harness Intake parser; never edits, executes, or delegates.",
103
- prompt: "你是 Harness Intake 子 Agent。只输出严格 HarnessIntent JSON,不要调用工具,不要输出 Markdown。",
104
- }),
105
- [HARNESS_PLANNER_AGENT_NAME]: createReadOnlyAgent({
106
- model: `${harnessConfig.planner.provider}/${harnessConfig.planner.model}`,
107
- description: "Internal Harness Planner; produces plans and never edits, executes, or delegates.",
108
- prompt: "你是 Harness Planner 子 Agent。只输出结构化计划,不要编辑文件,不要调用工具。",
109
- researchTools: RESEARCH_TOOL_NAMES,
110
- }),
111
- [HARNESS_WORKER_AGENT_NAME]: createWorkerAgent(`${harnessConfig.worker.provider}/${harnessConfig.worker.model}`),
112
- [HARNESS_VERIFIER_AGENT_NAME]: createReadOnlyAgent({
113
- model: `${harnessConfig.verifier.provider}/${harnessConfig.verifier.model}`,
114
- description: "Internal Harness Verifier; inspects evidence and never edits, executes, or delegates.",
115
- prompt: "你是 Harness Verifier 子 Agent。只基于任务与证据输出结构化结论,不要执行修改。",
116
- researchTools: RESEARCH_TOOL_NAMES,
117
- }),
118
- [HARNESS_ACCEPTANCE_AGENT_NAME]: createReadOnlyAgent({
119
- model: `${harnessConfig.acceptance.provider}/${harnessConfig.acceptance.model}`,
120
- description: "Internal Harness Acceptance reviewer; registered for final acceptance checks and never edits.",
121
- prompt: "你是 Harness Acceptance 子 Agent。只检查需求、任务和证据覆盖,只输出结构化 AcceptanceOutput JSON,不要调用工具。",
122
- researchTools: [
123
- "harness_grep_app_search",
124
- "harness_lsp_status",
125
- "harness_lsp_diagnostics",
126
- "harness_lsp_definition",
127
- "harness_lsp_references",
128
- ],
129
- }),
130
- [HARNESS_FAILURE_ANALYZER_AGENT_NAME]: createReadOnlyAgent({
131
- model: `${harnessConfig.failureAnalyzer.provider}/${harnessConfig.failureAnalyzer.model}`,
132
- description: "Internal Harness Failure Analyzer; classifies failures and never edits, executes, or delegates.",
133
- prompt: "你是 Harness Failure Analyzer 子 Agent。只根据失败证据分类根因并给出结构化 FailureAnalyzerOutput JSON。",
134
- researchTools: RESEARCH_TOOL_NAMES,
135
- }),
136
- [HARNESS_REPAIR_WORKER_AGENT_NAME]: createReadOnlyAgent({
137
- model: `${harnessConfig.worker.provider}/${harnessConfig.worker.model}`,
138
- description: "Internal Harness Repair Worker; proposes bounded repairs and never edits or executes directly.",
139
- prompt: "你是 Harness Repair Worker 子 Agent。只根据失败证据输出结构化修复建议,不要直接修改代码。",
140
- researchTools: RESEARCH_TOOL_NAMES,
141
- }),
142
- };
143
98
  config.agent = {
144
- [HARNESS_PRIMARY_AGENT_NAME]: nextAgent,
145
- ...internalAgents,
99
+ ...buildHarnessManagedAgents(harnessConfig),
146
100
  ...existingUnmanagedAgents,
147
101
  };
148
102
  };
@@ -1 +1 @@
1
- {"version":3,"file":"harness-agent-config.js","sourceRoot":"","sources":["../../src/plugin/harness-agent-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-agent-config.js","sourceRoot":"","sources":["../../src/plugin/harness-agent-config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"harness-chat-protocol.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-chat-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAE1E,eAAO,MAAM,6BAA6B,oCAAoC,CAAA;AAC9E,eAAO,MAAM,8BAA8B,qCAAqC,CAAA;AA4BhF,eAAO,MAAM,+BAA+B,GAAI,OAAO,MAAM,KAAG,MAM5D,CAAA;AAEJ,eAAO,MAAM,+BAA+B,GAAI,WAAW,0BAA0B,KAAG,MAQhF,CAAA;AAER,eAAO,MAAM,+BAA+B,GAAI,UAAU,0BAA0B,KAAG,MAMnF,CAAA;AAEJ,eAAO,MAAM,4BAA4B,GAAI,SAAS,MAAM,KAAG,MAM3D,CAAA"}
1
+ {"version":3,"file":"harness-chat-protocol.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-chat-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAA;AAE1E,eAAO,MAAM,6BAA6B,oCAAoC,CAAA;AAC9E,eAAO,MAAM,8BAA8B,qCAAqC,CAAA;AA4BhF,eAAO,MAAM,+BAA+B,GAAI,OAAO,MAAM,KAAG,MAM5D,CAAA;AAEJ,eAAO,MAAM,+BAA+B,GAAI,WAAW,0BAA0B,KAAG,MAQhF,CAAA;AAER,eAAO,MAAM,+BAA+B,GAAI,UAAU,0BAA0B,KAAG,MA8BtF,CAAA;AAED,eAAO,MAAM,4BAA4B,GAAI,SAAS,MAAM,KAAG,MAM3D,CAAA"}