@smthrs/harness 0.0.0-stage → 1.0.0-rc.3

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 (476) hide show
  1. package/CHANGELOG.md +387 -0
  2. package/LICENSE +21 -0
  3. package/README.md +138 -2
  4. package/dist/cjs/AgentEvent.d.ts +3092 -0
  5. package/dist/cjs/AgentEvent.d.ts.map +1 -0
  6. package/dist/cjs/AgentEvent.js +1116 -0
  7. package/dist/cjs/AgentEvent.js.map +7 -0
  8. package/dist/cjs/CallLedger.d.ts +378 -0
  9. package/dist/cjs/CallLedger.d.ts.map +1 -0
  10. package/dist/cjs/CallLedger.js +240 -0
  11. package/dist/cjs/CallLedger.js.map +7 -0
  12. package/dist/cjs/Cell.d.ts +774 -0
  13. package/dist/cjs/Cell.d.ts.map +1 -0
  14. package/dist/cjs/Cell.js +431 -0
  15. package/dist/cjs/Cell.js.map +7 -0
  16. package/dist/cjs/CellCalls.d.ts +115 -0
  17. package/dist/cjs/CellCalls.d.ts.map +1 -0
  18. package/dist/cjs/CellCalls.js +98 -0
  19. package/dist/cjs/CellCalls.js.map +7 -0
  20. package/dist/cjs/CellHistory.d.ts +102 -0
  21. package/dist/cjs/CellHistory.d.ts.map +1 -0
  22. package/dist/cjs/CellHistory.js +54 -0
  23. package/dist/cjs/CellHistory.js.map +7 -0
  24. package/dist/cjs/CellTurn.d.ts +1071 -0
  25. package/dist/cjs/CellTurn.d.ts.map +1 -0
  26. package/dist/cjs/CellTurn.js +2618 -0
  27. package/dist/cjs/CellTurn.js.map +7 -0
  28. package/dist/cjs/CellValidation.d.ts +94 -0
  29. package/dist/cjs/CellValidation.d.ts.map +1 -0
  30. package/dist/cjs/CellValidation.js +218 -0
  31. package/dist/cjs/CellValidation.js.map +7 -0
  32. package/dist/cjs/Compaction.d.ts +158 -0
  33. package/dist/cjs/Compaction.d.ts.map +1 -0
  34. package/dist/cjs/Compaction.js +189 -0
  35. package/dist/cjs/Compaction.js.map +7 -0
  36. package/dist/cjs/CompletionClaim.d.ts +801 -0
  37. package/dist/cjs/CompletionClaim.d.ts.map +1 -0
  38. package/dist/cjs/CompletionClaim.js +303 -0
  39. package/dist/cjs/CompletionClaim.js.map +7 -0
  40. package/dist/cjs/ContextWindow.d.ts +435 -0
  41. package/dist/cjs/ContextWindow.d.ts.map +1 -0
  42. package/dist/cjs/ContextWindow.js +319 -0
  43. package/dist/cjs/ContextWindow.js.map +7 -0
  44. package/dist/cjs/EngineLike.d.ts +546 -0
  45. package/dist/cjs/EngineLike.d.ts.map +1 -0
  46. package/dist/cjs/EngineLike.js +114 -0
  47. package/dist/cjs/EngineLike.js.map +7 -0
  48. package/dist/cjs/ExternalTranscript.d.ts +349 -0
  49. package/dist/cjs/ExternalTranscript.d.ts.map +1 -0
  50. package/dist/cjs/ExternalTranscript.js +826 -0
  51. package/dist/cjs/ExternalTranscript.js.map +7 -0
  52. package/dist/cjs/FailedCall.d.ts +132 -0
  53. package/dist/cjs/FailedCall.d.ts.map +1 -0
  54. package/dist/cjs/FailedCall.js +53 -0
  55. package/dist/cjs/FailedCall.js.map +7 -0
  56. package/dist/cjs/FlowBinding.d.ts +289 -0
  57. package/dist/cjs/FlowBinding.d.ts.map +1 -0
  58. package/dist/cjs/FlowBinding.js +251 -0
  59. package/dist/cjs/FlowBinding.js.map +7 -0
  60. package/dist/cjs/HarnessError.d.ts +57 -0
  61. package/dist/cjs/HarnessError.d.ts.map +1 -0
  62. package/dist/cjs/HarnessError.js +75 -0
  63. package/dist/cjs/HarnessError.js.map +7 -0
  64. package/dist/cjs/Judgement.d.ts +289 -0
  65. package/dist/cjs/Judgement.d.ts.map +1 -0
  66. package/dist/cjs/Judgement.js +240 -0
  67. package/dist/cjs/Judgement.js.map +7 -0
  68. package/dist/cjs/Monitor.d.ts +374 -0
  69. package/dist/cjs/Monitor.d.ts.map +1 -0
  70. package/dist/cjs/Monitor.js +233 -0
  71. package/dist/cjs/Monitor.js.map +7 -0
  72. package/dist/cjs/NarrowedCheck.d.ts +523 -0
  73. package/dist/cjs/NarrowedCheck.d.ts.map +1 -0
  74. package/dist/cjs/NarrowedCheck.js +263 -0
  75. package/dist/cjs/NarrowedCheck.js.map +7 -0
  76. package/dist/cjs/Notifications.d.ts +42 -0
  77. package/dist/cjs/Notifications.d.ts.map +1 -0
  78. package/dist/cjs/Notifications.js +177 -0
  79. package/dist/cjs/Notifications.js.map +7 -0
  80. package/dist/cjs/Plan.d.ts +127 -0
  81. package/dist/cjs/Plan.d.ts.map +1 -0
  82. package/dist/cjs/Plan.js +77 -0
  83. package/dist/cjs/Plan.js.map +7 -0
  84. package/dist/cjs/QuickJSSandbox.d.ts +151 -0
  85. package/dist/cjs/QuickJSSandbox.d.ts.map +1 -0
  86. package/dist/cjs/QuickJSSandbox.js +987 -0
  87. package/dist/cjs/QuickJSSandbox.js.map +7 -0
  88. package/dist/cjs/Relevance.d.ts +213 -0
  89. package/dist/cjs/Relevance.d.ts.map +1 -0
  90. package/dist/cjs/Relevance.js +183 -0
  91. package/dist/cjs/Relevance.js.map +7 -0
  92. package/dist/cjs/Sandbox.d.ts +637 -0
  93. package/dist/cjs/Sandbox.d.ts.map +1 -0
  94. package/dist/cjs/Sandbox.js +260 -0
  95. package/dist/cjs/Sandbox.js.map +7 -0
  96. package/dist/cjs/Steering.d.ts +464 -0
  97. package/dist/cjs/Steering.d.ts.map +1 -0
  98. package/dist/cjs/Steering.js +153 -0
  99. package/dist/cjs/Steering.js.map +7 -0
  100. package/dist/cjs/StructuredOutput.d.ts +252 -0
  101. package/dist/cjs/StructuredOutput.d.ts.map +1 -0
  102. package/dist/cjs/StructuredOutput.js +266 -0
  103. package/dist/cjs/StructuredOutput.js.map +7 -0
  104. package/dist/cjs/Sufficiency.d.ts +195 -0
  105. package/dist/cjs/Sufficiency.d.ts.map +1 -0
  106. package/dist/cjs/Sufficiency.js +110 -0
  107. package/dist/cjs/Sufficiency.js.map +7 -0
  108. package/dist/cjs/Supervisor.d.ts +719 -0
  109. package/dist/cjs/Supervisor.d.ts.map +1 -0
  110. package/dist/cjs/Supervisor.js +313 -0
  111. package/dist/cjs/Supervisor.js.map +7 -0
  112. package/dist/cjs/Tokens.d.ts +86 -0
  113. package/dist/cjs/Tokens.d.ts.map +1 -0
  114. package/dist/cjs/Tokens.js +72 -0
  115. package/dist/cjs/Tokens.js.map +7 -0
  116. package/dist/cjs/Transcript.d.ts +171 -0
  117. package/dist/cjs/Transcript.d.ts.map +1 -0
  118. package/dist/cjs/Transcript.js +342 -0
  119. package/dist/cjs/Transcript.js.map +7 -0
  120. package/dist/cjs/TruncatedOutput.d.ts +186 -0
  121. package/dist/cjs/TruncatedOutput.d.ts.map +1 -0
  122. package/dist/cjs/TruncatedOutput.js +143 -0
  123. package/dist/cjs/TruncatedOutput.js.map +7 -0
  124. package/dist/cjs/UnmovedTree.d.ts +113 -0
  125. package/dist/cjs/UnmovedTree.d.ts.map +1 -0
  126. package/dist/cjs/UnmovedTree.js +38 -0
  127. package/dist/cjs/UnmovedTree.js.map +7 -0
  128. package/dist/cjs/UnresolvedFailure.d.ts +196 -0
  129. package/dist/cjs/UnresolvedFailure.d.ts.map +1 -0
  130. package/dist/cjs/UnresolvedFailure.js +77 -0
  131. package/dist/cjs/UnresolvedFailure.js.map +7 -0
  132. package/dist/cjs/VacuousVerification.d.ts +237 -0
  133. package/dist/cjs/VacuousVerification.d.ts.map +1 -0
  134. package/dist/cjs/VacuousVerification.js +91 -0
  135. package/dist/cjs/VacuousVerification.js.map +7 -0
  136. package/dist/cjs/VariablesPanel.d.ts +117 -0
  137. package/dist/cjs/VariablesPanel.d.ts.map +1 -0
  138. package/dist/cjs/VariablesPanel.js +108 -0
  139. package/dist/cjs/VariablesPanel.js.map +7 -0
  140. package/dist/cjs/index.d.ts +172 -0
  141. package/dist/cjs/index.d.ts.map +1 -0
  142. package/dist/cjs/index.js +99 -0
  143. package/dist/cjs/index.js.map +7 -0
  144. package/dist/cjs/internal/bytes.d.ts +36 -0
  145. package/dist/cjs/internal/bytes.d.ts.map +1 -0
  146. package/dist/cjs/internal/bytes.js +57 -0
  147. package/dist/cjs/internal/bytes.js.map +7 -0
  148. package/dist/cjs/internal/cellPrompt.d.ts +122 -0
  149. package/dist/cjs/internal/cellPrompt.d.ts.map +1 -0
  150. package/dist/cjs/internal/cellPrompt.js +146 -0
  151. package/dist/cjs/internal/cellPrompt.js.map +7 -0
  152. package/dist/cjs/internal/compactable.d.ts +44 -0
  153. package/dist/cjs/internal/compactable.d.ts.map +1 -0
  154. package/dist/cjs/internal/compactable.js +56 -0
  155. package/dist/cjs/internal/compactable.js.map +7 -0
  156. package/dist/cjs/internal/compactionMarks.d.ts +278 -0
  157. package/dist/cjs/internal/compactionMarks.d.ts.map +1 -0
  158. package/dist/cjs/internal/compactionMarks.js +212 -0
  159. package/dist/cjs/internal/compactionMarks.js.map +7 -0
  160. package/dist/cjs/internal/demandText.d.ts +95 -0
  161. package/dist/cjs/internal/demandText.d.ts.map +1 -0
  162. package/dist/cjs/internal/demandText.js +70 -0
  163. package/dist/cjs/internal/demandText.js.map +7 -0
  164. package/dist/cjs/internal/elide.d.ts +109 -0
  165. package/dist/cjs/internal/elide.d.ts.map +1 -0
  166. package/dist/cjs/internal/elide.js +59 -0
  167. package/dist/cjs/internal/elide.js.map +7 -0
  168. package/dist/cjs/internal/frame.d.ts +463 -0
  169. package/dist/cjs/internal/frame.d.ts.map +1 -0
  170. package/dist/cjs/internal/frame.js +514 -0
  171. package/dist/cjs/internal/frame.js.map +7 -0
  172. package/dist/cjs/internal/nonNegativeSafeInt.d.ts +20 -0
  173. package/dist/cjs/internal/nonNegativeSafeInt.d.ts.map +1 -0
  174. package/dist/cjs/internal/nonNegativeSafeInt.js +29 -0
  175. package/dist/cjs/internal/nonNegativeSafeInt.js.map +7 -0
  176. package/dist/cjs/internal/paidUsage.d.ts +52 -0
  177. package/dist/cjs/internal/paidUsage.d.ts.map +1 -0
  178. package/dist/cjs/internal/paidUsage.js +70 -0
  179. package/dist/cjs/internal/paidUsage.js.map +7 -0
  180. package/dist/cjs/internal/printChannel.d.ts +233 -0
  181. package/dist/cjs/internal/printChannel.d.ts.map +1 -0
  182. package/dist/cjs/internal/printChannel.js +165 -0
  183. package/dist/cjs/internal/printChannel.js.map +7 -0
  184. package/dist/cjs/internal/printsObservation.d.ts +26 -0
  185. package/dist/cjs/internal/printsObservation.d.ts.map +1 -0
  186. package/dist/cjs/internal/printsObservation.js +27 -0
  187. package/dist/cjs/internal/printsObservation.js.map +7 -0
  188. package/dist/cjs/internal/refusal.d.ts +40 -0
  189. package/dist/cjs/internal/refusal.d.ts.map +1 -0
  190. package/dist/cjs/internal/refusal.js +45 -0
  191. package/dist/cjs/internal/refusal.js.map +7 -0
  192. package/dist/cjs/internal/supervision.d.ts +174 -0
  193. package/dist/cjs/internal/supervision.d.ts.map +1 -0
  194. package/dist/cjs/internal/supervision.js +402 -0
  195. package/dist/cjs/internal/supervision.js.map +7 -0
  196. package/dist/cjs/internal/unfinishedWork.d.ts +99 -0
  197. package/dist/cjs/internal/unfinishedWork.d.ts.map +1 -0
  198. package/dist/cjs/internal/unfinishedWork.js +80 -0
  199. package/dist/cjs/internal/unfinishedWork.js.map +7 -0
  200. package/dist/cjs/internal/unobservedCall.d.ts +112 -0
  201. package/dist/cjs/internal/unobservedCall.d.ts.map +1 -0
  202. package/dist/cjs/internal/unobservedCall.js +345 -0
  203. package/dist/cjs/internal/unobservedCall.js.map +7 -0
  204. package/dist/cjs/internal/untrustedData.d.ts +14 -0
  205. package/dist/cjs/internal/untrustedData.d.ts.map +1 -0
  206. package/dist/cjs/internal/untrustedData.js +30 -0
  207. package/dist/cjs/internal/untrustedData.js.map +7 -0
  208. package/dist/cjs/package.json +1 -0
  209. package/dist/esm/AgentEvent.d.ts +3092 -0
  210. package/dist/esm/AgentEvent.d.ts.map +1 -0
  211. package/dist/esm/AgentEvent.js +1610 -0
  212. package/dist/esm/AgentEvent.js.map +1 -0
  213. package/dist/esm/CallLedger.d.ts +378 -0
  214. package/dist/esm/CallLedger.d.ts.map +1 -0
  215. package/dist/esm/CallLedger.js +506 -0
  216. package/dist/esm/CallLedger.js.map +1 -0
  217. package/dist/esm/Cell.d.ts +774 -0
  218. package/dist/esm/Cell.d.ts.map +1 -0
  219. package/dist/esm/Cell.js +772 -0
  220. package/dist/esm/Cell.js.map +1 -0
  221. package/dist/esm/CellCalls.d.ts +115 -0
  222. package/dist/esm/CellCalls.d.ts.map +1 -0
  223. package/dist/esm/CellCalls.js +97 -0
  224. package/dist/esm/CellCalls.js.map +1 -0
  225. package/dist/esm/CellHistory.d.ts +102 -0
  226. package/dist/esm/CellHistory.d.ts.map +1 -0
  227. package/dist/esm/CellHistory.js +91 -0
  228. package/dist/esm/CellHistory.js.map +1 -0
  229. package/dist/esm/CellTurn.d.ts +1071 -0
  230. package/dist/esm/CellTurn.d.ts.map +1 -0
  231. package/dist/esm/CellTurn.js +3410 -0
  232. package/dist/esm/CellTurn.js.map +1 -0
  233. package/dist/esm/CellValidation.d.ts +94 -0
  234. package/dist/esm/CellValidation.d.ts.map +1 -0
  235. package/dist/esm/CellValidation.js +335 -0
  236. package/dist/esm/CellValidation.js.map +1 -0
  237. package/dist/esm/Compaction.d.ts +158 -0
  238. package/dist/esm/Compaction.d.ts.map +1 -0
  239. package/dist/esm/Compaction.js +216 -0
  240. package/dist/esm/Compaction.js.map +1 -0
  241. package/dist/esm/CompletionClaim.d.ts +801 -0
  242. package/dist/esm/CompletionClaim.d.ts.map +1 -0
  243. package/dist/esm/CompletionClaim.js +833 -0
  244. package/dist/esm/CompletionClaim.js.map +1 -0
  245. package/dist/esm/ContextWindow.d.ts +435 -0
  246. package/dist/esm/ContextWindow.d.ts.map +1 -0
  247. package/dist/esm/ContextWindow.js +427 -0
  248. package/dist/esm/ContextWindow.js.map +1 -0
  249. package/dist/esm/EngineLike.d.ts +546 -0
  250. package/dist/esm/EngineLike.d.ts.map +1 -0
  251. package/dist/esm/EngineLike.js +218 -0
  252. package/dist/esm/EngineLike.js.map +1 -0
  253. package/dist/esm/ExternalTranscript.d.ts +349 -0
  254. package/dist/esm/ExternalTranscript.d.ts.map +1 -0
  255. package/dist/esm/ExternalTranscript.js +987 -0
  256. package/dist/esm/ExternalTranscript.js.map +1 -0
  257. package/dist/esm/FailedCall.d.ts +132 -0
  258. package/dist/esm/FailedCall.d.ts.map +1 -0
  259. package/dist/esm/FailedCall.js +131 -0
  260. package/dist/esm/FailedCall.js.map +1 -0
  261. package/dist/esm/FlowBinding.d.ts +289 -0
  262. package/dist/esm/FlowBinding.d.ts.map +1 -0
  263. package/dist/esm/FlowBinding.js +376 -0
  264. package/dist/esm/FlowBinding.js.map +1 -0
  265. package/dist/esm/HarnessError.d.ts +57 -0
  266. package/dist/esm/HarnessError.d.ts.map +1 -0
  267. package/dist/esm/HarnessError.js +85 -0
  268. package/dist/esm/HarnessError.js.map +1 -0
  269. package/dist/esm/Judgement.d.ts +289 -0
  270. package/dist/esm/Judgement.d.ts.map +1 -0
  271. package/dist/esm/Judgement.js +305 -0
  272. package/dist/esm/Judgement.js.map +1 -0
  273. package/dist/esm/Monitor.d.ts +374 -0
  274. package/dist/esm/Monitor.d.ts.map +1 -0
  275. package/dist/esm/Monitor.js +370 -0
  276. package/dist/esm/Monitor.js.map +1 -0
  277. package/dist/esm/NarrowedCheck.d.ts +523 -0
  278. package/dist/esm/NarrowedCheck.d.ts.map +1 -0
  279. package/dist/esm/NarrowedCheck.js +612 -0
  280. package/dist/esm/NarrowedCheck.js.map +1 -0
  281. package/dist/esm/Notifications.d.ts +42 -0
  282. package/dist/esm/Notifications.d.ts.map +1 -0
  283. package/dist/esm/Notifications.js +215 -0
  284. package/dist/esm/Notifications.js.map +1 -0
  285. package/dist/esm/Plan.d.ts +127 -0
  286. package/dist/esm/Plan.d.ts.map +1 -0
  287. package/dist/esm/Plan.js +97 -0
  288. package/dist/esm/Plan.js.map +1 -0
  289. package/dist/esm/QuickJSSandbox.d.ts +151 -0
  290. package/dist/esm/QuickJSSandbox.d.ts.map +1 -0
  291. package/dist/esm/QuickJSSandbox.js +1364 -0
  292. package/dist/esm/QuickJSSandbox.js.map +1 -0
  293. package/dist/esm/Relevance.d.ts +213 -0
  294. package/dist/esm/Relevance.d.ts.map +1 -0
  295. package/dist/esm/Relevance.js +254 -0
  296. package/dist/esm/Relevance.js.map +1 -0
  297. package/dist/esm/Sandbox.d.ts +637 -0
  298. package/dist/esm/Sandbox.d.ts.map +1 -0
  299. package/dist/esm/Sandbox.js +464 -0
  300. package/dist/esm/Sandbox.js.map +1 -0
  301. package/dist/esm/Steering.d.ts +464 -0
  302. package/dist/esm/Steering.d.ts.map +1 -0
  303. package/dist/esm/Steering.js +193 -0
  304. package/dist/esm/Steering.js.map +1 -0
  305. package/dist/esm/StructuredOutput.d.ts +252 -0
  306. package/dist/esm/StructuredOutput.d.ts.map +1 -0
  307. package/dist/esm/StructuredOutput.js +430 -0
  308. package/dist/esm/StructuredOutput.js.map +1 -0
  309. package/dist/esm/Sufficiency.d.ts +195 -0
  310. package/dist/esm/Sufficiency.d.ts.map +1 -0
  311. package/dist/esm/Sufficiency.js +207 -0
  312. package/dist/esm/Sufficiency.js.map +1 -0
  313. package/dist/esm/Supervisor.d.ts +719 -0
  314. package/dist/esm/Supervisor.d.ts.map +1 -0
  315. package/dist/esm/Supervisor.js +575 -0
  316. package/dist/esm/Supervisor.js.map +1 -0
  317. package/dist/esm/Tokens.d.ts +86 -0
  318. package/dist/esm/Tokens.d.ts.map +1 -0
  319. package/dist/esm/Tokens.js +92 -0
  320. package/dist/esm/Tokens.js.map +1 -0
  321. package/dist/esm/Transcript.d.ts +171 -0
  322. package/dist/esm/Transcript.d.ts.map +1 -0
  323. package/dist/esm/Transcript.js +424 -0
  324. package/dist/esm/Transcript.js.map +1 -0
  325. package/dist/esm/TruncatedOutput.d.ts +186 -0
  326. package/dist/esm/TruncatedOutput.d.ts.map +1 -0
  327. package/dist/esm/TruncatedOutput.js +257 -0
  328. package/dist/esm/TruncatedOutput.js.map +1 -0
  329. package/dist/esm/UnmovedTree.d.ts +113 -0
  330. package/dist/esm/UnmovedTree.d.ts.map +1 -0
  331. package/dist/esm/UnmovedTree.js +90 -0
  332. package/dist/esm/UnmovedTree.js.map +1 -0
  333. package/dist/esm/UnresolvedFailure.d.ts +196 -0
  334. package/dist/esm/UnresolvedFailure.d.ts.map +1 -0
  335. package/dist/esm/UnresolvedFailure.js +218 -0
  336. package/dist/esm/UnresolvedFailure.js.map +1 -0
  337. package/dist/esm/VacuousVerification.d.ts +237 -0
  338. package/dist/esm/VacuousVerification.d.ts.map +1 -0
  339. package/dist/esm/VacuousVerification.js +245 -0
  340. package/dist/esm/VacuousVerification.js.map +1 -0
  341. package/dist/esm/VariablesPanel.d.ts +117 -0
  342. package/dist/esm/VariablesPanel.d.ts.map +1 -0
  343. package/dist/esm/VariablesPanel.js +142 -0
  344. package/dist/esm/VariablesPanel.js.map +1 -0
  345. package/dist/esm/index.d.ts +172 -0
  346. package/dist/esm/index.d.ts.map +1 -0
  347. package/dist/esm/index.js +172 -0
  348. package/dist/esm/index.js.map +1 -0
  349. package/dist/esm/internal/bytes.d.ts +36 -0
  350. package/dist/esm/internal/bytes.d.ts.map +1 -0
  351. package/dist/esm/internal/bytes.js +70 -0
  352. package/dist/esm/internal/bytes.js.map +1 -0
  353. package/dist/esm/internal/cellPrompt.d.ts +122 -0
  354. package/dist/esm/internal/cellPrompt.d.ts.map +1 -0
  355. package/dist/esm/internal/cellPrompt.js +276 -0
  356. package/dist/esm/internal/cellPrompt.js.map +1 -0
  357. package/dist/esm/internal/compactable.d.ts +44 -0
  358. package/dist/esm/internal/compactable.d.ts.map +1 -0
  359. package/dist/esm/internal/compactable.js +71 -0
  360. package/dist/esm/internal/compactable.js.map +1 -0
  361. package/dist/esm/internal/compactionMarks.d.ts +278 -0
  362. package/dist/esm/internal/compactionMarks.d.ts.map +1 -0
  363. package/dist/esm/internal/compactionMarks.js +317 -0
  364. package/dist/esm/internal/compactionMarks.js.map +1 -0
  365. package/dist/esm/internal/demandText.d.ts +95 -0
  366. package/dist/esm/internal/demandText.d.ts.map +1 -0
  367. package/dist/esm/internal/demandText.js +128 -0
  368. package/dist/esm/internal/demandText.js.map +1 -0
  369. package/dist/esm/internal/elide.d.ts +109 -0
  370. package/dist/esm/internal/elide.d.ts.map +1 -0
  371. package/dist/esm/internal/elide.js +123 -0
  372. package/dist/esm/internal/elide.js.map +1 -0
  373. package/dist/esm/internal/frame.d.ts +463 -0
  374. package/dist/esm/internal/frame.d.ts.map +1 -0
  375. package/dist/esm/internal/frame.js +861 -0
  376. package/dist/esm/internal/frame.js.map +1 -0
  377. package/dist/esm/internal/nonNegativeSafeInt.d.ts +20 -0
  378. package/dist/esm/internal/nonNegativeSafeInt.d.ts.map +1 -0
  379. package/dist/esm/internal/nonNegativeSafeInt.js +20 -0
  380. package/dist/esm/internal/nonNegativeSafeInt.js.map +1 -0
  381. package/dist/esm/internal/paidUsage.d.ts +52 -0
  382. package/dist/esm/internal/paidUsage.d.ts.map +1 -0
  383. package/dist/esm/internal/paidUsage.js +72 -0
  384. package/dist/esm/internal/paidUsage.js.map +1 -0
  385. package/dist/esm/internal/printChannel.d.ts +233 -0
  386. package/dist/esm/internal/printChannel.d.ts.map +1 -0
  387. package/dist/esm/internal/printChannel.js +376 -0
  388. package/dist/esm/internal/printChannel.js.map +1 -0
  389. package/dist/esm/internal/printsObservation.d.ts +26 -0
  390. package/dist/esm/internal/printsObservation.d.ts.map +1 -0
  391. package/dist/esm/internal/printsObservation.js +29 -0
  392. package/dist/esm/internal/printsObservation.js.map +1 -0
  393. package/dist/esm/internal/refusal.d.ts +40 -0
  394. package/dist/esm/internal/refusal.d.ts.map +1 -0
  395. package/dist/esm/internal/refusal.js +47 -0
  396. package/dist/esm/internal/refusal.js.map +1 -0
  397. package/dist/esm/internal/supervision.d.ts +174 -0
  398. package/dist/esm/internal/supervision.d.ts.map +1 -0
  399. package/dist/esm/internal/supervision.js +485 -0
  400. package/dist/esm/internal/supervision.js.map +1 -0
  401. package/dist/esm/internal/unfinishedWork.d.ts +99 -0
  402. package/dist/esm/internal/unfinishedWork.d.ts.map +1 -0
  403. package/dist/esm/internal/unfinishedWork.js +85 -0
  404. package/dist/esm/internal/unfinishedWork.js.map +1 -0
  405. package/dist/esm/internal/unobservedCall.d.ts +112 -0
  406. package/dist/esm/internal/unobservedCall.d.ts.map +1 -0
  407. package/dist/esm/internal/unobservedCall.js +501 -0
  408. package/dist/esm/internal/unobservedCall.js.map +1 -0
  409. package/dist/esm/internal/untrustedData.d.ts +14 -0
  410. package/dist/esm/internal/untrustedData.d.ts.map +1 -0
  411. package/dist/esm/internal/untrustedData.js +15 -0
  412. package/dist/esm/internal/untrustedData.js.map +1 -0
  413. package/docs/README.md +129 -0
  414. package/docs/api.md +1869 -0
  415. package/docs/concepts.md +238 -0
  416. package/docs/external-transcripts.md +245 -0
  417. package/docs/guides/bind-flows.md +167 -0
  418. package/docs/guides/drive-the-loop.md +265 -0
  419. package/docs/guides/run-cells.md +262 -0
  420. package/docs/guides/workerd.md +144 -0
  421. package/docs/installation.md +69 -0
  422. package/docs/quickstart.md +121 -0
  423. package/docs/reference.md +954 -0
  424. package/docs/troubleshooting.md +177 -0
  425. package/package.json +463 -3
  426. package/src/AgentEvent.ts +1772 -0
  427. package/src/CallLedger.ts +560 -0
  428. package/src/Cell.ts +926 -0
  429. package/src/CellCalls.ts +198 -0
  430. package/src/CellHistory.ts +128 -0
  431. package/src/CellTurn.ts +4450 -0
  432. package/src/CellValidation.ts +382 -0
  433. package/src/Compaction.ts +330 -0
  434. package/src/CompletionClaim.ts +1013 -0
  435. package/src/ContextWindow.ts +669 -0
  436. package/src/EngineLike.ts +614 -0
  437. package/src/ExternalTranscript.ts +1143 -0
  438. package/src/FailedCall.ts +163 -0
  439. package/src/FlowBinding.ts +603 -0
  440. package/src/HarnessError.ts +98 -0
  441. package/src/Judgement.ts +526 -0
  442. package/src/Monitor.ts +579 -0
  443. package/src/NarrowedCheck.ts +694 -0
  444. package/src/Notifications.ts +262 -0
  445. package/src/Plan.ts +113 -0
  446. package/src/QuickJSSandbox.ts +1557 -0
  447. package/src/Relevance.ts +352 -0
  448. package/src/Sandbox.ts +908 -0
  449. package/src/Steering.ts +405 -0
  450. package/src/StructuredOutput.ts +484 -0
  451. package/src/Sufficiency.ts +247 -0
  452. package/src/Supervisor.ts +798 -0
  453. package/src/Tokens.ts +108 -0
  454. package/src/Transcript.ts +513 -0
  455. package/src/TruncatedOutput.ts +297 -0
  456. package/src/UnmovedTree.ts +121 -0
  457. package/src/UnresolvedFailure.ts +240 -0
  458. package/src/VacuousVerification.ts +280 -0
  459. package/src/VariablesPanel.ts +165 -0
  460. package/src/index.ts +204 -0
  461. package/src/internal/bytes.ts +70 -0
  462. package/src/internal/cellPrompt.ts +337 -0
  463. package/src/internal/compactable.ts +76 -0
  464. package/src/internal/compactionMarks.ts +454 -0
  465. package/src/internal/demandText.ts +145 -0
  466. package/src/internal/elide.ts +130 -0
  467. package/src/internal/frame.ts +1178 -0
  468. package/src/internal/nonNegativeSafeInt.ts +24 -0
  469. package/src/internal/paidUsage.ts +90 -0
  470. package/src/internal/printChannel.ts +434 -0
  471. package/src/internal/printsObservation.ts +31 -0
  472. package/src/internal/refusal.ts +53 -0
  473. package/src/internal/supervision.ts +652 -0
  474. package/src/internal/unfinishedWork.ts +123 -0
  475. package/src/internal/unobservedCall.ts +536 -0
  476. package/src/internal/untrustedData.ts +19 -0
