pi-harness-runtime 0.9.25 → 0.10.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 (321) hide show
  1. package/CHANGELOG.md +27 -7
  2. package/README.md +51 -51
  3. package/harness/auto-compact.ts +1 -1
  4. package/harness/autonomous-review.ts +88 -0
  5. package/harness/context-compact-orchestrator.ts +23 -23
  6. package/harness/context-window-manager.ts +5 -5
  7. package/harness/continue-prompt.ts +3 -3
  8. package/harness/e2e/minimax-quota-scraper.ts +1 -1
  9. package/harness/forked-summarizer.ts +4 -4
  10. package/harness/herdr-agents.ts +91 -0
  11. package/harness/index.ts +5 -5
  12. package/harness/loop-code-agent.ts +284 -0
  13. package/harness/loop-controller.ts +201 -0
  14. package/harness/loop-review-agent.ts +295 -0
  15. package/harness/loop-runtime.ts +10 -10
  16. package/harness/loop-types.ts +118 -0
  17. package/harness/notification-events.ts +3 -3
  18. package/harness/output-limit-handler.ts +1 -1
  19. package/harness/partial-recovery.ts +3 -3
  20. package/harness/session-memory.ts +5 -5
  21. package/index.ts +46 -32
  22. package/package.json +1 -1
  23. package/packages/a2a-adapter/package.json +1 -1
  24. package/packages/a2a-adapter/src/types.ts +5 -5
  25. package/packages/auth/package.json +1 -1
  26. package/packages/autonomous-refactor/package.json +1 -1
  27. package/packages/autonomous-runtime/dist/inbox.d.ts +3 -3
  28. package/packages/autonomous-runtime/dist/inbox.js +12 -12
  29. package/packages/autonomous-runtime/dist/lease.js +14 -14
  30. package/packages/autonomous-runtime/dist/types.js +1 -1
  31. package/packages/autonomous-runtime/package.json +1 -1
  32. package/packages/autonomous-runtime/src/inbox.ts +12 -12
  33. package/packages/autonomous-runtime/src/lease.ts +15 -15
  34. package/packages/autonomous-runtime/src/types.ts +13 -13
  35. package/packages/autonomous-runtime/tsconfig.tsbuildinfo +1 -1
  36. package/packages/cache-strategy/package.json +1 -1
  37. package/packages/capability-registry/dist/types.js +1 -1
  38. package/packages/capability-registry/package.json +1 -1
  39. package/packages/capability-registry/src/types.ts +5 -5
  40. package/packages/checkpoint/README.md +6 -6
  41. package/packages/checkpoint/dist/differ.js +2 -2
  42. package/packages/checkpoint/dist/engine.js +3 -3
  43. package/packages/checkpoint/dist/index.js +5 -5
  44. package/packages/checkpoint/dist/storage.js +3 -3
  45. package/packages/checkpoint/dist/types.js +1 -1
  46. package/packages/checkpoint/package.json +1 -1
  47. package/packages/checkpoint/src/differ.ts +2 -2
  48. package/packages/checkpoint/src/engine.ts +3 -3
  49. package/packages/checkpoint/src/index.ts +5 -5
  50. package/packages/checkpoint/src/storage.ts +3 -3
  51. package/packages/checkpoint/src/types.ts +10 -10
  52. package/packages/checkpoint/tsconfig.tsbuildinfo +1 -1
  53. package/packages/cli-plugin-sdk/package.json +1 -1
  54. package/packages/clipboard/dist/src/clipboard.d.ts.map +1 -1
  55. package/packages/clipboard/dist/src/clipboard.js +15 -7
  56. package/packages/clipboard/dist/src/clipboard.js.map +1 -1
  57. package/packages/clipboard/package.json +1 -1
  58. package/packages/clipboard/src/clipboard.ts +16 -9
  59. package/packages/code-generation/README.md +13 -13
  60. package/packages/code-generation/dist/faker.js +4 -4
  61. package/packages/code-generation/dist/generator.js +3 -3
  62. package/packages/code-generation/dist/index.js +3 -3
  63. package/packages/code-generation/dist/templates/registry.js +1 -1
  64. package/packages/code-generation/dist/types.js +1 -1
  65. package/packages/code-generation/package.json +1 -1
  66. package/packages/code-generation/src/faker.ts +5 -5
  67. package/packages/code-generation/src/generator.ts +4 -4
  68. package/packages/code-generation/src/index.ts +3 -3
  69. package/packages/code-generation/src/templates/registry.ts +1 -1
  70. package/packages/code-generation/src/types.ts +10 -10
  71. package/packages/code-generation/tsconfig.tsbuildinfo +1 -1
  72. package/packages/code-review/README.md +13 -13
  73. package/packages/code-review/dist/engine.js +3 -3
  74. package/packages/code-review/dist/index.js +3 -3
  75. package/packages/code-review/dist/types.js +1 -1
  76. package/packages/code-review/package.json +1 -1
  77. package/packages/code-review/src/engine.ts +3 -3
  78. package/packages/code-review/src/index.ts +3 -3
  79. package/packages/code-review/src/types.ts +10 -10
  80. package/packages/code-review/tsconfig.tsbuildinfo +1 -1
  81. package/packages/codex-adapter/package.json +1 -1
  82. package/packages/context-compiler/dist/compiler.js +1 -1
  83. package/packages/context-compiler/package.json +1 -1
  84. package/packages/context-compiler/src/compiler.ts +1 -1
  85. package/packages/context-compiler/src/types.ts +11 -11
  86. package/packages/context-compiler/test/context-compiler.test.ts +11 -11
  87. package/packages/context-discovery/package.json +1 -1
  88. package/packages/context-manager/package.json +1 -1
  89. package/packages/cookie-sanitizer/README.md +27 -27
  90. package/packages/cookie-sanitizer/package.json +1 -1
  91. package/packages/cost-optimizer/package.json +1 -1
  92. package/packages/cost-optimizer/src/types.ts +5 -5
  93. package/packages/dependency-analyzer/package.json +1 -1
  94. package/packages/django-plugin/dist/analyzer.js +7 -7
  95. package/packages/django-plugin/package.json +1 -1
  96. package/packages/django-plugin/src/analyzer.ts +7 -7
  97. package/packages/doc-generator/package.json +1 -1
  98. package/packages/evaluation-engine/dist/engine.js +9 -9
  99. package/packages/evaluation-engine/package.json +1 -1
  100. package/packages/evaluation-engine/src/engine.ts +9 -9
  101. package/packages/evaluation-engine/src/types.ts +3 -3
  102. package/packages/evaluation-runner/package.json +1 -1
  103. package/packages/event-bus/dist/src/herdr-bus.d.ts +121 -0
  104. package/packages/event-bus/dist/src/herdr-bus.d.ts.map +1 -0
  105. package/packages/event-bus/dist/src/herdr-bus.js +322 -0
  106. package/packages/event-bus/dist/src/herdr-bus.js.map +1 -0
  107. package/packages/event-bus/dist/src/index.d.ts +2 -0
  108. package/packages/event-bus/dist/src/index.d.ts.map +1 -1
  109. package/packages/event-bus/dist/src/index.js +1 -0
  110. package/packages/event-bus/dist/src/index.js.map +1 -1
  111. package/packages/event-bus/package.json +1 -1
  112. package/packages/event-bus/src/herdr-bus.ts +525 -0
  113. package/packages/event-bus/src/index.ts +29 -0
  114. package/packages/event-store/package.json +1 -1
  115. package/packages/experience-replay/dist/replay.js +7 -7
  116. package/packages/experience-replay/package.json +1 -1
  117. package/packages/experience-replay/src/replay.ts +7 -7
  118. package/packages/experience-replay/src/types.ts +5 -5
  119. package/packages/feedback-collector/package.json +1 -1
  120. package/packages/framework-detector/README.md +18 -18
  121. package/packages/framework-detector/dist/detector.js +3 -3
  122. package/packages/framework-detector/dist/index.js +3 -3
  123. package/packages/framework-detector/dist/signatures/registry.js +24 -24
  124. package/packages/framework-detector/dist/types.js +1 -1
  125. package/packages/framework-detector/package.json +1 -1
  126. package/packages/framework-detector/src/detector.ts +3 -3
  127. package/packages/framework-detector/src/index.ts +3 -3
  128. package/packages/framework-detector/src/signatures/registry.ts +24 -24
  129. package/packages/framework-detector/src/types.ts +7 -7
  130. package/packages/framework-detector/tsconfig.tsbuildinfo +1 -1
  131. package/packages/framework-plugin-sdk/README.md +23 -23
  132. package/packages/framework-plugin-sdk/dist/index.js +2 -2
  133. package/packages/framework-plugin-sdk/dist/manager.js +3 -3
  134. package/packages/framework-plugin-sdk/dist/types.js +2 -2
  135. package/packages/framework-plugin-sdk/package.json +1 -1
  136. package/packages/framework-plugin-sdk/src/index.ts +2 -2
  137. package/packages/framework-plugin-sdk/src/manager.ts +3 -3
  138. package/packages/framework-plugin-sdk/src/types.ts +10 -10
  139. package/packages/framework-plugin-sdk/tsconfig.tsbuildinfo +1 -1
  140. package/packages/frappe-plugin/dist/analyzer.js +8 -8
  141. package/packages/frappe-plugin/dist/types.js +1 -1
  142. package/packages/frappe-plugin/package.json +1 -1
  143. package/packages/frappe-plugin/src/analyzer.ts +8 -8
  144. package/packages/frappe-plugin/src/types.ts +10 -10
  145. package/packages/generic-web-plugin/dist/analyzer.js +5 -5
  146. package/packages/generic-web-plugin/package.json +1 -1
  147. package/packages/generic-web-plugin/src/analyzer.ts +5 -5
  148. package/packages/health-monitor/package.json +1 -1
  149. package/packages/health-monitor/src/monitor.ts +1 -1
  150. package/packages/intent-analyzer/package.json +1 -1
  151. package/packages/laravel-plugin/dist/analyzer.js +11 -11
  152. package/packages/laravel-plugin/package.json +1 -1
  153. package/packages/laravel-plugin/src/analyzer.ts +11 -11
  154. package/packages/learning-engine/dist/engine.js +5 -5
  155. package/packages/learning-engine/dist/types.js +1 -1
  156. package/packages/learning-engine/package.json +1 -1
  157. package/packages/learning-engine/src/engine.ts +5 -5
  158. package/packages/learning-engine/src/types.ts +6 -6
  159. package/packages/mcp-adapter/package.json +1 -1
  160. package/packages/memory-engine/dist/engine.js +8 -8
  161. package/packages/memory-engine/dist/types.js +2 -2
  162. package/packages/memory-engine/package.json +1 -1
  163. package/packages/memory-engine/src/engine.ts +8 -8
  164. package/packages/memory-engine/src/types.ts +9 -9
  165. package/packages/model-registry/package.json +1 -1
  166. package/packages/model-registry/src/types.ts +4 -4
  167. package/packages/nextjs-plugin/dist/analyzer.js +9 -9
  168. package/packages/nextjs-plugin/package.json +1 -1
  169. package/packages/nextjs-plugin/src/analyzer.ts +9 -9
  170. package/packages/notification/dist/notification-center.js +1 -1
  171. package/packages/notification/package.json +1 -1
  172. package/packages/notification/src/notification-center.ts +1 -1
  173. package/packages/observability/dist/alerts.js +2 -2
  174. package/packages/observability/dist/health.js +4 -4
  175. package/packages/observability/dist/index.js +6 -6
  176. package/packages/observability/dist/logger.js +7 -7
  177. package/packages/observability/dist/metrics.js +11 -11
  178. package/packages/observability/dist/tracer.js +3 -3
  179. package/packages/observability/dist/types.js +1 -1
  180. package/packages/observability/package.json +1 -1
  181. package/packages/observability/src/alerts.ts +2 -2
  182. package/packages/observability/src/health.ts +4 -4
  183. package/packages/observability/src/index.ts +6 -6
  184. package/packages/observability/src/logger.ts +7 -7
  185. package/packages/observability/src/metrics.ts +11 -11
  186. package/packages/observability/src/tracer.ts +3 -3
  187. package/packages/observability/src/types.ts +7 -7
  188. package/packages/observability/test/observability.test.ts +4 -4
  189. package/packages/observability/tsconfig.tsbuildinfo +1 -1
  190. package/packages/performance-optimizer/dist/optimizer.js +1 -1
  191. package/packages/performance-optimizer/package.json +1 -1
  192. package/packages/performance-optimizer/src/optimizer.ts +1 -1
  193. package/packages/performance-optimizer/src/types.ts +4 -4
  194. package/packages/privilege-broker/package.json +1 -1
  195. package/packages/project-analyzer/dist/analyzer.js +4 -4
  196. package/packages/project-analyzer/dist/index.js +8 -8
  197. package/packages/project-analyzer/dist/signals.js +3 -3
  198. package/packages/project-analyzer/dist/types.js +1 -1
  199. package/packages/project-analyzer/package.json +1 -1
  200. package/packages/project-analyzer/src/analyzer.ts +4 -4
  201. package/packages/project-analyzer/src/index.ts +9 -9
  202. package/packages/project-analyzer/src/signals.ts +4 -4
  203. package/packages/project-analyzer/src/types.ts +15 -15
  204. package/packages/project-analyzer/test/index.test.ts +17 -17
  205. package/packages/project-analyzer/tsconfig.tsbuildinfo +1 -1
  206. package/packages/projection-engine/package.json +1 -1
  207. package/packages/prompt-compiler/dist/section-builder.js +1 -1
  208. package/packages/prompt-compiler/dist/types.js +3 -3
  209. package/packages/prompt-compiler/package.json +1 -1
  210. package/packages/prompt-compiler/src/section-builder.ts +1 -1
  211. package/packages/prompt-compiler/src/types.ts +12 -12
  212. package/packages/prompt-compiler/test/prompt-compiler.test.ts +12 -12
  213. package/packages/prompt-versioning/package.json +1 -1
  214. package/packages/provider-adapter-sdk/dist/builder.js +1 -1
  215. package/packages/provider-adapter-sdk/dist/index.js +5 -5
  216. package/packages/provider-adapter-sdk/dist/registry.js +1 -1
  217. package/packages/provider-adapter-sdk/dist/tester.js +1 -1
  218. package/packages/provider-adapter-sdk/dist/types.js +1 -1
  219. package/packages/provider-adapter-sdk/package.json +1 -1
  220. package/packages/provider-adapter-sdk/src/builder.ts +1 -1
  221. package/packages/provider-adapter-sdk/src/index.ts +6 -6
  222. package/packages/provider-adapter-sdk/src/registry.ts +1 -1
  223. package/packages/provider-adapter-sdk/src/tester.ts +1 -1
  224. package/packages/provider-adapter-sdk/src/types.ts +5 -5
  225. package/packages/provider-adapter-sdk/tsconfig.tsbuildinfo +1 -1
  226. package/packages/provider-router/package.json +1 -1
  227. package/packages/provider-router/src/types.ts +4 -4
  228. package/packages/provider-selector/package.json +1 -1
  229. package/packages/providers/dist/deepagents-adapter.js +1 -1
  230. package/packages/providers/package.json +1 -1
  231. package/packages/providers/src/deepagents-adapter.ts +1 -1
  232. package/packages/quota-manager/package.json +1 -1
  233. package/packages/rate-limiter/package.json +1 -1
  234. package/packages/react-vite-plugin/dist/analyzer.js +7 -7
  235. package/packages/react-vite-plugin/package.json +1 -1
  236. package/packages/react-vite-plugin/src/analyzer.ts +7 -7
  237. package/packages/release-manager/package.json +1 -1
  238. package/packages/requirement-compiler/dist/compiler.js +17 -17
  239. package/packages/requirement-compiler/dist/types.js +2 -2
  240. package/packages/requirement-compiler/package.json +1 -1
  241. package/packages/requirement-compiler/src/compiler.ts +17 -17
  242. package/packages/requirement-compiler/src/types.ts +21 -21
  243. package/packages/requirement-compiler/test/requirement-compiler.test.ts +17 -17
  244. package/packages/runtime/dist/command-executor.js +1 -1
  245. package/packages/runtime/dist/local-runtime-agent.js +1 -1
  246. package/packages/runtime/dist/policy-engine.js +1 -1
  247. package/packages/runtime/dist/runtime-api.js +1 -1
  248. package/packages/runtime/dist/workspace-manager.js +1 -1
  249. package/packages/runtime/package.json +1 -1
  250. package/packages/runtime/src/command-executor.ts +1 -1
  251. package/packages/runtime/src/local-runtime-agent.ts +1 -1
  252. package/packages/runtime/src/policy-engine.ts +1 -1
  253. package/packages/runtime/src/runtime-api.ts +1 -1
  254. package/packages/runtime/src/workspace-manager.ts +1 -1
  255. package/packages/scheduler/package.json +1 -1
  256. package/packages/scheduler-adapter/package.json +1 -1
  257. package/packages/session/README.md +18 -18
  258. package/packages/session/dist/history.js +3 -3
  259. package/packages/session/dist/index.js +5 -5
  260. package/packages/session/dist/manager.js +3 -3
  261. package/packages/session/dist/policy.js +2 -2
  262. package/packages/session/dist/store.js +2 -2
  263. package/packages/session/dist/types.js +1 -1
  264. package/packages/session/package.json +1 -1
  265. package/packages/session/src/history.ts +3 -3
  266. package/packages/session/src/index.ts +5 -5
  267. package/packages/session/src/manager.ts +3 -3
  268. package/packages/session/src/policy.ts +4 -4
  269. package/packages/session/src/store.ts +3 -3
  270. package/packages/session/src/types.ts +10 -10
  271. package/packages/session/tsconfig.tsbuildinfo +1 -1
  272. package/packages/session-api/package.json +1 -1
  273. package/packages/session-export/package.json +1 -1
  274. package/packages/shared-context/package.json +1 -1
  275. package/packages/skill-registry/package.json +1 -1
  276. package/packages/skill-registry/src/types.ts +4 -4
  277. package/packages/sprint-planner/package.json +1 -1
  278. package/packages/subscription-engine/package.json +1 -1
  279. package/packages/task-compiler/dist/compiler.js +7 -7
  280. package/packages/task-compiler/dist/decompose.js +11 -11
  281. package/packages/task-compiler/dist/file-scope.js +6 -6
  282. package/packages/task-compiler/dist/graph.js +6 -6
  283. package/packages/task-compiler/dist/index.js +2 -2
  284. package/packages/task-compiler/dist/types.js +5 -5
  285. package/packages/task-compiler/dist/validate.js +2 -2
  286. package/packages/task-compiler/dist/verification.js +2 -2
  287. package/packages/task-compiler/package.json +1 -1
  288. package/packages/task-compiler/src/command-policy.ts +1 -1
  289. package/packages/task-compiler/src/compiler.ts +7 -7
  290. package/packages/task-compiler/src/decompose.ts +11 -11
  291. package/packages/task-compiler/src/file-scope.ts +6 -6
  292. package/packages/task-compiler/src/graph.ts +6 -6
  293. package/packages/task-compiler/src/index.ts +3 -3
  294. package/packages/task-compiler/src/types.ts +14 -14
  295. package/packages/task-compiler/src/validate.ts +2 -2
  296. package/packages/task-compiler/src/verification.ts +2 -2
  297. package/packages/task-compiler/test/task-compiler.test.ts +10 -10
  298. package/packages/test-data-generator/README.md +13 -13
  299. package/packages/test-data-generator/dist/faker-adapter.js +4 -4
  300. package/packages/test-data-generator/dist/generator.js +3 -3
  301. package/packages/test-data-generator/dist/index.js +3 -3
  302. package/packages/test-data-generator/dist/types.js +1 -1
  303. package/packages/test-data-generator/package.json +1 -1
  304. package/packages/test-data-generator/src/faker-adapter.ts +4 -4
  305. package/packages/test-data-generator/src/generator.ts +3 -3
  306. package/packages/test-data-generator/src/index.ts +3 -3
  307. package/packages/test-data-generator/src/types.ts +9 -9
  308. package/packages/test-data-generator/tsconfig.tsbuildinfo +1 -1
  309. package/packages/test-generator/package.json +1 -1
  310. package/packages/token-estimation/package.json +1 -1
  311. package/packages/token-optimizer/package.json +1 -1
  312. package/packages/tui/package.json +1 -1
  313. package/packages/types/package.json +1 -1
  314. package/packages/types/src/agent-worker-types.ts +5 -5
  315. package/packages/types/src/runtime-types.ts +12 -12
  316. package/packages/types/tsconfig.tsbuildinfo +1 -1
  317. package/packages/workflow-events/package.json +1 -1
  318. package/packages/workspace-scanner/package.json +1 -1
  319. package/packages/worktree/package.json +1 -1
  320. package/renderer.ts +7 -7
  321. package/skills/harness-runtime/SKILL.md +15 -15
