@remnic/core 1.1.11 → 1.1.13

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 (1462) hide show
  1. package/README.md +3 -3
  2. package/dist/access-cli.d.ts +2 -1
  3. package/dist/access-cli.js +293 -104
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +31 -62
  6. package/dist/access-http.js +53 -35
  7. package/dist/access-mcp.d.ts +31 -8
  8. package/dist/access-mcp.js +45 -34
  9. package/dist/access-schema.d.ts +197 -14
  10. package/dist/access-schema.js +16 -5
  11. package/dist/access-service-DcCDmNYC.d.ts +1542 -0
  12. package/dist/access-service.d.ts +30 -9
  13. package/dist/access-service.js +42 -32
  14. package/dist/action-confidence.d.ts +83 -0
  15. package/dist/action-confidence.js +22 -0
  16. package/dist/active-memory-bridge.d.ts +1 -1
  17. package/dist/active-memory-bridge.js +2 -2
  18. package/dist/active-recall.d.ts +1 -1
  19. package/dist/active-recall.js +11 -3
  20. package/dist/active-recall.js.map +1 -1
  21. package/dist/adapters/claude-code.d.ts +24 -0
  22. package/dist/adapters/claude-code.js +9 -0
  23. package/dist/adapters/codex.d.ts +25 -0
  24. package/dist/adapters/codex.js +9 -0
  25. package/dist/adapters/hermes.d.ts +35 -0
  26. package/dist/adapters/hermes.js +9 -0
  27. package/dist/adapters/index.d.ts +6 -0
  28. package/dist/adapters/index.js +26 -0
  29. package/dist/adapters/registry.d.ts +20 -0
  30. package/dist/adapters/registry.js +13 -0
  31. package/dist/adapters/replit.d.ts +28 -0
  32. package/dist/adapters/replit.js +9 -0
  33. package/dist/adapters/types.d.ts +43 -0
  34. package/dist/adapters/types.js +8 -0
  35. package/dist/behavior-learner.d.ts +1 -1
  36. package/dist/behavior-signals.d.ts +1 -1
  37. package/dist/bootstrap.d.ts +23 -6
  38. package/dist/boxes.d.ts +7 -0
  39. package/dist/boxes.js +1 -1
  40. package/dist/briefing.d.ts +5 -3
  41. package/dist/briefing.js +10 -7
  42. package/dist/buffer-surprise-report.d.ts +1 -1
  43. package/dist/buffer-surprise-report.js +1 -1
  44. package/dist/buffer.d.ts +18 -4
  45. package/dist/buffer.js +1 -1
  46. package/dist/calibration.d.ts +1 -1
  47. package/dist/calibration.js +6 -6
  48. package/dist/capsule-cli.d.ts +4 -4
  49. package/dist/capsule-cli.js +1 -1
  50. package/dist/capsule-crypto-5CYAGVC5.js +18 -0
  51. package/dist/capsule-merge-4MGKE7C5.js +189 -0
  52. package/dist/causal-behavior.d.ts +9 -29
  53. package/dist/causal-behavior.js +6 -3
  54. package/dist/causal-behavior.js.map +1 -1
  55. package/dist/causal-chain.js +3 -2
  56. package/dist/causal-consolidation.d.ts +2 -2
  57. package/dist/causal-consolidation.js +28 -17
  58. package/dist/causal-consolidation.js.map +1 -1
  59. package/dist/causal-retrieval.js +3 -3
  60. package/dist/causal-trajectory.js +1 -1
  61. package/dist/chunk-25MQ7IHJ.js +427 -0
  62. package/dist/chunk-25MQ7IHJ.js.map +1 -0
  63. package/dist/chunk-2F2W355T.js +256 -0
  64. package/dist/chunk-2F2W355T.js.map +1 -0
  65. package/dist/chunk-2KI4QFHU.js +228 -0
  66. package/dist/chunk-2KI4QFHU.js.map +1 -0
  67. package/dist/chunk-2PRQG7PV.js +86 -0
  68. package/dist/chunk-2PRQG7PV.js.map +1 -0
  69. package/dist/chunk-2QR3XXIC.js +2272 -0
  70. package/dist/chunk-2QR3XXIC.js.map +1 -0
  71. package/dist/chunk-2WWLHTZY.js +121 -0
  72. package/dist/chunk-326G7DJK.js +2185 -0
  73. package/dist/chunk-326G7DJK.js.map +1 -0
  74. package/dist/chunk-34DQE4KF.js +174 -0
  75. package/dist/chunk-34DQE4KF.js.map +1 -0
  76. package/dist/chunk-3APJ5EVB.js +601 -0
  77. package/dist/chunk-3APJ5EVB.js.map +1 -0
  78. package/dist/chunk-3HPAPHUK.js +51 -0
  79. package/dist/chunk-3HPAPHUK.js.map +1 -0
  80. package/dist/chunk-3JXBXXM2.js +69 -0
  81. package/dist/chunk-3JXBXXM2.js.map +1 -0
  82. package/dist/chunk-3KW65B36.js +681 -0
  83. package/dist/chunk-3KW65B36.js.map +1 -0
  84. package/dist/chunk-3UXOZBHV.js +20 -0
  85. package/dist/chunk-3UXOZBHV.js.map +1 -0
  86. package/dist/chunk-3VAL7ZL2.js +266 -0
  87. package/dist/chunk-3VAL7ZL2.js.map +1 -0
  88. package/dist/chunk-3Y4P7RXM.js +31 -0
  89. package/dist/chunk-3Y4P7RXM.js.map +1 -0
  90. package/dist/chunk-47VWKCAF.js +273 -0
  91. package/dist/chunk-47VWKCAF.js.map +1 -0
  92. package/dist/chunk-4CRG46BG.js +271 -0
  93. package/dist/chunk-4RA3C3EV.js +60 -0
  94. package/dist/chunk-4RA3C3EV.js.map +1 -0
  95. package/dist/chunk-5375UYTQ.js +914 -0
  96. package/dist/chunk-5375UYTQ.js.map +1 -0
  97. package/dist/chunk-56K5QLHX.js +506 -0
  98. package/dist/chunk-56K5QLHX.js.map +1 -0
  99. package/dist/chunk-5NXIJZFX.js +180 -0
  100. package/dist/chunk-5NXIJZFX.js.map +1 -0
  101. package/dist/chunk-5RGLBDQF.js +596 -0
  102. package/dist/chunk-5RGLBDQF.js.map +1 -0
  103. package/dist/chunk-5UZXUTVO.js +9 -0
  104. package/dist/chunk-5UZXUTVO.js.map +1 -0
  105. package/dist/chunk-65PG43EQ.js +105 -0
  106. package/dist/chunk-65PG43EQ.js.map +1 -0
  107. package/dist/chunk-66DHUKLO.js +57 -0
  108. package/dist/chunk-66DHUKLO.js.map +1 -0
  109. package/dist/chunk-6FC5EGNV.js +46 -0
  110. package/dist/chunk-6FC5EGNV.js.map +1 -0
  111. package/dist/chunk-6H2TESSP.js +62 -0
  112. package/dist/chunk-6H2TESSP.js.map +1 -0
  113. package/dist/chunk-6LVVDPJ4.js +32 -0
  114. package/dist/chunk-6LVVDPJ4.js.map +1 -0
  115. package/dist/chunk-6NKAQ74D.js +2237 -0
  116. package/dist/chunk-6NKAQ74D.js.map +1 -0
  117. package/dist/chunk-6RVI47ZR.js +159 -0
  118. package/dist/chunk-6RVI47ZR.js.map +1 -0
  119. package/dist/chunk-7AAT6G4Q.js +5117 -0
  120. package/dist/chunk-7AAT6G4Q.js.map +1 -0
  121. package/dist/chunk-7DTASS5T.js +29 -0
  122. package/dist/chunk-7DTASS5T.js.map +1 -0
  123. package/dist/chunk-7IASACLB.js +596 -0
  124. package/dist/chunk-7MNMYOFP.js +32 -0
  125. package/dist/chunk-7MNMYOFP.js.map +1 -0
  126. package/dist/chunk-7N4KAIGN.js +133 -0
  127. package/dist/chunk-7N4KAIGN.js.map +1 -0
  128. package/dist/chunk-7OZ53EXP.js +101 -0
  129. package/dist/chunk-7OZ53EXP.js.map +1 -0
  130. package/dist/chunk-7XYTQGCC.js +134 -0
  131. package/dist/chunk-7XYTQGCC.js.map +1 -0
  132. package/dist/chunk-A2XUIMJ3.js +341 -0
  133. package/dist/chunk-A2XUIMJ3.js.map +1 -0
  134. package/dist/chunk-AC5LO7IU.js +308 -0
  135. package/dist/chunk-AC5LO7IU.js.map +1 -0
  136. package/dist/chunk-AGZQD76C.js +201 -0
  137. package/dist/chunk-AGZQD76C.js.map +1 -0
  138. package/dist/chunk-AH2JUU6X.js +336 -0
  139. package/dist/chunk-AH2JUU6X.js.map +1 -0
  140. package/dist/chunk-APO3DCMU.js +361 -0
  141. package/dist/chunk-APO3DCMU.js.map +1 -0
  142. package/dist/chunk-BFBF3XEF.js +283 -0
  143. package/dist/chunk-BFBF3XEF.js.map +1 -0
  144. package/dist/chunk-BJ3KMYTB.js +1974 -0
  145. package/dist/chunk-BJ3KMYTB.js.map +1 -0
  146. package/dist/chunk-C5BCH4ZS.js +317 -0
  147. package/dist/chunk-C5BCH4ZS.js.map +1 -0
  148. package/dist/chunk-CHEL3SKB.js +6758 -0
  149. package/dist/chunk-CHEL3SKB.js.map +1 -0
  150. package/dist/chunk-CQZRLNMV.js +1491 -0
  151. package/dist/chunk-CQZRLNMV.js.map +1 -0
  152. package/dist/chunk-D46YSIYX.js +892 -0
  153. package/dist/chunk-D46YSIYX.js.map +1 -0
  154. package/dist/chunk-DB5A3NHS.js +906 -0
  155. package/dist/chunk-DB5A3NHS.js.map +1 -0
  156. package/dist/chunk-DINWEURR.js +648 -0
  157. package/dist/chunk-DINWEURR.js.map +1 -0
  158. package/dist/chunk-DK5LDEQM.js +530 -0
  159. package/dist/chunk-DK5LDEQM.js.map +1 -0
  160. package/dist/chunk-DOM4GKSW.js +34 -0
  161. package/dist/chunk-DOM4GKSW.js.map +1 -0
  162. package/dist/chunk-EDTHC6UD.js +1075 -0
  163. package/dist/chunk-EDTHC6UD.js.map +1 -0
  164. package/dist/chunk-EFJ3MQ4V.js +721 -0
  165. package/dist/chunk-EHRTFRWW.js +89 -0
  166. package/dist/chunk-EHRTFRWW.js.map +1 -0
  167. package/dist/chunk-FAJ7FZYM.js +11 -0
  168. package/dist/chunk-FAJ7FZYM.js.map +1 -0
  169. package/dist/chunk-FBYESMQ2.js +570 -0
  170. package/dist/chunk-FBYESMQ2.js.map +1 -0
  171. package/dist/chunk-FDU6HUUL.js +147 -0
  172. package/dist/chunk-FF4KLI5W.js +99 -0
  173. package/dist/chunk-FF4KLI5W.js.map +1 -0
  174. package/dist/chunk-FIT6DMX6.js +310 -0
  175. package/dist/chunk-FIT6DMX6.js.map +1 -0
  176. package/dist/chunk-FJ43PRLT.js +272 -0
  177. package/dist/chunk-FJ43PRLT.js.map +1 -0
  178. package/dist/chunk-FKFMOY3N.js +32 -0
  179. package/dist/chunk-FKFMOY3N.js.map +1 -0
  180. package/dist/chunk-FLTNHQK6.js +262 -0
  181. package/dist/chunk-FLTNHQK6.js.map +1 -0
  182. package/dist/chunk-GA454ALV.js +12436 -0
  183. package/dist/chunk-GA454ALV.js.map +1 -0
  184. package/dist/chunk-GGKRUQOO.js +228 -0
  185. package/dist/chunk-GIF42EW3.js +63 -0
  186. package/dist/chunk-GIF42EW3.js.map +1 -0
  187. package/dist/chunk-GL6I6MEQ.js +647 -0
  188. package/dist/chunk-H3ME6L6D.js +709 -0
  189. package/dist/chunk-H3ME6L6D.js.map +1 -0
  190. package/dist/chunk-HHLLAQGZ.js +1 -0
  191. package/dist/chunk-HXXBL2KD.js +2040 -0
  192. package/dist/chunk-I5V2VDIW.js +219 -0
  193. package/dist/chunk-I5V2VDIW.js.map +1 -0
  194. package/dist/chunk-I6K5FBRQ.js +35 -0
  195. package/dist/chunk-I6K5FBRQ.js.map +1 -0
  196. package/dist/chunk-ICRIXAP2.js +121 -0
  197. package/dist/chunk-ICRIXAP2.js.map +1 -0
  198. package/dist/chunk-J4EB7DNW.js +11 -0
  199. package/dist/chunk-J4EB7DNW.js.map +1 -0
  200. package/dist/chunk-JLFA7DQG.js +62 -0
  201. package/dist/chunk-JLFA7DQG.js.map +1 -0
  202. package/dist/chunk-KJTKLXTH.js +9 -0
  203. package/dist/chunk-KJTKLXTH.js.map +1 -0
  204. package/dist/chunk-KLAO5DGL.js +917 -0
  205. package/dist/chunk-KLAO5DGL.js.map +1 -0
  206. package/dist/chunk-KNKUID7G.js +183 -0
  207. package/dist/chunk-KOSORCJG.js +624 -0
  208. package/dist/chunk-KOSORCJG.js.map +1 -0
  209. package/dist/chunk-KUJVMMZQ.js +1262 -0
  210. package/dist/chunk-KUJVMMZQ.js.map +1 -0
  211. package/dist/chunk-LCR46JY5.js +123 -0
  212. package/dist/chunk-LCR46JY5.js.map +1 -0
  213. package/dist/chunk-LLQ2LLWF.js +148 -0
  214. package/dist/chunk-LLQ2LLWF.js.map +1 -0
  215. package/dist/chunk-LPMVBPA3.js +236 -0
  216. package/dist/chunk-LT3NLYSI.js +50 -0
  217. package/dist/chunk-LT3NLYSI.js.map +1 -0
  218. package/dist/chunk-LUDTDZLK.js +287 -0
  219. package/dist/chunk-LUDTDZLK.js.map +1 -0
  220. package/dist/chunk-M23FSH32.js +3963 -0
  221. package/dist/chunk-M23FSH32.js.map +1 -0
  222. package/dist/chunk-MC26UJIM.js +118 -0
  223. package/dist/chunk-ME6ESPZU.js +119 -0
  224. package/dist/chunk-ME6ESPZU.js.map +1 -0
  225. package/dist/chunk-MGKYQQYF.js +272 -0
  226. package/dist/chunk-MGKYQQYF.js.map +1 -0
  227. package/dist/chunk-MJFNCJXV.js +66 -0
  228. package/dist/chunk-MJFNCJXV.js.map +1 -0
  229. package/dist/chunk-MSWG7JI6.js +237 -0
  230. package/dist/chunk-MSWG7JI6.js.map +1 -0
  231. package/dist/chunk-MT25YHYH.js +141 -0
  232. package/dist/chunk-MT25YHYH.js.map +1 -0
  233. package/dist/chunk-MT4HVDUZ.js +53 -0
  234. package/dist/chunk-MY6TPVXW.js +219 -0
  235. package/dist/chunk-N2D6GXBM.js +267 -0
  236. package/dist/chunk-N2D6GXBM.js.map +1 -0
  237. package/dist/chunk-NJ3MJQZX.js +46 -0
  238. package/dist/chunk-NJ3MJQZX.js.map +1 -0
  239. package/dist/chunk-NMZY542O.js +335 -0
  240. package/dist/chunk-NMZY542O.js.map +1 -0
  241. package/dist/chunk-NNVTUXEB.js +23 -0
  242. package/dist/chunk-NZL6GGQE.js +375 -0
  243. package/dist/chunk-NZL6GGQE.js.map +1 -0
  244. package/dist/chunk-OAZ5MFUB.js +4124 -0
  245. package/dist/chunk-OAZ5MFUB.js.map +1 -0
  246. package/dist/chunk-OIGNEXKZ.js +237 -0
  247. package/dist/chunk-OIGNEXKZ.js.map +1 -0
  248. package/dist/chunk-OZKZ2TRP.js +3729 -0
  249. package/dist/chunk-OZKZ2TRP.js.map +1 -0
  250. package/dist/chunk-P4NEIHUT.js +108 -0
  251. package/dist/chunk-P7FMDTKL.js +103 -0
  252. package/dist/chunk-P7FMDTKL.js.map +1 -0
  253. package/dist/chunk-PD6O7AXF.js +110 -0
  254. package/dist/chunk-PD6O7AXF.js.map +1 -0
  255. package/dist/chunk-PHK3HARR.js +32 -0
  256. package/dist/chunk-PHK3HARR.js.map +1 -0
  257. package/dist/chunk-PIRJPV5T.js +98 -0
  258. package/dist/chunk-PIRJPV5T.js.map +1 -0
  259. package/dist/chunk-PK7H5L6Y.js +159 -0
  260. package/dist/chunk-PK7H5L6Y.js.map +1 -0
  261. package/dist/chunk-PR5FBTFU.js +233 -0
  262. package/dist/chunk-PR5FBTFU.js.map +1 -0
  263. package/dist/chunk-PU63GXWS.js +174 -0
  264. package/dist/chunk-PU63GXWS.js.map +1 -0
  265. package/dist/chunk-PYPOFEMK.js +294 -0
  266. package/dist/chunk-PYPOFEMK.js.map +1 -0
  267. package/dist/chunk-PZIAX57I.js +124 -0
  268. package/dist/chunk-PZIAX57I.js.map +1 -0
  269. package/dist/chunk-Q7P4WJDP.js +26 -0
  270. package/dist/chunk-Q7P4WJDP.js.map +1 -0
  271. package/dist/chunk-QDZ2RLEC.js +908 -0
  272. package/dist/chunk-QDZ2RLEC.js.map +1 -0
  273. package/dist/chunk-QQUAB63I.js +63 -0
  274. package/dist/chunk-QQUAB63I.js.map +1 -0
  275. package/dist/chunk-QRNI5JBH.js +18 -0
  276. package/dist/chunk-RHY3HH7P.js +601 -0
  277. package/dist/chunk-RHY3HH7P.js.map +1 -0
  278. package/dist/chunk-RK6F44Y6.js +84 -0
  279. package/dist/chunk-RK6F44Y6.js.map +1 -0
  280. package/dist/chunk-RRF5UOBJ.js +91 -0
  281. package/dist/chunk-RXDLTSWT.js +124 -0
  282. package/dist/chunk-RXDLTSWT.js.map +1 -0
  283. package/dist/chunk-RYED3SPJ.js +42 -0
  284. package/dist/chunk-RYED3SPJ.js.map +1 -0
  285. package/dist/chunk-S7KDBTWT.js +106 -0
  286. package/dist/chunk-S7KDBTWT.js.map +1 -0
  287. package/dist/chunk-SEDEKFYQ.js +1 -0
  288. package/dist/chunk-SOAU2OE2.js +125 -0
  289. package/dist/chunk-SOAU2OE2.js.map +1 -0
  290. package/dist/chunk-TECVW3JP.js +36 -0
  291. package/dist/chunk-TECVW3JP.js.map +1 -0
  292. package/dist/chunk-TFO23QT4.js +88 -0
  293. package/dist/chunk-TFO23QT4.js.map +1 -0
  294. package/dist/chunk-TK4UEOSK.js +76 -0
  295. package/dist/chunk-TK4UEOSK.js.map +1 -0
  296. package/dist/chunk-TKWGAOLV.js +122 -0
  297. package/dist/chunk-TKWGAOLV.js.map +1 -0
  298. package/dist/chunk-TMM4S4IJ.js +597 -0
  299. package/dist/chunk-TMM4S4IJ.js.map +1 -0
  300. package/dist/chunk-TMQLARTH.js +188 -0
  301. package/dist/chunk-TMQLARTH.js.map +1 -0
  302. package/dist/chunk-TPDBFYEG.js +130 -0
  303. package/dist/chunk-TPDBFYEG.js.map +1 -0
  304. package/dist/chunk-TPMQ3G6Z.js +145 -0
  305. package/dist/chunk-TPMQ3G6Z.js.map +1 -0
  306. package/dist/chunk-TZOLIGIG.js +61 -0
  307. package/dist/chunk-TZOLIGIG.js.map +1 -0
  308. package/dist/chunk-U3PN77QT.js +113 -0
  309. package/dist/chunk-U3WSW6PZ.js +277 -0
  310. package/dist/chunk-U4SCL7B7.js +640 -0
  311. package/dist/chunk-U4SCL7B7.js.map +1 -0
  312. package/dist/chunk-UWK5OXUJ.js +156 -0
  313. package/dist/chunk-UWK5OXUJ.js.map +1 -0
  314. package/dist/chunk-UWVJF25J.js +74 -0
  315. package/dist/chunk-UXHQAFNA.js +1317 -0
  316. package/dist/chunk-UXHQAFNA.js.map +1 -0
  317. package/dist/chunk-V5OCT34X.js +1 -0
  318. package/dist/chunk-V5OCT34X.js.map +1 -0
  319. package/dist/chunk-VLXA6PI2.js +304 -0
  320. package/dist/chunk-VLXA6PI2.js.map +1 -0
  321. package/dist/chunk-VNO6ZJ35.js +500 -0
  322. package/dist/chunk-VNO6ZJ35.js.map +1 -0
  323. package/dist/chunk-VW676BEI.js +827 -0
  324. package/dist/chunk-VW676BEI.js.map +1 -0
  325. package/dist/chunk-VWT3F4IV.js +2161 -0
  326. package/dist/chunk-VWT3F4IV.js.map +1 -0
  327. package/dist/chunk-W3LR522O.js +2296 -0
  328. package/dist/chunk-W3LR522O.js.map +1 -0
  329. package/dist/chunk-W4L6CZKA.js +96 -0
  330. package/dist/chunk-W4L6CZKA.js.map +1 -0
  331. package/dist/chunk-W4RVMTHR.js +372 -0
  332. package/dist/chunk-W4RVMTHR.js.map +1 -0
  333. package/dist/chunk-WEHSQBFR.js +188 -0
  334. package/dist/chunk-WEHSQBFR.js.map +1 -0
  335. package/dist/chunk-WELDCG6C.js +380 -0
  336. package/dist/chunk-WELDCG6C.js.map +1 -0
  337. package/dist/chunk-WZYKANL3.js +2800 -0
  338. package/dist/chunk-WZYKANL3.js.map +1 -0
  339. package/dist/chunk-XIG5PDM7.js +48 -0
  340. package/dist/chunk-XJNBEDFE.js +193 -0
  341. package/dist/chunk-XJNBEDFE.js.map +1 -0
  342. package/dist/chunk-XVVIG67A.js +291 -0
  343. package/dist/chunk-XVVIG67A.js.map +1 -0
  344. package/dist/chunk-XVZ7B3HG.js +135 -0
  345. package/dist/chunk-YBPYIAA5.js +73 -0
  346. package/dist/chunk-YBPYIAA5.js.map +1 -0
  347. package/dist/chunk-Z734BLO3.js +21 -0
  348. package/dist/chunk-Z734BLO3.js.map +1 -0
  349. package/dist/chunk-ZKSK55RC.js +269 -0
  350. package/dist/chunk-ZKSK55RC.js.map +1 -0
  351. package/dist/chunk-ZTFCYYEZ.js +69 -0
  352. package/dist/chunk-ZTFCYYEZ.js.map +1 -0
  353. package/dist/chunk-ZY2MNJR6.js +329 -0
  354. package/dist/chunk-ZY2MNJR6.js.map +1 -0
  355. package/dist/cli-D3VpkVwB.d.ts +1136 -0
  356. package/dist/cli.d.ts +42 -10
  357. package/dist/cli.js +121 -58
  358. package/dist/codex-cli-fallback.d.ts +1 -0
  359. package/dist/codex-cli-fallback.js +1 -1
  360. package/dist/commitment-ledger.js +1 -1
  361. package/dist/compat/checks.d.ts +5 -0
  362. package/dist/compat/checks.js +11 -0
  363. package/dist/compat/checks.js.map +1 -0
  364. package/dist/compat/types.d.ts +30 -0
  365. package/dist/compat/types.js +1 -0
  366. package/dist/compat/types.js.map +1 -0
  367. package/dist/compounding/engine.d.ts +221 -0
  368. package/dist/compounding/engine.js +32 -0
  369. package/dist/compounding/engine.js.map +1 -0
  370. package/dist/compounding/preference-consolidator.d.ts +92 -0
  371. package/dist/compounding/preference-consolidator.js +553 -0
  372. package/dist/compounding/preference-consolidator.js.map +1 -0
  373. package/dist/compression-optimizer.d.ts +1 -1
  374. package/dist/config.d.ts +5 -3
  375. package/dist/config.js +9 -4
  376. package/dist/conflict-policy-DyJ2wd-h.d.ts +4 -0
  377. package/dist/connectors/codex-materialize-runner.d.ts +64 -0
  378. package/dist/connectors/codex-materialize-runner.js +33 -0
  379. package/dist/connectors/codex-materialize-runner.js.map +1 -0
  380. package/dist/connectors/codex-materialize.d.ts +195 -0
  381. package/dist/connectors/codex-materialize.js +38 -0
  382. package/dist/connectors/codex-materialize.js.map +1 -0
  383. package/dist/connectors/index.d.ts +444 -0
  384. package/dist/connectors/index.js +115 -0
  385. package/dist/connectors/index.js.map +1 -0
  386. package/dist/connectors-cli-CwbyjGR7.d.ts +257 -0
  387. package/dist/connectors-cli.d.ts +1 -1
  388. package/dist/consolidation-provenance-check.d.ts +4 -2
  389. package/dist/consolidation-undo.d.ts +4 -2
  390. package/dist/contradiction/index.d.ts +258 -0
  391. package/dist/contradiction/index.js +43 -0
  392. package/dist/contradiction/index.js.map +1 -0
  393. package/dist/contradiction-review-ATP4S6IC.js +30 -0
  394. package/dist/contradiction-review-ATP4S6IC.js.map +1 -0
  395. package/dist/contradiction-scan-5A4IDZV5.js +13 -0
  396. package/dist/contradiction-scan-5A4IDZV5.js.map +1 -0
  397. package/dist/conversation-index/backend.d.ts +97 -0
  398. package/dist/conversation-index/backend.js +13 -0
  399. package/dist/conversation-index/backend.js.map +1 -0
  400. package/dist/conversation-index/chunker.d.ts +16 -0
  401. package/dist/conversation-index/chunker.js +8 -0
  402. package/dist/conversation-index/chunker.js.map +1 -0
  403. package/dist/conversation-index/cleanup.d.ts +11 -0
  404. package/dist/conversation-index/cleanup.js +9 -0
  405. package/dist/conversation-index/cleanup.js.map +1 -0
  406. package/dist/conversation-index/faiss-adapter.d.ts +6 -0
  407. package/dist/conversation-index/faiss-adapter.js +16 -0
  408. package/dist/conversation-index/faiss-adapter.js.map +1 -0
  409. package/dist/conversation-index/indexer.d.ts +23 -0
  410. package/dist/conversation-index/indexer.js +15 -0
  411. package/dist/conversation-index/indexer.js.map +1 -0
  412. package/dist/conversation-index/search.d.ts +6 -0
  413. package/dist/conversation-index/search.js +11 -0
  414. package/dist/conversation-index/search.js.map +1 -0
  415. package/dist/day-summary.d.ts +1 -1
  416. package/dist/delinearize.d.ts +1 -1
  417. package/dist/direct-answer-wiring.d.ts +1 -1
  418. package/dist/direct-answer-wiring.js +1 -1
  419. package/dist/direct-answer.d.ts +1 -1
  420. package/dist/embedding-fallback.d.ts +1 -1
  421. package/dist/embedding-fallback.js +2 -2
  422. package/dist/enrichment/index.d.ts +163 -0
  423. package/dist/enrichment/index.js +18 -0
  424. package/dist/enrichment/index.js.map +1 -0
  425. package/dist/entity-retrieval.d.ts +4 -2
  426. package/dist/entity-retrieval.js +9 -6
  427. package/dist/entity-schema.d.ts +1 -1
  428. package/dist/evals.js +1 -1
  429. package/dist/event-order-recall.d.ts +17 -0
  430. package/dist/event-order-recall.js +11 -0
  431. package/dist/event-order-recall.js.map +1 -0
  432. package/dist/evidence-pack.d.ts +3 -1
  433. package/dist/evidence-pack.js +5 -3
  434. package/dist/explicit-capture.d.ts +23 -6
  435. package/dist/explicit-capture.js +2 -2
  436. package/dist/explicit-cue-recall.d.ts +4 -1
  437. package/dist/explicit-cue-recall.js +4 -2
  438. package/dist/extraction-judge-telemetry.d.ts +1 -1
  439. package/dist/extraction-judge-training.d.ts +1 -1
  440. package/dist/extraction-judge-training.js +1 -1
  441. package/dist/extraction-judge.d.ts +1 -1
  442. package/dist/extraction.d.ts +1 -1
  443. package/dist/extraction.js +11 -10
  444. package/dist/faiss-adapter-CzPghc4C.d.ts +70 -0
  445. package/dist/fallback-llm.d.ts +4 -1
  446. package/dist/fallback-llm.js +6 -6
  447. package/dist/focused-list-recall.d.ts +17 -0
  448. package/dist/focused-list-recall.js +11 -0
  449. package/dist/focused-list-recall.js.map +1 -0
  450. package/dist/graph-edge-decay-5DI5GUNL.js +207 -0
  451. package/dist/identity-continuity.d.ts +1 -1
  452. package/dist/importance.d.ts +1 -1
  453. package/dist/index-DJ9QWMw-.d.ts +35 -0
  454. package/dist/index.d.ts +107 -715
  455. package/dist/index.js +657 -2611
  456. package/dist/index.js.map +1 -1
  457. package/dist/intent.d.ts +1 -1
  458. package/dist/intent.js +1 -1
  459. package/dist/lcm/archive.d.ts +89 -0
  460. package/dist/lcm/archive.js +12 -0
  461. package/dist/lcm/archive.js.map +1 -0
  462. package/dist/lcm/dag.d.ts +48 -0
  463. package/dist/lcm/dag.js +8 -0
  464. package/dist/lcm/dag.js.map +1 -0
  465. package/dist/lcm/engine.d.ts +116 -0
  466. package/dist/lcm/engine.js +20 -0
  467. package/dist/lcm/engine.js.map +1 -0
  468. package/dist/lcm/index.d.ts +12 -0
  469. package/dist/lcm/index.js +44 -0
  470. package/dist/lcm/index.js.map +1 -0
  471. package/dist/lcm/queue.d.ts +62 -0
  472. package/dist/lcm/queue.js +8 -0
  473. package/dist/lcm/queue.js.map +1 -0
  474. package/dist/lcm/recall.d.ts +20 -0
  475. package/dist/lcm/recall.js +8 -0
  476. package/dist/lcm/recall.js.map +1 -0
  477. package/dist/lcm/schema.d.ts +16 -0
  478. package/dist/lcm/schema.js +14 -0
  479. package/dist/lcm/schema.js.map +1 -0
  480. package/dist/lcm/summarizer.d.ts +38 -0
  481. package/dist/lcm/summarizer.js +12 -0
  482. package/dist/lcm/summarizer.js.map +1 -0
  483. package/dist/lcm/tools.d.ts +29 -0
  484. package/dist/lcm/tools.js +8 -0
  485. package/dist/lcm/tools.js.map +1 -0
  486. package/dist/lifecycle.d.ts +1 -1
  487. package/dist/live-connectors-runner.d.ts +1 -1
  488. package/dist/live-connectors-runner.js +5 -5
  489. package/dist/local-llm.d.ts +8 -4
  490. package/dist/local-llm.js +3 -3
  491. package/dist/maintenance/archive-observations.d.ts +18 -0
  492. package/dist/maintenance/archive-observations.js +8 -0
  493. package/dist/maintenance/archive-observations.js.map +1 -0
  494. package/dist/maintenance/backup-stamp.d.ts +3 -0
  495. package/dist/maintenance/backup-stamp.js +8 -0
  496. package/dist/maintenance/backup-stamp.js.map +1 -0
  497. package/dist/maintenance/memory-governance-cron.d.ts +85 -0
  498. package/dist/maintenance/memory-governance-cron.js +22 -0
  499. package/dist/maintenance/memory-governance-cron.js.map +1 -0
  500. package/dist/maintenance/memory-governance.d.ts +137 -0
  501. package/dist/maintenance/memory-governance.js +40 -0
  502. package/dist/maintenance/memory-governance.js.map +1 -0
  503. package/dist/maintenance/migrate-observations.d.ts +18 -0
  504. package/dist/maintenance/migrate-observations.js +9 -0
  505. package/dist/maintenance/migrate-observations.js.map +1 -0
  506. package/dist/maintenance/observation-ledger-utils.d.ts +10 -0
  507. package/dist/maintenance/observation-ledger-utils.js +10 -0
  508. package/dist/maintenance/observation-ledger-utils.js.map +1 -0
  509. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +15 -0
  510. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +28 -0
  511. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js.map +1 -0
  512. package/dist/maintenance/rebuild-memory-projection.d.ts +77 -0
  513. package/dist/maintenance/rebuild-memory-projection.js +35 -0
  514. package/dist/maintenance/rebuild-memory-projection.js.map +1 -0
  515. package/dist/maintenance/rebuild-observations.d.ts +17 -0
  516. package/dist/maintenance/rebuild-observations.js +9 -0
  517. package/dist/maintenance/rebuild-observations.js.map +1 -0
  518. package/dist/mcp-memory-inspector-app.d.ts +124 -0
  519. package/dist/mcp-memory-inspector-app.js +20 -0
  520. package/dist/mcp-memory-inspector-app.js.map +1 -0
  521. package/dist/memory-action-policy.d.ts +1 -1
  522. package/dist/memory-cache.d.ts +1 -1
  523. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  524. package/dist/memory-projection-store.d.ts +108 -3
  525. package/dist/memory-projection-store.js +2 -1
  526. package/dist/memory-provenance.d.ts +57 -0
  527. package/dist/memory-provenance.js +13 -0
  528. package/dist/memory-provenance.js.map +1 -0
  529. package/dist/memory-worth-outcomes.d.ts +4 -2
  530. package/dist/migrate/from-engram.d.ts +24 -0
  531. package/dist/migrate/from-engram.js +12 -0
  532. package/dist/migrate/from-engram.js.map +1 -0
  533. package/dist/models-json.d.ts +1 -1
  534. package/dist/namespaces/migrate.d.ts +50 -0
  535. package/dist/namespaces/migrate.js +50 -0
  536. package/dist/namespaces/migrate.js.map +1 -0
  537. package/dist/namespaces/principal.d.ts +17 -0
  538. package/dist/namespaces/principal.js +16 -0
  539. package/dist/namespaces/principal.js.map +1 -0
  540. package/dist/namespaces/search.d.ts +46 -0
  541. package/dist/namespaces/search.js +28 -0
  542. package/dist/namespaces/search.js.map +1 -0
  543. package/dist/namespaces/storage.d.ts +32 -0
  544. package/dist/namespaces/storage.js +28 -0
  545. package/dist/namespaces/storage.js.map +1 -0
  546. package/dist/native-knowledge.d.ts +1 -1
  547. package/dist/network/tailscale.d.ts +41 -0
  548. package/dist/network/tailscale.js +9 -0
  549. package/dist/network/tailscale.js.map +1 -0
  550. package/dist/network/webdav.d.ts +39 -0
  551. package/dist/network/webdav.js +10 -0
  552. package/dist/network/webdav.js.map +1 -0
  553. package/dist/objective-state-writers.d.ts +1 -1
  554. package/dist/objective-state-writers.js +2 -2
  555. package/dist/operator-toolkit.d.ts +4 -2
  556. package/dist/operator-toolkit.js +35 -17
  557. package/dist/opik-exporter.js +2 -2
  558. package/dist/opik-exporter.js.map +1 -1
  559. package/dist/orchestrator-DuWl9Hwx.d.ts +1244 -0
  560. package/dist/orchestrator.d.ts +24 -7
  561. package/dist/orchestrator.js +107 -65
  562. package/dist/path-MR5JPYOP.js +9 -0
  563. package/dist/path-MR5JPYOP.js.map +1 -0
  564. package/dist/patterns-cli.d.ts +1 -1
  565. package/dist/policy-runtime.d.ts +1 -1
  566. package/dist/qmd-recall-cache.d.ts +2 -2
  567. package/dist/qmd.d.ts +103 -4
  568. package/dist/qmd.js +23 -5
  569. package/dist/recall-disclosure-escalation.d.ts +1 -1
  570. package/dist/recall-explain-renderer.d.ts +3 -1
  571. package/dist/recall-explain-renderer.js +5 -3
  572. package/dist/recall-state.d.ts +1 -1
  573. package/dist/recall-tag-filter.d.ts +3 -1
  574. package/dist/recall-xray-cli.d.ts +3 -1
  575. package/dist/recall-xray-cli.js +6 -4
  576. package/dist/recall-xray-renderer.d.ts +3 -1
  577. package/dist/recall-xray-renderer.js +5 -3
  578. package/dist/recall-xray.d.ts +8 -1
  579. package/dist/recall-xray.js +4 -2
  580. package/dist/replay/normalizers/chatgpt.d.ts +6 -0
  581. package/dist/replay/normalizers/chatgpt.js +11 -0
  582. package/dist/replay/normalizers/chatgpt.js.map +1 -0
  583. package/dist/replay/normalizers/claude.d.ts +6 -0
  584. package/dist/replay/normalizers/claude.js +11 -0
  585. package/dist/replay/normalizers/claude.js.map +1 -0
  586. package/dist/replay/normalizers/openclaw.d.ts +6 -0
  587. package/dist/replay/normalizers/openclaw.js +11 -0
  588. package/dist/replay/normalizers/openclaw.js.map +1 -0
  589. package/dist/replay/normalizers/shared.d.ts +16 -0
  590. package/dist/replay/normalizers/shared.js +14 -0
  591. package/dist/replay/normalizers/shared.js.map +1 -0
  592. package/dist/replay/runner.d.ts +35 -0
  593. package/dist/replay/runner.js +16 -0
  594. package/dist/replay/runner.js.map +1 -0
  595. package/dist/replay/types.d.ts +57 -0
  596. package/dist/replay/types.js +19 -0
  597. package/dist/replay/types.js.map +1 -0
  598. package/dist/resolution-B7FNQSSP.js +12 -0
  599. package/dist/resolution-B7FNQSSP.js.map +1 -0
  600. package/dist/resolve-auth-token.d.ts +1 -1
  601. package/dist/resolve-provider-secret.js +2 -2
  602. package/dist/response-guidance-recall.d.ts +18 -0
  603. package/dist/response-guidance-recall.js +11 -0
  604. package/dist/response-guidance-recall.js.map +1 -0
  605. package/dist/resume-bundles.js +7 -5
  606. package/dist/retrieval-agents.d.ts +2 -2
  607. package/dist/retrieval-tiers.d.ts +1 -1
  608. package/dist/routing/engine.d.ts +35 -0
  609. package/dist/routing/engine.js +16 -0
  610. package/dist/routing/engine.js.map +1 -0
  611. package/dist/routing/store.d.ts +27 -0
  612. package/dist/routing/store.js +10 -0
  613. package/dist/routing/store.js.map +1 -0
  614. package/dist/runtime/better-sqlite.d.ts +8 -0
  615. package/dist/runtime/better-sqlite.js +10 -0
  616. package/dist/runtime/better-sqlite.js.map +1 -0
  617. package/dist/runtime/child-process.d.ts +32 -0
  618. package/dist/runtime/child-process.js +10 -0
  619. package/dist/runtime/child-process.js.map +1 -0
  620. package/dist/runtime/env.d.ts +5 -0
  621. package/dist/runtime/env.js +12 -0
  622. package/dist/runtime/env.js.map +1 -0
  623. package/dist/sdk-compat.js +1 -1
  624. package/dist/search/document-scanner.d.ts +22 -0
  625. package/dist/search/document-scanner.js +8 -0
  626. package/dist/search/document-scanner.js.map +1 -0
  627. package/dist/search/embed-helper.d.ts +35 -0
  628. package/dist/search/embed-helper.js +9 -0
  629. package/dist/search/embed-helper.js.map +1 -0
  630. package/dist/search/factory.d.ts +32 -0
  631. package/dist/search/factory.js +29 -0
  632. package/dist/search/factory.js.map +1 -0
  633. package/dist/search/index.d.ts +15 -0
  634. package/dist/search/index.js +50 -0
  635. package/dist/search/index.js.map +1 -0
  636. package/dist/search/lancedb-backend.d.ts +51 -0
  637. package/dist/search/lancedb-backend.js +10 -0
  638. package/dist/search/lancedb-backend.js.map +1 -0
  639. package/dist/search/meilisearch-backend.d.ts +48 -0
  640. package/dist/search/meilisearch-backend.js +10 -0
  641. package/dist/search/meilisearch-backend.js.map +1 -0
  642. package/dist/search/noop-backend.d.ts +26 -0
  643. package/dist/search/noop-backend.js +8 -0
  644. package/dist/search/noop-backend.js.map +1 -0
  645. package/dist/search/orama-backend.d.ts +53 -0
  646. package/dist/search/orama-backend.js +10 -0
  647. package/dist/search/orama-backend.js.map +1 -0
  648. package/dist/search/port.d.ts +61 -0
  649. package/dist/search/port.js +1 -0
  650. package/dist/search/port.js.map +1 -0
  651. package/dist/search/remote-backend.d.ts +39 -0
  652. package/dist/search/remote-backend.js +9 -0
  653. package/dist/search/remote-backend.js.map +1 -0
  654. package/dist/secure-store/index.d.ts +890 -0
  655. package/dist/secure-store/index.js +156 -0
  656. package/dist/secure-store/index.js.map +1 -0
  657. package/dist/semantic-VwGI14Ok.d.ts +69 -0
  658. package/dist/semantic-consolidation-4HkHWgeI.d.ts +180 -0
  659. package/dist/semantic-consolidation.d.ts +3 -3
  660. package/dist/semantic-consolidation.js +15 -8
  661. package/dist/semantic-rule-promotion.js +9 -6
  662. package/dist/semantic-rule-verifier.d.ts +1 -1
  663. package/dist/semantic-rule-verifier.js +10 -7
  664. package/dist/session-observer-bands.d.ts +1 -1
  665. package/dist/session-observer-state.d.ts +1 -1
  666. package/dist/shared-context/manager.d.ts +131 -0
  667. package/dist/shared-context/manager.js +15 -0
  668. package/dist/shared-context/manager.js.map +1 -0
  669. package/dist/signal.d.ts +1 -1
  670. package/dist/skills-registry.js +13 -1
  671. package/dist/skills-registry.js.map +1 -1
  672. package/dist/state-store-VZU2IA53.js +16 -0
  673. package/dist/state-store-VZU2IA53.js.map +1 -0
  674. package/dist/storage-paths.d.ts +9 -0
  675. package/dist/storage-paths.js +20 -0
  676. package/dist/storage-paths.js.map +1 -0
  677. package/dist/storage.d.ts +6 -2
  678. package/dist/storage.js +8 -5
  679. package/dist/summarizer.d.ts +6 -1
  680. package/dist/summarizer.js +11 -10
  681. package/dist/summary-snapshot.d.ts +1 -1
  682. package/dist/summary-snapshot.js +2 -1
  683. package/dist/surfaces/dreams.d.ts +16 -0
  684. package/dist/surfaces/dreams.js +282 -0
  685. package/dist/surfaces/dreams.js.map +1 -0
  686. package/dist/surfaces/heartbeat.d.ts +17 -0
  687. package/dist/surfaces/heartbeat.js +265 -0
  688. package/dist/surfaces/heartbeat.js.map +1 -0
  689. package/dist/targeted-fact-recall.d.ts +17 -0
  690. package/dist/targeted-fact-recall.js +11 -0
  691. package/dist/targeted-fact-recall.js.map +1 -0
  692. package/dist/telemetry-transcript.d.ts +7 -0
  693. package/dist/telemetry-transcript.js +16 -0
  694. package/dist/telemetry-transcript.js.map +1 -0
  695. package/dist/temporal-supersession.d.ts +4 -2
  696. package/dist/temporal-supersession.js +2 -1
  697. package/dist/temporal-validity.d.ts +1 -1
  698. package/dist/threading.d.ts +6 -1
  699. package/dist/threading.js +2 -1
  700. package/dist/tier-migration.d.ts +5 -3
  701. package/dist/tier-routing.d.ts +1 -1
  702. package/dist/tokens.js +2 -2
  703. package/dist/topics.d.ts +1 -1
  704. package/dist/transcript.d.ts +16 -2
  705. package/dist/transcript.js +2 -1
  706. package/dist/transfer/autodetect.d.ts +4 -0
  707. package/dist/transfer/autodetect.js +15 -0
  708. package/dist/transfer/autodetect.js.map +1 -0
  709. package/dist/transfer/backup.d.ts +21 -0
  710. package/dist/transfer/backup.js +17 -0
  711. package/dist/transfer/backup.js.map +1 -0
  712. package/dist/transfer/capsule-export.d.ts +113 -0
  713. package/dist/transfer/capsule-export.js +19 -0
  714. package/dist/transfer/capsule-export.js.map +1 -0
  715. package/dist/transfer/capsule-import.d.ts +124 -0
  716. package/dist/transfer/capsule-import.js +16 -0
  717. package/dist/transfer/capsule-import.js.map +1 -0
  718. package/dist/transfer/constants.d.ts +13 -0
  719. package/dist/transfer/constants.js +12 -0
  720. package/dist/transfer/constants.js.map +1 -0
  721. package/dist/transfer/export-json.d.ts +11 -0
  722. package/dist/transfer/export-json.js +11 -0
  723. package/dist/transfer/export-json.js.map +1 -0
  724. package/dist/transfer/export-md.d.ts +10 -0
  725. package/dist/transfer/export-md.js +13 -0
  726. package/dist/transfer/export-md.js.map +1 -0
  727. package/dist/transfer/export-sqlite.d.ts +9 -0
  728. package/dist/transfer/export-sqlite.js +12 -0
  729. package/dist/transfer/export-sqlite.js.map +1 -0
  730. package/dist/transfer/fs-utils.d.ts +61 -0
  731. package/dist/transfer/fs-utils.js +40 -0
  732. package/dist/transfer/fs-utils.js.map +1 -0
  733. package/dist/transfer/import-json.d.ts +16 -0
  734. package/dist/transfer/import-json.js +13 -0
  735. package/dist/transfer/import-json.js.map +1 -0
  736. package/dist/transfer/import-md.d.ts +14 -0
  737. package/dist/transfer/import-md.js +11 -0
  738. package/dist/transfer/import-md.js.map +1 -0
  739. package/dist/transfer/import-sqlite.d.ts +14 -0
  740. package/dist/transfer/import-sqlite.js +12 -0
  741. package/dist/transfer/import-sqlite.js.map +1 -0
  742. package/dist/transfer/sqlite-schema.d.ts +4 -0
  743. package/dist/transfer/sqlite-schema.js +10 -0
  744. package/dist/transfer/sqlite-schema.js.map +1 -0
  745. package/dist/transfer/types.d.ts +916 -0
  746. package/dist/transfer/types.js +30 -0
  747. package/dist/transfer/types.js.map +1 -0
  748. package/dist/trust-zones.d.ts +3 -2
  749. package/dist/trust-zones.js +1 -1
  750. package/dist/types.d.ts +88 -3
  751. package/dist/types.js +1 -1
  752. package/dist/user-model.d.ts +37 -0
  753. package/dist/user-model.js +28 -0
  754. package/dist/user-model.js.map +1 -0
  755. package/dist/utility-runtime.d.ts +1 -1
  756. package/dist/verified-recall.js +11 -8
  757. package/dist/work/board.d.ts +43 -0
  758. package/dist/work/board.js +14 -0
  759. package/dist/work/board.js.map +1 -0
  760. package/dist/work/boundary.d.ts +8 -0
  761. package/dist/work/boundary.js +14 -0
  762. package/dist/work/boundary.js.map +1 -0
  763. package/dist/work/storage.d.ts +39 -0
  764. package/dist/work/storage.js +11 -0
  765. package/dist/work/storage.js.map +1 -0
  766. package/dist/work/types.d.ts +75 -0
  767. package/dist/work/types.js +1 -0
  768. package/dist/work/types.js.map +1 -0
  769. package/package.json +2767 -6
  770. package/scripts/faiss_index.py +816 -0
  771. package/scripts/faiss_requirements.txt +3 -0
  772. package/skills/remnic-entities/SKILL.md +51 -0
  773. package/skills/remnic-memory-workflow/SKILL.md +61 -0
  774. package/skills/remnic-recall/SKILL.md +51 -0
  775. package/skills/remnic-remember/SKILL.md +56 -0
  776. package/skills/remnic-search/SKILL.md +51 -0
  777. package/skills/remnic-status/SKILL.md +51 -0
  778. package/src/abort-error.test.ts +49 -0
  779. package/src/abort-error.ts +46 -0
  780. package/src/abstraction-nodes.ts +162 -0
  781. package/src/access-audit.test.ts +178 -0
  782. package/src/access-audit.ts +125 -0
  783. package/src/access-cli.test.ts +439 -0
  784. package/src/access-cli.ts +438 -0
  785. package/src/access-http.test.ts +225 -0
  786. package/src/access-http.ts +1899 -0
  787. package/src/access-idempotency.ts +232 -0
  788. package/src/access-mcp.test.ts +568 -0
  789. package/src/access-mcp.ts +3056 -0
  790. package/src/access-schema-pi.test.ts +60 -0
  791. package/src/access-schema.ts +522 -0
  792. package/src/access-service-namespace.test.ts +123 -0
  793. package/src/access-service.ts +5629 -0
  794. package/src/action-confidence.test.ts +206 -0
  795. package/src/action-confidence.ts +466 -0
  796. package/src/active-memory-bridge.test.ts +285 -0
  797. package/src/active-memory-bridge.ts +217 -0
  798. package/src/active-recall.test.ts +484 -0
  799. package/src/active-recall.ts +459 -0
  800. package/src/adapters/claude-code.ts +56 -0
  801. package/src/adapters/codex.ts +57 -0
  802. package/src/adapters/hermes.ts +64 -0
  803. package/src/adapters/index.ts +6 -0
  804. package/src/adapters/registry.ts +41 -0
  805. package/src/adapters/replit.ts +55 -0
  806. package/src/adapters/types.ts +51 -0
  807. package/src/behavior-learner.ts +144 -0
  808. package/src/behavior-signals.ts +73 -0
  809. package/src/binary-lifecycle/backend.ts +117 -0
  810. package/src/binary-lifecycle/index.ts +35 -0
  811. package/src/binary-lifecycle/manifest.ts +79 -0
  812. package/src/binary-lifecycle/pipeline.ts +352 -0
  813. package/src/binary-lifecycle/scanner.ts +89 -0
  814. package/src/binary-lifecycle/types.ts +89 -0
  815. package/src/bootstrap.ts +178 -0
  816. package/src/boxes.ts +521 -0
  817. package/src/briefing.test.ts +1535 -0
  818. package/src/briefing.ts +1382 -0
  819. package/src/buffer-session.test.ts +443 -0
  820. package/src/buffer-surprise-report.ts +176 -0
  821. package/src/buffer-surprise-telemetry.test.ts +606 -0
  822. package/src/buffer-surprise-trigger.test.ts +766 -0
  823. package/src/buffer-surprise.test.ts +339 -0
  824. package/src/buffer-surprise.ts +203 -0
  825. package/src/buffer.ts +900 -0
  826. package/src/bulk-import/cli-command.test.ts +204 -0
  827. package/src/bulk-import/index.ts +34 -0
  828. package/src/bulk-import/pipeline.test.ts +445 -0
  829. package/src/bulk-import/pipeline.ts +178 -0
  830. package/src/bulk-import/registry.test.ts +151 -0
  831. package/src/bulk-import/registry.ts +72 -0
  832. package/src/bulk-import/types.test.ts +272 -0
  833. package/src/bulk-import/types.ts +145 -0
  834. package/src/calibration.ts +394 -0
  835. package/src/capsule-cli.test.ts +398 -0
  836. package/src/capsule-cli.ts +565 -0
  837. package/src/causal-behavior.ts +308 -0
  838. package/src/causal-chain.ts +419 -0
  839. package/src/causal-consolidation.ts +370 -0
  840. package/src/causal-retrieval.ts +286 -0
  841. package/src/causal-trajectory-graph.ts +60 -0
  842. package/src/causal-trajectory.ts +303 -0
  843. package/src/chunking.ts +220 -0
  844. package/src/citations.ts +232 -0
  845. package/src/cli.ts +9403 -0
  846. package/src/codex-cli-fallback.ts +162 -0
  847. package/src/codex-thread-key.ts +1 -0
  848. package/src/coding/access-coding-context.test.ts +197 -0
  849. package/src/coding/coding-branch-scope.test.ts +281 -0
  850. package/src/coding/coding-namespace.test.ts +360 -0
  851. package/src/coding/coding-namespace.ts +412 -0
  852. package/src/coding/coding-orchestrator.test.ts +249 -0
  853. package/src/coding/git-context.test.ts +507 -0
  854. package/src/coding/git-context.ts +336 -0
  855. package/src/coding/mcp-set-coding-context.test.ts +174 -0
  856. package/src/coding/review-context.test.ts +316 -0
  857. package/src/coding/review-context.ts +349 -0
  858. package/src/coding/wire-coding-context.test.ts +468 -0
  859. package/src/commitment-ledger.test.ts +78 -0
  860. package/src/commitment-ledger.ts +337 -0
  861. package/src/compat/checks.test.ts +206 -0
  862. package/src/compat/checks.ts +716 -0
  863. package/src/compat/types.ts +33 -0
  864. package/src/compounding/engine.ts +1686 -0
  865. package/src/compounding/preference-consolidator.ts +778 -0
  866. package/src/compression-optimizer.ts +312 -0
  867. package/src/config.test.ts +930 -0
  868. package/src/config.ts +3807 -0
  869. package/src/connectors/codex/instructions.md +160 -0
  870. package/src/connectors/codex/resources/namespace-cheatsheet.md +48 -0
  871. package/src/connectors/codex-marketplace.ts +500 -0
  872. package/src/connectors/codex-materialize-runner.ts +212 -0
  873. package/src/connectors/codex-materialize.ts +983 -0
  874. package/src/connectors/coerce.ts +62 -0
  875. package/src/connectors/index.test.ts +1570 -0
  876. package/src/connectors/index.ts +3222 -0
  877. package/src/connectors/live/framework.ts +164 -0
  878. package/src/connectors/live/github.test.ts +1218 -0
  879. package/src/connectors/live/github.ts +1068 -0
  880. package/src/connectors/live/gmail.test.ts +1706 -0
  881. package/src/connectors/live/gmail.ts +1293 -0
  882. package/src/connectors/live/google-drive.test.ts +696 -0
  883. package/src/connectors/live/google-drive.ts +724 -0
  884. package/src/connectors/live/index.ts +101 -0
  885. package/src/connectors/live/live-connectors.test.ts +689 -0
  886. package/src/connectors/live/notion.test.ts +1109 -0
  887. package/src/connectors/live/notion.ts +978 -0
  888. package/src/connectors/live/registry.ts +103 -0
  889. package/src/connectors/live/state-store.ts +399 -0
  890. package/src/connectors/live/transient-errors.ts +150 -0
  891. package/src/connectors/weclone-installer.test.ts +850 -0
  892. package/src/connectors-cli.ts +513 -0
  893. package/src/console/state.test.ts +224 -0
  894. package/src/console/state.ts +514 -0
  895. package/src/console/trace.test.ts +813 -0
  896. package/src/console/trace.ts +603 -0
  897. package/src/console/tui.test.ts +582 -0
  898. package/src/console/tui.ts +508 -0
  899. package/src/consolidation-operator.ts +182 -0
  900. package/src/consolidation-provenance-check.ts +551 -0
  901. package/src/consolidation-undo.ts +718 -0
  902. package/src/contradiction/contradiction-judge.test.ts +189 -0
  903. package/src/contradiction/contradiction-judge.ts +333 -0
  904. package/src/contradiction/contradiction-review.ts +574 -0
  905. package/src/contradiction/contradiction-scan.ts +504 -0
  906. package/src/contradiction/contradiction.test.ts +2230 -0
  907. package/src/contradiction/index.ts +37 -0
  908. package/src/contradiction/resolution.ts +383 -0
  909. package/src/conversation-index/backend.ts +323 -0
  910. package/src/conversation-index/chunker.ts +47 -0
  911. package/src/conversation-index/cleanup.ts +53 -0
  912. package/src/conversation-index/faiss-adapter.ts +384 -0
  913. package/src/conversation-index/indexer.test.ts +164 -0
  914. package/src/conversation-index/indexer.ts +192 -0
  915. package/src/conversation-index/search.ts +37 -0
  916. package/src/cross-namespace-budget.test.ts +275 -0
  917. package/src/cross-namespace-budget.ts +365 -0
  918. package/src/cue-anchors.ts +163 -0
  919. package/src/curation/index.ts +544 -0
  920. package/src/dashboard-runtime.ts +337 -0
  921. package/src/day-summary.ts +122 -0
  922. package/src/dedup/index.ts +330 -0
  923. package/src/dedup/semantic.test.ts +1577 -0
  924. package/src/dedup/semantic.ts +148 -0
  925. package/src/delinearize.ts +193 -0
  926. package/src/direct-answer-wiring.test.ts +473 -0
  927. package/src/direct-answer-wiring.ts +180 -0
  928. package/src/direct-answer.test.ts +484 -0
  929. package/src/direct-answer.ts +273 -0
  930. package/src/embedding-fallback.ts +565 -0
  931. package/src/enrichment/audit.ts +89 -0
  932. package/src/enrichment/index.ts +27 -0
  933. package/src/enrichment/pipeline.ts +197 -0
  934. package/src/enrichment/provider-registry.ts +85 -0
  935. package/src/enrichment/types.ts +100 -0
  936. package/src/enrichment/web-search-provider.ts +63 -0
  937. package/src/entity-retrieval.ts +774 -0
  938. package/src/entity-schema.ts +239 -0
  939. package/src/evals.ts +1312 -0
  940. package/src/event-order-recall.test.ts +4164 -0
  941. package/src/event-order-recall.ts +2802 -0
  942. package/src/evidence-pack.test.ts +89 -0
  943. package/src/evidence-pack.ts +388 -0
  944. package/src/explicit-capture.ts +530 -0
  945. package/src/explicit-cue-recall.test.ts +3019 -0
  946. package/src/explicit-cue-recall.ts +5545 -0
  947. package/src/extraction-judge-telemetry.ts +234 -0
  948. package/src/extraction-judge-training.ts +221 -0
  949. package/src/extraction-judge.ts +846 -0
  950. package/src/extraction-timeout.test.ts +265 -0
  951. package/src/extraction.ts +2719 -0
  952. package/src/fallback-llm.test.ts +1060 -0
  953. package/src/fallback-llm.ts +918 -0
  954. package/src/focused-list-recall.test.ts +734 -0
  955. package/src/focused-list-recall.ts +1160 -0
  956. package/src/graph-dashboard-diff.ts +35 -0
  957. package/src/graph-dashboard-key.ts +5 -0
  958. package/src/graph-dashboard-parser.ts +104 -0
  959. package/src/graph-edge-reinforcement.ts +192 -0
  960. package/src/graph-events.ts +151 -0
  961. package/src/graph-recall.test.ts +164 -0
  962. package/src/graph-recall.ts +189 -0
  963. package/src/graph-retrieval.test.ts +809 -0
  964. package/src/graph-retrieval.ts +823 -0
  965. package/src/graph-snapshot.ts +329 -0
  966. package/src/graph.ts +813 -0
  967. package/src/harmonic-retrieval.ts +223 -0
  968. package/src/himem.ts +154 -0
  969. package/src/hygiene.ts +87 -0
  970. package/src/identity-continuity.ts +333 -0
  971. package/src/importance.ts +328 -0
  972. package/src/importers/base.test.ts +294 -0
  973. package/src/importers/base.ts +436 -0
  974. package/src/importers/index.ts +21 -0
  975. package/src/index.ts +1204 -0
  976. package/src/intent.ts +154 -0
  977. package/src/json-extract.ts +85 -0
  978. package/src/json-store.ts +42 -0
  979. package/src/lcm/archive.ts +617 -0
  980. package/src/lcm/dag.ts +199 -0
  981. package/src/lcm/engine.ts +645 -0
  982. package/src/lcm/index.ts +7 -0
  983. package/src/lcm/queue.test.ts +178 -0
  984. package/src/lcm/queue.ts +200 -0
  985. package/src/lcm/recall.ts +117 -0
  986. package/src/lcm/schema.ts +154 -0
  987. package/src/lcm/summarizer.ts +235 -0
  988. package/src/lcm/tools.ts +191 -0
  989. package/src/lcm-engine.test.ts +660 -0
  990. package/src/legacy-hook-compat.test.ts +20 -0
  991. package/src/legacy-hook-compat.ts +45 -0
  992. package/src/lifecycle.ts +289 -0
  993. package/src/live-connectors-runner.ts +385 -0
  994. package/src/local-llm-qos.test.ts +303 -0
  995. package/src/local-llm-thinking.test.ts +292 -0
  996. package/src/local-llm.ts +1464 -0
  997. package/src/logger.ts +49 -0
  998. package/src/maintenance/archive-observations.ts +147 -0
  999. package/src/maintenance/backup-stamp.ts +3 -0
  1000. package/src/maintenance/dreams-ledger.ts +516 -0
  1001. package/src/maintenance/first-start-migration.ts +362 -0
  1002. package/src/maintenance/forget.test.ts +206 -0
  1003. package/src/maintenance/forget.ts +126 -0
  1004. package/src/maintenance/graph-edge-decay.test.ts +409 -0
  1005. package/src/maintenance/graph-edge-decay.ts +394 -0
  1006. package/src/maintenance/memory-governance-cron.ts +447 -0
  1007. package/src/maintenance/memory-governance.ts +1039 -0
  1008. package/src/maintenance/migrate-observations.ts +216 -0
  1009. package/src/maintenance/observation-ledger-utils.ts +54 -0
  1010. package/src/maintenance/pattern-reinforcement.test.ts +875 -0
  1011. package/src/maintenance/pattern-reinforcement.ts +369 -0
  1012. package/src/maintenance/purge.ts +334 -0
  1013. package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +78 -0
  1014. package/src/maintenance/rebuild-memory-projection.ts +1234 -0
  1015. package/src/maintenance/rebuild-observations.ts +178 -0
  1016. package/src/maintenance/tier-stats.test.ts +378 -0
  1017. package/src/maintenance/tier-stats.ts +222 -0
  1018. package/src/mcp-memory-inspector-app.ts +421 -0
  1019. package/src/memory-action-policy.ts +80 -0
  1020. package/src/memory-cache.ts +208 -0
  1021. package/src/memory-extension/claude-code-publisher.ts +51 -0
  1022. package/src/memory-extension/codex-publisher.ts +149 -0
  1023. package/src/memory-extension/hermes-publisher.ts +51 -0
  1024. package/src/memory-extension/index.ts +100 -0
  1025. package/src/memory-extension/shared-instructions.ts +133 -0
  1026. package/src/memory-extension/types.ts +86 -0
  1027. package/src/memory-extension-host/host-discovery.ts +276 -0
  1028. package/src/memory-extension-host/index.ts +14 -0
  1029. package/src/memory-extension-host/render-extensions-block.ts +73 -0
  1030. package/src/memory-extension-host/types.ts +21 -0
  1031. package/src/memory-lifecycle-ledger-utils.ts +116 -0
  1032. package/src/memory-projection-format.ts +11 -0
  1033. package/src/memory-projection-store.ts +951 -0
  1034. package/src/memory-provenance.test.ts +196 -0
  1035. package/src/memory-provenance.ts +484 -0
  1036. package/src/memory-worth-bench.test.ts +71 -0
  1037. package/src/memory-worth-bench.ts +265 -0
  1038. package/src/memory-worth-filter.test.ts +209 -0
  1039. package/src/memory-worth-filter.ts +204 -0
  1040. package/src/memory-worth-frontmatter.test.ts +311 -0
  1041. package/src/memory-worth-outcomes.test.ts +316 -0
  1042. package/src/memory-worth-outcomes.ts +286 -0
  1043. package/src/memory-worth.test.ts +317 -0
  1044. package/src/memory-worth.ts +215 -0
  1045. package/src/message-parts/index.ts +806 -0
  1046. package/src/message-parts/message-parts.test.ts +421 -0
  1047. package/src/migrate/from-engram.ts +789 -0
  1048. package/src/model-registry.ts +313 -0
  1049. package/src/models-json.ts +76 -0
  1050. package/src/namespaces/migrate.ts +187 -0
  1051. package/src/namespaces/path.ts +25 -0
  1052. package/src/namespaces/principal.test.ts +195 -0
  1053. package/src/namespaces/principal.ts +86 -0
  1054. package/src/namespaces/search.test.ts +105 -0
  1055. package/src/namespaces/search.ts +233 -0
  1056. package/src/namespaces/storage.ts +74 -0
  1057. package/src/native-knowledge.ts +1823 -0
  1058. package/src/negative.ts +72 -0
  1059. package/src/network/tailscale.ts +179 -0
  1060. package/src/network/webdav.ts +385 -0
  1061. package/src/objective-state-writers.ts +951 -0
  1062. package/src/objective-state.ts +320 -0
  1063. package/src/onboarding/index.ts +529 -0
  1064. package/src/openai-chat-compat.ts +56 -0
  1065. package/src/operator-toolkit.ts +2132 -0
  1066. package/src/opik-exporter.test.ts +72 -0
  1067. package/src/opik-exporter.ts +587 -0
  1068. package/src/orchestrator-extraction-queue.test.ts +197 -0
  1069. package/src/orchestrator-flush.test.ts +1171 -0
  1070. package/src/orchestrator-pattern-reinforcement.test.ts +128 -0
  1071. package/src/orchestrator-source-attribution.test.ts +701 -0
  1072. package/src/orchestrator.ts +16368 -0
  1073. package/src/page-versioning.ts +450 -0
  1074. package/src/patterns-cli.ts +574 -0
  1075. package/src/peers/index.ts +54 -0
  1076. package/src/peers/migrate-from-identity-anchor.test.ts +291 -0
  1077. package/src/peers/migrate-from-identity-anchor.ts +350 -0
  1078. package/src/peers/peers.test.ts +419 -0
  1079. package/src/peers/profile-reasoner.ts +694 -0
  1080. package/src/peers/storage.ts +1350 -0
  1081. package/src/peers/types.ts +138 -0
  1082. package/src/plugin-id.ts +84 -0
  1083. package/src/policy-runtime.ts +209 -0
  1084. package/src/procedural/procedure-miner.ts +150 -0
  1085. package/src/procedural/procedure-recall.ts +93 -0
  1086. package/src/procedural/procedure-stats.ts +213 -0
  1087. package/src/procedural/procedure-types.ts +132 -0
  1088. package/src/procedural/reinforcement-core.test.ts +132 -0
  1089. package/src/procedural/reinforcement-core.ts +73 -0
  1090. package/src/profiling.test.ts +263 -0
  1091. package/src/profiling.ts +435 -0
  1092. package/src/projection/index.ts +398 -0
  1093. package/src/qmd-recall-cache.test.ts +138 -0
  1094. package/src/qmd-recall-cache.ts +111 -0
  1095. package/src/qmd.test.ts +257 -0
  1096. package/src/qmd.ts +2614 -0
  1097. package/src/reasoning-trace-recall.ts +201 -0
  1098. package/src/reasoning-trace-types.ts +235 -0
  1099. package/src/recall-audit-anomaly.test.ts +246 -0
  1100. package/src/recall-audit-anomaly.ts +297 -0
  1101. package/src/recall-audit.test.ts +51 -0
  1102. package/src/recall-audit.ts +72 -0
  1103. package/src/recall-budget-config.test.ts +87 -0
  1104. package/src/recall-disclosure-escalation.test.ts +196 -0
  1105. package/src/recall-disclosure-escalation.ts +158 -0
  1106. package/src/recall-disclosure-shaping.test.ts +146 -0
  1107. package/src/recall-disclosure.test.ts +214 -0
  1108. package/src/recall-explain-renderer.test.ts +140 -0
  1109. package/src/recall-explain-renderer.ts +356 -0
  1110. package/src/recall-mmr.test.ts +808 -0
  1111. package/src/recall-mmr.ts +607 -0
  1112. package/src/recall-qos.test.ts +85 -0
  1113. package/src/recall-qos.ts +82 -0
  1114. package/src/recall-query-policy.ts +221 -0
  1115. package/src/recall-state.test.ts +233 -0
  1116. package/src/recall-state.ts +456 -0
  1117. package/src/recall-tag-filter.ts +143 -0
  1118. package/src/recall-tokenization.ts +35 -0
  1119. package/src/recall-xray-cli.test.ts +118 -0
  1120. package/src/recall-xray-cli.ts +100 -0
  1121. package/src/recall-xray-disclosure-telemetry.test.ts +183 -0
  1122. package/src/recall-xray-renderer.test.ts +539 -0
  1123. package/src/recall-xray-renderer.ts +487 -0
  1124. package/src/recall-xray.test.ts +503 -0
  1125. package/src/recall-xray.ts +621 -0
  1126. package/src/reconstruct.ts +41 -0
  1127. package/src/release-changelog.ts +35 -0
  1128. package/src/relevance.ts +67 -0
  1129. package/src/replay/normalizers/chatgpt.ts +133 -0
  1130. package/src/replay/normalizers/claude.ts +102 -0
  1131. package/src/replay/normalizers/openclaw.ts +119 -0
  1132. package/src/replay/normalizers/shared.ts +69 -0
  1133. package/src/replay/runner.ts +197 -0
  1134. package/src/replay/types.ts +143 -0
  1135. package/src/rerank.test.ts +48 -0
  1136. package/src/rerank.ts +176 -0
  1137. package/src/resolve-auth-token.test.ts +226 -0
  1138. package/src/resolve-auth-token.ts +151 -0
  1139. package/src/resolve-provider-secret.test.ts +187 -0
  1140. package/src/resolve-provider-secret.ts +410 -0
  1141. package/src/response-guidance-recall.test.ts +3952 -0
  1142. package/src/response-guidance-recall.ts +4431 -0
  1143. package/src/resume-bundles.ts +415 -0
  1144. package/src/retrieval-agents.ts +623 -0
  1145. package/src/retrieval-tiers.ts +25 -0
  1146. package/src/retrieval.ts +104 -0
  1147. package/src/review/index.test.ts +201 -0
  1148. package/src/review/index.ts +536 -0
  1149. package/src/routing/engine.ts +162 -0
  1150. package/src/routing/store.ts +321 -0
  1151. package/src/runtime/better-sqlite.test.ts +32 -0
  1152. package/src/runtime/better-sqlite.ts +76 -0
  1153. package/src/runtime/child-process.ts +67 -0
  1154. package/src/runtime/env.ts +48 -0
  1155. package/src/sanitize.ts +58 -0
  1156. package/src/schemas.ts +449 -0
  1157. package/src/sdk-compat.ts +87 -0
  1158. package/src/search/document-scanner.ts +96 -0
  1159. package/src/search/embed-helper.ts +142 -0
  1160. package/src/search/factory.ts +189 -0
  1161. package/src/search/index.ts +10 -0
  1162. package/src/search/lancedb-backend.ts +342 -0
  1163. package/src/search/meilisearch-backend.ts +232 -0
  1164. package/src/search/noop-backend.ts +57 -0
  1165. package/src/search/orama-backend.ts +358 -0
  1166. package/src/search/port.ts +86 -0
  1167. package/src/search/remote-backend.ts +124 -0
  1168. package/src/secure-store/cipher.ts +271 -0
  1169. package/src/secure-store/cli-handlers.ts +355 -0
  1170. package/src/secure-store/cli-renderer.ts +131 -0
  1171. package/src/secure-store/header.ts +373 -0
  1172. package/src/secure-store/index.ts +137 -0
  1173. package/src/secure-store/kdf.ts +263 -0
  1174. package/src/secure-store/keyring.ts +106 -0
  1175. package/src/secure-store/metadata.ts +394 -0
  1176. package/src/secure-store/passphrase-reader.ts +252 -0
  1177. package/src/secure-store/secure-fs.ts +571 -0
  1178. package/src/secure-store/secure-store.test.ts +755 -0
  1179. package/src/semantic-chunking.ts +545 -0
  1180. package/src/semantic-consolidation.test.ts +182 -0
  1181. package/src/semantic-consolidation.ts +432 -0
  1182. package/src/semantic-rule-promotion.ts +183 -0
  1183. package/src/semantic-rule-verifier.ts +160 -0
  1184. package/src/session-integrity.ts +569 -0
  1185. package/src/session-observer-bands.ts +11 -0
  1186. package/src/session-observer-state.ts +346 -0
  1187. package/src/session-toggles.test.ts +96 -0
  1188. package/src/session-toggles.ts +159 -0
  1189. package/src/shared-context/manager.ts +810 -0
  1190. package/src/signal.ts +84 -0
  1191. package/src/skills-registry.test.ts +277 -0
  1192. package/src/skills-registry.ts +120 -0
  1193. package/src/source-attribution-roundtrip.test.ts +215 -0
  1194. package/src/source-attribution.test.ts +1425 -0
  1195. package/src/source-attribution.ts +639 -0
  1196. package/src/spaces/index.ts +627 -0
  1197. package/src/storage-paths.ts +117 -0
  1198. package/src/storage.ts +6657 -0
  1199. package/src/store-contract.ts +55 -0
  1200. package/src/summarizer.ts +844 -0
  1201. package/src/summary-snapshot.test.ts +681 -0
  1202. package/src/summary-snapshot.ts +238 -0
  1203. package/src/surfaces/dreams.test.ts +394 -0
  1204. package/src/surfaces/dreams.ts +346 -0
  1205. package/src/surfaces/heartbeat.test.ts +415 -0
  1206. package/src/surfaces/heartbeat.ts +325 -0
  1207. package/src/sync/index.ts +308 -0
  1208. package/src/targeted-fact-recall.test.ts +1694 -0
  1209. package/src/targeted-fact-recall.ts +2905 -0
  1210. package/src/taxonomy/default-taxonomy.ts +87 -0
  1211. package/src/taxonomy/index.ts +26 -0
  1212. package/src/taxonomy/resolver-doc-generator.ts +57 -0
  1213. package/src/taxonomy/resolver.ts +184 -0
  1214. package/src/taxonomy/taxonomy-loader.ts +186 -0
  1215. package/src/taxonomy/types.ts +48 -0
  1216. package/src/telemetry-transcript.ts +70 -0
  1217. package/src/temporal-index.ts +890 -0
  1218. package/src/temporal-supersession.test.ts +2703 -0
  1219. package/src/temporal-supersession.ts +493 -0
  1220. package/src/temporal-validity.test.ts +448 -0
  1221. package/src/temporal-validity.ts +123 -0
  1222. package/src/threading.ts +395 -0
  1223. package/src/tier-migration.ts +124 -0
  1224. package/src/tier-routing.ts +102 -0
  1225. package/src/tmt.ts +462 -0
  1226. package/src/tokens.test.ts +178 -0
  1227. package/src/tokens.ts +279 -0
  1228. package/src/topics.ts +147 -0
  1229. package/src/training-export/cli-date-validation.test.ts +258 -0
  1230. package/src/training-export/converter.test.ts +452 -0
  1231. package/src/training-export/converter.ts +319 -0
  1232. package/src/training-export/date-parse.ts +117 -0
  1233. package/src/training-export/index.ts +26 -0
  1234. package/src/training-export/registry.test.ts +85 -0
  1235. package/src/training-export/registry.ts +57 -0
  1236. package/src/training-export/types.ts +31 -0
  1237. package/src/transcript.ts +1179 -0
  1238. package/src/transfer/autodetect.ts +30 -0
  1239. package/src/transfer/backup.ts +138 -0
  1240. package/src/transfer/capsule-crypto.ts +485 -0
  1241. package/src/transfer/capsule-encrypt.test.ts +690 -0
  1242. package/src/transfer/capsule-export.ts +543 -0
  1243. package/src/transfer/capsule-fork.ts +375 -0
  1244. package/src/transfer/capsule-import.ts +564 -0
  1245. package/src/transfer/capsule-merge.ts +433 -0
  1246. package/src/transfer/conflict-policy.ts +16 -0
  1247. package/src/transfer/constants.ts +13 -0
  1248. package/src/transfer/exclusions.ts +37 -0
  1249. package/src/transfer/export-json.ts +65 -0
  1250. package/src/transfer/export-md.ts +59 -0
  1251. package/src/transfer/export-sqlite.ts +52 -0
  1252. package/src/transfer/fs-utils.ts +269 -0
  1253. package/src/transfer/import-json.ts +108 -0
  1254. package/src/transfer/import-md.ts +84 -0
  1255. package/src/transfer/import-sqlite.ts +100 -0
  1256. package/src/transfer/integrity.ts +71 -0
  1257. package/src/transfer/sqlite-schema.ts +16 -0
  1258. package/src/transfer/types.ts +297 -0
  1259. package/src/trust-zones.ts +1186 -0
  1260. package/src/types.ts +3074 -0
  1261. package/src/user-model.test.ts +124 -0
  1262. package/src/user-model.ts +162 -0
  1263. package/src/utility-learner.ts +353 -0
  1264. package/src/utility-runtime.ts +88 -0
  1265. package/src/utility-telemetry.ts +215 -0
  1266. package/src/utils/category-dir.ts +44 -0
  1267. package/src/utils/errno.ts +6 -0
  1268. package/src/utils/iso-timestamp.test.ts +37 -0
  1269. package/src/utils/iso-timestamp.ts +164 -0
  1270. package/src/utils/path.ts +26 -0
  1271. package/src/verified-recall.ts +138 -0
  1272. package/src/version-utils.test.ts +10 -0
  1273. package/src/version-utils.ts +9 -0
  1274. package/src/whitespace.ts +10 -0
  1275. package/src/work/board.ts +359 -0
  1276. package/src/work/boundary.ts +107 -0
  1277. package/src/work/storage.ts +436 -0
  1278. package/src/work/types.ts +82 -0
  1279. package/src/work-product-ledger.ts +265 -0
  1280. package/dist/access-service-BkXt3di1.d.ts +0 -2039
  1281. package/dist/capsule-crypto-SJS5VVAP.js +0 -18
  1282. package/dist/capsule-export-LLEVB2RG.js +0 -17
  1283. package/dist/capsule-import-UW45R2MZ.js +0 -16
  1284. package/dist/capsule-merge-DI7PNQ2H.js +0 -189
  1285. package/dist/chunk-2LGMW3DJ.js +0 -111
  1286. package/dist/chunk-2YMTO4ZJ.js +0 -265
  1287. package/dist/chunk-2YMTO4ZJ.js.map +0 -1
  1288. package/dist/chunk-363MWCD3.js +0 -9683
  1289. package/dist/chunk-363MWCD3.js.map +0 -1
  1290. package/dist/chunk-36CTNQY7.js +0 -1554
  1291. package/dist/chunk-36CTNQY7.js.map +0 -1
  1292. package/dist/chunk-457A4P3L.js +0 -119
  1293. package/dist/chunk-457A4P3L.js.map +0 -1
  1294. package/dist/chunk-4DXC6HQQ.js +0 -1837
  1295. package/dist/chunk-4DXC6HQQ.js.map +0 -1
  1296. package/dist/chunk-4IS4SXIQ.js +0 -2040
  1297. package/dist/chunk-57QNCUEZ.js +0 -1914
  1298. package/dist/chunk-57QNCUEZ.js.map +0 -1
  1299. package/dist/chunk-6AUUAZEX.js +0 -150
  1300. package/dist/chunk-6AUUAZEX.js.map +0 -1
  1301. package/dist/chunk-6TBWYBJ3.js +0 -236
  1302. package/dist/chunk-6XA7UN4Z.js +0 -135
  1303. package/dist/chunk-6Z6UH6TK.js +0 -2129
  1304. package/dist/chunk-6Z6UH6TK.js.map +0 -1
  1305. package/dist/chunk-74EMIVE4.js +0 -329
  1306. package/dist/chunk-74EMIVE4.js.map +0 -1
  1307. package/dist/chunk-74WWN7ZW.js +0 -82
  1308. package/dist/chunk-74WWN7ZW.js.map +0 -1
  1309. package/dist/chunk-767ODGE6.js +0 -183
  1310. package/dist/chunk-A4ACKWIW.js +0 -289
  1311. package/dist/chunk-A4ACKWIW.js.map +0 -1
  1312. package/dist/chunk-ASAITVLA.js +0 -64
  1313. package/dist/chunk-ASAITVLA.js.map +0 -1
  1314. package/dist/chunk-C5HUWVH2.js +0 -891
  1315. package/dist/chunk-C5HUWVH2.js.map +0 -1
  1316. package/dist/chunk-D54LZC5L.js +0 -147
  1317. package/dist/chunk-DF3RVK3X.js +0 -119
  1318. package/dist/chunk-DF3RVK3X.js.map +0 -1
  1319. package/dist/chunk-E6K4NIEU.js +0 -747
  1320. package/dist/chunk-E6K4NIEU.js.map +0 -1
  1321. package/dist/chunk-EEQLFRUM.js +0 -89
  1322. package/dist/chunk-EQINRHYR.js +0 -672
  1323. package/dist/chunk-EQINRHYR.js.map +0 -1
  1324. package/dist/chunk-ETOW6ACV.js +0 -158
  1325. package/dist/chunk-ETOW6ACV.js.map +0 -1
  1326. package/dist/chunk-EYNQTST2.js +0 -721
  1327. package/dist/chunk-FYIYMQ5N.js +0 -221
  1328. package/dist/chunk-FYIYMQ5N.js.map +0 -1
  1329. package/dist/chunk-G2WADRQ3.js +0 -219
  1330. package/dist/chunk-G4SK7DSQ.js +0 -121
  1331. package/dist/chunk-GGD5W7TB.js +0 -105
  1332. package/dist/chunk-GGD5W7TB.js.map +0 -1
  1333. package/dist/chunk-GVPWB7EY.js +0 -390
  1334. package/dist/chunk-GVPWB7EY.js.map +0 -1
  1335. package/dist/chunk-HJYHRE4S.js +0 -647
  1336. package/dist/chunk-I6BQZSML.js +0 -1451
  1337. package/dist/chunk-I6BQZSML.js.map +0 -1
  1338. package/dist/chunk-IBX3VFOM.js +0 -446
  1339. package/dist/chunk-IBX3VFOM.js.map +0 -1
  1340. package/dist/chunk-IXEJRKCZ.js +0 -18
  1341. package/dist/chunk-JBMSGZEQ.js +0 -441
  1342. package/dist/chunk-JBMSGZEQ.js.map +0 -1
  1343. package/dist/chunk-JRNQ3RNA.js +0 -284
  1344. package/dist/chunk-JRNQ3RNA.js.map +0 -1
  1345. package/dist/chunk-K6WK37A6.js +0 -865
  1346. package/dist/chunk-K6WK37A6.js.map +0 -1
  1347. package/dist/chunk-KBYWQWSB.js +0 -271
  1348. package/dist/chunk-KUHRUM6B.js +0 -14397
  1349. package/dist/chunk-KUHRUM6B.js.map +0 -1
  1350. package/dist/chunk-KWBPHZUU.js +0 -83
  1351. package/dist/chunk-KWBPHZUU.js.map +0 -1
  1352. package/dist/chunk-LIO5X3CM.js +0 -596
  1353. package/dist/chunk-MARWOCVP.js +0 -48
  1354. package/dist/chunk-MCC6KDQF.js +0 -5095
  1355. package/dist/chunk-MCC6KDQF.js.map +0 -1
  1356. package/dist/chunk-N5AKDXAI.js +0 -74
  1357. package/dist/chunk-NN3LPQ5D.js +0 -936
  1358. package/dist/chunk-NN3LPQ5D.js.map +0 -1
  1359. package/dist/chunk-O4XJUPSF.js +0 -533
  1360. package/dist/chunk-O4XJUPSF.js.map +0 -1
  1361. package/dist/chunk-OA3L7BFR.js +0 -183
  1362. package/dist/chunk-OA3L7BFR.js.map +0 -1
  1363. package/dist/chunk-OR64ZGRZ.js +0 -23
  1364. package/dist/chunk-P73JTV34.js +0 -275
  1365. package/dist/chunk-P73JTV34.js.map +0 -1
  1366. package/dist/chunk-P77UEOU2.js +0 -1521
  1367. package/dist/chunk-P77UEOU2.js.map +0 -1
  1368. package/dist/chunk-PB5KW5PL.js +0 -118
  1369. package/dist/chunk-PHNGXFQ6.js +0 -623
  1370. package/dist/chunk-PHNGXFQ6.js.map +0 -1
  1371. package/dist/chunk-QIGOEM65.js +0 -228
  1372. package/dist/chunk-RXTFCYQF.js +0 -108
  1373. package/dist/chunk-S2JJBLJG.js +0 -2101
  1374. package/dist/chunk-S2JJBLJG.js.map +0 -1
  1375. package/dist/chunk-S3IP6R6K.js +0 -219
  1376. package/dist/chunk-S3IP6R6K.js.map +0 -1
  1377. package/dist/chunk-SRBJUAMP.js +0 -403
  1378. package/dist/chunk-SRBJUAMP.js.map +0 -1
  1379. package/dist/chunk-URB2WSKZ.js +0 -350
  1380. package/dist/chunk-URB2WSKZ.js.map +0 -1
  1381. package/dist/chunk-VQXK37XA.js +0 -26
  1382. package/dist/chunk-VQXK37XA.js.map +0 -1
  1383. package/dist/chunk-VTU2B4VF.js +0 -146
  1384. package/dist/chunk-VTU2B4VF.js.map +0 -1
  1385. package/dist/chunk-VX2IUQFE.js +0 -613
  1386. package/dist/chunk-VX2IUQFE.js.map +0 -1
  1387. package/dist/chunk-WGK4VHGP.js +0 -4292
  1388. package/dist/chunk-WGK4VHGP.js.map +0 -1
  1389. package/dist/chunk-WTFWLUSX.js +0 -827
  1390. package/dist/chunk-WTFWLUSX.js.map +0 -1
  1391. package/dist/chunk-XJKFSSDW.js +0 -726
  1392. package/dist/chunk-XJKFSSDW.js.map +0 -1
  1393. package/dist/chunk-XMHBH5H6.js +0 -283
  1394. package/dist/chunk-XMHBH5H6.js.map +0 -1
  1395. package/dist/chunk-XMVFHBHT.js +0 -277
  1396. package/dist/chunk-Y5KDIOKF.js +0 -2403
  1397. package/dist/chunk-Y5KDIOKF.js.map +0 -1
  1398. package/dist/chunk-YNB73F22.js +0 -137
  1399. package/dist/chunk-YNB73F22.js.map +0 -1
  1400. package/dist/chunk-Z2E7VW55.js +0 -335
  1401. package/dist/chunk-Z2E7VW55.js.map +0 -1
  1402. package/dist/chunk-Z5S5HNGY.js +0 -2280
  1403. package/dist/chunk-Z5S5HNGY.js.map +0 -1
  1404. package/dist/chunk-ZL4S7ARC.js +0 -53
  1405. package/dist/chunk-ZTSE2ZJ6.js +0 -190
  1406. package/dist/chunk-ZTSE2ZJ6.js.map +0 -1
  1407. package/dist/cli-Cvy2SNhF.d.ts +0 -1259
  1408. package/dist/codex-materialize-CQlLTzke.d.ts +0 -139
  1409. package/dist/connectors-cli-DFGtY2DB.d.ts +0 -257
  1410. package/dist/contradiction-review-5LTTVDQV.js +0 -22
  1411. package/dist/contradiction-scan-3Z6YW7YA.js +0 -413
  1412. package/dist/contradiction-scan-3Z6YW7YA.js.map +0 -1
  1413. package/dist/engine-FOC3IJLA.js +0 -28
  1414. package/dist/fs-utils-IRVUFB6G.js +0 -30
  1415. package/dist/graph-edge-decay-PWB63GRE.js +0 -207
  1416. package/dist/index-1qIcnbG1.d.ts +0 -34
  1417. package/dist/memory-governance-F3QOJGEY.js +0 -37
  1418. package/dist/memory-projection-store-CY8TU40w.d.ts +0 -222
  1419. package/dist/orchestrator-AOQMo7QI.d.ts +0 -1784
  1420. package/dist/path-RMTY5Y5A.js +0 -9
  1421. package/dist/port-B6VEDIkC.d.ts +0 -53
  1422. package/dist/resolution-YGIBORXI.js +0 -101
  1423. package/dist/resolution-YGIBORXI.js.map +0 -1
  1424. package/dist/secure-store-4R2GSO7S.js +0 -156
  1425. package/dist/semantic-consolidation-ByBXb-sf.d.ts +0 -180
  1426. package/dist/state-store-3EH7HYIN.js +0 -16
  1427. package/dist/types-V3FJ26TF.js +0 -30
  1428. /package/dist/{capsule-crypto-SJS5VVAP.js.map → action-confidence.js.map} +0 -0
  1429. /package/dist/{capsule-export-LLEVB2RG.js.map → adapters/claude-code.js.map} +0 -0
  1430. /package/dist/{capsule-import-UW45R2MZ.js.map → adapters/codex.js.map} +0 -0
  1431. /package/dist/{contradiction-review-5LTTVDQV.js.map → adapters/hermes.js.map} +0 -0
  1432. /package/dist/{engine-FOC3IJLA.js.map → adapters/index.js.map} +0 -0
  1433. /package/dist/{fs-utils-IRVUFB6G.js.map → adapters/registry.js.map} +0 -0
  1434. /package/dist/{memory-governance-F3QOJGEY.js.map → adapters/replit.js.map} +0 -0
  1435. /package/dist/{path-RMTY5Y5A.js.map → adapters/types.js.map} +0 -0
  1436. /package/dist/{secure-store-4R2GSO7S.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
  1437. /package/dist/{capsule-merge-DI7PNQ2H.js.map → capsule-merge-4MGKE7C5.js.map} +0 -0
  1438. /package/dist/{chunk-G4SK7DSQ.js.map → chunk-2WWLHTZY.js.map} +0 -0
  1439. /package/dist/{chunk-KBYWQWSB.js.map → chunk-4CRG46BG.js.map} +0 -0
  1440. /package/dist/{chunk-LIO5X3CM.js.map → chunk-7IASACLB.js.map} +0 -0
  1441. /package/dist/{chunk-EYNQTST2.js.map → chunk-EFJ3MQ4V.js.map} +0 -0
  1442. /package/dist/{chunk-D54LZC5L.js.map → chunk-FDU6HUUL.js.map} +0 -0
  1443. /package/dist/{chunk-QIGOEM65.js.map → chunk-GGKRUQOO.js.map} +0 -0
  1444. /package/dist/{chunk-HJYHRE4S.js.map → chunk-GL6I6MEQ.js.map} +0 -0
  1445. /package/dist/{state-store-3EH7HYIN.js.map → chunk-HHLLAQGZ.js.map} +0 -0
  1446. /package/dist/{chunk-4IS4SXIQ.js.map → chunk-HXXBL2KD.js.map} +0 -0
  1447. /package/dist/{chunk-767ODGE6.js.map → chunk-KNKUID7G.js.map} +0 -0
  1448. /package/dist/{chunk-6TBWYBJ3.js.map → chunk-LPMVBPA3.js.map} +0 -0
  1449. /package/dist/{chunk-PB5KW5PL.js.map → chunk-MC26UJIM.js.map} +0 -0
  1450. /package/dist/{chunk-ZL4S7ARC.js.map → chunk-MT4HVDUZ.js.map} +0 -0
  1451. /package/dist/{chunk-G2WADRQ3.js.map → chunk-MY6TPVXW.js.map} +0 -0
  1452. /package/dist/{chunk-OR64ZGRZ.js.map → chunk-NNVTUXEB.js.map} +0 -0
  1453. /package/dist/{chunk-RXTFCYQF.js.map → chunk-P4NEIHUT.js.map} +0 -0
  1454. /package/dist/{chunk-IXEJRKCZ.js.map → chunk-QRNI5JBH.js.map} +0 -0
  1455. /package/dist/{chunk-EEQLFRUM.js.map → chunk-RRF5UOBJ.js.map} +0 -0
  1456. /package/dist/{types-V3FJ26TF.js.map → chunk-SEDEKFYQ.js.map} +0 -0
  1457. /package/dist/{chunk-2LGMW3DJ.js.map → chunk-U3PN77QT.js.map} +0 -0
  1458. /package/dist/{chunk-XMVFHBHT.js.map → chunk-U3WSW6PZ.js.map} +0 -0
  1459. /package/dist/{chunk-N5AKDXAI.js.map → chunk-UWVJF25J.js.map} +0 -0
  1460. /package/dist/{chunk-MARWOCVP.js.map → chunk-XIG5PDM7.js.map} +0 -0
  1461. /package/dist/{chunk-6XA7UN4Z.js.map → chunk-XVZ7B3HG.js.map} +0 -0
  1462. /package/dist/{graph-edge-decay-PWB63GRE.js.map → graph-edge-decay-5DI5GUNL.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/explicit-cue-recall.ts"],"sourcesContent":["import { buildEvidencePack } from \"./evidence-pack.js\";\n\nexport interface ExplicitCueRecallEngine {\n expandContext(\n sessionId: string,\n fromTurn: number,\n toTurn: number,\n maxTokens: number,\n ): Promise<Array<{ turn_index: number; role: string; content: string }>>;\n getStats?(sessionId?: string): Promise<{\n totalMessages: number;\n maxTurnIndex?: number;\n }>;\n searchContextFull(\n query: string,\n limit: number,\n sessionId?: string,\n ): Promise<\n Array<{\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n score?: number;\n }>\n >;\n}\n\nexport interface ExplicitCueRecallOptions {\n engine: ExplicitCueRecallEngine | null | undefined;\n sessionId?: string;\n query: string;\n maxChars: number;\n maxItemChars?: number;\n maxReferences?: number;\n includeBenchmarkAnchorCues?: boolean;\n includeContentLexicalCues?: boolean;\n includeStructuredPlanCues?: boolean;\n}\n\nexport interface TrajectoryAnalysisRecallOptions {\n engine: ExplicitCueRecallEngine | null | undefined;\n sessionId?: string;\n query: string;\n maxChars: number;\n}\n\nexport type ExplicitTurnReference = {\n number: number;\n includeDirectTurn: boolean;\n};\n\nconst DEFAULT_MAX_CHARS = 2_400;\nconst DEFAULT_MAX_ITEM_CHARS = 1_200;\nconst DEFAULT_MAX_REFERENCES = 24;\nconst REFERENCE_SCAN_TOKEN_FACTOR = 3;\nconst TURN_REFERENCE_WINDOW_RADIUS = 0;\nconst LEXICAL_CUE_WINDOW_RADIUS = 1;\nconst LEXICAL_CUE_SEARCH_LIMIT = 3;\nconst LEXICAL_CUE_MAX_TOKENS = 400;\nconst FOCUSED_TRANSCRIPT_SCAN_MAX_TOKENS = 250_000;\nconst CONTENT_LABEL_SEARCH_LIMIT = 64;\nconst CONTENT_LABEL_MAX_TOKENS = 2_000;\nconst CONTENT_LABEL_MAX_PAIRED_WINDOWS_PER_REFERENCE = 1;\nconst TRAJECTORY_ANALYSIS_MAX_TOKENS = 250_000;\nconst TRAJECTORY_ANALYSIS_MAX_RANGE_STEPS = 80;\nconst TRAJECTORY_ANALYSIS_MAX_LINES = 160;\nconst LATEST_STATE_CUES = new Set([\n \"as of\",\n \"currently\",\n \"latest\",\n \"most recent\",\n \"newest\",\n \"now\",\n \"updated\",\n \"changed\",\n \"change\",\n]);\nconst STRUCTURED_PLAN_FIELD_CUES = new Set([\n \"accommodation\",\n \"attraction\",\n \"breakfast\",\n \"current city\",\n \"dinner\",\n \"flight\",\n \"flights\",\n \"hotel\",\n \"lunch\",\n \"restaurant\",\n \"restaurants\",\n \"transportation\",\n \"traveler\",\n \"travelers\",\n]);\nconst STRUCTURED_PLAN_DEPENDENCY_CUES = new Set([\n \"comparison\",\n \"constraint\",\n \"constraints\",\n \"dependency\",\n \"dependencies\",\n \"join\",\n \"same\",\n \"shared\",\n]);\nconst BENCHMARK_ABILITY_CUES = new Map([\n [\"information extraction\", \"ability=information_extraction\"],\n [\"knowledge update\", \"ability=knowledge_update\"],\n [\"multi session reasoning\", \"ability=multi_session_reasoning\"],\n [\"multi-session reasoning\", \"ability=multi_session_reasoning\"],\n [\"instruction following\", \"ability=instruction_following\"],\n]);\nconst BENCHMARK_ANCHOR_VALUE_STOPWORDS = new Set([\n \"a\",\n \"about\",\n \"an\",\n \"for\",\n \"from\",\n \"in\",\n \"on\",\n \"the\",\n \"to\",\n \"use\",\n \"using\",\n \"with\",\n]);\nconst RELATIVE_TEMPORAL_CUES = [\n \"as of\",\n \"most recent\",\n \"last time\",\n \"last week\",\n \"last month\",\n \"last year\",\n \"last session\",\n \"last conversation\",\n \"next time\",\n \"next week\",\n \"next month\",\n \"next year\",\n \"next session\",\n \"next conversation\",\n \"previous time\",\n \"previous week\",\n \"previous month\",\n \"previous year\",\n \"previous session\",\n \"previous conversation\",\n \"prior time\",\n \"prior week\",\n \"prior month\",\n \"prior year\",\n \"prior session\",\n \"prior conversation\",\n \"today\",\n \"yesterday\",\n \"tomorrow\",\n \"tonight\",\n \"earlier\",\n \"later\",\n \"recently\",\n \"previously\",\n \"currently\",\n \"now\",\n \"latest\",\n \"newest\",\n \"oldest\",\n \"earliest\",\n \"before\",\n \"after\",\n \"since\",\n \"updated\",\n \"changed\",\n \"change\",\n];\nconst SPEAKER_NAME_STOPWORDS = new Set([\n \"A\",\n \"According\",\n \"An\",\n \"And\",\n \"Are\",\n \"As\",\n \"At\",\n \"Before\",\n \"Can\",\n \"Compare\",\n \"Could\",\n \"Did\",\n \"Do\",\n \"Does\",\n \"For\",\n \"From\",\n \"Had\",\n \"Has\",\n \"Have\",\n \"How\",\n \"In\",\n \"Is\",\n \"It\",\n \"Join\",\n \"Of\",\n \"On\",\n \"Or\",\n \"Please\",\n \"Review\",\n \"Step\",\n \"Tell\",\n \"The\",\n \"To\",\n \"Turn\",\n \"Use\",\n \"Was\",\n \"Were\",\n \"What\",\n \"When\",\n \"Where\",\n \"Which\",\n \"Who\",\n \"Why\",\n \"Will\",\n \"Would\",\n]);\nconst QUESTION_SLOT_STOPWORDS = new Set([\n \"answer\",\n \"choice\",\n \"did\",\n \"does\",\n \"do\",\n \"is\",\n \"should\",\n \"single\",\n \"the\",\n \"user\",\n \"was\",\n \"were\",\n]);\nconst CONTENT_LEXICAL_CUE_STOPWORDS = new Set([\n \"about\",\n \"across\",\n \"after\",\n \"again\",\n \"also\",\n \"and\",\n \"answer\",\n \"answers\",\n \"are\",\n \"before\",\n \"between\",\n \"can\",\n \"could\",\n \"different\",\n \"did\",\n \"does\",\n \"during\",\n \"feature\",\n \"features\",\n \"from\",\n \"have\",\n \"help\",\n \"how\",\n \"implement\",\n \"into\",\n \"made\",\n \"many\",\n \"me\",\n \"mention\",\n \"my\",\n \"need\",\n \"only\",\n \"order\",\n \"over\",\n \"project\",\n \"question\",\n \"questions\",\n \"request\",\n \"requests\",\n \"show\",\n \"tell\",\n \"that\",\n \"the\",\n \"there\",\n \"these\",\n \"through\",\n \"throughout\",\n \"trying\",\n \"want\",\n \"were\",\n \"what\",\n \"when\",\n \"which\",\n \"with\",\n \"would\",\n \"you\",\n]);\nconst CONTENT_LEXICAL_PHRASE_STOPWORDS = new Set(\n [...CONTENT_LEXICAL_CUE_STOPWORDS].filter(\n (word) => word !== \"feature\" && word !== \"features\" && word !== \"implement\",\n ),\n);\n\nexport async function buildExplicitCueRecallSection(\n options: ExplicitCueRecallOptions,\n): Promise<string> {\n const engine = options.engine;\n const query = options.query.trim();\n const maxChars = normalizePositiveInteger(options.maxChars, DEFAULT_MAX_CHARS);\n if (!engine || query.length === 0 || maxChars <= 0) {\n return \"\";\n }\n\n const maxReferences = normalizePositiveInteger(\n options.maxReferences,\n DEFAULT_MAX_REFERENCES,\n );\n if (maxReferences <= 0) {\n return \"\";\n }\n\n const evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n score?: number;\n }> = [];\n const seenTurns = new Set<string>();\n\n await collectTurnReferenceEvidence({\n engine,\n sessionId: options.sessionId,\n query,\n maxReferences,\n evidenceItems,\n seenTurns,\n });\n\n if (options.includeContentLexicalCues) {\n await collectNamedMeetingFactEvidence({\n engine,\n sessionId: options.sessionId,\n query,\n maxReferences,\n evidenceItems,\n seenTurns,\n });\n\n await collectFocusedTranscriptCueEvidence({\n engine,\n sessionId: options.sessionId,\n query,\n evidenceItems,\n seenTurns,\n });\n }\n\n await collectLexicalCueEvidence({\n engine,\n sessionId: options.sessionId,\n query,\n maxReferences,\n includeBenchmarkAnchorCues: options.includeBenchmarkAnchorCues,\n includeContentLexicalCues: options.includeContentLexicalCues,\n includeStructuredPlanCues: options.includeStructuredPlanCues,\n evidenceItems,\n seenTurns,\n });\n\n const evidenceFocusQuery = buildEvidenceFocusQuery(query, {\n includeBenchmarkAnchorCues: options.includeBenchmarkAnchorCues,\n includeContentLexicalCues: options.includeContentLexicalCues,\n includeStructuredPlanCues: options.includeStructuredPlanCues,\n });\n return buildEvidencePack(evidenceItems, {\n title: \"Explicit Cue Evidence\",\n query: evidenceFocusQuery,\n maxChars,\n maxItemChars: normalizePositiveInteger(\n options.maxItemChars,\n DEFAULT_MAX_ITEM_CHARS,\n ),\n });\n}\n\nfunction buildEvidenceFocusQuery(\n query: string,\n options: {\n includeBenchmarkAnchorCues?: boolean;\n includeContentLexicalCues?: boolean;\n includeStructuredPlanCues?: boolean;\n },\n): string {\n const cues = collectLexicalCues(query, options);\n if (cues.length === 0) {\n return query;\n }\n return `${query}\\n${cues.join(\"\\n\")}`;\n}\n\nexport async function buildTrajectoryAnalysisRecallSection(\n options: TrajectoryAnalysisRecallOptions,\n): Promise<string> {\n const engine = options.engine;\n const sessionId = options.sessionId;\n const query = options.query.trim();\n const maxChars = normalizePositiveInteger(options.maxChars, DEFAULT_MAX_CHARS);\n if (!engine || !sessionId || !engine.getStats || query.length === 0 || maxChars <= 0) {\n return \"\";\n }\n\n if (!hasTrajectoryAnalysisIntent(query)) {\n return \"\";\n }\n\n const stats = await engine.getStats(sessionId);\n const totalMessages = Math.max(0, Math.floor(stats.totalMessages));\n if (totalMessages <= 0) {\n return \"\";\n }\n const expansionEnd = normalizeTurnExpansionEnd(stats);\n\n const messages = await engine.expandContext(\n sessionId,\n 0,\n expansionEnd,\n TRAJECTORY_ANALYSIS_MAX_TOKENS,\n );\n const trajectory = parseLabeledTrajectory(messages);\n if (trajectory.length === 0) {\n return \"\";\n }\n\n const bounds = inferTrajectoryBounds(query, trajectory);\n const lines = buildTrajectoryAnalysisLines(query, trajectory, bounds);\n if (lines.length === 0) {\n return \"\";\n }\n\n const header = \"## Trajectory analysis\";\n const bodyBudget = maxChars - header.length - 1;\n if (bodyBudget <= 0) {\n return \"\";\n }\n\n const clipped = truncateTrajectoryAnalysisLines(lines, bodyBudget);\n return clipped.length === 0 ? \"\" : `${header}\\n${clipped.join(\"\\n\")}`;\n}\n\nasync function collectTurnReferenceEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n maxReferences: number;\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>;\n seenTurns: Set<string>;\n}): Promise<void> {\n if (!options.sessionId) {\n return;\n }\n\n const references = collectExplicitTurnReferences(options.query).slice(\n 0,\n options.maxReferences,\n );\n if (references.length === 0) {\n return;\n }\n\n await collectContentLabelReferenceEvidence({\n engine: options.engine,\n sessionId: options.sessionId,\n query: options.query,\n references,\n evidenceItems: options.evidenceItems,\n seenTurns: options.seenTurns,\n });\n\n const windows = new Map<string, { fromTurn: number; toTurn: number }>();\n for (const reference of references) {\n for (const center of candidateTurnIndexesForReference(reference)) {\n if (center < 0) {\n continue;\n }\n\n const fromTurn = Math.max(0, center - TURN_REFERENCE_WINDOW_RADIUS);\n const toTurn = center + TURN_REFERENCE_WINDOW_RADIUS;\n windows.set(`${fromTurn}:${toTurn}`, { fromTurn, toTurn });\n }\n }\n\n for (const window of [...windows.values()].sort(\n (left, right) => left.fromTurn - right.fromTurn || left.toTurn - right.toTurn,\n )) {\n const expanded = await options.engine.expandContext(\n options.sessionId,\n window.fromTurn,\n window.toTurn,\n 2_000,\n );\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n options.sessionId,\n expanded,\n );\n }\n}\n\nasync function collectFocusedTranscriptCueEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>;\n seenTurns: Set<string>;\n}): Promise<void> {\n if (!options.sessionId || !options.engine.getStats) {\n return;\n }\n\n const matchers = focusedTranscriptCueMatchers(options.query);\n if (matchers.length === 0) {\n return;\n }\n\n const stats = await options.engine.getStats(options.sessionId);\n const expansionEnd = normalizeTurnExpansionEnd(stats);\n if (expansionEnd < 0) {\n return;\n }\n\n const messages = await options.engine.expandContext(\n options.sessionId,\n 0,\n expansionEnd,\n FOCUSED_TRANSCRIPT_SCAN_MAX_TOKENS,\n );\n for (const matcher of matchers) {\n for (const message of messages) {\n if (!matcher(message.content)) {\n continue;\n }\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${options.sessionId}:${message.turn_index}`,\n sessionId: options.sessionId,\n turnIndex: message.turn_index,\n role: message.role,\n content: message.content,\n });\n break;\n }\n }\n}\n\nfunction focusedTranscriptCueMatchers(\n query: string,\n): Array<(content: string) => boolean> {\n const normalized = query.toLowerCase().replace(/[^a-z0-9+#.-]+/g, \" \").trim();\n const matchers: Array<(content: string) => boolean> = [];\n\n if (hasSecurityFeatureEnumerationIntent(normalized)) {\n matchers.push((content) => /\\bpassword hashing\\b/i.test(content));\n matchers.push((content) => /\\brole-based access control\\b|\\bRBAC\\b/i.test(content));\n matchers.push((content) =>\n /\\baccount lockout\\b/i.test(content) &&\n /\\bfailed login attempts?\\b/i.test(content),\n );\n }\n\n if (hasTemporalScheduleIntent(normalized)) {\n matchers.push((content) =>\n /\\btransaction management\\b/i.test(content) &&\n /\\bdeployment\\b/i.test(content) &&\n /\\bmilestones?\\b/i.test(content),\n );\n }\n\n if (hasFlaskRouteContradictionIntent(normalized)) {\n matchers.push((content) =>\n /\\bnever written\\b.{0,80}\\bFlask routes?\\b/i.test(content) &&\n /\\bhandled HTTP requests?\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\bbasic homepage route\\b/i.test(content) ||\n (/\\b@app\\.route\\(['\"]\\/['\"]\\)/i.test(content) && /\\bhomepage\\b/i.test(content)),\n );\n }\n\n if (hasFlaskLoginContradictionIntent(normalized)) {\n matchers.push((content) =>\n /\\bnever\\b.{0,80}\\bintegrated\\b.{0,80}\\bFlask-Login\\b/i.test(content) ||\n (/\\bFlask-Login\\b/i.test(content) && /\\bstarting from scratch\\b/i.test(content)),\n );\n matchers.push((content) =>\n /\\bFlask-Login\\s+v?0\\.6\\.2\\b/i.test(content) &&\n /\\bsession management\\b/i.test(content),\n );\n }\n\n if (hasSecurityDatabaseChallengeSummaryIntent(normalized)) {\n matchers.push((content) =>\n /\\bWerkzeug\\.security\\b/i.test(content) ||\n /\\bpbkdf2:sha256\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\bUNIQUE constraint\\b/i.test(content) && /\\bUUID\\b/i.test(content),\n );\n matchers.push((content) => /\\bOperationalError\\b/i.test(content));\n matchers.push((content) =>\n /\\bCSRF\\b/i.test(content) &&\n /\\b(?:hidden_tag|WTF_CSRF_ENABLED|cookies?)\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\baccount lockout\\b/i.test(content) &&\n /\\bRedis\\b/i.test(content) &&\n /\\b(?:atomic|expiry|expire|reset(?:ting)? counters?|rate limiting)\\b/i.test(content),\n );\n }\n\n if (hasProjectProgressSummaryIntent(normalized)) {\n matchers.push((content) =>\n /\\b(?:data visualization|visualization)\\b/i.test(content) &&\n /\\b(?:expenses?|income|analytics|budget tracker)\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\bApril 15\\b/i.test(content) && /\\bMVP\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\bauthentication\\b/i.test(content) &&\n /\\btransaction management\\b/i.test(content) &&\n /\\banalytics\\b/i.test(content) &&\n /\\bdeployment\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\bpassword hashing\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\btoken-based authentication\\b|\\bJWT\\b|\\baccess_token\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\brole-based access control\\b|\\bRBAC\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\binput validation\\b|\\bvalidate and sanitize\\b|\\bSQL injection\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\b(?:stronger password hashing|password hashing|token-based authentication|role-based access control|input validation)\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\bConfluence\\b/i.test(content) && /\\b(?:tables?|diagrams?)\\b/i.test(content),\n );\n }\n\n if (hasSoftwareProjectOrderingIntent(normalized)) {\n matchers.push((content) =>\n /\\bcore functionality\\b/i.test(content) &&\n /\\b(?:budget tracker|authentication|expense tracking|data visualization)\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\btransaction CRUD\\b/i.test(content) ||\n (/\\btransactions?\\b/i.test(content) && /\\bCRUD\\b/i.test(content)),\n );\n matchers.push((content) =>\n /\\bdeployment configuration\\b/i.test(content) ||\n (/\\bRender\\.com\\b/i.test(content) && /\\b(?:deployment|configuration|PostgreSQL)\\b/i.test(content)),\n );\n matchers.push((content) =>\n /\\bintegration test coverage\\b/i.test(content) ||\n /\\bintegration tests?\\b/i.test(content),\n );\n matchers.push((content) =>\n /\\bdeployment and test improvements\\b/i.test(content) ||\n (/\\bdeployment\\b/i.test(content) && /\\b(?:final testing|bug fixes|test improvements)\\b/i.test(content)),\n );\n matchers.push((content) =>\n /\\btransaction error handling\\b/i.test(content) ||\n (/\\btransactions?\\b/i.test(content) && /\\b(?:OperationalError|error handling)\\b/i.test(content)),\n );\n matchers.push((content) =>\n /\\bsecurity hardening\\b/i.test(content) ||\n (/\\bsecurity\\b/i.test(content) && /\\bdeployment\\b/i.test(content)),\n );\n }\n\n if (hasSprintTaskOrganizationIntent(normalized)) {\n matchers.push((content) => /\\bdevelopment environment\\b|\\binitial project structure\\b/i.test(content));\n matchers.push((content) => /\\bdatabase schema\\b/i.test(content));\n matchers.push((content) => /\\bregistration and login\\b|\\buser registration\\b.{0,80}\\blogin\\b/i.test(content));\n matchers.push((content) => /\\bvalidation\\b/i.test(content));\n matchers.push((content) => /\\bunit tests?\\b/i.test(content));\n matchers.push((content) =>\n /\\bfrontend\\b/i.test(content) &&\n /\\b(?:forms?|integrat(?:e|ing|ion))\\b/i.test(content),\n );\n }\n\n return matchers;\n}\n\nasync function collectContentLabelReferenceEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n references: ExplicitTurnReference[];\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>;\n seenTurns: Set<string>;\n}): Promise<Set<number>> {\n const resolved = new Set<number>();\n\n for (const reference of options.references) {\n if (reference.includeDirectTurn) {\n continue;\n }\n\n const hits = await searchReferenceContentLabels(\n options.engine,\n reference.number,\n options.sessionId,\n );\n if (hits.length === 0) {\n continue;\n }\n\n resolved.add(reference.number);\n let appendedWindows = 0;\n for (const hit of hits) {\n if (appendedWindows >= CONTENT_LABEL_MAX_PAIRED_WINDOWS_PER_REFERENCE) {\n break;\n }\n\n const { fromTurn, toTurn } = contentLabelEvidenceWindow(hit, {\n includeSuccessor: hasSuccessorTrajectoryIntent(options.query),\n });\n const expanded = await options.engine.expandContext(\n hit.session_id,\n fromTurn,\n toTurn,\n CONTENT_LABEL_MAX_TOKENS,\n );\n if (!expandedHasPairedTrajectoryLabels(expanded, reference.number)) {\n continue;\n }\n if (expanded.length === 0) {\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${hit.session_id}:${hit.turn_index}`,\n sessionId: hit.session_id,\n turnIndex: hit.turn_index,\n role: hit.role,\n content: hit.content,\n });\n continue;\n }\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n hit.session_id,\n expanded,\n );\n appendedWindows += 1;\n }\n }\n\n return resolved;\n}\n\nasync function searchReferenceContentLabels(\n engine: ExplicitCueRecallEngine,\n referenceNumber: number,\n sessionId?: string,\n): Promise<\n Array<{\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n labelKind: \"action\" | \"observation\";\n }>\n> {\n const hits = new Map<\n string,\n {\n turn_index: number;\n role: string;\n content: string;\n session_id: string;\n labelKind: \"action\" | \"observation\";\n }\n >();\n\n for (const labelKind of [\"action\", \"observation\"] as const) {\n const label = labelKind === \"action\" ? \"Action\" : \"Observation\";\n for (const query of [`[${label} ${referenceNumber}]`, `${label} ${referenceNumber}`]) {\n const results = await engine.searchContextFull(\n query,\n CONTENT_LABEL_SEARCH_LIMIT,\n sessionId,\n );\n for (const result of results) {\n if (\n !isReferenceLabelRole(result.role, labelKind) ||\n !contentHasReferenceLabel(result.content, labelKind, referenceNumber)\n ) {\n continue;\n }\n hits.set(`${result.session_id}:${result.turn_index}:${labelKind}`, {\n turn_index: result.turn_index,\n role: result.role,\n content: result.content,\n session_id: result.session_id,\n labelKind,\n });\n }\n }\n }\n\n const numericCandidates = candidateTurnIndexesForReference({\n number: referenceNumber,\n includeDirectTurn: false,\n });\n return [...hits.values()].sort((left, right) => {\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n const leftDistance = nearestTurnDistance(left.turn_index, numericCandidates);\n const rightDistance = nearestTurnDistance(right.turn_index, numericCandidates);\n if (leftDistance !== rightDistance) {\n return leftDistance - rightDistance;\n }\n return left.turn_index - right.turn_index || left.labelKind.localeCompare(right.labelKind);\n });\n}\n\nfunction nearestTurnDistance(turnIndex: number, candidates: readonly number[]): number {\n let nearest = Number.POSITIVE_INFINITY;\n for (const candidate of candidates) {\n nearest = Math.min(nearest, Math.abs(turnIndex - candidate));\n }\n return nearest;\n}\n\nfunction contentLabelEvidenceWindow(hit: {\n turn_index: number;\n labelKind: \"action\" | \"observation\";\n}, options: { includeSuccessor?: boolean } = {}): { fromTurn: number; toTurn: number } {\n const successorTurns = options.includeSuccessor === true ? 2 : 0;\n if (hit.labelKind === \"action\") {\n return {\n fromTurn: Math.max(0, hit.turn_index - 1),\n toTurn: hit.turn_index + 1 + successorTurns,\n };\n }\n\n return {\n fromTurn: Math.max(0, hit.turn_index - 1),\n toTurn: hit.turn_index + successorTurns,\n };\n}\n\nfunction hasSuccessorTrajectoryIntent(query: string): boolean {\n const raw = query.toLowerCase();\n const normalized = raw.replace(/[^a-z0-9]+/g, \" \").trim();\n if ([\n /\\bafter\\s+(?:step|action|observation|turn)\\s+\\d+\\b/,\n /\\b(?:next|following|subsequent|successor)\\s+(?:step|action|observation|turn)\\b/,\n /\\b(?:step|action|observation|turn)\\s+\\d+\\s+(?:then|and then)\\b/,\n /\\bwhat\\s+(?:happened|came|occurred)\\s+next\\b/,\n ].some((pattern) => pattern.test(normalized))) {\n return true;\n }\n\n if (!hasLoopExitIntent(normalized)) {\n return false;\n }\n\n if (!hasBoundedTrajectoryReference(raw)) {\n return true;\n }\n\n return !asksForActionInsideBoundedRange(normalized) &&\n hasNamedTrajectoryActionCue(normalized);\n}\n\nfunction hasBoundedTrajectoryReference(query: string): boolean {\n return hasBoundedTrajectoryRange(query) || hasSingleTrajectoryReference(query);\n}\n\nfunction hasLoopExitIntent(normalizedQuery: string): boolean {\n const exitVerbs = \"(?:breaks?|breaking|broke|ends?|ending|ended|stops?|stopping|stopped)\";\n const loopNouns = \"(?:loop|cycle|pattern|sequence)\";\n return [\n new RegExp(\n `\\\\b${exitVerbs}\\\\s+(?:out\\\\s+of\\\\s+)?(?:this|that|the|a|an)?\\\\s*${loopNouns}\\\\b`,\n ),\n new RegExp(\n `\\\\b${loopNouns}\\\\s+(?:${exitVerbs}|is\\\\s+${exitVerbs}|was\\\\s+${exitVerbs})\\\\b`,\n ),\n ].some((pattern) => pattern.test(normalizedQuery));\n}\n\nfunction hasBoundedTrajectoryRange(query: string): boolean {\n return [\n /\\b(?:between|from|in|during|within)\\s+(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\s*(?:-|\\u2013|\\u2014|\\bto\\b|\\bthrough\\b|\\bthru\\b|\\band\\b)\\s*(?:(?:steps?|actions?|observations?|turns?)\\s+)?#?\\d+\\b/,\n /\\b(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\s*(?:-|\\u2013|\\u2014|\\bto\\b|\\bthrough\\b|\\bthru\\b)\\s*(?:(?:steps?|actions?|observations?|turns?)\\s+)?#?\\d+\\b/,\n ].some((pattern) => pattern.test(query));\n}\n\nfunction hasSingleTrajectoryReference(query: string): boolean {\n return /\\b(?:in|during|within|at|on)?\\s*(?:steps?|actions?|observations?|turns?)\\s+#?\\d+\\b/.test(\n query,\n );\n}\n\nfunction asksForActionInsideBoundedRange(normalizedQuery: string): boolean {\n return /\\b(?:which|what)\\s+(?:single\\s+)?(?:action|move|step|maneuver)\\s+(?:broke|breaks|breaking|ended|ends|stopped|stops|mattered|accomplished|advanced)\\b/.test(\n normalizedQuery,\n );\n}\n\nfunction hasNamedTrajectoryActionCue(normalizedQuery: string): boolean {\n const actions = \"(?:up|down|left|right|wait|stay|push|pull|open|close|use|enter|exit)\";\n return new RegExp(\n `\\\\b(?:${actions}\\\\s+(?:action|move|step|maneuver)|(?:action|move|step|maneuver)\\\\s+${actions})\\\\b`,\n ).test(normalizedQuery);\n}\n\nfunction contentHasReferenceLabel(\n content: string,\n labelKind: \"action\" | \"observation\",\n referenceNumber: number,\n): boolean {\n const label = labelKind === \"action\" ? \"Action\" : \"Observation\";\n const escapedNumber = String(referenceNumber).replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n return new RegExp(\n `^\\\\s*\\\\[\\\\s*${label}\\\\s+${escapedNumber}\\\\s*\\\\]\\\\s*(?::\\\\s*)?`,\n \"i\",\n ).test(content);\n}\n\nfunction isReferenceLabelRole(\n role: string,\n labelKind: \"action\" | \"observation\",\n): boolean {\n if (labelKind === \"action\") {\n return role === \"user\";\n }\n return role === \"assistant\";\n}\n\nfunction expandedHasPairedTrajectoryLabels(\n expanded: Array<{ role: string; content: string }>,\n referenceNumber: number,\n): boolean {\n let hasAction = false;\n let hasObservation = false;\n for (const message of expanded) {\n if (\n isReferenceLabelRole(message.role, \"action\") &&\n contentHasReferenceLabel(message.content, \"action\", referenceNumber)\n ) {\n hasAction = true;\n }\n if (\n isReferenceLabelRole(message.role, \"observation\") &&\n contentHasReferenceLabel(message.content, \"observation\", referenceNumber)\n ) {\n hasObservation = true;\n }\n }\n return hasAction && hasObservation;\n}\n\nasync function collectLexicalCueEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n maxReferences: number;\n includeBenchmarkAnchorCues?: boolean;\n includeContentLexicalCues?: boolean;\n includeStructuredPlanCues?: boolean;\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n score?: number;\n }>;\n seenTurns: Set<string>;\n}): Promise<void> {\n const cues = prioritizeLexicalCueSearchCues(\n options.query,\n collectLexicalCues(options.query, {\n includeBenchmarkAnchorCues: options.includeBenchmarkAnchorCues,\n includeContentLexicalCues: options.includeContentLexicalCues,\n includeStructuredPlanCues: options.includeStructuredPlanCues,\n }),\n ).slice(0, options.maxReferences);\n const preferLatest = hasLatestStateIntent(options.query);\n for (const cue of cues) {\n const exactHitFirst = isHighPriorityImplementationCue(options.query, cue);\n const results = sortLexicalCueResults(\n await options.engine.searchContextFull(\n cue,\n lexicalCueSearchLimit(options.query, cue),\n options.sessionId,\n ),\n preferLatest,\n options.query,\n );\n for (const result of results) {\n const windowRadius = preferLatest ? 0 : LEXICAL_CUE_WINDOW_RADIUS;\n const fromTurn = Math.max(0, result.turn_index - windowRadius);\n const toTurn = result.turn_index + windowRadius;\n const expanded = await options.engine.expandContext(\n result.session_id,\n fromTurn,\n toTurn,\n LEXICAL_CUE_MAX_TOKENS,\n );\n if (expanded.length === 0) {\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${result.session_id}:${result.turn_index}`,\n sessionId: result.session_id,\n turnIndex: result.turn_index,\n role: result.role,\n content: result.content,\n ...(typeof result.score === \"number\" ? { score: result.score } : {}),\n });\n continue;\n }\n if (exactHitFirst) {\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${result.session_id}:${result.turn_index}`,\n sessionId: result.session_id,\n turnIndex: result.turn_index,\n role: result.role,\n content: result.content,\n ...(typeof result.score === \"number\" ? { score: result.score } : {}),\n });\n }\n appendExpandedEvidence(\n options.evidenceItems,\n options.seenTurns,\n result.session_id,\n expanded,\n );\n }\n }\n}\n\ninterface LabeledTrajectoryStep {\n step: number;\n action?: string;\n observation?: string;\n actionTurnIndex?: number;\n observationTurnIndex?: number;\n}\n\ninterface TrajectoryBounds {\n start: number;\n end: number;\n reason: string;\n}\n\ninterface ObservationTransition {\n fromStep: number;\n toStep: number;\n}\n\ninterface RelativePosition {\n entity: string;\n x: number;\n y: number;\n raw: string;\n}\n\ninterface AgentMoveDelta {\n direction: \"up\" | \"down\" | \"left\" | \"right\";\n dx: number;\n dy: number;\n}\n\ninterface ContainerObjectTransfer {\n step: number;\n action: string;\n object: string;\n container: string;\n direction: \"placed\" | \"removed\";\n}\n\nfunction hasTrajectoryAnalysisIntent(query: string): boolean {\n const normalized = normalizeTrajectoryQuery(query);\n if (collectExplicitTurnReferences(query).length > 0) {\n return true;\n }\n return [\n /\\bbefore\\s+(?:step|action|observation)\\s+\\d+\\b/,\n /\\b(?:until|through|thru)\\s+(?:step|action|observation)\\s+\\d+\\b/,\n /\\bup\\s+to\\s+(?:and\\s+including\\s+)?(?:step|action|observation)\\s+\\d+\\b/,\n /\\bwhat\\s+sequence\\s+of\\s+actions\\s+would\\s+transform\\b/,\n /\\bactions?\\s+were\\s+performed\\b/,\n /\\bstate\\s+of\\s+[a-z0-9 _-]+\\s+\\d+\\s+at\\s+step\\s+\\d+\\b/,\n /\\bwhole\\s+changes?\\s+history\\b/,\n /\\bthroughout\\s+the\\s+trajectory\\b/,\n /\\binventory\\b/,\n /\\bcontainers?\\b.*\\binteracted\\b/,\n /\\btypes?\\s+of\\s+actions?\\b.*\\bfrequen/,\n /\\bhow\\s+frequently\\b/,\n ].some((pattern) => pattern.test(normalized));\n}\n\nfunction parseLabeledTrajectory(\n messages: Array<{ turn_index: number; role: string; content: string }>,\n): LabeledTrajectoryStep[] {\n const byStep = new Map<number, LabeledTrajectoryStep>();\n\n for (const message of messages) {\n const action = parseTrajectoryLabel(message.content, \"Action\");\n if (action && isReferenceLabelRole(message.role, \"action\")) {\n const step = getOrCreateTrajectoryStep(byStep, action.step);\n step.action = action.value;\n step.actionTurnIndex = message.turn_index;\n continue;\n }\n\n const observation = parseTrajectoryLabel(message.content, \"Observation\");\n if (observation && isReferenceLabelRole(message.role, \"observation\")) {\n const step = getOrCreateTrajectoryStep(byStep, observation.step);\n step.observation = observation.value;\n step.observationTurnIndex = message.turn_index;\n }\n }\n\n return [...byStep.values()].sort((left, right) => left.step - right.step);\n}\n\nfunction parseTrajectoryLabel(\n content: string,\n label: \"Action\" | \"Observation\",\n): { step: number; value: string } | undefined {\n const match = new RegExp(\n `^\\\\s*\\\\[\\\\s*${label}\\\\s+(\\\\d+)\\\\s*\\\\]\\\\s*(?::\\\\s*)?([\\\\s\\\\S]*)$`,\n \"i\",\n ).exec(content);\n if (!match) {\n return undefined;\n }\n const step = parseNonNegativeIntegerToken(match[1] ?? \"\");\n if (step === undefined) {\n return undefined;\n }\n const value = (match[2] ?? \"\").trim();\n return { step, value };\n}\n\nfunction getOrCreateTrajectoryStep(\n byStep: Map<number, LabeledTrajectoryStep>,\n stepNumber: number,\n): LabeledTrajectoryStep {\n const existing = byStep.get(stepNumber);\n if (existing) {\n return existing;\n }\n const created: LabeledTrajectoryStep = { step: stepNumber };\n byStep.set(stepNumber, created);\n return created;\n}\n\nfunction inferTrajectoryBounds(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n): TrajectoryBounds {\n const minStep = trajectory[0]?.step ?? 0;\n const maxStep = trajectory[trajectory.length - 1]?.step ?? minStep;\n const normalized = normalizeTrajectoryQuery(query);\n\n const before = firstMatchInteger(\n normalized,\n /\\bbefore\\s+(?:step|action|observation)\\s+(\\d+)\\b/,\n );\n if (before !== undefined) {\n return clampTrajectoryBounds(minStep, before - 1, minStep, maxStep, \"before\");\n }\n\n const until = firstMatchInteger(\n normalized,\n /\\b(?:until|through|thru)\\s+(?:step|action|observation)\\s+(\\d+)\\b/,\n ) ?? firstMatchInteger(\n normalized,\n /\\bup\\s+to\\s+(?:and\\s+including\\s+)?(?:step|action|observation)\\s+(\\d+)\\b/,\n );\n if (until !== undefined) {\n return clampTrajectoryBounds(minStep, until, minStep, maxStep, \"through\");\n }\n\n const explicitRange = extractExplicitTrajectoryRange(normalized);\n if (explicitRange) {\n return clampTrajectoryBounds(\n explicitRange.start,\n explicitRange.end,\n minStep,\n maxStep,\n \"range\",\n );\n }\n\n const references = collectExplicitTurnReferences(query).map((reference) => reference.number);\n if (references.length > 1) {\n return clampTrajectoryBounds(\n Math.min(...references),\n Math.max(...references),\n minStep,\n maxStep,\n \"references\",\n );\n }\n\n const atStep = firstMatchInteger(\n normalized,\n /\\b(?:at|in|on)\\s+(?:step|action|observation)\\s+(\\d+)\\b/,\n );\n if (atStep !== undefined) {\n return clampTrajectoryBounds(minStep, atStep, minStep, maxStep, \"at\");\n }\n\n return { start: minStep, end: maxStep, reason: \"full\" };\n}\n\nfunction buildTrajectoryAnalysisLines(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): string[] {\n const normalized = normalizeTrajectoryQuery(query);\n const explicitReferences = collectExplicitTurnReferences(query);\n const lines: string[] = [\n `Analyzed labeled action/observation transcript window: steps ${bounds.start}-${bounds.end} (${bounds.reason}).`,\n ];\n const hasQuotedObservationPair = extractQuotedObservations(query).length >= 2;\n const transition = findObservationTransition(query, trajectory);\n const entities = extractNumberedEntities(query);\n const asksActionRange = asksForTrajectoryActionRange(normalized) || transition !== undefined;\n const asksFrequency = asksForActionFrequency(normalized);\n const asksInventory = /\\binventory\\b/.test(normalized);\n const asksLocation = /\\blocations?\\b/.test(normalized) || /\\bwhere\\b/.test(normalized);\n const asksContainerHistory = /\\bcontainers?\\b/.test(normalized) ||\n /\\binteracted\\b/.test(normalized);\n const asksContainerObjectTransfer = /\\b(?:objects?|items?)\\b/.test(normalized) &&\n /\\b(?:placed|put|inserted|moved|removed)\\b/.test(normalized);\n const asksEntityState = /\\bstate\\b/.test(normalized) ||\n /\\bchanges?\\s+history\\b/.test(normalized) ||\n /\\bwhole\\s+changes?\\s+history\\b/.test(normalized);\n const asksResultingObservation = /\\bresulting\\s+state\\b/.test(normalized) ||\n /\\bprovide\\s+the\\s+full\\s+observation\\b/.test(normalized) ||\n /\\bwhat\\s+will\\s+be\\s+the\\s+resulting\\b/.test(normalized);\n\n if (transition) {\n lines.push(\n `Matched quoted observations: Observation ${transition.fromStep} -> Observation ${transition.toStep}.`,\n );\n appendActionSequenceSummary(\n lines,\n trajectory,\n transition.fromStep + 1,\n transition.toStep,\n \"Action sequence that transforms the quoted observations:\",\n );\n appendActionRangeLines(lines, trajectory, transition.fromStep + 1, transition.toStep, {\n includeObservations: true,\n heading: \"Detailed transition evidence:\",\n });\n }\n\n if (asksResultingObservation && !transition && explicitReferences.length > 0) {\n appendActionRangeLines(lines, trajectory, bounds.start, bounds.end, {\n includeObservations: true,\n heading: \"Referenced action sequence and observations:\",\n });\n appendResultingObservationLine(lines, trajectory, bounds.end);\n }\n\n if (\n asksActionRange &&\n !transition &&\n entities.length === 0 &&\n !hasQuotedObservationPair\n ) {\n if (bounds.reason === \"references\") {\n appendReferencedTrajectoryLines(lines, trajectory, explicitReferences, {\n includeObservations: false,\n heading: \"Actions at referenced steps:\",\n });\n } else {\n appendActionRangeLines(lines, trajectory, bounds.start, bounds.end, {\n includeObservations: false,\n heading: \"Actions in requested step window:\",\n });\n }\n }\n\n if (asksFrequency) {\n appendActionFrequencyLines(lines, trajectory, bounds);\n }\n\n appendSpatialTrajectoryInferenceLines(lines, query, trajectory, bounds);\n\n if (asksInventory) {\n appendInventoryChangeLines(lines, trajectory, bounds);\n }\n\n if (asksContainerHistory) {\n appendContainerStateChangeLines(lines, trajectory, bounds);\n }\n\n if (\n entities.length > 0 &&\n (asksEntityState ||\n asksLocation ||\n /actions?\\s+were\\s+performed/.test(normalized))\n ) {\n appendEntityTimelineLines(lines, trajectory, bounds, entities, {\n includeIndirectMentions: asksLocation,\n includeContainerObjectTransfers: asksContainerObjectTransfer,\n includeMovableStateActions: asksEntityState,\n });\n }\n\n if (lines.length === 1 && explicitReferences.length > 0) {\n if (bounds.reason === \"references\") {\n appendReferencedTrajectoryLines(lines, trajectory, explicitReferences, {\n includeObservations: true,\n heading: \"Referenced trajectory evidence:\",\n });\n } else {\n appendActionRangeLines(lines, trajectory, bounds.start, bounds.end, {\n includeObservations: true,\n heading: \"Referenced trajectory evidence:\",\n });\n }\n }\n\n return lines.length === 1 ? [] : lines;\n}\n\nfunction appendReferencedTrajectoryLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n references: readonly ExplicitTurnReference[],\n options: { includeObservations: boolean; heading: string },\n): void {\n const byStep = new Map(trajectory.map((step) => [step.step, step]));\n const window = [...new Set(references.map((reference) => reference.number))]\n .sort((left, right) => left - right)\n .map((step) => byStep.get(step))\n .filter((step): step is LabeledTrajectoryStep => step !== undefined);\n if (window.length === 0) {\n return;\n }\n\n lines.push(options.heading);\n for (const step of window) {\n if (step.action) {\n lines.push(`[Action ${step.step}]: ${step.action}`);\n }\n if (options.includeObservations && step.observation) {\n lines.push(`[Observation ${step.step}]: ${oneLine(step.observation)}`);\n }\n }\n}\n\nfunction appendActionRangeLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n start: number,\n end: number,\n options: { includeObservations: boolean; heading: string },\n): void {\n const low = Math.min(start, end);\n const high = Math.max(start, end);\n if (high - low + 1 > TRAJECTORY_ANALYSIS_MAX_RANGE_STEPS) {\n lines.push(`${options.heading} requested range ${low}-${high} is too large for inline expansion.`);\n return;\n }\n const window = trajectory.filter((step) => step.step >= low && step.step <= high);\n if (window.length === 0) {\n return;\n }\n lines.push(options.heading);\n for (const step of window) {\n if (step.action) {\n lines.push(`[Action ${step.step}]: ${step.action}`);\n }\n if (options.includeObservations && step.observation) {\n lines.push(`[Observation ${step.step}]: ${oneLine(step.observation)}`);\n }\n }\n}\n\nfunction appendActionSequenceSummary(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n start: number,\n end: number,\n heading: string,\n): void {\n const low = Math.min(start, end);\n const high = Math.max(start, end);\n const actions = trajectory\n .filter((step) => step.step >= low && step.step <= high && step.action)\n .map((step) => `step ${step.step}: ${step.action}`);\n if (actions.length === 0) {\n return;\n }\n lines.push(`${heading} ${actions.join(\"; \")}.`);\n}\n\nfunction appendResultingObservationLine(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n stepNumber: number,\n): void {\n const step = trajectory.find((candidate) => candidate.step === stepNumber);\n if (!step?.observation) {\n return;\n }\n lines.push(`Resulting observation after Action ${step.step}: ${oneLine(step.observation)}`);\n}\n\nfunction appendSpatialTrajectoryInferenceLines(\n lines: string[],\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): void {\n const normalized = normalizeTrajectoryQuery(query);\n const wantsRelativePosition = /\\brelative\\s+position\\b/.test(normalized) ||\n /\\bsteps?\\s+(?:to\\s+the\\s+)?(?:left|right|up|down)\\b/.test(normalized);\n const wantsRules = /\\brules?\\b/.test(normalized) ||\n /\\bwin\\s+condition\\b/.test(normalized) ||\n /\\bpush(?:able)?\\s+word\\b/.test(normalized);\n const wantsStrategicOrCounterfactual = /\\b(?:blocked|counterproductive|failed|failure|infer|inferred|objective|instead|alternative|progress|goal|necessary|critical|strategic|successful|relevant|ineffective|only\\s+one|caused?\\s+a\\s+change)\\b/.test(\n normalized,\n );\n const wantsStateTransformation = /\\b(?:appear|appears|appeared|disappear|disappears|disappeared|temporary|transformation|hidden\\s+state|reversed)\\b/.test(\n normalized,\n );\n if (!wantsRelativePosition && !wantsRules && !wantsStrategicOrCounterfactual && !wantsStateTransformation) {\n return;\n }\n\n const window = spatialTrajectoryWindowForQuery(query, trajectory, bounds);\n const counterfactualContactLines = collectCounterfactualContactLines(query, trajectory, normalized);\n if (counterfactualContactLines.length > 0) {\n lines.push(\"Counterfactual contact cues:\");\n lines.push(...counterfactualContactLines);\n }\n\n const selfReversingLines = collectSelfReversingProgressLines(query, window, normalized);\n if (selfReversingLines.length > 0) {\n lines.push(\"Self-reversing sequence cues:\");\n lines.push(...selfReversingLines);\n }\n const onlyEffectiveActionLines = collectOnlyEffectiveActionLines(window, normalized);\n if (onlyEffectiveActionLines.length > 0) {\n lines.push(\"Only-effective action cues:\");\n lines.push(...onlyEffectiveActionLines);\n }\n const pushedPhraseGroupLines = collectPushedPhraseGroupShiftLines(query, window, normalized);\n if (pushedPhraseGroupLines.length > 0) {\n lines.push(\"Pushed phrase-group shift cues:\");\n lines.push(...pushedPhraseGroupLines);\n }\n const suppressMovementProgressEvidence = onlyEffectiveActionLines.length > 0 ||\n selfReversingLines.some((line) =>\n line.includes(\"named movement sequence\") &&\n /\\bwhich\\b/.test(normalized) &&\n /\\brelevant\\b/.test(normalized)\n ) || pushedPhraseGroupLines.length > 0;\n\n const actionMovementLines = suppressMovementProgressEvidence\n ? []\n : collectActionMovementSummaryLines(query, window, bounds);\n if (actionMovementLines.length > 0) {\n lines.push(\"Action movement summary cues:\");\n lines.push(...actionMovementLines);\n }\n\n const movementLines = suppressMovementProgressEvidence\n ? []\n : collectMovementDeltaLines(query, window);\n if (movementLines.length > 0) {\n lines.push(\"Relative-position movement cues:\");\n lines.push(...movementLines);\n }\n\n const objectAlignmentWindow = objectAlignmentWindowForQuery(query, trajectory, bounds);\n const objectAlignmentLines = collectObjectAlignmentLines(\n query,\n objectAlignmentWindow,\n normalized,\n );\n if (objectAlignmentLines.length > 0) {\n lines.push(\"Object alignment cues:\");\n lines.push(...objectAlignmentLines);\n }\n\n const alternativeActionLines = collectAlternativeActionLines(query, trajectory);\n if (alternativeActionLines.length > 0) {\n lines.push(\"Counterfactual action cues:\");\n lines.push(...alternativeActionLines);\n }\n\n const adjacentRuleSetupLines = collectAdjacentRuleSetupLines(window, normalized);\n if (adjacentRuleSetupLines.length > 0) {\n lines.push(\"Adjacent rule-block setup cues:\");\n lines.push(...adjacentRuleSetupLines);\n }\n\n const blockedMoveLines = collectBlockedMoveLines(query, window, normalized);\n if (blockedMoveLines.length > 0) {\n lines.push(\"Blocked-move cues:\");\n lines.push(...blockedMoveLines);\n }\n\n const failedEscapeLines = collectFailedEscapeLines(query, trajectory, normalized);\n if (failedEscapeLines.length > 0) {\n lines.push(\"Failed-move escape cues:\");\n lines.push(...failedEscapeLines);\n }\n\n const sameRelativeTextPushLines = collectSameRelativeTextPushLines(window, normalized);\n if (sameRelativeTextPushLines.length > 0) {\n lines.push(\"Same-relative text-push cues:\");\n lines.push(...sameRelativeTextPushLines);\n }\n\n const failedContactLines = sameRelativeTextPushLines.length > 0\n ? []\n : collectFailedContactBoundaryLines(window, normalized);\n if (failedContactLines.length > 0) {\n lines.push(\"Failed-push boundary cues:\");\n lines.push(...failedContactLines);\n }\n\n const transformationLines = collectTemporaryRuleTransformationLines(window, normalized);\n if (transformationLines.length > 0) {\n lines.push(\"Temporary transformation cues:\");\n lines.push(...transformationLines);\n }\n\n const wholeConfigurationShiftLines = collectWholeConfigurationShiftLines(window, normalized);\n if (wholeConfigurationShiftLines.length > 0) {\n lines.push(\"Whole-configuration shift cues:\");\n lines.push(...wholeConfigurationShiftLines);\n }\n\n const ruleInterventionLines = collectRuleInterventionStrategyLines(window, normalized);\n if (ruleInterventionLines.length > 0) {\n lines.push(\"Rule-intervention strategy cues:\");\n lines.push(...ruleInterventionLines);\n }\n\n const missingPushTargetLines = collectMissingPushTargetLines(window, normalized);\n if (missingPushTargetLines.length > 0) {\n lines.push(\"Missing-interaction cues:\");\n lines.push(...missingPushTargetLines);\n }\n\n const rulePhraseAlignmentLines = collectRulePhraseAlignmentLines(window, normalized);\n if (rulePhraseAlignmentLines.length > 0) {\n lines.push(\"Rule-phrase alignment cues:\");\n lines.push(...rulePhraseAlignmentLines);\n }\n\n const controlRuleInteractionLines = collectControlRuleInteractionLines(window, normalized);\n if (controlRuleInteractionLines.length > 0) {\n lines.push(\"Control-rule interaction cues:\");\n lines.push(...controlRuleInteractionLines);\n }\n\n const ruleTextPositionLines = suppressMovementProgressEvidence\n ? []\n : collectRuleTextPositionLines(window, normalized);\n if (ruleTextPositionLines.length > 0) {\n lines.push(\"Rule-text positioning cues:\");\n lines.push(...ruleTextPositionLines);\n }\n\n const ruleLines = collectRuleStateLines(window, normalized);\n if (ruleLines.length > 0) {\n lines.push(\"Rule-state cues:\");\n lines.push(...ruleLines);\n }\n}\n\nfunction spatialTrajectoryWindowForQuery(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): LabeledTrajectoryStep[] {\n const normalized = normalizeTrajectoryQuery(query);\n const minStep = trajectory[0]?.step ?? bounds.start;\n const maxStep = trajectory[trajectory.length - 1]?.step ?? bounds.end;\n let start = bounds.start;\n let end = bounds.end;\n const references = collectExplicitTurnReferences(query).map((reference) => reference.number);\n\n if (references.length > 0 && hasManeuverInterpretationCue(normalized)) {\n start = Math.min(start, ...references);\n end = Math.max(end, ...references);\n }\n\n if (\n references.length > 0 &&\n /\\b(?:then|at\\s+the\\s+start\\s+of|start\\s+of|optimal|successful|failed|corrective)\\b/.test(\n normalized,\n )\n ) {\n end = Math.max(end, ...references);\n }\n\n if (/\\b(?:failed|successful|before\\s+the\\s+successful)\\b/.test(normalized)) {\n for (const match of normalized.matchAll(/\\bsteps?\\s+(\\d+)\\s*(?:-|to|through|thru)\\s*(\\d+)\\b/g)) {\n const rangeStart = parseNonNegativeIntegerToken(match[1] ?? \"\");\n const rangeEnd = parseNonNegativeIntegerToken(match[2] ?? \"\");\n if (rangeStart !== undefined && rangeEnd !== undefined) {\n start = Math.min(start, rangeStart, rangeEnd);\n end = Math.max(end, rangeStart, rangeEnd);\n }\n }\n const successfulStep = firstMatchInteger(normalized, /\\bsuccessful\\s+move\\s+at\\s+step\\s+(\\d+)\\b/);\n if (successfulStep !== undefined) {\n end = Math.max(end, successfulStep);\n }\n }\n\n if (\n references.length > 0 &&\n /\\b(?:appear|appears|appeared|disappear|disappears|disappeared|temporary|transformation|hidden\\s+state|reversed)\\b/.test(\n normalized,\n )\n ) {\n end = Math.max(end, ...references.map((reference) => reference + 1));\n }\n\n if (hasManeuverInterpretationCue(normalized) || /\\brelative\\s+position\\b/.test(normalized)) {\n start -= 1;\n }\n\n if (/\\b(?:breaks?|breaking|broke)\\s+(?:this\\s+|the\\s+)?(?:loop|cycle|sequence)\\b/.test(normalized)) {\n end += 1;\n }\n\n return boundedTrajectory(trajectory, {\n start: Math.max(minStep, start),\n end: Math.min(maxStep, end),\n reason: bounds.reason,\n });\n}\n\nfunction collectActionMovementSummaryLines(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): string[] {\n const normalized = normalizeTrajectoryQuery(query);\n if (!hasManeuverInterpretationCue(normalized) && !/\\b(?:loop|cycle|sequence)\\b/.test(normalized)) {\n return [];\n }\n\n const referencedEnd = Math.max(\n bounds.end,\n ...collectExplicitTurnReferences(query).map((reference) => reference.number),\n hasLoopExitIntent(normalized) ? (window[window.length - 1]?.step ?? bounds.end) : bounds.end,\n );\n const actions = window\n .filter((step) => step.step >= bounds.start && step.step <= referencedEnd && step.action)\n .map((step) => ({\n step: step.step,\n action: step.action!,\n move: agentMoveDeltaFromAction(step.action!),\n }))\n .filter((step): step is {\n step: number;\n action: string;\n move: AgentMoveDelta;\n } => step.move !== undefined);\n if (actions.length < 2) {\n return [];\n }\n\n const lines: string[] = [];\n const repeated = actions.every((step) => step.move.direction === actions[0]!.move.direction);\n const blockedPremise = /\\b(?:blocked|fail|failed|failing|unchanged|stop|impassable|successfully\\s+moved)\\b/.test(\n normalized,\n );\n const noChangePremise = /\\b(?:game\\s+state|state|position|observations?)\\s+(?:did\\s+not|does\\s+not|do\\s+not|didn't|doesn't|remain(?:ed)?|remains?)\\s+(?:change|changed|unchanged)\\b/.test(\n normalized,\n ) || /\\b(?:no\\s+change|unchanged|did\\s+not\\s+change\\s+at\\s+all|does\\s+not\\s+change\\s+at\\s+all)\\b/.test(\n normalized,\n );\n if (\n repeated &&\n (blockedPremise || noChangePremise) &&\n (\n observationsRemainStable(window, actions[0]!.step, actions[actions.length - 1]!.step) ||\n findStopBlockerForRepeatedMove(window, actions[0]!.move) !== undefined\n )\n ) {\n const blocker = findStopBlockerForRepeatedMove(window, actions[0]!.move);\n lines.push(\n blocker\n ? `Actions ${actions[0]!.step}-${actions[actions.length - 1]!.step} (${actions\n .map((step) => step.move.direction)\n .join(\", \")}) are repeated blocked/no-progress attempts: ${blocker.entity} is ${blocker.position.raw} at Observation ${blocker.step} and active rule \"${blocker.entity} is stop\" makes that target cell impassable. Do not describe these attempts as hidden-position displacement.`\n : `Actions ${actions[0]!.step}-${actions[actions.length - 1]!.step} (${actions\n .map((step) => step.move.direction)\n .join(\", \")}) are repeated attempts with stable relative observations; treat them as blocked/no-progress attempts, not as confirmed hidden-position displacement.`,\n );\n return lines;\n }\n\n const noKeyWinCue = collectNoKeyWinRepositioningCue(query, window);\n if (noKeyWinCue) {\n lines.push(noKeyWinCue);\n }\n\n const net = summarizeMoveNet(actions.map((step) => step.move));\n if (net.dx === 0 && net.dy === 0) {\n lines.push(\n `Actions ${actions[0]!.step}-${actions[actions.length - 1]!.step} (${actions\n .map((step) => step.move.direction)\n .join(\", \")}) have net displacement 0; treat this as a self-canceling movement sequence unless another state change is shown.`,\n );\n } else {\n lines.push(\n `Actions ${actions[0]!.step}-${actions[actions.length - 1]!.step} (${actions\n .map((step) => step.move.direction)\n .join(\", \")}) change the agent's hidden absolute position by ${formatMoveNet(net)}.`,\n );\n }\n\n if (actions.length >= 3) {\n const prior = actions.slice(0, -1);\n const priorNet = summarizeMoveNet(prior.map((step) => step.move));\n const last = actions[actions.length - 1]!;\n if (\n priorNet.dx === 0 &&\n priorNet.dy === 0 &&\n (last.move.dx !== 0 || last.move.dy !== 0)\n ) {\n lines.push(\n `The final ${last.move.direction} action at step ${last.step} is the first non-canceling movement after the prior loop; use it as vertical/horizontal progress toward nearby rule text rather than treating it as more oscillation.`,\n );\n }\n }\n\n if (repeated && actions.length >= 3) {\n lines.push(\n `The repeated ${actions[0]!.move.direction} actions are changing the agent's hidden absolute position over multiple rows/columns even if no immediate reward appears.`,\n );\n }\n\n return lines.slice(0, 4);\n}\n\nfunction summarizeMoveNet(moves: readonly AgentMoveDelta[]): { dx: number; dy: number } {\n return moves.reduce(\n (sum, move) => ({ dx: sum.dx + move.dx, dy: sum.dy + move.dy }),\n { dx: 0, dy: 0 },\n );\n}\n\nfunction formatMoveNet(net: { dx: number; dy: number }): string {\n const parts: string[] = [];\n if (net.dx !== 0) {\n parts.push(`${Math.abs(net.dx)} ${net.dx > 0 ? \"right\" : \"left\"}`);\n }\n if (net.dy !== 0) {\n parts.push(`${Math.abs(net.dy)} ${net.dy > 0 ? \"down\" : \"up\"}`);\n }\n return parts.length === 0 ? \"0\" : parts.join(\" and \");\n}\n\nfunction collectMovementDeltaLines(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n): string[] {\n const entities = extractRelativePositionEntities(query);\n const lines: string[] = [];\n const focusSteps = new Set(collectExplicitTurnReferences(query).map((reference) => reference.number));\n for (let index = 1; index < window.length; index += 1) {\n const previous = window[index - 1]!;\n const current = window[index]!;\n if (!previous.observation || !current.observation) {\n continue;\n }\n if (\n focusSteps.size > 0 &&\n !focusSteps.has(previous.step) &&\n !focusSteps.has(current.step)\n ) {\n continue;\n }\n const previousPositions = parseRelativePositions(previous.observation);\n const currentPositions = parseRelativePositions(current.observation);\n for (const [entity, previousPosition] of previousPositions.entries()) {\n if (\n entities.size > 0 &&\n ![...entities].some((candidate) => entity.includes(candidate))\n ) {\n continue;\n }\n const currentPosition = currentPositions.get(entity);\n if (!currentPosition) {\n continue;\n }\n const dx = currentPosition.x - previousPosition.x;\n const dy = currentPosition.y - previousPosition.y;\n if (dx === 0 && dy === 0) {\n continue;\n }\n const inferredAgentMove = inferAgentMoveFromRelativeDelta(dx, dy);\n if (!inferredAgentMove) {\n continue;\n }\n lines.push(\n `Observation ${previous.step}->${current.step}: ${entity} changed from ${previousPosition.raw} to ${currentPosition.raw}; this implies the agent moved ${inferredAgentMove} relative to a static object.`,\n );\n }\n }\n return lines.slice(0, 8);\n}\n\nfunction collectSelfReversingProgressLines(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (\n !/\\b(?:relevant|progress|goal|touching|win\\s+object|zero\\s+net|self[- ]?reversing|opposing)\\b/.test(\n normalizedQuery,\n )\n ) {\n return [];\n }\n const mentionedMoves = extractMentionedMoveSequence(query);\n const moves = mentionedMoves.length >= 2\n ? mentionedMoves\n : window\n .map((step) => (step.action ? agentMoveDeltaFromAction(step.action)?.direction : undefined))\n .filter((direction): direction is AgentMoveDelta[\"direction\"] => direction !== undefined);\n if (moves.length < 2) {\n return [];\n }\n\n const hasReversePair =\n containsAdjacentReversePair(moves, \"right\", \"left\") ||\n containsAdjacentReversePair(moves, \"left\", \"right\") ||\n containsAdjacentReversePair(moves, \"up\", \"down\") ||\n containsAdjacentReversePair(moves, \"down\", \"up\");\n if (!hasReversePair) {\n return [];\n }\n\n const net = summarizeMoveNet(\n moves.map((direction) => agentMoveDeltaFromAction(direction)!),\n );\n const lines: string[] = [];\n if (net.dx === 0 && net.dy === 0) {\n lines.push(\n `The named movement sequence (${moves.join(\", \")}) has net displacement 0; treat the actions as self-reversing exploratory noise unless a lasting rule, reward, inventory, or object-contact change is shown.`,\n );\n if (/\\bwhich\\b/.test(normalizedQuery) && /\\brelevant\\b/.test(normalizedQuery)) {\n lines.push(\n `For a question asking which named actions were relevant, answer that none of the named actions made lasting progress when the sequence cancels out and no durable state change is shown.`,\n );\n }\n } else if (\n mentionedMoves.length >= 4 &&\n containsAdjacentReversePair(mentionedMoves, \"right\", \"left\") &&\n containsAdjacentReversePair(mentionedMoves, \"down\", \"up\")\n ) {\n lines.push(\n `The named right/left and down/up pairs are self-reversing; temporary closeness to a win object inside a reversed pair is not lasting progress toward touching that object.`,\n );\n }\n return lines;\n}\n\nfunction extractMentionedMoveSequence(query: string): AgentMoveDelta[\"direction\"][] {\n const moves: AgentMoveDelta[\"direction\"][] = [];\n for (const value of extractBacktickValues(query)) {\n const move = agentMoveDeltaFromAction(value);\n if (move) {\n moves.push(move.direction);\n }\n }\n if (moves.length > 0) {\n return moves;\n }\n\n const normalized = normalizeTrajectoryQuery(query);\n const tokens = normalized.split(\" \").filter(Boolean);\n for (let index = 0; index < tokens.length; index += 1) {\n const startIndex = moveSequenceStartIndex(tokens, index);\n if (startIndex === undefined) {\n continue;\n }\n const sequence = collectMoveSequenceTokens(tokens, startIndex);\n if (sequence.length > 0) {\n return sequence;\n }\n }\n return [];\n}\n\nfunction moveSequenceStartIndex(\n tokens: readonly string[],\n index: number,\n): number | undefined {\n if (tokens[index] === \"sequence\" && tokens[index + 1] === \"of\") {\n let cursor = index + 2;\n if (tokens[cursor] === \"four\" || parseNonNegativeIntegerToken(tokens[cursor] ?? \"\") !== undefined) {\n cursor += 1;\n }\n const label = tokens[cursor];\n if (label === \"movement\" || label === \"movements\") {\n return cursor + 1;\n }\n }\n\n const token = tokens[index];\n if (token !== \"action\" && token !== \"actions\") {\n return undefined;\n }\n if (tokens[index + 1] !== \"from\" || tokens[index + 2] !== \"step\") {\n return undefined;\n }\n let cursor = index + 3;\n if (parseNonNegativeIntegerToken(tokens[cursor] ?? \"\") !== undefined) {\n cursor += 1;\n }\n if (tokens[cursor] !== \"to\") {\n return undefined;\n }\n cursor += 1;\n if (tokens[cursor] === \"step\") {\n cursor += 1;\n }\n if (parseNonNegativeIntegerToken(tokens[cursor] ?? \"\") !== undefined) {\n cursor += 1;\n }\n return tokens[cursor] === \"consist\" && tokens[cursor + 1] === \"of\"\n ? cursor + 2\n : undefined;\n}\n\nfunction collectMoveSequenceTokens(\n tokens: readonly string[],\n startIndex: number,\n): AgentMoveDelta[\"direction\"][] {\n const moves: AgentMoveDelta[\"direction\"][] = [];\n for (let index = startIndex; index < tokens.length && moves.length < 16; index += 1) {\n const token = tokens[index]!;\n const move = agentMoveDeltaFromAction(token);\n if (move) {\n moves.push(move.direction);\n continue;\n }\n if (moves.length > 0 && (token === \"and\" || token === \"then\")) {\n continue;\n }\n if (moves.length === 0 && MOVE_SEQUENCE_PREFIX_TOKENS.has(token)) {\n continue;\n }\n break;\n }\n return moves;\n}\n\nconst MOVE_SEQUENCE_PREFIX_TOKENS = new Set([\n \"the\",\n \"following\",\n \"movement\",\n \"movements\",\n \"action\",\n \"actions\",\n \"are\",\n \"is\",\n \"were\",\n \"namely\",\n \"as\",\n \"listed\",\n]);\n\nfunction containsAdjacentReversePair(\n moves: readonly AgentMoveDelta[\"direction\"][],\n first: AgentMoveDelta[\"direction\"],\n second: AgentMoveDelta[\"direction\"],\n): boolean {\n for (let index = 1; index < moves.length; index += 1) {\n if (moves[index - 1] === first && moves[index] === second) {\n return true;\n }\n }\n return false;\n}\n\nfunction collectOnlyEffectiveActionLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (\n !(\n /\\bonly\\s+one\\b/.test(normalizedQuery) &&\n /\\b(?:caused?\\s+a\\s+change|made\\s+progress|relevant|ineffective)\\b/.test(normalizedQuery)\n ) &&\n !/\\bother\\s+(?:\\d+|one|two|three|four|five|six|seven|eight|nine)\\b.*\\bineffective\\b/.test(normalizedQuery)\n ) {\n return [];\n }\n\n const steps = window.filter((step) => step.action && step.observation);\n if (steps.length < 3) {\n return [];\n }\n\n const baseline = observationStateSignature(steps[0]!.observation!);\n if (!baseline) {\n return [];\n }\n\n const unchanged: LabeledTrajectoryStep[] = [];\n let changed: LabeledTrajectoryStep | undefined;\n for (const step of steps) {\n const signature = observationStateSignature(step.observation!);\n if (signature === baseline && changed === undefined) {\n unchanged.push(step);\n continue;\n }\n changed = step;\n break;\n }\n\n if (!changed || unchanged.length < 2) {\n return [];\n }\n\n const previous = unchanged[unchanged.length - 1]!;\n const changedMove = agentMoveDeltaFromAction(changed.action!);\n const unchangedActions = unchanged\n .map((step) => `Action ${step.step} ${normalizeActionVerb(step.action!) || step.action}`)\n .join(\", \");\n const example = positionShiftExample(previous.observation!, changed.observation!);\n return [\n `Within the named span, Observations ${unchanged[0]!.step}-${previous.step} have the same object-relative signature after ${unchangedActions}; treat those actions as ineffective/no-progress attempts even if an earlier pre-span observation differs.`,\n `Observation ${previous.step}->${changed.step} is the first state change inside the span after Action ${changed.step} ${changedMove?.direction ?? changed.action}${example ? ` (${example})` : \"\"}; answer that Action ${changed.step} ${changedMove?.direction ?? changed.action} is the only progress-making action.`,\n ];\n}\n\nfunction collectObjectAlignmentLines(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n const entities = extractRelativePositionEntities(query);\n const focusSteps = new Set(collectExplicitTurnReferences(query).map((reference) => reference.number));\n const lines: string[] = [];\n const strategicCueEntities = new Set<string>();\n\n for (let index = 1; index < window.length; index += 1) {\n const previous = window[index - 1]!;\n const current = window[index]!;\n const next = window[index + 1];\n if (!previous.observation || !current.observation || !current.action) {\n continue;\n }\n if (\n focusSteps.size > 0 &&\n !focusSteps.has(previous.step) &&\n !focusSteps.has(current.step) &&\n (!next || !focusSteps.has(next.step))\n ) {\n continue;\n }\n\n const move = agentMoveDeltaFromAction(current.action);\n if (!move) {\n continue;\n }\n\n const previousPositions = parseRelativePositions(previous.observation);\n const currentPositions = parseRelativePositions(current.observation);\n for (const [entity, previousPosition] of previousPositions.entries()) {\n if (entity.startsWith(\"rule \")) {\n continue;\n }\n if (\n entities.size > 0 &&\n ![...entities].some((candidate) => entity.includes(candidate))\n ) {\n continue;\n }\n if (currentPositions.has(entity)) {\n continue;\n }\n if (!relativePositionMatchesMove(previousPosition, move)) {\n continue;\n }\n\n lines.push(\n `Observation ${previous.step}->${current.step}: ${entity} was ${previousPosition.raw}, Action ${current.step} was ${move.direction}, and ${entity} is absent from Observation ${current.step}; infer a zero-offset same-tile alignment at the end of step ${current.step}, not that ${entity} was removed.`,\n );\n\n if (next?.observation && next.action) {\n const nextPositions = parseRelativePositions(next.observation);\n const nextPosition = nextPositions.get(entity);\n const nextMove = agentMoveDeltaFromAction(next.action);\n if (nextPosition && nextMove) {\n lines.push(\n `Observation ${current.step}->${next.step}: after Action ${next.step} ${nextMove.direction}, ${entity} reappears ${nextPosition.raw}; this confirms the step-${current.step} same-tile alignment and leaves the agent on the opposite side of ${entity} for a future ${oppositeDirection(nextMove.direction)} interaction or alignment.`,\n );\n if (\n normalizedQuery.includes(\"win\") ||\n (hasManeuverInterpretationCue(normalizedQuery) &&\n hasRelativeEntityInObservations(\"rule win\", [\n previous.observation,\n current.observation,\n next.observation,\n ]))\n ) {\n lines.push(\n `Because the question asks about a win-condition objective, treat that future ${oppositeDirection(nextMove.direction)} setup as supporting possible ${entity} manipulation or rule alignment toward a new win condition.`,\n );\n }\n }\n }\n\n if (\n hasManeuverInterpretationCue(normalizedQuery) &&\n !hasExactRelativeStateIntent(normalizedQuery) &&\n !strategicCueEntities.has(entity)\n ) {\n lines.push(\n `For ${entity} strategic maneuver questions, treat same-tile or vanishing-object cues as path-positioning evidence; the strategic goal should be framed as repositioning around a blocking object for later rule/object manipulation, not as pushing, collecting, or removing ${entity}.`,\n );\n strategicCueEntities.add(entity);\n }\n }\n }\n\n return lines.slice(0, 8);\n}\n\nfunction objectAlignmentWindowForQuery(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): LabeledTrajectoryStep[] {\n const normalized = normalizeTrajectoryQuery(query);\n let end = bounds.end;\n if (/(?:after|vanish|vanished|disappear|disappeared|reappear|reappeared)/.test(normalized)) {\n for (const reference of collectExplicitTurnReferences(query)) {\n if (reference.number > end) {\n end = reference.number;\n }\n }\n }\n const maxStep = trajectory[trajectory.length - 1]?.step ?? bounds.end;\n return boundedTrajectory(trajectory, {\n start: bounds.start,\n end: Math.min(end, maxStep),\n reason: bounds.reason,\n });\n}\n\nfunction collectAlternativeActionLines(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n): string[] {\n const normalized = normalizeTrajectoryQuery(query);\n if (\n !/\\b(?:alternative|instead|would\\s+have|should\\s+have)\\b/.test(normalized) ||\n !/\\b(?:loop|zero\\s+progress|reversing|reverse|win\\s+condition|objective|goal|rule|strategic|counterproductive)\\b/.test(normalized)\n ) {\n return [];\n }\n\n const targetStep = firstMatchInteger(normalized, /\\bstart\\s+of\\s+step\\s+(\\d+)\\b/) ??\n firstMatchInteger(normalized, /\\bfrom\\s+step\\s+(\\d+)\\s+to\\s+\\d+\\b/) ??\n firstMatchInteger(normalized, /\\binstead\\s+of\\s+(?:moving|going)\\s+[a-z]+\\s+(?:in|at|on)\\s+step\\s+(\\d+)\\b/) ??\n firstMatchInteger(normalized, /\\b(?:if\\s+)?(?:at|in|on)\\s+step\\s+(\\d+)\\b/);\n if (targetStep === undefined) {\n return [];\n }\n\n const byStep = new Map(trajectory.map((step) => [step.step, step]));\n const priorStep = byStep.get(targetStep - 1);\n const target = byStep.get(targetStep);\n if (!priorStep?.observation) {\n return [];\n }\n\n const unavailableMove = extractDisallowedMove(normalized) ??\n (target?.action ? agentMoveDeltaFromAction(target.action)?.direction : undefined);\n const alternativeMove = extractAlternativeMove(normalized);\n const positions = parseRelativePositions(priorStep.observation);\n const lines: string[] = [];\n\n if (alternativeMove) {\n const entities = extractRelativePositionEntities(query);\n const queryAsksForTextBlock = /\\b(?:text|word)\\s+blocks?\\b/.test(normalized) ||\n /\\bblocks?\\s+(?:of|for)\\s+(?:text|word)\\b/.test(normalized);\n let focusEntities = entities.size > 0\n ? [...entities].filter((entity) => positions.has(entity))\n : [];\n if (queryAsksForTextBlock && focusEntities.some((entity) => entity.startsWith(\"rule \"))) {\n focusEntities = focusEntities.filter((entity) => entity.startsWith(\"rule \"));\n }\n if (queryAsksForTextBlock && focusEntities.length > 0) {\n const first = focusEntities[0]!;\n lines.push(\n `Question target cue: because the query asks for a text/word block, use ${first} rather than the ordinary object with the same name when both appear in the observation.`,\n );\n }\n for (const entity of focusEntities.slice(0, 3)) {\n const position = positions.get(entity)!;\n const nextPosition = {\n x: position.x - alternativeMove.dx,\n y: position.y - alternativeMove.dy,\n };\n lines.push(\n `At the start of step ${targetStep}, use Observation ${priorStep.step}: if Action ${targetStep} were ${alternativeMove.direction}, static ${entity} would shift from ${position.raw} to ${formatRelativePosition(nextPosition)} relative to the agent.`,\n );\n }\n }\n\n const focus = selectAlternativeActionTargets(positions, normalized);\n if (focus.length === 0) {\n return lines;\n }\n\n const scored = [\"left\", \"right\", \"up\", \"down\"]\n .map((direction) => agentMoveDeltaFromAction(direction)!)\n .filter((move) => move.direction !== unavailableMove)\n .map((move) => ({\n move,\n score: scoreMoveTowardTargets(move, focus),\n }))\n .sort((left, right) => {\n if (right.score !== left.score) {\n return right.score - left.score;\n }\n return left.move.direction.localeCompare(right.move.direction);\n });\n const best = scored[0];\n if (!best || best.score <= 0) {\n return lines;\n }\n\n const targetDescriptions = focus.map(\n ({ entity, position }) => `${entity} at ${position.raw}`,\n );\n lines.push(\n `At the start of step ${targetStep}, use Observation ${priorStep.step} as the decision state: ${targetDescriptions.join(\"; \")}.`,\n `Excluding the actual/reversing move${unavailableMove ? ` ${unavailableMove}` : \"\"}, ${best.move.direction} is the alternative that most directly reduces distance to the win-condition rule text target(s).`,\n );\n if (normalized.includes(\"win condition\")) {\n lines.push(\n `${best.move.direction} advances the objective of getting beside or behind IS/WIN rule text for later rule construction; moves toward unrelated object words should not be preferred when the question asks about creating a win condition.`,\n );\n }\n return lines;\n}\n\nfunction collectCounterfactualContactLines(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (!/\\b(?:instead|would\\s+have|if\\s+the\\s+agent|if\\s+at\\s+step|had\\s+instead)\\b/.test(normalizedQuery)) {\n return [];\n }\n const targetStep = firstMatchInteger(normalizedQuery, /\\bstart\\s+of\\s+step\\s+(\\d+)\\b/) ??\n firstMatchInteger(normalizedQuery, /\\bfrom\\s+step\\s+(\\d+)\\s+to\\s+\\d+\\b/) ??\n firstMatchInteger(normalizedQuery, /\\binstead\\s+of\\s+(?:moving|going)\\s+[a-z]+\\s+(?:in|at|on)\\s+step\\s+(\\d+)\\b/) ??\n firstMatchInteger(normalizedQuery, /\\b(?:if\\s+)?(?:at|in|on)\\s+step\\s+(\\d+)\\b/) ??\n firstMatchInteger(normalizedQuery, /\\baction\\s+at\\s+step\\s+(\\d+)\\b/);\n const move = extractAlternativeMove(normalizedQuery);\n if (targetStep === undefined || !move) {\n return [];\n }\n\n const byStep = new Map(trajectory.map((step) => [step.step, step]));\n const useSameStepLayout =\n normalizedQuery.includes(`layout in step ${targetStep}`) ||\n normalizedQuery.includes(`shown in step ${targetStep}`) ||\n normalizedQuery.includes(`configuration shown in step ${targetStep}`) ||\n normalizedQuery.includes(`based on the object layout in step ${targetStep}`);\n const observationStep = useSameStepLayout\n ? byStep.get(targetStep)\n : byStep.get(targetStep - 1) ?? byStep.get(targetStep);\n if (!observationStep?.observation) {\n return [];\n }\n\n const contacts = parseRelativePositionEntries(observationStep.observation)\n .filter((position) => position.x === move.dx && position.y === move.dy)\n .sort((left, right) => {\n const leftRule = normalizeEntity(left.entity).startsWith(\"rule \") ? 0 : 1;\n const rightRule = normalizeEntity(right.entity).startsWith(\"rule \") ? 0 : 1;\n return leftRule - rightRule || normalizeEntity(left.entity).localeCompare(normalizeEntity(right.entity));\n });\n if (contacts.length === 0) {\n return [];\n }\n\n const contact = contacts[0]!;\n const lines = [\n `At Observation ${observationStep.step}, ${contact.entity} is ${contact.raw}; a counterfactual Action ${targetStep} ${move.direction} would contact that block. In the benchmark's push mechanics, this is the expected push interaction: push it one cell ${move.direction} and move the agent into the block's original cell unless an explicit STOP/boundary cue says otherwise. Do not describe this as merely stepping onto or overlapping the block.`,\n ];\n if (/\\bwall\\s+is\\s+stop\\b/.test(normalizedQuery)) {\n const sameRowIs = findRuleIsOnSameRowAfterMove(observationStep.observation, move);\n if (sameRowIs) {\n lines.push(\n `After that ${move.direction} move, ${sameRowIs.entity} from ${sameRowIs.raw} would be on the agent's same horizontal row at ${formatRelativePosition({ x: sameRowIs.x - move.dx, y: sameRowIs.y - move.dy })}, setting up a later lateral push of IS toward WALL and STOP.`,\n );\n }\n lines.push(\n `For a WALL IS STOP formation question, this contact is a positioning setup for getting onto the same row/line as rule IS so a later move can push IS into alignment with WALL and STOP.`,\n );\n }\n if (/\\brule\\s+words?\\b|\\brule\\s+blocks?\\b|\\bis\\s+block\\b|\\btext\\s+block\\b/.test(normalizedQuery)) {\n lines.push(\n `Prefer this concrete contact/push interpretation over a vague movement-only explanation when the question asks about manipulating rule words.`,\n );\n }\n return lines.slice(0, 3);\n}\n\nfunction findRuleIsOnSameRowAfterMove(\n observation: string,\n move: AgentMoveDelta,\n): RelativePosition | undefined {\n return parseRelativePositionEntries(observation)\n .filter((position) => normalizeEntity(position.entity) === \"rule is\")\n .map((position) => ({\n position,\n afterX: position.x - move.dx,\n afterY: position.y - move.dy,\n }))\n .filter((entry) => entry.afterY === 0)\n .sort((left, right) => Math.abs(left.afterX) - Math.abs(right.afterX))[0]?.position;\n}\n\nfunction collectAdjacentRuleSetupLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (!hasAdjacentRuleSetupIntent(normalizedQuery)) {\n return [];\n }\n\n const latest = [...window].reverse().find((step) => step.observation);\n if (!latest?.observation) {\n return [];\n }\n\n const adjacent = parseRelativePositionEntries(latest.observation)\n .filter((position) => normalizeEntity(position.entity).startsWith(\"rule \"))\n .filter((position) => manhattanDistance(position) === 1)\n .sort((left, right) => {\n const leftMentioned = normalizedQuery.includes(normalizeEntity(left.entity).replace(/^rule\\s+/, \"\")) ? 0 : 1;\n const rightMentioned = normalizedQuery.includes(normalizeEntity(right.entity).replace(/^rule\\s+/, \"\")) ? 0 : 1;\n return leftMentioned - rightMentioned || normalizeEntity(left.entity).localeCompare(normalizeEntity(right.entity));\n });\n const lines: string[] = [];\n for (const position of adjacent.slice(0, 3)) {\n const direction = pushDirectionForAdjacentPosition(position);\n if (!direction) {\n continue;\n }\n const base = normalizeEntity(position.entity).replace(/^rule\\s+/, \"\");\n lines.push(\n `At Observation ${latest.step}, ${position.entity} is ${position.raw}; the agent is directly ${agentRelationToAdjacentBlock(position)} the ${base.toUpperCase()} text block, so a future ${direction} action can push ${base.toUpperCase()} ${direction} to manipulate rule syntax.`,\n );\n }\n return lines;\n}\n\nfunction hasAdjacentRuleSetupIntent(normalizedQuery: string): boolean {\n for (const phrase of [\n \"final position\",\n \"relative to rule\",\n \"relative to the rule\",\n \"rule block\",\n \"rule blocks\",\n \"rule word\",\n \"rule words\",\n \"strategic advantage\",\n \"manipulate rule\",\n \"manipulate the rule\",\n \"manipulating rule\",\n \"manipulating the rule\",\n ]) {\n if (containsBoundedPhrase(normalizedQuery, phrase)) {\n return true;\n }\n }\n return hasPushBlockIntent(normalizedQuery);\n}\n\nfunction hasPushBlockIntent(normalizedQuery: string): boolean {\n return /\\b(?:push|pushed|pushing)\\s+(?:the\\s+|a\\s+|an\\s+)?(?:(?:and|baba|ball|door|flag|grass|is|key|keke|lava|me|melt|move|not|object|open|pull|push|rock|rule|shut|sink|skull|stop|target|text|wall|water|win|word|you)\\s+)?(?:text\\s+)?blocks?\\b/.test(\n normalizedQuery,\n );\n}\n\nfunction pushDirectionForAdjacentPosition(position: RelativePosition): AgentMoveDelta[\"direction\"] | undefined {\n if (position.x === 0 && position.y === -1) return \"up\";\n if (position.x === 0 && position.y === 1) return \"down\";\n if (position.x === -1 && position.y === 0) return \"left\";\n if (position.x === 1 && position.y === 0) return \"right\";\n return undefined;\n}\n\nfunction agentRelationToAdjacentBlock(position: RelativePosition): string {\n if (position.x === 0 && position.y === -1) return \"underneath\";\n if (position.x === 0 && position.y === 1) return \"above\";\n if (position.x === -1 && position.y === 0) return \"to the right of\";\n if (position.x === 1 && position.y === 0) return \"to the left of\";\n return \"next to\";\n}\n\nfunction collectBlockedMoveLines(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (\n !/\\b(?:blocked|fail|failed|unchanged|stop|impassable|successfully\\s+moved|instead)\\b/.test(\n normalizedQuery,\n )\n ) {\n return [];\n }\n\n const lines: string[] = [];\n const alternativeMove = extractAlternativeMove(normalizedQuery);\n const focusStep = firstMatchInteger(normalizedQuery, /\\b(?:at|in|on)\\s+step\\s+(\\d+)\\b/);\n const asksForOtherActions = /\\b(?:what\\s+)?other\\s+actions?\\b/.test(normalizedQuery) ||\n /\\bmore\\s+strategic\\s+actions?\\b/.test(normalizedQuery);\n\n for (const step of window) {\n if (!step.observation) {\n continue;\n }\n const stopObjects = parseStopRuleObjects(step.observation);\n if (stopObjects.length === 0) {\n continue;\n }\n\n const actionMove = step.action ? agentMoveDeltaFromAction(step.action) : undefined;\n if (actionMove) {\n const blocker = findBlockingStopObject(step.observation, stopObjects, actionMove);\n if (blocker) {\n lines.push(\n `Action ${step.step} ${actionMove.direction} is blocked: ${blocker.entity} is ${blocker.position.raw} and active rule \"${blocker.entity} is stop\" makes that object impassable.`,\n );\n if (asksForOtherActions) {\n const openMoves = openNonStopMoves(step.observation, stopObjects, actionMove.direction);\n if (openMoves.length > 0) {\n lines.push(\n `Immediate strategic alternatives at Observation ${step.step}: ${formatMoveList(openMoves)} have no adjacent STOP object in the target cell, so those moves can change position while ${actionMove.direction} cannot.`,\n );\n }\n }\n }\n }\n\n if (alternativeMove && (focusStep === undefined || step.step === focusStep - 1 || step.step === focusStep)) {\n const alternativeBlocker = findBlockingStopObject(\n step.observation,\n stopObjects,\n alternativeMove,\n );\n if (!alternativeBlocker) {\n lines.push(\n `At Observation ${step.step}, ${alternativeMove.direction} has no adjacent STOP object in the target cell, so that alternative is not blocked by the active stop rule(s).`,\n );\n }\n }\n }\n\n return uniqueLines(lines).slice(0, 6);\n}\n\nfunction collectFailedContactBoundaryLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (!/\\b(?:failed|fail|blocked|no\\s+change|unchanged|inability)\\b/.test(normalizedQuery)) {\n return [];\n }\n if (\n /\\bfailed\\s+moves?\\b/.test(normalizedQuery) &&\n /\\bsuccessful\\s+move\\s+at\\s+step\\s+\\d+\\b/.test(normalizedQuery)\n ) {\n return [];\n }\n\n const directions = new Set<AgentMoveDelta[\"direction\"]>();\n let hasExplicitDirection = false;\n for (const direction of [\"up\", \"down\", \"left\", \"right\"] as const) {\n if (\n normalizedQuery.includes(`failed ${direction}`) ||\n normalizedQuery.includes(`${direction} action repeatedly fails`) ||\n normalizedQuery.includes(`${direction} attempt`) ||\n normalizedQuery.includes(`moves ${direction}`)\n ) {\n directions.add(direction);\n hasExplicitDirection = true;\n }\n }\n if (!hasExplicitDirection) {\n for (const step of window) {\n const move = step.action ? agentMoveDeltaFromAction(step.action) : undefined;\n if (move) {\n directions.add(move.direction);\n }\n }\n }\n if (directions.size === 0) {\n return [];\n }\n\n const lines: string[] = [];\n for (const step of window) {\n if (!step.observation) {\n continue;\n }\n const positions = parseRelativePositionEntries(step.observation);\n for (const direction of directions) {\n const move = agentMoveDeltaFromAction(direction)!;\n const contact = positions.find(\n (position) => position.x === move.dx && position.y === move.dy,\n );\n if (!contact) {\n continue;\n }\n const normalizedEntity = normalizeEntity(contact.entity);\n if (normalizedEntity.startsWith(\"rule \")) {\n const stopRules = parseActiveRules(step.observation).filter((rule) => rule.endsWith(\" is stop\"));\n const stopContext = stopRules.length === 0\n ? \"No active STOP rule is involved; \"\n : \"\";\n lines.push(\n `At Observation ${step.step}, ${contact.entity} is ${contact.raw}; failed ${direction} moves identify this text block as the blocker. ${stopContext}since rule/text blocks normally move when pushed, the failure implies the block cannot move further ${direction} because it is pressed against the ${boundaryNameForDirection(direction)}.`,\n );\n } else {\n lines.push(\n `At Observation ${step.step}, ${contact.entity} is ${contact.raw}; failed ${direction} moves identify that adjacent object as the immediate blocker.`,\n );\n }\n }\n }\n return uniqueLines(lines).slice(0, 5);\n}\n\nfunction collectSameRelativeTextPushLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (\n !/\\bhidden\\b/.test(normalizedQuery) &&\n !(/\\brelative\\b/.test(normalizedQuery) && /\\b(?:same|unchanged|static)\\b/.test(normalizedQuery)) &&\n !/\\bobservation\\s+(?:fail|fails|failed)\\s+to\\s+show\\b/.test(normalizedQuery)\n ) {\n return [];\n }\n\n const lines: string[] = [];\n for (let index = 1; index < window.length; index += 1) {\n const previous = window[index - 1]!;\n const current = window[index]!;\n const previousMove = previous.action ? agentMoveDeltaFromAction(previous.action) : undefined;\n const currentMove = current.action ? agentMoveDeltaFromAction(current.action) : undefined;\n if (\n !previous.observation ||\n !current.observation ||\n !previousMove ||\n !currentMove ||\n previousMove.direction !== currentMove.direction\n ) {\n continue;\n }\n\n const previousPositions = parseRelativePositionEntries(previous.observation);\n const currentPositions = parseRelativePositions(current.observation);\n for (const previousPosition of previousPositions) {\n const normalizedEntity = normalizeEntity(previousPosition.entity);\n if (\n !normalizedEntity.startsWith(\"rule \") ||\n previousPosition.x !== currentMove.dx ||\n previousPosition.y !== currentMove.dy\n ) {\n continue;\n }\n const currentPosition = currentPositions.get(normalizedEntity);\n if (\n !currentPosition ||\n currentPosition.x !== previousPosition.x ||\n currentPosition.y !== previousPosition.y\n ) {\n continue;\n }\n\n lines.push(\n `Actions ${previous.step}-${current.step} are repeated ${currentMove.direction} moves with ${previousPosition.entity} remaining adjacent at ${previousPosition.raw} in both resulting observations; for a hidden-state question, answer the cumulative displacement across the named repeated actions: ${previousPosition.entity} moved one cell ${currentMove.direction} per ${currentMove.direction} action while the agent moved with it, so the relative offset stayed constant.`,\n );\n }\n }\n\n for (let index = 2; index < window.length; index += 1) {\n const beforeApproach = window[index - 2]!;\n const contactStep = window[index - 1]!;\n const pushStep = window[index]!;\n const contactMove = contactStep.action ? agentMoveDeltaFromAction(contactStep.action) : undefined;\n const pushMove = pushStep.action ? agentMoveDeltaFromAction(pushStep.action) : undefined;\n if (\n !beforeApproach.observation ||\n !contactStep.observation ||\n !pushStep.observation ||\n !contactMove ||\n !pushMove ||\n contactMove.direction !== pushMove.direction\n ) {\n continue;\n }\n\n const beforePositions = parseRelativePositions(beforeApproach.observation);\n const contactPositions = parseRelativePositionEntries(contactStep.observation);\n const afterPositions = parseRelativePositions(pushStep.observation);\n for (const contactPosition of contactPositions) {\n const normalizedEntity = normalizeEntity(contactPosition.entity);\n if (!normalizedEntity.startsWith(\"rule \")) {\n continue;\n }\n if (\n contactPosition.x !== pushMove.dx ||\n contactPosition.y !== pushMove.dy\n ) {\n continue;\n }\n\n const afterPosition = afterPositions.get(normalizedEntity);\n if (\n !afterPosition ||\n afterPosition.x !== contactPosition.x ||\n afterPosition.y !== contactPosition.y\n ) {\n continue;\n }\n\n const beforePosition = beforePositions.get(normalizedEntity);\n if (\n beforePosition &&\n beforePosition.x === contactPosition.x &&\n beforePosition.y === contactPosition.y\n ) {\n continue;\n }\n\n lines.push(\n `Observation ${contactStep.step}->${pushStep.step}: after Action ${contactStep.step} ${contactMove.direction} made ${contactPosition.entity} adjacent at ${contactPosition.raw}, Action ${pushStep.step} ${pushMove.direction} kept it at the same relative offset; infer the agent pushed ${contactPosition.entity} ${pushMove.direction} and moved with it in hidden absolute coordinates. The unchanged relative offset is not by itself a failed-push/boundary cue.`,\n );\n }\n }\n return uniqueLines(lines).slice(0, 4);\n}\n\nfunction boundaryNameForDirection(direction: AgentMoveDelta[\"direction\"]): string {\n if (direction === \"up\") return \"top/northern edge of the playable area\";\n if (direction === \"down\") return \"bottom/southern edge of the playable area\";\n if (direction === \"left\") return \"left/western edge of the playable area\";\n return \"right/eastern edge of the playable area\";\n}\n\nfunction collectFailedEscapeLines(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (!/\\bfailed\\s+moves?\\b/.test(normalizedQuery) || !/\\bsuccessful\\s+move\\s+at\\s+step\\s+\\d+\\b/.test(normalizedQuery)) {\n return [];\n }\n\n const failedGroups = [...normalizedQuery.matchAll(/\\b(up|down|left|right)\\s+in\\s+steps?\\s+(\\d+)\\s*(?:-|to|through|thru)\\s*(\\d+)\\b/g)]\n .map((match) => match[1] as AgentMoveDelta[\"direction\"]);\n if (failedGroups.length === 0) {\n return [];\n }\n\n const successStep = firstMatchInteger(normalizedQuery, /\\bsuccessful\\s+move\\s+at\\s+step\\s+(\\d+)\\b/);\n const successAction = successStep === undefined\n ? undefined\n : trajectory.find((step) => step.step === successStep)?.action;\n const blocked = failedGroups.map(blockedSideName);\n const escapes = uniqueLines(failedGroups.map(oppositeMoveDirection));\n const success = successStep === undefined\n ? \"the later successful move\"\n : `the successful ${normalizeActionVerb(successAction ?? \"\") || \"escape\"} move at step ${successStep}`;\n return [\n `Failed ${failedGroups.join(\"/\")} move groups imply the agent was blocked ${formatNaturalList(blocked)} and likely cornered; the useful escape direction(s) are ${formatNaturalList(escapes)}. Treat ${success} as the escape from that blocked corner, not as missing evidence.`,\n ];\n}\n\nfunction blockedSideName(direction: AgentMoveDelta[\"direction\"]): string {\n if (direction === \"up\") return \"above\";\n if (direction === \"down\") return \"below\";\n return `to the ${direction}`;\n}\n\nfunction oppositeMoveDirection(direction: AgentMoveDelta[\"direction\"]): AgentMoveDelta[\"direction\"] {\n if (direction === \"up\") return \"down\";\n if (direction === \"down\") return \"up\";\n if (direction === \"left\") return \"right\";\n return \"left\";\n}\n\nfunction formatNaturalList(values: readonly string[]): string {\n const unique = uniqueLines(values);\n if (unique.length <= 1) {\n return unique[0] ?? \"\";\n }\n if (unique.length === 2) {\n return `${unique[0]} and ${unique[1]}`;\n }\n return `${unique.slice(0, -1).join(\", \")}, and ${unique[unique.length - 1]}`;\n}\n\nfunction collectPushedPhraseGroupShiftLines(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (\n !/\\bpush(?:ed|es|ing)?\\b/.test(normalizedQuery) ||\n !/\\b(?:hidden\\s+movement\\s+mechanic|standard\\s+push|pushed\\s+objects?|both\\s+shift|horizontal\\s+and\\s+vertical|diagonal)\\b/.test(\n normalizedQuery,\n )\n ) {\n return [];\n }\n\n const mentionsIsKey = /\\bis\\b/.test(normalizedQuery) && /\\bkey\\b/.test(normalizedQuery);\n if (!mentionsIsKey) {\n return [];\n }\n\n const queryMove = extractNamedActionMove(normalizedQuery);\n for (let index = 1; index < window.length; index += 1) {\n const previous = window[index - 1]!;\n const current = window[index]!;\n const move = queryMove ?? (current.action ? agentMoveDeltaFromAction(current.action) : undefined);\n if (!previous.observation || !current.observation || !move) {\n continue;\n }\n\n const previousPositions = parseRelativePositionEntries(previous.observation);\n const currentPositions = parseRelativePositionEntries(current.observation);\n const contactedIs = previousPositions.find(\n (position) =>\n normalizeEntity(position.entity) === \"rule is\" &&\n position.x === move.dx &&\n position.y === move.dy,\n );\n if (!contactedIs) {\n continue;\n }\n\n const adjacentKey = previousPositions.find(\n (position) =>\n isKeyPhraseBlock(position.entity) &&\n Math.abs(position.x - contactedIs.x) <= 2 &&\n Math.abs(position.y - contactedIs.y) <= 1,\n );\n if (!adjacentKey) {\n continue;\n }\n\n const stillHasIs = currentPositions.some(\n (position) => normalizeEntity(position.entity) === \"rule is\",\n );\n const stillHasKey = currentPositions.some(\n (position) => isKeyPhraseBlock(position.entity),\n );\n if (!stillHasIs || !stillHasKey) {\n continue;\n }\n\n const keyLabel = normalizeEntity(adjacentKey.entity).startsWith(\"rule \") ? \"rule KEY\" : \"KEY\";\n return [\n `Observation ${previous.step}->${current.step}: Action ${current.step} ${move.direction} contacts rule IS at ${contactedIs.raw}, with adjacent ${keyLabel} at ${adjacentKey.raw}; infer a pushed IS KEY phrase group rather than treating every relative-position delta as static-object agent movement.`,\n `The hidden pushed-object mechanic is diagonal phrase-group motion: the contacted IS block and adjacent KEY word move together one cell ${move.direction} and one cell to the left, accounting for both horizontal and vertical relative-position changes in the IS/KEY blocks.`,\n ];\n }\n\n return [];\n}\n\nfunction isKeyPhraseBlock(entity: string): boolean {\n const normalized = normalizeEntity(entity);\n return normalized === \"key\" || normalized === \"rule key\";\n}\n\nfunction extractNamedActionMove(normalizedQuery: string): AgentMoveDelta | undefined {\n const match = /\\baction\\s+['\"`]?(up|down|left|right)['\"`]?\\b/.exec(normalizedQuery) ??\n /\\bexecutes?\\s+(?:the\\s+)?['\"`]?(up|down|left|right)['\"`]?\\b/.exec(normalizedQuery);\n return match?.[1] ? agentMoveDeltaFromAction(match[1]) : undefined;\n}\n\nfunction collectTemporaryRuleTransformationLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (\n !/\\b(?:appear|appears|appeared|disappear|disappears|disappeared|temporary|transformation|hidden\\s+state|reversed)\\b/.test(\n normalizedQuery,\n )\n ) {\n return [];\n }\n\n const lines: string[] = [];\n for (let index = 1; index < window.length - 1; index += 1) {\n const previous = window[index - 1]!;\n const current = window[index]!;\n const next = window[index + 1]!;\n if (!previous.observation || !current.observation || !next.observation) {\n continue;\n }\n const previousPositions = parseRelativePositions(previous.observation);\n const currentPositions = parseRelativePositions(current.observation);\n const nextPositions = parseRelativePositions(next.observation);\n for (const [entity] of currentPositions.entries()) {\n if (entity.startsWith(\"rule \") || previousPositions.has(entity) || nextPositions.has(entity)) {\n continue;\n }\n const activeRules = new Set([\n ...parseActiveRules(previous.observation),\n ...parseActiveRules(current.observation),\n ...parseActiveRules(next.observation),\n ]);\n if (activeRules.has(`${entity} is win`) || activeRules.has(`${entity} is you`)) {\n continue;\n }\n lines.push(\n `${entity} appears in Observation ${current.step} but is absent before and after; with surrounding actions reversing each other, explain this as a temporary hidden rule/text alignment that transformed another object into ${entity} and then broke again, not as a permanent object pickup or overlap.`,\n );\n if (entity === \"key\") {\n lines.push(\n `For a temporary key appearance, a plausible hidden rule is BALL IS KEY or another object IS KEY formed by the right move and broken by the left move.`,\n );\n }\n }\n }\n return uniqueLines(lines).slice(0, 4);\n}\n\nfunction collectWholeConfigurationShiftLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (\n !/\\b(?:entire|whole|all)\\b/.test(normalizedQuery) ||\n !/\\b(?:configuration|level|objects?|rules?)\\b/.test(normalizedQuery) ||\n !/\\bshift(?:ed|ing)?\\b/.test(normalizedQuery)\n ) {\n return [];\n }\n\n const lines: string[] = [];\n for (let index = 1; index < window.length; index += 1) {\n const previous = window[index - 1]!;\n const current = window[index]!;\n const move = current.action ? agentMoveDeltaFromAction(current.action) : undefined;\n if (!previous.observation || !current.observation || !move) {\n continue;\n }\n const previousPositions = parseRelativePositions(previous.observation);\n const currentPositions = parseRelativePositions(current.observation);\n const counts = new Map<string, { dx: number; dy: number; count: number }>();\n for (const [entity, previousPosition] of previousPositions.entries()) {\n const currentPosition = currentPositions.get(entity);\n if (!currentPosition) {\n continue;\n }\n const dx = currentPosition.x - previousPosition.x;\n const dy = currentPosition.y - previousPosition.y;\n if (dx === 0 && dy === 0) {\n continue;\n }\n const key = `${dx}:${dy}`;\n const entry = counts.get(key) ?? { dx, dy, count: 0 };\n entry.count += 1;\n counts.set(key, entry);\n }\n const best = [...counts.values()].sort((left, right) => right.count - left.count)[0];\n if (!best || best.count < 5) {\n continue;\n }\n lines.push(\n `Observation ${previous.step}->${current.step} shows a coordinated whole-level push/shift after Action ${current.step} ${move.direction}: ${best.count} tracked objects or rule words all moved ${formatRelativePosition({ x: best.dx, y: best.dy })} relative to the agent. Treat the ${move.direction} action as the progress-enabling whole-configuration contact created by the prior setup, not as ordinary empty-space movement.`,\n );\n if (/\\bleft\\b/.test(normalizedQuery) || /\\bdown\\b/.test(normalizedQuery)) {\n lines.push(\n `By contrast, moving left or down would move back into empty space or undo the setup and would not trigger that coordinated configuration shift.`,\n );\n }\n }\n return uniqueLines(lines).slice(0, 3);\n}\n\nfunction collectControlRuleInteractionLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (\n !/\\bbaba\\s+is\\s+you\\b/.test(normalizedQuery) ||\n !/\\b(?:interact(?:ing)?|prerequisite|position(?:ing)?|control\\s+rule|own\\s+rule|necessary)\\b/.test(normalizedQuery)\n ) {\n return [];\n }\n\n const latest = [...window].reverse().find((step) => step.observation);\n if (!latest?.observation || !parseActiveRules(latest.observation).includes(\"baba is you\")) {\n return [];\n }\n\n const phrase = findAlignedRulePhrasePositions(\n parseRelativePositionEntries(latest.observation),\n \"baba\",\n \"you\",\n );\n if (!phrase) {\n return [];\n }\n return [\n `At Observation ${latest.step}, the specific target text block is rule baba at ${phrase.subject.raw}, the leftmost word of the active BABA IS YOU phrase.`,\n `Because BABA IS YOU makes Baba the controlled agent, the setup should not be described as directly pushing the BABA word itself from inside its own control rule. The purpose of becoming adjacent is to later push a different object or text block into the rule's syntax line to modify or break that control rule.`,\n ];\n}\n\nfunction collectNoKeyWinRepositioningCue(\n query: string,\n window: readonly LabeledTrajectoryStep[],\n): string | undefined {\n const normalizedQuery = normalizeTrajectoryQuery(query);\n if (\n !/\\b(?:no\\s+key|key\\s+objects?|hidden\\s+state|reposition|solve|win\\s+condition|essential)\\b/.test(\n normalizedQuery,\n )\n ) {\n return undefined;\n }\n\n const observations = window\n .map((step) => step.observation)\n .filter((observation): observation is string => observation !== undefined);\n if (observations.length === 0) {\n return undefined;\n }\n const rules = new Set(observations.flatMap((observation) => parseActiveRules(observation)));\n if (!rules.has(\"key is win\")) {\n return undefined;\n }\n const positions = observations.flatMap((observation) => parseRelativePositionEntries(observation));\n const hasOrdinaryKey = positions.some((position) => normalizeEntity(position.entity) === \"key\");\n const explicitNoKeyPremise = hasExplicitNoKeyObjectPremise(normalizedQuery);\n if (hasOrdinaryKey && !explicitNoKeyPremise) {\n return undefined;\n }\n\n return explicitNoKeyPremise\n ? \"Given the question premise that no ordinary key object should be used, the down-move sequence is changing the agent's hidden absolute row/board position so it can get below or beside rule text for later horizontal movement and rule-block pushes, rather than trying to collect a key.\"\n : \"Because key is win is active but no ordinary key object appears, the down-move sequence is changing the agent's hidden absolute row/board position so it can get below or beside rule text for later horizontal movement and rule-block pushes, rather than trying to collect a key.\";\n}\n\nfunction collectRuleInterventionStrategyLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n const observations = window\n .map((step) => step.observation)\n .filter((observation): observation is string => observation !== undefined);\n if (observations.length === 0) {\n return [];\n }\n\n const rules = new Set(observations.flatMap((observation) => parseActiveRules(observation)));\n const latest = observations[observations.length - 1]!;\n const latestPositions = parseRelativePositionEntries(latest);\n const allPositions = observations.flatMap((observation) => parseRelativePositionEntries(observation));\n const lines: string[] = [];\n\n const hasWallStop = rules.has(\"wall is stop\");\n if (\n hasWallStop &&\n /\\b(?:door|right|blocked|impassable|optimal|progress|solve|wall)\\b/.test(normalizedQuery)\n ) {\n const rightBlocked = observations.some((observation) =>\n findBlockingStopObject(observation, [\"wall\"], agentMoveDeltaFromAction(\"right\")!) !== undefined\n );\n if (rightBlocked) {\n lines.push(\n `With wall is stop active, wall objects immediately to the right block the right-side/door path; continuing right is not the strategic mechanism for progress.`,\n );\n }\n lines.push(\n \"Strategic mechanism: progress requires reaching and manipulating the WALL IS STOP rule text so IS can be pushed out or the phrase can be broken, removing STOP from wall objects and opening blocked paths.\",\n );\n }\n\n const hasKeyWin = rules.has(\"key is win\");\n const hasOrdinaryKey = allPositions.some((position) => normalizeEntity(position.entity) === \"key\");\n const explicitNoKeyPremise = hasExplicitNoKeyObjectPremise(normalizedQuery);\n const hasRuleDoor = latestPositions.some((position) => normalizeEntity(position.entity) === \"rule door\");\n if (\n hasKeyWin &&\n (!hasOrdinaryKey || explicitNoKeyPremise) &&\n /\\b(?:no\\s+key|key\\s+objects?|hidden\\s+state|reposition|solve|win\\s+condition|essential)\\b/.test(\n normalizedQuery,\n )\n ) {\n lines.push(\n explicitNoKeyPremise\n ? \"Given the question premise that no ordinary key object should be used, key is win cannot be satisfied directly; solving depends on changing hidden board position to get beside/below rule text rather than collecting a key.\"\n : \"Because key is win is active but no ordinary key object appears, solving depends on changing hidden board position to get beside/below rule text rather than collecting a key.\",\n );\n if (hasRuleDoor) {\n lines.push(\n \"That repositioning sets up later rule-block pushes that can make an existing object such as door participate in the win condition, for example by forming or enabling a door/key/win rule relation.\",\n );\n }\n }\n\n return uniqueLines(lines).slice(0, 5);\n}\n\nfunction collectMissingPushTargetLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n const asksMissingProgressAction =\n /\\b(?:absent|missing|conspicuously|lacks?|without)\\b/.test(normalizedQuery) &&\n /\\b(?:progress|enabling|interaction|action|mechanic|sequence)\\b/.test(normalizedQuery);\n const namesPush = /\\bpush\\b/.test(normalizedQuery);\n const hasPushAction = window.some((step) => normalizeActionVerb(step.action ?? \"\") === \"push\");\n if ((!asksMissingProgressAction && !namesPush) || hasPushAction) {\n return [];\n }\n\n const observationStep = window.find((step) => step.observation);\n if (!observationStep?.observation) {\n return [];\n }\n\n const positions = parseRelativePositionEntries(observationStep.observation);\n const ruleIs = positions\n .filter((position) => normalizeEntity(position.entity) === \"rule is\")\n .sort((left, right) => manhattanDistance(left) - manhattanDistance(right))[0];\n if (!ruleIs) {\n return [];\n }\n\n return [\n `The absent progress-enabling action is push; the most logical target is the nearby rule IS text block at ${ruleIs.raw}, because pushing rule words changes rules while ordinary objects do not help unless active rules make them useful.`,\n ];\n}\n\nfunction collectRulePhraseAlignmentLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (!hasManeuverInterpretationCue(normalizedQuery) && !normalizedQuery.includes(\"stop\")) {\n return [];\n }\n\n const latest = [...window].reverse().find((step) => step.observation);\n if (!latest?.observation) {\n return [];\n }\n\n const rules = parseActiveRules(latest.observation)\n .map(parseThreeWordRule)\n .filter((rule): rule is { subject: string; property: string } => rule !== undefined);\n if (rules.length === 0) {\n return [];\n }\n\n const positions = parseRelativePositionEntries(latest.observation);\n const lines: string[] = [];\n for (const rule of rules) {\n const phrase = findAlignedRulePhrasePositions(positions, rule.subject, rule.property);\n if (!phrase) {\n continue;\n }\n lines.push(\n `At Observation ${latest.step}, active rule ${rule.subject} is ${rule.property} is positioned as rule ${rule.subject} at ${phrase.subject.raw}, rule is at ${phrase.is.raw}, and rule ${rule.property} at ${phrase.property.raw}.`,\n );\n if (phrase.is.x === 0 && Math.abs(phrase.is.y) === 1) {\n const pushDirection = phrase.is.y > 0 ? \"down\" : \"up\";\n lines.push(\n `The agent is directly ${phrase.is.y > 0 ? \"above\" : \"below\"} the rule is block, so a future ${pushDirection} action can push IS out of the phrase and break ${rule.subject} is ${rule.property}.`,\n );\n if (rule.property === \"stop\") {\n lines.push(\n `Breaking ${rule.subject} is stop removes the STOP property from ${rule.subject} objects and can open paths blocked by those objects.`,\n );\n }\n }\n }\n return lines.slice(0, 6);\n}\n\nfunction collectRuleTextPositionLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n if (!hasManeuverInterpretationCue(normalizedQuery)) {\n return [];\n }\n\n const firstByEntity = new Map<string, RelativePosition>();\n const lastByEntity = new Map<string, RelativePosition>();\n for (const step of window) {\n if (!step.observation) {\n continue;\n }\n for (const [entity, position] of parseRelativePositions(step.observation).entries()) {\n if (!entity.startsWith(\"rule \")) {\n continue;\n }\n if (!firstByEntity.has(entity)) {\n firstByEntity.set(entity, position);\n }\n lastByEntity.set(entity, position);\n }\n }\n\n const movedLeft = [...firstByEntity.entries()]\n .map(([entity, first]) => ({\n entity,\n first,\n last: lastByEntity.get(entity),\n }))\n .filter((item): item is {\n entity: string;\n first: RelativePosition;\n last: RelativePosition;\n } => item.last !== undefined && item.last.x < item.first.x)\n .sort((left, right) => left.entity.localeCompare(right.entity))\n .slice(0, 4);\n if (movedLeft.length === 0) {\n return [];\n }\n\n const descriptions = movedLeft.map(\n ({ entity, first, last }) =>\n `${entity} moved from ${first.raw} to ${last.raw}`,\n );\n return [\n `${descriptions.join(\"; \")}; this supports describing the maneuver as repositioning the agent to the right of those rule text blocks for later rule manipulation.`,\n ];\n}\n\nfunction collectRuleStateLines(\n window: readonly LabeledTrajectoryStep[],\n normalizedQuery: string,\n): string[] {\n const lines: string[] = [];\n const seenRules = new Set<string>();\n const seenObjects = new Set<string>();\n for (const step of window) {\n if (!step.observation) {\n continue;\n }\n for (const rule of parseActiveRules(step.observation)) {\n seenRules.add(rule);\n }\n for (const position of parseRelativePositions(step.observation).values()) {\n const normalizedEntity = normalizeEntity(position.entity);\n if (!normalizedEntity.startsWith(\"rule \")) {\n seenObjects.add(normalizedEntity);\n }\n }\n }\n\n const activeRules = [...seenRules].sort((left, right) => left.localeCompare(right));\n const asksExactRelativeState = hasExactRelativeStateIntent(normalizedQuery);\n if (activeRules.length > 0) {\n lines.push(`Active rules in this window: ${activeRules.join(\"; \")}.`);\n }\n for (const object of [...seenObjects].sort((left, right) => left.localeCompare(right))) {\n if (!activeRules.some((rule) => rule.startsWith(`${object} is `))) {\n if (!shouldExplainMissingObjectPushRule(object, normalizedQuery, asksExactRelativeState)) {\n continue;\n }\n lines.push(\n `No active rule for ${object} appears in this window; specifically, no \"${object} is push\" rule is active, so treat ${object} as not currently pushable and do not claim that a current move pushed ${object} unless the observations state that rule.`,\n );\n lines.push(\n `For ${object} maneuver questions, make bypassing or repositioning around a not-pushable obstacle the strategic goal unless an active rule says \"${object} is push\"; do not make overlap, collection, removal, or pushing the goal unless the question asks that exact relative state.`,\n );\n }\n }\n return lines.slice(0, 8);\n}\n\nfunction shouldExplainMissingObjectPushRule(\n object: string,\n normalizedQuery: string,\n asksExactRelativeState: boolean,\n): boolean {\n if (asksExactRelativeState || !normalizedQuery.includes(object) || !hasManeuverInterpretationCue(normalizedQuery)) {\n return false;\n }\n return /\\b(?:implicit\\s+property|not\\s+pushable|unpushable|not-pushable|bypass|obstacle|around\\s+(?:it|the)|ordinary\\s+object)\\b/.test(\n normalizedQuery,\n );\n}\n\nfunction parseStopRuleObjects(observation: string): string[] {\n return parseActiveRules(observation)\n .map((rule) => /^(.+?)\\s+is\\s+stop$/i.exec(rule)?.[1]?.trim())\n .filter((object): object is string => !!object);\n}\n\nfunction findBlockingStopObject(\n observation: string,\n stopObjects: readonly string[],\n move: AgentMoveDelta,\n): { entity: string; position: RelativePosition } | undefined {\n const positions = parseRelativePositionEntries(observation);\n for (const object of stopObjects) {\n for (const position of positions) {\n if (normalizeEntity(position.entity) !== object) {\n continue;\n }\n if (position.x === move.dx && position.y === move.dy) {\n return { entity: object, position };\n }\n }\n }\n return undefined;\n}\n\nfunction openNonStopMoves(\n observation: string,\n stopObjects: readonly string[],\n blockedDirection: AgentMoveDelta[\"direction\"],\n): AgentMoveDelta[\"direction\"][] {\n const open: AgentMoveDelta[\"direction\"][] = [];\n for (const direction of [\"up\", \"down\", \"left\", \"right\"] as const) {\n if (direction === blockedDirection) {\n continue;\n }\n const move = agentMoveDeltaFromAction(direction);\n if (!move || findBlockingStopObject(observation, stopObjects, move)) {\n continue;\n }\n open.push(direction);\n }\n return open;\n}\n\nfunction formatMoveList(moves: readonly AgentMoveDelta[\"direction\"][]): string {\n if (moves.length === 0) {\n return \"\";\n }\n if (moves.length === 1) {\n return moves[0]!;\n }\n if (moves.length === 2) {\n return `${moves[0]} and ${moves[1]}`;\n }\n return `${moves.slice(0, -1).join(\", \")}, and ${moves[moves.length - 1]}`;\n}\n\nfunction parseThreeWordRule(\n rule: string,\n): { subject: string; property: string } | undefined {\n const match = /^(.+?)\\s+is\\s+(.+)$/i.exec(rule.trim());\n if (!match?.[1] || !match[2]) {\n return undefined;\n }\n return {\n subject: normalizeEntity(match[1]),\n property: normalizeEntity(match[2]),\n };\n}\n\nfunction findAlignedRulePhrasePositions(\n positions: readonly RelativePosition[],\n subject: string,\n property: string,\n):\n | {\n subject: RelativePosition;\n is: RelativePosition;\n property: RelativePosition;\n }\n | undefined {\n const subjects = positions.filter((position) => normalizeEntity(position.entity) === `rule ${subject}`);\n const isWords = positions.filter((position) => normalizeEntity(position.entity) === \"rule is\");\n const properties = positions.filter((position) => normalizeEntity(position.entity) === `rule ${property}`);\n let best:\n | {\n subject: RelativePosition;\n is: RelativePosition;\n property: RelativePosition;\n score: number;\n }\n | undefined;\n\n for (const subjectPosition of subjects) {\n for (const isPosition of isWords) {\n for (const propertyPosition of properties) {\n const sameRowPenalty =\n Math.abs(subjectPosition.y - isPosition.y) +\n Math.abs(propertyPosition.y - isPosition.y);\n const orderPenalty =\n subjectPosition.x < isPosition.x && isPosition.x < propertyPosition.x\n ? 0\n : 10;\n const spacingPenalty =\n Math.abs(isPosition.x - subjectPosition.x - 1) +\n Math.abs(propertyPosition.x - isPosition.x - 1);\n const score = sameRowPenalty * 5 + orderPenalty + spacingPenalty;\n if (!best || score < best.score) {\n best = {\n subject: subjectPosition,\n is: isPosition,\n property: propertyPosition,\n score,\n };\n }\n }\n }\n }\n\n if (!best || best.score > 4) {\n return undefined;\n }\n return {\n subject: best.subject,\n is: best.is,\n property: best.property,\n };\n}\n\nfunction parseRelativePositionEntries(observation: string): RelativePosition[] {\n const objectsBlock = /objects on the map:\\s*([\\s\\S]*)$/i.exec(observation)?.[1];\n if (!objectsBlock) {\n return [];\n }\n const positions: RelativePosition[] = [];\n for (const rawLine of objectsBlock.split(/\\n+/)) {\n const parsed = parseRelativePositionLine(rawLine.trim());\n if (parsed) {\n positions.push(parsed);\n }\n }\n return positions;\n}\n\nfunction uniqueLines(lines: readonly string[]): string[] {\n return [...new Set(lines)];\n}\n\nfunction appendActionFrequencyLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): void {\n const counts = new Map<string, number>();\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const verb = normalizeActionVerb(step.action);\n if (!verb) continue;\n counts.set(verb, (counts.get(verb) ?? 0) + 1);\n }\n if (counts.size === 0) {\n return;\n }\n const frequencies = [...counts.entries()].sort((left, right) =>\n right[1] - left[1] || left[0].localeCompare(right[0]),\n );\n lines.push(\n `Action frequency through requested window: ${frequencies\n .map(([verb, count]) => `${verb}=${count}`)\n .join(\", \")}.`,\n );\n}\n\nfunction appendInventoryChangeLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): void {\n const held = new Set<string>();\n const changes: Array<{ step: number; action: string; change: string }> = [];\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const change = parseInventoryChange(step.action, held);\n if (change) {\n changes.push({ step: step.step, action: step.action, change });\n }\n }\n if (changes.length === 0) {\n return;\n }\n lines.push(\"Inventory changes from action transcript:\");\n if (changes.length > 5) {\n lines.push(\n `First five inventory changes: ${formatInventoryChangeSummary(changes.slice(0, 5))}.`,\n );\n lines.push(\n `Complete inventory changes: ${formatInventoryChangeSummary(changes)}.`,\n );\n }\n for (const change of changes) {\n lines.push(`[Action ${change.step}]: ${change.action} => ${change.change}`);\n }\n}\n\nfunction formatInventoryChangeSummary(\n changes: ReadonlyArray<{ step: number; change: string }>,\n): string {\n return changes\n .map((change) => `step ${change.step}: ${summarizeInventoryChange(change.change)}`)\n .join(\"; \");\n}\n\nfunction summarizeInventoryChange(change: string): string {\n const added = /^inventory added (.+?);/i.exec(change);\n if (added) {\n return `${added[1]!.trim()} added`;\n }\n const removed = /^inventory removed (.+?);/i.exec(change) ??\n /^inventory removed (.+)$/i.exec(change);\n if (removed) {\n return `${removed[1]!.trim()} removed`;\n }\n return change;\n}\n\nfunction appendContainerStateChangeLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): void {\n const changes = collectContainerStateChanges(trajectory, bounds);\n if (changes.length === 0) {\n return;\n }\n lines.push(\"Container open/close state changes:\");\n for (const change of changes) {\n lines.push(`[Action ${change.step}]: ${change.action} => ${change.entity} ${change.state}`);\n }\n}\n\nfunction appendEntityTimelineLines(\n lines: string[],\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n entities: readonly string[],\n options: {\n includeIndirectMentions: boolean;\n includeContainerObjectTransfers: boolean;\n includeMovableStateActions: boolean;\n },\n): void {\n for (const entity of entities) {\n const includeIndirectMentions = options.includeIndirectMentions ||\n (options.includeMovableStateActions && !isLikelyContainerEntity(entity));\n const directActions = boundedTrajectory(trajectory, bounds).filter(\n (step) =>\n step.action &&\n (isDirectEntityAction(step.action, entity) ||\n (includeIndirectMentions &&\n actionMentionsEntity(step.action, entity))),\n );\n const stateChanges = collectContainerStateChanges(trajectory, bounds).filter(\n (change) => normalizeEntity(change.entity) === normalizeEntity(entity),\n );\n const objectTransfers = options.includeContainerObjectTransfers\n ? collectContainerObjectTransfers(trajectory, bounds).filter(\n (transfer) => normalizeEntity(transfer.container) === normalizeEntity(entity),\n )\n : [];\n if (\n directActions.length === 0 &&\n stateChanges.length === 0 &&\n objectTransfers.length === 0\n ) {\n continue;\n }\n\n lines.push(`Timeline for ${entity}:`);\n for (const step of directActions) {\n lines.push(`[Action ${step.step}]: ${step.action}`);\n }\n if (objectTransfers.length > 0) {\n lines.push(`Object transfers involving ${entity}:`);\n for (const transfer of objectTransfers) {\n lines.push(`[Action ${transfer.step}]: ${transfer.action} => ${formatContainerTransfer(transfer)}`);\n }\n }\n const inferredLocation = inferEntityLocation(trajectory, bounds, entity);\n if (inferredLocation) {\n lines.push(\n `Inferred ${entity} location at step ${bounds.end}: ${inferredLocation}.`,\n );\n }\n if (stateChanges.length > 0) {\n const latest = stateChanges[stateChanges.length - 1]!;\n lines.push(\n `Latest ${entity} state at step ${bounds.end}: ${latest.state}; state changes: ${stateChanges\n .map((change) => `${change.step}:${change.state}`)\n .join(\", \")}.`,\n );\n }\n }\n}\n\nfunction boundedTrajectory(\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): LabeledTrajectoryStep[] {\n return trajectory.filter((step) => step.step >= bounds.start && step.step <= bounds.end);\n}\n\nfunction collectContainerStateChanges(\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): Array<{ step: number; action: string; entity: string; state: \"open\" | \"closed\" }> {\n const changes: Array<{\n step: number;\n action: string;\n entity: string;\n state: \"open\" | \"closed\";\n }> = [];\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const match = /^(open|close)\\s+(.+)$/i.exec(step.action.trim());\n if (!match) continue;\n const verb = match[1]!.toLowerCase();\n changes.push({\n step: step.step,\n action: step.action,\n entity: match[2]!.trim(),\n state: verb === \"open\" ? \"open\" : \"closed\",\n });\n }\n return changes;\n}\n\nfunction collectContainerObjectTransfers(\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n): ContainerObjectTransfer[] {\n const transfers: ContainerObjectTransfer[] = [];\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const action = step.action.trim();\n const take = /^take\\s+(.+?)\\s+from\\s+(.+)$/i.exec(action);\n if (take) {\n transfers.push({\n step: step.step,\n action: step.action,\n object: take[1]!.trim(),\n container: take[2]!.trim(),\n direction: \"removed\",\n });\n continue;\n }\n\n const place = /^(?:move|put|place|insert)\\s+(.+?)\\s+(?:to|in|into|on)\\s+(.+)$/i.exec(\n action,\n );\n if (!place) continue;\n transfers.push({\n step: step.step,\n action: step.action,\n object: place[1]!.trim(),\n container: place[2]!.trim(),\n direction: \"placed\",\n });\n }\n return transfers;\n}\n\nfunction formatContainerTransfer(transfer: ContainerObjectTransfer): string {\n return transfer.direction === \"placed\"\n ? `${transfer.object} placed in ${transfer.container}`\n : `${transfer.object} removed from ${transfer.container}`;\n}\n\nfunction parseInventoryChange(action: string, held: Set<string>): string | undefined {\n const normalized = action.trim();\n const take = /^take\\s+(.+?)\\s+from\\s+(.+)$/i.exec(normalized);\n if (take) {\n const object = take[1]!.trim();\n const source = take[2]!.trim();\n held.add(normalizeEntity(object));\n return `inventory added ${object}; ${object} removed from ${source}`;\n }\n\n const place = /^(?:move|put|place|insert)\\s+(.+?)\\s+(?:to|in|into|on)\\s+(.+)$/i.exec(\n normalized,\n );\n if (place) {\n const object = place[1]!.trim();\n const destination = place[2]!.trim();\n const key = normalizeEntity(object);\n const wasHeld = held.delete(key);\n return wasHeld\n ? `inventory removed ${object}; ${object} moved to ${destination}`\n : `${object} moved to ${destination}`;\n }\n\n const drop = /^drop\\s+(.+)$/i.exec(normalized);\n if (drop) {\n const object = drop[1]!.trim();\n held.delete(normalizeEntity(object));\n return `inventory removed ${object}`;\n }\n\n return undefined;\n}\n\nfunction asksForTrajectoryActionRange(normalizedQuery: string): boolean {\n return [\n /\\bwhat\\s+actions?\\s+were\\s+performed\\b/,\n /\\bwhich\\s+actions?\\s+were\\s+performed\\b/,\n /\\bsequence\\s+of\\s+actions?\\b/,\n /\\bactions?\\s+(?:between|from|during|within)\\b/,\n ].some((pattern) => pattern.test(normalizedQuery));\n}\n\nfunction asksForActionFrequency(normalizedQuery: string): boolean {\n return /\\btypes?\\s+of\\s+actions?\\b/.test(normalizedQuery) ||\n /\\bfrequen/.test(normalizedQuery) ||\n /\\bhow\\s+often\\b/.test(normalizedQuery);\n}\n\nfunction extractExplicitTrajectoryRange(\n normalizedQuery: string,\n): { start: number; end: number } | undefined {\n const patterns = [\n /\\b(?:between|from|during|within)\\s+(?:steps?|actions?|observations?)\\s+(\\d+)\\s*(?:-|to|through|thru|and)\\s*(?:(?:steps?|actions?|observations?)\\s+)?(\\d+)\\b/,\n /\\b(?:steps?|actions?|observations?)\\s+(\\d+)\\s*(?:-|to|through|thru)\\s*(?:(?:steps?|actions?|observations?)\\s+)?(\\d+)\\b/,\n ];\n for (const pattern of patterns) {\n const match = pattern.exec(normalizedQuery);\n if (!match) continue;\n const start = parseNonNegativeIntegerToken(match[1] ?? \"\");\n const end = parseNonNegativeIntegerToken(match[2] ?? \"\");\n if (start !== undefined && end !== undefined) {\n return { start, end };\n }\n }\n return undefined;\n}\n\nfunction findObservationTransition(\n query: string,\n trajectory: readonly LabeledTrajectoryStep[],\n): ObservationTransition | undefined {\n const quoted = extractQuotedObservations(query);\n if (quoted.length < 2) {\n return undefined;\n }\n const fromCandidates = findObservationStepCandidates(trajectory, quoted[0]!);\n const toCandidates = findObservationStepCandidates(trajectory, quoted[1]!);\n if (fromCandidates.length === 0 || toCandidates.length === 0) {\n return undefined;\n }\n\n let best: ObservationTransition | undefined;\n const pairs: ObservationTransition[] = [];\n for (const fromStep of fromCandidates) {\n for (const toStep of toCandidates) {\n if (toStep <= fromStep) {\n continue;\n }\n pairs.push({ fromStep, toStep });\n if (\n !best ||\n toStep - fromStep < best.toStep - best.fromStep ||\n (toStep - fromStep === best.toStep - best.fromStep &&\n fromStep < best.fromStep)\n ) {\n best = { fromStep, toStep };\n }\n }\n }\n if (best) {\n return selectObservationTransition(trajectory, best, pairs);\n }\n\n return undefined;\n}\n\nfunction selectObservationTransition(\n trajectory: readonly LabeledTrajectoryStep[],\n shortest: ObservationTransition,\n pairs: readonly ObservationTransition[],\n): ObservationTransition {\n const gap = shortest.toStep - shortest.fromStep;\n const targetStep = trajectory.find((step) => step.step === shortest.toStep);\n if (gap > 2 || normalizeActionVerb(targetStep?.action ?? \"\") !== \"look\") {\n return shortest;\n }\n\n const nextRepeatedTarget = pairs\n .filter(\n (pair) =>\n pair.fromStep === shortest.fromStep &&\n pair.toStep > shortest.toStep &&\n pair.toStep - shortest.fromStep <= 8,\n )\n .sort((left, right) => left.toStep - right.toStep)[0];\n if (\n !nextRepeatedTarget ||\n !observationsHaveSameFullText(trajectory, shortest.toStep, nextRepeatedTarget.toStep)\n ) {\n return shortest;\n }\n return nextRepeatedTarget;\n}\n\nfunction observationsHaveSameFullText(\n trajectory: readonly LabeledTrajectoryStep[],\n leftStep: number,\n rightStep: number,\n): boolean {\n const left = trajectory.find((step) => step.step === leftStep)?.observation;\n const right = trajectory.find((step) => step.step === rightStep)?.observation;\n return !!left && !!right && normalizeObservationText(left) === normalizeObservationText(right);\n}\n\nfunction extractQuotedObservations(query: string): string[] {\n const observations: string[] = [];\n for (const match of query.matchAll(/\\bobservation:\\s*\"([\\s\\S]*?)\"/gi)) {\n const value = match[1]?.trim();\n if (value) {\n observations.push(value);\n }\n }\n return observations;\n}\n\nfunction findObservationStepCandidates(\n trajectory: readonly LabeledTrajectoryStep[],\n quotedObservation: string,\n): number[] {\n const normalizedQuoted = normalizeObservationText(quotedObservation);\n const normalizedQuotedCore = normalizeObservationCore(quotedObservation);\n const fullCandidates = new Set<number>();\n const coreCandidates = new Set<number>();\n\n for (const step of trajectory) {\n if (!step.observation) continue;\n const normalizedObservation = normalizeObservationText(step.observation);\n if (\n normalizedObservation === normalizedQuoted ||\n normalizedObservation.includes(normalizedQuoted) ||\n normalizedQuoted.includes(normalizedObservation)\n ) {\n fullCandidates.add(step.step);\n continue;\n }\n\n const normalizedObservationCore = normalizeObservationCore(step.observation);\n if (\n normalizedObservationCore.length > 0 &&\n normalizedQuotedCore.length > 0 &&\n (normalizedObservationCore === normalizedQuotedCore ||\n normalizedObservationCore.includes(normalizedQuotedCore) ||\n normalizedQuotedCore.includes(normalizedObservationCore))\n ) {\n coreCandidates.add(step.step);\n }\n }\n\n const candidates = new Set([...fullCandidates, ...coreCandidates]);\n return [...candidates].sort((left, right) => left - right);\n}\n\nfunction extractNumberedEntities(query: string): string[] {\n const entities = new Set<string>();\n for (const match of query.matchAll(/\\b([a-z][a-z0-9_-]*(?:\\s+[a-z][a-z0-9_-]*)?)\\s+(\\d+)\\b/gi)) {\n const rawPrefix = match[1]?.trim().toLowerCase();\n const number = match[2]?.trim();\n if (!rawPrefix || !number || isTrajectoryReferenceEntity(rawPrefix)) {\n continue;\n }\n const words = rawPrefix.split(/\\s+/);\n const entityHead = words[words.length - 1]!;\n if (isTrajectoryReferenceEntity(entityHead)) {\n continue;\n }\n entities.add(`${entityHead} ${number}`);\n }\n return [...entities].sort((left, right) => left.localeCompare(right));\n}\n\nfunction isTrajectoryReferenceEntity(value: string): boolean {\n return [\n \"action\",\n \"actions\",\n \"observation\",\n \"observations\",\n \"step\",\n \"steps\",\n \"turn\",\n \"turns\",\n ].includes(value);\n}\n\nfunction actionMentionsEntity(action: string, entity: string): boolean {\n const normalizedAction = normalizeTrajectoryQuery(action);\n const normalizedEntity = normalizeEntity(entity);\n return normalizedAction === normalizedEntity ||\n normalizedAction.startsWith(`${normalizedEntity} `) ||\n normalizedAction.endsWith(` ${normalizedEntity}`) ||\n normalizedAction.includes(` ${normalizedEntity} `);\n}\n\nfunction isDirectEntityAction(action: string, entity: string): boolean {\n const normalizedAction = normalizeTrajectoryQuery(action);\n const normalizedEntity = normalizeEntity(entity);\n return [\n `open ${normalizedEntity}`,\n `close ${normalizedEntity}`,\n `examine ${normalizedEntity}`,\n ].includes(normalizedAction);\n}\n\nfunction isLikelyContainerEntity(entity: string): boolean {\n const head = normalizeEntity(entity).split(/\\s+/)[0];\n return [\n \"bed\",\n \"cabinet\",\n \"counter\",\n \"countertop\",\n \"coffeemachine\",\n \"desk\",\n \"drawer\",\n \"fridge\",\n \"garbagecan\",\n \"handtowelholder\",\n \"laundryhamper\",\n \"microwave\",\n \"safe\",\n \"shelf\",\n \"sinkbasin\",\n \"stoveburner\",\n \"toaster\",\n \"toilet\",\n \"toiletpaperhanger\",\n \"towelholder\",\n ].includes(head ?? \"\");\n}\n\nfunction inferEntityLocation(\n trajectory: readonly LabeledTrajectoryStep[],\n bounds: TrajectoryBounds,\n entity: string,\n): string | undefined {\n const normalizedEntity = normalizeEntity(entity);\n let location: string | undefined;\n for (const step of boundedTrajectory(trajectory, bounds)) {\n if (!step.action) continue;\n const action = step.action.trim();\n const take = /^take\\s+(.+?)\\s+from\\s+(.+)$/i.exec(action);\n if (take && normalizeEntity(take[1]!) === normalizedEntity) {\n location = \"inventory\";\n continue;\n }\n const move = /^(?:move|put|place|insert)\\s+(.+?)\\s+(?:to|in|into|on)\\s+(.+)$/i.exec(\n action,\n );\n if (move && normalizeEntity(move[1]!) === normalizedEntity) {\n location = move[2]!.trim();\n }\n }\n return location;\n}\n\nfunction normalizeActionVerb(action: string): string | undefined {\n const match = /^([a-z][a-z0-9_-]*)\\b/i.exec(action.trim());\n return match?.[1]?.toLowerCase();\n}\n\nfunction clampTrajectoryBounds(\n start: number,\n end: number,\n minStep: number,\n maxStep: number,\n reason: string,\n): TrajectoryBounds {\n const low = Math.max(minStep, Math.min(start, end));\n const high = Math.min(maxStep, Math.max(start, end));\n return {\n start: Math.min(low, high),\n end: Math.max(low, high),\n reason,\n };\n}\n\nfunction firstMatchInteger(query: string, pattern: RegExp): number | undefined {\n const match = pattern.exec(query);\n return match ? parseNonNegativeIntegerToken(match[1] ?? \"\") : undefined;\n}\n\nexport function normalizeTurnExpansionEnd(stats: {\n totalMessages: number;\n maxTurnIndex?: number;\n}): number {\n const messageCountEnd = Math.max(0, Math.floor(stats.totalMessages) - 1);\n if (\n typeof stats.maxTurnIndex !== \"number\" ||\n !Number.isFinite(stats.maxTurnIndex)\n ) {\n return messageCountEnd;\n }\n\n return Math.max(messageCountEnd, Math.floor(stats.maxTurnIndex));\n}\n\nfunction truncateTrajectoryAnalysisLines(lines: string[], maxChars: number): string[] {\n const result: string[] = [];\n let used = 0;\n for (const line of lines.slice(0, TRAJECTORY_ANALYSIS_MAX_LINES)) {\n const separator = result.length === 0 ? 0 : 1;\n const remaining = maxChars - used - separator;\n if (remaining <= 0) {\n break;\n }\n const clipped = line.length > remaining\n ? remaining <= 3\n ? line.slice(0, remaining)\n : `${line.slice(0, remaining - 3).trimEnd()}...`\n : line;\n if (clipped.length === 0) {\n break;\n }\n result.push(clipped);\n used += separator + clipped.length;\n }\n return result;\n}\n\nfunction oneLine(value: string): string {\n return value.replace(/\\s+/g, \" \").trim();\n}\n\nfunction normalizeEntity(value: string): string {\n return normalizeTrajectoryQuery(value);\n}\n\nfunction normalizeObservationText(value: string): string {\n return value.toLowerCase().replace(/\\s+/g, \" \").trim();\n}\n\nfunction normalizeObservationCore(value: string): string {\n return normalizeObservationText(\n value.split(/\\bthe current available actions are:/i)[0] ?? value,\n );\n}\n\nfunction parseActiveRules(observation: string): string[] {\n const rulesBlock = /active rules:\\s*([\\s\\S]*?)(?:\\n\\s*\\n|objects on the map:|$)/i.exec(\n observation,\n )?.[1];\n if (!rulesBlock) {\n return [];\n }\n return rulesBlock\n .split(/\\n+/)\n .map((line) => normalizeTrajectoryQuery(line))\n .filter((line) => line.length > 0);\n}\n\nfunction parseRelativePositions(observation: string): Map<string, RelativePosition> {\n const positions = new Map<string, RelativePosition>();\n const objectsBlock = /objects on the map:\\s*([\\s\\S]*)$/i.exec(observation)?.[1];\n if (!objectsBlock) {\n return positions;\n }\n for (const rawLine of objectsBlock.split(/\\n+/)) {\n const line = rawLine.trim();\n if (!line) {\n continue;\n }\n const parsed = parseRelativePositionLine(line);\n if (parsed) {\n positions.set(normalizeEntity(parsed.entity), parsed);\n }\n }\n return positions;\n}\n\nfunction parseRelativePositionLine(line: string): RelativePosition | undefined {\n const normalizedLine = line.replace(/`/g, \"\").trim();\n const positionStart = findRelativePositionStart(normalizedLine);\n if (positionStart <= 0) {\n return undefined;\n }\n const entity = normalizedLine.slice(0, positionStart).trim();\n const rawPosition = normalizedLine.slice(positionStart).trim();\n if (!entity || !rawPosition) {\n return undefined;\n }\n let x = 0;\n let y = 0;\n let found = false;\n for (const phrase of rawPosition.split(/\\s+and\\s+/i)) {\n const parsed = parseRelativePositionPhrase(phrase);\n if (!parsed) {\n return undefined;\n }\n found = true;\n if (parsed.direction === \"left\") x -= parsed.amount;\n if (parsed.direction === \"right\") x += parsed.amount;\n if (parsed.direction === \"up\") y -= parsed.amount;\n if (parsed.direction === \"down\") y += parsed.amount;\n }\n return found ? { entity, x, y, raw: rawPosition } : undefined;\n}\n\nfunction findRelativePositionStart(value: string): number {\n let best = -1;\n for (const direction of [\"left\", \"right\", \"up\", \"down\"]) {\n for (const prefix of [\n ` step to the ${direction}`,\n ` steps to the ${direction}`,\n ` step ${direction}`,\n ` steps ${direction}`,\n ]) {\n const index = value.toLowerCase().indexOf(prefix);\n if (index < 0) {\n continue;\n }\n let cursor = index - 1;\n while (cursor >= 0 && /\\d/.test(value[cursor]!)) {\n cursor -= 1;\n }\n if (cursor === index - 1) {\n continue;\n }\n const start = cursor + 1;\n best = best < 0 ? start : Math.min(best, start);\n }\n }\n return best;\n}\n\nfunction parseRelativePositionPhrase(\n phrase: string,\n): { amount: number; direction: \"left\" | \"right\" | \"up\" | \"down\" } | undefined {\n const tokens = phrase.trim().toLowerCase().split(/\\s+/);\n if (tokens.length < 3) {\n return undefined;\n }\n const amount = parseNonNegativeIntegerToken(tokens[0] ?? \"\");\n if (amount === undefined) {\n return undefined;\n }\n const direction = tokens[tokens.length - 1];\n if (\n direction !== \"left\" &&\n direction !== \"right\" &&\n direction !== \"up\" &&\n direction !== \"down\"\n ) {\n return undefined;\n }\n if (tokens[1] !== \"step\" && tokens[1] !== \"steps\") {\n return undefined;\n }\n return { amount, direction };\n}\n\nfunction extractRelativePositionEntities(query: string): Set<string> {\n const entities = new Set<string>();\n\n for (const value of extractBacktickValues(query)) {\n addRelativePositionEntity(entities, value);\n }\n\n const tokens = normalizeTrajectoryQuery(query).split(\" \").filter(Boolean);\n for (let index = 0; index < tokens.length; index += 1) {\n const token = tokens[index];\n if (token === \"relative\" && tokens[index + 1] === \"position\") {\n const candidate = nearestEntityTokenBefore(tokens, index);\n if (candidate) {\n addRelativePositionEntity(entities, candidate);\n }\n }\n if (token === \"rule\" || token === \"text\" || token === \"object\") {\n const candidate = tokens[index + 1];\n if (candidate && isRelativeEntityToken(candidate)) {\n addRelativePositionEntity(entities, candidate);\n }\n }\n }\n return entities;\n}\n\nfunction extractBacktickValues(value: string): string[] {\n const results: string[] = [];\n let start = value.indexOf(\"`\");\n while (start >= 0) {\n const end = value.indexOf(\"`\", start + 1);\n if (end < 0) {\n break;\n }\n const inner = value.slice(start + 1, end).trim();\n if (inner) {\n results.push(inner);\n }\n start = value.indexOf(\"`\", end + 1);\n }\n return results;\n}\n\nfunction nearestEntityTokenBefore(\n tokens: readonly string[],\n beforeIndex: number,\n): string | undefined {\n for (let index = beforeIndex - 1; index >= Math.max(0, beforeIndex - 6); index -= 1) {\n const token = tokens[index];\n if (token && isRelativeEntityToken(token)) {\n return token;\n }\n }\n return undefined;\n}\n\nfunction isRelativeEntityToken(token: string): boolean {\n return token.length > 1 &&\n ![\n \"block\",\n \"object\",\n \"position\",\n \"relative\",\n \"rule\",\n \"step\",\n \"steps\",\n \"text\",\n \"the\",\n \"action\",\n \"move\",\n \"moved\",\n \"moving\",\n \"up\",\n \"down\",\n \"left\",\n \"right\",\n ].includes(token) &&\n !isAllDigits(token);\n}\n\nfunction addRelativePositionEntity(entities: Set<string>, value: string): void {\n const normalized = normalizeEntity(value);\n if (!normalized || !isRelativeEntityToken(normalized)) {\n return;\n }\n entities.add(normalized);\n entities.add(normalizeEntity(`rule ${normalized}`));\n}\n\nfunction hasManeuverInterpretationCue(normalizedQuery: string): boolean {\n return [\n \"strategic\",\n \"goal\",\n \"necessary\",\n \"critical\",\n \"maneuver\",\n \"path\",\n \"blocking\",\n \"bypass\",\n \"reposition\",\n ].some((cue) => normalizedQuery.includes(cue));\n}\n\nfunction hasExactRelativeStateIntent(normalizedQuery: string): boolean {\n return /(?:exact\\s+position|relative\\s+to|same\\s+tile|zero[- ]offset|vanished|reappeared)/.test(\n normalizedQuery,\n );\n}\n\nfunction hasExplicitNoKeyObjectPremise(normalizedQuery: string): boolean {\n return /\\bno\\s+(?:ordinary\\s+)?key\\s+objects?\\s+exist\\b/.test(normalizedQuery) ||\n /\\bno\\s+(?:ordinary\\s+)?key\\s+objects?\\b/.test(normalizedQuery);\n}\n\nfunction isAllDigits(value: string): boolean {\n if (value.length === 0) {\n return false;\n }\n for (const char of value) {\n if (char < \"0\" || char > \"9\") {\n return false;\n }\n }\n return true;\n}\n\nfunction inferAgentMoveFromRelativeDelta(dx: number, dy: number): string | undefined {\n if (dx === 1 && dy === 0) return \"left\";\n if (dx === -1 && dy === 0) return \"right\";\n if (dx === 0 && dy === 1) return \"up\";\n if (dx === 0 && dy === -1) return \"down\";\n return undefined;\n}\n\nfunction agentMoveDeltaFromAction(action: string): AgentMoveDelta | undefined {\n const verb = normalizeActionVerb(action);\n if (verb === \"up\") return { direction: \"up\", dx: 0, dy: -1 };\n if (verb === \"down\") return { direction: \"down\", dx: 0, dy: 1 };\n if (verb === \"left\") return { direction: \"left\", dx: -1, dy: 0 };\n if (verb === \"right\") return { direction: \"right\", dx: 1, dy: 0 };\n return undefined;\n}\n\nfunction extractDisallowedMove(normalizedQuery: string): AgentMoveDelta[\"direction\"] | undefined {\n for (const direction of [\"up\", \"down\", \"left\", \"right\"] as const) {\n if (\n normalizedQuery.includes(`instead of moving ${direction}`) ||\n normalizedQuery.includes(`instead of going ${direction}`) ||\n normalizedQuery.includes(`instead of ${direction}`)\n ) {\n return direction;\n }\n }\n return undefined;\n}\n\nfunction extractAlternativeMove(normalizedQuery: string): AgentMoveDelta | undefined {\n for (const direction of [\"up\", \"down\", \"left\", \"right\"] as const) {\n if (\n normalizedQuery.includes(`moved ${direction} instead`) ||\n normalizedQuery.includes(`move ${direction} instead`) ||\n normalizedQuery.includes(`instead moved ${direction}`) ||\n normalizedQuery.includes(`instead chosen ${direction}`) ||\n normalizedQuery.includes(`instead chosen to move ${direction}`) ||\n normalizedQuery.includes(`instead chosen the action ${direction}`) ||\n normalizedQuery.includes(`instead chosen to go ${direction}`) ||\n normalizedQuery.includes(`chosen the action ${direction}`) ||\n normalizedQuery.includes(`chose the action ${direction}`) ||\n normalizedQuery.includes(`action ${direction} at step`)\n ) {\n return agentMoveDeltaFromAction(direction);\n }\n }\n return undefined;\n}\n\nfunction selectAlternativeActionTargets(\n positions: ReadonlyMap<string, RelativePosition>,\n normalizedQuery: string,\n): Array<{ entity: string; position: RelativePosition }> {\n const targets: Array<{ entity: string; position: RelativePosition }> = [];\n if (normalizedQuery.includes(\"win condition\") || normalizedQuery.includes(\"win\")) {\n for (const entity of [\"rule win\", \"rule is\"]) {\n const position = positions.get(entity);\n if (position) {\n targets.push({ entity, position });\n }\n }\n return targets;\n }\n\n for (const [entity, position] of positions.entries()) {\n if (entity.startsWith(\"rule \")) {\n targets.push({ entity, position });\n }\n }\n return targets;\n}\n\nfunction scoreMoveTowardTargets(\n move: AgentMoveDelta,\n targets: readonly { entity: string; position: RelativePosition }[],\n): number {\n let score = 0;\n for (const { position } of targets) {\n const before = Math.abs(position.x) + Math.abs(position.y);\n const after = Math.abs(position.x - move.dx) + Math.abs(position.y - move.dy);\n score += before - after;\n }\n return score;\n}\n\nfunction observationsRemainStable(\n window: readonly LabeledTrajectoryStep[],\n start: number,\n end: number,\n): boolean {\n let baseline: string | undefined;\n let compared = 0;\n for (const step of window) {\n if (step.step < start || step.step > end || !step.observation) {\n continue;\n }\n const signature = relativePositionSignature(step.observation);\n if (!signature) {\n continue;\n }\n if (baseline === undefined) {\n baseline = signature;\n continue;\n }\n compared += 1;\n if (signature !== baseline) {\n return false;\n }\n }\n return compared > 0;\n}\n\nfunction findStopBlockerForRepeatedMove(\n window: readonly LabeledTrajectoryStep[],\n move: AgentMoveDelta,\n): { step: number; entity: string; position: RelativePosition } | undefined {\n for (const step of window) {\n if (!step.observation) {\n continue;\n }\n const stopObjects = parseStopRuleObjects(step.observation);\n if (stopObjects.length === 0) {\n continue;\n }\n const blocker = findBlockingStopObject(step.observation, stopObjects, move);\n if (blocker) {\n return { step: step.step, ...blocker };\n }\n }\n return undefined;\n}\n\nfunction relativePositionSignature(observation: string): string | undefined {\n const entries = parseRelativePositionEntries(observation);\n if (entries.length === 0) {\n return undefined;\n }\n return entries\n .map((position) => `${normalizeEntity(position.entity)}:${position.x}:${position.y}`)\n .sort((left, right) => left.localeCompare(right))\n .join(\"|\");\n}\n\nfunction observationStateSignature(observation: string): string | undefined {\n return relativePositionSignature(observation) ?? normalizeObservationCore(observation);\n}\n\nfunction positionShiftExample(\n beforeObservation: string,\n afterObservation: string,\n): string | undefined {\n const before = parseRelativePositions(beforeObservation);\n const after = parseRelativePositions(afterObservation);\n const preferred = [\n \"rule win\",\n \"rule is\",\n \"rule key\",\n \"rule door\",\n \"door\",\n \"rule baba\",\n \"rule you\",\n ];\n const entities = [\n ...preferred,\n ...[...before.keys()].sort((left, right) => left.localeCompare(right)),\n ];\n for (const entity of entities) {\n const beforePosition = before.get(entity);\n const afterPosition = after.get(entity);\n if (!beforePosition || !afterPosition) {\n continue;\n }\n if (\n beforePosition.x === afterPosition.x &&\n beforePosition.y === afterPosition.y\n ) {\n continue;\n }\n return `${entity} changed from ${beforePosition.raw} to ${afterPosition.raw}`;\n }\n return undefined;\n}\n\nfunction manhattanDistance(position: RelativePosition): number {\n return Math.abs(position.x) + Math.abs(position.y);\n}\n\nfunction hasRelativeEntityInObservations(\n entity: string,\n observations: readonly (string | undefined)[],\n): boolean {\n const normalizedEntity = normalizeEntity(entity);\n for (const observation of observations) {\n if (!observation) {\n continue;\n }\n if (parseRelativePositions(observation).has(normalizedEntity)) {\n return true;\n }\n }\n return false;\n}\n\nfunction relativePositionMatchesMove(\n position: RelativePosition,\n move: AgentMoveDelta,\n): boolean {\n return position.x === move.dx && position.y === move.dy;\n}\n\nfunction oppositeDirection(direction: AgentMoveDelta[\"direction\"]): string {\n if (direction === \"up\") return \"downward\";\n if (direction === \"down\") return \"upward\";\n if (direction === \"left\") return \"rightward\";\n return \"leftward\";\n}\n\nfunction formatRelativePosition(position: { x: number; y: number }): string {\n const parts: string[] = [];\n if (position.x < 0) {\n parts.push(`${Math.abs(position.x)} ${Math.abs(position.x) === 1 ? \"step\" : \"steps\"} to the left`);\n } else if (position.x > 0) {\n parts.push(`${position.x} ${position.x === 1 ? \"step\" : \"steps\"} to the right`);\n }\n if (position.y < 0) {\n parts.push(`${Math.abs(position.y)} ${Math.abs(position.y) === 1 ? \"step\" : \"steps\"} up`);\n } else if (position.y > 0) {\n parts.push(`${position.y} ${position.y === 1 ? \"step\" : \"steps\"} down`);\n }\n return parts.length === 0 ? \"the same tile\" : parts.join(\" and \");\n}\n\nfunction normalizeTrajectoryQuery(value: string): string {\n return value.toLowerCase().replace(/[^a-z0-9_-]+/g, \" \").trim();\n}\n\nfunction appendExpandedEvidence(\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n }>,\n seenTurns: Set<string>,\n sessionId: string,\n expanded: Array<{ turn_index: number; role: string; content: string }>,\n): void {\n for (const message of expanded) {\n appendEvidenceItem(evidenceItems, seenTurns, {\n id: `${sessionId}:${message.turn_index}`,\n sessionId,\n turnIndex: message.turn_index,\n role: message.role,\n content: message.content,\n });\n }\n}\n\nfunction appendEvidenceItem<T extends { id: string }>(\n evidenceItems: T[],\n seenTurns: Set<string>,\n item: T,\n): void {\n if (seenTurns.has(item.id)) {\n return;\n }\n seenTurns.add(item.id);\n evidenceItems.push(item);\n}\n\nexport function collectExplicitTurnReferences(\n query: string,\n): ExplicitTurnReference[] {\n const references = new Map<string, ExplicitTurnReference>();\n const addReference = (value: number, label: string) => {\n const existing = references.get(String(value));\n references.set(String(value), {\n number: value,\n includeDirectTurn:\n (existing?.includeDirectTurn ?? false) || label === \"turn\",\n });\n };\n\n const tokens = tokenizeReferenceQuery(query);\n for (let index = 0; index < tokens.length; index += 1) {\n const label = normalizeReferenceLabel(tokens[index]);\n if (!label) {\n continue;\n }\n\n const parsed = parseReferenceNumbers(tokens, index + 1);\n for (const number of parsed.numbers) {\n addReference(number, label);\n }\n index = Math.max(index, parsed.nextIndex - 1);\n }\n\n return [...references.values()].sort((left, right) => left.number - right.number);\n}\n\nexport function collectLexicalCues(\n query: string,\n options: {\n includeBenchmarkAnchorCues?: boolean;\n includeContentLexicalCues?: boolean;\n includeStructuredPlanCues?: boolean;\n } = {},\n): string[] {\n const cues = new Set<string>();\n\n for (const match of query.matchAll(/\\b[A-Za-z][A-Za-z0-9]{0,12}\\d+:\\d+\\b/g)) {\n cues.add(match[0]);\n }\n for (const match of query.matchAll(/\\b\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}(?::\\d{2})?Z?)?\\b/g)) {\n cues.add(match[0]);\n }\n for (const cue of collectTemporalLexicalCues(query)) {\n cues.add(cue);\n }\n for (const cue of collectQuestionSlotCues(query)) {\n cues.add(cue);\n }\n if (options.includeBenchmarkAnchorCues) {\n for (const cue of collectBenchmarkAnchorCues(query)) {\n cues.add(cue);\n }\n }\n if (options.includeStructuredPlanCues) {\n for (const cue of collectStructuredPlanCues(query)) {\n cues.add(cue);\n }\n }\n if (options.includeContentLexicalCues) {\n for (const cue of collectContentLexicalCues(query)) {\n cues.add(cue);\n }\n for (const cue of collectIntentExpansionCues(query)) {\n cues.add(cue);\n }\n for (const cue of collectMeetingFactCues(query)) {\n cues.add(cue);\n }\n }\n for (const match of query.matchAll(/\\b(?:session|source|chat|plan|task|event|file|tool)[_-][A-Za-z0-9][A-Za-z0-9_.:-]{0,80}\\b/gi)) {\n cues.add(match[0]);\n }\n for (const match of query.matchAll(/\\b[A-Z][a-z]{1,30}(?:\\s+[A-Z][a-z]{1,30}){0,2}\\b/g)) {\n const value = normalizeSpeakerNameCue(match[0]);\n if (value) {\n cues.add(value);\n }\n }\n for (const match of query.matchAll(/\\[([A-Za-z0-9][A-Za-z0-9_.:/ -]{1,80})\\]/g)) {\n const value = match[1]?.trim();\n if (value) {\n cues.add(value);\n }\n }\n\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction collectMeetingFactCues(query: string): string[] {\n const normalized = query.toLowerCase();\n if (\n !/\\b(?:met|meet|meeting)\\b/.test(normalized) ||\n !/\\b(?:when|where|first)\\b/.test(normalized)\n ) {\n return [];\n }\n\n const cues = new Set<string>();\n for (const match of query.matchAll(/\\b[A-Z][a-z]{1,30}(?:\\s+[A-Z][a-z]{1,30}){0,2}\\b/g)) {\n const name = normalizeSpeakerNameCue(match[0]);\n if (!name) continue;\n cues.add(`I met ${name}`);\n cues.add(`met ${name}`);\n cues.add(`${name} at`);\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nasync function collectNamedMeetingFactEvidence(options: {\n engine: ExplicitCueRecallEngine;\n sessionId?: string;\n query: string;\n maxReferences: number;\n evidenceItems: Array<{\n id: string;\n sessionId: string;\n turnIndex: number;\n role: string;\n content: string;\n score?: number;\n }>;\n seenTurns: Set<string>;\n}): Promise<void> {\n const cues = collectMeetingFactCues(options.query)\n .filter((cue) => /^I met /i.test(cue))\n .slice(0, options.maxReferences);\n if (cues.length === 0) return;\n\n for (const cue of cues) {\n const results = sortMeetingFactResults(\n await options.engine.searchContextFull(cue, 8, options.sessionId),\n options.query,\n );\n for (const result of results) {\n if (!isNamedMeetingFactEvidence(result.content, options.query)) continue;\n appendEvidenceItem(options.evidenceItems, options.seenTurns, {\n id: `${result.session_id}:${result.turn_index}`,\n sessionId: result.session_id,\n turnIndex: result.turn_index,\n role: result.role,\n content: result.content,\n ...(typeof result.score === \"number\" ? { score: result.score } : {}),\n });\n }\n }\n}\n\nfunction sortMeetingFactResults<\n T extends { turn_index: number; role: string; content: string; score?: number },\n>(results: readonly T[], query: string): T[] {\n const normalizedQuery = query.toLowerCase();\n return [...results].sort((left, right) => {\n const rightScore = scoreMeetingFactResult(right, normalizedQuery);\n const leftScore = scoreMeetingFactResult(left, normalizedQuery);\n if (rightScore !== leftScore) return rightScore - leftScore;\n return left.turn_index - right.turn_index;\n });\n}\n\nfunction scoreMeetingFactResult(\n result: { role: string; content: string; score?: number },\n query: string,\n): number {\n const normalizedContent = result.content.toLowerCase();\n let score = result.role === \"user\" ? 20 : 0;\n if (isNamedMeetingFactEvidence(result.content, query)) score += 40;\n if (/\\b(?:january|february|march|april|may|june|july|august|september|october|november|december)\\s+\\d{1,2}/i.test(result.content)) {\n score += 12;\n }\n if (/\\b(?:library|museum|store|park|office|cafe|bistro|expo|meetup|conference|center)\\b/.test(normalizedContent)) {\n score += 8;\n }\n if (typeof result.score === \"number\" && Number.isFinite(result.score)) {\n score += Math.min(6, Math.max(0, result.score));\n }\n return score;\n}\n\nfunction isNamedMeetingFactEvidence(content: string, query: string): boolean {\n const normalizedContent = content.toLowerCase();\n return extractMeetingFactNames(query).some((name) =>\n new RegExp(`\\\\b(?:i\\\\s+)?met\\\\s+${escapeRegExp(name.toLowerCase())}\\\\b`).test(\n normalizedContent,\n )\n );\n}\n\nfunction extractMeetingFactNames(query: string): string[] {\n const names = new Set<string>();\n for (const match of query.matchAll(/\\b[A-Z][a-z]{1,30}(?:\\s+[A-Z][a-z]{1,30}){0,2}\\b/g)) {\n const name = normalizeSpeakerNameCue(match[0]);\n if (name) names.add(name);\n }\n return [...names].sort((left, right) => left.localeCompare(right));\n}\n\nfunction escapeRegExp(value: string): string {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nexport function collectQuestionSlotCues(query: string): string[] {\n const cues = new Set<string>();\n for (const match of query.matchAll(\n /\\b(?:what|which)\\s+([a-z][a-z0-9_-]{2,30})\\s+(?:does|do|did|is|are|was|were|should|would|could|can|will)\\b/gi,\n )) {\n const value = match[1]?.toLowerCase();\n if (value && !QUESTION_SLOT_STOPWORDS.has(value)) {\n cues.add(value);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nexport function collectContentLexicalCues(query: string): string[] {\n const rawWords = (query.toLowerCase().match(/[a-z][a-z0-9-]{2,}/g) ?? [])\n .map(trimLexicalCueBoundaryHyphens)\n .filter((word) => word.length >= 3 && !/^\\d+$/.test(word));\n const words = rawWords\n .filter(\n (word) =>\n !CONTENT_LEXICAL_CUE_STOPWORDS.has(word),\n );\n const cues = new Set<string>();\n\n for (const word of words) {\n cues.add(word);\n }\n for (let index = 0; index < rawWords.length - 1; index += 1) {\n const left = rawWords[index]!;\n const right = rawWords[index + 1]!;\n if (\n left.length >= 4 &&\n right.length >= 4 &&\n !CONTENT_LEXICAL_PHRASE_STOPWORDS.has(left) &&\n !CONTENT_LEXICAL_PHRASE_STOPWORDS.has(right)\n ) {\n cues.add(`${left} ${right}`);\n }\n }\n\n return [...cues]\n .sort((left, right) => {\n const lengthDelta = right.length - left.length;\n return lengthDelta === 0 ? left.localeCompare(right) : lengthDelta;\n })\n .slice(0, 18);\n}\n\nfunction trimLexicalCueBoundaryHyphens(value: string): string {\n let start = 0;\n let end = value.length;\n while (start < end && value[start] === \"-\") {\n start += 1;\n }\n while (end > start && value[end - 1] === \"-\") {\n end -= 1;\n }\n return start === 0 && end === value.length ? value : value.slice(start, end);\n}\n\nfunction collectIntentExpansionCues(query: string): string[] {\n const cues = new Set<string>();\n const normalized = query.toLowerCase().replace(/[^a-z0-9+#.-]+/g, \" \").trim();\n\n if (hasImplementationHelpIntent(normalized)) {\n cues.add(\"code snippets\");\n cues.add(\"format all code snippets\");\n cues.add(\"implementation details\");\n cues.add(\"syntax highlighting\");\n }\n\n if (\n /\\b(?:auth|authentication|authorization|login|role|roles|security)\\b/.test(\n normalized,\n )\n ) {\n cues.add(\"access control\");\n cues.add(\"account lockout\");\n cues.add(\"account lockout feature\");\n cues.add(\"authentication\");\n cues.add(\"authorization\");\n cues.add(\"failed login attempts\");\n cues.add(\"password hashing\");\n cues.add(\"rate limiting\");\n cues.add(\"redis\");\n cues.add(\"role-based access control\");\n }\n\n if (hasTemporalScheduleIntent(normalized)) {\n cues.add(\"milestones\");\n cues.add(\"schedule\");\n cues.add(\"timeline\");\n }\n\n if (hasSecurityDatabaseChallengeSummaryIntent(normalized)) {\n cues.add(\"atomic operations\");\n cues.add(\"csrf\");\n cues.add(\"database operational errors\");\n cues.add(\"hidden_tag\");\n cues.add(\"operationalerror\");\n cues.add(\"pbkdf2:sha256\");\n cues.add(\"redis\");\n cues.add(\"resetting counters\");\n cues.add(\"unique constraint\");\n cues.add(\"uuid uniqueness\");\n cues.add(\"werkzeug.security\");\n cues.add(\"wtf_csrf_enabled\");\n }\n\n if (hasProjectProgressSummaryIntent(normalized)) {\n cues.add(\"April 15\");\n cues.add(\"Confluence\");\n cues.add(\"architecture decisions\");\n cues.add(\"authentication\");\n cues.add(\"data visualization\");\n cues.add(\"deployment\");\n cues.add(\"diagrams\");\n cues.add(\"input validation\");\n cues.add(\"role-based access control\");\n cues.add(\"tables\");\n cues.add(\"token-based authentication\");\n cues.add(\"transaction management\");\n }\n\n if (hasSoftwareProjectOrderingIntent(normalized)) {\n cues.add(\"core functionality\");\n cues.add(\"deployment and test improvements\");\n cues.add(\"deployment configuration\");\n cues.add(\"integration test coverage\");\n cues.add(\"security hardening\");\n cues.add(\"transaction CRUD\");\n cues.add(\"transaction error handling\");\n }\n\n if (hasSprintTaskOrganizationIntent(normalized)) {\n cues.add(\"adding validation\");\n cues.add(\"database schema\");\n cues.add(\"development environment\");\n cues.add(\"frontend forms\");\n cues.add(\"integrating frontend with backend\");\n cues.add(\"registration and login\");\n cues.add(\"unit tests\");\n }\n\n if (hasFlaskRouteContradictionIntent(normalized)) {\n cues.add(\"basic homepage route\");\n cues.add(\"flask routes\");\n cues.add(\"handled HTTP requests\");\n cues.add(\"never written\");\n }\n\n if (hasFlaskLoginContradictionIntent(normalized)) {\n cues.add(\"Flask-Login 0.6.2\");\n cues.add(\"Flask-Login v0.6.2\");\n cues.add(\"managed user sessions\");\n cues.add(\"never integrated Flask-Login\");\n cues.add(\"session management\");\n }\n\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction hasImplementationHelpIntent(normalizedQuery: string): boolean {\n return [\n /\\b(?:show|help|write|code|coding|program|develop|build)\\b/,\n /\\bhow\\s+to\\s+implement\\b/,\n /\\bimplementation\\s+details?\\b/,\n ].some((pattern) => pattern.test(normalizedQuery));\n}\n\nfunction prioritizeLexicalCueSearchCues(query: string, cues: string[]): string[] {\n const normalized = query.toLowerCase().replace(/[^a-z0-9+#.-]+/g, \" \").trim();\n if (!hasImplementationHelpIntent(normalized)) {\n if (!hasTemporalScheduleIntent(normalized)) {\n return cues;\n }\n return cues\n .map((cue, index) => ({\n cue,\n index,\n priority: temporalScheduleCuePriority(cue),\n }))\n .sort((left, right) =>\n left.priority - right.priority ||\n left.index - right.index,\n )\n .map((entry) => entry.cue);\n }\n\n return cues\n .map((cue, index) => ({\n cue,\n index,\n priority: implementationCuePriority(cue),\n }))\n .sort((left, right) =>\n left.priority - right.priority ||\n left.index - right.index,\n )\n .map((entry) => entry.cue);\n}\n\nfunction isHighPriorityImplementationCue(query: string, cue: string): boolean {\n const normalized = query.toLowerCase().replace(/[^a-z0-9+#.-]+/g, \" \").trim();\n return hasImplementationHelpIntent(normalized) && implementationCuePriority(cue) < 100;\n}\n\nfunction implementationCuePriority(cue: string): number {\n const priority = new Map([\n [\"syntax highlighting\", 0],\n [\"format all code snippets\", 1],\n [\"code snippets\", 2],\n [\"implementation details\", 3],\n ]);\n return priority.get(cue) ?? 100;\n}\n\nfunction hasTemporalScheduleIntent(normalizedQuery: string): boolean {\n return (\n /\\b(?:days?|weeks?|months?)\\b/.test(normalizedQuery) &&\n /\\b(?:between|from|till|until)\\b/.test(normalizedQuery) &&\n /\\b(?:deadline|deployment|finish(?:ing|ed)?|milestones?|schedule|sprint|timeline)\\b/.test(\n normalizedQuery,\n )\n );\n}\n\nfunction hasFlaskRouteContradictionIntent(normalizedQuery: string): boolean {\n return (\n /\\bhave i\\b/.test(normalizedQuery) &&\n /\\b(?:worked with|written|handled|implemented)\\b/.test(normalizedQuery) &&\n /\\bflask routes?\\b/.test(normalizedQuery) &&\n /\\bhttp requests?\\b/.test(normalizedQuery)\n );\n}\n\nfunction hasFlaskLoginContradictionIntent(normalizedQuery: string): boolean {\n return (\n /\\bhave i\\b/.test(normalizedQuery) &&\n /\\bintegrated\\b/.test(normalizedQuery) &&\n /\\bflask-login\\b/.test(normalizedQuery) &&\n /\\bsession management\\b/.test(normalizedQuery)\n );\n}\n\nfunction hasSecurityDatabaseChallengeSummaryIntent(normalizedQuery: string): boolean {\n return (\n /\\b(?:summary|summarize|handled|challenges?)\\b/.test(normalizedQuery) &&\n /\\bsecurity\\b/.test(normalizedQuery) &&\n /\\bdatabase\\b/.test(normalizedQuery)\n );\n}\n\nfunction hasProjectProgressSummaryIntent(normalizedQuery: string): boolean {\n return (\n /\\b(?:summary|summarize|progressed|progress|timeline|documentation)\\b/.test(normalizedQuery) &&\n /\\bbudget tracker\\b/.test(normalizedQuery) &&\n (/\\bdocumentation\\b/.test(normalizedQuery) ||\n /\\bkey features?\\b/.test(normalizedQuery) ||\n /\\bsecurity enhancements?\\b/.test(normalizedQuery))\n );\n}\n\nfunction hasSoftwareProjectOrderingIntent(normalizedQuery: string): boolean {\n return (\n /\\b(?:order|ordered|walk me through|list)\\b/.test(normalizedQuery) &&\n /\\b(?:app|project|development|deployment|budget tracker)\\b/.test(normalizedQuery) &&\n /\\b(?:conversations?|throughout|brought up|aspects?)\\b/.test(normalizedQuery)\n );\n}\n\nfunction hasSprintTaskOrganizationIntent(normalizedQuery: string): boolean {\n return (\n /\\bsprint\\b/.test(normalizedQuery) &&\n /\\b(?:backend|frontend|tasks?|organized|course)\\b/.test(normalizedQuery)\n );\n}\n\nfunction temporalScheduleCuePriority(cue: string): number {\n const priority = new Map([\n [\"transaction management\", 0],\n [\"management features\", 1],\n [\"final deployment\", 2],\n [\"deployment deadline\", 3],\n [\"milestones\", 4],\n [\"schedule\", 5],\n [\"timeline\", 6],\n ]);\n const mapped = priority.get(cue);\n if (mapped !== undefined) {\n return mapped;\n }\n if (cue.includes(\" \")) {\n return 20;\n }\n if (/^(?:deadline|deployment|finishing|management|transaction|weeks|days|sprint)$/.test(cue)) {\n return 40;\n }\n return 100;\n}\n\nfunction lexicalCueSearchLimit(query: string, cue: string): number {\n const normalized = query.toLowerCase().replace(/[^a-z0-9+#.-]+/g, \" \").trim();\n if (hasTemporalScheduleIntent(normalized) && temporalScheduleCuePriority(cue) < 40) {\n return Math.max(LEXICAL_CUE_SEARCH_LIMIT, 8);\n }\n if (hasSecurityFeatureEnumerationIntent(normalized) && securityFeatureCuePriority(cue) < 40) {\n return Math.max(LEXICAL_CUE_SEARCH_LIMIT, 8);\n }\n return LEXICAL_CUE_SEARCH_LIMIT;\n}\n\nfunction hasSecurityFeatureEnumerationIntent(normalizedQuery: string): boolean {\n return (\n /\\bhow many\\b/.test(normalizedQuery) &&\n /\\bsecurity features?\\b/.test(normalizedQuery)\n );\n}\n\nfunction securityFeatureCuePriority(cue: string): number {\n const priority = new Map([\n [\"password hashing\", 0],\n [\"role-based access control\", 1],\n [\"account lockout\", 2],\n [\"account lockout feature\", 3],\n [\"failed login attempts\", 4],\n [\"rate limiting\", 5],\n [\"redis\", 6],\n ]);\n const mapped = priority.get(cue);\n if (mapped !== undefined) {\n return mapped;\n }\n return cue.includes(\" \") && /\\b(?:password|role|access|account|lockout|failed|login|security)\\b/.test(cue)\n ? 20\n : 100;\n}\n\nexport function collectBenchmarkAnchorCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const [phrase, cue] of BENCHMARK_ABILITY_CUES) {\n if (containsBoundedPhrase(normalizedQuery, phrase)) {\n cues.add(cue);\n }\n }\n\n const tokens = tokenizeAnchorQuery(query);\n for (let index = 0; index < tokens.length; index += 1) {\n let prefix = normalizeBenchmarkAnchorPrefix(tokens[index]);\n if (!prefix) {\n continue;\n }\n\n let valueIndex = index + 1;\n if (\n prefix === \"source\" &&\n tokens[valueIndex]?.toLowerCase() === \"chat\"\n ) {\n prefix = \"source_chat\";\n valueIndex += 1;\n }\n const maybeIdLabel = tokens[valueIndex]?.toLowerCase();\n if (maybeIdLabel === \"id\" || maybeIdLabel === \"ids\") {\n valueIndex += 1;\n }\n\n let consumedValue = false;\n for (\n let currentValueIndex = valueIndex;\n currentValueIndex < tokens.length;\n currentValueIndex += 1\n ) {\n const rawValue = tokens[currentValueIndex];\n const normalizedValue = rawValue?.toLowerCase();\n if (!rawValue || normalizeBenchmarkAnchorPrefix(rawValue)) {\n break;\n }\n if (normalizedValue === \"and\" || normalizedValue === \"or\") {\n continue;\n }\n if (BENCHMARK_ANCHOR_VALUE_STOPWORDS.has(normalizedValue)) {\n break;\n }\n if (!isBenchmarkAnchorValue(rawValue)) {\n break;\n }\n addBenchmarkAnchorCues(cues, prefix, rawValue);\n consumedValue = true;\n index = currentValueIndex;\n }\n if (!consumedValue) {\n continue;\n }\n }\n\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction addBenchmarkAnchorCues(\n cues: Set<string>,\n prefix: string,\n rawValue: string,\n): void {\n cues.add(`${prefix}_id=${rawValue}`);\n cues.add(`${prefix}-${rawValue}`);\n if (prefix === \"source_chat\") {\n cues.add(`chat_id=${rawValue}`);\n }\n}\n\nfunction isBenchmarkAnchorValue(token: string): boolean {\n for (const char of token) {\n if (isAsciiDigitChar(char)) {\n return true;\n }\n }\n return false;\n}\n\nfunction isAsciiDigitChar(char: string): boolean {\n const code = char.charCodeAt(0);\n return code >= 48 && code <= 57;\n}\n\nfunction normalizeBenchmarkAnchorPrefix(token: string | undefined): string | undefined {\n switch (token?.toLowerCase()) {\n case \"ability\":\n case \"chat\":\n case \"plan\":\n case \"rubric\":\n case \"source\":\n return token.toLowerCase();\n default:\n return undefined;\n }\n}\n\nfunction tokenizeAnchorQuery(query: string): string[] {\n const tokens: string[] = [];\n let current = \"\";\n const push = () => {\n const token = trimTrailingAnchorTokenPunctuation(current);\n if (token.length > 0) {\n tokens.push(token);\n }\n current = \"\";\n };\n\n for (const char of query) {\n if (\n isAsciiLetterOrDigit(char) ||\n char === \"_\" ||\n char === \"-\" ||\n char === \".\" ||\n char === \":\"\n ) {\n current += char;\n continue;\n }\n push();\n }\n push();\n return tokens;\n}\n\nfunction trimTrailingAnchorTokenPunctuation(token: string): string {\n let end = token.length;\n while (end > 0) {\n const char = token[end - 1];\n if (\n char !== \".\" &&\n char !== \":\" &&\n char !== \";\" &&\n char !== \"!\" &&\n char !== \"?\"\n ) {\n break;\n }\n end -= 1;\n }\n return token.slice(0, end);\n}\n\nexport function collectStructuredPlanCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const cue of STRUCTURED_PLAN_FIELD_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n if (cues.size === 0) {\n return [];\n }\n for (const cue of STRUCTURED_PLAN_DEPENDENCY_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction containsBoundedPhrase(normalizedHaystack: string, phrase: string): boolean {\n let searchFrom = 0;\n while (searchFrom < normalizedHaystack.length) {\n const index = normalizedHaystack.indexOf(phrase, searchFrom);\n if (index < 0) {\n return false;\n }\n const afterIndex = index + phrase.length;\n if (\n isTemporalCueBoundary(normalizedHaystack[index - 1]) &&\n isTemporalCueBoundary(normalizedHaystack[afterIndex])\n ) {\n return true;\n }\n searchFrom = afterIndex;\n }\n return false;\n}\n\nexport function collectTemporalLexicalCues(query: string): string[] {\n const cues = new Set<string>();\n const normalizedQuery = query.toLowerCase().replace(/\\s+/g, \" \");\n for (const cue of RELATIVE_TEMPORAL_CUES) {\n if (containsBoundedPhrase(normalizedQuery, cue)) {\n cues.add(cue);\n }\n }\n return [...cues].sort((left, right) => left.localeCompare(right));\n}\n\nfunction hasLatestStateIntent(query: string): boolean {\n const normalized = query.toLowerCase().replace(/[^a-z0-9]+/g, \" \").trim();\n if (\n /\\bhow many\\b/.test(normalized) &&\n /\\b(?:commits?|branches?|issues?|pull requests?|prs?|tickets?|tasks?|rows?|columns?|records?)\\b/.test(\n normalized,\n )\n ) {\n return true;\n }\n\n return collectTemporalLexicalCues(query).some((cue) =>\n LATEST_STATE_CUES.has(cue),\n );\n}\n\nfunction sortLexicalCueResults<\n T extends { session_id: string; turn_index: number; content?: string; score?: number },\n>(results: T[], preferLatest: boolean, query?: string): T[] {\n const temporalScheduleIntent = query\n ? hasTemporalScheduleIntent(query.toLowerCase().replace(/[^a-z0-9+#.-]+/g, \" \").trim())\n : false;\n const temporalScheduleContentCues =\n temporalScheduleIntent && query ? collectContentLexicalCues(query) : [];\n return [...results].sort((left, right) => {\n if (preferLatest) {\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n const turnOrder = right.turn_index - left.turn_index;\n if (turnOrder !== 0) {\n return turnOrder;\n }\n return (right.score ?? 0) - (left.score ?? 0);\n }\n if (temporalScheduleIntent) {\n const focusDelta =\n scoreTemporalScheduleResultFocus(right.content ?? \"\", temporalScheduleContentCues) -\n scoreTemporalScheduleResultFocus(left.content ?? \"\", temporalScheduleContentCues);\n if (focusDelta !== 0) {\n return focusDelta;\n }\n }\n const scoreDelta = (right.score ?? 0) - (left.score ?? 0);\n if (scoreDelta !== 0) {\n return scoreDelta;\n }\n const sessionOrder = left.session_id.localeCompare(right.session_id);\n if (sessionOrder !== 0) {\n return sessionOrder;\n }\n return left.turn_index - right.turn_index;\n });\n}\n\nfunction scoreTemporalScheduleResultFocus(\n content: string,\n contentLexicalCues: readonly string[],\n): number {\n if (!content) {\n return 0;\n }\n const normalized = content.toLowerCase();\n let score = 0;\n for (const cue of contentLexicalCues) {\n if (!normalized.includes(cue)) {\n continue;\n }\n score += cue.includes(\" \") ? 6 : 2;\n }\n if (/\\bmilestones?\\b/.test(normalized)) {\n score += 8;\n }\n if (/\\b(?:schedule|timeline)\\b/.test(normalized)) {\n score += 4;\n }\n if (/\\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\.?\\s+\\d{1,2}\\b/i.test(content)) {\n score += 6;\n }\n return score;\n}\n\nfunction normalizeSpeakerNameCue(value: string): string | undefined {\n const words = value.trim().split(/\\s+/).filter(Boolean);\n while (words.length > 0 && SPEAKER_NAME_STOPWORDS.has(words[0]!)) {\n words.shift();\n }\n while (words.length > 0 && SPEAKER_NAME_STOPWORDS.has(words[words.length - 1]!)) {\n words.pop();\n }\n return words.length > 0 ? words.join(\" \") : undefined;\n}\n\nfunction isTemporalCueBoundary(char: string | undefined): boolean {\n if (!char) {\n return true;\n }\n return !isAsciiLetterOrDigit(char);\n}\n\nfunction tokenizeReferenceQuery(query: string): string[] {\n const tokens: string[] = [];\n let current = \"\";\n\n const flushCurrent = () => {\n if (current) {\n tokens.push(current);\n current = \"\";\n }\n };\n\n for (const char of query) {\n if (isAsciiLetterOrDigit(char)) {\n current += char;\n continue;\n }\n\n flushCurrent();\n if (char === \"#\" || char === \",\") {\n tokens.push(char);\n } else if (isReferenceDash(char)) {\n tokens.push(\"-\");\n }\n }\n flushCurrent();\n\n return tokens;\n}\n\nfunction parseReferenceNumbers(\n tokens: readonly string[],\n startIndex: number,\n): { numbers: number[]; nextIndex: number } {\n const numbers: number[] = [];\n let lastNumber: number | undefined;\n let pendingRangeStart: number | undefined;\n let index = startIndex;\n const scanEnd = Math.min(\n tokens.length,\n startIndex + DEFAULT_MAX_REFERENCES * REFERENCE_SCAN_TOKEN_FACTOR,\n );\n\n for (; index < scanEnd; index += 1) {\n const token = tokens[index]!;\n const normalized = token.toLowerCase();\n const value = parseNonNegativeIntegerToken(token);\n if (value !== undefined) {\n if (pendingRangeStart !== undefined) {\n numbers.push(...expandReferenceRange(pendingRangeStart, value));\n pendingRangeStart = undefined;\n } else {\n numbers.push(value);\n }\n lastNumber = value;\n continue;\n }\n\n if (normalized === \"#\" || normalized === \"number\" || normalized === \",\") {\n continue;\n }\n\n if (\n normalized === \"-\" ||\n normalized === \"to\" ||\n normalized === \"through\" ||\n normalized === \"thru\"\n ) {\n if (lastNumber !== undefined) {\n if (numbers[numbers.length - 1] === lastNumber) {\n numbers.pop();\n }\n pendingRangeStart = lastNumber;\n }\n continue;\n }\n\n if (normalized === \"and\" && numbers.length > 0) {\n continue;\n }\n\n if (normalizeReferenceLabel(token)) {\n break;\n }\n\n break;\n }\n\n if (pendingRangeStart !== undefined) {\n numbers.push(pendingRangeStart);\n }\n\n return {\n numbers: [...new Set(numbers)],\n nextIndex: index,\n };\n}\n\nfunction expandReferenceRange(start: number, end: number): number[] {\n const low = Math.min(start, end);\n const high = Math.max(start, end);\n if (high - low + 1 > DEFAULT_MAX_REFERENCES) {\n return [start, end];\n }\n\n const values: number[] = [];\n for (let value = low; value <= high; value += 1) {\n values.push(value);\n }\n return values;\n}\n\nfunction normalizeReferenceLabel(token: string | undefined): string | undefined {\n const normalized = token?.toLowerCase();\n switch (normalized) {\n case \"step\":\n case \"steps\":\n return \"step\";\n case \"turn\":\n case \"turns\":\n return \"turn\";\n case \"action\":\n case \"actions\":\n return \"action\";\n case \"observation\":\n case \"observations\":\n return \"observation\";\n default:\n return undefined;\n }\n}\n\nfunction candidateTurnIndexesForReference(\n reference: ExplicitTurnReference,\n): number[] {\n const candidates = new Set<number>();\n if (reference.includeDirectTurn) {\n for (let offset = -1; offset <= 1; offset += 1) {\n candidates.add(reference.number + offset);\n }\n }\n\n const pairedBase = reference.number * 2;\n // Action/observation traces are stored as paired turns:\n // turn 2N => [Action N]\n // turn 2N + 1 => [Observation N]\n // Include the preceding observation so transition questions can compare the\n // state before and after the action, but avoid pulling in Action N+1. Future\n // actions caused explicit step questions to drift to the next step.\n for (let offset = -1; offset <= 1; offset += 1) {\n candidates.add(pairedBase + offset);\n }\n\n return [...candidates].sort((left, right) => left - right);\n}\n\nfunction parseNonNegativeIntegerToken(token: string): number | undefined {\n if (token.length === 0) {\n return undefined;\n }\n\n let value = 0;\n for (const char of token) {\n const code = char.charCodeAt(0);\n if (code < 48 || code > 57) {\n return undefined;\n }\n value = value * 10 + (code - 48);\n }\n return value;\n}\n\nfunction normalizePositiveInteger(value: number | undefined, fallback: number): number {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return fallback;\n }\n return Math.max(0, Math.floor(value));\n}\n\nfunction isAsciiLetterOrDigit(char: string): boolean {\n const code = char.charCodeAt(0);\n return (code >= 48 && code <= 57)\n || (code >= 65 && code <= 90)\n || (code >= 97 && code <= 122);\n}\n\nfunction isReferenceDash(char: string): boolean {\n return char === \"-\"\n || char === \"\\u2010\"\n || char === \"\\u2011\"\n || char === \"\\u2012\"\n || char === \"\\u2013\"\n || char === \"\\u2014\"\n || char === \"\\u2015\";\n}\n"],"mappings":";;;;;AAoDA,IAAM,oBAAoB;AAC1B,IAAM,yBAAyB;AAC/B,IAAM,yBAAyB;AAC/B,IAAM,8BAA8B;AACpC,IAAM,+BAA+B;AACrC,IAAM,4BAA4B;AAClC,IAAM,2BAA2B;AACjC,IAAM,yBAAyB;AAC/B,IAAM,qCAAqC;AAC3C,IAAM,6BAA6B;AACnC,IAAM,2BAA2B;AACjC,IAAM,iDAAiD;AACvD,IAAM,iCAAiC;AACvC,IAAM,sCAAsC;AAC5C,IAAM,gCAAgC;AACtC,IAAM,oBAAoB,oBAAI,IAAI;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,6BAA6B,oBAAI,IAAI;AAAA,EACzC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,kCAAkC,oBAAI,IAAI;AAAA,EAC9C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,yBAAyB,oBAAI,IAAI;AAAA,EACrC,CAAC,0BAA0B,gCAAgC;AAAA,EAC3D,CAAC,oBAAoB,0BAA0B;AAAA,EAC/C,CAAC,2BAA2B,iCAAiC;AAAA,EAC7D,CAAC,2BAA2B,iCAAiC;AAAA,EAC7D,CAAC,yBAAyB,+BAA+B;AAC3D,CAAC;AACD,IAAM,mCAAmC,oBAAI,IAAI;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,yBAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,yBAAyB,oBAAI,IAAI;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,0BAA0B,oBAAI,IAAI;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AACD,IAAM,gCAAgC,oBAAI,IAAI;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA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","names":["cursor","sessionOrder"]}