pi-harness-runtime 0.9.25 → 1.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 (350) hide show
  1. package/CHANGELOG.md +49 -7
  2. package/README.md +173 -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 +5 -5
  9. package/harness/e2e/openai-quota-scraper.ts +13 -8
  10. package/harness/forked-summarizer.ts +4 -4
  11. package/harness/herdr-agents.ts +91 -0
  12. package/harness/index.ts +5 -5
  13. package/harness/loop-code-agent.ts +284 -0
  14. package/harness/loop-controller.ts +201 -0
  15. package/harness/loop-review-agent.ts +295 -0
  16. package/harness/loop-runtime.ts +10 -10
  17. package/harness/loop-types.ts +118 -0
  18. package/harness/notification-events.ts +3 -3
  19. package/harness/output-limit-handler.ts +1 -1
  20. package/harness/partial-recovery.ts +3 -3
  21. package/harness/session-memory.ts +5 -5
  22. package/index.ts +139 -34
  23. package/package.json +1 -1
  24. package/packages/a2a-adapter/package.json +1 -1
  25. package/packages/a2a-adapter/src/types.ts +5 -5
  26. package/packages/auth/package.json +1 -1
  27. package/packages/autonomous-refactor/package.json +1 -1
  28. package/packages/autonomous-runtime/dist/inbox.d.ts +3 -3
  29. package/packages/autonomous-runtime/dist/inbox.js +12 -12
  30. package/packages/autonomous-runtime/dist/lease.js +14 -14
  31. package/packages/autonomous-runtime/dist/types.js +1 -1
  32. package/packages/autonomous-runtime/package.json +1 -1
  33. package/packages/autonomous-runtime/src/inbox.ts +12 -12
  34. package/packages/autonomous-runtime/src/lease.ts +15 -15
  35. package/packages/autonomous-runtime/src/types.ts +13 -13
  36. package/packages/autonomous-runtime/tsconfig.tsbuildinfo +1 -1
  37. package/packages/cache-strategy/package.json +1 -1
  38. package/packages/capability-registry/dist/types.js +1 -1
  39. package/packages/capability-registry/package.json +1 -1
  40. package/packages/capability-registry/src/types.ts +5 -5
  41. package/packages/checkpoint/README.md +6 -6
  42. package/packages/checkpoint/dist/differ.js +2 -2
  43. package/packages/checkpoint/dist/engine.js +3 -3
  44. package/packages/checkpoint/dist/index.js +5 -5
  45. package/packages/checkpoint/dist/storage.js +3 -3
  46. package/packages/checkpoint/dist/types.js +1 -1
  47. package/packages/checkpoint/package.json +1 -1
  48. package/packages/checkpoint/src/differ.ts +2 -2
  49. package/packages/checkpoint/src/engine.ts +3 -3
  50. package/packages/checkpoint/src/index.ts +5 -5
  51. package/packages/checkpoint/src/storage.ts +3 -3
  52. package/packages/checkpoint/src/types.ts +10 -10
  53. package/packages/checkpoint/tsconfig.tsbuildinfo +1 -1
  54. package/packages/cli-plugin-sdk/package.json +1 -1
  55. package/packages/clipboard/dist/src/clipboard.d.ts.map +1 -1
  56. package/packages/clipboard/dist/src/clipboard.js +15 -7
  57. package/packages/clipboard/dist/src/clipboard.js.map +1 -1
  58. package/packages/clipboard/dist/src/copy-sync.d.ts +27 -0
  59. package/packages/clipboard/dist/src/copy-sync.d.ts.map +1 -0
  60. package/packages/clipboard/dist/src/copy-sync.js +170 -0
  61. package/packages/clipboard/dist/src/copy-sync.js.map +1 -0
  62. package/packages/clipboard/dist/src/gist-relay.d.ts +48 -0
  63. package/packages/clipboard/dist/src/gist-relay.d.ts.map +1 -0
  64. package/packages/clipboard/dist/src/gist-relay.js +186 -0
  65. package/packages/clipboard/dist/src/gist-relay.js.map +1 -0
  66. package/packages/clipboard/dist/src/github-login.d.ts +16 -0
  67. package/packages/clipboard/dist/src/github-login.d.ts.map +1 -0
  68. package/packages/clipboard/dist/src/github-login.js +69 -0
  69. package/packages/clipboard/dist/src/github-login.js.map +1 -0
  70. package/packages/clipboard/dist/src/index.d.ts +2 -0
  71. package/packages/clipboard/dist/src/index.d.ts.map +1 -1
  72. package/packages/clipboard/dist/src/index.js +2 -1
  73. package/packages/clipboard/dist/src/index.js.map +1 -1
  74. package/packages/clipboard/package.json +1 -1
  75. package/packages/clipboard/src/clipboard.ts +16 -9
  76. package/packages/clipboard/src/copy-sync.ts +201 -0
  77. package/packages/clipboard/src/gist-relay.ts +240 -0
  78. package/packages/clipboard/src/github-login.ts +107 -0
  79. package/packages/clipboard/src/index.ts +2 -0
  80. package/packages/clipboard/test/mojibake.test.mjs +143 -0
  81. package/packages/code-generation/README.md +13 -13
  82. package/packages/code-generation/dist/faker.js +4 -4
  83. package/packages/code-generation/dist/generator.js +3 -3
  84. package/packages/code-generation/dist/index.js +3 -3
  85. package/packages/code-generation/dist/templates/registry.js +1 -1
  86. package/packages/code-generation/dist/types.js +1 -1
  87. package/packages/code-generation/package.json +1 -1
  88. package/packages/code-generation/src/faker.ts +5 -5
  89. package/packages/code-generation/src/generator.ts +4 -4
  90. package/packages/code-generation/src/index.ts +3 -3
  91. package/packages/code-generation/src/templates/registry.ts +1 -1
  92. package/packages/code-generation/src/types.ts +10 -10
  93. package/packages/code-generation/tsconfig.tsbuildinfo +1 -1
  94. package/packages/code-review/README.md +13 -13
  95. package/packages/code-review/dist/engine.js +3 -3
  96. package/packages/code-review/dist/index.js +3 -3
  97. package/packages/code-review/dist/types.js +1 -1
  98. package/packages/code-review/package.json +1 -1
  99. package/packages/code-review/src/engine.ts +3 -3
  100. package/packages/code-review/src/index.ts +3 -3
  101. package/packages/code-review/src/types.ts +10 -10
  102. package/packages/code-review/tsconfig.tsbuildinfo +1 -1
  103. package/packages/codex-adapter/package.json +1 -1
  104. package/packages/context-compiler/dist/compiler.js +1 -1
  105. package/packages/context-compiler/package.json +1 -1
  106. package/packages/context-compiler/src/compiler.ts +1 -1
  107. package/packages/context-compiler/src/types.ts +11 -11
  108. package/packages/context-compiler/test/context-compiler.test.ts +11 -11
  109. package/packages/context-discovery/package.json +1 -1
  110. package/packages/context-manager/package.json +1 -1
  111. package/packages/cookie-sanitizer/README.md +27 -27
  112. package/packages/cookie-sanitizer/package.json +1 -1
  113. package/packages/cost-optimizer/package.json +1 -1
  114. package/packages/cost-optimizer/src/types.ts +5 -5
  115. package/packages/dependency-analyzer/package.json +1 -1
  116. package/packages/django-plugin/dist/analyzer.js +7 -7
  117. package/packages/django-plugin/package.json +1 -1
  118. package/packages/django-plugin/src/analyzer.ts +7 -7
  119. package/packages/doc-generator/package.json +1 -1
  120. package/packages/evaluation-engine/dist/engine.js +9 -9
  121. package/packages/evaluation-engine/package.json +1 -1
  122. package/packages/evaluation-engine/src/engine.ts +9 -9
  123. package/packages/evaluation-engine/src/types.ts +3 -3
  124. package/packages/evaluation-runner/package.json +1 -1
  125. package/packages/event-bus/dist/src/herdr-bus.d.ts +121 -0
  126. package/packages/event-bus/dist/src/herdr-bus.d.ts.map +1 -0
  127. package/packages/event-bus/dist/src/herdr-bus.js +322 -0
  128. package/packages/event-bus/dist/src/herdr-bus.js.map +1 -0
  129. package/packages/event-bus/dist/src/index.d.ts +2 -0
  130. package/packages/event-bus/dist/src/index.d.ts.map +1 -1
  131. package/packages/event-bus/dist/src/index.js +1 -0
  132. package/packages/event-bus/dist/src/index.js.map +1 -1
  133. package/packages/event-bus/package.json +1 -1
  134. package/packages/event-bus/src/herdr-bus.ts +525 -0
  135. package/packages/event-bus/src/index.ts +29 -0
  136. package/packages/event-store/package.json +1 -1
  137. package/packages/experience-replay/dist/replay.js +7 -7
  138. package/packages/experience-replay/package.json +1 -1
  139. package/packages/experience-replay/src/replay.ts +7 -7
  140. package/packages/experience-replay/src/types.ts +5 -5
  141. package/packages/feedback-collector/package.json +1 -1
  142. package/packages/framework-detector/README.md +18 -18
  143. package/packages/framework-detector/dist/detector.js +3 -3
  144. package/packages/framework-detector/dist/index.js +3 -3
  145. package/packages/framework-detector/dist/signatures/registry.js +24 -24
  146. package/packages/framework-detector/dist/types.js +1 -1
  147. package/packages/framework-detector/package.json +1 -1
  148. package/packages/framework-detector/src/detector.ts +3 -3
  149. package/packages/framework-detector/src/index.ts +3 -3
  150. package/packages/framework-detector/src/signatures/registry.ts +24 -24
  151. package/packages/framework-detector/src/types.ts +7 -7
  152. package/packages/framework-detector/tsconfig.tsbuildinfo +1 -1
  153. package/packages/framework-plugin-sdk/README.md +23 -23
  154. package/packages/framework-plugin-sdk/dist/index.js +2 -2
  155. package/packages/framework-plugin-sdk/dist/manager.js +3 -3
  156. package/packages/framework-plugin-sdk/dist/types.js +2 -2
  157. package/packages/framework-plugin-sdk/package.json +1 -1
  158. package/packages/framework-plugin-sdk/src/index.ts +2 -2
  159. package/packages/framework-plugin-sdk/src/manager.ts +3 -3
  160. package/packages/framework-plugin-sdk/src/types.ts +10 -10
  161. package/packages/framework-plugin-sdk/tsconfig.tsbuildinfo +1 -1
  162. package/packages/frappe-plugin/dist/analyzer.js +8 -8
  163. package/packages/frappe-plugin/dist/types.js +1 -1
  164. package/packages/frappe-plugin/package.json +1 -1
  165. package/packages/frappe-plugin/src/analyzer.ts +8 -8
  166. package/packages/frappe-plugin/src/types.ts +10 -10
  167. package/packages/generic-web-plugin/dist/analyzer.js +5 -5
  168. package/packages/generic-web-plugin/package.json +1 -1
  169. package/packages/generic-web-plugin/src/analyzer.ts +5 -5
  170. package/packages/health-monitor/package.json +1 -1
  171. package/packages/health-monitor/src/monitor.ts +1 -1
  172. package/packages/intent-analyzer/package.json +1 -1
  173. package/packages/laravel-plugin/dist/analyzer.js +11 -11
  174. package/packages/laravel-plugin/package.json +1 -1
  175. package/packages/laravel-plugin/src/analyzer.ts +11 -11
  176. package/packages/learning-engine/dist/engine.js +5 -5
  177. package/packages/learning-engine/dist/types.js +1 -1
  178. package/packages/learning-engine/package.json +1 -1
  179. package/packages/learning-engine/src/engine.ts +5 -5
  180. package/packages/learning-engine/src/types.ts +6 -6
  181. package/packages/mcp-adapter/package.json +1 -1
  182. package/packages/memory-engine/dist/engine.js +8 -8
  183. package/packages/memory-engine/dist/types.js +2 -2
  184. package/packages/memory-engine/package.json +1 -1
  185. package/packages/memory-engine/src/engine.ts +8 -8
  186. package/packages/memory-engine/src/types.ts +9 -9
  187. package/packages/model-registry/package.json +1 -1
  188. package/packages/model-registry/src/types.ts +4 -4
  189. package/packages/nextjs-plugin/dist/analyzer.js +9 -9
  190. package/packages/nextjs-plugin/package.json +1 -1
  191. package/packages/nextjs-plugin/src/analyzer.ts +9 -9
  192. package/packages/notification/dist/notification-center.js +1 -1
  193. package/packages/notification/package.json +1 -1
  194. package/packages/notification/src/notification-center.ts +1 -1
  195. package/packages/observability/dist/alerts.js +2 -2
  196. package/packages/observability/dist/health.js +4 -4
  197. package/packages/observability/dist/index.js +6 -6
  198. package/packages/observability/dist/logger.js +7 -7
  199. package/packages/observability/dist/metrics.js +11 -11
  200. package/packages/observability/dist/tracer.js +3 -3
  201. package/packages/observability/dist/types.js +1 -1
  202. package/packages/observability/package.json +1 -1
  203. package/packages/observability/src/alerts.ts +2 -2
  204. package/packages/observability/src/health.ts +4 -4
  205. package/packages/observability/src/index.ts +6 -6
  206. package/packages/observability/src/logger.ts +7 -7
  207. package/packages/observability/src/metrics.ts +11 -11
  208. package/packages/observability/src/tracer.ts +3 -3
  209. package/packages/observability/src/types.ts +7 -7
  210. package/packages/observability/test/observability.test.ts +4 -4
  211. package/packages/observability/tsconfig.tsbuildinfo +1 -1
  212. package/packages/performance-optimizer/dist/optimizer.js +1 -1
  213. package/packages/performance-optimizer/package.json +1 -1
  214. package/packages/performance-optimizer/src/optimizer.ts +1 -1
  215. package/packages/performance-optimizer/src/types.ts +4 -4
  216. package/packages/privilege-broker/package.json +1 -1
  217. package/packages/project-analyzer/dist/analyzer.js +4 -4
  218. package/packages/project-analyzer/dist/index.js +8 -8
  219. package/packages/project-analyzer/dist/signals.js +3 -3
  220. package/packages/project-analyzer/dist/types.js +1 -1
  221. package/packages/project-analyzer/package.json +1 -1
  222. package/packages/project-analyzer/src/analyzer.ts +4 -4
  223. package/packages/project-analyzer/src/index.ts +9 -9
  224. package/packages/project-analyzer/src/signals.ts +4 -4
  225. package/packages/project-analyzer/src/types.ts +15 -15
  226. package/packages/project-analyzer/test/index.test.ts +17 -17
  227. package/packages/project-analyzer/tsconfig.tsbuildinfo +1 -1
  228. package/packages/projection-engine/package.json +1 -1
  229. package/packages/prompt-compiler/dist/section-builder.js +1 -1
  230. package/packages/prompt-compiler/dist/types.js +3 -3
  231. package/packages/prompt-compiler/package.json +1 -1
  232. package/packages/prompt-compiler/src/section-builder.ts +1 -1
  233. package/packages/prompt-compiler/src/types.ts +12 -12
  234. package/packages/prompt-compiler/test/prompt-compiler.test.ts +12 -12
  235. package/packages/prompt-versioning/package.json +1 -1
  236. package/packages/provider-adapter-sdk/dist/builder.js +1 -1
  237. package/packages/provider-adapter-sdk/dist/index.js +5 -5
  238. package/packages/provider-adapter-sdk/dist/registry.js +1 -1
  239. package/packages/provider-adapter-sdk/dist/tester.js +1 -1
  240. package/packages/provider-adapter-sdk/dist/types.js +1 -1
  241. package/packages/provider-adapter-sdk/package.json +1 -1
  242. package/packages/provider-adapter-sdk/src/builder.ts +1 -1
  243. package/packages/provider-adapter-sdk/src/index.ts +6 -6
  244. package/packages/provider-adapter-sdk/src/registry.ts +1 -1
  245. package/packages/provider-adapter-sdk/src/tester.ts +1 -1
  246. package/packages/provider-adapter-sdk/src/types.ts +5 -5
  247. package/packages/provider-adapter-sdk/tsconfig.tsbuildinfo +1 -1
  248. package/packages/provider-router/package.json +1 -1
  249. package/packages/provider-router/src/types.ts +4 -4
  250. package/packages/provider-selector/package.json +1 -1
  251. package/packages/providers/dist/deepagents-adapter.js +1 -1
  252. package/packages/providers/package.json +1 -1
  253. package/packages/providers/src/deepagents-adapter.ts +1 -1
  254. package/packages/quota-manager/package.json +1 -1
  255. package/packages/rate-limiter/package.json +1 -1
  256. package/packages/react-vite-plugin/dist/analyzer.js +7 -7
  257. package/packages/react-vite-plugin/package.json +1 -1
  258. package/packages/react-vite-plugin/src/analyzer.ts +7 -7
  259. package/packages/release-manager/package.json +1 -1
  260. package/packages/requirement-compiler/dist/compiler.js +17 -17
  261. package/packages/requirement-compiler/dist/types.js +2 -2
  262. package/packages/requirement-compiler/package.json +1 -1
  263. package/packages/requirement-compiler/src/compiler.ts +17 -17
  264. package/packages/requirement-compiler/src/types.ts +21 -21
  265. package/packages/requirement-compiler/test/requirement-compiler.test.ts +17 -17
  266. package/packages/runtime/dist/command-executor.js +1 -1
  267. package/packages/runtime/dist/local-runtime-agent.js +1 -1
  268. package/packages/runtime/dist/policy-engine.js +1 -1
  269. package/packages/runtime/dist/runtime-api.js +1 -1
  270. package/packages/runtime/dist/workspace-manager.js +1 -1
  271. package/packages/runtime/package.json +1 -1
  272. package/packages/runtime/src/command-executor.ts +1 -1
  273. package/packages/runtime/src/local-runtime-agent.ts +1 -1
  274. package/packages/runtime/src/policy-engine.ts +1 -1
  275. package/packages/runtime/src/runtime-api.ts +1 -1
  276. package/packages/runtime/src/workspace-manager.ts +1 -1
  277. package/packages/scheduler/package.json +1 -1
  278. package/packages/scheduler-adapter/package.json +1 -1
  279. package/packages/session/README.md +18 -18
  280. package/packages/session/dist/history.js +3 -3
  281. package/packages/session/dist/index.js +5 -5
  282. package/packages/session/dist/manager.js +3 -3
  283. package/packages/session/dist/policy.js +2 -2
  284. package/packages/session/dist/store.js +2 -2
  285. package/packages/session/dist/types.js +1 -1
  286. package/packages/session/package.json +1 -1
  287. package/packages/session/src/history.ts +3 -3
  288. package/packages/session/src/index.ts +5 -5
  289. package/packages/session/src/manager.ts +3 -3
  290. package/packages/session/src/policy.ts +4 -4
  291. package/packages/session/src/store.ts +3 -3
  292. package/packages/session/src/types.ts +10 -10
  293. package/packages/session/tsconfig.tsbuildinfo +1 -1
  294. package/packages/session-api/package.json +1 -1
  295. package/packages/session-export/package.json +1 -1
  296. package/packages/shared-context/package.json +1 -1
  297. package/packages/skill-registry/package.json +1 -1
  298. package/packages/skill-registry/src/types.ts +4 -4
  299. package/packages/sprint-planner/package.json +1 -1
  300. package/packages/subscription-engine/package.json +1 -1
  301. package/packages/task-compiler/dist/compiler.js +7 -7
  302. package/packages/task-compiler/dist/decompose.js +11 -11
  303. package/packages/task-compiler/dist/file-scope.js +6 -6
  304. package/packages/task-compiler/dist/graph.js +6 -6
  305. package/packages/task-compiler/dist/index.js +2 -2
  306. package/packages/task-compiler/dist/types.js +5 -5
  307. package/packages/task-compiler/dist/validate.js +2 -2
  308. package/packages/task-compiler/dist/verification.js +2 -2
  309. package/packages/task-compiler/package.json +1 -1
  310. package/packages/task-compiler/src/command-policy.ts +1 -1
  311. package/packages/task-compiler/src/compiler.ts +7 -7
  312. package/packages/task-compiler/src/decompose.ts +11 -11
  313. package/packages/task-compiler/src/file-scope.ts +6 -6
  314. package/packages/task-compiler/src/graph.ts +6 -6
  315. package/packages/task-compiler/src/index.ts +3 -3
  316. package/packages/task-compiler/src/types.ts +14 -14
  317. package/packages/task-compiler/src/validate.ts +2 -2
  318. package/packages/task-compiler/src/verification.ts +2 -2
  319. package/packages/task-compiler/test/task-compiler.test.ts +10 -10
  320. package/packages/test-data-generator/README.md +13 -13
  321. package/packages/test-data-generator/dist/faker-adapter.js +4 -4
  322. package/packages/test-data-generator/dist/generator.js +3 -3
  323. package/packages/test-data-generator/dist/index.js +3 -3
  324. package/packages/test-data-generator/dist/types.js +1 -1
  325. package/packages/test-data-generator/package.json +1 -1
  326. package/packages/test-data-generator/src/faker-adapter.ts +4 -4
  327. package/packages/test-data-generator/src/generator.ts +3 -3
  328. package/packages/test-data-generator/src/index.ts +3 -3
  329. package/packages/test-data-generator/src/types.ts +9 -9
  330. package/packages/test-data-generator/tsconfig.tsbuildinfo +1 -1
  331. package/packages/test-generator/package.json +1 -1
  332. package/packages/todo-bd-sync/package.json +22 -0
  333. package/packages/todo-bd-sync/src/detector.ts +150 -0
  334. package/packages/todo-bd-sync/src/extension.ts +101 -0
  335. package/packages/todo-bd-sync/src/index.ts +401 -0
  336. package/packages/todo-bd-sync/src/sync.ts +322 -0
  337. package/packages/todo-bd-sync/src/todo-reminder.ts +418 -0
  338. package/packages/todo-bd-sync/src/types.ts +137 -0
  339. package/packages/token-estimation/package.json +1 -1
  340. package/packages/token-optimizer/package.json +1 -1
  341. package/packages/tui/package.json +1 -1
  342. package/packages/types/package.json +1 -1
  343. package/packages/types/src/agent-worker-types.ts +5 -5
  344. package/packages/types/src/runtime-types.ts +12 -12
  345. package/packages/types/tsconfig.tsbuildinfo +1 -1
  346. package/packages/workflow-events/package.json +1 -1
  347. package/packages/workspace-scanner/package.json +1 -1
  348. package/packages/worktree/package.json +1 -1
  349. package/renderer.ts +7 -7
  350. package/skills/harness-runtime/SKILL.md +15 -15
@@ -1,20 +1,20 @@
1
1
  # @pi-harness/cookie-sanitizer
2
2
 
3
- > Forgiving input → strict canonical cache for provider-quota mirroring.
3
+ > Forgiving input -> strict canonical cache for provider-quota mirroring.
4
4
 
5
5
  A normalization boundary that lets users drop **any** cookie file (any name, any format) into a known folder, and turns it into a single standard Netscape file the rest of the runtime can rely on.
6
6
 
7
7
  ```
8
- ~/.pi-harness-runtime/cookies/ ← user drops anything here
9
- │
8
+ ~/.pi-harness-runtime/cookies/ <- user drops anything here
9
+ |
10
10
  ▼
11
- Cookie Sanitizer ← THIS PACKAGE
12
- │
11
+ Cookie Sanitizer <- THIS PACKAGE
12
+ |
13
13
  ▼
14
- ~/.config/<provider>-cookies.txt ← canonical, runtime-owned
15
- │
14
+ ~/.config/<provider>-cookies.txt <- canonical, runtime-owned
15
+ |
16
16
  ▼
17
- MiniMaxQuotaScraper (unchanged) ← reads only the canonical
17
+ MiniMaxQuotaScraper (unchanged) <- reads only the canonical
18
18
  ```
19
19
 
