@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,278 @@
1
+ /**
2
+ * What a compaction does with each old frame: keep it, squash it into the
3
+ * summary, or remove it.
4
+ *
5
+ * {@link pins} fixes what must survive whatever Jev says: a summary is always
6
+ * squashed, so a later summary extends it; steering and the person's messages
7
+ * are kept, and so is the newest frame that ran each check still failing; a
8
+ * frame that changed files is never removed; and the two halves of a tool
9
+ * call and its result share one mark. {@link read} asks Jev two questions
10
+ * about each segment, and {@link resolve} turns the answers into marks,
11
+ * demoting the least-needed keeps until the kept frames fit the window.
12
+ *
13
+ * Marking is not compacting. The supervisor asks about each settled segment
14
+ * off the loop's hot path, and the run stores each {@link Answer} in the
15
+ * segment's {@link Facts}; nothing the model is sent changes. Only when the
16
+ * budget forces a compaction are the pins taken and the stored answers
17
+ * resolved, and a segment still unmarked then is asked about in that one
18
+ * reading.
19
+ *
20
+ * Nothing here journals or compacts; the caller records the reading, and
21
+ * journals `decision-unjudged` and squashes every frame when it fails.
22
+ *
23
+ * @since 1.0.0-rc.0
24
+ * @private
25
+ */
26
+ import * as Effect from "effect/Effect";
27
+ import * as Result from "effect/Result";
28
+ import * as Schema from "effect/Schema";
29
+ import { InvalidStep } from "../Compaction.ts";
30
+ import * as ContextWindow from "../ContextWindow.ts";
31
+ import * as Judgement from "../Judgement.ts";
32
+ /**
33
+ * One frame as Jev reads it: its size, the cell it ran, what the model said
34
+ * beside it, and what it observed.
35
+ *
36
+ * @since 1.0.0-rc.0
37
+ * @private
38
+ */
39
+ export declare const Item: Schema.Struct<{
40
+ readonly tokens: Schema.Int;
41
+ readonly cell: Schema.String;
42
+ readonly prose: Schema.String;
43
+ readonly observed: Schema.String;
44
+ }>;
45
+ /**
46
+ * The decoded form of {@link Item}.
47
+ *
48
+ * @since 1.0.0-rc.0
49
+ * @private
50
+ */
51
+ export type Item = typeof Item.Type;
52
+ /**
53
+ * What every reading is told beside its items: the task and the labels of
54
+ * the checks still failing.
55
+ *
56
+ * @since 1.0.0-rc.0
57
+ * @private
58
+ */
59
+ export declare const Context: Schema.Struct<{
60
+ readonly task: Schema.String;
61
+ readonly failing: Schema.$Array<Schema.String>;
62
+ }>;
63
+ /**
64
+ * The decoded form of {@link Context}.
65
+ *
66
+ * @since 1.0.0-rc.0
67
+ * @private
68
+ */
69
+ export type Context = typeof Context.Type;
70
+ /**
71
+ * Jev's answer about one item: the probabilities that it can be removed and
72
+ * that its exact text must be kept.
73
+ *
74
+ * @since 1.0.0-rc.0
75
+ * @private
76
+ */
77
+ export declare const Answer: Schema.Struct<{
78
+ readonly remove: Schema.Number;
79
+ readonly keep: Schema.Number;
80
+ }>;
81
+ /**
82
+ * The decoded form of {@link Answer}.
83
+ *
84
+ * @since 1.0.0-rc.0
85
+ * @private
86
+ */
87
+ export type Answer = typeof Answer.Type;
88
+ /**
89
+ * Jev's {@link Answer} about one transcript segment, named by the segment's
90
+ * digest: what a supervisor reading marks and the next boundary stores.
91
+ *
92
+ * @since 1.0.0-rc.0
93
+ * @private
94
+ */
95
+ export declare const Marking: Schema.Struct<{
96
+ readonly remove: Schema.Number;
97
+ readonly keep: Schema.Number;
98
+ readonly digest: Schema.String;
99
+ }>;
100
+ /**
101
+ * The decoded form of {@link Marking}.
102
+ *
103
+ * @since 1.0.0-rc.0
104
+ * @private
105
+ */
106
+ export type Marking = typeof Marking.Type;
107
+ /**
108
+ * What the run knows of one transcript segment: the frame that wrote it,
109
+ * whether it carries the person's messages, whether it changed files, the
110
+ * labels of the checks it ran, and Jev's answer about it once a reading has
111
+ * marked it.
112
+ *
113
+ * @since 1.0.0-rc.0
114
+ * @private
115
+ */
116
+ export declare const Facts: Schema.Struct<{
117
+ readonly frame: Schema.Int;
118
+ readonly person: Schema.Boolean;
119
+ readonly mutated: Schema.Boolean;
120
+ readonly checks: Schema.$Array<Schema.String>;
121
+ readonly answer: Schema.optionalKey<Schema.Struct<{
122
+ readonly remove: Schema.Number;
123
+ readonly keep: Schema.Number;
124
+ }>>;
125
+ }>;
126
+ /**
127
+ * The decoded form of {@link Facts}.
128
+ *
129
+ * @since 1.0.0-rc.0
130
+ * @private
131
+ */
132
+ export type Facts = typeof Facts.Type;
133
+ /**
134
+ * Why a mark was not Jev's own.
135
+ *
136
+ * @since 1.0.0-rc.0
137
+ * @private
138
+ */
139
+ export declare const Pinned: Schema.Literals<readonly ["summary", "steering", "person", "failing", "mutated", "pair", "budget"]>;
140
+ /**
141
+ * The decoded form of {@link Pinned}.
142
+ *
143
+ * @since 1.0.0-rc.0
144
+ * @private
145
+ */
146
+ export type Pinned = typeof Pinned.Type;
147
+ /**
148
+ * One segment's resolved mark, and why it was fixed when Jev did not choose
149
+ * it.
150
+ *
151
+ * @since 1.0.0-rc.0
152
+ * @private
153
+ */
154
+ export declare const Marked: Schema.Struct<{
155
+ readonly mark: Schema.Literals<readonly ["keep", "squash", "remove"]>;
156
+ readonly pinned: Schema.optionalKey<Schema.Literals<readonly ["summary", "steering", "person", "failing", "mutated", "pair", "budget"]>>;
157
+ }>;
158
+ /**
159
+ * The decoded form of {@link Marked}.
160
+ *
161
+ * @since 1.0.0-rc.0
162
+ * @private
163
+ */
164
+ export type Marked = typeof Marked.Type;
165
+ /**
166
+ * What {@link pins} fixes for one segment. `mark` is fixed and not asked;
167
+ * `floor` is the weakest mark allowed; `pair` is the index of the first
168
+ * segment of the tool-call span the segment shares a mark with.
169
+ *
170
+ * @since 1.0.0-rc.0
171
+ * @private
172
+ */
173
+ export interface Pin {
174
+ readonly pin: Exclude<Pinned, "budget">;
175
+ readonly mark?: ContextWindow.Mark | undefined;
176
+ readonly floor?: ContextWindow.Mark | undefined;
177
+ readonly pair?: number | undefined;
178
+ }
179
+ /**
180
+ * What must survive of the first `prefixLength` of `segments`, the window's
181
+ * compactable segments in order. `facts[i]` describes `segments[i]`, and is
182
+ * absent for a segment no frame recorded; it is aligned by position, not by
183
+ * digest, because two frames can be byte-identical.
184
+ *
185
+ * Of the segments that ran a check still failing, only the newest is kept: a
186
+ * check that fails frame after frame would otherwise pin every run of it, and
187
+ * no compaction could shrink the window. When that newest run is past the
188
+ * prefix, no prefix segment is kept for it.
189
+ *
190
+ * A tool call and its result in different segments share the strongest
191
+ * retention either holds: kept together when one is pinned keep, and never
192
+ * below the other's floor.
193
+ *
194
+ * @since 1.0.0-rc.0
195
+ * @private
196
+ */
197
+ export declare const pins: (segments: ReadonlyArray<ContextWindow.Segment>, prefixLength: number, facts: ReadonlyArray<Facts | undefined>, failing: ReadonlyArray<string>) => ReadonlyArray<Pin | undefined>;
198
+ /**
199
+ * The prefix indexes whose mark Jev is asked: those no pin fixes, in order.
200
+ *
201
+ * @since 1.0.0-rc.0
202
+ * @private
203
+ */
204
+ export declare const unpinned: (pinned: ReadonlyArray<Pin | undefined>) => ReadonlyArray<number>;
205
+ /**
206
+ * The most of an item's cell and prose a reading carries, head kept, and of
207
+ * what it observed, tail kept; in UTF-8 bytes.
208
+ *
209
+ * @since 1.0.0-rc.0
210
+ * @private
211
+ */
212
+ export declare const fieldBytes = 1024;
213
+ /**
214
+ * The reading: `remove_${i}` and `keep_${i}` per item, in as many requests as
215
+ * the items need, asked together.
216
+ *
217
+ * Two booleans rather than one choice: a boolean always carries its
218
+ * probability, and a choice without a distribution reads one-hot, so a floor
219
+ * on it would guard nothing.
220
+ *
221
+ * @since 1.0.0-rc.0
222
+ * @private
223
+ */
224
+ export declare const reader: Judgement.PerItem<{
225
+ readonly task: string;
226
+ readonly failing: readonly string[];
227
+ }, {
228
+ readonly tokens: number;
229
+ readonly cell: string;
230
+ readonly prose: string;
231
+ readonly observed: string;
232
+ }, {
233
+ readonly remove: (i: number) => import("@smthrs/model/Evaluator").BooleanQuestion;
234
+ readonly keep: (i: number) => import("@smthrs/model/Evaluator").BooleanQuestion;
235
+ }>;
236
+ /**
237
+ * Asks Jev about `items`, in order. Cell and prose are sent head-kept and what was observed tail-kept,
238
+ * each to {@link fieldBytes}. A reading is whole or it fails.
239
+ *
240
+ * @since 1.0.0-rc.0
241
+ * @private
242
+ */
243
+ export declare const read: (context: Context, items: ReadonlyArray<Item>) => Effect.Effect<{
244
+ readonly answers: ReadonlyArray<Answer>;
245
+ readonly asked: ReadonlyArray<Judgement.Asked>;
246
+ }, Judgement.Unjudged>;
247
+ /**
248
+ * The window a compaction must leave room in. Kept prefix tokens, `suffix`
249
+ * and a summary allowance must fit under
250
+ * `contextWindow - reserve - keepRecent / 2`. `tokens[i]` is prefix segment
251
+ * `i`'s size.
252
+ *
253
+ * @since 1.0.0-rc.0
254
+ * @private
255
+ */
256
+ export interface Budget {
257
+ readonly contextWindow: number;
258
+ readonly reserve: number;
259
+ readonly keepRecent: number;
260
+ readonly suffix: number;
261
+ readonly tokens: ReadonlyArray<number>;
262
+ }
263
+ /**
264
+ * The mark of every prefix segment. `answers` are {@link read}'s, for the
265
+ * indexes {@link unpinned} names.
266
+ *
267
+ * A segment is removed only when Jev is sure it is not needed and would not
268
+ * keep it, kept when Jev would keep it, and squashed otherwise; pins and
269
+ * floors override Jev, and a tool-call span takes its strongest mark. Then,
270
+ * while the kept segments do not fit the {@link Budget}, the unpinned keep
271
+ * Jev was least sure of, the older on a tie, is squashed. Pins alone may
272
+ * exceed the budget; the next frame's trigger compacts again.
273
+ *
274
+ * @since 1.0.0-rc.0
275
+ * @private
276
+ */
277
+ export declare const resolve: (answers: ReadonlyArray<Answer>, pinned: ReadonlyArray<Pin | undefined>, budget: Budget) => Result.Result<ReadonlyArray<Marked>, InvalidStep>;
278
+ //# sourceMappingURL=compactionMarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compactionMarks.d.ts","sourceRoot":"","sources":["../../../src/internal/compactionMarks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var compactionMarks_exports = {};
30
+ __export(compactionMarks_exports, {
31
+ Answer: () => Answer,
32
+ Context: () => Context,
33
+ Facts: () => Facts,
34
+ Item: () => Item,
35
+ Marked: () => Marked,
36
+ Marking: () => Marking,
37
+ Pinned: () => Pinned,
38
+ fieldBytes: () => fieldBytes,
39
+ pins: () => pins,
40
+ read: () => read,
41
+ reader: () => reader,
42
+ resolve: () => resolve,
43
+ unpinned: () => unpinned
44
+ });
45
+ module.exports = __toCommonJS(compactionMarks_exports);
46
+ var Classifier = __toESM(require("@smthrs/model/Classifier"), 1);
47
+ var Effect = __toESM(require("effect/Effect"), 1);
48
+ var Result = __toESM(require("effect/Result"), 1);
49
+ var Schema = __toESM(require("effect/Schema"), 1);
50
+ var import_Compaction = require("../Compaction.js");
51
+ var ContextWindow = __toESM(require("../ContextWindow.js"), 1);
52
+ var Judgement = __toESM(require("../Judgement.js"), 1);
53
+ var bytes = __toESM(require("./bytes.js"), 1);
54
+ var import_compactable = require("./compactable.js");
55
+ var elide = __toESM(require("./elide.js"), 1);
56
+ var import_nonNegativeSafeInt = require("./nonNegativeSafeInt.js");
57
+ const Item = Schema.Struct({
58
+ tokens: import_nonNegativeSafeInt.NonNegativeSafeInt,
59
+ cell: Schema.String,
60
+ prose: Schema.String,
61
+ observed: Schema.String
62
+ });
63
+ const Context = Schema.Struct({ task: Schema.String, failing: Schema.Array(Schema.String) });
64
+ const Answer = Schema.Struct({ remove: Schema.Number, keep: Schema.Number });
65
+ const Marking = Schema.Struct({ digest: Schema.String, ...Answer.fields });
66
+ const Facts = Schema.Struct({
67
+ frame: import_nonNegativeSafeInt.NonNegativeSafeInt,
68
+ person: Schema.Boolean,
69
+ mutated: Schema.Boolean,
70
+ checks: Schema.Array(Schema.String),
71
+ answer: Schema.optionalKey(Answer)
72
+ });
73
+ const Pinned = Schema.Literals(["summary", "steering", "person", "failing", "mutated", "pair", "budget"]);
74
+ const Marked = Schema.Struct({ mark: ContextWindow.Mark, pinned: Schema.optionalKey(Pinned) });
75
+ const rank = { remove: 0, squash: 1, keep: 2 };
76
+ const stronger = (a, b) => rank[a] >= rank[b] ? a : b;
77
+ const spans = (prefix) => {
78
+ const unsafe = (0, import_compactable.pairBoundaries)(prefix);
79
+ const starts = [];
80
+ for (let index = 0; index < prefix.length; index++) {
81
+ starts.push(unsafe.has(index) ? starts[index - 1] : index);
82
+ }
83
+ return starts;
84
+ };
85
+ const own = (segment, facts, newest) => {
86
+ if (segment.kind === "summary") return { mark: "squash", pin: "summary" };
87
+ if (segment.kind === "steering") return { mark: "keep", pin: "steering" };
88
+ if (facts === void 0) return void 0;
89
+ if (facts.person) return { mark: "keep", pin: "person" };
90
+ if (newest) return { mark: "keep", pin: "failing" };
91
+ if (facts.mutated) return { floor: "squash", pin: "mutated" };
92
+ return void 0;
93
+ };
94
+ const pins = (segments, prefixLength, facts, failing) => {
95
+ const prefix = segments.slice(0, prefixLength);
96
+ const newest = new Set(
97
+ failing.map(
98
+ (label) => facts.reduce((last, entry, index) => entry?.checks.includes(label) === true ? index : last, -1)
99
+ )
100
+ );
101
+ const owned = prefix.map((segment, index) => own(segment, facts[index], newest.has(index)));
102
+ const starts = spans(prefix);
103
+ return owned.map((pin, index) => {
104
+ const start = starts[index];
105
+ const members = owned.filter((_, other) => starts[other] === start);
106
+ if (members.length === 1) return pin;
107
+ if (members.some((member) => member?.mark === "keep")) {
108
+ return { mark: "keep", pin: pin?.mark === "keep" ? pin.pin : "pair", pair: start };
109
+ }
110
+ if (pin?.mark !== void 0) return { ...pin, pair: start };
111
+ const floors = members.flatMap((member) => member?.floor ?? member?.mark ?? []);
112
+ if (floors.length === 0) return { pin: "pair", pair: start };
113
+ const floor = floors.reduce(stronger);
114
+ return { floor, pin: pin?.floor === floor ? pin.pin : "pair", pair: start };
115
+ });
116
+ };
117
+ const unpinned = (pinned) => pinned.flatMap((pin, index) => pin?.mark === void 0 ? [index] : []);
118
+ const fieldBytes = 1024;
119
+ const recall = "the run record has the whole frame";
120
+ const headKept = (text) => {
121
+ const whole = bytes.size(text);
122
+ if (whole <= fieldBytes) return text;
123
+ return elide.head(text, fieldBytes - bytes.size(`\u2026 [+${whole}b, ${recall}]`), recall);
124
+ };
125
+ const tailKept = (text) => {
126
+ const whole = bytes.size(text);
127
+ if (whole <= fieldBytes) return text;
128
+ const kept = elide.tailSlice(text, fieldBytes - bytes.size(`[+${whole}b, ${recall}] \u2026`));
129
+ return `[+${whole - bytes.size(kept)}b, ${recall}] \u2026${kept}`;
130
+ };
131
+ const reader = Judgement.perItem({
132
+ id: "compaction/marks",
133
+ description: "Decide which old frames of an agent run to keep, squash into a summary, or remove",
134
+ context: Context,
135
+ item: Item,
136
+ questions: {
137
+ remove: (i) => Classifier.boolean({
138
+ instructions: `Is items[${i}], an old frame of this run, no longer needed at all now that the context must shrink? The task, the person's messages and the latest frames stay regardless.`,
139
+ criteria: {
140
+ true: "it contributed nothing still needed: a superseded read, a repeated command, a dead end later frames abandoned",
141
+ false: "something it established may still matter"
142
+ }
143
+ }),
144
+ keep: (i) => Classifier.boolean({
145
+ instructions: `Will the exact text of items[${i}] be needed again?`,
146
+ criteria: {
147
+ true: "a file's current content, an exact error still unresolved, a decision or constraint the run still acts on",
148
+ false: "a summary sentence is enough"
149
+ }
150
+ })
151
+ }
152
+ });
153
+ const read = (context, items) => reader.read(
154
+ context,
155
+ items.map((item) => ({
156
+ tokens: item.tokens,
157
+ cell: headKept(item.cell),
158
+ prose: headKept(item.prose),
159
+ observed: tailKept(item.observed)
160
+ }))
161
+ ).pipe(Effect.map((reading) => ({
162
+ answers: reading.answers.map((answer) => ({
163
+ remove: answer.remove.probability,
164
+ keep: answer.keep.probability
165
+ })),
166
+ asked: reading.asked
167
+ })));
168
+ const summaryAllowance = 4e3;
169
+ const removeAt = 0.8;
170
+ const keepAt = 0.5;
171
+ const resolve = (answers, pinned, budget) => {
172
+ const asked = unpinned(pinned);
173
+ if (answers.length !== asked.length || budget.tokens.length !== pinned.length) {
174
+ return Result.fail(
175
+ new import_Compaction.InvalidStep({ message: "The compaction answers and budget must describe every unpinned prefix segment" })
176
+ );
177
+ }
178
+ const answered = new Map(asked.map((index, at) => [index, answers[at]]));
179
+ const marks = pinned.map((pin, index) => {
180
+ if (pin?.mark !== void 0) return { mark: pin.mark, pinned: pin.pin };
181
+ const { keep, remove } = answered.get(index);
182
+ const mark = keep >= keepAt ? "keep" : remove >= removeAt ? "remove" : "squash";
183
+ return pin?.floor !== void 0 && rank[pin.floor] > rank[mark] ? { mark: pin.floor, pinned: pin.pin } : { mark };
184
+ });
185
+ const unit = (index) => pinned[index]?.pair ?? index;
186
+ for (const [index, marked] of marks.entries()) {
187
+ const strongest = marks.filter((_, other) => unit(other) === unit(index)).map((other) => other.mark).reduce(
188
+ stronger
189
+ );
190
+ if (pinned[index]?.mark === void 0 && rank[strongest] > rank[marked.mark]) {
191
+ marks[index] = { mark: strongest, pinned: "pair" };
192
+ }
193
+ }
194
+ const limit = budget.contextWindow - budget.reserve - budget.keepRecent / 2;
195
+ let kept = marks.reduce((sum, marked, index) => marked.mark === "keep" ? sum + budget.tokens[index] : sum, 0);
196
+ const units = [...new Set(marks.map((_, index) => unit(index)))].map((start) => ({ start, members: marks.flatMap((_, index) => unit(index) === start ? [index] : []) })).filter(
197
+ ({ members }) => members.some((index) => marks[index].mark === "keep") && members.every((index) => pinned[index]?.mark === void 0)
198
+ ).map(({ members, start }) => ({
199
+ start,
200
+ members,
201
+ p: Math.max(...members.map((index) => answered.get(index).keep))
202
+ })).sort((a, b) => a.p - b.p || a.start - b.start);
203
+ for (const { members } of units) {
204
+ if (kept + budget.suffix + summaryAllowance <= limit) break;
205
+ for (const index of members) {
206
+ marks[index] = { mark: "squash", pinned: "budget" };
207
+ kept -= budget.tokens[index];
208
+ }
209
+ }
210
+ return Result.succeed(marks);
211
+ };
212
+ //# sourceMappingURL=compactionMarks.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/internal/compactionMarks.ts"],
4
+ "sourcesContent": ["/**\n * What a compaction does with each old frame: keep it, squash it into the\n * summary, or remove it.\n *\n * {@link pins} fixes what must survive whatever Jev says: a summary is always\n * squashed, so a later summary extends it; steering and the person's messages\n * are kept, and so is the newest frame that ran each check still failing; a\n * frame that changed files is never removed; and the two halves of a tool\n * call and its result share one mark. {@link read} asks Jev two questions\n * about each segment, and {@link resolve} turns the answers into marks,\n * demoting the least-needed keeps until the kept frames fit the window.\n *\n * Marking is not compacting. The supervisor asks about each settled segment\n * off the loop's hot path, and the run stores each {@link Answer} in the\n * segment's {@link Facts}; nothing the model is sent changes. Only when the\n * budget forces a compaction are the pins taken and the stored answers\n * resolved, and a segment still unmarked then is asked about in that one\n * reading.\n *\n * Nothing here journals or compacts; the caller records the reading, and\n * journals `decision-unjudged` and squashes every frame when it fails.\n *\n * @since 1.0.0-rc.0\n * @private\n */\n\nimport * as Classifier from \"@smthrs/model/Classifier\"\nimport * as Effect from \"effect/Effect\"\nimport * as Result from \"effect/Result\"\nimport * as Schema from \"effect/Schema\"\nimport { InvalidStep } from \"../Compaction.ts\"\nimport * as ContextWindow from \"../ContextWindow.ts\"\nimport * as Judgement from \"../Judgement.ts\"\nimport * as bytes from \"./bytes.ts\"\nimport { pairBoundaries } from \"./compactable.ts\"\nimport * as elide from \"./elide.ts\"\nimport { NonNegativeSafeInt } from \"./nonNegativeSafeInt.ts\"\n\n/**\n * One frame as Jev reads it: its size, the cell it ran, what the model said\n * beside it, and what it observed.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Item = Schema.Struct({\n tokens: NonNegativeSafeInt,\n cell: Schema.String,\n prose: Schema.String,\n observed: Schema.String\n})\n\n/**\n * The decoded form of {@link Item}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Item = typeof Item.Type\n\n/**\n * What every reading is told beside its items: the task and the labels of\n * the checks still failing.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Context = Schema.Struct({ task: Schema.String, failing: Schema.Array(Schema.String) })\n\n/**\n * The decoded form of {@link Context}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Context = typeof Context.Type\n\n/**\n * Jev's answer about one item: the probabilities that it can be removed and\n * that its exact text must be kept.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Answer = Schema.Struct({ remove: Schema.Number, keep: Schema.Number })\n\n/**\n * The decoded form of {@link Answer}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Answer = typeof Answer.Type\n\n/**\n * Jev's {@link Answer} about one transcript segment, named by the segment's\n * digest: what a supervisor reading marks and the next boundary stores.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Marking = Schema.Struct({ digest: Schema.String, ...Answer.fields })\n\n/**\n * The decoded form of {@link Marking}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Marking = typeof Marking.Type\n\n/**\n * What the run knows of one transcript segment: the frame that wrote it,\n * whether it carries the person's messages, whether it changed files, the\n * labels of the checks it ran, and Jev's answer about it once a reading has\n * marked it.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Facts = Schema.Struct({\n frame: NonNegativeSafeInt,\n person: Schema.Boolean,\n mutated: Schema.Boolean,\n checks: Schema.Array(Schema.String),\n answer: Schema.optionalKey(Answer)\n})\n\n/**\n * The decoded form of {@link Facts}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Facts = typeof Facts.Type\n\n/**\n * Why a mark was not Jev's own.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Pinned = Schema.Literals([\"summary\", \"steering\", \"person\", \"failing\", \"mutated\", \"pair\", \"budget\"])\n\n/**\n * The decoded form of {@link Pinned}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Pinned = typeof Pinned.Type\n\n/**\n * One segment's resolved mark, and why it was fixed when Jev did not choose\n * it.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const Marked = Schema.Struct({ mark: ContextWindow.Mark, pinned: Schema.optionalKey(Pinned) })\n\n/**\n * The decoded form of {@link Marked}.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport type Marked = typeof Marked.Type\n\n/**\n * What {@link pins} fixes for one segment. `mark` is fixed and not asked;\n * `floor` is the weakest mark allowed; `pair` is the index of the first\n * segment of the tool-call span the segment shares a mark with.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport interface Pin {\n readonly pin: Exclude<Pinned, \"budget\">\n readonly mark?: ContextWindow.Mark | undefined\n readonly floor?: ContextWindow.Mark | undefined\n readonly pair?: number | undefined\n}\n\nconst rank: Readonly<Record<ContextWindow.Mark, number>> = { remove: 0, squash: 1, keep: 2 }\n\nconst stronger = (a: ContextWindow.Mark, b: ContextWindow.Mark): ContextWindow.Mark => rank[a] >= rank[b] ? a : b\n\n/** Each prefix index's span: the index of the first segment of its tool-call span. */\nconst spans = (prefix: ReadonlyArray<ContextWindow.Segment>): ReadonlyArray<number> => {\n const unsafe = pairBoundaries(prefix)\n const starts: Array<number> = []\n for (let index = 0; index < prefix.length; index++) {\n starts.push(unsafe.has(index) ? starts[index - 1]! : index)\n }\n return starts\n}\n\nconst own = (\n segment: ContextWindow.Segment,\n facts: Facts | undefined,\n newest: boolean\n): Pin | undefined => {\n if (segment.kind === \"summary\") return { mark: \"squash\", pin: \"summary\" }\n if (segment.kind === \"steering\") return { mark: \"keep\", pin: \"steering\" }\n if (facts === undefined) return undefined\n if (facts.person) return { mark: \"keep\", pin: \"person\" }\n if (newest) return { mark: \"keep\", pin: \"failing\" }\n if (facts.mutated) return { floor: \"squash\", pin: \"mutated\" }\n return undefined\n}\n\n/**\n * What must survive of the first `prefixLength` of `segments`, the window's\n * compactable segments in order. `facts[i]` describes `segments[i]`, and is\n * absent for a segment no frame recorded; it is aligned by position, not by\n * digest, because two frames can be byte-identical.\n *\n * Of the segments that ran a check still failing, only the newest is kept: a\n * check that fails frame after frame would otherwise pin every run of it, and\n * no compaction could shrink the window. When that newest run is past the\n * prefix, no prefix segment is kept for it.\n *\n * A tool call and its result in different segments share the strongest\n * retention either holds: kept together when one is pinned keep, and never\n * below the other's floor.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const pins = (\n segments: ReadonlyArray<ContextWindow.Segment>,\n prefixLength: number,\n facts: ReadonlyArray<Facts | undefined>,\n failing: ReadonlyArray<string>\n): ReadonlyArray<Pin | undefined> => {\n const prefix = segments.slice(0, prefixLength)\n const newest = new Set(\n failing.map((label) =>\n facts.reduce((last, entry, index) => entry?.checks.includes(label) === true ? index : last, -1)\n )\n )\n const owned = prefix.map((segment, index) => own(segment, facts[index], newest.has(index)))\n const starts = spans(prefix)\n return owned.map((pin, index) => {\n const start = starts[index]!\n const members = owned.filter((_, other) => starts[other] === start)\n if (members.length === 1) return pin\n if (members.some((member) => member?.mark === \"keep\")) {\n return { mark: \"keep\", pin: pin?.mark === \"keep\" ? pin.pin : \"pair\", pair: start }\n }\n if (pin?.mark !== undefined) return { ...pin, pair: start }\n const floors = members.flatMap((member) => member?.floor ?? member?.mark ?? [])\n if (floors.length === 0) return { pin: \"pair\", pair: start }\n const floor = floors.reduce(stronger)\n return { floor, pin: pin?.floor === floor ? pin.pin : \"pair\", pair: start }\n })\n}\n\n/**\n * The prefix indexes whose mark Jev is asked: those no pin fixes, in order.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const unpinned = (pinned: ReadonlyArray<Pin | undefined>): ReadonlyArray<number> =>\n pinned.flatMap((pin, index) => pin?.mark === undefined ? [index] : [])\n\n/**\n * The most of an item's cell and prose a reading carries, head kept, and of\n * what it observed, tail kept; in UTF-8 bytes.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const fieldBytes = 1024\n\nconst recall = \"the run record has the whole frame\"\n\nconst headKept = (text: string): string => {\n const whole = bytes.size(text)\n if (whole <= fieldBytes) return text\n return elide.head(text, fieldBytes - bytes.size(`\u2026 [+${whole}b, ${recall}]`), recall)\n}\n\nconst tailKept = (text: string): string => {\n const whole = bytes.size(text)\n if (whole <= fieldBytes) return text\n const kept = elide.tailSlice(text, fieldBytes - bytes.size(`[+${whole}b, ${recall}] \u2026`))\n return `[+${whole - bytes.size(kept)}b, ${recall}] \u2026${kept}`\n}\n\n/**\n * The reading: `remove_${i}` and `keep_${i}` per item, in as many requests as\n * the items need, asked together.\n *\n * Two booleans rather than one choice: a boolean always carries its\n * probability, and a choice without a distribution reads one-hot, so a floor\n * on it would guard nothing.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const reader = Judgement.perItem({\n id: \"compaction/marks\",\n description: \"Decide which old frames of an agent run to keep, squash into a summary, or remove\",\n context: Context,\n item: Item,\n questions: {\n remove: (i) =>\n Classifier.boolean({\n instructions:\n `Is items[${i}], an old frame of this run, no longer needed at all now that the context must shrink? The task, the person's messages and the latest frames stay regardless.`,\n criteria: {\n true:\n \"it contributed nothing still needed: a superseded read, a repeated command, a dead end later frames abandoned\",\n false: \"something it established may still matter\"\n }\n }),\n keep: (i) =>\n Classifier.boolean({\n instructions: `Will the exact text of items[${i}] be needed again?`,\n criteria: {\n true:\n \"a file's current content, an exact error still unresolved, a decision or constraint the run still acts on\",\n false: \"a summary sentence is enough\"\n }\n })\n }\n})\n\n/**\n * Asks Jev about `items`, in order. Cell and prose are sent head-kept and what was observed tail-kept,\n * each to {@link fieldBytes}. A reading is whole or it fails.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const read = (\n context: Context,\n items: ReadonlyArray<Item>\n): Effect.Effect<\n { readonly answers: ReadonlyArray<Answer>; readonly asked: ReadonlyArray<Judgement.Asked> },\n Judgement.Unjudged\n> =>\n reader.read(\n context,\n items.map((item) => ({\n tokens: item.tokens,\n cell: headKept(item.cell),\n prose: headKept(item.prose),\n observed: tailKept(item.observed)\n }))\n ).pipe(Effect.map((reading) => ({\n answers: reading.answers.map((answer) => ({\n remove: answer.remove.probability,\n keep: answer.keep.probability\n })),\n asked: reading.asked\n })))\n\n/**\n * The window a compaction must leave room in. Kept prefix tokens, `suffix`\n * and a summary allowance must fit under\n * `contextWindow - reserve - keepRecent / 2`. `tokens[i]` is prefix segment\n * `i`'s size.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport interface Budget {\n readonly contextWindow: number\n readonly reserve: number\n readonly keepRecent: number\n readonly suffix: number\n readonly tokens: ReadonlyArray<number>\n}\n\n/** Room left for the summary a squash produces. */\nconst summaryAllowance = 4000\n\n/** Jev removes a frame at or above this probability, when it would not keep it. */\nconst removeAt = 0.8\n\n/** Jev keeps a frame's exact text at or above this probability. */\nconst keepAt = 0.5\n\n/**\n * The mark of every prefix segment. `answers` are {@link read}'s, for the\n * indexes {@link unpinned} names.\n *\n * A segment is removed only when Jev is sure it is not needed and would not\n * keep it, kept when Jev would keep it, and squashed otherwise; pins and\n * floors override Jev, and a tool-call span takes its strongest mark. Then,\n * while the kept segments do not fit the {@link Budget}, the unpinned keep\n * Jev was least sure of, the older on a tie, is squashed. Pins alone may\n * exceed the budget; the next frame's trigger compacts again.\n *\n * @since 1.0.0-rc.0\n * @private\n */\nexport const resolve = (\n answers: ReadonlyArray<Answer>,\n pinned: ReadonlyArray<Pin | undefined>,\n budget: Budget\n): Result.Result<ReadonlyArray<Marked>, InvalidStep> => {\n const asked = unpinned(pinned)\n if (answers.length !== asked.length || budget.tokens.length !== pinned.length) {\n return Result.fail(\n new InvalidStep({ message: \"The compaction answers and budget must describe every unpinned prefix segment\" })\n )\n }\n const answered = new Map(asked.map((index, at) => [index, answers[at]!]))\n const marks: Array<Marked> = pinned.map((pin, index) => {\n if (pin?.mark !== undefined) return { mark: pin.mark, pinned: pin.pin }\n const { keep, remove } = answered.get(index)!\n const mark = keep >= keepAt ? \"keep\" : remove >= removeAt ? \"remove\" : \"squash\"\n return pin?.floor !== undefined && rank[pin.floor] > rank[mark]\n ? { mark: pin.floor, pinned: pin.pin }\n : { mark }\n })\n const unit = (index: number): number => pinned[index]?.pair ?? index\n for (const [index, marked] of marks.entries()) {\n const strongest = marks.filter((_, other) => unit(other) === unit(index)).map((other) => other.mark).reduce(\n stronger\n )\n if (pinned[index]?.mark === undefined && rank[strongest] > rank[marked.mark]) {\n marks[index] = { mark: strongest, pinned: \"pair\" }\n }\n }\n const limit = budget.contextWindow - budget.reserve - budget.keepRecent / 2\n let kept = marks.reduce((sum, marked, index) => marked.mark === \"keep\" ? sum + budget.tokens[index]! : sum, 0)\n const units = [...new Set(marks.map((_, index) => unit(index)))]\n .map((start) => ({ start, members: marks.flatMap((_, index) => unit(index) === start ? [index] : []) }))\n .filter(({ members }) =>\n members.some((index) => marks[index]!.mark === \"keep\") &&\n members.every((index) => pinned[index]?.mark === undefined)\n )\n .map(({ members, start }) => ({\n start,\n members,\n p: Math.max(...members.map((index) => answered.get(index)!.keep))\n }))\n .sort((a, b) => a.p - b.p || a.start - b.start)\n for (const { members } of units) {\n if (kept + budget.suffix + summaryAllowance <= limit) break\n // A span takes its strongest mark, so every member of a demotable one is kept.\n for (const index of members) {\n marks[index] = { mark: \"squash\", pinned: \"budget\" }\n kept -= budget.tokens[index]!\n }\n }\n return Result.succeed(marks)\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Canonical renderings of controller interventions recorded in the journal.
3
+ *
4
+ * `CellTurn` uses these strings when it builds the live model window and
5
+ * `Transcript` uses the same functions when it rebuilds that window. Keeping
6
+ * the rendering here makes an intervention event sufficient to reproduce the
7
+ * exact user message it represented.
8
+ *
9
+ * @since 1.0.0-rc.0
10
+ * @private
11
+ */
12
+ /**
13
+ * Renders the read-only-discipline intervention.
14
+ *
15
+ * It asks for a decision rather than a token write. An answerable request can
16
+ * complete without inventing work. An unfinished workspace change still needs
17
+ * evidence or a justification for more observation, and destructive
18
+ * writes made only to satisfy the notice are explicitly refused. A
19
+ * justification must name how later frames differ from the quiet ones so the
20
+ * run cannot buy a repeat by restating its plan.
21
+ *
22
+ * @category conversions
23
+ * @since 1.0.0-rc.0
24
+ * @private
25
+ */
26
+ export declare const readOnly: (cap: number, frames: number) => string;
27
+ /**
28
+ * Renders the repeated-observation intervention.
29
+ *
30
+ * This is separate from the read-only demand because a repeating run has
31
+ * often already edited. It redirects the run from re-reading that edit toward
32
+ * mechanism evidence: the failing check, symbol history, or another caller.
33
+ *
34
+ * @category conversions
35
+ * @since 1.0.0-rc.0
36
+ * @private
37
+ */
38
+ export declare const repeat: (frames: number, cap: number) => string;
39
+ /**
40
+ * Renders the unchanged-workspace completion intervention.
41
+ *
42
+ * @category conversions
43
+ * @since 1.0.0-rc.0
44
+ * @private
45
+ */
46
+ export declare const unmoved: (opened: string, closed: string) => string;
47
+ /**
48
+ * Renders the unresolved-failure completion intervention.
49
+ *
50
+ * @category conversions
51
+ * @since 1.0.0-rc.0
52
+ * @private
53
+ */
54
+ export declare const unresolved: (flow: string, failed: string, instead: string) => string;
55
+ /**
56
+ * Renders the narrowed-check completion intervention.
57
+ *
58
+ * @category conversions
59
+ * @since 1.0.0-rc.0
60
+ * @private
61
+ */
62
+ export declare const narrowed: (flow: string, broader: string, narrower: string) => string;
63
+ /**
64
+ * Renders the only-reading completion intervention.
65
+ *
66
+ * @category conversions
67
+ * @since 1.0.0-rc.0
68
+ * @private
69
+ */
70
+ export declare const narrowOnly: (flow: string, check: string, targets: ReadonlyArray<string>) => string;
71
+ /**
72
+ * Renders the completion-review intervention.
73
+ *
74
+ * Any of the three completion questions can ask for another frame. A low
75
+ * completeness reading does not establish that the run invented work, so the
76
+ * notice asks for a direct answer and makes evidence conditional on the
77
+ * actions or results that answer actually claims. A conversational answer
78
+ * needs no work report and must retain the person's requested format.
79
+ *
80
+ * The task is not quoted back. It is in the run's prefix on every frame, so a
81
+ * quote would buy nothing and cost the window the run has to answer in, and
82
+ * leaving it out is also what lets this text be rebuilt from the event alone.
83
+ * No probability is quoted either: a number is journal material for a grader,
84
+ * and in front of a model it is a score to negotiate.
85
+ *
86
+ * The text still warns about the narrower refusal: repeated claims of work
87
+ * the record does not carry can end the run. Honest reports of work left
88
+ * undone remain valid answers when that is what the run can report.
89
+ *
90
+ * @category conversions
91
+ * @since 1.0.0-rc.0
92
+ * @private
93
+ */
94
+ export declare const claim: () => string;
95
+ //# sourceMappingURL=demandText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demandText.d.ts","sourceRoot":"","sources":["../../../src/internal/demandText.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,QAAQ,MAAM,KAAG,MAKc,CAAA;AAErE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,EAAE,KAAK,MAAM,KAAG,MAQqJ,CAAA;AAE1M;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,MAMinB,CAAA;AAE1qB;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAMwY,CAAA;AAEnd;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,SAAS,MAAM,EAAE,UAAU,MAAM,KAAG,MAM8a,CAAA;AAEzf;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,SAAS,aAAa,CAAC,MAAM,CAAC,KAAG,MAM0lB,CAAA;AAEnrB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,KAAK,QAAO,MAO6F,CAAA"}