@earendil-works/pi-agent-core 0.99.2 → 1.0.1

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 (450) hide show
  1. package/README.md +0 -8
  2. package/dist/index.d.ts +0 -22
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +0 -20
  5. package/dist/index.js.map +1 -1
  6. package/package.json +3 -45
  7. package/dist/harness/agent-harness.d.ts +0 -716
  8. package/dist/harness/agent-harness.d.ts.map +0 -1
  9. package/dist/harness/agent-harness.js +0 -6
  10. package/dist/harness/agent-harness.js.map +0 -1
  11. package/dist/harness/compaction/branch-summarization.d.ts +0 -68
  12. package/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
  13. package/dist/harness/compaction/branch-summarization.js +0 -176
  14. package/dist/harness/compaction/branch-summarization.js.map +0 -1
  15. package/dist/harness/compaction/compaction.d.ts +0 -126
  16. package/dist/harness/compaction/compaction.d.ts.map +0 -1
  17. package/dist/harness/compaction/compaction.js +0 -560
  18. package/dist/harness/compaction/compaction.js.map +0 -1
  19. package/dist/harness/compaction/utils.d.ts +0 -25
  20. package/dist/harness/compaction/utils.d.ts.map +0 -1
  21. package/dist/harness/compaction/utils.js +0 -120
  22. package/dist/harness/compaction/utils.js.map +0 -1
  23. package/dist/harness/config.d.ts +0 -9
  24. package/dist/harness/config.d.ts.map +0 -1
  25. package/dist/harness/config.js +0 -35
  26. package/dist/harness/config.js.map +0 -1
  27. package/dist/harness/context.d.ts +0 -9
  28. package/dist/harness/context.d.ts.map +0 -1
  29. package/dist/harness/context.js +0 -13
  30. package/dist/harness/context.js.map +0 -1
  31. package/dist/harness/env/nodejs.d.ts +0 -43
  32. package/dist/harness/env/nodejs.d.ts.map +0 -1
  33. package/dist/harness/env/nodejs.js +0 -865
  34. package/dist/harness/env/nodejs.js.map +0 -1
  35. package/dist/harness/events.d.ts +0 -25
  36. package/dist/harness/events.d.ts.map +0 -1
  37. package/dist/harness/events.js +0 -250
  38. package/dist/harness/events.js.map +0 -1
  39. package/dist/harness/execution/assistant.d.ts +0 -42
  40. package/dist/harness/execution/assistant.d.ts.map +0 -1
  41. package/dist/harness/execution/assistant.js +0 -82
  42. package/dist/harness/execution/assistant.js.map +0 -1
  43. package/dist/harness/execution/effect-gate.d.ts +0 -22
  44. package/dist/harness/execution/effect-gate.d.ts.map +0 -1
  45. package/dist/harness/execution/effect-gate.js +0 -49
  46. package/dist/harness/execution/effect-gate.js.map +0 -1
  47. package/dist/harness/execution/tools.d.ts +0 -67
  48. package/dist/harness/execution/tools.d.ts.map +0 -1
  49. package/dist/harness/execution/tools.js +0 -119
  50. package/dist/harness/execution/tools.js.map +0 -1
  51. package/dist/harness/hooks.d.ts +0 -38
  52. package/dist/harness/hooks.d.ts.map +0 -1
  53. package/dist/harness/hooks.js +0 -406
  54. package/dist/harness/hooks.js.map +0 -1
  55. package/dist/harness/messages.d.ts +0 -51
  56. package/dist/harness/messages.d.ts.map +0 -1
  57. package/dist/harness/messages.js +0 -103
  58. package/dist/harness/messages.js.map +0 -1
  59. package/dist/harness/pico3/bash.d.ts +0 -10
  60. package/dist/harness/pico3/bash.d.ts.map +0 -1
  61. package/dist/harness/pico3/bash.js +0 -25
  62. package/dist/harness/pico3/bash.js.map +0 -1
  63. package/dist/harness/pico3/bounded.d.ts +0 -21
  64. package/dist/harness/pico3/bounded.d.ts.map +0 -1
  65. package/dist/harness/pico3/bounded.js +0 -98
  66. package/dist/harness/pico3/bounded.js.map +0 -1
  67. package/dist/harness/pico3/chord.d.ts +0 -41
  68. package/dist/harness/pico3/chord.d.ts.map +0 -1
  69. package/dist/harness/pico3/chord.js +0 -147
  70. package/dist/harness/pico3/chord.js.map +0 -1
  71. package/dist/harness/pico3/context.d.ts +0 -16
  72. package/dist/harness/pico3/context.d.ts.map +0 -1
  73. package/dist/harness/pico3/context.js +0 -88
  74. package/dist/harness/pico3/context.js.map +0 -1
  75. package/dist/harness/pico3/harness.d.ts +0 -198
  76. package/dist/harness/pico3/harness.d.ts.map +0 -1
  77. package/dist/harness/pico3/harness.js +0 -654
  78. package/dist/harness/pico3/harness.js.map +0 -1
  79. package/dist/harness/pico3/hooks.d.ts +0 -10
  80. package/dist/harness/pico3/hooks.d.ts.map +0 -1
  81. package/dist/harness/pico3/hooks.js +0 -33
  82. package/dist/harness/pico3/hooks.js.map +0 -1
  83. package/dist/harness/pico3/index.d.ts +0 -19
  84. package/dist/harness/pico3/index.d.ts.map +0 -1
  85. package/dist/harness/pico3/index.js +0 -15
  86. package/dist/harness/pico3/index.js.map +0 -1
  87. package/dist/harness/pico3/jsonl.d.ts +0 -58
  88. package/dist/harness/pico3/jsonl.d.ts.map +0 -1
  89. package/dist/harness/pico3/jsonl.js +0 -325
  90. package/dist/harness/pico3/jsonl.js.map +0 -1
  91. package/dist/harness/pico3/kinds/collapse.d.ts +0 -49
  92. package/dist/harness/pico3/kinds/collapse.d.ts.map +0 -1
  93. package/dist/harness/pico3/kinds/collapse.js +0 -191
  94. package/dist/harness/pico3/kinds/collapse.js.map +0 -1
  95. package/dist/harness/pico3/kinds/entries.d.ts +0 -78
  96. package/dist/harness/pico3/kinds/entries.d.ts.map +0 -1
  97. package/dist/harness/pico3/kinds/entries.js +0 -13
  98. package/dist/harness/pico3/kinds/entries.js.map +0 -1
  99. package/dist/harness/pico3/kinds/frames.d.ts +0 -9
  100. package/dist/harness/pico3/kinds/frames.d.ts.map +0 -1
  101. package/dist/harness/pico3/kinds/frames.js +0 -75
  102. package/dist/harness/pico3/kinds/frames.js.map +0 -1
  103. package/dist/harness/pico3/kinds/generation.d.ts +0 -94
  104. package/dist/harness/pico3/kinds/generation.d.ts.map +0 -1
  105. package/dist/harness/pico3/kinds/generation.js +0 -504
  106. package/dist/harness/pico3/kinds/generation.js.map +0 -1
  107. package/dist/harness/pico3/kinds/job.d.ts +0 -44
  108. package/dist/harness/pico3/kinds/job.d.ts.map +0 -1
  109. package/dist/harness/pico3/kinds/job.js +0 -143
  110. package/dist/harness/pico3/kinds/job.js.map +0 -1
  111. package/dist/harness/pico3/kinds/plugin.d.ts +0 -15
  112. package/dist/harness/pico3/kinds/plugin.d.ts.map +0 -1
  113. package/dist/harness/pico3/kinds/plugin.js +0 -35
  114. package/dist/harness/pico3/kinds/plugin.js.map +0 -1
  115. package/dist/harness/pico3/kinds/post-tools.d.ts +0 -22
  116. package/dist/harness/pico3/kinds/post-tools.d.ts.map +0 -1
  117. package/dist/harness/pico3/kinds/post-tools.js +0 -145
  118. package/dist/harness/pico3/kinds/post-tools.js.map +0 -1
  119. package/dist/harness/pico3/kinds/task-api.d.ts +0 -3
  120. package/dist/harness/pico3/kinds/task-api.d.ts.map +0 -1
  121. package/dist/harness/pico3/kinds/task-api.js +0 -45
  122. package/dist/harness/pico3/kinds/task-api.js.map +0 -1
  123. package/dist/harness/pico3/kinds/tool.d.ts +0 -43
  124. package/dist/harness/pico3/kinds/tool.d.ts.map +0 -1
  125. package/dist/harness/pico3/kinds/tool.js +0 -373
  126. package/dist/harness/pico3/kinds/tool.js.map +0 -1
  127. package/dist/harness/pico3/legacy-tracker.d.ts +0 -11
  128. package/dist/harness/pico3/legacy-tracker.d.ts.map +0 -1
  129. package/dist/harness/pico3/legacy-tracker.js +0 -41
  130. package/dist/harness/pico3/legacy-tracker.js.map +0 -1
  131. package/dist/harness/pico3/membrane.d.ts +0 -23
  132. package/dist/harness/pico3/membrane.d.ts.map +0 -1
  133. package/dist/harness/pico3/membrane.js +0 -141
  134. package/dist/harness/pico3/membrane.js.map +0 -1
  135. package/dist/harness/pico3/memory.d.ts +0 -53
  136. package/dist/harness/pico3/memory.d.ts.map +0 -1
  137. package/dist/harness/pico3/memory.js +0 -264
  138. package/dist/harness/pico3/memory.js.map +0 -1
  139. package/dist/harness/pico3/scheduler.d.ts +0 -49
  140. package/dist/harness/pico3/scheduler.d.ts.map +0 -1
  141. package/dist/harness/pico3/scheduler.js +0 -438
  142. package/dist/harness/pico3/scheduler.js.map +0 -1
  143. package/dist/harness/pico3/session.d.ts +0 -264
  144. package/dist/harness/pico3/session.d.ts.map +0 -1
  145. package/dist/harness/pico3/session.js +0 -1348
  146. package/dist/harness/pico3/session.js.map +0 -1
  147. package/dist/harness/pico3/system.d.ts +0 -126
  148. package/dist/harness/pico3/system.d.ts.map +0 -1
  149. package/dist/harness/pico3/system.js +0 -244
  150. package/dist/harness/pico3/system.js.map +0 -1
  151. package/dist/harness/pico3/types.d.ts +0 -973
  152. package/dist/harness/pico3/types.d.ts.map +0 -1
  153. package/dist/harness/pico3/types.js +0 -96
  154. package/dist/harness/pico3/types.js.map +0 -1
  155. package/dist/harness/pico3/view.d.ts +0 -34
  156. package/dist/harness/pico3/view.d.ts.map +0 -1
  157. package/dist/harness/pico3/view.js +0 -411
  158. package/dist/harness/pico3/view.js.map +0 -1
  159. package/dist/harness/prompt-templates.d.ts +0 -49
  160. package/dist/harness/prompt-templates.d.ts.map +0 -1
  161. package/dist/harness/prompt-templates.js +0 -225
  162. package/dist/harness/prompt-templates.js.map +0 -1
  163. package/dist/harness/result.d.ts +0 -133
  164. package/dist/harness/result.d.ts.map +0 -1
  165. package/dist/harness/result.js +0 -81
  166. package/dist/harness/result.js.map +0 -1
  167. package/dist/harness/runtime/drive/boundary.d.ts +0 -28
  168. package/dist/harness/runtime/drive/boundary.d.ts.map +0 -1
  169. package/dist/harness/runtime/drive/boundary.js +0 -173
  170. package/dist/harness/runtime/drive/boundary.js.map +0 -1
  171. package/dist/harness/runtime/drive/checkpoint.d.ts +0 -8
  172. package/dist/harness/runtime/drive/checkpoint.d.ts.map +0 -1
  173. package/dist/harness/runtime/drive/checkpoint.js +0 -133
  174. package/dist/harness/runtime/drive/checkpoint.js.map +0 -1
  175. package/dist/harness/runtime/drive/deferred.d.ts +0 -15
  176. package/dist/harness/runtime/drive/deferred.d.ts.map +0 -1
  177. package/dist/harness/runtime/drive/deferred.js +0 -179
  178. package/dist/harness/runtime/drive/deferred.js.map +0 -1
  179. package/dist/harness/runtime/drive/generation.d.ts +0 -8
  180. package/dist/harness/runtime/drive/generation.d.ts.map +0 -1
  181. package/dist/harness/runtime/drive/generation.js +0 -205
  182. package/dist/harness/runtime/drive/generation.js.map +0 -1
  183. package/dist/harness/runtime/drive/reconcile.d.ts +0 -5
  184. package/dist/harness/runtime/drive/reconcile.d.ts.map +0 -1
  185. package/dist/harness/runtime/drive/reconcile.js +0 -140
  186. package/dist/harness/runtime/drive/reconcile.js.map +0 -1
  187. package/dist/harness/runtime/drive/recovery.d.ts +0 -8
  188. package/dist/harness/runtime/drive/recovery.d.ts.map +0 -1
  189. package/dist/harness/runtime/drive/recovery.js +0 -85
  190. package/dist/harness/runtime/drive/recovery.js.map +0 -1
  191. package/dist/harness/runtime/drive/response.d.ts +0 -23
  192. package/dist/harness/runtime/drive/response.d.ts.map +0 -1
  193. package/dist/harness/runtime/drive/response.js +0 -394
  194. package/dist/harness/runtime/drive/response.js.map +0 -1
  195. package/dist/harness/runtime/drive/retry.d.ts +0 -4
  196. package/dist/harness/runtime/drive/retry.d.ts.map +0 -1
  197. package/dist/harness/runtime/drive/retry.js +0 -34
  198. package/dist/harness/runtime/drive/retry.js.map +0 -1
  199. package/dist/harness/runtime/drive/structural.d.ts +0 -32
  200. package/dist/harness/runtime/drive/structural.d.ts.map +0 -1
  201. package/dist/harness/runtime/drive/structural.js +0 -929
  202. package/dist/harness/runtime/drive/structural.js.map +0 -1
  203. package/dist/harness/runtime/drive/terminal.d.ts +0 -7
  204. package/dist/harness/runtime/drive/terminal.d.ts.map +0 -1
  205. package/dist/harness/runtime/drive/terminal.js +0 -49
  206. package/dist/harness/runtime/drive/terminal.js.map +0 -1
  207. package/dist/harness/runtime/drive/tool-placement.d.ts +0 -14
  208. package/dist/harness/runtime/drive/tool-placement.d.ts.map +0 -1
  209. package/dist/harness/runtime/drive/tool-placement.js +0 -219
  210. package/dist/harness/runtime/drive/tool-placement.js.map +0 -1
  211. package/dist/harness/runtime/drive/tools.d.ts +0 -6
  212. package/dist/harness/runtime/drive/tools.d.ts.map +0 -1
  213. package/dist/harness/runtime/drive/tools.js +0 -449
  214. package/dist/harness/runtime/drive/tools.js.map +0 -1
  215. package/dist/harness/runtime/drive.d.ts +0 -6
  216. package/dist/harness/runtime/drive.d.ts.map +0 -1
  217. package/dist/harness/runtime/drive.js +0 -93
  218. package/dist/harness/runtime/drive.js.map +0 -1
  219. package/dist/harness/runtime/harness.d.ts +0 -59
  220. package/dist/harness/runtime/harness.d.ts.map +0 -1
  221. package/dist/harness/runtime/harness.js +0 -311
  222. package/dist/harness/runtime/harness.js.map +0 -1
  223. package/dist/harness/runtime/index.d.ts +0 -2
  224. package/dist/harness/runtime/index.d.ts.map +0 -1
  225. package/dist/harness/runtime/index.js +0 -2
  226. package/dist/harness/runtime/index.js.map +0 -1
  227. package/dist/harness/runtime/lane.d.ts +0 -118
  228. package/dist/harness/runtime/lane.d.ts.map +0 -1
  229. package/dist/harness/runtime/lane.js +0 -1575
  230. package/dist/harness/runtime/lane.js.map +0 -1
  231. package/dist/harness/runtime/progress.d.ts +0 -15
  232. package/dist/harness/runtime/progress.d.ts.map +0 -1
  233. package/dist/harness/runtime/progress.js +0 -66
  234. package/dist/harness/runtime/progress.js.map +0 -1
  235. package/dist/harness/runtime/reducer.d.ts +0 -5
  236. package/dist/harness/runtime/reducer.d.ts.map +0 -1
  237. package/dist/harness/runtime/reducer.js +0 -240
  238. package/dist/harness/runtime/reducer.js.map +0 -1
  239. package/dist/harness/runtime/restore.d.ts +0 -24
  240. package/dist/harness/runtime/restore.d.ts.map +0 -1
  241. package/dist/harness/runtime/restore.js +0 -117
  242. package/dist/harness/runtime/restore.js.map +0 -1
  243. package/dist/harness/runtime/transcript.d.ts +0 -21
  244. package/dist/harness/runtime/transcript.d.ts.map +0 -1
  245. package/dist/harness/runtime/transcript.js +0 -72
  246. package/dist/harness/runtime/transcript.js.map +0 -1
  247. package/dist/harness/runtime/types.d.ts +0 -105
  248. package/dist/harness/runtime/types.d.ts.map +0 -1
  249. package/dist/harness/runtime/types.js +0 -61
  250. package/dist/harness/runtime/types.js.map +0 -1
  251. package/dist/harness/session/commit.d.ts +0 -53
  252. package/dist/harness/session/commit.d.ts.map +0 -1
  253. package/dist/harness/session/commit.js +0 -57
  254. package/dist/harness/session/commit.js.map +0 -1
  255. package/dist/harness/session/context.d.ts +0 -10
  256. package/dist/harness/session/context.d.ts.map +0 -1
  257. package/dist/harness/session/context.js +0 -49
  258. package/dist/harness/session/context.js.map +0 -1
  259. package/dist/harness/session/fork-policy.d.ts +0 -21
  260. package/dist/harness/session/fork-policy.d.ts.map +0 -1
  261. package/dist/harness/session/fork-policy.js +0 -55
  262. package/dist/harness/session/fork-policy.js.map +0 -1
  263. package/dist/harness/session/fork.d.ts +0 -16
  264. package/dist/harness/session/fork.d.ts.map +0 -1
  265. package/dist/harness/session/fork.js +0 -79
  266. package/dist/harness/session/fork.js.map +0 -1
  267. package/dist/harness/session/in-memory-storage-state.d.ts +0 -39
  268. package/dist/harness/session/in-memory-storage-state.d.ts.map +0 -1
  269. package/dist/harness/session/in-memory-storage-state.js +0 -276
  270. package/dist/harness/session/in-memory-storage-state.js.map +0 -1
  271. package/dist/harness/session/index.d.ts +0 -11
  272. package/dist/harness/session/index.d.ts.map +0 -1
  273. package/dist/harness/session/index.js +0 -9
  274. package/dist/harness/session/index.js.map +0 -1
  275. package/dist/harness/session/jsonl/codec.d.ts +0 -21
  276. package/dist/harness/session/jsonl/codec.d.ts.map +0 -1
  277. package/dist/harness/session/jsonl/codec.js +0 -45
  278. package/dist/harness/session/jsonl/codec.js.map +0 -1
  279. package/dist/harness/session/jsonl/fork.d.ts +0 -38
  280. package/dist/harness/session/jsonl/fork.d.ts.map +0 -1
  281. package/dist/harness/session/jsonl/fork.js +0 -264
  282. package/dist/harness/session/jsonl/fork.js.map +0 -1
  283. package/dist/harness/session/jsonl/index.d.ts +0 -4
  284. package/dist/harness/session/jsonl/index.d.ts.map +0 -1
  285. package/dist/harness/session/jsonl/index.js +0 -4
  286. package/dist/harness/session/jsonl/index.js.map +0 -1
  287. package/dist/harness/session/jsonl/io.d.ts +0 -14
  288. package/dist/harness/session/jsonl/io.d.ts.map +0 -1
  289. package/dist/harness/session/jsonl/io.js +0 -86
  290. package/dist/harness/session/jsonl/io.js.map +0 -1
  291. package/dist/harness/session/jsonl/legacy-v3.d.ts +0 -44
  292. package/dist/harness/session/jsonl/legacy-v3.d.ts.map +0 -1
  293. package/dist/harness/session/jsonl/legacy-v3.js +0 -462
  294. package/dist/harness/session/jsonl/legacy-v3.js.map +0 -1
  295. package/dist/harness/session/jsonl/repo.d.ts +0 -35
  296. package/dist/harness/session/jsonl/repo.d.ts.map +0 -1
  297. package/dist/harness/session/jsonl/repo.js +0 -301
  298. package/dist/harness/session/jsonl/repo.js.map +0 -1
  299. package/dist/harness/session/jsonl/storage.d.ts +0 -41
  300. package/dist/harness/session/jsonl/storage.d.ts.map +0 -1
  301. package/dist/harness/session/jsonl/storage.js +0 -200
  302. package/dist/harness/session/jsonl/storage.js.map +0 -1
  303. package/dist/harness/session/jsonl/types.d.ts +0 -39
  304. package/dist/harness/session/jsonl/types.d.ts.map +0 -1
  305. package/dist/harness/session/jsonl/types.js +0 -3
  306. package/dist/harness/session/jsonl/types.js.map +0 -1
  307. package/dist/harness/session/memory.d.ts +0 -48
  308. package/dist/harness/session/memory.d.ts.map +0 -1
  309. package/dist/harness/session/memory.js +0 -369
  310. package/dist/harness/session/memory.js.map +0 -1
  311. package/dist/harness/session/mutation-line.d.ts +0 -8
  312. package/dist/harness/session/mutation-line.d.ts.map +0 -1
  313. package/dist/harness/session/mutation-line.js +0 -21
  314. package/dist/harness/session/mutation-line.js.map +0 -1
  315. package/dist/harness/session/session.d.ts +0 -82
  316. package/dist/harness/session/session.d.ts.map +0 -1
  317. package/dist/harness/session/session.js +0 -361
  318. package/dist/harness/session/session.js.map +0 -1
  319. package/dist/harness/session/testing/benchmark/datasets.d.ts +0 -12
  320. package/dist/harness/session/testing/benchmark/datasets.d.ts.map +0 -1
  321. package/dist/harness/session/testing/benchmark/datasets.js +0 -24
  322. package/dist/harness/session/testing/benchmark/datasets.js.map +0 -1
  323. package/dist/harness/session/testing/benchmark/session-repo.d.ts +0 -42
  324. package/dist/harness/session/testing/benchmark/session-repo.d.ts.map +0 -1
  325. package/dist/harness/session/testing/benchmark/session-repo.js +0 -127
  326. package/dist/harness/session/testing/benchmark/session-repo.js.map +0 -1
  327. package/dist/harness/session/testing/benchmark/storage.d.ts +0 -25
  328. package/dist/harness/session/testing/benchmark/storage.d.ts.map +0 -1
  329. package/dist/harness/session/testing/benchmark/storage.js +0 -114
  330. package/dist/harness/session/testing/benchmark/storage.js.map +0 -1
  331. package/dist/harness/session/testing/conformance/session-repo.d.ts +0 -23
  332. package/dist/harness/session/testing/conformance/session-repo.d.ts.map +0 -1
  333. package/dist/harness/session/testing/conformance/session-repo.js +0 -809
  334. package/dist/harness/session/testing/conformance/session-repo.js.map +0 -1
  335. package/dist/harness/session/testing/conformance/storage.d.ts +0 -4
  336. package/dist/harness/session/testing/conformance/storage.d.ts.map +0 -1
  337. package/dist/harness/session/testing/conformance/storage.js +0 -600
  338. package/dist/harness/session/testing/conformance/storage.js.map +0 -1
  339. package/dist/harness/session/testing/gating-storage.d.ts +0 -26
  340. package/dist/harness/session/testing/gating-storage.d.ts.map +0 -1
  341. package/dist/harness/session/testing/gating-storage.js +0 -100
  342. package/dist/harness/session/testing/gating-storage.js.map +0 -1
  343. package/dist/harness/session/testing/index.d.ts +0 -10
  344. package/dist/harness/session/testing/index.d.ts.map +0 -1
  345. package/dist/harness/session/testing/index.js +0 -9
  346. package/dist/harness/session/testing/index.js.map +0 -1
  347. package/dist/harness/session/testing/instrumented-storage.d.ts +0 -11
  348. package/dist/harness/session/testing/instrumented-storage.d.ts.map +0 -1
  349. package/dist/harness/session/testing/instrumented-storage.js +0 -16
  350. package/dist/harness/session/testing/instrumented-storage.js.map +0 -1
  351. package/dist/harness/session/testing/storage-decorator.d.ts +0 -20
  352. package/dist/harness/session/testing/storage-decorator.d.ts.map +0 -1
  353. package/dist/harness/session/testing/storage-decorator.js +0 -41
  354. package/dist/harness/session/testing/storage-decorator.js.map +0 -1
  355. package/dist/harness/session/testing/types.d.ts +0 -12
  356. package/dist/harness/session/testing/types.d.ts.map +0 -1
  357. package/dist/harness/session/testing/types.js +0 -2
  358. package/dist/harness/session/testing/types.js.map +0 -1
  359. package/dist/harness/session/types.d.ts +0 -512
  360. package/dist/harness/session/types.d.ts.map +0 -1
  361. package/dist/harness/session/types.js +0 -9
  362. package/dist/harness/session/types.js.map +0 -1
  363. package/dist/harness/session/values.d.ts +0 -95
  364. package/dist/harness/session/values.d.ts.map +0 -1
  365. package/dist/harness/session/values.js +0 -81
  366. package/dist/harness/session/values.js.map +0 -1
  367. package/dist/harness/skills.d.ts +0 -46
  368. package/dist/harness/skills.d.ts.map +0 -1
  369. package/dist/harness/skills.js +0 -326
  370. package/dist/harness/skills.js.map +0 -1
  371. package/dist/harness/system-prompt.d.ts +0 -3
  372. package/dist/harness/system-prompt.d.ts.map +0 -1
  373. package/dist/harness/system-prompt.js +0 -30
  374. package/dist/harness/system-prompt.js.map +0 -1
  375. package/dist/harness/telemetry.d.ts +0 -1242
  376. package/dist/harness/telemetry.d.ts.map +0 -1
  377. package/dist/harness/telemetry.js +0 -527
  378. package/dist/harness/telemetry.js.map +0 -1
  379. package/dist/harness/tools/bash.d.ts +0 -27
  380. package/dist/harness/tools/bash.d.ts.map +0 -1
  381. package/dist/harness/tools/bash.js +0 -105
  382. package/dist/harness/tools/bash.js.map +0 -1
  383. package/dist/harness/tools/edit-diff.d.ts +0 -89
  384. package/dist/harness/tools/edit-diff.d.ts.map +0 -1
  385. package/dist/harness/tools/edit-diff.js +0 -386
  386. package/dist/harness/tools/edit-diff.js.map +0 -1
  387. package/dist/harness/tools/edit.d.ts +0 -19
  388. package/dist/harness/tools/edit.d.ts.map +0 -1
  389. package/dist/harness/tools/edit.js +0 -108
  390. package/dist/harness/tools/edit.js.map +0 -1
  391. package/dist/harness/tools/file-mutation-queue.d.ts +0 -5
  392. package/dist/harness/tools/file-mutation-queue.d.ts.map +0 -1
  393. package/dist/harness/tools/file-mutation-queue.js +0 -46
  394. package/dist/harness/tools/file-mutation-queue.js.map +0 -1
  395. package/dist/harness/tools/image.d.ts +0 -3
  396. package/dist/harness/tools/image.d.ts.map +0 -1
  397. package/dist/harness/tools/image.js +0 -106
  398. package/dist/harness/tools/image.js.map +0 -1
  399. package/dist/harness/tools/index.d.ts +0 -6
  400. package/dist/harness/tools/index.d.ts.map +0 -1
  401. package/dist/harness/tools/index.js +0 -5
  402. package/dist/harness/tools/index.js.map +0 -1
  403. package/dist/harness/tools/path-utils.d.ts +0 -5
  404. package/dist/harness/tools/path-utils.d.ts.map +0 -1
  405. package/dist/harness/tools/path-utils.js +0 -26
  406. package/dist/harness/tools/path-utils.js.map +0 -1
  407. package/dist/harness/tools/read.d.ts +0 -35
  408. package/dist/harness/tools/read.d.ts.map +0 -1
  409. package/dist/harness/tools/read.js +0 -108
  410. package/dist/harness/tools/read.js.map +0 -1
  411. package/dist/harness/tools/tool-context.d.ts +0 -6
  412. package/dist/harness/tools/tool-context.d.ts.map +0 -1
  413. package/dist/harness/tools/tool-context.js +0 -2
  414. package/dist/harness/tools/tool-context.js.map +0 -1
  415. package/dist/harness/tools/write.d.ts +0 -11
  416. package/dist/harness/tools/write.d.ts.map +0 -1
  417. package/dist/harness/tools/write.js +0 -31
  418. package/dist/harness/tools/write.js.map +0 -1
  419. package/dist/harness/types.d.ts +0 -305
  420. package/dist/harness/types.d.ts.map +0 -1
  421. package/dist/harness/types.js +0 -75
  422. package/dist/harness/types.js.map +0 -1
  423. package/dist/harness/utils/adaptive-publisher.d.ts +0 -24
  424. package/dist/harness/utils/adaptive-publisher.d.ts.map +0 -1
  425. package/dist/harness/utils/adaptive-publisher.js +0 -79
  426. package/dist/harness/utils/adaptive-publisher.js.map +0 -1
  427. package/dist/harness/utils/output-capture.d.ts +0 -31
  428. package/dist/harness/utils/output-capture.d.ts.map +0 -1
  429. package/dist/harness/utils/output-capture.js +0 -217
  430. package/dist/harness/utils/output-capture.js.map +0 -1
  431. package/dist/harness/utils/shell-output.d.ts +0 -29
  432. package/dist/harness/utils/shell-output.d.ts.map +0 -1
  433. package/dist/harness/utils/shell-output.js +0 -71
  434. package/dist/harness/utils/shell-output.js.map +0 -1
  435. package/dist/harness/utils/truncate.d.ts +0 -71
  436. package/dist/harness/utils/truncate.d.ts.map +0 -1
  437. package/dist/harness/utils/truncate.js +0 -296
  438. package/dist/harness/utils/truncate.js.map +0 -1
  439. package/dist/harness/utils/usage.d.ts +0 -4
  440. package/dist/harness/utils/usage.d.ts.map +0 -1
  441. package/dist/harness/utils/usage.js +0 -33
  442. package/dist/harness/utils/usage.js.map +0 -1
  443. package/dist/node.d.ts +0 -3
  444. package/dist/node.d.ts.map +0 -1
  445. package/dist/node.js +0 -3
  446. package/dist/node.js.map +0 -1
  447. package/dist/search/index.d.ts +0 -29
  448. package/dist/search/index.d.ts.map +0 -1
  449. package/dist/search/index.js +0 -2
  450. package/dist/search/index.js.map +0 -1