@@ -20,7 +20,7 @@ import type {
20
20
  } from "./types.js";
21
21
  import { DEFAULT_SCORING_WEIGHTS } from "./types.js";
22
22
 
23
- // ─── Evidence Collection ───────────────────────────────────────────────────────
23
+ // --- Evidence Collection -------------------------------------------------------
24
24
 
25
25
  function collectEvidence(
26
26
  outputs: TaskOutputArtifact[],
@@ -63,7 +63,7 @@ function collectEvidence(
63
63
  return evidence;
64
64
  }
65
65
 
66
- // ─── Missing Output Detection ──────────────────────────────────────────────────
66
+ // --- Missing Output Detection --------------------------------------------------
67
67
 
68
68
  function findMissingOutputs(
69
69
  requiredArtifacts: string[],
@@ -91,7 +91,7 @@ function findMissingOutputs(
91
91
  return findings;
92
92
  }
93
93
 
94
- // ─── Test Analysis ────────────────────────────────────────────────────────────
94
+ // --- Test Analysis ------------------------------------------------------------
95
95
 
96
96
  function analyzeTests(testResults: TestResult[]): {
97
97
  findings: EvaluationFinding[];
@@ -130,7 +130,7 @@ function analyzeTests(testResults: TestResult[]): {
130
130
  return { findings, passedCount, totalCount, hasFailures };
131
131
  }
132
132
 
133
- // ─── Policy Analysis ──────────────────────────────────────────────────────────
133
+ // --- Policy Analysis ----------------------------------------------------------
134
134
 
135
135
  function analyzePolicies(policyFindings: PolicyFinding[]): {
136
136
  findings: EvaluationFinding[];
@@ -157,7 +157,7 @@ function analyzePolicies(policyFindings: PolicyFinding[]): {
157
157
  return { findings, criticalFindings };
158
158
  }
159
159
 
160
- // ─── Acceptance Criteria Coverage ─────────────────────────────────────────────
160
+ // --- Acceptance Criteria Coverage ---------------------------------------------
161
161
 
162
162
  function analyzeAcceptanceCoverage(
163
163
  acceptanceCriteria: string[],
@@ -217,7 +217,7 @@ function analyzeAcceptanceCoverage(
217
217
  return { findings, coverage, unmetCriteria };
218
218
  }
219
219
 
220
- // ─── Scoring ─────────────────────────────────────────────────────────────────
220
+ // --- Scoring -----------------------------------------------------------------
221
221
 
222
222
  function calculateScore(
223
223
  weights: ScoringWeights,
@@ -286,7 +286,7 @@ function calculateScore(
286
286
  return { score: Math.round(totalScore), breakdown };
287
287
  }
288
288
 
289
- // ─── Failure Classification ───────────────────────────────────────────────────
289
+ // --- Failure Classification ---------------------------------------------------
290
290
 
291
291
  function classifyFailure(
292
292
  findings: EvaluationFinding[],
@@ -330,7 +330,7 @@ function classifyFailure(
330
330
  return classes;
331
331
  }
332
332
 
333
- // ─── Main Engine ───────────────────────────────────────────────────────────────
333
+ // --- Main Engine ---------------------------------------------------------------
334
334
 
335
335
  export class EvaluationEngine {
336
336
  private weights: ScoringWeights;
@@ -479,7 +479,7 @@ export class EvaluationEngine {
479
479
  }
480
480
  }
481
481
 
482
- // ─── Factory ─────────────────────────────────────────────────────────────────
482
+ // --- Factory -----------------------------------------------------------------
483
483
 
484
484
  export function createEvaluationEngine(
485
485
  weights?: Partial<ScoringWeights>,
@@ -4,7 +4,7 @@
4
4
  * Interfaces for task evaluation and acceptance criteria checking.
5
5
  */
6
6
 
7
- // ─── Task Output Types ─────────────────────────────────────────────────────────
7
+ // --- Task Output Types ---------------------------------------------------------
8
8
 
9
9
  export interface TaskOutputArtifact {
10
10
  id: string;
@@ -44,7 +44,7 @@ export interface CompiledTask {
44
44
  mandatoryStages: string[];
45
45
  }
46
46
 
47
- // ─── Evaluation Types ─────────────────────────────────────────────────────────
47
+ // --- Evaluation Types ---------------------------------------------------------
48
48
 
49
49
  export interface EvaluationRequest {
50
50
  jobId: string;
@@ -113,7 +113,7 @@ export type EvaluationState =
113
113
  | "failed"
114
114
  | "needs_review";
115
115
 
116
- // ─── Scoring Weights ───────────────────────────────────────────────────────────
116
+ // --- Scoring Weights -----------------------------------------------------------
117
117
 
118
118
  export interface ScoringWeights {
119
119
  correctness: number;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/evaluation-runner",
3
- "version": "0.9.24",
3
+ "version": "0.9.25",
4
4
  "type": "module",
5
5
  "description": "Framework-agnostic evaluation framework for AI outputs (RFC-0020)",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,121 @@
1
+ /**
2
+ * HerdrEventBus — File-based cross-process event bus for herdr tabs.
3
+ *
4
+ * Uses JSONL files in a shared workspace so separate pi processes
5
+ * (coding agent, review agent, etc.) can communicate.
6
+ *
7
+ * Architecture:
8
+ * Workspace (shared dir)
9
+ * ├── events.jsonl # Append-only event log
10
+ * ├── subscriptions/ # Per-agent subscription markers
11
+ * └── payloads/ # Event payload files
12
+ *
13
+ * Flow:
14
+ * 1. Agent publishes event → append to events.jsonl + write payload
15
+ * 2. Other agents poll events.jsonl → process matching events
16
+ * 3. Each agent tracks last-read offset in subscriptions/{agentId}.json
17
+ */
18
+ import type { EventPayload } from "./types.js";
19
+ export interface HerdrBusConfig {
20
+ workspace: string;
21
+ pollIntervalMs?: number;
22
+ agentId: string;
23
+ }
24
+ export interface HerdrSubscription {
25
+ id: string;
26
+ topic: string;
27
+ lastOffset: number;
28
+ filter?: (data: unknown) => boolean;
29
+ }
30
+ export declare class HerdrEventBus {
31
+ private readonly workspace;
32
+ private readonly agentId;
33
+ private readonly pollIntervalMs;
34
+ private readonly subscriptions;
35
+ private polling;
36
+ private pollTimer?;
37
+ constructor(config: HerdrBusConfig);
38
+ private ensureDirs;
39
+ subscribe(topic: string, filter?: (data: unknown) => boolean): string;
40
+ unsubscribe(id: string): void;
41
+ publish<T>(topic: string, data: T): string;
42
+ startPolling(handler: (payload: EventPayload<unknown>) => void | Promise<void>): void;
43
+ stopPolling(): void;
44
+ private pollEvents;
45
+ private readNewEvents;
46
+ private subscriptionsPath;
47
+ private saveSubscriptions;
48
+ private loadSubscriptions;
49
+ getSubscribedTopics(): string[];
50
+ getWorkspace(): string;
51
+ }
52
+ export declare function getHerdrWorkspace(): string;
53
+ export declare function createHerdrBus(agentId: string): HerdrEventBus;
54
+ export interface HerdrWorkspace {
55
+ root: string;
56
+ code: string;
57
+ reviews: string;
58
+ payloads: string;
59
+ subscriptions: string;
60
+ }
61
+ export declare function getHerdrWorkspacePaths(): HerdrWorkspace;
62
+ export declare function ensureHerdrWorkspace(): HerdrWorkspace;
63
+ export type LoopVerdict = "approved" | "changes_requested" | "blocked";
64
+ export interface LoopConfig {
65
+ loopId: string;
66
+ writeCount: number;
67
+ reviewCount: number;
68
+ prompt: string;
69
+ nextReviewAfter: number;
70
+ createdAt: string;
71
+ }
72
+ export interface CodeTickPayload {
73
+ loopId: string;
74
+ iteration: number;
75
+ prompt: string;
76
+ }
77
+ export interface CodeWrittenPayload {
78
+ loopId: string;
79
+ iteration: number;
80
+ files: string[];
81
+ summary?: string;
82
+ }
83
+ export interface ReviewTickPayload {
84
+ loopId: string;
85
+ iteration: number;
86
+ codeFiles: string[];
87
+ }
88
+ export interface ReviewCompletedPayload {
89
+ loopId: string;
90
+ iteration: number;
91
+ verdict: LoopVerdict;
92
+ message: string;
93
+ reportFile: string;
94
+ }
95
+ export interface LoopEarlyExitPayload {
96
+ loopId: string;
97
+ reason: LoopVerdict;
98
+ message: string;
99
+ }
100
+ export interface LoopFinishedPayload {
101
+ loopId: string;
102
+ summary: string;
103
+ iterations: {
104
+ writes: number;
105
+ reviews: number;
106
+ finalVerdict: LoopVerdict;
107
+ };
108
+ }
109
+ export declare function publishLoopStarted(bus: HerdrEventBus, config: LoopConfig): string;
110
+ export declare function publishCodeTick(bus: HerdrEventBus, loopId: string, iteration: number, prompt: string): string;
111
+ export declare function publishCodeWritten(bus: HerdrEventBus, loopId: string, iteration: number, files: string[], summary?: string): string;
112
+ export declare function publishReviewTick(bus: HerdrEventBus, loopId: string, iteration: number, codeFiles: string[]): string;
113
+ export declare function publishReviewCompleted(bus: HerdrEventBus, loopId: string, iteration: number, verdict: LoopVerdict, message: string, reportFile: string): string;
114
+ export declare function publishLoopEarlyExit(bus: HerdrEventBus, loopId: string, reason: LoopVerdict, message: string): string;
115
+ export declare function publishLoopFinished(bus: HerdrEventBus, loopId: string, summary: string, writes: number, reviews: number, finalVerdict: LoopVerdict): string;
116
+ export declare function parseVerdict(content: string): LoopVerdict | null;
117
+ export declare function parseVerdictMessage(content: string): string;
118
+ export declare function publishCodeWrittenSimple(bus: HerdrEventBus, taskId: string, files: string[], branch?: string): string;
119
+ export declare function publishReviewRequestedSimple(bus: HerdrEventBus, taskId: string, codeTaskId: string): string;
120
+ export declare function publishReviewCompletedSimple(bus: HerdrEventBus, taskId: string, reportFile: string, status: "approved" | "changes_requested" | "failed"): string;
121
+ //# sourceMappingURL=herdr-bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herdr-bus.d.ts","sourceRoot":"","sources":["../../src/herdr-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAWH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB/C,MAAM,WAAW,cAAc;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;CACpC;AAID,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;IACtE,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAC,CAAiC;IAEnD,YAAY,MAAM,EAAE,cAAc,EAKjC;IAID,OAAO,CAAC,UAAU;IAalB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,CAUpE;IAED,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAG5B;IAID,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAoBzC;IAID,YAAY,CACX,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC/D,IAAI,CAUN;IAED,WAAW,IAAI,IAAI,CAMlB;YAEa,UAAU;IA4CxB,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,iBAAiB;IAmBzB,mBAAmB,IAAI,MAAM,EAAE,CAE9B;IAED,YAAY,IAAI,MAAM,CAErB;CACD;AAMD,wBAAgB,iBAAiB,IAAI,MAAM,CAK1C;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAM7D;AAID,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,sBAAsB,IAAI,cAAc,CASvD;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAarD;AAED,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,mBAAmB,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,WAAW,CAAC;KAC1B,CAAC;CACF;AAID,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,UAAU,GAChB,MAAM,CAER;AAED,wBAAgB,eAAe,CAC9B,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,MAAM,CAMR;AAED,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,MAAM,GACd,MAAM,CAOR;AAED,wBAAgB,iBAAiB,CAChC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EAAE,GACjB,MAAM,CAMR;AAED,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GAChB,MAAM,CAQR;AAED,wBAAgB,oBAAoB,CACnC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,MAAM,GACb,MAAM,CAMR;AAED,wBAAgB,mBAAmB,CAClC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,WAAW,GACvB,MAAM,CAMR;AAeD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAKhE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI3D;AAID,wBAAgB,wBAAwB,CACvC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,CAAC,EAAE,MAAM,GACb,MAAM,CAMR;AAED,wBAAgB,4BAA4B,CAC3C,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,4BAA4B,CAC3C,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,UAAU,GAAG,mBAAmB,GAAG,QAAQ,GACjD,MAAM,CAER"}
@@ -0,0 +1,322 @@
1
+ /**
2
+ * HerdrEventBus — File-based cross-process event bus for herdr tabs.
3
+ *
4
+ * Uses JSONL files in a shared workspace so separate pi processes
5
+ * (coding agent, review agent, etc.) can communicate.
6
+ *
7
+ * Architecture:
8
+ * Workspace (shared dir)
9
+ * ├── events.jsonl # Append-only event log
10
+ * ├── subscriptions/ # Per-agent subscription markers
11
+ * └── payloads/ # Event payload files
12
+ *
13
+ * Flow:
14
+ * 1. Agent publishes event → append to events.jsonl + write payload
15
+ * 2. Other agents poll events.jsonl → process matching events
16
+ * 3. Each agent tracks last-read offset in subscriptions/{agentId}.json
17
+ */
18
+ import { randomUUID } from "crypto";
19
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, writeFileSync, } from "fs";
20
+ import { join } from "path";
21
+ // ─── Config ──────────────────────────────────────────────────────────────
22
+ const DEFAULT_POLL_INTERVAL_MS = 2_000; // 2s poll
23
+ const MAX_EVENTS_PER_POLL = 50;
24
+ const PAYLOADS_DIR = "payloads";
25
+ const SUBSCRIPTIONS_DIR = "subscriptions";
26
+ // ─── HerdrEventBus ────────────────────────────────────────────────────
27
+ export class HerdrEventBus {
28
+ workspace;
29
+ agentId;
30
+ pollIntervalMs;
31
+ subscriptions = new Map();
32
+ polling = false;
33
+ pollTimer;
34
+ constructor(config) {
35
+ this.workspace = config.workspace;
36
+ this.agentId = config.agentId;
37
+ this.pollIntervalMs = config.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
38
+ this.ensureDirs();
39
+ }
40
+ // ─── Setup ────────────────────────────────────────────────────────
41
+ ensureDirs() {
42
+ const dirs = [
43
+ this.workspace,
44
+ join(this.workspace, PAYLOADS_DIR),
45
+ join(this.workspace, SUBSCRIPTIONS_DIR),
46
+ ];
47
+ for (const dir of dirs) {
48
+ if (!existsSync(dir))
49
+ mkdirSync(dir, { recursive: true });
50
+ }
51
+ }
52
+ // ─── Subscribe ────────────────────────────────────────────────────
53
+ subscribe(topic, filter) {
54
+ const id = randomUUID();
55
+ this.subscriptions.set(id, {
56
+ id,
57
+ topic,
58
+ lastOffset: 0,
59
+ filter,
60
+ });
61
+ this.saveSubscriptions();
62
+ return id;
63
+ }
64
+ unsubscribe(id) {
65
+ this.subscriptions.delete(id);
66
+ this.saveSubscriptions();
67
+ }
68
+ // ─── Publish ──────────────────────────────────────────────────────
69
+ publish(topic, data) {
70
+ const eventId = randomUUID();
71
+ const payload = {
72
+ topic,
73
+ data,
74
+ timestamp: new Date().toISOString(),
75
+ eventId,
76
+ source: this.agentId,
77
+ };
78
+ // Write payload file
79
+ const payloadPath = join(this.workspace, PAYLOADS_DIR, `${eventId}.json`);
80
+ writeFileSync(payloadPath, JSON.stringify(payload, null, 2));
81
+ // Append event reference to log
82
+ const logLine = JSON.stringify({ eventId, topic, ts: payload.timestamp }) + "\n";
83
+ appendFileSync(join(this.workspace, "events.jsonl"), logLine);
84
+ return eventId;
85
+ }
86
+ // ─── Poll ────────────────────────────────────────────────────────
87
+ startPolling(handler) {
88
+ if (this.polling)
89
+ return;
90
+ this.polling = true;
91
+ // Load last offsets from disk
92
+ this.loadSubscriptions();
93
+ this.pollTimer = setInterval(() => {
94
+ this.pollEvents(handler).catch(console.error);
95
+ }, this.pollIntervalMs);
96
+ }
97
+ stopPolling() {
98
+ this.polling = false;
99
+ if (this.pollTimer) {
100
+ clearInterval(this.pollTimer);
101
+ this.pollTimer = undefined;
102
+ }
103
+ }
104
+ async pollEvents(handler) {
105
+ const logPath = join(this.workspace, "events.jsonl");
106
+ if (!existsSync(logPath))
107
+ return;
108
+ for (const [, sub] of this.subscriptions) {
109
+ const events = this.readNewEvents(sub.lastOffset);
110
+ let newOffset = sub.lastOffset;
111
+ for (const event of events) {
112
+ if (event.topic !== sub.topic)
113
+ continue;
114
+ if (sub.filter && !sub.filter(event.data))
115
+ continue;
116
+ // Load full payload
117
+ const payloadPath = join(this.workspace, PAYLOADS_DIR, `${event.eventId}.json`);
118
+ if (!existsSync(payloadPath))
119
+ continue;
120
+ try {
121
+ const payload = JSON.parse(readFileSync(payloadPath, "utf-8"));
122
+ // Skip own events
123
+ if (payload.source === this.agentId)
124
+ continue;
125
+ await handler(payload);
126
+ newOffset = event._byteOffset;
127
+ }
128
+ catch {
129
+ // skip malformed payload
130
+ }
131
+ }
132
+ // Update offset
133
+ if (newOffset > sub.lastOffset) {
134
+ sub.lastOffset = newOffset;
135
+ }
136
+ }
137
+ this.saveSubscriptions();
138
+ }
139
+ readNewEvents(fromOffset) {
140
+ const logPath = join(this.workspace, "events.jsonl");
141
+ if (!existsSync(logPath))
142
+ return [];
143
+ const content = readFileSync(logPath, "utf-8");
144
+ const lines = content
145
+ .split("\n")
146
+ .filter((line) => line.trim() !== "");
147
+ const events = [];
148
+ let offset = 0;
149
+ for (const line of lines) {
150
+ offset += line.length + 1; // +1 for newline
151
+ if (offset <= fromOffset)
152
+ continue;
153
+ if (events.length >= MAX_EVENTS_PER_POLL)
154
+ break;
155
+ try {
156
+ const parsed = JSON.parse(line);
157
+ events.push(parsed);
158
+ }
159
+ catch {
160
+ // skip malformed lines
161
+ }
162
+ }
163
+ return events;
164
+ }
165
+ // ─── Persistence ─────────────────────────────────────────────────
166
+ subscriptionsPath() {
167
+ return join(this.workspace, SUBSCRIPTIONS_DIR, `${this.agentId}.json`);
168
+ }
169
+ saveSubscriptions() {
170
+ const path = this.subscriptionsPath();
171
+ const data = Object.fromEntries(this.subscriptions);
172
+ writeFileSync(path, JSON.stringify(data, null, 2));
173
+ }
174
+ loadSubscriptions() {
175
+ const path = this.subscriptionsPath();
176
+ if (!existsSync(path))
177
+ return;
178
+ try {
179
+ const data = JSON.parse(readFileSync(path, "utf-8"));
180
+ for (const [id, sub] of Object.entries(data)) {
181
+ this.subscriptions.set(id, sub);
182
+ }
183
+ }
184
+ catch {
185
+ // ignore
186
+ }
187
+ }
188
+ // ─── Query ──────────────────────────────────────────────────────
189
+ getSubscribedTopics() {
190
+ return [...new Set([...this.subscriptions.values()].map((s) => s.topic))];
191
+ }
192
+ getWorkspace() {
193
+ return this.workspace;
194
+ }
195
+ }
196
+ // ─── Factory ────────────────────────────────────────────────────────────────
197
+ const HERDR_WORKSPACE = "/tmp/herdr-workspace";
198
+ export function getHerdrWorkspace() {
199
+ if (!existsSync(HERDR_WORKSPACE)) {
200
+ mkdirSync(HERDR_WORKSPACE, { recursive: true });
201
+ }
202
+ return HERDR_WORKSPACE;
203
+ }
204
+ export function createHerdrBus(agentId) {
205
+ return new HerdrEventBus({
206
+ workspace: getHerdrWorkspace(),
207
+ agentId,
208
+ pollIntervalMs: DEFAULT_POLL_INTERVAL_MS,
209
+ });
210
+ }
211
+ export function getHerdrWorkspacePaths() {
212
+ const root = getHerdrWorkspace();
213
+ return {
214
+ root,
215
+ code: join(root, "code"),
216
+ reviews: join(root, "reviews"),
217
+ payloads: join(root, "payloads"),
218
+ subscriptions: join(root, "subscriptions"),
219
+ };
220
+ }
221
+ export function ensureHerdrWorkspace() {
222
+ const paths = getHerdrWorkspacePaths();
223
+ const dirs = [
224
+ paths.root,
225
+ paths.code,
226
+ paths.reviews,
227
+ paths.payloads,
228
+ paths.subscriptions,
229
+ ];
230
+ for (const dir of dirs) {
231
+ if (!existsSync(dir))
232
+ mkdirSync(dir, { recursive: true });
233
+ }
234
+ return paths;
235
+ }
236
+ // ─── Loop Event Publishers ────────────────────────────────────────────────────
237
+ export function publishLoopStarted(bus, config) {
238
+ return bus.publish("loop.started", config);
239
+ }
240
+ export function publishCodeTick(bus, loopId, iteration, prompt) {
241
+ return bus.publish("code.tick", {
242
+ loopId,
243
+ iteration,
244
+ prompt,
245
+ });
246
+ }
247
+ export function publishCodeWritten(bus, loopId, iteration, files, summary) {
248
+ return bus.publish("code.written", {
249
+ loopId,
250
+ iteration,
251
+ files,
252
+ summary,
253
+ });
254
+ }
255
+ export function publishReviewTick(bus, loopId, iteration, codeFiles) {
256
+ return bus.publish("review.tick", {
257
+ loopId,
258
+ iteration,
259
+ codeFiles,
260
+ });
261
+ }
262
+ export function publishReviewCompleted(bus, loopId, iteration, verdict, message, reportFile) {
263
+ return bus.publish("review.completed", {
264
+ loopId,
265
+ iteration,
266
+ verdict,
267
+ message,
268
+ reportFile,
269
+ });
270
+ }
271
+ export function publishLoopEarlyExit(bus, loopId, reason, message) {
272
+ return bus.publish("loop.early_exit", {
273
+ loopId,
274
+ reason,
275
+ message,
276
+ });
277
+ }
278
+ export function publishLoopFinished(bus, loopId, summary, writes, reviews, finalVerdict) {
279
+ return bus.publish("loop.finished", {
280
+ loopId,
281
+ summary,
282
+ iterations: { writes, reviews, finalVerdict },
283
+ });
284
+ }
285
+ // ─── Verdict Parser ──────────────────────────────────────────────────────────
286
+ const VERDICT_PATTERNS = [
287
+ { pattern: /^##\s*Verdict:\s*APPROVED/im, verdict: "approved" },
288
+ {
289
+ pattern: /^##\s*Verdict:\s*CHANGES_REQUESTED/im,
290
+ verdict: "changes_requested",
291
+ },
292
+ { pattern: /^##\s*Verdict:\s*CHANGES/i, verdict: "changes_requested" },
293
+ { pattern: /^##\s*Verdict:\s*BLOCKED/im, verdict: "blocked" },
294
+ { pattern: /^##\s*Verdict:\s*FAIL/im, verdict: "blocked" },
295
+ ];
296
+ export function parseVerdict(content) {
297
+ for (const { pattern, verdict } of VERDICT_PATTERNS) {
298
+ if (pattern.test(content))
299
+ return verdict;
300
+ }
301
+ return null;
302
+ }
303
+ export function parseVerdictMessage(content) {
304
+ // Extract the paragraph after ## Verdict: X
305
+ const match = content.match(/^##\s*Verdict:\s*\w+\s*\n+(.+?)(?=^##|\n+$)/ms);
306
+ return match ? match[1].trim().slice(0, 500) : content.slice(0, 200);
307
+ }
308
+ // ─── Simple Convenience Publishers (non-loop) ──────────────────────────────
309
+ export function publishCodeWrittenSimple(bus, taskId, files, branch) {
310
+ return bus.publish("code.written", {
311
+ taskId,
312
+ files,
313
+ branch,
314
+ });
315
+ }
316
+ export function publishReviewRequestedSimple(bus, taskId, codeTaskId) {
317
+ return bus.publish("review.requested", { taskId, codeTaskId });
318
+ }
319
+ export function publishReviewCompletedSimple(bus, taskId, reportFile, status) {
320
+ return bus.publish("review.completed", { taskId, reportFile, status });
321
+ }
322
+ //# sourceMappingURL=herdr-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herdr-bus.js","sourceRoot":"","sources":["../../src/herdr-bus.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export { EventBus } from "./bus.js";
2
2
  export { EventBusError } from "./types.js";
3
3
  export type { Topic, EventPayload, Subscriber, Subscription, BusOptions, } from "./types.js";
4
+ export type { LoopVerdict, LoopConfig, CodeTickPayload, CodeWrittenPayload, ReviewTickPayload, ReviewCompletedPayload, LoopEarlyExitPayload, LoopFinishedPayload, } from "./herdr-bus.js";
5
+ export { HerdrEventBus, createHerdrBus, getHerdrWorkspace, getHerdrWorkspacePaths, ensureHerdrWorkspace, publishCodeWritten, publishReviewRequestedSimple, publishReviewCompletedSimple, publishLoopStarted, publishCodeTick, publishReviewTick, publishReviewCompleted, publishLoopEarlyExit, publishLoopFinished, parseVerdict, parseVerdictMessage, publishCodeWrittenSimple, } from "./herdr-bus.js";
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACX,KAAK,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,GACV,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,YAAY,EACX,KAAK,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,GACV,MAAM,YAAY,CAAC;AACpB,YAAY,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,GACxB,MAAM,gBAAgB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export { EventBus } from "./bus.js";
2
2
  export { EventBusError } from "./types.js";
3
+ export { HerdrEventBus, createHerdrBus, getHerdrWorkspace, getHerdrWorkspacePaths, ensureHerdrWorkspace, publishCodeWritten, publishReviewRequestedSimple, publishReviewCompletedSimple, publishLoopStarted, publishCodeTick, publishReviewTick, publishReviewCompleted, publishLoopEarlyExit, publishLoopFinished, parseVerdict, parseVerdictMessage, publishCodeWrittenSimple, } from "./herdr-bus.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAkB3C,OAAO,EACN,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,GACxB,MAAM,gBAAgB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/event-bus",
3
- "version": "0.9.24",
3
+ "version": "0.9.25",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {