@taco-ai/pi-harness 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/LICENSE +26 -0
  2. package/LICENSE.upstream +21 -0
  3. package/README.md +170 -2
  4. package/README.zh-CN.md +165 -0
  5. package/dist/agent-loop.d.ts +49 -0
  6. package/dist/agent-loop.d.ts.map +1 -0
  7. package/dist/agent-loop.js +667 -0
  8. package/dist/agent-loop.js.map +1 -0
  9. package/dist/agent.d.ts +137 -0
  10. package/dist/agent.d.ts.map +1 -0
  11. package/dist/agent.js +437 -0
  12. package/dist/agent.js.map +1 -0
  13. package/dist/harness/agent-harness.d.ts +717 -0
  14. package/dist/harness/agent-harness.d.ts.map +1 -0
  15. package/dist/harness/agent-harness.js +6 -0
  16. package/dist/harness/agent-harness.js.map +1 -0
  17. package/dist/harness/compaction/branch-summarization.d.ts +68 -0
  18. package/dist/harness/compaction/branch-summarization.d.ts.map +1 -0
  19. package/dist/harness/compaction/branch-summarization.js +176 -0
  20. package/dist/harness/compaction/branch-summarization.js.map +1 -0
  21. package/dist/harness/compaction/compaction.d.ts +126 -0
  22. package/dist/harness/compaction/compaction.d.ts.map +1 -0
  23. package/dist/harness/compaction/compaction.js +560 -0
  24. package/dist/harness/compaction/compaction.js.map +1 -0
  25. package/dist/harness/compaction/utils.d.ts +25 -0
  26. package/dist/harness/compaction/utils.d.ts.map +1 -0
  27. package/dist/harness/compaction/utils.js +120 -0
  28. package/dist/harness/compaction/utils.js.map +1 -0
  29. package/dist/harness/config.d.ts +9 -0
  30. package/dist/harness/config.d.ts.map +1 -0
  31. package/dist/harness/config.js +35 -0
  32. package/dist/harness/config.js.map +1 -0
  33. package/dist/harness/context.d.ts +9 -0
  34. package/dist/harness/context.d.ts.map +1 -0
  35. package/dist/harness/context.js +13 -0
  36. package/dist/harness/context.js.map +1 -0
  37. package/dist/harness/env/nodejs.d.ts +43 -0
  38. package/dist/harness/env/nodejs.d.ts.map +1 -0
  39. package/dist/harness/env/nodejs.js +865 -0
  40. package/dist/harness/env/nodejs.js.map +1 -0
  41. package/dist/harness/events.d.ts +25 -0
  42. package/dist/harness/events.d.ts.map +1 -0
  43. package/dist/harness/events.js +250 -0
  44. package/dist/harness/events.js.map +1 -0
  45. package/dist/harness/execution/assistant.d.ts +42 -0
  46. package/dist/harness/execution/assistant.d.ts.map +1 -0
  47. package/dist/harness/execution/assistant.js +82 -0
  48. package/dist/harness/execution/assistant.js.map +1 -0
  49. package/dist/harness/execution/effect-gate.d.ts +22 -0
  50. package/dist/harness/execution/effect-gate.d.ts.map +1 -0
  51. package/dist/harness/execution/effect-gate.js +49 -0
  52. package/dist/harness/execution/effect-gate.js.map +1 -0
  53. package/dist/harness/execution/tools.d.ts +67 -0
  54. package/dist/harness/execution/tools.d.ts.map +1 -0
  55. package/dist/harness/execution/tools.js +119 -0
  56. package/dist/harness/execution/tools.js.map +1 -0
  57. package/dist/harness/hooks.d.ts +38 -0
  58. package/dist/harness/hooks.d.ts.map +1 -0
  59. package/dist/harness/hooks.js +406 -0
  60. package/dist/harness/hooks.js.map +1 -0
  61. package/dist/harness/messages.d.ts +51 -0
  62. package/dist/harness/messages.d.ts.map +1 -0
  63. package/dist/harness/messages.js +103 -0
  64. package/dist/harness/messages.js.map +1 -0
  65. package/dist/harness/pico3/bash.d.ts +10 -0
  66. package/dist/harness/pico3/bash.d.ts.map +1 -0
  67. package/dist/harness/pico3/bash.js +25 -0
  68. package/dist/harness/pico3/bash.js.map +1 -0
  69. package/dist/harness/pico3/bounded.d.ts +21 -0
  70. package/dist/harness/pico3/bounded.d.ts.map +1 -0
  71. package/dist/harness/pico3/bounded.js +98 -0
  72. package/dist/harness/pico3/bounded.js.map +1 -0
  73. package/dist/harness/pico3/chord.d.ts +41 -0
  74. package/dist/harness/pico3/chord.d.ts.map +1 -0
  75. package/dist/harness/pico3/chord.js +147 -0
  76. package/dist/harness/pico3/chord.js.map +1 -0
  77. package/dist/harness/pico3/context.d.ts +16 -0
  78. package/dist/harness/pico3/context.d.ts.map +1 -0
  79. package/dist/harness/pico3/context.js +88 -0
  80. package/dist/harness/pico3/context.js.map +1 -0
  81. package/dist/harness/pico3/harness.d.ts +198 -0
  82. package/dist/harness/pico3/harness.d.ts.map +1 -0
  83. package/dist/harness/pico3/harness.js +654 -0
  84. package/dist/harness/pico3/harness.js.map +1 -0
  85. package/dist/harness/pico3/hooks.d.ts +10 -0
  86. package/dist/harness/pico3/hooks.d.ts.map +1 -0
  87. package/dist/harness/pico3/hooks.js +33 -0
  88. package/dist/harness/pico3/hooks.js.map +1 -0
  89. package/dist/harness/pico3/index.d.ts +19 -0
  90. package/dist/harness/pico3/index.d.ts.map +1 -0
  91. package/dist/harness/pico3/index.js +15 -0
  92. package/dist/harness/pico3/index.js.map +1 -0
  93. package/dist/harness/pico3/jsonl.d.ts +58 -0
  94. package/dist/harness/pico3/jsonl.d.ts.map +1 -0
  95. package/dist/harness/pico3/jsonl.js +325 -0
  96. package/dist/harness/pico3/jsonl.js.map +1 -0
  97. package/dist/harness/pico3/kinds/collapse.d.ts +49 -0
  98. package/dist/harness/pico3/kinds/collapse.d.ts.map +1 -0
  99. package/dist/harness/pico3/kinds/collapse.js +191 -0
  100. package/dist/harness/pico3/kinds/collapse.js.map +1 -0
  101. package/dist/harness/pico3/kinds/entries.d.ts +78 -0
  102. package/dist/harness/pico3/kinds/entries.d.ts.map +1 -0
  103. package/dist/harness/pico3/kinds/entries.js +13 -0
  104. package/dist/harness/pico3/kinds/entries.js.map +1 -0
  105. package/dist/harness/pico3/kinds/frames.d.ts +11 -0
  106. package/dist/harness/pico3/kinds/frames.d.ts.map +1 -0
  107. package/dist/harness/pico3/kinds/frames.js +76 -0
  108. package/dist/harness/pico3/kinds/frames.js.map +1 -0
  109. package/dist/harness/pico3/kinds/generation.d.ts +94 -0
  110. package/dist/harness/pico3/kinds/generation.d.ts.map +1 -0
  111. package/dist/harness/pico3/kinds/generation.js +505 -0
  112. package/dist/harness/pico3/kinds/generation.js.map +1 -0
  113. package/dist/harness/pico3/kinds/job.d.ts +44 -0
  114. package/dist/harness/pico3/kinds/job.d.ts.map +1 -0
  115. package/dist/harness/pico3/kinds/job.js +143 -0
  116. package/dist/harness/pico3/kinds/job.js.map +1 -0
  117. package/dist/harness/pico3/kinds/plugin.d.ts +15 -0
  118. package/dist/harness/pico3/kinds/plugin.d.ts.map +1 -0
  119. package/dist/harness/pico3/kinds/plugin.js +35 -0
  120. package/dist/harness/pico3/kinds/plugin.js.map +1 -0
  121. package/dist/harness/pico3/kinds/post-tools.d.ts +22 -0
  122. package/dist/harness/pico3/kinds/post-tools.d.ts.map +1 -0
  123. package/dist/harness/pico3/kinds/post-tools.js +145 -0
  124. package/dist/harness/pico3/kinds/post-tools.js.map +1 -0
  125. package/dist/harness/pico3/kinds/task-api.d.ts +3 -0
  126. package/dist/harness/pico3/kinds/task-api.d.ts.map +1 -0
  127. package/dist/harness/pico3/kinds/task-api.js +45 -0
  128. package/dist/harness/pico3/kinds/task-api.js.map +1 -0
  129. package/dist/harness/pico3/kinds/tool.d.ts +43 -0
  130. package/dist/harness/pico3/kinds/tool.d.ts.map +1 -0
  131. package/dist/harness/pico3/kinds/tool.js +373 -0
  132. package/dist/harness/pico3/kinds/tool.js.map +1 -0
  133. package/dist/harness/pico3/legacy-tracker.d.ts +11 -0
  134. package/dist/harness/pico3/legacy-tracker.d.ts.map +1 -0
  135. package/dist/harness/pico3/legacy-tracker.js +41 -0
  136. package/dist/harness/pico3/legacy-tracker.js.map +1 -0
  137. package/dist/harness/pico3/membrane.d.ts +23 -0
  138. package/dist/harness/pico3/membrane.d.ts.map +1 -0
  139. package/dist/harness/pico3/membrane.js +141 -0
  140. package/dist/harness/pico3/membrane.js.map +1 -0
  141. package/dist/harness/pico3/memory.d.ts +53 -0
  142. package/dist/harness/pico3/memory.d.ts.map +1 -0
  143. package/dist/harness/pico3/memory.js +264 -0
  144. package/dist/harness/pico3/memory.js.map +1 -0
  145. package/dist/harness/pico3/scheduler.d.ts +49 -0
  146. package/dist/harness/pico3/scheduler.d.ts.map +1 -0
  147. package/dist/harness/pico3/scheduler.js +438 -0
  148. package/dist/harness/pico3/scheduler.js.map +1 -0
  149. package/dist/harness/pico3/session.d.ts +264 -0
  150. package/dist/harness/pico3/session.d.ts.map +1 -0
  151. package/dist/harness/pico3/session.js +1348 -0
  152. package/dist/harness/pico3/session.js.map +1 -0
  153. package/dist/harness/pico3/system.d.ts +126 -0
  154. package/dist/harness/pico3/system.d.ts.map +1 -0
  155. package/dist/harness/pico3/system.js +244 -0
  156. package/dist/harness/pico3/system.js.map +1 -0
  157. package/dist/harness/pico3/types.d.ts +973 -0
  158. package/dist/harness/pico3/types.d.ts.map +1 -0
  159. package/dist/harness/pico3/types.js +96 -0
  160. package/dist/harness/pico3/types.js.map +1 -0
  161. package/dist/harness/pico3/view.d.ts +34 -0
  162. package/dist/harness/pico3/view.d.ts.map +1 -0
  163. package/dist/harness/pico3/view.js +411 -0
  164. package/dist/harness/pico3/view.js.map +1 -0
  165. package/dist/harness/prompt-templates.d.ts +49 -0
  166. package/dist/harness/prompt-templates.d.ts.map +1 -0
  167. package/dist/harness/prompt-templates.js +225 -0
  168. package/dist/harness/prompt-templates.js.map +1 -0
  169. package/dist/harness/result.d.ts +133 -0
  170. package/dist/harness/result.d.ts.map +1 -0
  171. package/dist/harness/result.js +81 -0
  172. package/dist/harness/result.js.map +1 -0
  173. package/dist/harness/runtime/drive/boundary.d.ts +28 -0
  174. package/dist/harness/runtime/drive/boundary.d.ts.map +1 -0
  175. package/dist/harness/runtime/drive/boundary.js +173 -0
  176. package/dist/harness/runtime/drive/boundary.js.map +1 -0
  177. package/dist/harness/runtime/drive/checkpoint.d.ts +8 -0
  178. package/dist/harness/runtime/drive/checkpoint.d.ts.map +1 -0
  179. package/dist/harness/runtime/drive/checkpoint.js +133 -0
  180. package/dist/harness/runtime/drive/checkpoint.js.map +1 -0
  181. package/dist/harness/runtime/drive/deferred.d.ts +15 -0
  182. package/dist/harness/runtime/drive/deferred.d.ts.map +1 -0
  183. package/dist/harness/runtime/drive/deferred.js +179 -0
  184. package/dist/harness/runtime/drive/deferred.js.map +1 -0
  185. package/dist/harness/runtime/drive/generation.d.ts +8 -0
  186. package/dist/harness/runtime/drive/generation.d.ts.map +1 -0
  187. package/dist/harness/runtime/drive/generation.js +205 -0
  188. package/dist/harness/runtime/drive/generation.js.map +1 -0
  189. package/dist/harness/runtime/drive/reconcile.d.ts +5 -0
  190. package/dist/harness/runtime/drive/reconcile.d.ts.map +1 -0
  191. package/dist/harness/runtime/drive/reconcile.js +140 -0
  192. package/dist/harness/runtime/drive/reconcile.js.map +1 -0
  193. package/dist/harness/runtime/drive/recovery.d.ts +8 -0
  194. package/dist/harness/runtime/drive/recovery.d.ts.map +1 -0
  195. package/dist/harness/runtime/drive/recovery.js +85 -0
  196. package/dist/harness/runtime/drive/recovery.js.map +1 -0
  197. package/dist/harness/runtime/drive/response.d.ts +23 -0
  198. package/dist/harness/runtime/drive/response.d.ts.map +1 -0
  199. package/dist/harness/runtime/drive/response.js +395 -0
  200. package/dist/harness/runtime/drive/response.js.map +1 -0
  201. package/dist/harness/runtime/drive/retry.d.ts +4 -0
  202. package/dist/harness/runtime/drive/retry.d.ts.map +1 -0
  203. package/dist/harness/runtime/drive/retry.js +34 -0
  204. package/dist/harness/runtime/drive/retry.js.map +1 -0
  205. package/dist/harness/runtime/drive/structural.d.ts +32 -0
  206. package/dist/harness/runtime/drive/structural.d.ts.map +1 -0
  207. package/dist/harness/runtime/drive/structural.js +929 -0
  208. package/dist/harness/runtime/drive/structural.js.map +1 -0
  209. package/dist/harness/runtime/drive/terminal.d.ts +7 -0
  210. package/dist/harness/runtime/drive/terminal.d.ts.map +1 -0
  211. package/dist/harness/runtime/drive/terminal.js +49 -0
  212. package/dist/harness/runtime/drive/terminal.js.map +1 -0
  213. package/dist/harness/runtime/drive/tool-placement.d.ts +14 -0
  214. package/dist/harness/runtime/drive/tool-placement.d.ts.map +1 -0
  215. package/dist/harness/runtime/drive/tool-placement.js +219 -0
  216. package/dist/harness/runtime/drive/tool-placement.js.map +1 -0
  217. package/dist/harness/runtime/drive/tools.d.ts +6 -0
  218. package/dist/harness/runtime/drive/tools.d.ts.map +1 -0
  219. package/dist/harness/runtime/drive/tools.js +449 -0
  220. package/dist/harness/runtime/drive/tools.js.map +1 -0
  221. package/dist/harness/runtime/drive.d.ts +6 -0
  222. package/dist/harness/runtime/drive.d.ts.map +1 -0
  223. package/dist/harness/runtime/drive.js +93 -0
  224. package/dist/harness/runtime/drive.js.map +1 -0
  225. package/dist/harness/runtime/harness.d.ts +59 -0
  226. package/dist/harness/runtime/harness.d.ts.map +1 -0
  227. package/dist/harness/runtime/harness.js +311 -0
  228. package/dist/harness/runtime/harness.js.map +1 -0
  229. package/dist/harness/runtime/index.d.ts +2 -0
  230. package/dist/harness/runtime/index.d.ts.map +1 -0
  231. package/dist/harness/runtime/index.js +2 -0
  232. package/dist/harness/runtime/index.js.map +1 -0
  233. package/dist/harness/runtime/lane.d.ts +118 -0
  234. package/dist/harness/runtime/lane.d.ts.map +1 -0
  235. package/dist/harness/runtime/lane.js +1576 -0
  236. package/dist/harness/runtime/lane.js.map +1 -0
  237. package/dist/harness/runtime/progress.d.ts +15 -0
  238. package/dist/harness/runtime/progress.d.ts.map +1 -0
  239. package/dist/harness/runtime/progress.js +66 -0
  240. package/dist/harness/runtime/progress.js.map +1 -0
  241. package/dist/harness/runtime/reducer.d.ts +5 -0
  242. package/dist/harness/runtime/reducer.d.ts.map +1 -0
  243. package/dist/harness/runtime/reducer.js +240 -0
  244. package/dist/harness/runtime/reducer.js.map +1 -0
  245. package/dist/harness/runtime/restore.d.ts +24 -0
  246. package/dist/harness/runtime/restore.d.ts.map +1 -0
  247. package/dist/harness/runtime/restore.js +117 -0
  248. package/dist/harness/runtime/restore.js.map +1 -0
  249. package/dist/harness/runtime/transcript.d.ts +21 -0
  250. package/dist/harness/runtime/transcript.d.ts.map +1 -0
  251. package/dist/harness/runtime/transcript.js +72 -0
  252. package/dist/harness/runtime/transcript.js.map +1 -0
  253. package/dist/harness/runtime/types.d.ts +105 -0
  254. package/dist/harness/runtime/types.d.ts.map +1 -0
  255. package/dist/harness/runtime/types.js +61 -0
  256. package/dist/harness/runtime/types.js.map +1 -0
  257. package/dist/harness/session/commit.d.ts +53 -0
  258. package/dist/harness/session/commit.d.ts.map +1 -0
  259. package/dist/harness/session/commit.js +57 -0
  260. package/dist/harness/session/commit.js.map +1 -0
  261. package/dist/harness/session/context.d.ts +10 -0
  262. package/dist/harness/session/context.d.ts.map +1 -0
  263. package/dist/harness/session/context.js +49 -0
  264. package/dist/harness/session/context.js.map +1 -0
  265. package/dist/harness/session/fork-policy.d.ts +21 -0
  266. package/dist/harness/session/fork-policy.d.ts.map +1 -0
  267. package/dist/harness/session/fork-policy.js +55 -0
  268. package/dist/harness/session/fork-policy.js.map +1 -0
  269. package/dist/harness/session/fork.d.ts +16 -0
  270. package/dist/harness/session/fork.d.ts.map +1 -0
  271. package/dist/harness/session/fork.js +79 -0
  272. package/dist/harness/session/fork.js.map +1 -0
  273. package/dist/harness/session/in-memory-storage-state.d.ts +39 -0
  274. package/dist/harness/session/in-memory-storage-state.d.ts.map +1 -0
  275. package/dist/harness/session/in-memory-storage-state.js +276 -0
  276. package/dist/harness/session/in-memory-storage-state.js.map +1 -0
  277. package/dist/harness/session/index.d.ts +11 -0
  278. package/dist/harness/session/index.d.ts.map +1 -0
  279. package/dist/harness/session/index.js +9 -0
  280. package/dist/harness/session/index.js.map +1 -0
  281. package/dist/harness/session/jsonl/codec.d.ts +21 -0
  282. package/dist/harness/session/jsonl/codec.d.ts.map +1 -0
  283. package/dist/harness/session/jsonl/codec.js +45 -0
  284. package/dist/harness/session/jsonl/codec.js.map +1 -0
  285. package/dist/harness/session/jsonl/fork.d.ts +38 -0
  286. package/dist/harness/session/jsonl/fork.d.ts.map +1 -0
  287. package/dist/harness/session/jsonl/fork.js +264 -0
  288. package/dist/harness/session/jsonl/fork.js.map +1 -0
  289. package/dist/harness/session/jsonl/index.d.ts +4 -0
  290. package/dist/harness/session/jsonl/index.d.ts.map +1 -0
  291. package/dist/harness/session/jsonl/index.js +4 -0
  292. package/dist/harness/session/jsonl/index.js.map +1 -0
  293. package/dist/harness/session/jsonl/io.d.ts +14 -0
  294. package/dist/harness/session/jsonl/io.d.ts.map +1 -0
  295. package/dist/harness/session/jsonl/io.js +86 -0
  296. package/dist/harness/session/jsonl/io.js.map +1 -0
  297. package/dist/harness/session/jsonl/legacy-v3.d.ts +44 -0
  298. package/dist/harness/session/jsonl/legacy-v3.d.ts.map +1 -0
  299. package/dist/harness/session/jsonl/legacy-v3.js +462 -0
  300. package/dist/harness/session/jsonl/legacy-v3.js.map +1 -0
  301. package/dist/harness/session/jsonl/repo.d.ts +35 -0
  302. package/dist/harness/session/jsonl/repo.d.ts.map +1 -0
  303. package/dist/harness/session/jsonl/repo.js +301 -0
  304. package/dist/harness/session/jsonl/repo.js.map +1 -0
  305. package/dist/harness/session/jsonl/storage.d.ts +41 -0
  306. package/dist/harness/session/jsonl/storage.d.ts.map +1 -0
  307. package/dist/harness/session/jsonl/storage.js +200 -0
  308. package/dist/harness/session/jsonl/storage.js.map +1 -0
  309. package/dist/harness/session/jsonl/types.d.ts +39 -0
  310. package/dist/harness/session/jsonl/types.d.ts.map +1 -0
  311. package/dist/harness/session/jsonl/types.js +3 -0
  312. package/dist/harness/session/jsonl/types.js.map +1 -0
  313. package/dist/harness/session/memory.d.ts +48 -0
  314. package/dist/harness/session/memory.d.ts.map +1 -0
  315. package/dist/harness/session/memory.js +369 -0
  316. package/dist/harness/session/memory.js.map +1 -0
  317. package/dist/harness/session/mutation-line.d.ts +8 -0
  318. package/dist/harness/session/mutation-line.d.ts.map +1 -0
  319. package/dist/harness/session/mutation-line.js +21 -0
  320. package/dist/harness/session/mutation-line.js.map +1 -0
  321. package/dist/harness/session/session.d.ts +82 -0
  322. package/dist/harness/session/session.d.ts.map +1 -0
  323. package/dist/harness/session/session.js +361 -0
  324. package/dist/harness/session/session.js.map +1 -0
  325. package/dist/harness/session/testing/benchmark/datasets.d.ts +12 -0
  326. package/dist/harness/session/testing/benchmark/datasets.d.ts.map +1 -0
  327. package/dist/harness/session/testing/benchmark/datasets.js +24 -0
  328. package/dist/harness/session/testing/benchmark/datasets.js.map +1 -0
  329. package/dist/harness/session/testing/benchmark/session-repo.d.ts +42 -0
  330. package/dist/harness/session/testing/benchmark/session-repo.d.ts.map +1 -0
  331. package/dist/harness/session/testing/benchmark/session-repo.js +127 -0
  332. package/dist/harness/session/testing/benchmark/session-repo.js.map +1 -0
  333. package/dist/harness/session/testing/benchmark/storage.d.ts +25 -0
  334. package/dist/harness/session/testing/benchmark/storage.d.ts.map +1 -0
  335. package/dist/harness/session/testing/benchmark/storage.js +114 -0
  336. package/dist/harness/session/testing/benchmark/storage.js.map +1 -0
  337. package/dist/harness/session/testing/conformance/session-repo.d.ts +23 -0
  338. package/dist/harness/session/testing/conformance/session-repo.d.ts.map +1 -0
  339. package/dist/harness/session/testing/conformance/session-repo.js +809 -0
  340. package/dist/harness/session/testing/conformance/session-repo.js.map +1 -0
  341. package/dist/harness/session/testing/conformance/storage.d.ts +4 -0
  342. package/dist/harness/session/testing/conformance/storage.d.ts.map +1 -0
  343. package/dist/harness/session/testing/conformance/storage.js +600 -0
  344. package/dist/harness/session/testing/conformance/storage.js.map +1 -0
  345. package/dist/harness/session/testing/gating-storage.d.ts +26 -0
  346. package/dist/harness/session/testing/gating-storage.d.ts.map +1 -0
  347. package/dist/harness/session/testing/gating-storage.js +100 -0
  348. package/dist/harness/session/testing/gating-storage.js.map +1 -0
  349. package/dist/harness/session/testing/index.d.ts +10 -0
  350. package/dist/harness/session/testing/index.d.ts.map +1 -0
  351. package/dist/harness/session/testing/index.js +9 -0
  352. package/dist/harness/session/testing/index.js.map +1 -0
  353. package/dist/harness/session/testing/instrumented-storage.d.ts +11 -0
  354. package/dist/harness/session/testing/instrumented-storage.d.ts.map +1 -0
  355. package/dist/harness/session/testing/instrumented-storage.js +16 -0
  356. package/dist/harness/session/testing/instrumented-storage.js.map +1 -0
  357. package/dist/harness/session/testing/storage-decorator.d.ts +20 -0
  358. package/dist/harness/session/testing/storage-decorator.d.ts.map +1 -0
  359. package/dist/harness/session/testing/storage-decorator.js +41 -0
  360. package/dist/harness/session/testing/storage-decorator.js.map +1 -0
  361. package/dist/harness/session/testing/types.d.ts +12 -0
  362. package/dist/harness/session/testing/types.d.ts.map +1 -0
  363. package/dist/harness/session/testing/types.js +2 -0
  364. package/dist/harness/session/testing/types.js.map +1 -0
  365. package/dist/harness/session/types.d.ts +512 -0
  366. package/dist/harness/session/types.d.ts.map +1 -0
  367. package/dist/harness/session/types.js +9 -0
  368. package/dist/harness/session/types.js.map +1 -0
  369. package/dist/harness/session/values.d.ts +95 -0
  370. package/dist/harness/session/values.d.ts.map +1 -0
  371. package/dist/harness/session/values.js +81 -0
  372. package/dist/harness/session/values.js.map +1 -0
  373. package/dist/harness/skills.d.ts +46 -0
  374. package/dist/harness/skills.d.ts.map +1 -0
  375. package/dist/harness/skills.js +326 -0
  376. package/dist/harness/skills.js.map +1 -0
  377. package/dist/harness/system-prompt.d.ts +3 -0
  378. package/dist/harness/system-prompt.d.ts.map +1 -0
  379. package/dist/harness/system-prompt.js +30 -0
  380. package/dist/harness/system-prompt.js.map +1 -0
  381. package/dist/harness/telemetry.d.ts +1242 -0
  382. package/dist/harness/telemetry.d.ts.map +1 -0
  383. package/dist/harness/telemetry.js +527 -0
  384. package/dist/harness/telemetry.js.map +1 -0
  385. package/dist/harness/tools/bash.d.ts +27 -0
  386. package/dist/harness/tools/bash.d.ts.map +1 -0
  387. package/dist/harness/tools/bash.js +105 -0
  388. package/dist/harness/tools/bash.js.map +1 -0
  389. package/dist/harness/tools/edit-diff.d.ts +89 -0
  390. package/dist/harness/tools/edit-diff.d.ts.map +1 -0
  391. package/dist/harness/tools/edit-diff.js +386 -0
  392. package/dist/harness/tools/edit-diff.js.map +1 -0
  393. package/dist/harness/tools/edit.d.ts +19 -0
  394. package/dist/harness/tools/edit.d.ts.map +1 -0
  395. package/dist/harness/tools/edit.js +108 -0
  396. package/dist/harness/tools/edit.js.map +1 -0
  397. package/dist/harness/tools/file-mutation-queue.d.ts +5 -0
  398. package/dist/harness/tools/file-mutation-queue.d.ts.map +1 -0
  399. package/dist/harness/tools/file-mutation-queue.js +46 -0
  400. package/dist/harness/tools/file-mutation-queue.js.map +1 -0
  401. package/dist/harness/tools/image.d.ts +3 -0
  402. package/dist/harness/tools/image.d.ts.map +1 -0
  403. package/dist/harness/tools/image.js +106 -0
  404. package/dist/harness/tools/image.js.map +1 -0
  405. package/dist/harness/tools/index.d.ts +6 -0
  406. package/dist/harness/tools/index.d.ts.map +1 -0
  407. package/dist/harness/tools/index.js +5 -0
  408. package/dist/harness/tools/index.js.map +1 -0
  409. package/dist/harness/tools/path-utils.d.ts +5 -0
  410. package/dist/harness/tools/path-utils.d.ts.map +1 -0
  411. package/dist/harness/tools/path-utils.js +26 -0
  412. package/dist/harness/tools/path-utils.js.map +1 -0
  413. package/dist/harness/tools/read.d.ts +35 -0
  414. package/dist/harness/tools/read.d.ts.map +1 -0
  415. package/dist/harness/tools/read.js +108 -0
  416. package/dist/harness/tools/read.js.map +1 -0
  417. package/dist/harness/tools/tool-context.d.ts +6 -0
  418. package/dist/harness/tools/tool-context.d.ts.map +1 -0
  419. package/dist/harness/tools/tool-context.js +2 -0
  420. package/dist/harness/tools/tool-context.js.map +1 -0
  421. package/dist/harness/tools/write.d.ts +11 -0
  422. package/dist/harness/tools/write.d.ts.map +1 -0
  423. package/dist/harness/tools/write.js +31 -0
  424. package/dist/harness/tools/write.js.map +1 -0
  425. package/dist/harness/types.d.ts +305 -0
  426. package/dist/harness/types.d.ts.map +1 -0
  427. package/dist/harness/types.js +75 -0
  428. package/dist/harness/types.js.map +1 -0
  429. package/dist/harness/utils/adaptive-publisher.d.ts +24 -0
  430. package/dist/harness/utils/adaptive-publisher.d.ts.map +1 -0
  431. package/dist/harness/utils/adaptive-publisher.js +79 -0
  432. package/dist/harness/utils/adaptive-publisher.js.map +1 -0
  433. package/dist/harness/utils/output-capture.d.ts +31 -0
  434. package/dist/harness/utils/output-capture.d.ts.map +1 -0
  435. package/dist/harness/utils/output-capture.js +217 -0
  436. package/dist/harness/utils/output-capture.js.map +1 -0
  437. package/dist/harness/utils/shell-output.d.ts +29 -0
  438. package/dist/harness/utils/shell-output.d.ts.map +1 -0
  439. package/dist/harness/utils/shell-output.js +71 -0
  440. package/dist/harness/utils/shell-output.js.map +1 -0
  441. package/dist/harness/utils/truncate.d.ts +71 -0
  442. package/dist/harness/utils/truncate.d.ts.map +1 -0
  443. package/dist/harness/utils/truncate.js +296 -0
  444. package/dist/harness/utils/truncate.js.map +1 -0
  445. package/dist/harness/utils/usage.d.ts +4 -0
  446. package/dist/harness/utils/usage.d.ts.map +1 -0
  447. package/dist/harness/utils/usage.js +33 -0
  448. package/dist/harness/utils/usage.js.map +1 -0
  449. package/dist/index.d.ts +28 -0
  450. package/dist/index.d.ts.map +1 -0
  451. package/dist/index.js +26 -0
  452. package/dist/index.js.map +1 -0
  453. package/dist/node.d.ts +3 -0
  454. package/dist/node.d.ts.map +1 -0
  455. package/dist/node.js +3 -0
  456. package/dist/node.js.map +1 -0
  457. package/dist/proxy.d.ts +72 -0
  458. package/dist/proxy.d.ts.map +1 -0
  459. package/dist/proxy.js +310 -0
  460. package/dist/proxy.js.map +1 -0
  461. package/dist/search/index.d.ts +29 -0
  462. package/dist/search/index.d.ts.map +1 -0
  463. package/dist/search/index.js +2 -0
  464. package/dist/search/index.js.map +1 -0
  465. package/dist/shims/assistant-message-frame.d.ts +101 -0
  466. package/dist/shims/assistant-message-frame.d.ts.map +1 -0
  467. package/dist/shims/assistant-message-frame.js +425 -0
  468. package/dist/shims/assistant-message-frame.js.map +1 -0
  469. package/dist/shims/define-service.d.ts +46 -0
  470. package/dist/shims/define-service.d.ts.map +1 -0
  471. package/dist/shims/define-service.js +39 -0
  472. package/dist/shims/define-service.js.map +1 -0
  473. package/dist/stream-fn.d.ts +10 -0
  474. package/dist/stream-fn.d.ts.map +1 -0
  475. package/dist/stream-fn.js +17 -0
  476. package/dist/stream-fn.js.map +1 -0
  477. package/dist/types.d.ts +489 -0
  478. package/dist/types.d.ts.map +1 -0
  479. package/dist/types.js +2 -0
  480. package/dist/types.js.map +1 -0
  481. package/docs/telemetry-schema.md +383 -0
  482. package/package.json +99 -5