@@ -1,406 +0,0 @@
1
- import { withAbortSignal } from "./context.js";
2
- import { startHarnessSpan } from "./telemetry.js";
3
- /** Ordered harness hook registry and aggregate runner. */
4
- export class HookRegistry {
5
- registrations = new Map();
6
- reportError;
7
- closedError;
8
- constructor(reportError) {
9
- this.reportError = reportError;
10
- }
11
- on(name, handler, options = {}) {
12
- if (this.closedError !== undefined)
13
- throw this.closedError;
14
- const registrations = this.registrations.get(name) ?? [];
15
- const registration = {
16
- ...(options.id === undefined ? {} : { id: options.id }),
17
- handler: (event, context) => handler(event, context),
18
- };
19
- registrations.push(registration);
20
- this.registrations.set(name, registrations);
21
- return () => {
22
- const index = registrations.indexOf(registration);
23
- if (index !== -1)
24
- registrations.splice(index, 1);
25
- };
26
- }
27
- has(name) {
28
- return (this.registrations.get(name)?.length ?? 0) !== 0;
29
- }
30
- /** Invoke one accepted-operation aggregate after synchronously passing its effect gate. */
31
- runWithGate(name, event, gate, context) {
32
- return gate.admit(() => {
33
- const admittedContext = withAbortSignal(gate.signal, context);
34
- admittedContext.abortSignal?.throwIfAborted();
35
- return this.runAdmitted(name, event, admittedContext);
36
- });
37
- }
38
- /** Invoke a tool-hook aggregate with one telemetry span per registered handler. */
39
- runToolWithGate(name, event, gate, context) {
40
- return gate.admit(() => {
41
- const admittedContext = withAbortSignal(gate.signal, context);
42
- admittedContext.abortSignal?.throwIfAborted();
43
- return (name === "before_tool"
44
- ? this.beforeTool(event, admittedContext)
45
- : this.afterTool(event, admittedContext));
46
- });
47
- }
48
- close(error) {
49
- this.closedError ??= error;
50
- }
51
- async runAdmitted(name, event, context) {
52
- if (this.closedError !== undefined)
53
- throw this.closedError;
54
- const result = await this.aggregate(name, event, context);
55
- return result;
56
- }
57
- async aggregate(name, event, context) {
58
- switch (name) {
59
- case "before_run":
60
- return this.beforeRun(event, context);
61
- case "before_drive":
62
- await this.invokeAllFailClosed(name, event, context);
63
- return undefined;
64
- case "before_run_end": {
65
- let followUp;
66
- await this.invokeAll(name, event, (value) => {
67
- const result = value;
68
- if (result?.followUp !== undefined)
69
- followUp = result.followUp;
70
- }, context);
71
- return followUp === undefined ? undefined : { followUp };
72
- }
73
- case "transform_context":
74
- return this.transformContext(event, context);
75
- case "before_request":
76
- return this.beforeRequest(event, context);
77
- case "before_payload":
78
- return this.beforePayload(event, context);
79
- case "after_response":
80
- return this.afterResponse(event, context);
81
- case "before_tool":
82
- return this.beforeTool(event, context);
83
- case "after_tool":
84
- return this.afterTool(event, context);
85
- case "before_compaction":
86
- return this.firstStructural(name, event, "compaction", context);
87
- case "before_navigation":
88
- return this.firstStructural(name, event, "summary", context);
89
- }
90
- }
91
- async beforeRun(event, context) {
92
- let prompt = event.prompt;
93
- let injected = [];
94
- for (const registration of this.registrationsFor("before_run")) {
95
- try {
96
- const result = (await registration.handler({ ...event, prompt }, context));
97
- if (result?.messages !== undefined) {
98
- injected = [...injected, ...result.messages];
99
- prompt = [...prompt, ...result.messages];
100
- }
101
- }
102
- catch (error) {
103
- await this.reportError(error instanceof Error ? error : new Error(String(error)), "before_run", event.lane, context);
104
- }
105
- }
106
- return injected.length === 0 ? undefined : { messages: injected };
107
- }
108
- async beforeTool(event, context) {
109
- let args = event.args;
110
- let block;
111
- for (const registration of this.registrationsFor("before_tool")) {
112
- try {
113
- const result = (await this.invokeToolRegistration("before_tool", registration, { ...event, args }, context));
114
- if (result?.args !== undefined)
115
- args = result.args;
116
- if (result?.block !== undefined) {
117
- block = result.block;
118
- break;
119
- }
120
- }
121
- catch (error) {
122
- const normalized = error instanceof Error ? error : new Error(String(error));
123
- await this.reportError(normalized, "before_tool", event.lane, context);
124
- block = { reason: normalized.message };
125
- break;
126
- }
127
- }
128
- return {
129
- ...(args === event.args ? {} : { args }),
130
- ...(block === undefined ? {} : { block }),
131
- };
132
- }
133
- async transformContext(event, context) {
134
- let messages = event.messages;
135
- let systemPrompt = event.systemPrompt;
136
- for (const registration of this.registrationsFor("transform_context")) {
137
- try {
138
- const result = (await registration.handler({
139
- ...event,
140
- messages,
141
- systemPrompt,
142
- }, context));
143
- if (result?.messages !== undefined)
144
- messages = result.messages;
145
- if (result?.systemPrompt !== undefined)
146
- systemPrompt = result.systemPrompt;
147
- }
148
- catch (error) {
149
- await this.reportError(error instanceof Error ? error : new Error(String(error)), "transform_context", event.lane, context);
150
- }
151
- }
152
- return { messages, systemPrompt };
153
- }
154
- async beforeRequest(event, context) {
155
- let streamOptions = event.streamOptions;
156
- let changed = false;
157
- for (const registration of this.registrationsFor("before_request")) {
158
- try {
159
- const result = (await registration.handler({ ...event, streamOptions }, context));
160
- if (result?.streamOptions !== undefined) {
161
- streamOptions = applyStreamOptionsPatch(streamOptions, result.streamOptions);
162
- changed = true;
163
- }
164
- }
165
- catch (error) {
166
- await this.reportError(error instanceof Error ? error : new Error(String(error)), "before_request", event.lane, context);
167
- }
168
- }
169
- return changed ? { streamOptions: createStreamOptionsPatch(event.streamOptions, streamOptions) } : undefined;
170
- }
171
- async beforePayload(event, context) {
172
- let payload = event.payload;
173
- for (const registration of this.registrationsFor("before_payload")) {
174
- try {
175
- const result = (await registration.handler({ ...event, payload }, context));
176
- if (result?.payload !== undefined)
177
- payload = result.payload;
178
- }
179
- catch (error) {
180
- await this.reportError(error instanceof Error ? error : new Error(String(error)), "before_payload", event.lane, context);
181
- }
182
- }
183
- return { payload };
184
- }
185
- async afterResponse(event, context) {
186
- let message = event.message;
187
- for (const registration of this.registrationsFor("after_response")) {
188
- try {
189
- const result = (await registration.handler({ ...event, message }, context));
190
- if (result?.message !== undefined)
191
- message = result.message;
192
- }
193
- catch (error) {
194
- await this.reportError(error instanceof Error ? error : new Error(String(error)), "after_response", event.lane, context);
195
- }
196
- }
197
- return { message };
198
- }
199
- async afterTool(event, context) {
200
- let current = {
201
- content: event.content,
202
- details: event.details,
203
- isError: event.isError,
204
- usage: event.usage,
205
- };
206
- const aggregate = {};
207
- for (const registration of this.registrationsFor("after_tool")) {
208
- try {
209
- const result = (await this.invokeToolRegistration("after_tool", registration, { ...event, ...current }, context));
210
- if (result === undefined)
211
- continue;
212
- if (result.content !== undefined)
213
- aggregate.content = result.content;
214
- if (result.details !== undefined)
215
- aggregate.details = result.details;
216
- if (result.isError !== undefined)
217
- aggregate.isError = result.isError;
218
- if (result.usage !== undefined)
219
- aggregate.usage = result.usage;
220
- if (result.terminate !== undefined)
221
- aggregate.terminate = result.terminate;
222
- current = {
223
- content: result.content === undefined ? current.content : result.content,
224
- details: result.details === undefined ? current.details : result.details,
225
- isError: result.isError === undefined ? current.isError : result.isError,
226
- usage: result.usage === undefined ? current.usage : result.usage,
227
- };
228
- }
229
- catch (error) {
230
- await this.reportError(error instanceof Error ? error : new Error(String(error)), "after_tool", event.lane, context);
231
- }
232
- }
233
- return Object.keys(aggregate).length === 0 ? undefined : aggregate;
234
- }
235
- async firstStructural(name, event, resultField, context) {
236
- for (const registration of this.registrationsFor(name)) {
237
- try {
238
- const value = await registration.handler(event, context);
239
- if (value === undefined || value === null || typeof value !== "object")
240
- continue;
241
- const result = value;
242
- if (result.decline === true && result[resultField] !== undefined) {
243
- await this.reportError(new Error(`${name} hook cannot return both decline and ${resultField}`), name, event.lane, context);
244
- continue;
245
- }
246
- if (result.decline === true || result[resultField] !== undefined)
247
- return value;
248
- }
249
- catch (error) {
250
- await this.reportError(error instanceof Error ? error : new Error(String(error)), name, event.lane, context);
251
- }
252
- }
253
- return undefined;
254
- }
255
- invokeToolRegistration(name, registration, event, context) {
256
- return startHarnessSpan("pi.harness.hook", {
257
- "pi.lane.name": event.lane,
258
- "pi.operation.id": event.runId,
259
- "pi.hook.name": name,
260
- ...(registration.id === undefined ? {} : { "pi.hook.registration_id": registration.id }),
261
- }, async (span, spanContext) => {
262
- try {
263
- const result = await registration.handler(event, spanContext);
264
- const blocked = name === "before_tool" &&
265
- result !== null &&
266
- typeof result === "object" &&
267
- "block" in result &&
268
- result.block !== undefined;
269
- span.setAttributes({ "pi.hook.outcome": blocked ? "blocked" : "completed" });
270
- return result;
271
- }
272
- catch (error) {
273
- span.setAttributes({ "pi.hook.outcome": "failed" });
274
- span.setStatus({ status: "error" });
275
- throw error;
276
- }
277
- }, context);
278
- }
279
- registrationsFor(name) {
280
- return [...(this.registrations.get(name) ?? [])];
281
- }
282
- async invokeAllFailClosed(name, event, context) {
283
- for (const registration of this.registrationsFor(name)) {
284
- try {
285
- await registration.handler(event, context);
286
- }
287
- catch (error) {
288
- const normalized = error instanceof Error ? error : new Error(String(error));
289
- await this.reportError(normalized, name, event.lane, context);
290
- throw normalized;
291
- }
292
- }
293
- }
294
- async invokeAll(name, event, apply, context) {
295
- for (const registration of this.registrationsFor(name)) {
296
- try {
297
- apply(await registration.handler(event, context));
298
- }
299
- catch (error) {
300
- await this.reportError(error instanceof Error ? error : new Error(String(error)), name, event.lane, context);
301
- }
302
- }
303
- }
304
- }
305
- export function applyStreamOptionsPatch(base, patch) {
306
- const next = { ...base };
307
- for (const key of [
308
- "transport",
309
- "timeoutMs",
310
- "maxRetries",
311
- "maxRetryDelayMs",
312
- "cacheRetention",
313
- "deferred",
314
- ]) {
315
- if (!(key in patch))
316
- continue;
317
- const value = patch[key];
318
- if (value === undefined)
319
- delete next[key];
320
- else
321
- Object.assign(next, { [key]: value });
322
- }
323
- if ("headers" in patch) {
324
- if (patch.headers === undefined)
325
- delete next.headers;
326
- else {
327
- const headers = { ...next.headers };
328
- for (const [key, value] of Object.entries(patch.headers)) {
329
- if (value === undefined)
330
- delete headers[key];
331
- else
332
- headers[key] = value;
333
- }
334
- next.headers = headers;
335
- }
336
- }
337
- if ("metadata" in patch) {
338
- if (patch.metadata === undefined)
339
- delete next.metadata;
340
- else {
341
- const metadata = { ...next.metadata };
342
- for (const [key, value] of Object.entries(patch.metadata)) {
343
- if (value === undefined)
344
- delete metadata[key];
345
- else
346
- metadata[key] = value;
347
- }
348
- next.metadata = metadata;
349
- }
350
- }
351
- return next;
352
- }
353
- function createStreamOptionsPatch(base, value) {
354
- const patch = {};
355
- for (const key of [
356
- "transport",
357
- "timeoutMs",
358
- "maxRetries",
359
- "maxRetryDelayMs",
360
- "cacheRetention",
361
- "deferred",
362
- ]) {
363
- if (base[key] !== value[key])
364
- Object.assign(patch, { [key]: value[key] });
365
- }
366
- if (base.headers !== value.headers) {
367
- if (value.headers === undefined)
368
- patch.headers = undefined;
369
- else {
370
- const headers = {};
371
- for (const key of Object.keys(base.headers ?? {})) {
372
- if (!(key in value.headers))
373
- headers[key] = undefined;
374
- }
375
- for (const [key, header] of Object.entries(value.headers)) {
376
- if (base.headers?.[key] !== header)
377
- headers[key] = header;
378
- }
379
- if (base.headers === undefined && Object.keys(headers).length === 0)
380
- patch.headers = {};
381
- else if (Object.keys(headers).length !== 0)
382
- patch.headers = headers;
383
- }
384
- }
385
- if (base.metadata !== value.metadata) {
386
- if (value.metadata === undefined)
387
- patch.metadata = undefined;
388
- else {
389
- const metadata = {};
390
- for (const key of Object.keys(base.metadata ?? {})) {
391
- if (!(key in value.metadata))
392
- metadata[key] = undefined;
393
- }
394
- for (const [key, metadataValue] of Object.entries(value.metadata)) {
395
- if (base.metadata?.[key] !== metadataValue)
396
- metadata[key] = metadataValue;
397
- }
398
- if (base.metadata === undefined && Object.keys(metadata).length === 0)
399
- patch.metadata = {};
400
- else if (Object.keys(metadata).length !== 0)
401
- patch.metadata = metadata;
402
- }
403
- }
404
- return patch;
405
- }
406
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/harness/hooks.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HookHandler, HookInvocation, HookMap, HookName, Hooks } from \"./agent-harness.ts\";\nimport { type Context, withAbortSignal } from \"./context.ts\";\nimport type { Gate } from \"./execution/effect-gate.ts\";\nimport { startHarnessSpan } from \"./telemetry.ts\";\nimport type { AgentHarnessStreamOptions, AgentHarnessStreamOptionsPatch } from \"./types.ts\";\n\ninterface HookRegistration {\n\tid?: string;\n\thandler: (event: unknown, context: Context) => unknown | Promise<unknown>;\n}\n\ntype HookErrorReporter = (error: Error, hook: HookName, lane: string, context: Context) => void | Promise<void>;\n\n/** Ordered harness hook registry and aggregate runner. */\nexport class HookRegistry implements Hooks {\n\tprivate readonly registrations = new Map<HookName, HookRegistration[]>();\n\tprivate readonly reportError: HookErrorReporter;\n\tprivate closedError: Error | undefined;\n\n\tconstructor(reportError: HookErrorReporter) {\n\t\tthis.reportError = reportError;\n\t}\n\n\ton<TName extends HookName>(name: TName, handler: HookHandler<TName>, options: { id?: string } = {}): () => void {\n\t\tif (this.closedError !== undefined) throw this.closedError;\n\t\tconst registrations = this.registrations.get(name) ?? [];\n\t\tconst registration: HookRegistration = {\n\t\t\t...(options.id === undefined ? {} : { id: options.id }),\n\t\t\thandler: (event, context) => handler(event as HookInvocation<TName>, context),\n\t\t};\n\t\tregistrations.push(registration);\n\t\tthis.registrations.set(name, registrations);\n\t\treturn () => {\n\t\t\tconst index = registrations.indexOf(registration);\n\t\t\tif (index !== -1) registrations.splice(index, 1);\n\t\t};\n\t}\n\n\thas(name: HookName): boolean {\n\t\treturn (this.registrations.get(name)?.length ?? 0) !== 0;\n\t}\n\n\t/** Invoke one accepted-operation aggregate after synchronously passing its effect gate. */\n\trunWithGate<TName extends HookName>(\n\t\tname: TName,\n\t\tevent: HookInvocation<TName>,\n\t\tgate: Gate,\n\t\tcontext: Context,\n\t): Promise<HookMap[TName][\"result\"]> {\n\t\treturn gate.admit(() => {\n\t\t\tconst admittedContext = withAbortSignal(gate.signal, context);\n\t\t\tadmittedContext.abortSignal?.throwIfAborted();\n\t\t\treturn this.runAdmitted(name, event, admittedContext);\n\t\t});\n\t}\n\n\t/** Invoke a tool-hook aggregate with one telemetry span per registered handler. */\n\trunToolWithGate<TName extends \"before_tool\" | \"after_tool\">(\n\t\tname: TName,\n\t\tevent: HookInvocation<TName>,\n\t\tgate: Gate,\n\t\tcontext: Context,\n\t): Promise<HookMap[TName][\"result\"]> {\n\t\treturn gate.admit(() => {\n\t\t\tconst admittedContext = withAbortSignal(gate.signal, context);\n\t\t\tadmittedContext.abortSignal?.throwIfAborted();\n\t\t\treturn (\n\t\t\t\tname === \"before_tool\"\n\t\t\t\t\t? this.beforeTool(event as HookInvocation<\"before_tool\">, admittedContext)\n\t\t\t\t\t: this.afterTool(event as HookInvocation<\"after_tool\">, admittedContext)\n\t\t\t) as Promise<HookMap[TName][\"result\"]>;\n\t\t});\n\t}\n\n\tclose(error: Error): void {\n\t\tthis.closedError ??= error;\n\t}\n\n\tprivate async runAdmitted<TName extends HookName>(\n\t\tname: TName,\n\t\tevent: HookInvocation<TName>,\n\t\tcontext: Context,\n\t): Promise<HookMap[TName][\"result\"]> {\n\t\tif (this.closedError !== undefined) throw this.closedError;\n\t\tconst result = await this.aggregate(name, event, context);\n\t\treturn result as HookMap[TName][\"result\"];\n\t}\n\n\tprivate async aggregate(name: HookName, event: HookInvocation<HookName>, context: Context): Promise<unknown> {\n\t\tswitch (name) {\n\t\t\tcase \"before_run\":\n\t\t\t\treturn this.beforeRun(event as HookInvocation<\"before_run\">, context);\n\t\t\tcase \"before_drive\":\n\t\t\t\tawait this.invokeAllFailClosed(name, event as HookInvocation<\"before_drive\">, context);\n\t\t\t\treturn undefined;\n\t\t\tcase \"before_run_end\": {\n\t\t\t\tlet followUp: string | undefined;\n\t\t\t\tawait this.invokeAll(\n\t\t\t\t\tname,\n\t\t\t\t\tevent,\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tconst result = value as HookMap[\"before_run_end\"][\"result\"];\n\t\t\t\t\t\tif (result?.followUp !== undefined) followUp = result.followUp;\n\t\t\t\t\t},\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t\treturn followUp === undefined ? undefined : { followUp };\n\t\t\t}\n\t\t\tcase \"transform_context\":\n\t\t\t\treturn this.transformContext(event as HookInvocation<\"transform_context\">, context);\n\t\t\tcase \"before_request\":\n\t\t\t\treturn this.beforeRequest(event as HookInvocation<\"before_request\">, context);\n\t\t\tcase \"before_payload\":\n\t\t\t\treturn this.beforePayload(event as HookInvocation<\"before_payload\">, context);\n\t\t\tcase \"after_response\":\n\t\t\t\treturn this.afterResponse(event as HookInvocation<\"after_response\">, context);\n\t\t\tcase \"before_tool\":\n\t\t\t\treturn this.beforeTool(event as HookInvocation<\"before_tool\">, context);\n\t\t\tcase \"after_tool\":\n\t\t\t\treturn this.afterTool(event as HookInvocation<\"after_tool\">, context);\n\t\t\tcase \"before_compaction\":\n\t\t\t\treturn this.firstStructural(name, event as HookInvocation<\"before_compaction\">, \"compaction\", context);\n\t\t\tcase \"before_navigation\":\n\t\t\t\treturn this.firstStructural(name, event as HookInvocation<\"before_navigation\">, \"summary\", context);\n\t\t}\n\t}\n\n\tprivate async beforeRun(\n\t\tevent: HookInvocation<\"before_run\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"before_run\"][\"result\"]> {\n\t\tlet prompt = event.prompt;\n\t\tlet injected: HookMap[\"before_run\"][\"event\"][\"prompt\"] = [];\n\t\tfor (const registration of this.registrationsFor(\"before_run\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{ ...event, prompt },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"before_run\"][\"result\"];\n\t\t\t\tif (result?.messages !== undefined) {\n\t\t\t\t\tinjected = [...injected, ...result.messages];\n\t\t\t\t\tprompt = [...prompt, ...result.messages];\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"before_run\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn injected.length === 0 ? undefined : { messages: injected };\n\t}\n\n\tprivate async beforeTool(\n\t\tevent: HookInvocation<\"before_tool\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"before_tool\"][\"result\"]> {\n\t\tlet args = event.args;\n\t\tlet block: { reason: string; terminate?: boolean } | undefined;\n\t\tfor (const registration of this.registrationsFor(\"before_tool\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await this.invokeToolRegistration(\n\t\t\t\t\t\"before_tool\",\n\t\t\t\t\tregistration,\n\t\t\t\t\t{ ...event, args },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"before_tool\"][\"result\"];\n\t\t\t\tif (result?.args !== undefined) args = result.args;\n\t\t\t\tif (result?.block !== undefined) {\n\t\t\t\t\tblock = result.block;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst normalized = error instanceof Error ? error : new Error(String(error));\n\t\t\t\tawait this.reportError(normalized, \"before_tool\", event.lane, context);\n\t\t\t\tblock = { reason: normalized.message };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...(args === event.args ? {} : { args }),\n\t\t\t...(block === undefined ? {} : { block }),\n\t\t};\n\t}\n\n\tprivate async transformContext(\n\t\tevent: HookInvocation<\"transform_context\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"transform_context\"][\"result\"]> {\n\t\tlet messages = event.messages;\n\t\tlet systemPrompt = event.systemPrompt;\n\t\tfor (const registration of this.registrationsFor(\"transform_context\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{\n\t\t\t\t\t\t...event,\n\t\t\t\t\t\tmessages,\n\t\t\t\t\t\tsystemPrompt,\n\t\t\t\t\t},\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"transform_context\"][\"result\"];\n\t\t\t\tif (result?.messages !== undefined) messages = result.messages;\n\t\t\t\tif (result?.systemPrompt !== undefined) systemPrompt = result.systemPrompt;\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"transform_context\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { messages, systemPrompt };\n\t}\n\n\tprivate async beforeRequest(\n\t\tevent: HookInvocation<\"before_request\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"before_request\"][\"result\"]> {\n\t\tlet streamOptions = event.streamOptions;\n\t\tlet changed = false;\n\t\tfor (const registration of this.registrationsFor(\"before_request\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{ ...event, streamOptions },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"before_request\"][\"result\"];\n\t\t\t\tif (result?.streamOptions !== undefined) {\n\t\t\t\t\tstreamOptions = applyStreamOptionsPatch(streamOptions, result.streamOptions);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"before_request\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn changed ? { streamOptions: createStreamOptionsPatch(event.streamOptions, streamOptions) } : undefined;\n\t}\n\n\tprivate async beforePayload(\n\t\tevent: HookInvocation<\"before_payload\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"before_payload\"][\"result\"]> {\n\t\tlet payload = event.payload;\n\t\tfor (const registration of this.registrationsFor(\"before_payload\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{ ...event, payload },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"before_payload\"][\"result\"];\n\t\t\t\tif (result?.payload !== undefined) payload = result.payload;\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"before_payload\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { payload };\n\t}\n\n\tprivate async afterResponse(\n\t\tevent: HookInvocation<\"after_response\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"after_response\"][\"result\"]> {\n\t\tlet message = event.message;\n\t\tfor (const registration of this.registrationsFor(\"after_response\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{ ...event, message },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"after_response\"][\"result\"];\n\t\t\t\tif (result?.message !== undefined) message = result.message;\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"after_response\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { message };\n\t}\n\n\tprivate async afterTool(\n\t\tevent: HookInvocation<\"after_tool\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"after_tool\"][\"result\"]> {\n\t\tlet current = {\n\t\t\tcontent: event.content,\n\t\t\tdetails: event.details,\n\t\t\tisError: event.isError,\n\t\t\tusage: event.usage,\n\t\t};\n\t\tconst aggregate: NonNullable<HookMap[\"after_tool\"][\"result\"]> = {};\n\t\tfor (const registration of this.registrationsFor(\"after_tool\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await this.invokeToolRegistration(\n\t\t\t\t\t\"after_tool\",\n\t\t\t\t\tregistration,\n\t\t\t\t\t{ ...event, ...current },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"after_tool\"][\"result\"];\n\t\t\t\tif (result === undefined) continue;\n\t\t\t\tif (result.content !== undefined) aggregate.content = result.content;\n\t\t\t\tif (result.details !== undefined) aggregate.details = result.details;\n\t\t\t\tif (result.isError !== undefined) aggregate.isError = result.isError;\n\t\t\t\tif (result.usage !== undefined) aggregate.usage = result.usage;\n\t\t\t\tif (result.terminate !== undefined) aggregate.terminate = result.terminate;\n\t\t\t\tcurrent = {\n\t\t\t\t\tcontent: result.content === undefined ? current.content : result.content,\n\t\t\t\t\tdetails: result.details === undefined ? current.details : result.details,\n\t\t\t\t\tisError: result.isError === undefined ? current.isError : result.isError,\n\t\t\t\t\tusage: result.usage === undefined ? current.usage : result.usage,\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"after_tool\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn Object.keys(aggregate).length === 0 ? undefined : aggregate;\n\t}\n\n\tprivate async firstStructural(\n\t\tname: \"before_compaction\" | \"before_navigation\",\n\t\tevent: HookInvocation<\"before_compaction\"> | HookInvocation<\"before_navigation\">,\n\t\tresultField: \"compaction\" | \"summary\",\n\t\tcontext: Context,\n\t): Promise<unknown> {\n\t\tfor (const registration of this.registrationsFor(name)) {\n\t\t\ttry {\n\t\t\t\tconst value = await registration.handler(event, context);\n\t\t\t\tif (value === undefined || value === null || typeof value !== \"object\") continue;\n\t\t\t\tconst result = value as Record<string, unknown>;\n\t\t\t\tif (result.decline === true && result[resultField] !== undefined) {\n\t\t\t\t\tawait this.reportError(\n\t\t\t\t\t\tnew Error(`${name} hook cannot return both decline and ${resultField}`),\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tevent.lane,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (result.decline === true || result[resultField] !== undefined) return value;\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\tname,\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate invokeToolRegistration(\n\t\tname: \"before_tool\" | \"after_tool\",\n\t\tregistration: HookRegistration,\n\t\tevent: HookInvocation<\"before_tool\"> | HookInvocation<\"after_tool\">,\n\t\tcontext: Context,\n\t): Promise<unknown> {\n\t\treturn startHarnessSpan(\n\t\t\t\"pi.harness.hook\",\n\t\t\t{\n\t\t\t\t\"pi.lane.name\": event.lane,\n\t\t\t\t\"pi.operation.id\": event.runId,\n\t\t\t\t\"pi.hook.name\": name,\n\t\t\t\t...(registration.id === undefined ? {} : { \"pi.hook.registration_id\": registration.id }),\n\t\t\t},\n\t\t\tasync (span, spanContext) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await registration.handler(event, spanContext);\n\t\t\t\t\tconst blocked =\n\t\t\t\t\t\tname === \"before_tool\" &&\n\t\t\t\t\t\tresult !== null &&\n\t\t\t\t\t\ttypeof result === \"object\" &&\n\t\t\t\t\t\t\"block\" in result &&\n\t\t\t\t\t\tresult.block !== undefined;\n\t\t\t\t\tspan.setAttributes({ \"pi.hook.outcome\": blocked ? \"blocked\" : \"completed\" });\n\t\t\t\t\treturn result;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tspan.setAttributes({ \"pi.hook.outcome\": \"failed\" });\n\t\t\t\t\tspan.setStatus({ status: \"error\" });\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontext,\n\t\t);\n\t}\n\n\tprivate registrationsFor(name: HookName): HookRegistration[] {\n\t\treturn [...(this.registrations.get(name) ?? [])];\n\t}\n\n\tprivate async invokeAllFailClosed(\n\t\tname: \"before_drive\",\n\t\tevent: HookInvocation<\"before_drive\">,\n\t\tcontext: Context,\n\t): Promise<void> {\n\t\tfor (const registration of this.registrationsFor(name)) {\n\t\t\ttry {\n\t\t\t\tawait registration.handler(event, context);\n\t\t\t} catch (error) {\n\t\t\t\tconst normalized = error instanceof Error ? error : new Error(String(error));\n\t\t\t\tawait this.reportError(normalized, name, event.lane, context);\n\t\t\t\tthrow normalized;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async invokeAll(\n\t\tname: HookName,\n\t\tevent: HookInvocation<HookName>,\n\t\tapply: (value: unknown) => void,\n\t\tcontext: Context,\n\t): Promise<void> {\n\t\tfor (const registration of this.registrationsFor(name)) {\n\t\t\ttry {\n\t\t\t\tapply(await registration.handler(event, context));\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\tname,\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function applyStreamOptionsPatch(\n\tbase: AgentHarnessStreamOptions,\n\tpatch: AgentHarnessStreamOptionsPatch,\n): AgentHarnessStreamOptions {\n\tconst next: AgentHarnessStreamOptions = { ...base };\n\tfor (const key of [\n\t\t\"transport\",\n\t\t\"timeoutMs\",\n\t\t\"maxRetries\",\n\t\t\"maxRetryDelayMs\",\n\t\t\"cacheRetention\",\n\t\t\"deferred\",\n\t] as const) {\n\t\tif (!(key in patch)) continue;\n\t\tconst value = patch[key];\n\t\tif (value === undefined) delete next[key];\n\t\telse Object.assign(next, { [key]: value });\n\t}\n\tif (\"headers\" in patch) {\n\t\tif (patch.headers === undefined) delete next.headers;\n\t\telse {\n\t\t\tconst headers = { ...next.headers };\n\t\t\tfor (const [key, value] of Object.entries(patch.headers)) {\n\t\t\t\tif (value === undefined) delete headers[key];\n\t\t\t\telse headers[key] = value;\n\t\t\t}\n\t\t\tnext.headers = headers;\n\t\t}\n\t}\n\tif (\"metadata\" in patch) {\n\t\tif (patch.metadata === undefined) delete next.metadata;\n\t\telse {\n\t\t\tconst metadata = { ...next.metadata };\n\t\t\tfor (const [key, value] of Object.entries(patch.metadata)) {\n\t\t\t\tif (value === undefined) delete metadata[key];\n\t\t\t\telse metadata[key] = value;\n\t\t\t}\n\t\t\tnext.metadata = metadata;\n\t\t}\n\t}\n\treturn next;\n}\n\nfunction createStreamOptionsPatch(\n\tbase: AgentHarnessStreamOptions,\n\tvalue: AgentHarnessStreamOptions,\n): AgentHarnessStreamOptionsPatch {\n\tconst patch: AgentHarnessStreamOptionsPatch = {};\n\tfor (const key of [\n\t\t\"transport\",\n\t\t\"timeoutMs\",\n\t\t\"maxRetries\",\n\t\t\"maxRetryDelayMs\",\n\t\t\"cacheRetention\",\n\t\t\"deferred\",\n\t] as const) {\n\t\tif (base[key] !== value[key]) Object.assign(patch, { [key]: value[key] });\n\t}\n\tif (base.headers !== value.headers) {\n\t\tif (value.headers === undefined) patch.headers = undefined;\n\t\telse {\n\t\t\tconst headers: Record<string, string | undefined> = {};\n\t\t\tfor (const key of Object.keys(base.headers ?? {})) {\n\t\t\t\tif (!(key in value.headers)) headers[key] = undefined;\n\t\t\t}\n\t\t\tfor (const [key, header] of Object.entries(value.headers)) {\n\t\t\t\tif (base.headers?.[key] !== header) headers[key] = header;\n\t\t\t}\n\t\t\tif (base.headers === undefined && Object.keys(headers).length === 0) patch.headers = {};\n\t\t\telse if (Object.keys(headers).length !== 0) patch.headers = headers;\n\t\t}\n\t}\n\tif (base.metadata !== value.metadata) {\n\t\tif (value.metadata === undefined) patch.metadata = undefined;\n\t\telse {\n\t\t\tconst metadata: Record<string, unknown | undefined> = {};\n\t\t\tfor (const key of Object.keys(base.metadata ?? {})) {\n\t\t\t\tif (!(key in value.metadata)) metadata[key] = undefined;\n\t\t\t}\n\t\t\tfor (const [key, metadataValue] of Object.entries(value.metadata)) {\n\t\t\t\tif (base.metadata?.[key] !== metadataValue) metadata[key] = metadataValue;\n\t\t\t}\n\t\t\tif (base.metadata === undefined && Object.keys(metadata).length === 0) patch.metadata = {};\n\t\t\telse if (Object.keys(metadata).length !== 0) patch.metadata = metadata;\n\t\t}\n\t}\n\treturn patch;\n}\n"]}
@@ -1,51 +0,0 @@
1
- import type { ImageContent, Message, TextContent } from "@earendil-works/pi-ai";
2
- import type { AgentMessage } from "../types.ts";
3
- export declare const COMPACTION_SUMMARY_PREFIX = "The conversation history before this point was compacted into the following summary:\n\n<summary>\n";
4
- export declare const COMPACTION_SUMMARY_SUFFIX = "\n</summary>";
5
- export declare const BRANCH_SUMMARY_PREFIX = "The following is a summary of a branch that this conversation came back from:\n\n<summary>\n";
6
- export declare const BRANCH_SUMMARY_SUFFIX = "</summary>";
7
- export interface BashExecutionMessage {
8
- role: "bashExecution";
9
- command: string;
10
- output: string;
11
- exitCode: number | undefined;
12
- cancelled: boolean;
13
- truncated: boolean;
14
- fullOutputPath?: string;
15
- timestamp: number;
16
- excludeFromContext?: boolean;
17
- }
18
- export interface CustomMessage<T = unknown> {
19
- role: "custom";
20
- customType: string;
21
- content: string | (TextContent | ImageContent)[];
22
- display: boolean;
23
- details?: T;
24
- timestamp: number;
25
- }
26
- export interface BranchSummaryMessage {
27
- role: "branchSummary";
28
- summary: string;
29
- fromId: string | null;
30
- timestamp: number;
31
- }
32
- export interface CompactionSummaryMessage {
33
- role: "compactionSummary";
34
- summary: string;
35
- tokensBefore: number;
36
- timestamp: number;
37
- }
38
- declare module "../types.ts" {
39
- interface CustomAgentMessages {
40
- bashExecution: BashExecutionMessage;
41
- custom: CustomMessage;
42
- branchSummary: BranchSummaryMessage;
43
- compactionSummary: CompactionSummaryMessage;
44
- }
45
- }
46
- export declare function bashExecutionToText(msg: BashExecutionMessage): string;
47
- export declare function createBranchSummaryMessage(summary: string, fromId: string | null, timestamp: string | number): BranchSummaryMessage;
48
- export declare function createCompactionSummaryMessage(summary: string, tokensBefore: number, timestamp: string | number): CompactionSummaryMessage;
49
- export declare function createCustomMessage(customType: string, content: string | (TextContent | ImageContent)[], display: boolean, details: unknown | undefined, timestamp: string | number): CustomMessage;
50
- export declare function convertToLlm(messages: AgentMessage[]): Message[];
51
- //# sourceMappingURL=messages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/harness/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,yBAAyB,wGAGrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,iBAC3B,CAAC;AAEZ,eAAO,MAAM,qBAAqB,iGAGjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,QAAQ,aAAa,CAAC;IAC5B,UAAU,mBAAmB;QAC5B,aAAa,EAAE,oBAAoB,CAAC;QACpC,MAAM,EAAE,aAAa,CAAC;QACtB,aAAa,EAAE,oBAAoB,CAAC;QACpC,iBAAiB,EAAE,wBAAwB,CAAC;KAC5C;CACD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAgBrE;AAED,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,MAAM,GAAG,MAAM,GACxB,oBAAoB,CAOtB;AAED,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,MAAM,GACxB,wBAAwB,CAO1B;AAED,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,MAAM,GACxB,aAAa,CASf;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CA6ChE"}
@@ -1,103 +0,0 @@
1
- export const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:
2
-
3
- <summary>
4
- `;
5
- export const COMPACTION_SUMMARY_SUFFIX = `
6
- </summary>`;
7
- export const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:
8
-
9
- <summary>
10
- `;
11
- export const BRANCH_SUMMARY_SUFFIX = `</summary>`;
12
- export function bashExecutionToText(msg) {
13
- let text = `Ran \`${msg.command}\`\n`;
14
- if (msg.output) {
15
- text += `\`\`\`\n${msg.output}\n\`\`\``;
16
- }
17
- else {
18
- text += "(no output)";
19
- }
20
- if (msg.cancelled) {
21
- text += "\n\n(command cancelled)";
22
- }
23
- else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {
24
- text += `\n\nCommand exited with code ${msg.exitCode}`;
25
- }
26
- if (msg.truncated && msg.fullOutputPath) {
27
- text += `\n\n[Output truncated. Full output: ${msg.fullOutputPath}]`;
28
- }
29
- return text;
30
- }
31
- export function createBranchSummaryMessage(summary, fromId, timestamp) {
32
- return {
33
- role: "branchSummary",
34
- summary,
35
- fromId,
36
- timestamp: typeof timestamp === "number" ? timestamp : new Date(timestamp).getTime(),
37
- };
38
- }
39
- export function createCompactionSummaryMessage(summary, tokensBefore, timestamp) {
40
- return {
41
- role: "compactionSummary",
42
- summary,
43
- tokensBefore,
44
- timestamp: typeof timestamp === "number" ? timestamp : new Date(timestamp).getTime(),
45
- };
46
- }
47
- export function createCustomMessage(customType, content, display, details, timestamp) {
48
- return {
49
- role: "custom",
50
- customType,
51
- content,
52
- display,
53
- details,
54
- timestamp: typeof timestamp === "number" ? timestamp : new Date(timestamp).getTime(),
55
- };
56
- }
57
- export function convertToLlm(messages) {
58
- return messages
59
- .map((m) => {
60
- switch (m.role) {
61
- case "bashExecution":
62
- if (m.excludeFromContext) {
63
- return undefined;
64
- }
65
- return {
66
- role: "user",
67
- content: [{ type: "text", text: bashExecutionToText(m) }],
68
- timestamp: m.timestamp,
69
- };
70
- case "custom": {
71
- const content = typeof m.content === "string" ? [{ type: "text", text: m.content }] : m.content;
72
- return {
73
- role: "user",
74
- content,
75
- timestamp: m.timestamp,
76
- };
77
- }
78
- case "branchSummary":
79
- return {
80
- role: "user",
81
- content: [{ type: "text", text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],
82
- timestamp: m.timestamp,
83
- };
84
- case "compactionSummary":
85
- return {
86
- role: "user",
87
- content: [
88
- { type: "text", text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },
89
- ],
90
- timestamp: m.timestamp,
91
- };
92
- case "system":
93
- case "user":
94
- case "assistant":
95
- case "toolResult":
96
- return m;
97
- default:
98
- return undefined;
99
- }
100
- })
101
- .filter((m) => m !== undefined);
102
- }
103
- //# sourceMappingURL=messages.js.map