@draht/agent-core 2026.10.20 → 2026.10.23

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 (468) hide show
  1. package/dist/agent-loop.d.ts +6 -1
  2. package/dist/agent-loop.d.ts.map +1 -1
  3. package/dist/agent-loop.js +16 -2
  4. package/dist/agent-loop.js.map +1 -1
  5. package/dist/agent.d.ts +8 -1
  6. package/dist/agent.d.ts.map +1 -1
  7. package/dist/agent.js +4 -0
  8. package/dist/agent.js.map +1 -1
  9. package/dist/index.d.ts +0 -22
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +0 -20
  12. package/dist/index.js.map +1 -1
  13. package/dist/proxy.d.ts +2 -5
  14. package/dist/proxy.d.ts.map +1 -1
  15. package/dist/proxy.js +2 -14
  16. package/dist/proxy.js.map +1 -1
  17. package/dist/types.d.ts +4 -0
  18. package/dist/types.d.ts.map +1 -1
  19. package/dist/types.js.map +1 -1
  20. package/package.json +4 -47
  21. package/dist/harness/agent-harness.d.ts +0 -716
  22. package/dist/harness/agent-harness.d.ts.map +0 -1
  23. package/dist/harness/agent-harness.js +0 -6
  24. package/dist/harness/agent-harness.js.map +0 -1
  25. package/dist/harness/compaction/branch-summarization.d.ts +0 -68
  26. package/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
  27. package/dist/harness/compaction/branch-summarization.js +0 -176
  28. package/dist/harness/compaction/branch-summarization.js.map +0 -1
  29. package/dist/harness/compaction/compaction.d.ts +0 -126
  30. package/dist/harness/compaction/compaction.d.ts.map +0 -1
  31. package/dist/harness/compaction/compaction.js +0 -561
  32. package/dist/harness/compaction/compaction.js.map +0 -1
  33. package/dist/harness/compaction/utils.d.ts +0 -28
  34. package/dist/harness/compaction/utils.d.ts.map +0 -1
  35. package/dist/harness/compaction/utils.js +0 -123
  36. package/dist/harness/compaction/utils.js.map +0 -1
  37. package/dist/harness/config.d.ts +0 -9
  38. package/dist/harness/config.d.ts.map +0 -1
  39. package/dist/harness/config.js +0 -35
  40. package/dist/harness/config.js.map +0 -1
  41. package/dist/harness/context.d.ts +0 -9
  42. package/dist/harness/context.d.ts.map +0 -1
  43. package/dist/harness/context.js +0 -13
  44. package/dist/harness/context.js.map +0 -1
  45. package/dist/harness/env/nodejs.d.ts +0 -43
  46. package/dist/harness/env/nodejs.d.ts.map +0 -1
  47. package/dist/harness/env/nodejs.js +0 -865
  48. package/dist/harness/env/nodejs.js.map +0 -1
  49. package/dist/harness/events.d.ts +0 -24
  50. package/dist/harness/events.d.ts.map +0 -1
  51. package/dist/harness/events.js +0 -233
  52. package/dist/harness/events.js.map +0 -1
  53. package/dist/harness/execution/assistant.d.ts +0 -42
  54. package/dist/harness/execution/assistant.d.ts.map +0 -1
  55. package/dist/harness/execution/assistant.js +0 -82
  56. package/dist/harness/execution/assistant.js.map +0 -1
  57. package/dist/harness/execution/effect-gate.d.ts +0 -22
  58. package/dist/harness/execution/effect-gate.d.ts.map +0 -1
  59. package/dist/harness/execution/effect-gate.js +0 -49
  60. package/dist/harness/execution/effect-gate.js.map +0 -1
  61. package/dist/harness/execution/tools.d.ts +0 -67
  62. package/dist/harness/execution/tools.d.ts.map +0 -1
  63. package/dist/harness/execution/tools.js +0 -119
  64. package/dist/harness/execution/tools.js.map +0 -1
  65. package/dist/harness/execution-env.d.ts +0 -4
  66. package/dist/harness/execution-env.d.ts.map +0 -1
  67. package/dist/harness/execution-env.js +0 -3
  68. package/dist/harness/execution-env.js.map +0 -1
  69. package/dist/harness/hooks.d.ts +0 -38
  70. package/dist/harness/hooks.d.ts.map +0 -1
  71. package/dist/harness/hooks.js +0 -406
  72. package/dist/harness/hooks.js.map +0 -1
  73. package/dist/harness/messages.d.ts +0 -51
  74. package/dist/harness/messages.d.ts.map +0 -1
  75. package/dist/harness/messages.js +0 -103
  76. package/dist/harness/messages.js.map +0 -1
  77. package/dist/harness/pico3/bash.d.ts +0 -10
  78. package/dist/harness/pico3/bash.d.ts.map +0 -1
  79. package/dist/harness/pico3/bash.js +0 -25
  80. package/dist/harness/pico3/bash.js.map +0 -1
  81. package/dist/harness/pico3/bounded.d.ts +0 -21
  82. package/dist/harness/pico3/bounded.d.ts.map +0 -1
  83. package/dist/harness/pico3/bounded.js +0 -98
  84. package/dist/harness/pico3/bounded.js.map +0 -1
  85. package/dist/harness/pico3/chord.d.ts +0 -41
  86. package/dist/harness/pico3/chord.d.ts.map +0 -1
  87. package/dist/harness/pico3/chord.js +0 -147
  88. package/dist/harness/pico3/chord.js.map +0 -1
  89. package/dist/harness/pico3/context.d.ts +0 -16
  90. package/dist/harness/pico3/context.d.ts.map +0 -1
  91. package/dist/harness/pico3/context.js +0 -88
  92. package/dist/harness/pico3/context.js.map +0 -1
  93. package/dist/harness/pico3/harness.d.ts +0 -198
  94. package/dist/harness/pico3/harness.d.ts.map +0 -1
  95. package/dist/harness/pico3/harness.js +0 -654
  96. package/dist/harness/pico3/harness.js.map +0 -1
  97. package/dist/harness/pico3/hooks.d.ts +0 -10
  98. package/dist/harness/pico3/hooks.d.ts.map +0 -1
  99. package/dist/harness/pico3/hooks.js +0 -33
  100. package/dist/harness/pico3/hooks.js.map +0 -1
  101. package/dist/harness/pico3/index.d.ts +0 -19
  102. package/dist/harness/pico3/index.d.ts.map +0 -1
  103. package/dist/harness/pico3/index.js +0 -15
  104. package/dist/harness/pico3/index.js.map +0 -1
  105. package/dist/harness/pico3/jsonl.d.ts +0 -58
  106. package/dist/harness/pico3/jsonl.d.ts.map +0 -1
  107. package/dist/harness/pico3/jsonl.js +0 -325
  108. package/dist/harness/pico3/jsonl.js.map +0 -1
  109. package/dist/harness/pico3/kinds/collapse.d.ts +0 -49
  110. package/dist/harness/pico3/kinds/collapse.d.ts.map +0 -1
  111. package/dist/harness/pico3/kinds/collapse.js +0 -191
  112. package/dist/harness/pico3/kinds/collapse.js.map +0 -1
  113. package/dist/harness/pico3/kinds/entries.d.ts +0 -78
  114. package/dist/harness/pico3/kinds/entries.d.ts.map +0 -1
  115. package/dist/harness/pico3/kinds/entries.js +0 -13
  116. package/dist/harness/pico3/kinds/entries.js.map +0 -1
  117. package/dist/harness/pico3/kinds/frames.d.ts +0 -9
  118. package/dist/harness/pico3/kinds/frames.d.ts.map +0 -1
  119. package/dist/harness/pico3/kinds/frames.js +0 -75
  120. package/dist/harness/pico3/kinds/frames.js.map +0 -1
  121. package/dist/harness/pico3/kinds/generation.d.ts +0 -94
  122. package/dist/harness/pico3/kinds/generation.d.ts.map +0 -1
  123. package/dist/harness/pico3/kinds/generation.js +0 -504
  124. package/dist/harness/pico3/kinds/generation.js.map +0 -1
  125. package/dist/harness/pico3/kinds/job.d.ts +0 -44
  126. package/dist/harness/pico3/kinds/job.d.ts.map +0 -1
  127. package/dist/harness/pico3/kinds/job.js +0 -143
  128. package/dist/harness/pico3/kinds/job.js.map +0 -1
  129. package/dist/harness/pico3/kinds/plugin.d.ts +0 -15
  130. package/dist/harness/pico3/kinds/plugin.d.ts.map +0 -1
  131. package/dist/harness/pico3/kinds/plugin.js +0 -35
  132. package/dist/harness/pico3/kinds/plugin.js.map +0 -1
  133. package/dist/harness/pico3/kinds/post-tools.d.ts +0 -22
  134. package/dist/harness/pico3/kinds/post-tools.d.ts.map +0 -1
  135. package/dist/harness/pico3/kinds/post-tools.js +0 -145
  136. package/dist/harness/pico3/kinds/post-tools.js.map +0 -1
  137. package/dist/harness/pico3/kinds/task-api.d.ts +0 -3
  138. package/dist/harness/pico3/kinds/task-api.d.ts.map +0 -1
  139. package/dist/harness/pico3/kinds/task-api.js +0 -45
  140. package/dist/harness/pico3/kinds/task-api.js.map +0 -1
  141. package/dist/harness/pico3/kinds/tool.d.ts +0 -43
  142. package/dist/harness/pico3/kinds/tool.d.ts.map +0 -1
  143. package/dist/harness/pico3/kinds/tool.js +0 -373
  144. package/dist/harness/pico3/kinds/tool.js.map +0 -1
  145. package/dist/harness/pico3/legacy-tracker.d.ts +0 -11
  146. package/dist/harness/pico3/legacy-tracker.d.ts.map +0 -1
  147. package/dist/harness/pico3/legacy-tracker.js +0 -41
  148. package/dist/harness/pico3/legacy-tracker.js.map +0 -1
  149. package/dist/harness/pico3/membrane.d.ts +0 -23
  150. package/dist/harness/pico3/membrane.d.ts.map +0 -1
  151. package/dist/harness/pico3/membrane.js +0 -141
  152. package/dist/harness/pico3/membrane.js.map +0 -1
  153. package/dist/harness/pico3/memory.d.ts +0 -53
  154. package/dist/harness/pico3/memory.d.ts.map +0 -1
  155. package/dist/harness/pico3/memory.js +0 -264
  156. package/dist/harness/pico3/memory.js.map +0 -1
  157. package/dist/harness/pico3/scheduler.d.ts +0 -49
  158. package/dist/harness/pico3/scheduler.d.ts.map +0 -1
  159. package/dist/harness/pico3/scheduler.js +0 -438
  160. package/dist/harness/pico3/scheduler.js.map +0 -1
  161. package/dist/harness/pico3/session.d.ts +0 -264
  162. package/dist/harness/pico3/session.d.ts.map +0 -1
  163. package/dist/harness/pico3/session.js +0 -1348
  164. package/dist/harness/pico3/session.js.map +0 -1
  165. package/dist/harness/pico3/system.d.ts +0 -126
  166. package/dist/harness/pico3/system.d.ts.map +0 -1
  167. package/dist/harness/pico3/system.js +0 -244
  168. package/dist/harness/pico3/system.js.map +0 -1
  169. package/dist/harness/pico3/types.d.ts +0 -973
  170. package/dist/harness/pico3/types.d.ts.map +0 -1
  171. package/dist/harness/pico3/types.js +0 -106
  172. package/dist/harness/pico3/types.js.map +0 -1
  173. package/dist/harness/pico3/view.d.ts +0 -34
  174. package/dist/harness/pico3/view.d.ts.map +0 -1
  175. package/dist/harness/pico3/view.js +0 -411
  176. package/dist/harness/pico3/view.js.map +0 -1
  177. package/dist/harness/prompt-templates.d.ts +0 -49
  178. package/dist/harness/prompt-templates.d.ts.map +0 -1
  179. package/dist/harness/prompt-templates.js +0 -225
  180. package/dist/harness/prompt-templates.js.map +0 -1
  181. package/dist/harness/result.d.ts +0 -133
  182. package/dist/harness/result.d.ts.map +0 -1
  183. package/dist/harness/result.js +0 -81
  184. package/dist/harness/result.js.map +0 -1
  185. package/dist/harness/runtime/drive/boundary.d.ts +0 -28
  186. package/dist/harness/runtime/drive/boundary.d.ts.map +0 -1
  187. package/dist/harness/runtime/drive/boundary.js +0 -173
  188. package/dist/harness/runtime/drive/boundary.js.map +0 -1
  189. package/dist/harness/runtime/drive/checkpoint.d.ts +0 -8
  190. package/dist/harness/runtime/drive/checkpoint.d.ts.map +0 -1
  191. package/dist/harness/runtime/drive/checkpoint.js +0 -133
  192. package/dist/harness/runtime/drive/checkpoint.js.map +0 -1
  193. package/dist/harness/runtime/drive/deferred.d.ts +0 -15
  194. package/dist/harness/runtime/drive/deferred.d.ts.map +0 -1
  195. package/dist/harness/runtime/drive/deferred.js +0 -179
  196. package/dist/harness/runtime/drive/deferred.js.map +0 -1
  197. package/dist/harness/runtime/drive/generation.d.ts +0 -8
  198. package/dist/harness/runtime/drive/generation.d.ts.map +0 -1
  199. package/dist/harness/runtime/drive/generation.js +0 -205
  200. package/dist/harness/runtime/drive/generation.js.map +0 -1
  201. package/dist/harness/runtime/drive/reconcile.d.ts +0 -5
  202. package/dist/harness/runtime/drive/reconcile.d.ts.map +0 -1
  203. package/dist/harness/runtime/drive/reconcile.js +0 -140
  204. package/dist/harness/runtime/drive/reconcile.js.map +0 -1
  205. package/dist/harness/runtime/drive/recovery.d.ts +0 -8
  206. package/dist/harness/runtime/drive/recovery.d.ts.map +0 -1
  207. package/dist/harness/runtime/drive/recovery.js +0 -85
  208. package/dist/harness/runtime/drive/recovery.js.map +0 -1
  209. package/dist/harness/runtime/drive/response.d.ts +0 -23
  210. package/dist/harness/runtime/drive/response.d.ts.map +0 -1
  211. package/dist/harness/runtime/drive/response.js +0 -394
  212. package/dist/harness/runtime/drive/response.js.map +0 -1
  213. package/dist/harness/runtime/drive/retry.d.ts +0 -4
  214. package/dist/harness/runtime/drive/retry.d.ts.map +0 -1
  215. package/dist/harness/runtime/drive/retry.js +0 -34
  216. package/dist/harness/runtime/drive/retry.js.map +0 -1
  217. package/dist/harness/runtime/drive/structural.d.ts +0 -32
  218. package/dist/harness/runtime/drive/structural.d.ts.map +0 -1
  219. package/dist/harness/runtime/drive/structural.js +0 -929
  220. package/dist/harness/runtime/drive/structural.js.map +0 -1
  221. package/dist/harness/runtime/drive/terminal.d.ts +0 -7
  222. package/dist/harness/runtime/drive/terminal.d.ts.map +0 -1
  223. package/dist/harness/runtime/drive/terminal.js +0 -49
  224. package/dist/harness/runtime/drive/terminal.js.map +0 -1
  225. package/dist/harness/runtime/drive/tool-placement.d.ts +0 -14
  226. package/dist/harness/runtime/drive/tool-placement.d.ts.map +0 -1
  227. package/dist/harness/runtime/drive/tool-placement.js +0 -219
  228. package/dist/harness/runtime/drive/tool-placement.js.map +0 -1
  229. package/dist/harness/runtime/drive/tools.d.ts +0 -6
  230. package/dist/harness/runtime/drive/tools.d.ts.map +0 -1
  231. package/dist/harness/runtime/drive/tools.js +0 -449
  232. package/dist/harness/runtime/drive/tools.js.map +0 -1
  233. package/dist/harness/runtime/drive.d.ts +0 -6
  234. package/dist/harness/runtime/drive.d.ts.map +0 -1
  235. package/dist/harness/runtime/drive.js +0 -93
  236. package/dist/harness/runtime/drive.js.map +0 -1
  237. package/dist/harness/runtime/harness.d.ts +0 -59
  238. package/dist/harness/runtime/harness.d.ts.map +0 -1
  239. package/dist/harness/runtime/harness.js +0 -311
  240. package/dist/harness/runtime/harness.js.map +0 -1
  241. package/dist/harness/runtime/index.d.ts +0 -2
  242. package/dist/harness/runtime/index.d.ts.map +0 -1
  243. package/dist/harness/runtime/index.js +0 -2
  244. package/dist/harness/runtime/index.js.map +0 -1
  245. package/dist/harness/runtime/lane.d.ts +0 -118
  246. package/dist/harness/runtime/lane.d.ts.map +0 -1
  247. package/dist/harness/runtime/lane.js +0 -1575
  248. package/dist/harness/runtime/lane.js.map +0 -1
  249. package/dist/harness/runtime/progress.d.ts +0 -15
  250. package/dist/harness/runtime/progress.d.ts.map +0 -1
  251. package/dist/harness/runtime/progress.js +0 -66
  252. package/dist/harness/runtime/progress.js.map +0 -1
  253. package/dist/harness/runtime/reducer.d.ts +0 -5
  254. package/dist/harness/runtime/reducer.d.ts.map +0 -1
  255. package/dist/harness/runtime/reducer.js +0 -240
  256. package/dist/harness/runtime/reducer.js.map +0 -1
  257. package/dist/harness/runtime/restore.d.ts +0 -24
  258. package/dist/harness/runtime/restore.d.ts.map +0 -1
  259. package/dist/harness/runtime/restore.js +0 -117
  260. package/dist/harness/runtime/restore.js.map +0 -1
  261. package/dist/harness/runtime/transcript.d.ts +0 -21
  262. package/dist/harness/runtime/transcript.d.ts.map +0 -1
  263. package/dist/harness/runtime/transcript.js +0 -72
  264. package/dist/harness/runtime/transcript.js.map +0 -1
  265. package/dist/harness/runtime/types.d.ts +0 -105
  266. package/dist/harness/runtime/types.d.ts.map +0 -1
  267. package/dist/harness/runtime/types.js +0 -61
  268. package/dist/harness/runtime/types.js.map +0 -1
  269. package/dist/harness/session/commit.d.ts +0 -53
  270. package/dist/harness/session/commit.d.ts.map +0 -1
  271. package/dist/harness/session/commit.js +0 -57
  272. package/dist/harness/session/commit.js.map +0 -1
  273. package/dist/harness/session/context.d.ts +0 -10
  274. package/dist/harness/session/context.d.ts.map +0 -1
  275. package/dist/harness/session/context.js +0 -49
  276. package/dist/harness/session/context.js.map +0 -1
  277. package/dist/harness/session/fork-policy.d.ts +0 -21
  278. package/dist/harness/session/fork-policy.d.ts.map +0 -1
  279. package/dist/harness/session/fork-policy.js +0 -55
  280. package/dist/harness/session/fork-policy.js.map +0 -1
  281. package/dist/harness/session/fork.d.ts +0 -16
  282. package/dist/harness/session/fork.d.ts.map +0 -1
  283. package/dist/harness/session/fork.js +0 -79
  284. package/dist/harness/session/fork.js.map +0 -1
  285. package/dist/harness/session/in-memory-storage-state.d.ts +0 -39
  286. package/dist/harness/session/in-memory-storage-state.d.ts.map +0 -1
  287. package/dist/harness/session/in-memory-storage-state.js +0 -276
  288. package/dist/harness/session/in-memory-storage-state.js.map +0 -1
  289. package/dist/harness/session/index.d.ts +0 -11
  290. package/dist/harness/session/index.d.ts.map +0 -1
  291. package/dist/harness/session/index.js +0 -9
  292. package/dist/harness/session/index.js.map +0 -1
  293. package/dist/harness/session/jsonl/codec.d.ts +0 -21
  294. package/dist/harness/session/jsonl/codec.d.ts.map +0 -1
  295. package/dist/harness/session/jsonl/codec.js +0 -45
  296. package/dist/harness/session/jsonl/codec.js.map +0 -1
  297. package/dist/harness/session/jsonl/fork.d.ts +0 -38
  298. package/dist/harness/session/jsonl/fork.d.ts.map +0 -1
  299. package/dist/harness/session/jsonl/fork.js +0 -264
  300. package/dist/harness/session/jsonl/fork.js.map +0 -1
  301. package/dist/harness/session/jsonl/index.d.ts +0 -4
  302. package/dist/harness/session/jsonl/index.d.ts.map +0 -1
  303. package/dist/harness/session/jsonl/index.js +0 -4
  304. package/dist/harness/session/jsonl/index.js.map +0 -1
  305. package/dist/harness/session/jsonl/io.d.ts +0 -14
  306. package/dist/harness/session/jsonl/io.d.ts.map +0 -1
  307. package/dist/harness/session/jsonl/io.js +0 -86
  308. package/dist/harness/session/jsonl/io.js.map +0 -1
  309. package/dist/harness/session/jsonl/legacy-v3.d.ts +0 -44
  310. package/dist/harness/session/jsonl/legacy-v3.d.ts.map +0 -1
  311. package/dist/harness/session/jsonl/legacy-v3.js +0 -462
  312. package/dist/harness/session/jsonl/legacy-v3.js.map +0 -1
  313. package/dist/harness/session/jsonl/repo.d.ts +0 -35
  314. package/dist/harness/session/jsonl/repo.d.ts.map +0 -1
  315. package/dist/harness/session/jsonl/repo.js +0 -301
  316. package/dist/harness/session/jsonl/repo.js.map +0 -1
  317. package/dist/harness/session/jsonl/storage.d.ts +0 -41
  318. package/dist/harness/session/jsonl/storage.d.ts.map +0 -1
  319. package/dist/harness/session/jsonl/storage.js +0 -200
  320. package/dist/harness/session/jsonl/storage.js.map +0 -1
  321. package/dist/harness/session/jsonl/types.d.ts +0 -39
  322. package/dist/harness/session/jsonl/types.d.ts.map +0 -1
  323. package/dist/harness/session/jsonl/types.js +0 -3
  324. package/dist/harness/session/jsonl/types.js.map +0 -1
  325. package/dist/harness/session/memory.d.ts +0 -48
  326. package/dist/harness/session/memory.d.ts.map +0 -1
  327. package/dist/harness/session/memory.js +0 -369
  328. package/dist/harness/session/memory.js.map +0 -1
  329. package/dist/harness/session/mutation-line.d.ts +0 -8
  330. package/dist/harness/session/mutation-line.d.ts.map +0 -1
  331. package/dist/harness/session/mutation-line.js +0 -21
  332. package/dist/harness/session/mutation-line.js.map +0 -1
  333. package/dist/harness/session/session.d.ts +0 -82
  334. package/dist/harness/session/session.d.ts.map +0 -1
  335. package/dist/harness/session/session.js +0 -361
  336. package/dist/harness/session/session.js.map +0 -1
  337. package/dist/harness/session/testing/benchmark/datasets.d.ts +0 -12
  338. package/dist/harness/session/testing/benchmark/datasets.d.ts.map +0 -1
  339. package/dist/harness/session/testing/benchmark/datasets.js +0 -24
  340. package/dist/harness/session/testing/benchmark/datasets.js.map +0 -1
  341. package/dist/harness/session/testing/benchmark/session-repo.d.ts +0 -42
  342. package/dist/harness/session/testing/benchmark/session-repo.d.ts.map +0 -1
  343. package/dist/harness/session/testing/benchmark/session-repo.js +0 -127
  344. package/dist/harness/session/testing/benchmark/session-repo.js.map +0 -1
  345. package/dist/harness/session/testing/benchmark/storage.d.ts +0 -25
  346. package/dist/harness/session/testing/benchmark/storage.d.ts.map +0 -1
  347. package/dist/harness/session/testing/benchmark/storage.js +0 -114
  348. package/dist/harness/session/testing/benchmark/storage.js.map +0 -1
  349. package/dist/harness/session/testing/conformance/session-repo.d.ts +0 -23
  350. package/dist/harness/session/testing/conformance/session-repo.d.ts.map +0 -1
  351. package/dist/harness/session/testing/conformance/session-repo.js +0 -809
  352. package/dist/harness/session/testing/conformance/session-repo.js.map +0 -1
  353. package/dist/harness/session/testing/conformance/storage.d.ts +0 -4
  354. package/dist/harness/session/testing/conformance/storage.d.ts.map +0 -1
  355. package/dist/harness/session/testing/conformance/storage.js +0 -600
  356. package/dist/harness/session/testing/conformance/storage.js.map +0 -1
  357. package/dist/harness/session/testing/gating-storage.d.ts +0 -26
  358. package/dist/harness/session/testing/gating-storage.d.ts.map +0 -1
  359. package/dist/harness/session/testing/gating-storage.js +0 -100
  360. package/dist/harness/session/testing/gating-storage.js.map +0 -1
  361. package/dist/harness/session/testing/index.d.ts +0 -10
  362. package/dist/harness/session/testing/index.d.ts.map +0 -1
  363. package/dist/harness/session/testing/index.js +0 -9
  364. package/dist/harness/session/testing/index.js.map +0 -1
  365. package/dist/harness/session/testing/instrumented-storage.d.ts +0 -11
  366. package/dist/harness/session/testing/instrumented-storage.d.ts.map +0 -1
  367. package/dist/harness/session/testing/instrumented-storage.js +0 -16
  368. package/dist/harness/session/testing/instrumented-storage.js.map +0 -1
  369. package/dist/harness/session/testing/storage-decorator.d.ts +0 -20
  370. package/dist/harness/session/testing/storage-decorator.d.ts.map +0 -1
  371. package/dist/harness/session/testing/storage-decorator.js +0 -41
  372. package/dist/harness/session/testing/storage-decorator.js.map +0 -1
  373. package/dist/harness/session/testing/types.d.ts +0 -12
  374. package/dist/harness/session/testing/types.d.ts.map +0 -1
  375. package/dist/harness/session/testing/types.js +0 -2
  376. package/dist/harness/session/testing/types.js.map +0 -1
  377. package/dist/harness/session/types.d.ts +0 -512
  378. package/dist/harness/session/types.d.ts.map +0 -1
  379. package/dist/harness/session/types.js +0 -9
  380. package/dist/harness/session/types.js.map +0 -1
  381. package/dist/harness/session/values.d.ts +0 -95
  382. package/dist/harness/session/values.d.ts.map +0 -1
  383. package/dist/harness/session/values.js +0 -81
  384. package/dist/harness/session/values.js.map +0 -1
  385. package/dist/harness/skills.d.ts +0 -46
  386. package/dist/harness/skills.d.ts.map +0 -1
  387. package/dist/harness/skills.js +0 -326
  388. package/dist/harness/skills.js.map +0 -1
  389. package/dist/harness/system-prompt.d.ts +0 -3
  390. package/dist/harness/system-prompt.d.ts.map +0 -1
  391. package/dist/harness/system-prompt.js +0 -30
  392. package/dist/harness/system-prompt.js.map +0 -1
  393. package/dist/harness/telemetry.d.ts +0 -1242
  394. package/dist/harness/telemetry.d.ts.map +0 -1
  395. package/dist/harness/telemetry.js +0 -527
  396. package/dist/harness/telemetry.js.map +0 -1
  397. package/dist/harness/tools/bash.d.ts +0 -27
  398. package/dist/harness/tools/bash.d.ts.map +0 -1
  399. package/dist/harness/tools/bash.js +0 -105
  400. package/dist/harness/tools/bash.js.map +0 -1
  401. package/dist/harness/tools/edit-diff.d.ts +0 -89
  402. package/dist/harness/tools/edit-diff.d.ts.map +0 -1
  403. package/dist/harness/tools/edit-diff.js +0 -386
  404. package/dist/harness/tools/edit-diff.js.map +0 -1
  405. package/dist/harness/tools/edit.d.ts +0 -19
  406. package/dist/harness/tools/edit.d.ts.map +0 -1
  407. package/dist/harness/tools/edit.js +0 -108
  408. package/dist/harness/tools/edit.js.map +0 -1
  409. package/dist/harness/tools/file-mutation-queue.d.ts +0 -5
  410. package/dist/harness/tools/file-mutation-queue.d.ts.map +0 -1
  411. package/dist/harness/tools/file-mutation-queue.js +0 -46
  412. package/dist/harness/tools/file-mutation-queue.js.map +0 -1
  413. package/dist/harness/tools/image.d.ts +0 -3
  414. package/dist/harness/tools/image.d.ts.map +0 -1
  415. package/dist/harness/tools/image.js +0 -106
  416. package/dist/harness/tools/image.js.map +0 -1
  417. package/dist/harness/tools/index.d.ts +0 -6
  418. package/dist/harness/tools/index.d.ts.map +0 -1
  419. package/dist/harness/tools/index.js +0 -5
  420. package/dist/harness/tools/index.js.map +0 -1
  421. package/dist/harness/tools/path-utils.d.ts +0 -5
  422. package/dist/harness/tools/path-utils.d.ts.map +0 -1
  423. package/dist/harness/tools/path-utils.js +0 -26
  424. package/dist/harness/tools/path-utils.js.map +0 -1
  425. package/dist/harness/tools/read.d.ts +0 -35
  426. package/dist/harness/tools/read.d.ts.map +0 -1
  427. package/dist/harness/tools/read.js +0 -108
  428. package/dist/harness/tools/read.js.map +0 -1
  429. package/dist/harness/tools/tool-context.d.ts +0 -6
  430. package/dist/harness/tools/tool-context.d.ts.map +0 -1
  431. package/dist/harness/tools/tool-context.js +0 -2
  432. package/dist/harness/tools/tool-context.js.map +0 -1
  433. package/dist/harness/tools/write.d.ts +0 -11
  434. package/dist/harness/tools/write.d.ts.map +0 -1
  435. package/dist/harness/tools/write.js +0 -31
  436. package/dist/harness/tools/write.js.map +0 -1
  437. package/dist/harness/types.d.ts +0 -305
  438. package/dist/harness/types.d.ts.map +0 -1
  439. package/dist/harness/types.js +0 -75
  440. package/dist/harness/types.js.map +0 -1
  441. package/dist/harness/utils/adaptive-publisher.d.ts +0 -24
  442. package/dist/harness/utils/adaptive-publisher.d.ts.map +0 -1
  443. package/dist/harness/utils/adaptive-publisher.js +0 -79
  444. package/dist/harness/utils/adaptive-publisher.js.map +0 -1
  445. package/dist/harness/utils/output-capture.d.ts +0 -31
  446. package/dist/harness/utils/output-capture.d.ts.map +0 -1
  447. package/dist/harness/utils/output-capture.js +0 -217
  448. package/dist/harness/utils/output-capture.js.map +0 -1
  449. package/dist/harness/utils/shell-output.d.ts +0 -29
  450. package/dist/harness/utils/shell-output.d.ts.map +0 -1
  451. package/dist/harness/utils/shell-output.js +0 -71
  452. package/dist/harness/utils/shell-output.js.map +0 -1
  453. package/dist/harness/utils/truncate.d.ts +0 -71
  454. package/dist/harness/utils/truncate.d.ts.map +0 -1
  455. package/dist/harness/utils/truncate.js +0 -296
  456. package/dist/harness/utils/truncate.js.map +0 -1
  457. package/dist/harness/utils/usage.d.ts +0 -4
  458. package/dist/harness/utils/usage.d.ts.map +0 -1
  459. package/dist/harness/utils/usage.js +0 -33
  460. package/dist/harness/utils/usage.js.map +0 -1
  461. package/dist/node.d.ts +0 -3
  462. package/dist/node.d.ts.map +0 -1
  463. package/dist/node.js +0 -3
  464. package/dist/node.js.map +0 -1
  465. package/dist/search/index.d.ts +0 -29
  466. package/dist/search/index.d.ts.map +0 -1
  467. package/dist/search/index.js +0 -2
  468. package/dist/search/index.js.map +0 -1
@@ -1,127 +0,0 @@
1
- import { BACKGROUND_CONTEXT } from "../../../context.js";
2
- import { branchTip, laneConfig, laneState, setValue } from "../../values.js";
3
- import { STORAGE_BENCHMARK_DATASETS } from "./datasets.js";
4
- import { generateStorageBenchmarkSeedTransactions } from "./storage.js";
5
- /** Package-internal deterministic session id shared by repository benchmark workloads. */
6
- export function sessionRepoBenchmarkSessionId(index) {
7
- return `benchmark-session-${index.toString().padStart(8, "0")}`;
8
- }
9
- const BENCHMARK_SESSION_ID = sessionRepoBenchmarkSessionId(0);
10
- const FORK_DESTINATION_SESSION_ID = sessionRepoBenchmarkSessionId(1);
11
- function createCatalogDataset(scale, sessionCount) {
12
- return {
13
- name: `synthetic catalog: ${scale} closed sessions`,
14
- sessionCount,
15
- };
16
- }
17
- /** Deterministic closed-session catalogs shared by repository measurements. */
18
- export const SESSION_REPO_CATALOG_BENCHMARK_DATASETS = [
19
- createCatalogDataset("100", 100),
20
- createCatalogDataset("1k", 1_000),
21
- createCatalogDataset("10k", 10_000),
22
- ];
23
- /** Seeds one deterministic catalog and returns its durable metadata in creation order. */
24
- export async function seedSessionRepoCatalogBenchmark(repo, dataset) {
25
- const metadata = [];
26
- for (let index = 0; index < dataset.sessionCount; index++) {
27
- const session = await repo.create({ id: sessionRepoBenchmarkSessionId(index) }, BACKGROUND_CONTEXT);
28
- metadata.push(session.metadata);
29
- await session.close(BACKGROUND_CONTEXT);
30
- }
31
- return metadata;
32
- }
33
- /** Shared catalog reads. Returning a number ensures each result is consumed. */
34
- export const SESSION_REPO_CATALOG_READ_BENCHMARK_SCENARIOS = [
35
- {
36
- name: "list sessions",
37
- expectedResult(dataset) {
38
- return dataset.sessionCount;
39
- },
40
- async run(repo) {
41
- return (await repo.list(undefined, BACKGROUND_CONTEXT)).length;
42
- },
43
- },
44
- ];
45
- /** Shared catalog writes. Every invocation receives an equivalent independently prepared repository. */
46
- export const SESSION_REPO_CATALOG_WRITE_BENCHMARK_SCENARIOS = [
47
- {
48
- name: "create empty session",
49
- expectedResult: 1,
50
- prepare(repo) {
51
- return Promise.resolve({
52
- async run() {
53
- const session = await repo.create({ id: BENCHMARK_SESSION_ID }, BACKGROUND_CONTEXT);
54
- return session.metadata.id === BENCHMARK_SESSION_ID ? 1 : 0;
55
- },
56
- });
57
- },
58
- },
59
- {
60
- name: "open closed empty session",
61
- expectedResult: 1,
62
- async prepare(repo) {
63
- const session = await repo.create({ id: BENCHMARK_SESSION_ID }, BACKGROUND_CONTEXT);
64
- const { metadata } = session;
65
- await session.close(BACKGROUND_CONTEXT);
66
- return {
67
- async run() {
68
- const reopened = await repo.open(metadata, BACKGROUND_CONTEXT);
69
- return reopened.metadata.id === metadata.id ? 1 : 0;
70
- },
71
- };
72
- },
73
- },
74
- {
75
- name: "delete closed empty session",
76
- expectedResult: 1,
77
- async prepare(repo) {
78
- const session = await repo.create({ id: BENCHMARK_SESSION_ID }, BACKGROUND_CONTEXT);
79
- const { metadata } = session;
80
- await session.close(BACKGROUND_CONTEXT);
81
- return {
82
- async run() {
83
- await repo.delete(metadata, BACKGROUND_CONTEXT);
84
- return 1;
85
- },
86
- };
87
- },
88
- },
89
- ];
90
- /** Initial fork timing uses a bounded source because each iteration owns an equivalent seeded repository. */
91
- export const SESSION_REPO_FORK_BENCHMARK_DATASETS = [
92
- STORAGE_BENCHMARK_DATASETS[0],
93
- STORAGE_BENCHMARK_DATASETS[1],
94
- ];
95
- /** Seeds one deterministic open source session with a linear main branch. */
96
- export async function seedSessionRepoForkBenchmark(repo, dataset) {
97
- const session = await repo.create({ id: BENCHMARK_SESSION_ID }, BACKGROUND_CONTEXT);
98
- for (const transaction of generateStorageBenchmarkSeedTransactions(dataset)) {
99
- await session.mutate((mutator) => mutator.commit(transaction, BACKGROUND_CONTEXT), BACKGROUND_CONTEXT);
100
- }
101
- await session.mutate((mutator) => mutator.commit([
102
- setValue(branchTip("main"), dataset.tipId),
103
- setValue(laneConfig("main"), {
104
- model: { provider: "benchmark", modelId: "benchmark" },
105
- thinkingLevel: "off",
106
- activeToolNames: [],
107
- }),
108
- setValue(laneState("main"), { currentOperationId: null, lastOperationId: null, inbox: [] }),
109
- ], BACKGROUND_CONTEXT), BACKGROUND_CONTEXT);
110
- return session.metadata;
111
- }
112
- /** Shared fork writes. Every invocation receives an equivalent source repository. */
113
- export const SESSION_REPO_FORK_WRITE_BENCHMARK_SCENARIOS = [
114
- {
115
- name: "fork open current branch",
116
- expectedResult(dataset) {
117
- return dataset.entryCount;
118
- },
119
- async run(repo, source, dataset) {
120
- const fork = await repo.fork(source, { id: FORK_DESTINATION_SESSION_ID, scope: "branch", branch: "main" }, BACKGROUND_CONTEXT);
121
- return fork.metadata.id === FORK_DESTINATION_SESSION_ID && fork.metadata.parentSessionId === source.id
122
- ? dataset.entryCount
123
- : 0;
124
- },
125
- },
126
- ];
127
- //# sourceMappingURL=session-repo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-repo.js","sourceRoot":"","sources":["../../../../../src/harness/session/testing/benchmark/session-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAgC,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,wCAAwC,EAAE,MAAM,cAAc,CAAC;AA6BxE,0FAA0F;AAC1F,MAAM,UAAU,6BAA6B,CAAC,KAAa;IAC1D,OAAO,qBAAqB,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,MAAM,oBAAoB,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC;AAC9D,MAAM,2BAA2B,GAAG,6BAA6B,CAAC,CAAC,CAAC,CAAC;AAErE,SAAS,oBAAoB,CAAC,KAAa,EAAE,YAAoB;IAChE,OAAO;QACN,IAAI,EAAE,sBAAsB,KAAK,kBAAkB;QACnD,YAAY;KACZ,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uCAAuC,GAAkD;IACrG,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC;IAChC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC;IACjC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;CACnC,CAAC;AAEF,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACpD,IAAiB,EACjB,OAA2C;IAE3C,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,6BAA6B,CAAC,KAAK,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACpG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,6CAA6C,GAAuD;IAChH;QACC,IAAI,EAAE,eAAe;QACrB,cAAc,CAAC,OAAO;YACrB,OAAO,OAAO,CAAC,YAAY,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI;YACb,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,CAAC;KACD;CACD,CAAC;AAEF,wGAAwG;AACxG,MAAM,CAAC,MAAM,8CAA8C,GAAwD;IAClH;QACC,IAAI,EAAE,sBAAsB;QAC5B,cAAc,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI;YACX,OAAO,OAAO,CAAC,OAAO,CAAC;gBACtB,KAAK,CAAC,GAAG;oBACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,kBAAkB,CAAC,CAAC;oBACpF,OAAO,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7D,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;KACD;IACD;QACC,IAAI,EAAE,2BAA2B;QACjC,cAAc,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,CAAC,IAAI;YACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACpF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,MAAM,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACxC,OAAO;gBACN,KAAK,CAAC,GAAG;oBACR,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;oBAC/D,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrD,CAAC;aACD,CAAC;QACH,CAAC;KACD;IACD;QACC,IAAI,EAAE,6BAA6B;QACnC,cAAc,EAAE,CAAC;QACjB,KAAK,CAAC,OAAO,CAAC,IAAI;YACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,kBAAkB,CAAC,CAAC;YACpF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,MAAM,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACxC,OAAO;gBACN,KAAK,CAAC,GAAG;oBACR,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;oBAChD,OAAO,CAAC,CAAC;gBACV,CAAC;aACD,CAAC;QACH,CAAC;KACD;CACD,CAAC;AAEF,6GAA6G;AAC7G,MAAM,CAAC,MAAM,oCAAoC,GAAuC;IACvF,0BAA0B,CAAC,CAAC,CAAE;IAC9B,0BAA0B,CAAC,CAAC,CAAE;CAC9B,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,4BAA4B,CACjD,IAAiB,EACjB,OAAgC;IAEhC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACpF,KAAK,MAAM,WAAW,IAAI,wCAAwC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7E,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,OAAO,CAAC,MAAM,CACnB,CAAC,OAAO,EAAE,EAAE,CACX,OAAO,CAAC,MAAM,CACb;QACC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC;QAC1C,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC5B,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE;YACtD,aAAa,EAAE,KAAK;YACpB,eAAe,EAAE,EAAE;SACnB,CAAC;QACF,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;KAC3F,EACD,kBAAkB,CAClB,EACF,kBAAkB,CAClB,CAAC;IACF,OAAO,OAAO,CAAC,QAAQ,CAAC;AACzB,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,2CAA2C,GAAqD;IAC5G;QACC,IAAI,EAAE,0BAA0B;QAChC,cAAc,CAAC,OAAO;YACrB,OAAO,OAAO,CAAC,UAAU,CAAC;QAC3B,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO;YAC9B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAC3B,MAAM,EACN,EAAE,EAAE,EAAE,2BAA2B,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,EACpE,kBAAkB,CAClB,CAAC;YACF,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,2BAA2B,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,KAAK,MAAM,CAAC,EAAE;gBACrG,CAAC,CAAC,OAAO,CAAC,UAAU;gBACpB,CAAC,CAAC,CAAC,CAAC;QACN,CAAC;KACD;CACD,CAAC","sourcesContent":["import { BACKGROUND_CONTEXT } from \"../../../context.ts\";\nimport type { SessionMetadata, SessionRepo } from \"../../types.ts\";\nimport { branchTip, laneConfig, laneState, setValue } from \"../../values.ts\";\nimport { STORAGE_BENCHMARK_DATASETS, type StorageBenchmarkDataset } from \"./datasets.ts\";\nimport { generateStorageBenchmarkSeedTransactions } from \"./storage.ts\";\n\nexport interface SessionRepoCatalogBenchmarkDataset {\n\treadonly name: string;\n\treadonly sessionCount: number;\n}\n\ninterface SessionRepoCatalogReadBenchmarkScenario {\n\treadonly name: string;\n\texpectedResult(dataset: SessionRepoCatalogBenchmarkDataset): number;\n\trun(repo: SessionRepo): Promise<number>;\n}\n\ninterface SessionRepoCatalogWriteBenchmarkOperation {\n\trun(): Promise<number>;\n}\n\ninterface SessionRepoCatalogWriteBenchmarkScenario {\n\treadonly name: string;\n\treadonly expectedResult: number;\n\tprepare(repo: SessionRepo): Promise<SessionRepoCatalogWriteBenchmarkOperation>;\n}\n\ninterface SessionRepoForkWriteBenchmarkScenario {\n\treadonly name: string;\n\texpectedResult(dataset: StorageBenchmarkDataset): number;\n\trun(repo: SessionRepo, source: SessionMetadata, dataset: StorageBenchmarkDataset): Promise<number>;\n}\n\n/** Package-internal deterministic session id shared by repository benchmark workloads. */\nexport function sessionRepoBenchmarkSessionId(index: number): string {\n\treturn `benchmark-session-${index.toString().padStart(8, \"0\")}`;\n}\n\nconst BENCHMARK_SESSION_ID = sessionRepoBenchmarkSessionId(0);\nconst FORK_DESTINATION_SESSION_ID = sessionRepoBenchmarkSessionId(1);\n\nfunction createCatalogDataset(scale: string, sessionCount: number): SessionRepoCatalogBenchmarkDataset {\n\treturn {\n\t\tname: `synthetic catalog: ${scale} closed sessions`,\n\t\tsessionCount,\n\t};\n}\n\n/** Deterministic closed-session catalogs shared by repository measurements. */\nexport const SESSION_REPO_CATALOG_BENCHMARK_DATASETS: readonly SessionRepoCatalogBenchmarkDataset[] = [\n\tcreateCatalogDataset(\"100\", 100),\n\tcreateCatalogDataset(\"1k\", 1_000),\n\tcreateCatalogDataset(\"10k\", 10_000),\n];\n\n/** Seeds one deterministic catalog and returns its durable metadata in creation order. */\nexport async function seedSessionRepoCatalogBenchmark(\n\trepo: SessionRepo,\n\tdataset: SessionRepoCatalogBenchmarkDataset,\n): Promise<SessionMetadata[]> {\n\tconst metadata: SessionMetadata[] = [];\n\tfor (let index = 0; index < dataset.sessionCount; index++) {\n\t\tconst session = await repo.create({ id: sessionRepoBenchmarkSessionId(index) }, BACKGROUND_CONTEXT);\n\t\tmetadata.push(session.metadata);\n\t\tawait session.close(BACKGROUND_CONTEXT);\n\t}\n\treturn metadata;\n}\n\n/** Shared catalog reads. Returning a number ensures each result is consumed. */\nexport const SESSION_REPO_CATALOG_READ_BENCHMARK_SCENARIOS: readonly SessionRepoCatalogReadBenchmarkScenario[] = [\n\t{\n\t\tname: \"list sessions\",\n\t\texpectedResult(dataset) {\n\t\t\treturn dataset.sessionCount;\n\t\t},\n\t\tasync run(repo) {\n\t\t\treturn (await repo.list(undefined, BACKGROUND_CONTEXT)).length;\n\t\t},\n\t},\n];\n\n/** Shared catalog writes. Every invocation receives an equivalent independently prepared repository. */\nexport const SESSION_REPO_CATALOG_WRITE_BENCHMARK_SCENARIOS: readonly SessionRepoCatalogWriteBenchmarkScenario[] = [\n\t{\n\t\tname: \"create empty session\",\n\t\texpectedResult: 1,\n\t\tprepare(repo) {\n\t\t\treturn Promise.resolve({\n\t\t\t\tasync run() {\n\t\t\t\t\tconst session = await repo.create({ id: BENCHMARK_SESSION_ID }, BACKGROUND_CONTEXT);\n\t\t\t\t\treturn session.metadata.id === BENCHMARK_SESSION_ID ? 1 : 0;\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t},\n\t{\n\t\tname: \"open closed empty session\",\n\t\texpectedResult: 1,\n\t\tasync prepare(repo) {\n\t\t\tconst session = await repo.create({ id: BENCHMARK_SESSION_ID }, BACKGROUND_CONTEXT);\n\t\t\tconst { metadata } = session;\n\t\t\tawait session.close(BACKGROUND_CONTEXT);\n\t\t\treturn {\n\t\t\t\tasync run() {\n\t\t\t\t\tconst reopened = await repo.open(metadata, BACKGROUND_CONTEXT);\n\t\t\t\t\treturn reopened.metadata.id === metadata.id ? 1 : 0;\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t},\n\t{\n\t\tname: \"delete closed empty session\",\n\t\texpectedResult: 1,\n\t\tasync prepare(repo) {\n\t\t\tconst session = await repo.create({ id: BENCHMARK_SESSION_ID }, BACKGROUND_CONTEXT);\n\t\t\tconst { metadata } = session;\n\t\t\tawait session.close(BACKGROUND_CONTEXT);\n\t\t\treturn {\n\t\t\t\tasync run() {\n\t\t\t\t\tawait repo.delete(metadata, BACKGROUND_CONTEXT);\n\t\t\t\t\treturn 1;\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t},\n];\n\n/** Initial fork timing uses a bounded source because each iteration owns an equivalent seeded repository. */\nexport const SESSION_REPO_FORK_BENCHMARK_DATASETS: readonly StorageBenchmarkDataset[] = [\n\tSTORAGE_BENCHMARK_DATASETS[0]!,\n\tSTORAGE_BENCHMARK_DATASETS[1]!,\n];\n\n/** Seeds one deterministic open source session with a linear main branch. */\nexport async function seedSessionRepoForkBenchmark(\n\trepo: SessionRepo,\n\tdataset: StorageBenchmarkDataset,\n): Promise<SessionMetadata> {\n\tconst session = await repo.create({ id: BENCHMARK_SESSION_ID }, BACKGROUND_CONTEXT);\n\tfor (const transaction of generateStorageBenchmarkSeedTransactions(dataset)) {\n\t\tawait session.mutate((mutator) => mutator.commit(transaction, BACKGROUND_CONTEXT), BACKGROUND_CONTEXT);\n\t}\n\tawait session.mutate(\n\t\t(mutator) =>\n\t\t\tmutator.commit(\n\t\t\t\t[\n\t\t\t\t\tsetValue(branchTip(\"main\"), dataset.tipId),\n\t\t\t\t\tsetValue(laneConfig(\"main\"), {\n\t\t\t\t\t\tmodel: { provider: \"benchmark\", modelId: \"benchmark\" },\n\t\t\t\t\t\tthinkingLevel: \"off\",\n\t\t\t\t\t\tactiveToolNames: [],\n\t\t\t\t\t}),\n\t\t\t\t\tsetValue(laneState(\"main\"), { currentOperationId: null, lastOperationId: null, inbox: [] }),\n\t\t\t\t],\n\t\t\t\tBACKGROUND_CONTEXT,\n\t\t\t),\n\t\tBACKGROUND_CONTEXT,\n\t);\n\treturn session.metadata;\n}\n\n/** Shared fork writes. Every invocation receives an equivalent source repository. */\nexport const SESSION_REPO_FORK_WRITE_BENCHMARK_SCENARIOS: readonly SessionRepoForkWriteBenchmarkScenario[] = [\n\t{\n\t\tname: \"fork open current branch\",\n\t\texpectedResult(dataset) {\n\t\t\treturn dataset.entryCount;\n\t\t},\n\t\tasync run(repo, source, dataset) {\n\t\t\tconst fork = await repo.fork(\n\t\t\t\tsource,\n\t\t\t\t{ id: FORK_DESTINATION_SESSION_ID, scope: \"branch\", branch: \"main\" },\n\t\t\t\tBACKGROUND_CONTEXT,\n\t\t\t);\n\t\t\treturn fork.metadata.id === FORK_DESTINATION_SESSION_ID && fork.metadata.parentSessionId === source.id\n\t\t\t\t? dataset.entryCount\n\t\t\t\t: 0;\n\t\t},\n\t},\n];\n"]}
@@ -1,25 +0,0 @@
1
- import type { Storage, Write } from "../../types.ts";
2
- import { type StorageBenchmarkDataset } from "./datasets.ts";
3
- /** Generates deterministic seed transactions without claiming a production data distribution. */
4
- export declare function generateStorageBenchmarkSeedTransactions(dataset: StorageBenchmarkDataset): Generator<Write[]>;
5
- /** Seeds one deterministic synthetic linear branch. */
6
- export declare function seedStorageBenchmark(storage: Storage, dataset: StorageBenchmarkDataset): Promise<void>;
7
- /** A steady-state read operation run against a pre-seeded fixture. */
8
- interface StorageReadBenchmarkScenario {
9
- readonly name: string;
10
- expectedResult(dataset: StorageBenchmarkDataset): number;
11
- run(storage: Storage, dataset: StorageBenchmarkDataset): Promise<number>;
12
- }
13
- /** A write operation run once against each independently prepared fixture. */
14
- interface StorageWriteBenchmarkScenario {
15
- readonly name: string;
16
- readonly writeCount: number;
17
- prepare?(storage: Storage): Promise<void>;
18
- run(storage: Storage): Promise<number>;
19
- }
20
- /** Shared read scenarios. Returning a number ensures each result is consumed. */
21
- export declare const STORAGE_READ_BENCHMARK_SCENARIOS: readonly StorageReadBenchmarkScenario[];
22
- /** Shared writes. Every invocation receives equivalent pre-benchmark state. */
23
- export declare const STORAGE_WRITE_BENCHMARK_SCENARIOS: readonly StorageWriteBenchmarkScenario[];
24
- export {};
25
- //# sourceMappingURL=storage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../../src/harness/session/testing/benchmark/storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA0B,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE7E,OAAO,EAA8B,KAAK,uBAAuB,EAA2B,MAAM,eAAe,CAAC;AA2BlH,iGAAiG;AACjG,wBAAiB,wCAAwC,CAAC,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,CAQ9G;AAED,uDAAuD;AACvD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAG5G;AAED,sEAAsE;AACtE,UAAU,4BAA4B;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAAC;IACzD,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACzE;AAED,8EAA8E;AAC9E,UAAU,6BAA6B;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAuBD,iFAAiF;AACjF,eAAO,MAAM,gCAAgC,EAAE,SAAS,4BAA4B,EA6BnF,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,iCAAiC,EAAE,SAAS,6BAA6B,EAyBrF,CAAC"}
@@ -1,114 +0,0 @@
1
- import { BACKGROUND_CONTEXT } from "../../../context.js";
2
- import { insertEntry, insertUsage } from "../../commit.js";
3
- import { branchTip, setValue } from "../../values.js";
4
- import { STORAGE_BENCHMARK_DATASETS, storageBenchmarkEntryId } from "./datasets.js";
5
- const MESSAGE_TIMESTAMP = 1_650_000_000_000;
6
- const SEED_BATCH_SIZE = 250;
7
- const WRITE_BASELINE_DATASET = STORAGE_BENCHMARK_DATASETS[0];
8
- function createEntry(index, payloadBytes) {
9
- const id = storageBenchmarkEntryId(index);
10
- const prefix = `${id}:`;
11
- return {
12
- id,
13
- parentId: index === 0 ? null : storageBenchmarkEntryId(index - 1),
14
- type: "message",
15
- message: {
16
- role: "user",
17
- content: [{ type: "text", text: prefix + "x".repeat(Math.max(0, payloadBytes - prefix.length)) }],
18
- timestamp: MESSAGE_TIMESTAMP,
19
- },
20
- };
21
- }
22
- function createStorageBenchmarkTransaction(startIndex, entryCount, payloadBytes) {
23
- return Array.from({ length: entryCount }, (_, offset) => insertEntry(createEntry(startIndex + offset, payloadBytes)));
24
- }
25
- /** Generates deterministic seed transactions without claiming a production data distribution. */
26
- export function* generateStorageBenchmarkSeedTransactions(dataset) {
27
- for (let startIndex = 0; startIndex < dataset.entryCount; startIndex += SEED_BATCH_SIZE) {
28
- yield createStorageBenchmarkTransaction(startIndex, Math.min(SEED_BATCH_SIZE, dataset.entryCount - startIndex), dataset.payloadBytes);
29
- }
30
- }
31
- /** Seeds one deterministic synthetic linear branch. */
32
- export async function seedStorageBenchmark(storage, dataset) {
33
- for (const transaction of generateStorageBenchmarkSeedTransactions(dataset))
34
- await storage.commit(transaction, BACKGROUND_CONTEXT);
35
- }
36
- const singleEntryTransaction = createStorageBenchmarkTransaction(0, 1, 256);
37
- const hundredEntryTransaction = createStorageBenchmarkTransaction(0, 100, 256);
38
- const appendedEntryId = storageBenchmarkEntryId(WRITE_BASELINE_DATASET.entryCount);
39
- const mixedAppendTransaction = [
40
- ...createStorageBenchmarkTransaction(WRITE_BASELINE_DATASET.entryCount, 1, WRITE_BASELINE_DATASET.payloadBytes),
41
- setValue(branchTip("main"), appendedEntryId),
42
- insertUsage({
43
- id: "benchmark-usage",
44
- entryId: appendedEntryId,
45
- adjustment: false,
46
- usage: {
47
- input: 1_000,
48
- output: 250,
49
- cacheRead: 500,
50
- cacheWrite: 0,
51
- totalTokens: 1_250,
52
- cost: { input: 0.001, output: 0.001, cacheRead: 0.0001, cacheWrite: 0, total: 0.0021 },
53
- },
54
- }),
55
- ];
56
- /** Shared read scenarios. Returning a number ensures each result is consumed. */
57
- export const STORAGE_READ_BENCHMARK_SCENARIOS = [
58
- {
59
- name: "get 100 distributed entries",
60
- expectedResult(dataset) {
61
- return dataset.lookupIds.length;
62
- },
63
- async run(storage, dataset) {
64
- return (await storage.getEntries([...dataset.lookupIds], BACKGROUND_CONTEXT)).size;
65
- },
66
- },
67
- {
68
- name: "scan latest 50 entries",
69
- expectedResult(dataset) {
70
- return Math.min(50, dataset.entryCount);
71
- },
72
- async run(storage) {
73
- return (await storage.scanEntries({ order: "desc", limit: 50 }, BACKGROUND_CONTEXT)).length;
74
- },
75
- },
76
- {
77
- name: "scan full branch structure",
78
- expectedResult(dataset) {
79
- return dataset.entryCount;
80
- },
81
- async run(storage, dataset) {
82
- return (await storage.scanBranchStructure({ start: dataset.tipId, order: "newestFirst" }, BACKGROUND_CONTEXT))
83
- .length;
84
- },
85
- },
86
- ];
87
- /** Shared writes. Every invocation receives equivalent pre-benchmark state. */
88
- export const STORAGE_WRITE_BENCHMARK_SCENARIOS = [
89
- {
90
- name: "commit one message entry",
91
- writeCount: 1,
92
- async run(storage) {
93
- return (await storage.commit(singleEntryTransaction, BACKGROUND_CONTEXT)).seqs.length;
94
- },
95
- },
96
- {
97
- name: "commit 100 message entries",
98
- writeCount: 100,
99
- async run(storage) {
100
- return (await storage.commit(hundredEntryTransaction, BACKGROUND_CONTEXT)).seqs.length;
101
- },
102
- },
103
- {
104
- name: `commit mixed append (${WRITE_BASELINE_DATASET.name})`,
105
- writeCount: 3,
106
- prepare(storage) {
107
- return seedStorageBenchmark(storage, WRITE_BASELINE_DATASET);
108
- },
109
- async run(storage) {
110
- return (await storage.commit(mixedAppendTransaction, BACKGROUND_CONTEXT)).seqs.length;
111
- },
112
- },
113
- ];
114
- //# sourceMappingURL=storage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../../../src/harness/session/testing/benchmark/storage.ts"],"names":[],"mappings":"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","sourcesContent":["import { BACKGROUND_CONTEXT } from \"../../../context.ts\";\nimport { insertEntry, insertUsage } from \"../../commit.ts\";\nimport type { MessageEntry, NewEntry, Storage, Write } from \"../../types.ts\";\nimport { branchTip, setValue } from \"../../values.ts\";\nimport { STORAGE_BENCHMARK_DATASETS, type StorageBenchmarkDataset, storageBenchmarkEntryId } from \"./datasets.ts\";\n\nconst MESSAGE_TIMESTAMP = 1_650_000_000_000;\nconst SEED_BATCH_SIZE = 250;\nconst WRITE_BASELINE_DATASET = STORAGE_BENCHMARK_DATASETS[0]!;\n\nfunction createEntry(index: number, payloadBytes: number): NewEntry<MessageEntry> {\n\tconst id = storageBenchmarkEntryId(index);\n\tconst prefix = `${id}:`;\n\treturn {\n\t\tid,\n\t\tparentId: index === 0 ? null : storageBenchmarkEntryId(index - 1),\n\t\ttype: \"message\",\n\t\tmessage: {\n\t\t\trole: \"user\",\n\t\t\tcontent: [{ type: \"text\", text: prefix + \"x\".repeat(Math.max(0, payloadBytes - prefix.length)) }],\n\t\t\ttimestamp: MESSAGE_TIMESTAMP,\n\t\t},\n\t};\n}\n\nfunction createStorageBenchmarkTransaction(startIndex: number, entryCount: number, payloadBytes: number): Write[] {\n\treturn Array.from({ length: entryCount }, (_, offset) =>\n\t\tinsertEntry(createEntry(startIndex + offset, payloadBytes)),\n\t);\n}\n\n/** Generates deterministic seed transactions without claiming a production data distribution. */\nexport function* generateStorageBenchmarkSeedTransactions(dataset: StorageBenchmarkDataset): Generator<Write[]> {\n\tfor (let startIndex = 0; startIndex < dataset.entryCount; startIndex += SEED_BATCH_SIZE) {\n\t\tyield createStorageBenchmarkTransaction(\n\t\t\tstartIndex,\n\t\t\tMath.min(SEED_BATCH_SIZE, dataset.entryCount - startIndex),\n\t\t\tdataset.payloadBytes,\n\t\t);\n\t}\n}\n\n/** Seeds one deterministic synthetic linear branch. */\nexport async function seedStorageBenchmark(storage: Storage, dataset: StorageBenchmarkDataset): Promise<void> {\n\tfor (const transaction of generateStorageBenchmarkSeedTransactions(dataset))\n\t\tawait storage.commit(transaction, BACKGROUND_CONTEXT);\n}\n\n/** A steady-state read operation run against a pre-seeded fixture. */\ninterface StorageReadBenchmarkScenario {\n\treadonly name: string;\n\texpectedResult(dataset: StorageBenchmarkDataset): number;\n\trun(storage: Storage, dataset: StorageBenchmarkDataset): Promise<number>;\n}\n\n/** A write operation run once against each independently prepared fixture. */\ninterface StorageWriteBenchmarkScenario {\n\treadonly name: string;\n\treadonly writeCount: number;\n\tprepare?(storage: Storage): Promise<void>;\n\trun(storage: Storage): Promise<number>;\n}\n\nconst singleEntryTransaction = createStorageBenchmarkTransaction(0, 1, 256);\nconst hundredEntryTransaction = createStorageBenchmarkTransaction(0, 100, 256);\nconst appendedEntryId = storageBenchmarkEntryId(WRITE_BASELINE_DATASET.entryCount);\nconst mixedAppendTransaction: Write[] = [\n\t...createStorageBenchmarkTransaction(WRITE_BASELINE_DATASET.entryCount, 1, WRITE_BASELINE_DATASET.payloadBytes),\n\tsetValue(branchTip(\"main\"), appendedEntryId),\n\tinsertUsage({\n\t\tid: \"benchmark-usage\",\n\t\tentryId: appendedEntryId,\n\t\tadjustment: false,\n\t\tusage: {\n\t\t\tinput: 1_000,\n\t\t\toutput: 250,\n\t\t\tcacheRead: 500,\n\t\t\tcacheWrite: 0,\n\t\t\ttotalTokens: 1_250,\n\t\t\tcost: { input: 0.001, output: 0.001, cacheRead: 0.0001, cacheWrite: 0, total: 0.0021 },\n\t\t},\n\t}),\n];\n\n/** Shared read scenarios. Returning a number ensures each result is consumed. */\nexport const STORAGE_READ_BENCHMARK_SCENARIOS: readonly StorageReadBenchmarkScenario[] = [\n\t{\n\t\tname: \"get 100 distributed entries\",\n\t\texpectedResult(dataset) {\n\t\t\treturn dataset.lookupIds.length;\n\t\t},\n\t\tasync run(storage, dataset) {\n\t\t\treturn (await storage.getEntries([...dataset.lookupIds], BACKGROUND_CONTEXT)).size;\n\t\t},\n\t},\n\t{\n\t\tname: \"scan latest 50 entries\",\n\t\texpectedResult(dataset) {\n\t\t\treturn Math.min(50, dataset.entryCount);\n\t\t},\n\t\tasync run(storage) {\n\t\t\treturn (await storage.scanEntries({ order: \"desc\", limit: 50 }, BACKGROUND_CONTEXT)).length;\n\t\t},\n\t},\n\t{\n\t\tname: \"scan full branch structure\",\n\t\texpectedResult(dataset) {\n\t\t\treturn dataset.entryCount;\n\t\t},\n\t\tasync run(storage, dataset) {\n\t\t\treturn (await storage.scanBranchStructure({ start: dataset.tipId, order: \"newestFirst\" }, BACKGROUND_CONTEXT))\n\t\t\t\t.length;\n\t\t},\n\t},\n];\n\n/** Shared writes. Every invocation receives equivalent pre-benchmark state. */\nexport const STORAGE_WRITE_BENCHMARK_SCENARIOS: readonly StorageWriteBenchmarkScenario[] = [\n\t{\n\t\tname: \"commit one message entry\",\n\t\twriteCount: 1,\n\t\tasync run(storage) {\n\t\t\treturn (await storage.commit(singleEntryTransaction, BACKGROUND_CONTEXT)).seqs.length;\n\t\t},\n\t},\n\t{\n\t\tname: \"commit 100 message entries\",\n\t\twriteCount: 100,\n\t\tasync run(storage) {\n\t\t\treturn (await storage.commit(hundredEntryTransaction, BACKGROUND_CONTEXT)).seqs.length;\n\t\t},\n\t},\n\t{\n\t\tname: `commit mixed append (${WRITE_BASELINE_DATASET.name})`,\n\t\twriteCount: 3,\n\t\tprepare(storage) {\n\t\t\treturn seedStorageBenchmark(storage, WRITE_BASELINE_DATASET);\n\t\t},\n\t\tasync run(storage) {\n\t\t\treturn (await storage.commit(mixedAppendTransaction, BACKGROUND_CONTEXT)).seqs.length;\n\t\t},\n\t},\n];\n"]}
@@ -1,23 +0,0 @@
1
- import type { SessionMetadata, SessionRepo } from "../../types.ts";
2
- import type { ConformanceCase } from "../types.ts";
3
- /** Creates lifecycle cases for repositories that support creation, discovery, open, and deletion. */
4
- export declare function createSessionRepoLifecycleConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create" | "open" | "list" | "delete">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
5
- /** Creates exclusive-open cases for repositories that own active session handles. */
6
- export declare function createSessionRepoOwnershipConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create" | "open">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
7
- /** Creates message cases for repositories that support session creation. */
8
- export declare function createSessionRepoMessageConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
9
- /** Creates fork-content cases that do not require concurrent repository coordination. */
10
- export declare function createSessionRepoForkBehaviorConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create" | "list" | "fork">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
11
- /** WP08 cases enabled for Memory and JSONL while SQLite's streaming fork implementation is pending. */
12
- export declare function createSessionRepoStreamingForkConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create" | "fork">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
13
- /** Creates fork cases that require destination reservation across create and fork. */
14
- export declare function createSessionRepoForkDestinationReservationConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create" | "fork">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
15
- /** Creates fork cases that require a snapshot boundary on an active source storage queue. */
16
- export declare function createSessionRepoForkSourceSnapshotConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create" | "fork">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
17
- /** Creates every fork coordination case. */
18
- export declare function createSessionRepoForkCoordinationConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create" | "fork">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
19
- /** Creates every fork conformance case. */
20
- export declare function createSessionRepoForkConformance<TMetadata extends SessionMetadata>(backendFactory: () => Promise<Pick<SessionRepo<TMetadata>, "create" | "list" | "fork">>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
21
- /** Creates every SessionRepo conformance case. */
22
- export declare function createSessionRepoConformance<TMetadata extends SessionMetadata>(factory: () => Promise<SessionRepo<TMetadata>>, onClose?: () => void | Promise<void>): readonly ConformanceCase[];
23
- //# sourceMappingURL=session-repo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-repo.d.ts","sourceRoot":"","sources":["../../../../../src/harness/session/testing/conformance/session-repo.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAKX,eAAe,EACf,WAAW,EAEX,MAAM,gBAAgB,CAAC;AAmBxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA6GnD,qGAAqG;AACrG,wBAAgB,qCAAqC,CAAC,SAAS,SAAS,eAAe,EAEtF,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,EAClG,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CAkF5B;AAED,qFAAqF;AACrF,wBAAgB,qCAAqC,CAAC,SAAS,SAAS,eAAe,EACtF,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC9E,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CAa5B;AAED,4EAA4E;AAC5E,wBAAgB,mCAAmC,CAAC,SAAS,SAAS,eAAe,EACpF,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC,EACrE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CA+C5B;AAED,yFAAyF;AACzF,wBAAgB,wCAAwC,CAAC,SAAS,SAAS,eAAe,EACzF,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,EACvF,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CA0Y5B;AAED,uGAAuG;AACvG,wBAAgB,yCAAyC,CAAC,SAAS,SAAS,eAAe,EAC1F,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC9E,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CAO5B;AAuUD,sFAAsF;AACtF,wBAAgB,sDAAsD,CAAC,SAAS,SAAS,eAAe,EACvG,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC9E,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CAoC5B;AAED,6FAA6F;AAC7F,wBAAgB,8CAA8C,CAAC,SAAS,SAAS,eAAe,EAC/F,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC9E,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CAgE5B;AAED,4CAA4C;AAC5C,wBAAgB,4CAA4C,CAAC,SAAS,SAAS,eAAe,EAC7F,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC,EAC9E,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CAK5B;AAED,2CAA2C;AAC3C,wBAAgB,gCAAgC,CAAC,SAAS,SAAS,eAAe,EACjF,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC,EACvF,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CAK5B;AAED,kDAAkD;AAClD,wBAAgB,4BAA4B,CAAC,SAAS,SAAS,eAAe,EAC7E,OAAO,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAC9C,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAClC,SAAS,eAAe,EAAE,CAO5B"}