harness-engineering-agent 0.1.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 (327) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +191 -0
  3. package/dist/config/config-defaults.d.ts +32 -0
  4. package/dist/config/config-defaults.d.ts.map +1 -0
  5. package/dist/config/config-defaults.js +32 -0
  6. package/dist/config/config-defaults.js.map +1 -0
  7. package/dist/config/config-errors.d.ts +7 -0
  8. package/dist/config/config-errors.d.ts.map +1 -0
  9. package/dist/config/config-errors.js +11 -0
  10. package/dist/config/config-errors.js.map +1 -0
  11. package/dist/config/config-file.d.ts +3 -0
  12. package/dist/config/config-file.d.ts.map +1 -0
  13. package/dist/config/config-file.js +31 -0
  14. package/dist/config/config-file.js.map +1 -0
  15. package/dist/config/config-merge.d.ts +8 -0
  16. package/dist/config/config-merge.d.ts.map +1 -0
  17. package/dist/config/config-merge.js +50 -0
  18. package/dist/config/config-merge.js.map +1 -0
  19. package/dist/config/config-schema.d.ts +135 -0
  20. package/dist/config/config-schema.d.ts.map +1 -0
  21. package/dist/config/config-schema.js +94 -0
  22. package/dist/config/config-schema.js.map +1 -0
  23. package/dist/config/config-types.d.ts +21 -0
  24. package/dist/config/config-types.d.ts.map +1 -0
  25. package/dist/config/config-types.js +2 -0
  26. package/dist/config/config-types.js.map +1 -0
  27. package/dist/config/harness-config.d.ts +6 -0
  28. package/dist/config/harness-config.d.ts.map +1 -0
  29. package/dist/config/harness-config.js +4 -0
  30. package/dist/config/harness-config.js.map +1 -0
  31. package/dist/config/index.d.ts +2 -0
  32. package/dist/config/index.d.ts.map +1 -0
  33. package/dist/config/index.js +2 -0
  34. package/dist/config/index.js.map +1 -0
  35. package/dist/config/load-harness-config.d.ts +9 -0
  36. package/dist/config/load-harness-config.d.ts.map +1 -0
  37. package/dist/config/load-harness-config.js +25 -0
  38. package/dist/config/load-harness-config.js.map +1 -0
  39. package/dist/controller/agent-output.d.ts +21 -0
  40. package/dist/controller/agent-output.d.ts.map +1 -0
  41. package/dist/controller/agent-output.js +75 -0
  42. package/dist/controller/agent-output.js.map +1 -0
  43. package/dist/controller/agent-session.d.ts +49 -0
  44. package/dist/controller/agent-session.d.ts.map +1 -0
  45. package/dist/controller/agent-session.js +220 -0
  46. package/dist/controller/agent-session.js.map +1 -0
  47. package/dist/controller/contracts.d.ts +65 -0
  48. package/dist/controller/contracts.d.ts.map +1 -0
  49. package/dist/controller/contracts.js +2 -0
  50. package/dist/controller/contracts.js.map +1 -0
  51. package/dist/controller/errors.d.ts +23 -0
  52. package/dist/controller/errors.d.ts.map +1 -0
  53. package/dist/controller/errors.js +37 -0
  54. package/dist/controller/errors.js.map +1 -0
  55. package/dist/controller/evidence-factory.d.ts +15 -0
  56. package/dist/controller/evidence-factory.d.ts.map +1 -0
  57. package/dist/controller/evidence-factory.js +38 -0
  58. package/dist/controller/evidence-factory.js.map +1 -0
  59. package/dist/controller/failure-analysis.d.ts +36 -0
  60. package/dist/controller/failure-analysis.d.ts.map +1 -0
  61. package/dist/controller/failure-analysis.js +175 -0
  62. package/dist/controller/failure-analysis.js.map +1 -0
  63. package/dist/controller/failure-factory.d.ts +85 -0
  64. package/dist/controller/failure-factory.d.ts.map +1 -0
  65. package/dist/controller/failure-factory.js +124 -0
  66. package/dist/controller/failure-factory.js.map +1 -0
  67. package/dist/controller/graph-validator.d.ts +4 -0
  68. package/dist/controller/graph-validator.d.ts.map +1 -0
  69. package/dist/controller/graph-validator.js +102 -0
  70. package/dist/controller/graph-validator.js.map +1 -0
  71. package/dist/controller/index.d.ts +15 -0
  72. package/dist/controller/index.d.ts.map +1 -0
  73. package/dist/controller/index.js +11 -0
  74. package/dist/controller/index.js.map +1 -0
  75. package/dist/controller/repair-loop.d.ts +42 -0
  76. package/dist/controller/repair-loop.d.ts.map +1 -0
  77. package/dist/controller/repair-loop.js +385 -0
  78. package/dist/controller/repair-loop.js.map +1 -0
  79. package/dist/controller/report-factory.d.ts +4 -0
  80. package/dist/controller/report-factory.d.ts.map +1 -0
  81. package/dist/controller/report-factory.js +107 -0
  82. package/dist/controller/report-factory.js.map +1 -0
  83. package/dist/controller/role-prompts.d.ts +8 -0
  84. package/dist/controller/role-prompts.d.ts.map +1 -0
  85. package/dist/controller/role-prompts.js +35 -0
  86. package/dist/controller/role-prompts.js.map +1 -0
  87. package/dist/controller/run-controller.d.ts +3 -0
  88. package/dist/controller/run-controller.d.ts.map +1 -0
  89. package/dist/controller/run-controller.js +291 -0
  90. package/dist/controller/run-controller.js.map +1 -0
  91. package/dist/controller/run-persistence.d.ts +15 -0
  92. package/dist/controller/run-persistence.d.ts.map +1 -0
  93. package/dist/controller/run-persistence.js +83 -0
  94. package/dist/controller/run-persistence.js.map +1 -0
  95. package/dist/controller/run-state.d.ts +61 -0
  96. package/dist/controller/run-state.d.ts.map +1 -0
  97. package/dist/controller/run-state.js +151 -0
  98. package/dist/controller/run-state.js.map +1 -0
  99. package/dist/controller/task-agent-output.d.ts +70 -0
  100. package/dist/controller/task-agent-output.d.ts.map +1 -0
  101. package/dist/controller/task-agent-output.js +256 -0
  102. package/dist/controller/task-agent-output.js.map +1 -0
  103. package/dist/controller/task-agent-schemas.d.ts +217 -0
  104. package/dist/controller/task-agent-schemas.d.ts.map +1 -0
  105. package/dist/controller/task-agent-schemas.js +171 -0
  106. package/dist/controller/task-agent-schemas.js.map +1 -0
  107. package/dist/controller/task-executor.d.ts +15 -0
  108. package/dist/controller/task-executor.d.ts.map +1 -0
  109. package/dist/controller/task-executor.js +751 -0
  110. package/dist/controller/task-executor.js.map +1 -0
  111. package/dist/controller/task-paths.d.ts +3 -0
  112. package/dist/controller/task-paths.d.ts.map +1 -0
  113. package/dist/controller/task-paths.js +20 -0
  114. package/dist/controller/task-paths.js.map +1 -0
  115. package/dist/controller/task-retry.d.ts +24 -0
  116. package/dist/controller/task-retry.d.ts.map +1 -0
  117. package/dist/controller/task-retry.js +42 -0
  118. package/dist/controller/task-retry.js.map +1 -0
  119. package/dist/controller/worktree-eligibility.d.ts +15 -0
  120. package/dist/controller/worktree-eligibility.d.ts.map +1 -0
  121. package/dist/controller/worktree-eligibility.js +38 -0
  122. package/dist/controller/worktree-eligibility.js.map +1 -0
  123. package/dist/controller/worktree-scheduler.d.ts +72 -0
  124. package/dist/controller/worktree-scheduler.d.ts.map +1 -0
  125. package/dist/controller/worktree-scheduler.js +142 -0
  126. package/dist/controller/worktree-scheduler.js.map +1 -0
  127. package/dist/domain/agent-result.d.ts +83 -0
  128. package/dist/domain/agent-result.d.ts.map +1 -0
  129. package/dist/domain/agent-result.js +44 -0
  130. package/dist/domain/agent-result.js.map +1 -0
  131. package/dist/domain/evidence.d.ts +97 -0
  132. package/dist/domain/evidence.d.ts.map +1 -0
  133. package/dist/domain/evidence.js +85 -0
  134. package/dist/domain/evidence.js.map +1 -0
  135. package/dist/domain/failure.d.ts +121 -0
  136. package/dist/domain/failure.d.ts.map +1 -0
  137. package/dist/domain/failure.js +72 -0
  138. package/dist/domain/failure.js.map +1 -0
  139. package/dist/domain/index.d.ts +19 -0
  140. package/dist/domain/index.d.ts.map +1 -0
  141. package/dist/domain/index.js +10 -0
  142. package/dist/domain/index.js.map +1 -0
  143. package/dist/domain/report.d.ts +904 -0
  144. package/dist/domain/report.d.ts.map +1 -0
  145. package/dist/domain/report.js +90 -0
  146. package/dist/domain/report.js.map +1 -0
  147. package/dist/domain/requirement.d.ts +10 -0
  148. package/dist/domain/requirement.d.ts.map +1 -0
  149. package/dist/domain/requirement.js +12 -0
  150. package/dist/domain/requirement.js.map +1 -0
  151. package/dist/domain/run.d.ts +857 -0
  152. package/dist/domain/run.d.ts.map +1 -0
  153. package/dist/domain/run.js +129 -0
  154. package/dist/domain/run.js.map +1 -0
  155. package/dist/domain/shared.d.ts +60 -0
  156. package/dist/domain/shared.d.ts.map +1 -0
  157. package/dist/domain/shared.js +66 -0
  158. package/dist/domain/shared.js.map +1 -0
  159. package/dist/domain/task.d.ts +316 -0
  160. package/dist/domain/task.d.ts.map +1 -0
  161. package/dist/domain/task.js +116 -0
  162. package/dist/domain/task.js.map +1 -0
  163. package/dist/index.d.ts +15 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +15 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/path/workspace-path.d.ts +6 -0
  168. package/dist/path/workspace-path.d.ts.map +1 -0
  169. package/dist/path/workspace-path.js +36 -0
  170. package/dist/path/workspace-path.js.map +1 -0
  171. package/dist/plugin/create-harness-plugin.d.ts +40 -0
  172. package/dist/plugin/create-harness-plugin.d.ts.map +1 -0
  173. package/dist/plugin/create-harness-plugin.js +169 -0
  174. package/dist/plugin/create-harness-plugin.js.map +1 -0
  175. package/dist/plugin/harness-agent-config.d.ts +6 -0
  176. package/dist/plugin/harness-agent-config.d.ts.map +1 -0
  177. package/dist/plugin/harness-agent-config.js +130 -0
  178. package/dist/plugin/harness-agent-config.js.map +1 -0
  179. package/dist/plugin/harness-chat-hook.d.ts +27 -0
  180. package/dist/plugin/harness-chat-hook.d.ts.map +1 -0
  181. package/dist/plugin/harness-chat-hook.js +72 -0
  182. package/dist/plugin/harness-chat-hook.js.map +1 -0
  183. package/dist/plugin/harness-chat-parts.d.ts +10 -0
  184. package/dist/plugin/harness-chat-parts.d.ts.map +1 -0
  185. package/dist/plugin/harness-chat-parts.js +36 -0
  186. package/dist/plugin/harness-chat-parts.js.map +1 -0
  187. package/dist/plugin/harness-chat-protocol.d.ts +9 -0
  188. package/dist/plugin/harness-chat-protocol.d.ts.map +1 -0
  189. package/dist/plugin/harness-chat-protocol.js +23 -0
  190. package/dist/plugin/harness-chat-protocol.js.map +1 -0
  191. package/dist/plugin/harness-coordinator.d.ts +33 -0
  192. package/dist/plugin/harness-coordinator.d.ts.map +1 -0
  193. package/dist/plugin/harness-coordinator.js +188 -0
  194. package/dist/plugin/harness-coordinator.js.map +1 -0
  195. package/dist/plugin/harness-intake-prompt.d.ts +2 -0
  196. package/dist/plugin/harness-intake-prompt.d.ts.map +1 -0
  197. package/dist/plugin/harness-intake-prompt.js +52 -0
  198. package/dist/plugin/harness-intake-prompt.js.map +1 -0
  199. package/dist/plugin/harness-intent.d.ts +72 -0
  200. package/dist/plugin/harness-intent.d.ts.map +1 -0
  201. package/dist/plugin/harness-intent.js +82 -0
  202. package/dist/plugin/harness-intent.js.map +1 -0
  203. package/dist/plugin/harness-parent-session-dispatcher.d.ts +46 -0
  204. package/dist/plugin/harness-parent-session-dispatcher.d.ts.map +1 -0
  205. package/dist/plugin/harness-parent-session-dispatcher.js +33 -0
  206. package/dist/plugin/harness-parent-session-dispatcher.js.map +1 -0
  207. package/dist/plugin/harness-requirement.d.ts +4 -0
  208. package/dist/plugin/harness-requirement.d.ts.map +1 -0
  209. package/dist/plugin/harness-requirement.js +37 -0
  210. package/dist/plugin/harness-requirement.js.map +1 -0
  211. package/dist/session/contracts.d.ts +178 -0
  212. package/dist/session/contracts.d.ts.map +1 -0
  213. package/dist/session/contracts.js +28 -0
  214. package/dist/session/contracts.js.map +1 -0
  215. package/dist/session/fake-session-adapter.d.ts +22 -0
  216. package/dist/session/fake-session-adapter.d.ts.map +1 -0
  217. package/dist/session/fake-session-adapter.js +238 -0
  218. package/dist/session/fake-session-adapter.js.map +1 -0
  219. package/dist/session/fake-session-errors.d.ts +23 -0
  220. package/dist/session/fake-session-errors.d.ts.map +1 -0
  221. package/dist/session/fake-session-errors.js +37 -0
  222. package/dist/session/fake-session-errors.js.map +1 -0
  223. package/dist/session/harness-agent-names.d.ts +51 -0
  224. package/dist/session/harness-agent-names.d.ts.map +1 -0
  225. package/dist/session/harness-agent-names.js +98 -0
  226. package/dist/session/harness-agent-names.js.map +1 -0
  227. package/dist/session/index.d.ts +9 -0
  228. package/dist/session/index.d.ts.map +1 -0
  229. package/dist/session/index.js +9 -0
  230. package/dist/session/index.js.map +1 -0
  231. package/dist/session/opencode-session-adapter.d.ts +9 -0
  232. package/dist/session/opencode-session-adapter.d.ts.map +1 -0
  233. package/dist/session/opencode-session-adapter.js +243 -0
  234. package/dist/session/opencode-session-adapter.js.map +1 -0
  235. package/dist/session/opencode-session-client.d.ts +58 -0
  236. package/dist/session/opencode-session-client.d.ts.map +1 -0
  237. package/dist/session/opencode-session-client.js +17 -0
  238. package/dist/session/opencode-session-client.js.map +1 -0
  239. package/dist/session/opencode-session-errors.d.ts +15 -0
  240. package/dist/session/opencode-session-errors.d.ts.map +1 -0
  241. package/dist/session/opencode-session-errors.js +19 -0
  242. package/dist/session/opencode-session-errors.js.map +1 -0
  243. package/dist/session/opencode-session-prompts.d.ts +12 -0
  244. package/dist/session/opencode-session-prompts.d.ts.map +1 -0
  245. package/dist/session/opencode-session-prompts.js +16 -0
  246. package/dist/session/opencode-session-prompts.js.map +1 -0
  247. package/dist/store/filesystem-run-store-io.d.ts +9 -0
  248. package/dist/store/filesystem-run-store-io.d.ts.map +1 -0
  249. package/dist/store/filesystem-run-store-io.js +85 -0
  250. package/dist/store/filesystem-run-store-io.js.map +1 -0
  251. package/dist/store/filesystem-run-store.d.ts +16 -0
  252. package/dist/store/filesystem-run-store.d.ts.map +1 -0
  253. package/dist/store/filesystem-run-store.js +286 -0
  254. package/dist/store/filesystem-run-store.js.map +1 -0
  255. package/dist/store/index.d.ts +5 -0
  256. package/dist/store/index.d.ts.map +1 -0
  257. package/dist/store/index.js +4 -0
  258. package/dist/store/index.js.map +1 -0
  259. package/dist/store/run-event.d.ts +786 -0
  260. package/dist/store/run-event.d.ts.map +1 -0
  261. package/dist/store/run-event.js +24 -0
  262. package/dist/store/run-event.js.map +1 -0
  263. package/dist/store/run-store-errors.d.ts +38 -0
  264. package/dist/store/run-store-errors.d.ts.map +1 -0
  265. package/dist/store/run-store-errors.js +62 -0
  266. package/dist/store/run-store-errors.js.map +1 -0
  267. package/dist/tools/context7-client.d.ts +22 -0
  268. package/dist/tools/context7-client.d.ts.map +1 -0
  269. package/dist/tools/context7-client.js +108 -0
  270. package/dist/tools/context7-client.js.map +1 -0
  271. package/dist/tools/grep-app-client.d.ts +21 -0
  272. package/dist/tools/grep-app-client.d.ts.map +1 -0
  273. package/dist/tools/grep-app-client.js +136 -0
  274. package/dist/tools/grep-app-client.js.map +1 -0
  275. package/dist/tools/harness-research-tools.d.ts +21 -0
  276. package/dist/tools/harness-research-tools.d.ts.map +1 -0
  277. package/dist/tools/harness-research-tools.js +101 -0
  278. package/dist/tools/harness-research-tools.js.map +1 -0
  279. package/dist/tools/lsp-client.d.ts +32 -0
  280. package/dist/tools/lsp-client.d.ts.map +1 -0
  281. package/dist/tools/lsp-client.js +234 -0
  282. package/dist/tools/lsp-client.js.map +1 -0
  283. package/dist/tools/lsp-json-rpc.d.ts +13 -0
  284. package/dist/tools/lsp-json-rpc.d.ts.map +1 -0
  285. package/dist/tools/lsp-json-rpc.js +98 -0
  286. package/dist/tools/lsp-json-rpc.js.map +1 -0
  287. package/dist/verification/command-policy.d.ts +11 -0
  288. package/dist/verification/command-policy.d.ts.map +1 -0
  289. package/dist/verification/command-policy.js +262 -0
  290. package/dist/verification/command-policy.js.map +1 -0
  291. package/dist/verification/contracts.d.ts +82 -0
  292. package/dist/verification/contracts.d.ts.map +1 -0
  293. package/dist/verification/contracts.js +6 -0
  294. package/dist/verification/contracts.js.map +1 -0
  295. package/dist/verification/fake-process-runner.d.ts +16 -0
  296. package/dist/verification/fake-process-runner.d.ts.map +1 -0
  297. package/dist/verification/fake-process-runner.js +28 -0
  298. package/dist/verification/fake-process-runner.js.map +1 -0
  299. package/dist/verification/index.d.ts +6 -0
  300. package/dist/verification/index.d.ts.map +1 -0
  301. package/dist/verification/index.js +5 -0
  302. package/dist/verification/index.js.map +1 -0
  303. package/dist/verification/node-process-runner.d.ts +12 -0
  304. package/dist/verification/node-process-runner.d.ts.map +1 -0
  305. package/dist/verification/node-process-runner.js +103 -0
  306. package/dist/verification/node-process-runner.js.map +1 -0
  307. package/dist/verification/verification-runner.d.ts +3 -0
  308. package/dist/verification/verification-runner.d.ts.map +1 -0
  309. package/dist/verification/verification-runner.js +101 -0
  310. package/dist/verification/verification-runner.js.map +1 -0
  311. package/dist/workspace/git-baseline.d.ts +63 -0
  312. package/dist/workspace/git-baseline.d.ts.map +1 -0
  313. package/dist/workspace/git-baseline.js +53 -0
  314. package/dist/workspace/git-baseline.js.map +1 -0
  315. package/dist/workspace/git-workspace-adapter.d.ts +43 -0
  316. package/dist/workspace/git-workspace-adapter.d.ts.map +1 -0
  317. package/dist/workspace/git-workspace-adapter.js +279 -0
  318. package/dist/workspace/git-workspace-adapter.js.map +1 -0
  319. package/dist/workspace/git-worktree-adapter.d.ts +45 -0
  320. package/dist/workspace/git-worktree-adapter.d.ts.map +1 -0
  321. package/dist/workspace/git-worktree-adapter.js +104 -0
  322. package/dist/workspace/git-worktree-adapter.js.map +1 -0
  323. package/dist/workspace/index.d.ts +7 -0
  324. package/dist/workspace/index.d.ts.map +1 -0
  325. package/dist/workspace/index.js +4 -0
  326. package/dist/workspace/index.js.map +1 -0
  327. package/package.json +45 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-intent.js","sourceRoot":"","sources":["../../src/plugin/harness-intent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { OpencodeClient } from "@opencode-ai/sdk";
2
+ import type { HarnessConfig } from "../config/index.js";
3
+ export type ParentPromptAsyncRequest = {
4
+ readonly path: {
5
+ readonly id: string;
6
+ };
7
+ readonly query: {
8
+ readonly directory: string;
9
+ };
10
+ readonly body: {
11
+ readonly agent: "harness";
12
+ readonly model: {
13
+ readonly providerID: string;
14
+ readonly modelID: string;
15
+ };
16
+ readonly parts: ParentTextPartInput[];
17
+ };
18
+ readonly throwOnError: true;
19
+ };
20
+ type ParentTextPartInput = {
21
+ readonly type: "text";
22
+ readonly text: string;
23
+ readonly synthetic: true;
24
+ readonly metadata: {
25
+ readonly source: "harness";
26
+ };
27
+ };
28
+ export type ParentSessionPromptDispatcher = {
29
+ readonly dispatchInternalCompletion: (input: {
30
+ readonly sessionID: string;
31
+ readonly directory: string;
32
+ readonly text: string;
33
+ }) => Promise<void>;
34
+ };
35
+ type ParentSessionClient = {
36
+ readonly session: {
37
+ readonly promptAsync: (input: ParentPromptAsyncRequest) => Promise<unknown>;
38
+ };
39
+ };
40
+ export declare const createParentSessionPromptDispatcher: (input: {
41
+ readonly client: ParentSessionClient;
42
+ readonly config: HarnessConfig;
43
+ }) => ParentSessionPromptDispatcher;
44
+ export declare const asParentSessionClient: (client: OpencodeClient) => ParentSessionClient;
45
+ export {};
46
+ //# sourceMappingURL=harness-parent-session-dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-parent-session-dispatcher.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-parent-session-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACtC,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;QACzB,QAAQ,CAAC,KAAK,EAAE;YACd,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;YAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;SACzB,CAAA;QACD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,CAAA;KACtC,CAAA;IACD,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAA;CAC5B,CAAA;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAA;KAC3B,CAAA;CACF,CAAA;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,CAAC,0BAA0B,EAAE,CAAC,KAAK,EAAE;QAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KACtB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpB,CAAA;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC5E,CAAA;CACF,CAAA;AAED,eAAO,MAAM,mCAAmC,GAAI,OAAO;IACzD,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAC/B,KAAG,6BAkBH,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,QAAQ,cAAc,KAAG,mBAI7D,CAAA"}
@@ -0,0 +1,33 @@
1
+ export const createParentSessionPromptDispatcher = (input) => {
2
+ return {
3
+ dispatchInternalCompletion: async ({ directory, sessionID, text }) => {
4
+ await input.client.session.promptAsync({
5
+ path: { id: sessionID },
6
+ query: { directory },
7
+ body: {
8
+ agent: "harness",
9
+ model: {
10
+ providerID: input.config.harness.provider,
11
+ modelID: input.config.harness.model,
12
+ },
13
+ parts: [createSyntheticTextPart(text)],
14
+ },
15
+ throwOnError: true,
16
+ });
17
+ },
18
+ };
19
+ };
20
+ export const asParentSessionClient = (client) => ({
21
+ session: {
22
+ promptAsync: (request) => client.session.promptAsync(request),
23
+ },
24
+ });
25
+ const createSyntheticTextPart = (text) => ({
26
+ type: "text",
27
+ text,
28
+ synthetic: true,
29
+ metadata: {
30
+ source: "harness",
31
+ },
32
+ });
33
+ //# sourceMappingURL=harness-parent-session-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-parent-session-dispatcher.js","sourceRoot":"","sources":["../../src/plugin/harness-parent-session-dispatcher.ts"],"names":[],"mappings":"AAyCA,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,KAGnD,EAAiC,EAAE;IAClC,OAAO;QACL,0BAA0B,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;YACnE,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;gBACrC,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;gBACvB,KAAK,EAAE,EAAE,SAAS,EAAE;gBACpB,IAAI,EAAE;oBACJ,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE;wBACL,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ;wBACzC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;qBACpC;oBACD,KAAK,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;iBACvC;gBACD,YAAY,EAAE,IAAI;aACnB,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAsB,EAAuB,EAAE,CAAC,CAAC;IACrF,OAAO,EAAE;QACP,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC9D;CACF,CAAC,CAAA;AAEF,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAuB,EAAE,CAAC,CAAC;IACtE,IAAI,EAAE,MAAM;IACZ,IAAI;IACJ,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE;QACR,MAAM,EAAE,SAAS;KAClB;CACF,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { RequirementInput } from "../controller/index.js";
2
+ import type { HarnessStartIntent } from "./harness-intent.js";
3
+ export declare const toRequirementInput: (intent: HarnessStartIntent) => RequirementInput;
4
+ //# sourceMappingURL=harness-requirement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-requirement.d.ts","sourceRoot":"","sources":["../../src/plugin/harness-requirement.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,qBAAqB,CAAA;AAEhF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,kBAAkB,KAAG,gBAe/D,CAAA"}
@@ -0,0 +1,37 @@
1
+ import { createHash } from "node:crypto";
2
+ import { RequirementSchema } from "../domain/index.js";
3
+ export const toRequirementInput = (intent) => {
4
+ const requirement = RequirementSchema.parse({
5
+ schemaVersion: "1.0.0",
6
+ requirementId: intent.requirement.requirementId ?? createRequirementId(intent.requirement),
7
+ title: intent.requirement.title,
8
+ summary: intent.requirement.summary,
9
+ acceptanceCriteria: intent.requirement.acceptanceCriteria,
10
+ });
11
+ return {
12
+ requirementId: requirement.requirementId,
13
+ title: requirement.title,
14
+ summary: requirement.summary,
15
+ acceptanceCriteria: requirement.acceptanceCriteria,
16
+ };
17
+ };
18
+ const createRequirementId = (requirement) => {
19
+ const hash = createHash("sha256")
20
+ .update(requirement.title)
21
+ .update("\n")
22
+ .update(requirement.summary)
23
+ .update("\n")
24
+ .update(requirement.acceptanceCriteria.join("\n"))
25
+ .digest("hex")
26
+ .slice(0, 10);
27
+ return `req-${normalizeLabel(requirement.title)}-${hash}`;
28
+ };
29
+ const normalizeLabel = (label) => {
30
+ const normalized = label
31
+ .toLowerCase()
32
+ .trim()
33
+ .replace(/[^a-z0-9]+/g, "-")
34
+ .replace(/^-|-$/g, "");
35
+ return normalized.length > 0 ? normalized.slice(0, 30) : "harness";
36
+ };
37
+ //# sourceMappingURL=harness-requirement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-requirement.js","sourceRoot":"","sources":["../../src/plugin/harness-requirement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAGtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAA0B,EAAoB,EAAE;IACjF,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC;QAC1C,aAAa,EAAE,OAAO;QACtB,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,IAAI,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC;QAC1F,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;QAC/B,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO;QACnC,kBAAkB,EAAE,MAAM,CAAC,WAAW,CAAC,kBAAkB;KAC1D,CAAC,CAAA;IAEF,OAAO;QACL,aAAa,EAAE,WAAW,CAAC,aAAa;QACxC,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;KACnD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,WAA8B,EAAU,EAAE;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;SACzB,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;SAC3B,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjD,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEf,OAAO,OAAO,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;AAC3D,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,KAAa,EAAU,EAAE;IAC/C,MAAM,UAAU,GAAG,KAAK;SACrB,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IAExB,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC,CAAA"}
@@ -0,0 +1,178 @@
1
+ export declare const HARNESS_SESSION_ROLE: {
2
+ readonly intake: "intake";
3
+ readonly planner: "planner";
4
+ readonly worker: "worker";
5
+ readonly verifier: "verifier";
6
+ readonly acceptance: "acceptance";
7
+ readonly failureAnalyzer: "failure-analyzer";
8
+ readonly repairWorker: "repair-worker";
9
+ };
10
+ export type HarnessSessionRole = (typeof HARNESS_SESSION_ROLE)[keyof typeof HARNESS_SESSION_ROLE];
11
+ export declare const HARNESS_ROLE_DISPLAY_NAME: {
12
+ readonly intake: "Nuwa";
13
+ readonly planner: "Fuxi";
14
+ readonly worker: "Luban";
15
+ readonly verifier: "Zhulong";
16
+ readonly acceptance: "Yinglong";
17
+ readonly "failure-analyzer": "Xingtian";
18
+ readonly "repair-worker": "Jingwei";
19
+ };
20
+ export declare const HARNESS_SESSION_STATE: {
21
+ readonly ready: "ready";
22
+ readonly active: "active";
23
+ readonly completed: "completed";
24
+ readonly failed: "failed";
25
+ readonly aborted: "aborted";
26
+ readonly timedOut: "timed-out";
27
+ readonly released: "released";
28
+ };
29
+ export type HarnessSessionState = (typeof HARNESS_SESSION_STATE)[keyof typeof HARNESS_SESSION_STATE];
30
+ export type HarnessAgentId = "harness" | "harness-intake" | "harness-planner" | "harness-worker" | "harness-repair-worker" | "harness-verifier" | "harness-acceptance" | "harness-failure-analyzer";
31
+ export type HarnessSessionReference = HarnessSessionRole | HarnessAgentId;
32
+ export type SessionOutputContract = {
33
+ readonly schemaVersion: "1.0.0";
34
+ readonly type: string;
35
+ readonly requiredFields: readonly string[];
36
+ };
37
+ export type SessionEvidenceReference = {
38
+ readonly refId: string;
39
+ readonly kind: "evidence" | "failure" | "artifact" | "verification";
40
+ readonly summary: string;
41
+ };
42
+ export type SessionPromptInput = {
43
+ readonly brief: string;
44
+ readonly constraints: readonly string[];
45
+ readonly evidence: readonly SessionEvidenceReference[];
46
+ readonly outputContract: SessionOutputContract;
47
+ };
48
+ export type SessionTimeout = {
49
+ readonly startedAt: number;
50
+ readonly timeoutMs: number;
51
+ };
52
+ export type SessionDescriptor = {
53
+ readonly sessionId: string;
54
+ readonly role: HarnessSessionRole;
55
+ readonly agentName: HarnessAgentId;
56
+ readonly displayName: string;
57
+ readonly title: string;
58
+ readonly workingDirectory: string;
59
+ readonly parentSessionId?: string;
60
+ };
61
+ export type CreateSessionRequest = {
62
+ readonly role: HarnessSessionRole;
63
+ readonly title: string;
64
+ readonly workingDirectory: string;
65
+ readonly parentSessionId?: string;
66
+ readonly promptInput?: SessionPromptInput;
67
+ readonly timeoutMs?: number;
68
+ };
69
+ export type CreateSessionResult = {
70
+ readonly session: SessionDescriptor;
71
+ };
72
+ export type SendSessionRequest = {
73
+ readonly sessionId: string;
74
+ readonly messageId: string;
75
+ readonly prompt: string;
76
+ readonly promptInput?: SessionPromptInput;
77
+ readonly systemPrompt?: string;
78
+ readonly abortSignal?: AbortSignal;
79
+ };
80
+ export type AbortSessionRequest = {
81
+ readonly sessionId: string;
82
+ readonly reason: string;
83
+ };
84
+ export type AbortSessionResult = {
85
+ readonly sessionId: string;
86
+ readonly messageId?: string;
87
+ readonly reason: string;
88
+ readonly aborted: boolean;
89
+ };
90
+ export type ReleaseSessionRequest = {
91
+ readonly sessionId: string;
92
+ readonly reason: string;
93
+ };
94
+ export type ReleaseSessionResult = {
95
+ readonly sessionId: string;
96
+ readonly released: boolean;
97
+ readonly reason: string;
98
+ };
99
+ export type SessionSnapshot = {
100
+ readonly sessionId: string;
101
+ readonly role: HarnessSessionRole;
102
+ readonly state: HarnessSessionState;
103
+ readonly agentName: HarnessAgentId;
104
+ readonly displayName: string;
105
+ readonly parentSessionId?: string;
106
+ readonly timeout?: SessionTimeout;
107
+ readonly promptInput?: SessionPromptInput;
108
+ };
109
+ export type SessionRunError = {
110
+ readonly kind: "api";
111
+ readonly message: string;
112
+ readonly retryable: boolean;
113
+ } | {
114
+ readonly kind: "aborted";
115
+ readonly message: string;
116
+ } | {
117
+ readonly kind: "unknown";
118
+ readonly message: string;
119
+ };
120
+ export type SessionEvent = {
121
+ readonly kind: "run.started";
122
+ readonly role: HarnessSessionRole;
123
+ readonly sessionId: string;
124
+ readonly messageId: string;
125
+ } | {
126
+ readonly kind: "output.text.delta";
127
+ readonly role: HarnessSessionRole;
128
+ readonly sessionId: string;
129
+ readonly messageId: string;
130
+ readonly textDelta: string;
131
+ } | {
132
+ readonly kind: "run.completed";
133
+ readonly role: HarnessSessionRole;
134
+ readonly sessionId: string;
135
+ readonly messageId: string;
136
+ readonly finishReason: string;
137
+ } | {
138
+ readonly kind: "run.failed";
139
+ readonly role: HarnessSessionRole;
140
+ readonly sessionId: string;
141
+ readonly messageId: string;
142
+ readonly error: SessionRunError;
143
+ } | {
144
+ readonly kind: "run.aborted";
145
+ readonly role: HarnessSessionRole;
146
+ readonly sessionId: string;
147
+ readonly messageId: string;
148
+ readonly reason: string;
149
+ };
150
+ type SessionRunBase = {
151
+ readonly role: HarnessSessionRole;
152
+ readonly sessionId: string;
153
+ readonly messageId: string;
154
+ readonly events: readonly SessionEvent[];
155
+ };
156
+ export type SessionRunCompleted = SessionRunBase & {
157
+ readonly kind: "completed";
158
+ readonly outputText: string;
159
+ readonly finishReason: string;
160
+ };
161
+ export type SessionRunFailed = SessionRunBase & {
162
+ readonly kind: "failed";
163
+ readonly error: SessionRunError;
164
+ };
165
+ export type SessionRunAborted = SessionRunBase & {
166
+ readonly kind: "aborted";
167
+ readonly reason: string;
168
+ };
169
+ export type SessionRunResult = SessionRunCompleted | SessionRunFailed | SessionRunAborted;
170
+ export interface SessionAdapter {
171
+ create(request: CreateSessionRequest): Promise<CreateSessionResult>;
172
+ send(request: SendSessionRequest): Promise<SessionRunResult>;
173
+ abort(request: AbortSessionRequest): Promise<AbortSessionResult>;
174
+ release(request: ReleaseSessionRequest): Promise<ReleaseSessionResult>;
175
+ getSession(sessionId: string): SessionSnapshot | undefined;
176
+ }
177
+ export {};
178
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/session/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export const HARNESS_SESSION_ROLE = {
2
+ intake: "intake",
3
+ planner: "planner",
4
+ worker: "worker",
5
+ verifier: "verifier",
6
+ acceptance: "acceptance",
7
+ failureAnalyzer: "failure-analyzer",
8
+ repairWorker: "repair-worker",
9
+ };
10
+ export const HARNESS_ROLE_DISPLAY_NAME = {
11
+ [HARNESS_SESSION_ROLE.intake]: "Nuwa",
12
+ [HARNESS_SESSION_ROLE.planner]: "Fuxi",
13
+ [HARNESS_SESSION_ROLE.worker]: "Luban",
14
+ [HARNESS_SESSION_ROLE.verifier]: "Zhulong",
15
+ [HARNESS_SESSION_ROLE.acceptance]: "Yinglong",
16
+ [HARNESS_SESSION_ROLE.failureAnalyzer]: "Xingtian",
17
+ [HARNESS_SESSION_ROLE.repairWorker]: "Jingwei",
18
+ };
19
+ export const HARNESS_SESSION_STATE = {
20
+ ready: "ready",
21
+ active: "active",
22
+ completed: "completed",
23
+ failed: "failed",
24
+ aborted: "aborted",
25
+ timedOut: "timed-out",
26
+ released: "released",
27
+ };
28
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/session/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;CACrB,CAAA;AAIV,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM;IACrC,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,MAAM;IACtC,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,OAAO;IACtC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,SAAS;IAC1C,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,UAAU;IAC7C,CAAC,oBAAoB,CAAC,eAAe,CAAC,EAAE,UAAU;IAClD,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,SAAS;CACO,CAAA;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,UAAU;CACZ,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { type CreateSessionRequest, type SendSessionRequest, type SessionAdapter, type SessionRunError } from "./contracts.js";
2
+ type FakeScript = {
3
+ readonly kind: "complete";
4
+ readonly outputDeltas: readonly string[];
5
+ readonly finishReason: string;
6
+ } | {
7
+ readonly kind: "fail";
8
+ readonly outputDeltas: readonly string[];
9
+ readonly error: SessionRunError;
10
+ } | {
11
+ readonly kind: "await-abort";
12
+ readonly outputDeltas: readonly string[];
13
+ };
14
+ type CreateFakeSessionAdapterOptions = {
15
+ readonly scripts: readonly FakeScript[];
16
+ readonly maxScripts?: number;
17
+ readonly onCreate?: (request: CreateSessionRequest) => void;
18
+ readonly onSend?: (request: SendSessionRequest) => void;
19
+ };
20
+ export declare const createFakeSessionAdapter: (options: CreateFakeSessionAdapterOptions) => SessionAdapter;
21
+ export type { CreateFakeSessionAdapterOptions, FakeScript };
22
+ //# sourceMappingURL=fake-session-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-session-adapter.d.ts","sourceRoot":"","sources":["../../src/session/fake-session-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAOzB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAGnB,KAAK,eAAe,EAGrB,MAAM,gBAAgB,CAAA;AAQvB,KAAK,UAAU,GACX;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;IACxC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;CAChC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC,CAAA;AAEL,KAAK,+BAA+B,GAAG;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAA;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACxD,CAAA;AAyRD,eAAO,MAAM,wBAAwB,GACnC,SAAS,+BAA+B,KACvC,cAAiD,CAAA;AAEpD,YAAY,EAAE,+BAA+B,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,238 @@
1
+ import { HARNESS_SESSION_STATE, } from "./contracts.js";
2
+ import { FakeSessionScriptExhaustedError, FakeSessionScriptQueueOverflowError, FakeSessionUnknownError, } from "./fake-session-errors.js";
3
+ import { resolveHarnessAgentId, resolveHarnessAgentName } from "./harness-agent-names.js";
4
+ const DEFAULT_MAX_SCRIPTS = 128;
5
+ class FakeSessionAdapter {
6
+ #sessions = new Map();
7
+ #sessionStates = new Map();
8
+ #promptInputs = new Map();
9
+ #pendingAborts = new Map();
10
+ #scripts;
11
+ #maxScripts;
12
+ #onCreate;
13
+ #onSend;
14
+ #sessionSequence = 0;
15
+ constructor(options) {
16
+ this.#maxScripts = options.maxScripts ?? DEFAULT_MAX_SCRIPTS;
17
+ if (options.scripts.length > this.#maxScripts) {
18
+ throw new FakeSessionScriptQueueOverflowError(this.#maxScripts, options.scripts.length);
19
+ }
20
+ this.#scripts = [...options.scripts];
21
+ this.#onCreate = options.onCreate;
22
+ this.#onSend = options.onSend;
23
+ }
24
+ async create(request) {
25
+ this.#sessionSequence += 1;
26
+ const sessionId = `fake-session-${this.#sessionSequence}`;
27
+ const session = {
28
+ sessionId,
29
+ role: request.role,
30
+ agentName: resolveHarnessAgentId(request.role),
31
+ displayName: resolveHarnessAgentName(request.role),
32
+ title: request.title,
33
+ workingDirectory: request.workingDirectory,
34
+ ...(request.parentSessionId === undefined
35
+ ? {}
36
+ : { parentSessionId: request.parentSessionId }),
37
+ };
38
+ this.#sessions.set(sessionId, session);
39
+ this.#sessionStates.set(sessionId, HARNESS_SESSION_STATE.ready);
40
+ this.#onCreate?.(request);
41
+ return { session };
42
+ }
43
+ async send(request) {
44
+ this.#onSend?.(request);
45
+ const session = this.#requireSession(request.sessionId, "send");
46
+ this.#sessionStates.set(request.sessionId, HARNESS_SESSION_STATE.active);
47
+ this.#promptInputs.set(request.sessionId, request.promptInput);
48
+ const script = this.#dequeueScript(request.sessionId, request.messageId);
49
+ const startedEvent = this.#createStartedEvent(session.role, request);
50
+ const deltaEvents = script.outputDeltas.map((textDelta) => ({
51
+ kind: "output.text.delta",
52
+ role: session.role,
53
+ sessionId: request.sessionId,
54
+ messageId: request.messageId,
55
+ textDelta,
56
+ }));
57
+ if (request.abortSignal?.aborted === true) {
58
+ this.#sessionStates.set(request.sessionId, HARNESS_SESSION_STATE.aborted);
59
+ return this.#createAbortedResult(session.role, request, [startedEvent, ...deltaEvents], "signal");
60
+ }
61
+ switch (script.kind) {
62
+ case "complete": {
63
+ this.#sessionStates.set(request.sessionId, HARNESS_SESSION_STATE.completed);
64
+ const events = [
65
+ startedEvent,
66
+ ...deltaEvents,
67
+ {
68
+ kind: "run.completed",
69
+ role: session.role,
70
+ sessionId: request.sessionId,
71
+ messageId: request.messageId,
72
+ finishReason: script.finishReason,
73
+ },
74
+ ];
75
+ return {
76
+ kind: "completed",
77
+ role: session.role,
78
+ sessionId: request.sessionId,
79
+ messageId: request.messageId,
80
+ outputText: script.outputDeltas.join(""),
81
+ finishReason: script.finishReason,
82
+ events,
83
+ };
84
+ }
85
+ case "fail": {
86
+ this.#sessionStates.set(request.sessionId, HARNESS_SESSION_STATE.failed);
87
+ const events = [
88
+ startedEvent,
89
+ ...deltaEvents,
90
+ {
91
+ kind: "run.failed",
92
+ role: session.role,
93
+ sessionId: request.sessionId,
94
+ messageId: request.messageId,
95
+ error: script.error,
96
+ },
97
+ ];
98
+ return {
99
+ kind: "failed",
100
+ role: session.role,
101
+ sessionId: request.sessionId,
102
+ messageId: request.messageId,
103
+ error: script.error,
104
+ events,
105
+ };
106
+ }
107
+ case "await-abort": {
108
+ const events = [startedEvent, ...deltaEvents];
109
+ return await new Promise((resolve) => {
110
+ if (request.abortSignal) {
111
+ request.abortSignal.addEventListener("abort", () => {
112
+ this.#pendingAborts.delete(request.sessionId);
113
+ this.#sessionStates.set(request.sessionId, HARNESS_SESSION_STATE.aborted);
114
+ resolve(this.#createAbortedResult(session.role, request, events, "signal"));
115
+ }, { once: true });
116
+ }
117
+ this.#pendingAborts.set(request.sessionId, {
118
+ messageId: request.messageId,
119
+ events,
120
+ resolve: (result) => {
121
+ this.#pendingAborts.delete(request.sessionId);
122
+ resolve(result);
123
+ },
124
+ });
125
+ });
126
+ }
127
+ }
128
+ }
129
+ async abort(request) {
130
+ const pending = this.#pendingAborts.get(request.sessionId);
131
+ if (!pending) {
132
+ return {
133
+ sessionId: request.sessionId,
134
+ reason: request.reason,
135
+ aborted: false,
136
+ };
137
+ }
138
+ const session = this.#requireSession(request.sessionId, "lookup");
139
+ this.#sessionStates.set(request.sessionId, HARNESS_SESSION_STATE.aborted);
140
+ pending.resolve({
141
+ kind: "aborted",
142
+ role: session.role,
143
+ sessionId: request.sessionId,
144
+ messageId: pending.messageId,
145
+ reason: request.reason,
146
+ events: [
147
+ ...pending.events,
148
+ {
149
+ kind: "run.aborted",
150
+ role: session.role,
151
+ sessionId: request.sessionId,
152
+ messageId: pending.messageId,
153
+ reason: request.reason,
154
+ },
155
+ ],
156
+ });
157
+ return {
158
+ sessionId: request.sessionId,
159
+ messageId: pending.messageId,
160
+ reason: request.reason,
161
+ aborted: true,
162
+ };
163
+ }
164
+ async release(request) {
165
+ const session = this.#sessions.get(request.sessionId);
166
+ if (session === undefined) {
167
+ return { sessionId: request.sessionId, released: false, reason: request.reason };
168
+ }
169
+ this.#pendingAborts.delete(request.sessionId);
170
+ this.#sessions.delete(request.sessionId);
171
+ this.#promptInputs.delete(request.sessionId);
172
+ this.#sessionStates.set(request.sessionId, request.reason === "timeout"
173
+ ? HARNESS_SESSION_STATE.timedOut
174
+ : HARNESS_SESSION_STATE.released);
175
+ return { sessionId: request.sessionId, released: true, reason: request.reason };
176
+ }
177
+ getSession(sessionId) {
178
+ const session = this.#sessions.get(sessionId);
179
+ if (session === undefined) {
180
+ return undefined;
181
+ }
182
+ const promptInput = this.#promptInputs.get(sessionId);
183
+ return {
184
+ sessionId,
185
+ role: session.role,
186
+ state: this.#sessionStates.get(sessionId) ?? HARNESS_SESSION_STATE.ready,
187
+ agentName: session.agentName,
188
+ displayName: session.displayName,
189
+ ...(session.parentSessionId === undefined
190
+ ? {}
191
+ : { parentSessionId: session.parentSessionId }),
192
+ ...(promptInput === undefined ? {} : { promptInput }),
193
+ };
194
+ }
195
+ #createStartedEvent(role, request) {
196
+ return {
197
+ kind: "run.started",
198
+ role,
199
+ sessionId: request.sessionId,
200
+ messageId: request.messageId,
201
+ };
202
+ }
203
+ #createAbortedResult(role, request, events, reason) {
204
+ return {
205
+ kind: "aborted",
206
+ role,
207
+ sessionId: request.sessionId,
208
+ messageId: request.messageId,
209
+ reason,
210
+ events: [
211
+ ...events,
212
+ {
213
+ kind: "run.aborted",
214
+ role,
215
+ sessionId: request.sessionId,
216
+ messageId: request.messageId,
217
+ reason,
218
+ },
219
+ ],
220
+ };
221
+ }
222
+ #dequeueScript(sessionId, messageId) {
223
+ const script = this.#scripts.shift();
224
+ if (script) {
225
+ return script;
226
+ }
227
+ throw new FakeSessionScriptExhaustedError(sessionId, messageId, this.#scripts.length);
228
+ }
229
+ #requireSession(sessionId, operation) {
230
+ const session = this.#sessions.get(sessionId);
231
+ if (session) {
232
+ return session;
233
+ }
234
+ throw new FakeSessionUnknownError(sessionId, operation);
235
+ }
236
+ }
237
+ export const createFakeSessionAdapter = (options) => new FakeSessionAdapter(options);
238
+ //# sourceMappingURL=fake-session-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-session-adapter.js","sourceRoot":"","sources":["../../src/session/fake-session-adapter.ts"],"names":[],"mappings":"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"}