@@ -0,0 +1,427 @@
1
+ /**
2
+ * The immutable, provider-neutral context assembled for one model request.
3
+ * Every value it exposes is frozen — the arrays, the segments, and the
4
+ * messages, parts and tool declarations they hold — so a runtime mutation
5
+ * throws in strict mode instead of silently invalidating the cached digest.
6
+ *
7
+ * Governing design: `../docs/concepts.md#context-window`.
8
+ *
9
+ * @since 0.1.0
10
+ */
11
+ import * as Digest from "@smthrs/core/Digest";
12
+ import * as Fault from "@smthrs/flow/Fault";
13
+ import * as CanonicalJson from "@smthrs/model/CanonicalJson";
14
+ import * as ModelRequest from "@smthrs/model/ModelRequest";
15
+ import { dual } from "effect/Function";
16
+ import { pipeArguments } from "effect/Pipeable";
17
+ import * as Result from "effect/Result";
18
+ import * as Schema from "effect/Schema";
19
+ import { compactable } from "./internal/compactable.js";
20
+ import * as Tokens from "./Tokens.js";
21
+ /**
22
+ * The brand a {@link ContextWindow} carries so a structurally similar
23
+ * object cannot pass for one.
24
+ *
25
+ * @category type ids
26
+ * @since 0.1.0
27
+ * @slop
28
+ */
29
+ export const TypeId = "~flows/harness/ContextWindow";
30
+ /**
31
+ * What a segment holds. The kind fixes where the segment may sit and
32
+ * whether compaction is allowed to replace it.
33
+ *
34
+ * @category models
35
+ * @since 0.1.0
36
+ * @slop
37
+ */
38
+ export const SegmentKind = Schema.Literals([
39
+ "system",
40
+ "instructions",
41
+ "registry",
42
+ "tools",
43
+ "transcript",
44
+ "summary",
45
+ "steering"
46
+ ]);
47
+ /**
48
+ * Where a segment sits relative to the cache breakpoint. `prefix` segments
49
+ * are stable across turns; `tail` segments change every turn.
50
+ *
51
+ * @category models
52
+ * @since 0.1.0
53
+ * @slop
54
+ */
55
+ export const SegmentZone = Schema.Literals(["prefix", "tail"]);
56
+ /**
57
+ * The parts a segment may hold: system text, transcript messages, and tool
58
+ * declarations, in the provider-neutral vocabulary of `@smthrs/model`.
59
+ *
60
+ * @category models
61
+ * @since 0.1.0
62
+ * @slop
63
+ */
64
+ export const Content = Schema.Array(Schema.Union([ModelRequest.SystemPart, ModelRequest.Message, ModelRequest.ToolDefinition]));
65
+ /**
66
+ * What a compaction does with one prefix segment: `keep` it as it is,
67
+ * `squash` it into the summary, or `remove` it outright.
68
+ *
69
+ * @category models
70
+ * @since 1.0.0-rc.0
71
+ */
72
+ export const Mark = Schema.Literals(["keep", "squash", "remove"]);
73
+ /**
74
+ * The failure vocabulary of a context window operation.
75
+ *
76
+ * @category models
77
+ * @since 0.1.0
78
+ * @slop
79
+ */
80
+ export const ContextWindowErrorCode = Schema.Literals(["invalid_compaction_prefix", "invalid_compaction_marks"]);
81
+ /** Stable failure returned for an invalid public compaction prefix.
82
+ * @category errors
83
+ * @since 0.1.0
84
+ * @slop
85
+ */
86
+ export class ContextWindowError extends Schema.TaggedError()("flows/harness/ContextWindowError", {
87
+ code: ContextWindowErrorCode,
88
+ message: Schema.String
89
+ }) {
90
+ }
91
+ Fault.register("flows/harness/ContextWindowError", {
92
+ invalid_compaction_prefix: "bug",
93
+ invalid_compaction_marks: "bug"
94
+ });
95
+ /** A stable, typed slice of the model-visible context.
96
+ * @category models
97
+ * @since 0.1.0
98
+ * @slop
99
+ */
100
+ export class Segment extends Schema.Class("flows/harness/ContextWindow/Segment")({
101
+ kind: SegmentKind,
102
+ zone: SegmentZone,
103
+ digest: Schema.String,
104
+ tokens: Tokens.Count,
105
+ content: Content
106
+ }) {
107
+ }
108
+ /**
109
+ * One assembled, immutable model context: its ordered segments, the tools
110
+ * currently active, and the token accounting for both. Every combinator
111
+ * returns a new window rather than mutating this one.
112
+ *
113
+ * @category models
114
+ * @since 0.1.0
115
+ * @slop
116
+ */
117
+ export class ContextWindow extends Schema.Class("flows/harness/ContextWindow")({
118
+ modelId: Schema.String,
119
+ segments: Schema.Array(Segment),
120
+ activeTools: Schema.Array(Schema.String),
121
+ replaced: Schema.optional(Schema.String),
122
+ digest: Schema.String,
123
+ tokens: Tokens.Accounting
124
+ }) {
125
+ [TypeId] = TypeId;
126
+ pipe(..._operators) {
127
+ // eslint-disable-next-line prefer-rest-params -- matches Effect's Pipeable implementation
128
+ return pipeArguments(this, arguments);
129
+ }
130
+ /** @category constructors @since 0.1.0 */
131
+ static make(input) {
132
+ return construct(input);
133
+ }
134
+ /** @category constructors @since 0.1.0 */
135
+ static empty(modelId) {
136
+ return empty(modelId);
137
+ }
138
+ /** @category combinators @since 0.1.0 */
139
+ static appendTurn(self, assistantMessage) {
140
+ return appendTurn(self, assistantMessage);
141
+ }
142
+ /** @category combinators @since 0.1.0 */
143
+ static compact(self, summary) {
144
+ return compact(self, summary);
145
+ }
146
+ /** @category conversions @since 0.1.0 */
147
+ static render(self) {
148
+ return render(self);
149
+ }
150
+ }
151
+ const isSegment = (value) => value instanceof Segment;
152
+ const jsonValue = (value) => {
153
+ if (Array.isArray(value))
154
+ return value.map(jsonValue);
155
+ if (value !== null && typeof value === "object") {
156
+ return Object.fromEntries(Object.entries(value)
157
+ .filter(([, member]) => member !== undefined)
158
+ .map(([key, member]) => [key, jsonValue(member)]));
159
+ }
160
+ return value;
161
+ };
162
+ /**
163
+ * What a segment is estimated from: its content, less every thinking part's
164
+ * `signature`. A signature is opaque replay state, not context the provider
165
+ * bills: on the ChatGPT route it is the whole encrypted reasoning item, often
166
+ * larger than the turn's visible text, and counting it compacted a 400k-window
167
+ * run at 31k to 41k billed input tokens (Terminal-Bench 4.0,
168
+ * mp-checkpoint-consolidation, 2026-09-24). The digest still covers it.
169
+ */
170
+ const withoutSignatures = (value) => {
171
+ if (Array.isArray(value))
172
+ return value.map(withoutSignatures);
173
+ if (value !== null && typeof value === "object") {
174
+ const record = value;
175
+ return Object.fromEntries(Object.entries(record)
176
+ .filter(([key]) => !(record.type === "thinking" && key === "signature"))
177
+ .map(([key, member]) => [key, withoutSignatures(member)]));
178
+ }
179
+ return value;
180
+ };
181
+ const segmentText = (content) => CanonicalJson.stringify(withoutSignatures(jsonValue(content)));
182
+ const digest = (value) => Digest.digest(CanonicalJson.stringify(value));
183
+ /** Every node in every graph this module has undertaken to freeze whole. */
184
+ const frozenWhole = new WeakSet();
185
+ /**
186
+ * Freezes one value and everything reachable from it.
187
+ *
188
+ * Freezing only the outer array kept the immutability promise for
189
+ * `segments.push` and left `segments[0].content[0].content[0].text = "…"`
190
+ * silent. A segment's digest is taken once, at construction, so a message or a
191
+ * part edited in place afterwards renders content the window's own identity no
192
+ * longer describes — and that identity is what the sealed step is keyed on.
193
+ *
194
+ * The module's own memo ends the walk. A value a caller froze is evidence only
195
+ * that node cannot change, not that every descendant was frozen with it; a
196
+ * segment this module already walked, on the other hand, can be reused across
197
+ * turns in O(1). Recording a node before descending also makes a cycle end at
198
+ * its first repeated edge.
199
+ *
200
+ * Members are limited to own enumerable string keys, as they were when this
201
+ * walk used `Object.values`, but each one is read through its own descriptor.
202
+ * An accessor is caller code, not data the freeze walk may execute.
203
+ */
204
+ const freezeDeep = (value) => {
205
+ if (value === null || typeof value !== "object" || frozenWhole.has(value))
206
+ return;
207
+ // Recorded before the walk, so a graph that points at itself ends it.
208
+ frozenWhole.add(value);
209
+ Object.freeze(value);
210
+ for (const key of Object.keys(value)) {
211
+ const property = Object.getOwnPropertyDescriptor(value, key);
212
+ if (property !== undefined && "value" in property)
213
+ freezeDeep(property.value);
214
+ }
215
+ };
216
+ /** Creates one segment, computing its identity and estimated token count.
217
+ * @category constructors
218
+ * @since 0.1.0
219
+ * @slop
220
+ */
221
+ export const makeSegment = (input) => {
222
+ if (isSegment(input)) {
223
+ freezeDeep(input.content);
224
+ return input;
225
+ }
226
+ const content = [...input.content];
227
+ freezeDeep(content);
228
+ const segment = new Segment({
229
+ kind: input.kind,
230
+ zone: input.zone,
231
+ digest: digest({
232
+ kind: input.kind,
233
+ zone: input.zone,
234
+ content: jsonValue(content),
235
+ ...(input.declaredDigest === undefined ? {} : { declaredDigest: input.declaredDigest })
236
+ }),
237
+ tokens: input.tokens ?? Tokens.count(segmentText(content)),
238
+ content
239
+ });
240
+ freezeDeep(segment.content);
241
+ return segment;
242
+ };
243
+ const unique = (values) => {
244
+ const seen = new Set();
245
+ return values.filter((value) => {
246
+ const normalized = value.trim().toLowerCase();
247
+ return normalized !== "" && !seen.has(normalized) && (seen.add(normalized), true);
248
+ });
249
+ };
250
+ const windowDigest = (modelId, segments, activeTools, replaced) => digest({
251
+ modelId,
252
+ segments: segments.map((segment) => segment.digest),
253
+ activeTools,
254
+ ...(replaced === undefined ? {} : { replaced })
255
+ });
256
+ const construct = (options) => {
257
+ const segments = (options.segments ?? []).map(makeSegment);
258
+ const activeTools = unique(options.activeTools ?? []);
259
+ const window = new ContextWindow({
260
+ modelId: options.modelId,
261
+ segments,
262
+ activeTools,
263
+ replaced: options.replaced,
264
+ digest: windowDigest(options.modelId, segments, activeTools, options.replaced),
265
+ tokens: Tokens.combine(segments.map((segment) => new Tokens.Segment({
266
+ digest: segment.digest,
267
+ zone: segment.zone,
268
+ tokens: segment.tokens
269
+ })))
270
+ });
271
+ // The whole window, not its two outer arrays: a segment, a message, a part
272
+ // and the token accounting are all values a caller holds a reference to, and
273
+ // the digest above was taken over every one of them.
274
+ freezeDeep(window);
275
+ return window;
276
+ };
277
+ /** Constructs a window from already-derived values.
278
+ * @category constructors
279
+ * @since 0.1.0
280
+ * @slop
281
+ */
282
+ export const make = (options) => construct(options);
283
+ /** Constructs an empty context window for a model.
284
+ * @category constructors
285
+ * @since 0.1.0
286
+ * @slop
287
+ */
288
+ export const empty = (modelId) => make({ modelId });
289
+ /** Appends one settled assistant message.
290
+ *
291
+ * @category combinators
292
+ * @since 0.1.0
293
+ * @slop
294
+ */
295
+ export const appendTurn = dual(2, (self, assistantMessage) => construct({
296
+ modelId: self.modelId,
297
+ segments: [
298
+ ...self.segments,
299
+ makeSegment({ kind: "transcript", zone: "tail", content: [assistantMessage] })
300
+ ],
301
+ activeTools: self.activeTools,
302
+ replaced: self.replaced
303
+ }));
304
+ const summaryMessages = (summary) => {
305
+ const messages = Array.isArray(summary)
306
+ ? summary
307
+ : [summary];
308
+ return messages.map((message) => message.role === "user"
309
+ ? message
310
+ : ModelRequest.Message.user(message.content.filter((part) => part.type === "text")));
311
+ };
312
+ const selectedPrefix = (self, prefixLength) => {
313
+ if (!Number.isSafeInteger(prefixLength) || prefixLength < 0) {
314
+ return Result.fail(new ContextWindowError({
315
+ code: "invalid_compaction_prefix",
316
+ message: "Compaction prefix length must be a non-negative safe integer"
317
+ }));
318
+ }
319
+ const segments = compactable(self.segments);
320
+ if (prefixLength > segments.length) {
321
+ return Result.fail(new ContextWindowError({
322
+ code: "invalid_compaction_prefix",
323
+ message: "Compaction prefix length exceeds the compactable context"
324
+ }));
325
+ }
326
+ return Result.succeed(segments.slice(0, prefixLength));
327
+ };
328
+ /**
329
+ * Computes the declared identity of an exact compactable prefix.
330
+ *
331
+ * @category conversions
332
+ * @since 0.1.0
333
+ * @slop
334
+ */
335
+ export const prefixDigest = (self, prefixLength) => Result.map(selectedPrefix(self, prefixLength), (segments) => digest(segments.map((segment) => segment.digest)));
336
+ const marksError = (message) => Result.fail(new ContextWindowError({ code: "invalid_compaction_marks", message }));
337
+ /**
338
+ * Compacts an exact compactable prefix by its marks, one per prefix segment.
339
+ *
340
+ * The result holds, in order: the segments before the prefix; one `summary`
341
+ * segment of `summary` when any segment is squashed; the kept segments, as
342
+ * the same objects, so their digests are stable; then the suffix. Removed
343
+ * segments are dropped. `summary` is required exactly when a segment is
344
+ * squashed.
345
+ *
346
+ * @category combinators
347
+ * @since 1.0.0-rc.0
348
+ */
349
+ export const compactMarked = (self, prefixLength, marks, summary) => Result.gen(function* () {
350
+ const replacedSegments = yield* selectedPrefix(self, prefixLength);
351
+ if (marks.length !== replacedSegments.length) {
352
+ return yield* marksError("Compaction marks must name every prefix segment once");
353
+ }
354
+ if (marks.includes("squash") !== (summary !== undefined)) {
355
+ return yield* marksError("A compaction summary is required exactly when a prefix segment is squashed");
356
+ }
357
+ if (replacedSegments.length === 0)
358
+ return self;
359
+ const replaced = digest(replacedSegments.map((segment) => segment.digest));
360
+ const positions = self.segments.flatMap((segment, index) => compactable([segment]).length === 0 ? [] : [index])
361
+ .slice(0, prefixLength);
362
+ const first = positions[0];
363
+ const selected = new Set(positions);
364
+ const segments = [
365
+ ...self.segments.slice(0, first),
366
+ ...(summary === undefined ? [] : [
367
+ makeSegment({ kind: "summary", zone: "tail", content: summaryMessages(summary) })
368
+ ]),
369
+ ...replacedSegments.filter((_, index) => marks[index] === "keep"),
370
+ ...self.segments.slice(first).filter((_, index) => !selected.has(first + index))
371
+ ];
372
+ return construct({ modelId: self.modelId, segments, activeTools: self.activeTools, replaced });
373
+ });
374
+ /**
375
+ * Replaces an exact compactable prefix while retaining every suffix segment:
376
+ * {@link compactMarked} with every segment squashed.
377
+ *
378
+ * @category combinators
379
+ * @since 0.1.0
380
+ * @slop
381
+ */
382
+ export const compactPrefix = (self, prefixLength, summary) => Result.flatMap(selectedPrefix(self, prefixLength), (replacedSegments) => compactMarked(self, prefixLength, replacedSegments.map(() => "squash"), replacedSegments.length === 0 ? undefined : summary));
383
+ /** Replaces the compactable transcript prefix with a summary segment.
384
+ *
385
+ * The most recent transcript segment remains the suffix, so a compacted
386
+ * projection renders summary first followed by the un-compacted tail.
387
+ *
388
+ * @category combinators
389
+ * @since 0.1.0
390
+ * @slop
391
+ */
392
+ export const compact = dual(2, (self, summary) => {
393
+ const segments = compactable(self.segments);
394
+ const prefixLength = segments.length > 1 ? segments.length - 1 : segments.length;
395
+ return compactPrefix(self, prefixLength, summary);
396
+ });
397
+ /** Renders this provider-neutral value into a model request.
398
+ * @category conversions
399
+ * @since 0.1.0
400
+ * @slop
401
+ */
402
+ export const render = (self) => {
403
+ const system = [];
404
+ const messages = [];
405
+ const definitions = new Map();
406
+ const definitionKey = (name) => name.trim().toLowerCase();
407
+ for (const segment of self.segments) {
408
+ for (const item of segment.content) {
409
+ if ("role" in item)
410
+ messages.push(item);
411
+ else if ("name" in item)
412
+ definitions.set(definitionKey(item.name), item);
413
+ else
414
+ system.push(item);
415
+ }
416
+ }
417
+ const active = new Set(self.activeTools.map(definitionKey));
418
+ const tools = [...definitions.values()].filter((definition) => definition.deferred === true || active.has(definitionKey(definition.name)));
419
+ return ModelRequest.ModelRequest.make({
420
+ modelId: self.modelId,
421
+ system,
422
+ messages,
423
+ tools,
424
+ params: ModelRequest.GenerationParams.make()
425
+ });
426
+ };
427
+ //# sourceMappingURL=ContextWindow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextWindow.js","sourceRoot":"","sources":["../../src/ContextWindow.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The immutable, provider-neutral context assembled for one model request.\n * Every value it exposes is frozen — the arrays, the segments, and the\n * messages, parts and tool declarations they hold — so a runtime mutation\n * throws in strict mode instead of silently invalidating the cached digest.\n *\n * Governing design: `../docs/concepts.md#context-window`.\n *\n * @since 0.1.0\n */\n\nimport * as Digest from \"@smthrs/core/Digest\"\nimport * as Fault from \"@smthrs/flow/Fault\"\nimport * as CanonicalJson from \"@smthrs/model/CanonicalJson\"\nimport * as ModelRequest from \"@smthrs/model/ModelRequest\"\nimport { dual } from \"effect/Function\"\nimport { type Pipeable, pipeArguments } from \"effect/Pipeable\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\nimport { compactable } from \"./internal/compactable.ts\"\nimport * as Tokens from \"./Tokens.ts\"\n\n/**\n * The brand a {@link ContextWindow} carries so a structurally similar\n * object cannot pass for one.\n *\n * @category type ids\n * @since 0.1.0\n * @slop\n */\nexport const TypeId = \"~flows/harness/ContextWindow\" as const\n\n/**\n * The type of {@link TypeId}.\n *\n * @category type ids\n * @since 0.1.0\n * @slop\n */\nexport type TypeId = typeof TypeId\n\n/**\n * What a segment holds. The kind fixes where the segment may sit and\n * whether compaction is allowed to replace it.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport const SegmentKind = Schema.Literals([\n \"system\",\n \"instructions\",\n \"registry\",\n \"tools\",\n \"transcript\",\n \"summary\",\n \"steering\"\n])\n\n/**\n * The decoded form of {@link SegmentKind}.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport type SegmentKind = typeof SegmentKind.Type\n\n/**\n * Where a segment sits relative to the cache breakpoint. `prefix` segments\n * are stable across turns; `tail` segments change every turn.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport const SegmentZone = Schema.Literals([\"prefix\", \"tail\"])\n\n/**\n * The decoded form of {@link SegmentZone}.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport type SegmentZone = typeof SegmentZone.Type\n\n/**\n * The parts a segment may hold: system text, transcript messages, and tool\n * declarations, in the provider-neutral vocabulary of `@smthrs/model`.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport const Content = Schema.Array(\n Schema.Union([ModelRequest.SystemPart, ModelRequest.Message, ModelRequest.ToolDefinition])\n)\n\n/**\n * The decoded form of {@link Content}.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport type Content = typeof Content.Type\n\n/**\n * What a compaction does with one prefix segment: `keep` it as it is,\n * `squash` it into the summary, or `remove` it outright.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport const Mark = Schema.Literals([\"keep\", \"squash\", \"remove\"])\n\n/**\n * The decoded form of {@link Mark}.\n *\n * @category models\n * @since 1.0.0-rc.0\n */\nexport type Mark = typeof Mark.Type\n\n/**\n * The failure vocabulary of a context window operation.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport const ContextWindowErrorCode = Schema.Literals([\"invalid_compaction_prefix\", \"invalid_compaction_marks\"])\n\n/**\n * The decoded form of {@link ContextWindowErrorCode}.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport type ContextWindowErrorCode = typeof ContextWindowErrorCode.Type\n\n/** Stable failure returned for an invalid public compaction prefix.\n * @category errors\n * @since 0.1.0\n * @slop\n */\nexport class ContextWindowError extends Schema.TaggedError<ContextWindowError>()(\n \"flows/harness/ContextWindowError\",\n {\n code: ContextWindowErrorCode,\n message: Schema.String\n }\n) {}\nFault.register(\n \"flows/harness/ContextWindowError\",\n {\n invalid_compaction_prefix: \"bug\",\n invalid_compaction_marks: \"bug\"\n } satisfies Fault.Rows<ContextWindowErrorCode>\n)\n\n/** A stable, typed slice of the model-visible context.\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport class Segment extends Schema.Class<Segment>(\"flows/harness/ContextWindow/Segment\")({\n kind: SegmentKind,\n zone: SegmentZone,\n digest: Schema.String,\n tokens: Tokens.Count,\n content: Content\n}) {}\n\n/**\n * One assembled, immutable model context: its ordered segments, the tools\n * currently active, and the token accounting for both. Every combinator\n * returns a new window rather than mutating this one.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport class ContextWindow extends Schema.Class<ContextWindow>(\"flows/harness/ContextWindow\")({\n modelId: Schema.String,\n segments: Schema.Array(Segment),\n activeTools: Schema.Array(Schema.String),\n replaced: Schema.optional(Schema.String),\n digest: Schema.String,\n tokens: Tokens.Accounting\n}) implements Pipeable {\n readonly [TypeId] = TypeId\n\n /** Threads this window through the data-last combinators of this module.\n *\n * `window.pipe(appendTurn(message), render)` is `render(appendTurn(window, message))`.\n *\n * @category combinators\n * @since 0.1.0\n */\n pipe<A>(this: A): A\n pipe<A, B>(this: A, ab: (_: A) => B): B\n pipe<A, B, C>(this: A, ab: (_: A) => B, bc: (_: B) => C): C\n pipe<A, B, C, D>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D\n pipe<A, B, C, D, E>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E): E\n pipe<A, B, C, D, E, F>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F\n ): F\n pipe<A, B, C, D, E, F, G>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G\n ): G\n pipe<A, B, C, D, E, F, G, H>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H\n ): H\n pipe<A, B, C, D, E, F, G, H, I>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I\n ): I\n pipe<A, B, C, D, E, F, G, H, I, J>(\n this: A,\n ab: (_: A) => B,\n bc: (_: B) => C,\n cd: (_: C) => D,\n de: (_: D) => E,\n ef: (_: E) => F,\n fg: (_: F) => G,\n gh: (_: G) => H,\n hi: (_: H) => I,\n ij: (_: I) => J\n ): J\n pipe(this: unknown, ..._operators: ReadonlyArray<(input: never) => unknown>): unknown {\n // eslint-disable-next-line prefer-rest-params -- matches Effect's Pipeable implementation\n return pipeArguments(this, arguments)\n }\n\n /** @category constructors @since 0.1.0 */\n static override make(input: MakeOptions): ContextWindow {\n return construct(input)\n }\n\n /** @category constructors @since 0.1.0 */\n static empty(modelId: string): ContextWindow {\n return empty(modelId)\n }\n\n /** @category combinators @since 0.1.0 */\n static appendTurn(self: ContextWindow, assistantMessage: ModelRequest.AssistantMessage): ContextWindow {\n return appendTurn(self, assistantMessage)\n }\n\n /** @category combinators @since 0.1.0 */\n static compact(\n self: ContextWindow,\n summary: ModelRequest.Message | ReadonlyArray<ModelRequest.Message>\n ): Result.Result<ContextWindow, ContextWindowError> {\n return compact(self, summary)\n }\n\n /** @category conversions @since 0.1.0 */\n static render(self: ContextWindow): ModelRequest.ModelRequest {\n return render(self)\n }\n}\n\n/**\n * A segment before its digest and token count are computed. Supplying\n * `declaredDigest` or `tokens` skips the corresponding computation.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport interface SegmentInput {\n readonly kind: SegmentKind\n readonly zone: SegmentZone\n readonly content: Content\n readonly declaredDigest?: string | undefined\n readonly tokens?: Tokens.Count | undefined\n}\n\n/**\n * The declaration {@link ContextWindow.make} takes.\n *\n * @category models\n * @since 0.1.0\n * @slop\n */\nexport interface MakeOptions {\n readonly modelId: string\n readonly segments?: ReadonlyArray<Segment | SegmentInput> | undefined\n readonly activeTools?: ReadonlyArray<string> | undefined\n readonly replaced?: string | undefined\n}\n\nconst isSegment = (value: Segment | SegmentInput): value is Segment => value instanceof Segment\n\nconst jsonValue = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(jsonValue)\n if (value !== null && typeof value === \"object\") {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .filter(([, member]) => member !== undefined)\n .map(([key, member]) => [key, jsonValue(member)])\n )\n }\n return value\n}\n\n/**\n * What a segment is estimated from: its content, less every thinking part's\n * `signature`. A signature is opaque replay state, not context the provider\n * bills: on the ChatGPT route it is the whole encrypted reasoning item, often\n * larger than the turn's visible text, and counting it compacted a 400k-window\n * run at 31k to 41k billed input tokens (Terminal-Bench 4.0,\n * mp-checkpoint-consolidation, 2026-09-24). The digest still covers it.\n */\nconst withoutSignatures = (value: unknown): unknown => {\n if (Array.isArray(value)) return value.map(withoutSignatures)\n if (value !== null && typeof value === \"object\") {\n const record = value as Record<string, unknown>\n return Object.fromEntries(\n Object.entries(record)\n .filter(([key]) => !(record.type === \"thinking\" && key === \"signature\"))\n .map(([key, member]) => [key, withoutSignatures(member)])\n )\n }\n return value\n}\n\nconst segmentText = (content: Content): string => CanonicalJson.stringify(withoutSignatures(jsonValue(content)))\n\nconst digest = (value: unknown): string => Digest.digest(CanonicalJson.stringify(value))\n\n/** Every node in every graph this module has undertaken to freeze whole. */\nconst frozenWhole = new WeakSet<object>()\n\n/**\n * Freezes one value and everything reachable from it.\n *\n * Freezing only the outer array kept the immutability promise for\n * `segments.push` and left `segments[0].content[0].content[0].text = \"…\"`\n * silent. A segment's digest is taken once, at construction, so a message or a\n * part edited in place afterwards renders content the window's own identity no\n * longer describes — and that identity is what the sealed step is keyed on.\n *\n * The module's own memo ends the walk. A value a caller froze is evidence only\n * that node cannot change, not that every descendant was frozen with it; a\n * segment this module already walked, on the other hand, can be reused across\n * turns in O(1). Recording a node before descending also makes a cycle end at\n * its first repeated edge.\n *\n * Members are limited to own enumerable string keys, as they were when this\n * walk used `Object.values`, but each one is read through its own descriptor.\n * An accessor is caller code, not data the freeze walk may execute.\n */\nconst freezeDeep = (value: unknown): void => {\n if (value === null || typeof value !== \"object\" || frozenWhole.has(value)) return\n // Recorded before the walk, so a graph that points at itself ends it.\n frozenWhole.add(value)\n Object.freeze(value)\n for (const key of Object.keys(value)) {\n const property = Object.getOwnPropertyDescriptor(value, key)\n if (property !== undefined && \"value\" in property) freezeDeep(property.value)\n }\n}\n\n/** Creates one segment, computing its identity and estimated token count.\n * @category constructors\n * @since 0.1.0\n * @slop\n */\nexport const makeSegment = (input: Segment | SegmentInput): Segment => {\n if (isSegment(input)) {\n freezeDeep(input.content)\n return input\n }\n const content: Content = [...input.content]\n freezeDeep(content)\n const segment = new Segment({\n kind: input.kind,\n zone: input.zone,\n digest: digest({\n kind: input.kind,\n zone: input.zone,\n content: jsonValue(content),\n ...(input.declaredDigest === undefined ? {} : { declaredDigest: input.declaredDigest })\n }),\n tokens: input.tokens ?? Tokens.count(segmentText(content)),\n content\n })\n freezeDeep(segment.content)\n return segment\n}\n\nconst unique = (values: ReadonlyArray<string>): ReadonlyArray<string> => {\n const seen = new Set<string>()\n return values.filter((value) => {\n const normalized = value.trim().toLowerCase()\n return normalized !== \"\" && !seen.has(normalized) && (seen.add(normalized), true)\n })\n}\n\nconst windowDigest = (\n modelId: string,\n segments: ReadonlyArray<Segment>,\n activeTools: ReadonlyArray<string>,\n replaced?: string\n): string =>\n digest({\n modelId,\n segments: segments.map((segment) => segment.digest),\n activeTools,\n ...(replaced === undefined ? {} : { replaced })\n })\n\nconst construct = (options: MakeOptions): ContextWindow => {\n const segments = (options.segments ?? []).map(makeSegment)\n const activeTools = unique(options.activeTools ?? [])\n const window = new ContextWindow({\n modelId: options.modelId,\n segments,\n activeTools,\n replaced: options.replaced,\n digest: windowDigest(options.modelId, segments, activeTools, options.replaced),\n tokens: Tokens.combine(segments.map((segment) =>\n new Tokens.Segment({\n digest: segment.digest,\n zone: segment.zone,\n tokens: segment.tokens\n })\n ))\n })\n // The whole window, not its two outer arrays: a segment, a message, a part\n // and the token accounting are all values a caller holds a reference to, and\n // the digest above was taken over every one of them.\n freezeDeep(window)\n return window\n}\n\n/** Constructs a window from already-derived values.\n * @category constructors\n * @since 0.1.0\n * @slop\n */\nexport const make = (options: MakeOptions): ContextWindow => construct(options)\n\n/** Constructs an empty context window for a model.\n * @category constructors\n * @since 0.1.0\n * @slop\n */\nexport const empty = (modelId: string): ContextWindow => make({ modelId })\n\n/** Appends one settled assistant message.\n *\n * @category combinators\n * @since 0.1.0\n * @slop\n */\nexport const appendTurn: {\n (assistantMessage: ModelRequest.AssistantMessage): (self: ContextWindow) => ContextWindow\n (self: ContextWindow, assistantMessage: ModelRequest.AssistantMessage): ContextWindow\n} = dual(2, (self: ContextWindow, assistantMessage: ModelRequest.AssistantMessage) =>\n construct({\n modelId: self.modelId,\n segments: [\n ...self.segments,\n makeSegment({ kind: \"transcript\", zone: \"tail\", content: [assistantMessage] })\n ],\n activeTools: self.activeTools,\n replaced: self.replaced\n }))\n\nconst summaryMessages = (summary: ModelRequest.Message | ReadonlyArray<ModelRequest.Message>): Content => {\n const messages: ReadonlyArray<ModelRequest.Message> = Array.isArray(summary)\n ? summary as ReadonlyArray<ModelRequest.Message>\n : [summary as ModelRequest.Message]\n return messages.map((message) =>\n message.role === \"user\"\n ? message\n : ModelRequest.Message.user(\n message.content.filter((part): part is ModelRequest.TextPart => part.type === \"text\")\n )\n )\n}\n\nconst selectedPrefix = (\n self: ContextWindow,\n prefixLength: number\n): Result.Result<ReadonlyArray<Segment>, ContextWindowError> => {\n if (!Number.isSafeInteger(prefixLength) || prefixLength < 0) {\n return Result.fail(\n new ContextWindowError({\n code: \"invalid_compaction_prefix\",\n message: \"Compaction prefix length must be a non-negative safe integer\"\n })\n )\n }\n const segments = compactable(self.segments)\n if (prefixLength > segments.length) {\n return Result.fail(\n new ContextWindowError({\n code: \"invalid_compaction_prefix\",\n message: \"Compaction prefix length exceeds the compactable context\"\n })\n )\n }\n return Result.succeed(segments.slice(0, prefixLength))\n}\n\n/**\n * Computes the declared identity of an exact compactable prefix.\n *\n * @category conversions\n * @since 0.1.0\n * @slop\n */\nexport const prefixDigest = (\n self: ContextWindow,\n prefixLength: number\n): Result.Result<string, ContextWindowError> =>\n Result.map(selectedPrefix(self, prefixLength), (segments) => digest(segments.map((segment) => segment.digest)))\n\nconst marksError = (message: string): Result.Result<never, ContextWindowError> =>\n Result.fail(new ContextWindowError({ code: \"invalid_compaction_marks\", message }))\n\n/**\n * Compacts an exact compactable prefix by its marks, one per prefix segment.\n *\n * The result holds, in order: the segments before the prefix; one `summary`\n * segment of `summary` when any segment is squashed; the kept segments, as\n * the same objects, so their digests are stable; then the suffix. Removed\n * segments are dropped. `summary` is required exactly when a segment is\n * squashed.\n *\n * @category combinators\n * @since 1.0.0-rc.0\n */\nexport const compactMarked = (\n self: ContextWindow,\n prefixLength: number,\n marks: ReadonlyArray<Mark>,\n summary: ModelRequest.Message | ReadonlyArray<ModelRequest.Message> | undefined\n): Result.Result<ContextWindow, ContextWindowError> =>\n Result.gen(function*() {\n const replacedSegments = yield* selectedPrefix(self, prefixLength)\n if (marks.length !== replacedSegments.length) {\n return yield* marksError(\"Compaction marks must name every prefix segment once\")\n }\n if (marks.includes(\"squash\") !== (summary !== undefined)) {\n return yield* marksError(\"A compaction summary is required exactly when a prefix segment is squashed\")\n }\n if (replacedSegments.length === 0) return self\n const replaced = digest(replacedSegments.map((segment) => segment.digest))\n const positions = self.segments.flatMap((segment, index) => compactable([segment]).length === 0 ? [] : [index])\n .slice(0, prefixLength)\n const first = positions[0]!\n const selected = new Set(positions)\n const segments = [\n ...self.segments.slice(0, first),\n ...(summary === undefined ? [] : [\n makeSegment({ kind: \"summary\", zone: \"tail\", content: summaryMessages(summary) })\n ]),\n ...replacedSegments.filter((_, index) => marks[index] === \"keep\"),\n ...self.segments.slice(first).filter((_, index) => !selected.has(first + index))\n ]\n return construct({ modelId: self.modelId, segments, activeTools: self.activeTools, replaced })\n })\n\n/**\n * Replaces an exact compactable prefix while retaining every suffix segment:\n * {@link compactMarked} with every segment squashed.\n *\n * @category combinators\n * @since 0.1.0\n * @slop\n */\nexport const compactPrefix = (\n self: ContextWindow,\n prefixLength: number,\n summary: ModelRequest.Message | ReadonlyArray<ModelRequest.Message>\n): Result.Result<ContextWindow, ContextWindowError> =>\n Result.flatMap(selectedPrefix(self, prefixLength), (replacedSegments) =>\n compactMarked(\n self,\n prefixLength,\n replacedSegments.map(() => \"squash\"),\n replacedSegments.length === 0 ? undefined : summary\n ))\n\n/** Replaces the compactable transcript prefix with a summary segment.\n *\n * The most recent transcript segment remains the suffix, so a compacted\n * projection renders summary first followed by the un-compacted tail.\n *\n * @category combinators\n * @since 0.1.0\n * @slop\n */\nexport const compact: {\n (\n summary: ModelRequest.Message | ReadonlyArray<ModelRequest.Message>\n ): (self: ContextWindow) => Result.Result<ContextWindow, ContextWindowError>\n (\n self: ContextWindow,\n summary: ModelRequest.Message | ReadonlyArray<ModelRequest.Message>\n ): Result.Result<ContextWindow, ContextWindowError>\n} = dual(2, (self: ContextWindow, summary: ModelRequest.Message | ReadonlyArray<ModelRequest.Message>) => {\n const segments = compactable(self.segments)\n const prefixLength = segments.length > 1 ? segments.length - 1 : segments.length\n return compactPrefix(self, prefixLength, summary)\n})\n\n/** Renders this provider-neutral value into a model request.\n * @category conversions\n * @since 0.1.0\n * @slop\n */\nexport const render = (self: ContextWindow): ModelRequest.ModelRequest => {\n const system: Array<ModelRequest.SystemPart> = []\n const messages: Array<ModelRequest.Message> = []\n const definitions = new Map<string, ModelRequest.ToolDefinition>()\n const definitionKey = (name: string): string => name.trim().toLowerCase()\n for (const segment of self.segments) {\n for (const item of segment.content) {\n if (\"role\" in item) messages.push(item)\n else if (\"name\" in item) definitions.set(definitionKey(item.name), item)\n else system.push(item)\n }\n }\n const active = new Set(self.activeTools.map(definitionKey))\n const tools = [...definitions.values()].filter((definition) =>\n definition.deferred === true || active.has(definitionKey(definition.name))\n )\n return ModelRequest.ModelRequest.make({\n modelId: self.modelId,\n system,\n messages,\n tools,\n params: ModelRequest.GenerationParams.make()\n })\n}\n"]}