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":"command-policy.js","sourceRoot":"","sources":["../../src/verification/command-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import type { VerificationCommand } from "../domain/index.js";
2
+ export declare const VerificationExecutionStatus: {
3
+ readonly passed: "passed";
4
+ readonly failed: "failed";
5
+ readonly timedOut: "timed_out";
6
+ };
7
+ export type VerificationExecutionStatusValue = (typeof VerificationExecutionStatus)[keyof typeof VerificationExecutionStatus];
8
+ export type ProcessRunnerCommand = {
9
+ readonly command: string;
10
+ readonly args?: readonly string[];
11
+ readonly cwd: string;
12
+ readonly timeoutMs: number;
13
+ readonly env?: Readonly<Record<string, string>>;
14
+ readonly shell?: false;
15
+ };
16
+ export type ProcessRunnerStreamResult = {
17
+ readonly content: string;
18
+ readonly truncated: boolean;
19
+ };
20
+ export type ProcessRunnerResult = {
21
+ readonly exitCode: number;
22
+ readonly stdout: ProcessRunnerStreamResult;
23
+ readonly stderr: ProcessRunnerStreamResult;
24
+ readonly timedOut: boolean;
25
+ readonly signal: NodeJS.Signals | null;
26
+ };
27
+ export interface ProcessRunner {
28
+ run(command: ProcessRunnerCommand): Promise<ProcessRunnerResult>;
29
+ }
30
+ export type VerificationRunnerClock = {
31
+ readonly now: () => Date;
32
+ };
33
+ export type VerificationOutputArtifact = {
34
+ readonly digest: string;
35
+ readonly reference: string;
36
+ readonly summary: string;
37
+ readonly content: string;
38
+ readonly truncated: boolean;
39
+ };
40
+ type VerificationRunRecordBase = {
41
+ readonly command: VerificationCommand;
42
+ readonly cwd: string;
43
+ readonly startedAt: string;
44
+ readonly completedAt: string;
45
+ readonly durationMs: number;
46
+ readonly exitCode: number;
47
+ readonly signal: NodeJS.Signals | null;
48
+ readonly output: {
49
+ readonly stdout: VerificationOutputArtifact;
50
+ readonly stderr: VerificationOutputArtifact;
51
+ };
52
+ };
53
+ export type PassedVerificationRunRecord = VerificationRunRecordBase & {
54
+ readonly status: typeof VerificationExecutionStatus.passed;
55
+ };
56
+ export type FailedVerificationRunRecord = VerificationRunRecordBase & {
57
+ readonly status: typeof VerificationExecutionStatus.failed;
58
+ };
59
+ export type TimedOutVerificationRunRecord = VerificationRunRecordBase & {
60
+ readonly status: typeof VerificationExecutionStatus.timedOut;
61
+ };
62
+ export type VerificationRunRecord = PassedVerificationRunRecord | FailedVerificationRunRecord | TimedOutVerificationRunRecord;
63
+ export type VerificationRunRequest = {
64
+ readonly verificationCommands: readonly VerificationCommand[];
65
+ readonly defaultWorkingDirectory: string;
66
+ };
67
+ export type VerificationRunResult = {
68
+ readonly records: readonly VerificationRunRecord[];
69
+ readonly stoppedEarly: boolean;
70
+ };
71
+ export type VerificationRunnerOptions = {
72
+ readonly processRunner: ProcessRunner;
73
+ readonly clock: VerificationRunnerClock;
74
+ readonly createOutputRefId: () => string;
75
+ readonly maxCapturedOutputBytes: number;
76
+ readonly outputSummaryMaxLength: number;
77
+ };
78
+ export interface VerificationRunner {
79
+ run(request: VerificationRunRequest): Promise<VerificationRunResult>;
80
+ }
81
+ export {};
82
+ //# sourceMappingURL=contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/verification/contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export const VerificationExecutionStatus = {
2
+ passed: "passed",
3
+ failed: "failed",
4
+ timedOut: "timed_out",
5
+ };
6
+ //# sourceMappingURL=contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/verification/contracts.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,WAAW;CACb,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { ProcessRunner, ProcessRunnerCommand, ProcessRunnerResult } from "./contracts.js";
2
+ export declare class FakeProcessRunnerExhaustedError extends Error {
3
+ readonly command: string;
4
+ readonly cwd: string;
5
+ readonly queuedResultCount: number;
6
+ readonly name = "FakeProcessRunnerExhaustedError";
7
+ constructor(command: string, cwd: string, queuedResultCount: number);
8
+ }
9
+ export type CreateFakeProcessRunnerOptions = {
10
+ readonly results: readonly ProcessRunnerResult[];
11
+ };
12
+ export type FakeProcessRunner = ProcessRunner & {
13
+ readonly calls: readonly ProcessRunnerCommand[];
14
+ };
15
+ export declare const createFakeProcessRunner: (options: CreateFakeProcessRunnerOptions) => FakeProcessRunner;
16
+ //# sourceMappingURL=fake-process-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-process-runner.d.ts","sourceRoot":"","sources":["../../src/verification/fake-process-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAE9F,qBAAa,+BAAgC,SAAQ,KAAK;IAItD,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,iBAAiB,EAAE,MAAM;IALpC,QAAQ,CAAC,IAAI,qCAAoC;gBAGtC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,MAAM;CAIrC;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAA;CACjD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAAG;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAChD,CAAA;AAED,eAAO,MAAM,uBAAuB,GAClC,SAAS,8BAA8B,KACtC,iBAoBF,CAAA"}
@@ -0,0 +1,28 @@
1
+ export class FakeProcessRunnerExhaustedError extends Error {
2
+ command;
3
+ cwd;
4
+ queuedResultCount;
5
+ name = "FakeProcessRunnerExhaustedError";
6
+ constructor(command, cwd, queuedResultCount) {
7
+ super(`fake process runner has no queued result for ${command} in ${cwd}`);
8
+ this.command = command;
9
+ this.cwd = cwd;
10
+ this.queuedResultCount = queuedResultCount;
11
+ }
12
+ }
13
+ export const createFakeProcessRunner = (options) => {
14
+ const queuedResults = [...options.results];
15
+ const calls = [];
16
+ return {
17
+ calls,
18
+ async run(command) {
19
+ calls.push(command);
20
+ const nextResult = queuedResults.shift();
21
+ if (nextResult === undefined) {
22
+ throw new FakeProcessRunnerExhaustedError(command.command, command.cwd, options.results.length);
23
+ }
24
+ return nextResult;
25
+ },
26
+ };
27
+ };
28
+ //# sourceMappingURL=fake-process-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-process-runner.js","sourceRoot":"","sources":["../../src/verification/fake-process-runner.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAI7C;IACA;IACA;IALF,IAAI,GAAG,iCAAiC,CAAA;IAEjD,YACW,OAAe,EACf,GAAW,EACX,iBAAyB;QAElC,KAAK,CAAC,gDAAgD,OAAO,OAAO,GAAG,EAAE,CAAC,CAAA;QAJjE,YAAO,GAAP,OAAO,CAAQ;QACf,QAAG,GAAH,GAAG,CAAQ;QACX,sBAAiB,GAAjB,iBAAiB,CAAQ;IAGpC,CAAC;CACF;AAUD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAuC,EACpB,EAAE;IACrB,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,KAAK,GAA2B,EAAE,CAAA;IAExC,OAAO;QACL,KAAK;QACL,KAAK,CAAC,GAAG,CAAC,OAAO;YACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnB,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,CAAA;YACxC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,+BAA+B,CACvC,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,OAAO,CAAC,MAAM,CACvB,CAAA;YACH,CAAC;YAED,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ export type { FailedVerificationRunRecord, PassedVerificationRunRecord, ProcessRunner, ProcessRunnerCommand, ProcessRunnerResult, TimedOutVerificationRunRecord, VerificationExecutionStatusValue, VerificationOutputArtifact, VerificationRunner, VerificationRunnerClock, VerificationRunnerOptions, VerificationRunRecord, VerificationRunRequest, VerificationRunResult, } from "./contracts.js";
2
+ export { VerificationExecutionStatus } from "./contracts.js";
3
+ export { type CreateFakeProcessRunnerOptions, createFakeProcessRunner, type FakeProcessRunner, FakeProcessRunnerExhaustedError, } from "./fake-process-runner.js";
4
+ export { type CreateNodeProcessRunnerOptions, createNodeProcessRunner, NodeProcessRunnerSpawnError, } from "./node-process-runner.js";
5
+ export { createVerificationRunner } from "./verification-runner.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,6BAA6B,EAC7B,gCAAgC,EAChC,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,+BAA+B,GAChC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,KAAK,8BAA8B,EACnC,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,5 @@
1
+ export { VerificationExecutionStatus } from "./contracts.js";
2
+ export { createFakeProcessRunner, FakeProcessRunnerExhaustedError, } from "./fake-process-runner.js";
3
+ export { createNodeProcessRunner, NodeProcessRunnerSpawnError, } from "./node-process-runner.js";
4
+ export { createVerificationRunner } from "./verification-runner.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/verification/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAEL,uBAAuB,EAEvB,+BAA+B,GAChC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAEL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { ProcessRunner } from "./contracts.js";
2
+ export declare class NodeProcessRunnerSpawnError extends Error {
3
+ readonly command: string;
4
+ readonly cwd: string;
5
+ readonly name = "NodeProcessRunnerSpawnError";
6
+ constructor(command: string, cwd: string, options?: ErrorOptions);
7
+ }
8
+ export type CreateNodeProcessRunnerOptions = {
9
+ readonly maxCapturedOutputBytes: number;
10
+ };
11
+ export declare const createNodeProcessRunner: (options: CreateNodeProcessRunnerOptions) => ProcessRunner;
12
+ //# sourceMappingURL=node-process-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-process-runner.d.ts","sourceRoot":"","sources":["../../src/verification/node-process-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAkD,MAAM,gBAAgB,CAAA;AAEnG,qBAAa,2BAA4B,SAAQ,KAAK;IAIlD,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM;IAJtB,QAAQ,CAAC,IAAI,iCAAgC;gBAGlC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,YAAY;CAIzB;AAED,MAAM,MAAM,8BAA8B,GAAG;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAA;CACxC,CAAA;AAmCD,eAAO,MAAM,uBAAuB,GAAI,SAAS,8BAA8B,KAAG,aA0DjF,CAAA"}
@@ -0,0 +1,103 @@
1
+ import { spawn } from "node:child_process";
2
+ export class NodeProcessRunnerSpawnError extends Error {
3
+ command;
4
+ cwd;
5
+ name = "NodeProcessRunnerSpawnError";
6
+ constructor(command, cwd, options) {
7
+ super(`failed to spawn verification command ${command} in ${cwd}`, options);
8
+ this.command = command;
9
+ this.cwd = cwd;
10
+ }
11
+ }
12
+ const createBoundedCollector = (maxCapturedOutputBytes) => {
13
+ const chunks = [];
14
+ let capturedBytes = 0;
15
+ let truncated = false;
16
+ return {
17
+ append(chunk) {
18
+ const buffer = typeof chunk === "string" ? Buffer.from(chunk) : chunk;
19
+ const remainingBytes = maxCapturedOutputBytes - capturedBytes;
20
+ if (remainingBytes <= 0) {
21
+ truncated = true;
22
+ return;
23
+ }
24
+ const slice = buffer.subarray(0, remainingBytes);
25
+ truncated = truncated || slice.byteLength < buffer.byteLength;
26
+ chunks.push(slice);
27
+ capturedBytes += slice.byteLength;
28
+ },
29
+ result() {
30
+ return {
31
+ content: Buffer.concat(chunks).toString("utf8"),
32
+ truncated,
33
+ };
34
+ },
35
+ };
36
+ };
37
+ export const createNodeProcessRunner = (options) => {
38
+ return {
39
+ async run(command) {
40
+ const stdoutCollector = createBoundedCollector(options.maxCapturedOutputBytes);
41
+ const stderrCollector = createBoundedCollector(options.maxCapturedOutputBytes);
42
+ const abortController = new AbortController();
43
+ let timedOut = false;
44
+ return await new Promise((resolve, reject) => {
45
+ const child = spawn(command.command, command.args ?? [], {
46
+ cwd: command.cwd,
47
+ ...(command.env === undefined ? {} : { env: { ...command.env } }),
48
+ ...(command.shell === undefined ? {} : { shell: command.shell }),
49
+ detached: true,
50
+ signal: abortController.signal,
51
+ stdio: ["ignore", "pipe", "pipe"],
52
+ });
53
+ const timer = setTimeout(() => {
54
+ timedOut = true;
55
+ abortController.abort();
56
+ terminateChildProcess(child.pid);
57
+ }, command.timeoutMs);
58
+ const clearTimer = () => {
59
+ clearTimeout(timer);
60
+ };
61
+ child.stdout.on("data", (chunk) => {
62
+ stdoutCollector.append(chunk);
63
+ });
64
+ child.stderr.on("data", (chunk) => {
65
+ stderrCollector.append(chunk);
66
+ });
67
+ child.on("error", (error) => {
68
+ if (timedOut && error.name === "AbortError") {
69
+ return;
70
+ }
71
+ clearTimer();
72
+ reject(new NodeProcessRunnerSpawnError(command.command, command.cwd, { cause: error }));
73
+ });
74
+ child.on("close", (exitCode, signal) => {
75
+ clearTimer();
76
+ resolve({
77
+ exitCode: exitCode ?? -1,
78
+ stdout: stdoutCollector.result(),
79
+ stderr: stderrCollector.result(),
80
+ timedOut,
81
+ signal,
82
+ });
83
+ });
84
+ });
85
+ },
86
+ };
87
+ };
88
+ const terminateChildProcess = (pid) => {
89
+ if (pid === undefined) {
90
+ return;
91
+ }
92
+ try {
93
+ process.kill(-pid, "SIGTERM");
94
+ }
95
+ catch { }
96
+ setTimeout(() => {
97
+ try {
98
+ process.kill(-pid, "SIGKILL");
99
+ }
100
+ catch { }
101
+ }, 100).unref();
102
+ };
103
+ //# sourceMappingURL=node-process-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-process-runner.js","sourceRoot":"","sources":["../../src/verification/node-process-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { VerificationRunner, VerificationRunnerOptions } from "./contracts.js";
2
+ export declare const createVerificationRunner: (options: VerificationRunnerOptions) => VerificationRunner;
3
+ //# sourceMappingURL=verification-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-runner.d.ts","sourceRoot":"","sources":["../../src/verification/verification-runner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAKV,kBAAkB,EAClB,yBAAyB,EAE1B,MAAM,gBAAgB,CAAA;AA6FvB,eAAO,MAAM,wBAAwB,GACnC,SAAS,yBAAyB,KACjC,kBAsCF,CAAA"}
@@ -0,0 +1,101 @@
1
+ import { createHash } from "node:crypto";
2
+ import { normalizeVerificationCommand } from "./command-policy.js";
3
+ import { VerificationExecutionStatus } from "./contracts.js";
4
+ const EMPTY_OUTPUT_SUMMARY = "(empty output)";
5
+ const createDigest = (value) => {
6
+ return `sha256:${createHash("sha256").update(value).digest("hex")}`;
7
+ };
8
+ const createOutputSummary = (content, truncated, maxLength) => {
9
+ const normalized = content.trim();
10
+ const baseSummary = normalized.length > 0 ? normalized : EMPTY_OUTPUT_SUMMARY;
11
+ const truncatedSummary = baseSummary.slice(0, maxLength);
12
+ return truncated ? `${truncatedSummary}...` : truncatedSummary;
13
+ };
14
+ const createOutputArtifact = (input) => {
15
+ return {
16
+ digest: createDigest(input.stream.content),
17
+ reference: input.reference,
18
+ summary: createOutputSummary(input.stream.content, input.stream.truncated, input.outputSummaryMaxLength),
19
+ content: input.stream.content,
20
+ truncated: input.stream.truncated,
21
+ };
22
+ };
23
+ const createStatus = (result) => {
24
+ if (result.timedOut) {
25
+ return VerificationExecutionStatus.timedOut;
26
+ }
27
+ if (result.exitCode === 0) {
28
+ return VerificationExecutionStatus.passed;
29
+ }
30
+ return VerificationExecutionStatus.failed;
31
+ };
32
+ const createRecord = (input) => {
33
+ return {
34
+ status: createStatus(input.result),
35
+ command: input.command,
36
+ cwd: input.cwd,
37
+ startedAt: input.startedAt.toISOString(),
38
+ completedAt: input.completedAt.toISOString(),
39
+ durationMs: input.completedAt.getTime() - input.startedAt.getTime(),
40
+ exitCode: input.result.exitCode,
41
+ signal: input.result.signal,
42
+ output: {
43
+ stdout: createOutputArtifact({
44
+ reference: `${input.outputRefId}-stdout`,
45
+ stream: input.result.stdout,
46
+ outputSummaryMaxLength: input.outputSummaryMaxLength,
47
+ }),
48
+ stderr: createOutputArtifact({
49
+ reference: `${input.outputRefId}-stderr`,
50
+ stream: input.result.stderr,
51
+ outputSummaryMaxLength: input.outputSummaryMaxLength,
52
+ }),
53
+ },
54
+ };
55
+ };
56
+ const shouldStop = (record) => {
57
+ switch (record.status) {
58
+ case VerificationExecutionStatus.passed:
59
+ return false;
60
+ case VerificationExecutionStatus.failed:
61
+ case VerificationExecutionStatus.timedOut:
62
+ return true;
63
+ }
64
+ };
65
+ export const createVerificationRunner = (options) => {
66
+ return {
67
+ async run(request) {
68
+ const records = [];
69
+ for (const command of request.verificationCommands) {
70
+ const normalizedCommand = normalizeVerificationCommand({
71
+ workspaceRoot: request.defaultWorkingDirectory,
72
+ command,
73
+ });
74
+ const startedAt = options.clock.now();
75
+ const result = await options.processRunner.run(normalizedCommand);
76
+ const completedAt = options.clock.now();
77
+ const record = createRecord({
78
+ command,
79
+ cwd: normalizedCommand.cwd,
80
+ startedAt,
81
+ completedAt,
82
+ result,
83
+ outputRefId: options.createOutputRefId(),
84
+ outputSummaryMaxLength: options.outputSummaryMaxLength,
85
+ });
86
+ records.push(record);
87
+ if (shouldStop(record)) {
88
+ return {
89
+ records,
90
+ stoppedEarly: true,
91
+ };
92
+ }
93
+ }
94
+ return {
95
+ records,
96
+ stoppedEarly: false,
97
+ };
98
+ },
99
+ };
100
+ };
101
+ //# sourceMappingURL=verification-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-runner.js","sourceRoot":"","sources":["../../src/verification/verification-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import { z } from "zod";
2
+ export declare const GitWorkspaceStateSchema: z.ZodReadonly<z.ZodObject<{
3
+ mode: z.ZodLiteral<"git">;
4
+ headRef: z.ZodNullable<z.ZodString>;
5
+ baselineDiffDigest: z.ZodString;
6
+ managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
7
+ initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
8
+ dirtyAllowed: z.ZodBoolean;
9
+ harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
10
+ }, z.core.$strip>>;
11
+ export declare const NonGitWorkspaceStateSchema: z.ZodReadonly<z.ZodObject<{
12
+ mode: z.ZodLiteral<"non-git">;
13
+ headRef: z.ZodNull;
14
+ baselineDiffDigest: z.ZodString;
15
+ managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
16
+ initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
17
+ dirtyAllowed: z.ZodBoolean;
18
+ harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
19
+ }, z.core.$strip>>;
20
+ export declare const WorkspaceGitStateSchema: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
21
+ mode: z.ZodLiteral<"git">;
22
+ headRef: z.ZodNullable<z.ZodString>;
23
+ baselineDiffDigest: z.ZodString;
24
+ managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
25
+ initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
26
+ dirtyAllowed: z.ZodBoolean;
27
+ harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
28
+ }, z.core.$strip>>, z.ZodReadonly<z.ZodObject<{
29
+ mode: z.ZodLiteral<"non-git">;
30
+ headRef: z.ZodNull;
31
+ baselineDiffDigest: z.ZodString;
32
+ managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
33
+ initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
34
+ dirtyAllowed: z.ZodBoolean;
35
+ harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
36
+ }, z.core.$strip>>]>;
37
+ export declare const RunWorkspaceSchema: z.ZodReadonly<z.ZodObject<{
38
+ git: z.ZodUnion<readonly [z.ZodReadonly<z.ZodObject<{
39
+ mode: z.ZodLiteral<"git">;
40
+ headRef: z.ZodNullable<z.ZodString>;
41
+ baselineDiffDigest: z.ZodString;
42
+ managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
43
+ initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
44
+ dirtyAllowed: z.ZodBoolean;
45
+ harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
46
+ }, z.core.$strip>>, z.ZodReadonly<z.ZodObject<{
47
+ mode: z.ZodLiteral<"non-git">;
48
+ headRef: z.ZodNull;
49
+ baselineDiffDigest: z.ZodString;
50
+ managedFileHashes: z.ZodReadonly<z.ZodRecord<z.ZodString, z.ZodString>>;
51
+ initialDirtyPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
52
+ dirtyAllowed: z.ZodBoolean;
53
+ harnessChangedPaths: z.ZodReadonly<z.ZodArray<z.ZodString>>;
54
+ }, z.core.$strip>>]>;
55
+ }, z.core.$strip>>;
56
+ export type GitWorkspaceState = z.infer<typeof GitWorkspaceStateSchema>;
57
+ export type NonGitWorkspaceState = z.infer<typeof NonGitWorkspaceStateSchema>;
58
+ export type WorkspaceGitState = z.infer<typeof WorkspaceGitStateSchema>;
59
+ export type RunWorkspace = z.infer<typeof RunWorkspaceSchema>;
60
+ export declare const createWorkspaceDigest: (value: string) => string;
61
+ export declare const createBufferDigest: (value: Buffer) => string;
62
+ export declare const createDefaultRunWorkspace: () => RunWorkspace;
63
+ //# sourceMappingURL=git-baseline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-baseline.d.ts","sourceRoot":"","sources":["../../src/workspace/git-baseline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB,eAAO,MAAM,uBAAuB;;;;;;;;kBAavB,CAAA;AAEb,eAAO,MAAM,0BAA0B;;;;;;;;kBAU1B,CAAA;AAEb,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;oBAGlC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;kBAIlB,CAAA;AAEb,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAC7E,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACvE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAE7D,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,MACgB,CAAA;AAEtE,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,MACW,CAAA;AAE9D,eAAO,MAAM,yBAAyB,QAAO,YAU3C,CAAA"}
@@ -0,0 +1,53 @@
1
+ import { createHash } from "node:crypto";
2
+ import { z } from "zod";
3
+ import { WorkspaceRelativePathSchema } from "../path/workspace-path.js";
4
+ const Sha256DigestSchema = z.string().regex(/^sha256:[a-f0-9]{64}$/);
5
+ const ManagedFileHashesSchema = z.record(WorkspaceRelativePathSchema, Sha256DigestSchema).readonly();
6
+ export const GitWorkspaceStateSchema = z
7
+ .object({
8
+ mode: z.literal("git"),
9
+ headRef: z
10
+ .string()
11
+ .regex(/^[a-f0-9]{40}$/)
12
+ .nullable(),
13
+ baselineDiffDigest: Sha256DigestSchema,
14
+ managedFileHashes: ManagedFileHashesSchema,
15
+ initialDirtyPaths: z.array(WorkspaceRelativePathSchema).readonly(),
16
+ dirtyAllowed: z.boolean(),
17
+ harnessChangedPaths: z.array(WorkspaceRelativePathSchema).readonly(),
18
+ })
19
+ .readonly();
20
+ export const NonGitWorkspaceStateSchema = z
21
+ .object({
22
+ mode: z.literal("non-git"),
23
+ headRef: z.null(),
24
+ baselineDiffDigest: Sha256DigestSchema,
25
+ managedFileHashes: ManagedFileHashesSchema,
26
+ initialDirtyPaths: z.array(WorkspaceRelativePathSchema).readonly(),
27
+ dirtyAllowed: z.boolean(),
28
+ harnessChangedPaths: z.array(WorkspaceRelativePathSchema).readonly(),
29
+ })
30
+ .readonly();
31
+ export const WorkspaceGitStateSchema = z.union([
32
+ GitWorkspaceStateSchema,
33
+ NonGitWorkspaceStateSchema,
34
+ ]);
35
+ export const RunWorkspaceSchema = z
36
+ .object({
37
+ git: WorkspaceGitStateSchema,
38
+ })
39
+ .readonly();
40
+ export const createWorkspaceDigest = (value) => `sha256:${createHash("sha256").update(value, "utf8").digest("hex")}`;
41
+ export const createBufferDigest = (value) => `sha256:${createHash("sha256").update(value).digest("hex")}`;
42
+ export const createDefaultRunWorkspace = () => ({
43
+ git: {
44
+ mode: "non-git",
45
+ headRef: null,
46
+ baselineDiffDigest: createWorkspaceDigest(""),
47
+ managedFileHashes: {},
48
+ initialDirtyPaths: [],
49
+ dirtyAllowed: false,
50
+ harnessChangedPaths: [],
51
+ },
52
+ });
53
+ //# sourceMappingURL=git-baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-baseline.js","sourceRoot":"","sources":["../../src/workspace/git-baseline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AAEvE,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;AAEpE,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAAC,QAAQ,EAAE,CAAA;AAEpG,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACtB,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,KAAK,CAAC,gBAAgB,CAAC;SACvB,QAAQ,EAAE;IACb,kBAAkB,EAAE,kBAAkB;IACtC,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;IAClE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;CACrE,CAAC;KACD,QAAQ,EAAE,CAAA;AAEb,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;IACjB,kBAAkB,EAAE,kBAAkB;IACtC,iBAAiB,EAAE,uBAAuB;IAC1C,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;IAClE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE;IACzB,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;CACrE,CAAC;KACD,QAAQ,EAAE,CAAA;AAEb,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC;IAC7C,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,GAAG,EAAE,uBAAuB;CAC7B,CAAC;KACD,QAAQ,EAAE,CAAA;AAOb,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAa,EAAU,EAAE,CAC7D,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAEtE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAU,EAAE,CAC1D,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAE9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAiB,EAAE,CAAC,CAAC;IAC5D,GAAG,EAAE;QACH,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,IAAI;QACb,kBAAkB,EAAE,qBAAqB,CAAC,EAAE,CAAC;QAC7C,iBAAiB,EAAE,EAAE;QACrB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,KAAK;QACnB,mBAAmB,EAAE,EAAE;KACxB;CACF,CAAC,CAAA"}
@@ -0,0 +1,43 @@
1
+ import { type GitWorkspaceState, type WorkspaceGitState } from "./git-baseline.js";
2
+ export type WorkspacePolicy = {
3
+ readonly allowDirty: boolean;
4
+ };
5
+ type GitRepositoryState = {
6
+ readonly mode: "git";
7
+ readonly repoRoot: string;
8
+ readonly projectRoot: string;
9
+ readonly headRef: string | null;
10
+ readonly dirtyPaths: readonly string[];
11
+ readonly diffDigest: string;
12
+ readonly managedFileHashes: Readonly<Record<string, string>>;
13
+ };
14
+ type NonGitRepositoryState = {
15
+ readonly mode: "non-git";
16
+ readonly managedFileHashes: Readonly<Record<string, string>>;
17
+ };
18
+ type RepositoryState = GitRepositoryState | NonGitRepositoryState;
19
+ export type WorkspaceChangeAssessment = {
20
+ readonly status: "ok";
21
+ readonly actualChangedPaths: readonly string[];
22
+ readonly nextWorkspace: GitWorkspaceState;
23
+ } | {
24
+ readonly status: "paused";
25
+ readonly actualChangedPaths: readonly string[];
26
+ readonly detail: string;
27
+ readonly driftedPaths: readonly string[];
28
+ };
29
+ export interface WorkspaceAdapter {
30
+ captureBaseline(policy: WorkspacePolicy): Promise<WorkspaceGitState>;
31
+ captureCurrentState(): Promise<RepositoryState>;
32
+ assessTaskChanges(input: {
33
+ readonly baseline: GitWorkspaceState;
34
+ readonly before: RepositoryState;
35
+ readonly afterWorker: RepositoryState;
36
+ readonly afterVerification: RepositoryState;
37
+ readonly claimedChangedPaths: readonly string[];
38
+ readonly allowedPaths: readonly string[];
39
+ }): Promise<WorkspaceChangeAssessment>;
40
+ }
41
+ export declare const createGitWorkspaceAdapter: (projectRoot: string) => WorkspaceAdapter;
42
+ export {};
43
+ //# sourceMappingURL=git-workspace-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-workspace-adapter.d.ts","sourceRoot":"","sources":["../../src/workspace/git-workspace-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAC7B,CAAA;AAQD,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC7D,CAAA;AAED,KAAK,eAAe,GAAG,kBAAkB,GAAG,qBAAqB,CAAA;AAEjE,MAAM,MAAM,yBAAyB,GACjC;IACE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAA;IACrB,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9C,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAA;CAC1C,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAA;IACzB,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CACzC,CAAA;AAEL,MAAM,WAAW,gBAAgB;IAC/B,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACpE,mBAAmB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAA;IAC/C,iBAAiB,CAAC,KAAK,EAAE;QACvB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;QACpC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;QAChC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;QACrC,QAAQ,CAAC,iBAAiB,EAAE,eAAe,CAAA;QAC3C,QAAQ,CAAC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAA;QAC/C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;KACzC,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAA;CACvC;AAED,eAAO,MAAM,yBAAyB,GAAI,aAAa,MAAM,KAAG,gBA+G9D,CAAA"}