@@ -0,0 +1,25 @@
1
+ import { type Message } from "@earendil-works/pi-ai";
2
+ import type { AgentMessage } from "../../types.ts";
3
+ /** File paths touched by a session branch or compaction range. */
4
+ export interface FileOperations {
5
+ /** Files read but not necessarily modified. */
6
+ read: Set<string>;
7
+ /** Files written by full-file write operations. */
8
+ written: Set<string>;
9
+ /** Files modified by edit operations. */
10
+ edited: Set<string>;
11
+ }
12
+ /** Create an empty file-operation accumulator. */
13
+ export declare function createFileOps(): FileOperations;
14
+ /** Add file operations from assistant tool calls to an accumulator. */
15
+ export declare function extractFileOpsFromMessage(message: AgentMessage, fileOps: FileOperations): void;
16
+ /** Compute sorted read-only and modified file lists from accumulated operations. */
17
+ export declare function computeFileLists(fileOps: FileOperations): {
18
+ readFiles: string[];
19
+ modifiedFiles: string[];
20
+ };
21
+ /** Format file lists as summary metadata tags. */
22
+ export declare function formatFileOperations(readFiles: string[], modifiedFiles: string[]): string;
23
+ /** Serialize LLM messages to plain text for summarization prompts. */
24
+ export declare function serializeConversation(messages: Message[]): string;
25
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/harness/compaction/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC9B,+CAA+C;IAC/C,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,yCAAyC;IACzC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACpB;AAED,kDAAkD;AAClD,wBAAgB,aAAa,IAAI,cAAc,CAM9C;AAED,uEAAuE;AACvE,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CA2B9F;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAK1G;AAED,kDAAkD;AAClD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAUzF;AAkBD,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAyCjE"}
@@ -0,0 +1,120 @@
1
+ import { contentText } from "@earendil-works/pi-ai";
2
+ /** Create an empty file-operation accumulator. */
3
+ export function createFileOps() {
4
+ return {
5
+ read: new Set(),
6
+ written: new Set(),
7
+ edited: new Set(),
8
+ };
9
+ }
10
+ /** Add file operations from assistant tool calls to an accumulator. */
11
+ export function extractFileOpsFromMessage(message, fileOps) {
12
+ if (message.role !== "assistant")
13
+ return;
14
+ if (!("content" in message) || !Array.isArray(message.content))
15
+ return;
16
+ for (const block of message.content) {
17
+ if (typeof block !== "object" || block === null)
18
+ continue;
19
+ if (!("type" in block) || block.type !== "toolCall")
20
+ continue;
21
+ if (!("arguments" in block) || !("name" in block))
22
+ continue;
23
+ const args = block.arguments;
24
+ if (!args)
25
+ continue;
26
+ const path = typeof args.path === "string" ? args.path : undefined;
27
+ if (!path)
28
+ continue;
29
+ switch (block.name) {
30
+ case "read":
31
+ fileOps.read.add(path);
32
+ break;
33
+ case "write":
34
+ fileOps.written.add(path);
35
+ break;
36
+ case "edit":
37
+ fileOps.edited.add(path);
38
+ break;
39
+ }
40
+ }
41
+ }
42
+ /** Compute sorted read-only and modified file lists from accumulated operations. */
43
+ export function computeFileLists(fileOps) {
44
+ const modified = new Set([...fileOps.edited, ...fileOps.written]);
45
+ const readOnly = [...fileOps.read].filter((f) => !modified.has(f)).sort();
46
+ const modifiedFiles = [...modified].sort();
47
+ return { readFiles: readOnly, modifiedFiles };
48
+ }
49
+ /** Format file lists as summary metadata tags. */
50
+ export function formatFileOperations(readFiles, modifiedFiles) {
51
+ const sections = [];
52
+ if (readFiles.length > 0) {
53
+ sections.push(`<read-files>\n${readFiles.join("\n")}\n</read-files>`);
54
+ }
55
+ if (modifiedFiles.length > 0) {
56
+ sections.push(`<modified-files>\n${modifiedFiles.join("\n")}\n</modified-files>`);
57
+ }
58
+ if (sections.length === 0)
59
+ return "";
60
+ return `\n\n${sections.join("\n\n")}`;
61
+ }
62
+ const TOOL_RESULT_MAX_CHARS = 2000;
63
+ function safeJsonStringify(value) {
64
+ try {
65
+ return JSON.stringify(value) ?? "undefined";
66
+ }
67
+ catch {
68
+ return "[unserializable]";
69
+ }
70
+ }
71
+ function truncateForSummary(text, maxChars) {
72
+ if (text.length <= maxChars)
73
+ return text;
74
+ const truncatedChars = text.length - maxChars;
75
+ return `${text.slice(0, maxChars)}\n\n[... ${truncatedChars} more characters truncated]`;
76
+ }
77
+ /** Serialize LLM messages to plain text for summarization prompts. */
78
+ export function serializeConversation(messages) {
79
+ const parts = [];
80
+ for (const msg of messages) {
81
+ if (msg.role === "user") {
82
+ const content = contentText(msg.content, "");
83
+ if (content)
84
+ parts.push(`[User]: ${content}`);
85
+ }
86
+ else if (msg.role === "assistant") {
87
+ const thinkingParts = [];
88
+ const toolCalls = [];
89
+ for (const block of msg.content) {
90
+ if (block.type === "thinking") {
91
+ thinkingParts.push(block.thinking);
92
+ }
93
+ else if (block.type === "toolCall") {
94
+ const args = block.arguments;
95
+ const argsStr = Object.entries(args)
96
+ .map(([k, v]) => `${k}=${safeJsonStringify(v)}`)
97
+ .join(", ");
98
+ toolCalls.push(`${block.name}(${argsStr})`);
99
+ }
100
+ }
101
+ if (thinkingParts.length > 0) {
102
+ parts.push(`[Assistant thinking]: ${thinkingParts.join("\n")}`);
103
+ }
104
+ if (msg.content.some((block) => block.type === "text")) {
105
+ parts.push(`[Assistant]: ${contentText(msg.content)}`);
106
+ }
107
+ if (toolCalls.length > 0) {
108
+ parts.push(`[Assistant tool calls]: ${toolCalls.join("; ")}`);
109
+ }
110
+ }
111
+ else if (msg.role === "toolResult") {
112
+ const content = contentText(msg.content, "");
113
+ if (content) {
114
+ parts.push(`[Tool result]: ${truncateForSummary(content, TOOL_RESULT_MAX_CHARS)}`);
115
+ }
116
+ }
117
+ }
118
+ return parts.join("\n\n");
119
+ }
120
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/harness/compaction/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { contentText, type Message } from \"@earendil-works/pi-ai\";\nimport type { AgentMessage } from \"../../types.ts\";\n\n/** File paths touched by a session branch or compaction range. */\nexport interface FileOperations {\n\t/** Files read but not necessarily modified. */\n\tread: Set<string>;\n\t/** Files written by full-file write operations. */\n\twritten: Set<string>;\n\t/** Files modified by edit operations. */\n\tedited: Set<string>;\n}\n\n/** Create an empty file-operation accumulator. */\nexport function createFileOps(): FileOperations {\n\treturn {\n\t\tread: new Set(),\n\t\twritten: new Set(),\n\t\tedited: new Set(),\n\t};\n}\n\n/** Add file operations from assistant tool calls to an accumulator. */\nexport function extractFileOpsFromMessage(message: AgentMessage, fileOps: FileOperations): void {\n\tif (message.role !== \"assistant\") return;\n\tif (!(\"content\" in message) || !Array.isArray(message.content)) return;\n\n\tfor (const block of message.content) {\n\t\tif (typeof block !== \"object\" || block === null) continue;\n\t\tif (!(\"type\" in block) || block.type !== \"toolCall\") continue;\n\t\tif (!(\"arguments\" in block) || !(\"name\" in block)) continue;\n\n\t\tconst args = block.arguments as Record<string, unknown> | undefined;\n\t\tif (!args) continue;\n\n\t\tconst path = typeof args.path === \"string\" ? args.path : undefined;\n\t\tif (!path) continue;\n\n\t\tswitch (block.name) {\n\t\t\tcase \"read\":\n\t\t\t\tfileOps.read.add(path);\n\t\t\t\tbreak;\n\t\t\tcase \"write\":\n\t\t\t\tfileOps.written.add(path);\n\t\t\t\tbreak;\n\t\t\tcase \"edit\":\n\t\t\t\tfileOps.edited.add(path);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\n/** Compute sorted read-only and modified file lists from accumulated operations. */\nexport function computeFileLists(fileOps: FileOperations): { readFiles: string[]; modifiedFiles: string[] } {\n\tconst modified = new Set([...fileOps.edited, ...fileOps.written]);\n\tconst readOnly = [...fileOps.read].filter((f) => !modified.has(f)).sort();\n\tconst modifiedFiles = [...modified].sort();\n\treturn { readFiles: readOnly, modifiedFiles };\n}\n\n/** Format file lists as summary metadata tags. */\nexport function formatFileOperations(readFiles: string[], modifiedFiles: string[]): string {\n\tconst sections: string[] = [];\n\tif (readFiles.length > 0) {\n\t\tsections.push(`<read-files>\\n${readFiles.join(\"\\n\")}\\n</read-files>`);\n\t}\n\tif (modifiedFiles.length > 0) {\n\t\tsections.push(`<modified-files>\\n${modifiedFiles.join(\"\\n\")}\\n</modified-files>`);\n\t}\n\tif (sections.length === 0) return \"\";\n\treturn `\\n\\n${sections.join(\"\\n\\n\")}`;\n}\n\nconst TOOL_RESULT_MAX_CHARS = 2000;\n\nfunction safeJsonStringify(value: unknown): string {\n\ttry {\n\t\treturn JSON.stringify(value) ?? \"undefined\";\n\t} catch {\n\t\treturn \"[unserializable]\";\n\t}\n}\n\nfunction truncateForSummary(text: string, maxChars: number): string {\n\tif (text.length <= maxChars) return text;\n\tconst truncatedChars = text.length - maxChars;\n\treturn `${text.slice(0, maxChars)}\\n\\n[... ${truncatedChars} more characters truncated]`;\n}\n\n/** Serialize LLM messages to plain text for summarization prompts. */\nexport function serializeConversation(messages: Message[]): string {\n\tconst parts: string[] = [];\n\n\tfor (const msg of messages) {\n\t\tif (msg.role === \"user\") {\n\t\t\tconst content = contentText(msg.content, \"\");\n\t\t\tif (content) parts.push(`[User]: ${content}`);\n\t\t} else if (msg.role === \"assistant\") {\n\t\t\tconst thinkingParts: string[] = [];\n\t\t\tconst toolCalls: string[] = [];\n\n\t\t\tfor (const block of msg.content) {\n\t\t\t\tif (block.type === \"thinking\") {\n\t\t\t\t\tthinkingParts.push(block.thinking);\n\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\tconst args = block.arguments as Record<string, unknown>;\n\t\t\t\t\tconst argsStr = Object.entries(args)\n\t\t\t\t\t\t.map(([k, v]) => `${k}=${safeJsonStringify(v)}`)\n\t\t\t\t\t\t.join(\", \");\n\t\t\t\t\ttoolCalls.push(`${block.name}(${argsStr})`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (thinkingParts.length > 0) {\n\t\t\t\tparts.push(`[Assistant thinking]: ${thinkingParts.join(\"\\n\")}`);\n\t\t\t}\n\t\t\tif (msg.content.some((block) => block.type === \"text\")) {\n\t\t\t\tparts.push(`[Assistant]: ${contentText(msg.content)}`);\n\t\t\t}\n\t\t\tif (toolCalls.length > 0) {\n\t\t\t\tparts.push(`[Assistant tool calls]: ${toolCalls.join(\"; \")}`);\n\t\t\t}\n\t\t} else if (msg.role === \"toolResult\") {\n\t\t\tconst content = contentText(msg.content, \"\");\n\t\t\tif (content) {\n\t\t\t\tparts.push(`[Tool result]: ${truncateForSummary(content, TOOL_RESULT_MAX_CHARS)}`);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn parts.join(\"\\n\\n\");\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import { type RetryPolicy } from "@earendil-works/pi-ai";
2
+ import type { CompactionSettings } from "./compaction/compaction.ts";
3
+ export declare const DEFAULT_RETRY_POLICY: RetryPolicy;
4
+ export declare function validateToolNames(tools: readonly {
5
+ name: string;
6
+ }[]): void;
7
+ export declare function validateRetryPolicy(policy: RetryPolicy): void;
8
+ export declare function validateCompactionSettings(settings: CompactionSettings): void;
9
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/harness/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,IAAI,CAM1E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAY7D;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAS7E"}
@@ -0,0 +1,35 @@
1
+ import { DEFAULT_MAX_AGENT_RETRY_DELAY_MS } from "@earendil-works/pi-ai";
2
+ export const DEFAULT_RETRY_POLICY = {
3
+ enabled: true,
4
+ maxRetries: 3,
5
+ baseDelayMs: 1_000,
6
+ maxAgentDelayMs: DEFAULT_MAX_AGENT_RETRY_DELAY_MS,
7
+ };
8
+ export function validateToolNames(tools) {
9
+ const names = new Set();
10
+ for (const tool of tools) {
11
+ if (names.has(tool.name))
12
+ throw new TypeError(`Duplicate tool name: ${JSON.stringify(tool.name)}`);
13
+ names.add(tool.name);
14
+ }
15
+ }
16
+ export function validateRetryPolicy(policy) {
17
+ if (!Number.isSafeInteger(policy.maxRetries) ||
18
+ policy.maxRetries < 0 ||
19
+ policy.maxRetries === Number.MAX_SAFE_INTEGER ||
20
+ !Number.isSafeInteger(policy.baseDelayMs) ||
21
+ policy.baseDelayMs < 0 ||
22
+ (policy.maxAgentDelayMs !== undefined &&
23
+ (!Number.isSafeInteger(policy.maxAgentDelayMs) || policy.maxAgentDelayMs < 0))) {
24
+ throw new RangeError("Retry policy values must be finite non-negative safe integers");
25
+ }
26
+ }
27
+ export function validateCompactionSettings(settings) {
28
+ if (!Number.isSafeInteger(settings.reserveTokens) ||
29
+ settings.reserveTokens < 0 ||
30
+ !Number.isSafeInteger(settings.keepRecentTokens) ||
31
+ settings.keepRecentTokens < 0) {
32
+ throw new RangeError("Compaction token counts must be finite non-negative safe integers");
33
+ }
34
+ }
35
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/harness/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAoB,MAAM,uBAAuB,CAAC;AAG3F,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAChD,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,gCAAgC;CACjD,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,KAAkC;IACnE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAmB;IACtD,IACC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC;QACxC,MAAM,CAAC,UAAU,GAAG,CAAC;QACrB,MAAM,CAAC,UAAU,KAAK,MAAM,CAAC,gBAAgB;QAC7C,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC;QACzC,MAAM,CAAC,WAAW,GAAG,CAAC;QACtB,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS;YACpC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,EAC9E,CAAC;QACF,MAAM,IAAI,UAAU,CAAC,+DAA+D,CAAC,CAAC;IACvF,CAAC;AACF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,QAA4B;IACtE,IACC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC7C,QAAQ,CAAC,aAAa,GAAG,CAAC;QAC1B,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAChD,QAAQ,CAAC,gBAAgB,GAAG,CAAC,EAC5B,CAAC;QACF,MAAM,IAAI,UAAU,CAAC,mEAAmE,CAAC,CAAC;IAC3F,CAAC;AACF,CAAC","sourcesContent":["import { DEFAULT_MAX_AGENT_RETRY_DELAY_MS, type RetryPolicy } from \"@earendil-works/pi-ai\";\nimport type { CompactionSettings } from \"./compaction/compaction.ts\";\n\nexport const DEFAULT_RETRY_POLICY: RetryPolicy = {\n\tenabled: true,\n\tmaxRetries: 3,\n\tbaseDelayMs: 1_000,\n\tmaxAgentDelayMs: DEFAULT_MAX_AGENT_RETRY_DELAY_MS,\n};\n\nexport function validateToolNames(tools: readonly { name: string }[]): void {\n\tconst names = new Set<string>();\n\tfor (const tool of tools) {\n\t\tif (names.has(tool.name)) throw new TypeError(`Duplicate tool name: ${JSON.stringify(tool.name)}`);\n\t\tnames.add(tool.name);\n\t}\n}\n\nexport function validateRetryPolicy(policy: RetryPolicy): void {\n\tif (\n\t\t!Number.isSafeInteger(policy.maxRetries) ||\n\t\tpolicy.maxRetries < 0 ||\n\t\tpolicy.maxRetries === Number.MAX_SAFE_INTEGER ||\n\t\t!Number.isSafeInteger(policy.baseDelayMs) ||\n\t\tpolicy.baseDelayMs < 0 ||\n\t\t(policy.maxAgentDelayMs !== undefined &&\n\t\t\t(!Number.isSafeInteger(policy.maxAgentDelayMs) || policy.maxAgentDelayMs < 0))\n\t) {\n\t\tthrow new RangeError(\"Retry policy values must be finite non-negative safe integers\");\n\t}\n}\n\nexport function validateCompactionSettings(settings: CompactionSettings): void {\n\tif (\n\t\t!Number.isSafeInteger(settings.reserveTokens) ||\n\t\tsettings.reserveTokens < 0 ||\n\t\t!Number.isSafeInteger(settings.keepRecentTokens) ||\n\t\tsettings.keepRecentTokens < 0\n\t) {\n\t\tthrow new RangeError(\"Compaction token counts must be finite non-negative safe integers\");\n\t}\n}\n"]}
@@ -0,0 +1,9 @@
1
+ import type { Context, ContextKey } from "@earendil-works/chord";
2
+ import { awaitWithContext, BACKGROUND_CONTEXT, createContextKey, TODO_CONTEXT, withAbortSignal, withCancel, withContextValue, withoutAbortSignal } from "@earendil-works/chord/context";
3
+ import { type TelemetryContext } from "@earendil-works/pi-telemetry";
4
+ export { awaitWithContext, BACKGROUND_CONTEXT, type Context, type ContextKey, createContextKey, TODO_CONTEXT, withAbortSignal, withCancel, withContextValue, withoutAbortSignal, };
5
+ /** Return the telemetry parent attached to a context, or the shared no-op parent. */
6
+ export declare function getTelemetryContext(context: Context): TelemetryContext;
7
+ /** Derive a context whose telemetry children use the supplied parent or active span. */
8
+ export declare function withTelemetryContext(telemetryContext: TelemetryContext, context: Context): Context;
9
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/harness/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAE7F,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GAClB,CAAC;AAIF,qFAAqF;AACrF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAEtE;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAElG"}
@@ -0,0 +1,13 @@
1
+ import { awaitWithContext, BACKGROUND_CONTEXT, createContextKey, TODO_CONTEXT, withAbortSignal, withCancel, withContextValue, withoutAbortSignal, } from "@earendil-works/chord/context";
2
+ import { NOOP_TELEMETRY_CONTEXT } from "@earendil-works/pi-telemetry";
3
+ export { awaitWithContext, BACKGROUND_CONTEXT, createContextKey, TODO_CONTEXT, withAbortSignal, withCancel, withContextValue, withoutAbortSignal, };
4
+ const TELEMETRY_CONTEXT_KEY = createContextKey("pi.telemetryContext");
5
+ /** Return the telemetry parent attached to a context, or the shared no-op parent. */
6
+ export function getTelemetryContext(context) {
7
+ return context.value(TELEMETRY_CONTEXT_KEY) ?? NOOP_TELEMETRY_CONTEXT;
8
+ }
9
+ /** Derive a context whose telemetry children use the supplied parent or active span. */
10
+ export function withTelemetryContext(telemetryContext, context) {
11
+ return withContextValue(TELEMETRY_CONTEXT_KEY, telemetryContext, context);
12
+ }
13
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/harness/context.ts"],"names":[],"mappings":"AACA,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAyB,MAAM,8BAA8B,CAAC;AAE7F,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAGlB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GAClB,CAAC;AAEF,MAAM,qBAAqB,GAAG,gBAAgB,CAAmB,qBAAqB,CAAC,CAAC;AAExF,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IACnD,OAAO,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,sBAAsB,CAAC;AACvE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,gBAAkC,EAAE,OAAgB;IACxF,OAAO,gBAAgB,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC","sourcesContent":["import type { Context, ContextKey } from \"@earendil-works/chord\";\nimport {\n\tawaitWithContext,\n\tBACKGROUND_CONTEXT,\n\tcreateContextKey,\n\tTODO_CONTEXT,\n\twithAbortSignal,\n\twithCancel,\n\twithContextValue,\n\twithoutAbortSignal,\n} from \"@earendil-works/chord/context\";\nimport { NOOP_TELEMETRY_CONTEXT, type TelemetryContext } from \"@earendil-works/pi-telemetry\";\n\nexport {\n\tawaitWithContext,\n\tBACKGROUND_CONTEXT,\n\ttype Context,\n\ttype ContextKey,\n\tcreateContextKey,\n\tTODO_CONTEXT,\n\twithAbortSignal,\n\twithCancel,\n\twithContextValue,\n\twithoutAbortSignal,\n};\n\nconst TELEMETRY_CONTEXT_KEY = createContextKey<TelemetryContext>(\"pi.telemetryContext\");\n\n/** Return the telemetry parent attached to a context, or the shared no-op parent. */\nexport function getTelemetryContext(context: Context): TelemetryContext {\n\treturn context.value(TELEMETRY_CONTEXT_KEY) ?? NOOP_TELEMETRY_CONTEXT;\n}\n\n/** Derive a context whose telemetry children use the supplied parent or active span. */\nexport function withTelemetryContext(telemetryContext: TelemetryContext, context: Context): Context {\n\treturn withContextValue(TELEMETRY_CONTEXT_KEY, telemetryContext, context);\n}\n"]}
@@ -0,0 +1,43 @@
1
+ import type { Context } from "../context.ts";
2
+ import { type ExecutionEnv, ExecutionError, FileError, type FileInfo, type Result, type ShellExecOptions, type ShellExecResult, type TextLineReader } from "../types.ts";
3
+ export declare class NodeExecutionEnv implements ExecutionEnv {
4
+ cwd: string;
5
+ private shellPath?;
6
+ private shellEnv?;
7
+ private activeChildPids;
8
+ constructor(options: {
9
+ cwd: string;
10
+ shellPath?: string;
11
+ shellEnv?: NodeJS.ProcessEnv;
12
+ });
13
+ absolutePath(path: string, _context: Context): Promise<Result<string, FileError>>;
14
+ joinPath(parts: string[], _context: Context): Promise<Result<string, FileError>>;
15
+ exec(command: string, options: ShellExecOptions | undefined, context: Context): Promise<Result<ShellExecResult, ExecutionError>>;
16
+ openTextLineReader(path: string, context: Context): Promise<Result<TextLineReader, FileError>>;
17
+ readTextFile(path: string, context: Context): Promise<Result<string, FileError>>;
18
+ readTextLines(path: string, options: {
19
+ maxLines?: number;
20
+ } | undefined, context: Context): Promise<Result<string[], FileError>>;
21
+ readBinaryFile(path: string, context: Context): Promise<Result<Uint8Array, FileError>>;
22
+ writeFile(path: string, content: string | Uint8Array, context: Context): Promise<Result<void, FileError>>;
23
+ appendFile(path: string, content: string | Uint8Array, context: Context): Promise<Result<void, FileError>>;
24
+ renameFile(sourcePath: string, destinationPath: string, context: Context): Promise<Result<void, FileError>>;
25
+ fileInfo(path: string, context: Context): Promise<Result<FileInfo, FileError>>;
26
+ listDir(path: string, context: Context): Promise<Result<FileInfo[], FileError>>;
27
+ canonicalPath(path: string, context: Context): Promise<Result<string, FileError>>;
28
+ exists(path: string, context: Context): Promise<Result<boolean, FileError>>;
29
+ createDir(path: string, options: {
30
+ recursive?: boolean;
31
+ } | undefined, context: Context): Promise<Result<void, FileError>>;
32
+ remove(path: string, options: {
33
+ recursive?: boolean;
34
+ force?: boolean;
35
+ } | undefined, context: Context): Promise<Result<void, FileError>>;
36
+ createTempDir(prefix: string | undefined, context: Context): Promise<Result<string, FileError>>;
37
+ createTempFile(options: {
38
+ prefix?: string;
39
+ suffix?: string;
40
+ } | undefined, context: Context): Promise<Result<string, FileError>>;
41
+ cleanup(_context: Context): Promise<void>;
42
+ }
43
+ //# sourceMappingURL=nodejs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodejs.d.ts","sourceRoot":"","sources":["../../../src/harness/env/nodejs.ts"],"names":[],"mappings":"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"}