20
20
  ## Why
@@ -30,8 +30,8 @@ The previous design expected users to know the exact path (`~/.config/minimax-co
30
30
 
31
31
  **File names** — any name in the drop folder. Inference prefers:
32
32
 
33
- 1. Filename hint (`minimax-*.txt`, `*claude*`, etc.) → provider
34
- 2. Dominant cookie domain (≥ 80% match) → provider
33
+ 1. Filename hint (`minimax-*.txt`, `*claude*`, etc.) -> provider
34
+ 2. Dominant cookie domain (≥ 80% match) -> provider
35
35
  3. `providerHint` option overrides all of the above
36
36
 
37
37
  **Provider scope** — currently shipping with: `minimax`, `anthropic`, `openai`, `glm`, `openrouter`. The registry is open and inference by domain works for any provider whose cookies are in the drop folder.
@@ -46,7 +46,7 @@ import { sync } from "@pi-harness/cookie-sanitizer";
46
46
  const result = sync();
47
47
 
48
48
  if (result.wrote) {
49
- console.log(`Synced ${result.totalCookies} cookies for ${result.provider} → ${result.cachePath}`);
49
+ console.log(`Synced ${result.totalCookies} cookies for ${result.provider} -> ${result.cachePath}`);
50
50
  } else {
51
51
  console.log(`No-op: ${result.errors[0]?.message ?? "nothing to sync"}`);
52
52
  }
@@ -60,7 +60,7 @@ import { CookieWatcher } from "@pi-harness/cookie-sanitizer";
60
60
  const watcher = new CookieWatcher({
61
61
  dropDir: "~/.pi-harness-runtime/cookies",
62
62
  onEvent: (e) => {
63
- if (e.kind === "sync-ok") console.log(`Synced ${e.cookies} cookies → ${e.cachePath}`);
63
+ if (e.kind === "sync-ok") console.log(`Synced ${e.cookies} cookies -> ${e.cachePath}`);
64
64
  if (e.kind === "sync-error") console.error(`Sync error: ${e.message}`);
65
65
  },
66
66
  });
@@ -115,23 +115,23 @@ bun test test/sync.test.ts
115
115
 
116
116
  ```
117
117
  src/
118
- ├── index.ts # public API surface
119
- ├── types.ts # canonical types
120
- ├── detect-format.ts # Netscape vs JSON detection
121
- ├── parse-netscape.ts # Netscape parser + serializer
122
- ├── parse-json.ts # EditThisCookie JSON parser
123
- ├── normalize.ts # dedupe, expire, domain-match
124
- ├── infer-provider.ts # filename + domain inference
125
- ├── atomic-write.ts # POSIX atomic write
126
- ├── sync.ts # orchestrator
127
- └── watcher.ts # chokidar v5 wrapper
118
+ +-- index.ts # public API surface
119
+ +-- types.ts # canonical types
120
+ +-- detect-format.ts # Netscape vs JSON detection
121
+ +-- parse-netscape.ts # Netscape parser + serializer
122
+ +-- parse-json.ts # EditThisCookie JSON parser
123
+ +-- normalize.ts # dedupe, expire, domain-match
124
+ +-- infer-provider.ts # filename + domain inference
125
+ +-- atomic-write.ts # POSIX atomic write
126
+ +-- sync.ts # orchestrator
127
+ +-- watcher.ts # chokidar v5 wrapper
128
128
 
129
129
  test/
130
- ├── parse.test.ts # 14 cases — Netscape + JSON
131
- ├── normalize.test.ts # 12 cases — dedupe/expire/domain
132
- ├── infer.test.ts # 13 cases — filename + domain + combined
133
- ├── sync.test.ts # 12 cases — end-to-end
134
- └── watcher.test.ts # 2 cases — config sanity (chokidar is exercised live)
130
+ +-- parse.test.ts # 14 cases — Netscape + JSON
131
+ +-- normalize.test.ts # 12 cases — dedupe/expire/domain
132
+ +-- infer.test.ts # 13 cases — filename + domain + combined
133
+ +-- sync.test.ts # 12 cases — end-to-end
134
+ +-- watcher.test.ts # 2 cases — config sanity (chokidar is exercised live)
135
135
  ```
136
136
 
137
137
  ## Limitations
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cookie-sanitizer",
3
- "version": "0.9.24",
3
+ "version": "1.1.0",
4
4
  "description": "pi-harness-runtime — cookie sanitizer (provider-quota cookie file normaliser)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cost-optimizer",
3
- "version": "0.9.24",
3
+ "version": "1.1.0",
4
4
  "description": "Cost Optimizer for pi-harness-runtime — budget tracking, forecasting, and model selection optimization",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -5,7 +5,7 @@
5
5
  // Re-export Currency type
6
6
  export type Currency = "USD" | "THB";
7
7
 
8
- // ─── Cost Entry Types ─────────────────────────────────────────────────
8
+ // --- Cost Entry Types -------------------------------------------------
9
9
 
10
10
  export interface CostEntry {
11
11
  id: string;
@@ -20,7 +20,7 @@ export interface CostEntry {
20
20
  timestamp: string;
21
21
  }
22
22
 
23
- // ─── Budget Types ─────────────────────────────────────────────────────
23
+ // --- Budget Types -----------------------------------------------------
24
24
 
25
25
  export interface CostBudget {
26
26
  daily?: number;
@@ -53,7 +53,7 @@ export interface CostPeriod {
53
53
  type: "day" | "week" | "month" | "custom";
54
54
  }
55
55
 
56
- // ─── Optimization Types ────────────────────────────────────────────────
56
+ // --- Optimization Types ------------------------------------------------
57
57
 
58
58
  export interface CostOptimizerConfig {
59
59
  defaultBudget: CostBudget;
@@ -99,7 +99,7 @@ export interface OptimizedSelection {
99
99
  tradeoffs: string[];
100
100
  }
101
101
 
102
- // ─── Optimizer Interface ─────────────────────────────────────────────
102
+ // --- Optimizer Interface ---------------------------------------------
103
103
 
104
104
  export interface CostOptimizer {
105
105
  trackCost(entry: Omit<CostEntry, "id" | "timestamp">): CostEntry;
@@ -118,7 +118,7 @@ export interface CostOptimizer {
118
118
  ): OptimizedSelection[];
119
119
  }
120
120
 
121
- // ─── Event Types ─────────────────────────────────────────────────────
121
+ // --- Event Types -----------------------------------------------------
122
122
 
123
123
  export type CostOptimizerEvent =
124
124
  | { type: "cost.tracked"; entryId: string; cost: number; total: number }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/dependency-analyzer",
3
- "version": "0.9.24",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -6,7 +6,7 @@
6
6
  import { existsSync } from "node:fs";
7
7
  import { readdir, readFile } from "node:fs/promises";
8
8
  import { join } from "node:path";
9
- // ─── Detection ───────────────────────────────────────────────────────────────
9
+ // --- Detection ---------------------------------------------------------------
10
10
  function isDjangoWorkspace(root) {
11
11
  return (existsSync(join(root, "manage.py")) ||
12
12
  (existsSync(join(root, "settings.py")) &&
@@ -14,7 +14,7 @@ function isDjangoWorkspace(root) {
14
14
  (existsSync(join(root, "requirements.txt")) &&
15
15
  existsSync(join(root, "manage.py"))));
16
16
  }
17
- // ─── Version ────────────────────────────────────────────────────────────────
17
+ // --- Version ----------------------------------------------------------------
18
18
  async function detectVersion(root) {
19
19
  try {
20
20
  const content = await readFile(join(root, "requirements.txt"), "utf-8");
@@ -42,7 +42,7 @@ async function detectVersion(root) {
42
42
  }
43
43
  return undefined;
44
44
  }
45
- // ─── Settings Parser ─────────────────────────────────────────────────────────
45
+ // --- Settings Parser ---------------------------------------------------------
46
46
  async function parseSettings(root) {
47
47
  const installedApps = [];
48
48
  const middleware = [];
@@ -90,7 +90,7 @@ async function parseSettings(root) {
90
90
  }
91
91
  return { installedApps, middleware };
92
92
  }
93
- // ─── Django App Scanner ─────────────────────────────────────────────────────
93
+ // --- Django App Scanner -----------------------------------------------------
94
94
  async function scanDjangoApps(root) {
95
95
  const apps = [];
96
96
  // Django project apps can be:
@@ -153,7 +153,7 @@ async function scanDjangoApps(root) {
153
153
  }
154
154
  return apps;
155
155
  }
156
- // ─── Management Commands ────────────────────────────────────────────────────
156
+ // --- Management Commands ----------------------------------------------------
157
157
  async function findManagementCommands(root) {
158
158
  const commands = [];
159
159
  // Simple recursive scan for management/commands directories
@@ -191,7 +191,7 @@ async function findManagementCommands(root) {
191
191
  }
192
192
  return [...new Set(commands)];
193
193
  }
194
- // ─── Requirements ───────────────────────────────────────────────────────────
194
+ // --- Requirements -----------------------------------------------------------
195
195
  async function parseRequirements(root) {
196
196
  const reqPath = join(root, "requirements.txt");
197
197
  if (!existsSync(reqPath))
@@ -208,7 +208,7 @@ async function parseRequirements(root) {
208
208
  return [];
209
209
  }
210
210
  }
211
- // ─── Main Analyzer ─────────────────────────────────────────────────────────
211
+ // --- Main Analyzer ---------------------------------------------------------
212
212
  export async function analyzeDjango(root) {
213
213
  if (!isDjangoWorkspace(root))
214
214
  return null;
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/django-plugin",
3
- "version": "0.9.24",
3
+ "version": "1.1.0",
4
4
  "description": "Django framework analysis — models, management commands, settings",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -9,7 +9,7 @@ import { readdir, readFile } from "node:fs/promises";
9
9
  import { join } from "node:path";
10
10
  import type { DjangoAnalysis, DjangoApp, ConfigFile } from "./types.js";
11
11
 
12
- // ─── Detection ───────────────────────────────────────────────────────────────
12
+ // --- Detection ---------------------------------------------------------------
13
13
 
14
14
  function isDjangoWorkspace(root: string): boolean {
15
15
  return (
@@ -21,7 +21,7 @@ function isDjangoWorkspace(root: string): boolean {
21
21
  );
22
22
  }
23
23
 
24
- // ─── Version ────────────────────────────────────────────────────────────────
24
+ // --- Version ----------------------------------------------------------------
25
25
 
26
26
  async function detectVersion(root: string): Promise<string | undefined> {
27
27
  try {
@@ -48,7 +48,7 @@ async function detectVersion(root: string): Promise<string | undefined> {
48
48
  return undefined;
49
49
  }
50
50
 
51
- // ─── Settings Parser ─────────────────────────────────────────────────────────
51
+ // --- Settings Parser ---------------------------------------------------------
52
52
 
53
53
  async function parseSettings(root: string): Promise<{
54
54
  installedApps: string[];
@@ -110,7 +110,7 @@ async function parseSettings(root: string): Promise<{
110
110
  return { installedApps, middleware };
111
111
  }
112
112
 
113
- // ─── Django App Scanner ─────────────────────────────────────────────────────
113
+ // --- Django App Scanner -----------------------------------------------------
114
114
 
115
115
  async function scanDjangoApps(root: string): Promise<DjangoApp[]> {
116
116
  const apps: DjangoApp[] = [];
@@ -180,7 +180,7 @@ async function scanDjangoApps(root: string): Promise<DjangoApp[]> {
180
180
  return apps;
181
181
  }
182
182
 
183
- // ─── Management Commands ────────────────────────────────────────────────────
183
+ // --- Management Commands ----------------------------------------------------
184
184
 
185
185
  async function findManagementCommands(root: string): Promise<string[]> {
186
186
  const commands: string[] = [];
@@ -219,7 +219,7 @@ async function findManagementCommands(root: string): Promise<string[]> {
219
219
  return [...new Set(commands)];
220
220
  }
221
221
 
222
- // ─── Requirements ───────────────────────────────────────────────────────────
222
+ // --- Requirements -----------------------------------------------------------
223
223
 
224
224
  async function parseRequirements(root: string): Promise<string[]> {
225
225
  const reqPath = join(root, "requirements.txt");
@@ -237,7 +237,7 @@ async function parseRequirements(root: string): Promise<string[]> {
237
237
  }
238
238
  }
239
239
 
240
- // ─── Main Analyzer ─────────────────────────────────────────────────────────
240
+ // --- Main Analyzer ---------------------------------------------------------
241
241
 
242
242
  export async function analyzeDjango(
243
243
  root: string,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/doc-generator",
3
- "version": "0.9.24",
3
+ "version": "1.1.0",
4
4
  "description": "Auto-Doc Generator — generate documentation from source code (RFC-0014)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { randomUUID } from "node:crypto";
7
7
  import { DEFAULT_SCORING_WEIGHTS } from "./types.js";
8
- // ─── Evidence Collection ───────────────────────────────────────────────────────
8
+ // --- Evidence Collection -------------------------------------------------------
9
9
  function collectEvidence(outputs, testResults, policyFindings) {
10
10
  const evidence = [];
11
11
  // Add test results as evidence
@@ -38,7 +38,7 @@ function collectEvidence(outputs, testResults, policyFindings) {
38
38
  }
39
39
  return evidence;
40
40
  }
41
- // ─── Missing Output Detection ──────────────────────────────────────────────────
41
+ // --- Missing Output Detection --------------------------------------------------
42
42
  function findMissingOutputs(requiredArtifacts, outputs) {
43
43
  const findings = [];
44
44
  const outputPaths = new Set(outputs.filter((o) => o.path).map((o) => o.path));
@@ -57,7 +57,7 @@ function findMissingOutputs(requiredArtifacts, outputs) {
57
57
  }
58
58
  return findings;
59
59
  }
60
- // ─── Test Analysis ────────────────────────────────────────────────────────────
60
+ // --- Test Analysis ------------------------------------------------------------
61
61
  function analyzeTests(testResults) {
62
62
  const findings = [];
63
63
  let passedCount = 0;
@@ -87,7 +87,7 @@ function analyzeTests(testResults) {
87
87
  }
88
88
  return { findings, passedCount, totalCount, hasFailures };
89
89
  }
90
- // ─── Policy Analysis ──────────────────────────────────────────────────────────
90
+ // --- Policy Analysis ----------------------------------------------------------
91
91
  function analyzePolicies(policyFindings) {
92
92
  const findings = [];
93
93
  const criticalFindings = [];
@@ -106,7 +106,7 @@ function analyzePolicies(policyFindings) {
106
106
  }
107
107
  return { findings, criticalFindings };
108
108
  }
109
- // ─── Acceptance Criteria Coverage ─────────────────────────────────────────────
109
+ // --- Acceptance Criteria Coverage ---------------------------------------------
110
110
  function analyzeAcceptanceCoverage(acceptanceCriteria, outputs, testResults) {
111
111
  const findings = [];
112
112
  const coveredCriteria = [];
@@ -148,7 +148,7 @@ function analyzeAcceptanceCoverage(acceptanceCriteria, outputs, testResults) {
148
148
  : 100;
149
149
  return { findings, coverage, unmetCriteria };
150
150
  }
151
- // ─── Scoring ─────────────────────────────────────────────────────────────────
151
+ // --- Scoring -----------------------------------------------------------------
152
152
  function calculateScore(weights, testAnalysis, acceptanceCoverage, criticalPolicies, securityFindings, regressionFindings) {
153
153
  const breakdown = {};
154
154
  // Correctness (30%) - based on missing outputs
@@ -188,7 +188,7 @@ function calculateScore(weights, testAnalysis, acceptanceCoverage, criticalPolic
188
188
  regressionPenalty));
189
189
  return { score: Math.round(totalScore), breakdown };
190
190
  }
191
- // ─── Failure Classification ───────────────────────────────────────────────────
191
+ // --- Failure Classification ---------------------------------------------------
192
192
  function classifyFailure(findings) {
193
193
  const classes = [];
194
194
  for (const finding of findings) {
@@ -226,7 +226,7 @@ function classifyFailure(findings) {
226
226
  }
227
227
  return classes;
228
228
  }
229
- // ─── Main Engine ───────────────────────────────────────────────────────────────
229
+ // --- Main Engine ---------------------------------------------------------------
230
230
  export class EvaluationEngine {
231
231
  weights;
232
232
  state = "pending";
@@ -337,7 +337,7 @@ export class EvaluationEngine {
337
337
  this.state = "pending";
338
338
  }
339
339
  }
340
- // ─── Factory ─────────────────────────────────────────────────────────────────
340
+ // --- Factory -----------------------------------------------------------------
341
341
  export function createEvaluationEngine(weights) {
342
342
  return new EvaluationEngine(weights);
343
343
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/evaluation-engine",
3
- "version": "0.9.24",
3
+ "version": "1.1.0",
4
4
  "description": "Evaluation engine for pi-harness runtime (RFC-0057)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -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": "1.1.0",
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":"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"}