omp-fabric 0.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (772) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +170 -0
  3. package/THIRD_PARTY_NOTICES.md +33 -0
  4. package/dist/activity/store.d.ts +32 -0
  5. package/dist/activity/store.d.ts.map +1 -0
  6. package/dist/activity/types.d.ts +104 -0
  7. package/dist/activity/types.d.ts.map +1 -0
  8. package/dist/actors/binding-store.d.ts +17 -0
  9. package/dist/actors/binding-store.d.ts.map +1 -0
  10. package/dist/actors/context.d.ts +13 -0
  11. package/dist/actors/context.d.ts.map +1 -0
  12. package/dist/actors/delivery-policy.d.ts +8 -0
  13. package/dist/actors/delivery-policy.d.ts.map +1 -0
  14. package/dist/actors/directory.d.ts +47 -0
  15. package/dist/actors/directory.d.ts.map +1 -0
  16. package/dist/actors/global-registry.d.ts +47 -0
  17. package/dist/actors/global-registry.d.ts.map +1 -0
  18. package/dist/actors/host-event-observer.d.ts +5 -0
  19. package/dist/actors/host-event-observer.d.ts.map +1 -0
  20. package/dist/actors/host-event-payload.d.ts +14 -0
  21. package/dist/actors/host-event-payload.d.ts.map +1 -0
  22. package/dist/actors/manager.d.ts +175 -0
  23. package/dist/actors/manager.d.ts.map +1 -0
  24. package/dist/actors/predicate.d.ts +7 -0
  25. package/dist/actors/predicate.d.ts.map +1 -0
  26. package/dist/actors/types.d.ts +211 -0
  27. package/dist/actors/types.d.ts.map +1 -0
  28. package/dist/agents/bash-worktree-add.d.ts +24 -0
  29. package/dist/agents/bash-worktree-add.d.ts.map +1 -0
  30. package/dist/agents/budget-ledger.d.ts +88 -0
  31. package/dist/agents/budget-ledger.d.ts.map +1 -0
  32. package/dist/agents/claude-cli.d.ts +32 -0
  33. package/dist/agents/claude-cli.d.ts.map +1 -0
  34. package/dist/agents/claude-cli.js +17 -0
  35. package/dist/agents/claude-cli.js.map +7 -0
  36. package/dist/agents/clone-first-worktree.d.ts +17 -0
  37. package/dist/agents/clone-first-worktree.d.ts.map +1 -0
  38. package/dist/agents/compact-control.d.ts +32 -0
  39. package/dist/agents/compact-control.d.ts.map +1 -0
  40. package/dist/agents/compact-control.js +127 -0
  41. package/dist/agents/compact-control.js.map +7 -0
  42. package/dist/agents/constants.d.ts +5 -0
  43. package/dist/agents/constants.d.ts.map +1 -0
  44. package/dist/agents/cow-clone.d.ts +8 -0
  45. package/dist/agents/cow-clone.d.ts.map +1 -0
  46. package/dist/agents/handoff.d.ts +19 -0
  47. package/dist/agents/handoff.d.ts.map +1 -0
  48. package/dist/agents/manager.d.ts +68 -0
  49. package/dist/agents/manager.d.ts.map +1 -0
  50. package/dist/agents/omp-binary.d.ts +7 -0
  51. package/dist/agents/omp-binary.d.ts.map +1 -0
  52. package/dist/agents/rm.d.ts +15 -0
  53. package/dist/agents/rm.d.ts.map +1 -0
  54. package/dist/agents/semaphore.d.ts +7 -0
  55. package/dist/agents/semaphore.d.ts.map +1 -0
  56. package/dist/agents/session-export.d.ts +9 -0
  57. package/dist/agents/session-export.d.ts.map +1 -0
  58. package/dist/agents/thinking-transfer.d.ts +39 -0
  59. package/dist/agents/thinking-transfer.d.ts.map +1 -0
  60. package/dist/agents/transports/herdr-transport.d.ts +10 -0
  61. package/dist/agents/transports/herdr-transport.d.ts.map +1 -0
  62. package/dist/agents/transports/localterm-transport.d.ts +7 -0
  63. package/dist/agents/transports/localterm-transport.d.ts.map +1 -0
  64. package/dist/agents/transports/process-transport.d.ts +7 -0
  65. package/dist/agents/transports/process-transport.d.ts.map +1 -0
  66. package/dist/agents/transports/process-utils.d.ts +29 -0
  67. package/dist/agents/transports/process-utils.d.ts.map +1 -0
  68. package/dist/agents/transports/screen-transport.d.ts +7 -0
  69. package/dist/agents/transports/screen-transport.d.ts.map +1 -0
  70. package/dist/agents/transports/tmux-transport.d.ts +7 -0
  71. package/dist/agents/transports/tmux-transport.d.ts.map +1 -0
  72. package/dist/agents/types.d.ts +251 -0
  73. package/dist/agents/types.d.ts.map +1 -0
  74. package/dist/agents/veda-cli.d.ts +22 -0
  75. package/dist/agents/veda-cli.d.ts.map +1 -0
  76. package/dist/agents/veda-cli.js +13 -0
  77. package/dist/agents/veda-cli.js.map +7 -0
  78. package/dist/agents/worktree-manager.d.ts +14 -0
  79. package/dist/agents/worktree-manager.d.ts.map +1 -0
  80. package/dist/agents/worktree-paths.d.ts +5 -0
  81. package/dist/agents/worktree-paths.d.ts.map +1 -0
  82. package/dist/async-settlement.d.ts +4 -0
  83. package/dist/async-settlement.d.ts.map +1 -0
  84. package/dist/audit/details.d.ts +82 -0
  85. package/dist/audit/details.d.ts.map +1 -0
  86. package/dist/audit/index.d.ts +4 -0
  87. package/dist/audit/index.d.ts.map +1 -0
  88. package/dist/audit/projection.d.ts +20 -0
  89. package/dist/audit/projection.d.ts.map +1 -0
  90. package/dist/audit/trace.d.ts +95 -0
  91. package/dist/audit/trace.d.ts.map +1 -0
  92. package/dist/capture/catalog.d.ts +29 -0
  93. package/dist/capture/catalog.d.ts.map +1 -0
  94. package/dist/capture/interceptor.d.ts +21 -0
  95. package/dist/capture/interceptor.d.ts.map +1 -0
  96. package/dist/capture/wrapper.d.ts +15 -0
  97. package/dist/capture/wrapper.d.ts.map +1 -0
  98. package/dist/chunks/chunk-2GQC324T.js +5001 -0
  99. package/dist/chunks/chunk-2GQC324T.js.map +7 -0
  100. package/dist/chunks/chunk-2KEWFW56.js +1229 -0
  101. package/dist/chunks/chunk-2KEWFW56.js.map +7 -0
  102. package/dist/chunks/chunk-3J7BKUNG.js +354 -0
  103. package/dist/chunks/chunk-3J7BKUNG.js.map +7 -0
  104. package/dist/chunks/chunk-4A4MVZQW.js +253 -0
  105. package/dist/chunks/chunk-4A4MVZQW.js.map +7 -0
  106. package/dist/chunks/chunk-4HQDSTHN.js +221 -0
  107. package/dist/chunks/chunk-4HQDSTHN.js.map +7 -0
  108. package/dist/chunks/chunk-4LEDA76O.js +688 -0
  109. package/dist/chunks/chunk-4LEDA76O.js.map +7 -0
  110. package/dist/chunks/chunk-5GTPD4BA.js +1318 -0
  111. package/dist/chunks/chunk-5GTPD4BA.js.map +7 -0
  112. package/dist/chunks/chunk-5IWFSDU5.js +87 -0
  113. package/dist/chunks/chunk-5IWFSDU5.js.map +7 -0
  114. package/dist/chunks/chunk-6N4XGAZY.js +21 -0
  115. package/dist/chunks/chunk-6N4XGAZY.js.map +7 -0
  116. package/dist/chunks/chunk-6QBPSZJ5.js +647 -0
  117. package/dist/chunks/chunk-6QBPSZJ5.js.map +7 -0
  118. package/dist/chunks/chunk-6X6WUU2K.js +73 -0
  119. package/dist/chunks/chunk-6X6WUU2K.js.map +7 -0
  120. package/dist/chunks/chunk-7363CD5A.js +38 -0
  121. package/dist/chunks/chunk-7363CD5A.js.map +7 -0
  122. package/dist/chunks/chunk-77FQHHZD.js +231 -0
  123. package/dist/chunks/chunk-77FQHHZD.js.map +7 -0
  124. package/dist/chunks/chunk-7BIA5BJN.js +112 -0
  125. package/dist/chunks/chunk-7BIA5BJN.js.map +7 -0
  126. package/dist/chunks/chunk-7BOAOKWH.js +64 -0
  127. package/dist/chunks/chunk-7BOAOKWH.js.map +7 -0
  128. package/dist/chunks/chunk-7TB7NXSL.js +58 -0
  129. package/dist/chunks/chunk-7TB7NXSL.js.map +7 -0
  130. package/dist/chunks/chunk-7VIQNUPS.js +17 -0
  131. package/dist/chunks/chunk-7VIQNUPS.js.map +7 -0
  132. package/dist/chunks/chunk-CT2AJ2UI.js +225 -0
  133. package/dist/chunks/chunk-CT2AJ2UI.js.map +7 -0
  134. package/dist/chunks/chunk-DLXPTBPL.js +151 -0
  135. package/dist/chunks/chunk-DLXPTBPL.js.map +7 -0
  136. package/dist/chunks/chunk-ED3BRM6P.js +17 -0
  137. package/dist/chunks/chunk-ED3BRM6P.js.map +7 -0
  138. package/dist/chunks/chunk-G2IBGGBM.js +42 -0
  139. package/dist/chunks/chunk-G2IBGGBM.js.map +7 -0
  140. package/dist/chunks/chunk-GKOFZ76R.js +1596 -0
  141. package/dist/chunks/chunk-GKOFZ76R.js.map +7 -0
  142. package/dist/chunks/chunk-HDJBUXDX.js +1102 -0
  143. package/dist/chunks/chunk-HDJBUXDX.js.map +7 -0
  144. package/dist/chunks/chunk-IGVDD2HT.js +10 -0
  145. package/dist/chunks/chunk-IGVDD2HT.js.map +7 -0
  146. package/dist/chunks/chunk-JHKOG5GS.js +187 -0
  147. package/dist/chunks/chunk-JHKOG5GS.js.map +7 -0
  148. package/dist/chunks/chunk-JP4LIZFT.js +1334 -0
  149. package/dist/chunks/chunk-JP4LIZFT.js.map +7 -0
  150. package/dist/chunks/chunk-JSBTB3P6.js +127 -0
  151. package/dist/chunks/chunk-JSBTB3P6.js.map +7 -0
  152. package/dist/chunks/chunk-KAD7UWT2.js +99 -0
  153. package/dist/chunks/chunk-KAD7UWT2.js.map +7 -0
  154. package/dist/chunks/chunk-KIH3KLZU.js +95 -0
  155. package/dist/chunks/chunk-KIH3KLZU.js.map +7 -0
  156. package/dist/chunks/chunk-KIREBD2V.js +2208 -0
  157. package/dist/chunks/chunk-KIREBD2V.js.map +7 -0
  158. package/dist/chunks/chunk-LMAVZN7J.js +8 -0
  159. package/dist/chunks/chunk-LMAVZN7J.js.map +7 -0
  160. package/dist/chunks/chunk-NCPJZXLM.js +57 -0
  161. package/dist/chunks/chunk-NCPJZXLM.js.map +7 -0
  162. package/dist/chunks/chunk-OJZNMROB.js +195 -0
  163. package/dist/chunks/chunk-OJZNMROB.js.map +7 -0
  164. package/dist/chunks/chunk-OPTP4PSE.js +469 -0
  165. package/dist/chunks/chunk-OPTP4PSE.js.map +7 -0
  166. package/dist/chunks/chunk-QPXSCMTG.js +24 -0
  167. package/dist/chunks/chunk-QPXSCMTG.js.map +7 -0
  168. package/dist/chunks/chunk-ROKMBLGN.js +1265 -0
  169. package/dist/chunks/chunk-ROKMBLGN.js.map +7 -0
  170. package/dist/chunks/chunk-SXMWV447.js +2445 -0
  171. package/dist/chunks/chunk-SXMWV447.js.map +7 -0
  172. package/dist/chunks/chunk-T5ZA5YRU.js +786 -0
  173. package/dist/chunks/chunk-T5ZA5YRU.js.map +7 -0
  174. package/dist/chunks/chunk-T6OAX4FO.js +1835 -0
  175. package/dist/chunks/chunk-T6OAX4FO.js.map +7 -0
  176. package/dist/chunks/chunk-U5FYOMG5.js +119 -0
  177. package/dist/chunks/chunk-U5FYOMG5.js.map +7 -0
  178. package/dist/chunks/chunk-UOSJZXJV.js +142 -0
  179. package/dist/chunks/chunk-UOSJZXJV.js.map +7 -0
  180. package/dist/chunks/chunk-UPCARIJP.js +6627 -0
  181. package/dist/chunks/chunk-UPCARIJP.js.map +7 -0
  182. package/dist/chunks/chunk-VPPIJRNZ.js +50 -0
  183. package/dist/chunks/chunk-VPPIJRNZ.js.map +7 -0
  184. package/dist/chunks/chunk-XU5Z4JCQ.js +297 -0
  185. package/dist/chunks/chunk-XU5Z4JCQ.js.map +7 -0
  186. package/dist/chunks/chunk-YWEXP724.js +427 -0
  187. package/dist/chunks/chunk-YWEXP724.js.map +7 -0
  188. package/dist/chunks/chunk-YZZIKJX6.js +60 -0
  189. package/dist/chunks/chunk-YZZIKJX6.js.map +7 -0
  190. package/dist/chunks/chunk-ZNAJDPT7.js +2203 -0
  191. package/dist/chunks/chunk-ZNAJDPT7.js.map +7 -0
  192. package/dist/chunks/chunk-ZTM45GH5.js +163 -0
  193. package/dist/chunks/chunk-ZTM45GH5.js.map +7 -0
  194. package/dist/commands/fabric.d.ts +17 -0
  195. package/dist/commands/fabric.d.ts.map +1 -0
  196. package/dist/compaction/bounds.d.ts +23 -0
  197. package/dist/compaction/bounds.d.ts.map +1 -0
  198. package/dist/compaction/branch-details.d.ts +83 -0
  199. package/dist/compaction/branch-details.d.ts.map +1 -0
  200. package/dist/compaction/branch-summary.d.ts +9 -0
  201. package/dist/compaction/branch-summary.d.ts.map +1 -0
  202. package/dist/compaction/enrichers.d.ts +10 -0
  203. package/dist/compaction/enrichers.d.ts.map +1 -0
  204. package/dist/compaction/hook.d.ts +98 -0
  205. package/dist/compaction/hook.d.ts.map +1 -0
  206. package/dist/compaction/hook.js +19 -0
  207. package/dist/compaction/hook.js.map +7 -0
  208. package/dist/compaction/instructions.d.ts +38 -0
  209. package/dist/compaction/instructions.d.ts.map +1 -0
  210. package/dist/compaction/normalize.d.ts +83 -0
  211. package/dist/compaction/normalize.d.ts.map +1 -0
  212. package/dist/compaction/projections.d.ts +31 -0
  213. package/dist/compaction/projections.d.ts.map +1 -0
  214. package/dist/compaction/qa.d.ts +27 -0
  215. package/dist/compaction/qa.d.ts.map +1 -0
  216. package/dist/compaction/render.d.ts +10 -0
  217. package/dist/compaction/render.d.ts.map +1 -0
  218. package/dist/compaction/threshold.d.ts +5 -0
  219. package/dist/compaction/threshold.d.ts.map +1 -0
  220. package/dist/compaction/trace-events.d.ts +23 -0
  221. package/dist/compaction/trace-events.d.ts.map +1 -0
  222. package/dist/components/catalog.d.ts +25 -0
  223. package/dist/components/catalog.d.ts.map +1 -0
  224. package/dist/components/effect-scope.d.ts +31 -0
  225. package/dist/components/effect-scope.d.ts.map +1 -0
  226. package/dist/components/loader.d.ts +27 -0
  227. package/dist/components/loader.d.ts.map +1 -0
  228. package/dist/components/model-guidance.d.ts +48 -0
  229. package/dist/components/model-guidance.d.ts.map +1 -0
  230. package/dist/components/provider-component.d.ts +31 -0
  231. package/dist/components/provider-component.d.ts.map +1 -0
  232. package/dist/components/supervisor.d.ts +29 -0
  233. package/dist/components/supervisor.d.ts.map +1 -0
  234. package/dist/components/types.d.ts +140 -0
  235. package/dist/components/types.d.ts.map +1 -0
  236. package/dist/config-migrations.d.ts +11 -0
  237. package/dist/config-migrations.d.ts.map +1 -0
  238. package/dist/config.d.ts +269 -0
  239. package/dist/config.d.ts.map +1 -0
  240. package/dist/core/action-registry.d.ts +159 -0
  241. package/dist/core/action-registry.d.ts.map +1 -0
  242. package/dist/core/action-registry.js +17 -0
  243. package/dist/core/action-registry.js.map +7 -0
  244. package/dist/core/action-repair.d.ts +20 -0
  245. package/dist/core/action-repair.d.ts.map +1 -0
  246. package/dist/core/agent-dir.d.ts +2 -0
  247. package/dist/core/agent-dir.d.ts.map +1 -0
  248. package/dist/core/approval-controller.d.ts +30 -0
  249. package/dist/core/approval-controller.d.ts.map +1 -0
  250. package/dist/core/atomic-write.d.ts +15 -0
  251. package/dist/core/atomic-write.d.ts.map +1 -0
  252. package/dist/core/auto-approval-classifier.d.ts +13 -0
  253. package/dist/core/auto-approval-classifier.d.ts.map +1 -0
  254. package/dist/core/call-preview.d.ts +8 -0
  255. package/dist/core/call-preview.d.ts.map +1 -0
  256. package/dist/core/child-tool-allowlist.d.ts +3 -0
  257. package/dist/core/child-tool-allowlist.d.ts.map +1 -0
  258. package/dist/core/compact-controller.d.ts +42 -0
  259. package/dist/core/compact-controller.d.ts.map +1 -0
  260. package/dist/core/core-override-guidance.d.ts +7 -0
  261. package/dist/core/core-override-guidance.d.ts.map +1 -0
  262. package/dist/core/direct-tool-approval.d.ts +19 -0
  263. package/dist/core/direct-tool-approval.d.ts.map +1 -0
  264. package/dist/core/effect-conflict.d.ts +3 -0
  265. package/dist/core/effect-conflict.d.ts.map +1 -0
  266. package/dist/core/file-lock.d.ts +12 -0
  267. package/dist/core/file-lock.d.ts.map +1 -0
  268. package/dist/core/model-resolution.d.ts +62 -0
  269. package/dist/core/model-resolution.d.ts.map +1 -0
  270. package/dist/core/model-usage.d.ts +8 -0
  271. package/dist/core/model-usage.d.ts.map +1 -0
  272. package/dist/core/omp-bash-error.d.ts +11 -0
  273. package/dist/core/omp-bash-error.d.ts.map +1 -0
  274. package/dist/core/omp-tools.d.ts +9 -0
  275. package/dist/core/omp-tools.d.ts.map +1 -0
  276. package/dist/core/provider-bindings.d.ts +47 -0
  277. package/dist/core/provider-bindings.d.ts.map +1 -0
  278. package/dist/core/proxy-contract.d.ts +18 -0
  279. package/dist/core/proxy-contract.d.ts.map +1 -0
  280. package/dist/core/session-context.d.ts +6 -0
  281. package/dist/core/session-context.d.ts.map +1 -0
  282. package/dist/core/skill-block.d.ts +10 -0
  283. package/dist/core/skill-block.d.ts.map +1 -0
  284. package/dist/core/skill-dir.d.ts +4 -0
  285. package/dist/core/skill-dir.d.ts.map +1 -0
  286. package/dist/core/skill-prompt.d.ts +3 -0
  287. package/dist/core/skill-prompt.d.ts.map +1 -0
  288. package/dist/core/skill-references.d.ts +7 -0
  289. package/dist/core/skill-references.d.ts.map +1 -0
  290. package/dist/core/stable-hash.d.ts +3 -0
  291. package/dist/core/stable-hash.d.ts.map +1 -0
  292. package/dist/core/system-guidance.d.ts +12 -0
  293. package/dist/core/system-guidance.d.ts.map +1 -0
  294. package/dist/core/token-math.d.ts +16 -0
  295. package/dist/core/token-math.d.ts.map +1 -0
  296. package/dist/core/tool-ownership.d.ts +52 -0
  297. package/dist/core/tool-ownership.d.ts.map +1 -0
  298. package/dist/core/tool-result-proxy.d.ts +18 -0
  299. package/dist/core/tool-result-proxy.d.ts.map +1 -0
  300. package/dist/entropy/active.d.ts +7 -0
  301. package/dist/entropy/active.d.ts.map +1 -0
  302. package/dist/entropy/compiled-store.d.ts +16 -0
  303. package/dist/entropy/compiled-store.d.ts.map +1 -0
  304. package/dist/entropy/compiled-surface.d.ts +51 -0
  305. package/dist/entropy/compiled-surface.d.ts.map +1 -0
  306. package/dist/entropy/compiler.d.ts +28 -0
  307. package/dist/entropy/compiler.d.ts.map +1 -0
  308. package/dist/entropy/corpus.d.ts +22 -0
  309. package/dist/entropy/corpus.d.ts.map +1 -0
  310. package/dist/entropy/fingerprint.d.ts +9 -0
  311. package/dist/entropy/fingerprint.d.ts.map +1 -0
  312. package/dist/entropy/index.d.ts +15 -0
  313. package/dist/entropy/index.d.ts.map +1 -0
  314. package/dist/entropy/index.js +172 -0
  315. package/dist/entropy/index.js.map +7 -0
  316. package/dist/entropy/meter.d.ts +10 -0
  317. package/dist/entropy/meter.d.ts.map +1 -0
  318. package/dist/entropy/passes.d.ts +13 -0
  319. package/dist/entropy/passes.d.ts.map +1 -0
  320. package/dist/entropy/pool-store.d.ts +15 -0
  321. package/dist/entropy/pool-store.d.ts.map +1 -0
  322. package/dist/entropy/pool.d.ts +41 -0
  323. package/dist/entropy/pool.d.ts.map +1 -0
  324. package/dist/entropy/presentation.d.ts +13 -0
  325. package/dist/entropy/presentation.d.ts.map +1 -0
  326. package/dist/entropy/sessions.d.ts +47 -0
  327. package/dist/entropy/sessions.d.ts.map +1 -0
  328. package/dist/entropy/surface.d.ts +30 -0
  329. package/dist/entropy/surface.d.ts.map +1 -0
  330. package/dist/entropy/trial.d.ts +35 -0
  331. package/dist/entropy/trial.d.ts.map +1 -0
  332. package/dist/entropy/types.d.ts +158 -0
  333. package/dist/entropy/types.d.ts.map +1 -0
  334. package/dist/execution-service.d.ts +63 -0
  335. package/dist/execution-service.d.ts.map +1 -0
  336. package/dist/fabric-exec-arguments.d.ts +5 -0
  337. package/dist/fabric-exec-arguments.d.ts.map +1 -0
  338. package/dist/fabric-exec-tool.d.ts +8 -0
  339. package/dist/fabric-exec-tool.d.ts.map +1 -0
  340. package/dist/fabric-runtime-state.d.ts +90 -0
  341. package/dist/fabric-runtime-state.d.ts.map +1 -0
  342. package/dist/fabric-runtime-state.js +13060 -0
  343. package/dist/fabric-runtime-state.js.map +7 -0
  344. package/dist/fabric-state.d.ts +89 -0
  345. package/dist/fabric-state.d.ts.map +1 -0
  346. package/dist/failure-progress.d.ts +3 -0
  347. package/dist/failure-progress.d.ts.map +1 -0
  348. package/dist/host-compatibility.d.ts +5 -0
  349. package/dist/host-compatibility.d.ts.map +1 -0
  350. package/dist/index.d.ts +6 -0
  351. package/dist/index.d.ts.map +1 -0
  352. package/dist/index.js +5719 -0
  353. package/dist/index.js.map +7 -0
  354. package/dist/lifecycle/broker.d.ts +30 -0
  355. package/dist/lifecycle/broker.d.ts.map +1 -0
  356. package/dist/lifecycle/delivery-scheduler.d.ts +30 -0
  357. package/dist/lifecycle/delivery-scheduler.d.ts.map +1 -0
  358. package/dist/lifecycle/types.d.ts +91 -0
  359. package/dist/lifecycle/types.d.ts.map +1 -0
  360. package/dist/log-tail.d.ts +11 -0
  361. package/dist/log-tail.d.ts.map +1 -0
  362. package/dist/main-agent.d.ts +70 -0
  363. package/dist/main-agent.d.ts.map +1 -0
  364. package/dist/memory/context.d.ts +112 -0
  365. package/dist/memory/context.d.ts.map +1 -0
  366. package/dist/memory/digest.d.ts +48 -0
  367. package/dist/memory/digest.d.ts.map +1 -0
  368. package/dist/memory/digest.js +7 -0
  369. package/dist/memory/digest.js.map +7 -0
  370. package/dist/memory/discovery.d.ts +43 -0
  371. package/dist/memory/discovery.d.ts.map +1 -0
  372. package/dist/memory/discovery.js +23 -0
  373. package/dist/memory/discovery.js.map +7 -0
  374. package/dist/memory/index.d.ts +107 -0
  375. package/dist/memory/index.d.ts.map +1 -0
  376. package/dist/memory/lineage.d.ts +20 -0
  377. package/dist/memory/lineage.d.ts.map +1 -0
  378. package/dist/memory/normalize.d.ts +170 -0
  379. package/dist/memory/normalize.d.ts.map +1 -0
  380. package/dist/memory/normalize.js +22 -0
  381. package/dist/memory/normalize.js.map +7 -0
  382. package/dist/memory/regex.d.ts +19 -0
  383. package/dist/memory/regex.d.ts.map +1 -0
  384. package/dist/memory/search.d.ts +98 -0
  385. package/dist/memory/search.d.ts.map +1 -0
  386. package/dist/memory/search.js +22 -0
  387. package/dist/memory/search.js.map +7 -0
  388. package/dist/memory/tokenize.d.ts +24 -0
  389. package/dist/memory/tokenize.d.ts.map +1 -0
  390. package/dist/mesh/store.d.ts +78 -0
  391. package/dist/mesh/store.d.ts.map +1 -0
  392. package/dist/output-budget.d.ts +12 -0
  393. package/dist/output-budget.d.ts.map +1 -0
  394. package/dist/prewalk/arm.d.ts +8 -0
  395. package/dist/prewalk/arm.d.ts.map +1 -0
  396. package/dist/prewalk/controller.d.ts +60 -0
  397. package/dist/prewalk/controller.d.ts.map +1 -0
  398. package/dist/prewalk/fs-drift.d.ts +19 -0
  399. package/dist/prewalk/fs-drift.d.ts.map +1 -0
  400. package/dist/prewalk/handoff.d.ts +45 -0
  401. package/dist/prewalk/handoff.d.ts.map +1 -0
  402. package/dist/protocol.d.ts +273 -0
  403. package/dist/protocol.d.ts.map +1 -0
  404. package/dist/protocol.js +46 -0
  405. package/dist/protocol.js.map +7 -0
  406. package/dist/providers/agents-actions.d.ts +3 -0
  407. package/dist/providers/agents-actions.d.ts.map +1 -0
  408. package/dist/providers/agents-provider.d.ts +59 -0
  409. package/dist/providers/agents-provider.d.ts.map +1 -0
  410. package/dist/providers/arg-normalization.d.ts +15 -0
  411. package/dist/providers/arg-normalization.d.ts.map +1 -0
  412. package/dist/providers/captured-tools-provider.d.ts +23 -0
  413. package/dist/providers/captured-tools-provider.d.ts.map +1 -0
  414. package/dist/providers/compact-provider.d.ts +14 -0
  415. package/dist/providers/compact-provider.d.ts.map +1 -0
  416. package/dist/providers/components-provider.d.ts +12 -0
  417. package/dist/providers/components-provider.d.ts.map +1 -0
  418. package/dist/providers/mcp-descriptor-cache.d.ts +47 -0
  419. package/dist/providers/mcp-descriptor-cache.d.ts.map +1 -0
  420. package/dist/providers/mcp-provider.d.ts +27 -0
  421. package/dist/providers/mcp-provider.d.ts.map +1 -0
  422. package/dist/providers/memory-provider.d.ts +35 -0
  423. package/dist/providers/memory-provider.d.ts.map +1 -0
  424. package/dist/providers/memory-provider.js +16 -0
  425. package/dist/providers/memory-provider.js.map +7 -0
  426. package/dist/providers/mesh-provider.d.ts +17 -0
  427. package/dist/providers/mesh-provider.d.ts.map +1 -0
  428. package/dist/providers/omp-bash-cwd.d.ts +31 -0
  429. package/dist/providers/omp-bash-cwd.d.ts.map +1 -0
  430. package/dist/providers/omp-tools-provider.d.ts +15 -0
  431. package/dist/providers/omp-tools-provider.d.ts.map +1 -0
  432. package/dist/providers/schema-provider.d.ts +15 -0
  433. package/dist/providers/schema-provider.d.ts.map +1 -0
  434. package/dist/providers/state-provider.d.ts +16 -0
  435. package/dist/providers/state-provider.d.ts.map +1 -0
  436. package/dist/providers/write-diff-limits.d.ts +5 -0
  437. package/dist/providers/write-diff-limits.d.ts.map +1 -0
  438. package/dist/providers/write-preview.d.ts +3 -0
  439. package/dist/providers/write-preview.d.ts.map +1 -0
  440. package/dist/ref-names.d.ts +2 -0
  441. package/dist/ref-names.d.ts.map +1 -0
  442. package/dist/repairs/active.d.ts +7 -0
  443. package/dist/repairs/active.d.ts.map +1 -0
  444. package/dist/repairs/apply.d.ts +7 -0
  445. package/dist/repairs/apply.d.ts.map +1 -0
  446. package/dist/repairs/catalog-digest.d.ts +5 -0
  447. package/dist/repairs/catalog-digest.d.ts.map +1 -0
  448. package/dist/repairs/classify.d.ts +10 -0
  449. package/dist/repairs/classify.d.ts.map +1 -0
  450. package/dist/repairs/compiler.d.ts +33 -0
  451. package/dist/repairs/compiler.d.ts.map +1 -0
  452. package/dist/repairs/promote.d.ts +4 -0
  453. package/dist/repairs/promote.d.ts.map +1 -0
  454. package/dist/repairs/store.d.ts +10 -0
  455. package/dist/repairs/store.d.ts.map +1 -0
  456. package/dist/repairs/types.d.ts +49 -0
  457. package/dist/repairs/types.d.ts.map +1 -0
  458. package/dist/residency/actor-client.d.ts +16 -0
  459. package/dist/residency/actor-client.d.ts.map +1 -0
  460. package/dist/residency/actor-client.js +9 -0
  461. package/dist/residency/actor-client.js.map +7 -0
  462. package/dist/residency/client.d.ts +44 -0
  463. package/dist/residency/client.d.ts.map +1 -0
  464. package/dist/residency/host.d.ts +3 -0
  465. package/dist/residency/host.d.ts.map +1 -0
  466. package/dist/residency/host.js +25 -0
  467. package/dist/residency/host.js.map +7 -0
  468. package/dist/residency/launcher-owner.d.ts +7 -0
  469. package/dist/residency/launcher-owner.d.ts.map +1 -0
  470. package/dist/residency/launcher.d.ts +3 -0
  471. package/dist/residency/launcher.d.ts.map +1 -0
  472. package/dist/residency/launcher.js +152 -0
  473. package/dist/residency/launcher.js.map +7 -0
  474. package/dist/residency/omp-entry.d.ts +3 -0
  475. package/dist/residency/omp-entry.d.ts.map +1 -0
  476. package/dist/residency/omp-entry.js +41 -0
  477. package/dist/residency/omp-entry.js.map +7 -0
  478. package/dist/residency/protocol.d.ts +119 -0
  479. package/dist/residency/protocol.d.ts.map +1 -0
  480. package/dist/run-display.d.ts +3 -0
  481. package/dist/run-display.d.ts.map +1 -0
  482. package/dist/runtime/core-override-guest-types.d.ts +15 -0
  483. package/dist/runtime/core-override-guest-types.d.ts.map +1 -0
  484. package/dist/runtime/core-override-guest-types.js +291 -0
  485. package/dist/runtime/core-override-guest-types.js.map +7 -0
  486. package/dist/runtime/core-tool-properties.d.ts +6 -0
  487. package/dist/runtime/core-tool-properties.d.ts.map +1 -0
  488. package/dist/runtime/dynamic-guest-types.d.ts +3 -0
  489. package/dist/runtime/dynamic-guest-types.d.ts.map +1 -0
  490. package/dist/runtime/dynamic-guest-types.js +226 -0
  491. package/dist/runtime/dynamic-guest-types.js.map +7 -0
  492. package/dist/runtime/guest-code-repair.d.ts +2 -0
  493. package/dist/runtime/guest-code-repair.d.ts.map +1 -0
  494. package/dist/runtime/guest-stack-map.d.ts +11 -0
  495. package/dist/runtime/guest-stack-map.d.ts.map +1 -0
  496. package/dist/runtime/guest-types.d.ts +35 -0
  497. package/dist/runtime/guest-types.d.ts.map +1 -0
  498. package/dist/runtime/guest-types.js +13 -0
  499. package/dist/runtime/guest-types.js.map +7 -0
  500. package/dist/runtime/node-process-child-source.d.ts +2 -0
  501. package/dist/runtime/node-process-child-source.d.ts.map +1 -0
  502. package/dist/runtime/node-process-runtime.d.ts +10 -0
  503. package/dist/runtime/node-process-runtime.d.ts.map +1 -0
  504. package/dist/runtime/node-process-runtime.js +319 -0
  505. package/dist/runtime/node-process-runtime.js.map +7 -0
  506. package/dist/runtime/orchestration.d.ts +3 -0
  507. package/dist/runtime/orchestration.d.ts.map +1 -0
  508. package/dist/runtime/quickjs-runtime.d.ts +24 -0
  509. package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
  510. package/dist/runtime/quickjs-runtime.js +12 -0
  511. package/dist/runtime/quickjs-runtime.js.map +7 -0
  512. package/dist/runtime/type-checker.d.ts +21 -0
  513. package/dist/runtime/type-checker.d.ts.map +1 -0
  514. package/dist/runtime/type-checker.js +15 -0
  515. package/dist/runtime/type-checker.js.map +7 -0
  516. package/dist/runtime-paths.d.ts +7 -0
  517. package/dist/runtime-paths.d.ts.map +1 -0
  518. package/dist/schema/controller.d.ts +35 -0
  519. package/dist/schema/controller.d.ts.map +1 -0
  520. package/dist/schema/types.d.ts +86 -0
  521. package/dist/schema/types.d.ts.map +1 -0
  522. package/dist/schema/workspace.d.ts +19 -0
  523. package/dist/schema/workspace.d.ts.map +1 -0
  524. package/dist/speculation/eligibility.d.ts +22 -0
  525. package/dist/speculation/eligibility.d.ts.map +1 -0
  526. package/dist/speculation/freshness.d.ts +10 -0
  527. package/dist/speculation/freshness.d.ts.map +1 -0
  528. package/dist/speculation/partial-json.d.ts +9 -0
  529. package/dist/speculation/partial-json.d.ts.map +1 -0
  530. package/dist/speculation/scanner.d.ts +13 -0
  531. package/dist/speculation/scanner.d.ts.map +1 -0
  532. package/dist/speculation/scanner.js +182 -0
  533. package/dist/speculation/scanner.js.map +7 -0
  534. package/dist/speculation/store.d.ts +39 -0
  535. package/dist/speculation/store.d.ts.map +1 -0
  536. package/dist/speculation/stream-tap.d.ts +27 -0
  537. package/dist/speculation/stream-tap.d.ts.map +1 -0
  538. package/dist/speculation/types.d.ts +44 -0
  539. package/dist/speculation/types.d.ts.map +1 -0
  540. package/dist/state/complexity.d.ts +13 -0
  541. package/dist/state/complexity.d.ts.map +1 -0
  542. package/dist/state/evidence-runner.d.ts +17 -0
  543. package/dist/state/evidence-runner.d.ts.map +1 -0
  544. package/dist/state/store.d.ts +76 -0
  545. package/dist/state/store.d.ts.map +1 -0
  546. package/dist/state/types.d.ts +165 -0
  547. package/dist/state/types.d.ts.map +1 -0
  548. package/dist/storage/retention.d.ts +22 -0
  549. package/dist/storage/retention.d.ts.map +1 -0
  550. package/dist/thinking.d.ts +19 -0
  551. package/dist/thinking.d.ts.map +1 -0
  552. package/dist/topology/control-plane.d.ts +58 -0
  553. package/dist/topology/control-plane.d.ts.map +1 -0
  554. package/dist/topology/participant-directory.d.ts +33 -0
  555. package/dist/topology/participant-directory.d.ts.map +1 -0
  556. package/dist/topology/peer-settle.d.ts +51 -0
  557. package/dist/topology/peer-settle.d.ts.map +1 -0
  558. package/dist/topology/records.d.ts +6 -0
  559. package/dist/topology/records.d.ts.map +1 -0
  560. package/dist/topology/types.d.ts +89 -0
  561. package/dist/topology/types.d.ts.map +1 -0
  562. package/dist/type-error-guidance.d.ts +3 -0
  563. package/dist/type-error-guidance.d.ts.map +1 -0
  564. package/dist/ui/arc-group.d.ts +17 -0
  565. package/dist/ui/arc-group.d.ts.map +1 -0
  566. package/dist/ui/code-preview-shell.d.ts +26 -0
  567. package/dist/ui/code-preview-shell.d.ts.map +1 -0
  568. package/dist/ui/code-preview.d.ts +53 -0
  569. package/dist/ui/code-preview.d.ts.map +1 -0
  570. package/dist/ui/controller.d.ts +20 -0
  571. package/dist/ui/controller.d.ts.map +1 -0
  572. package/dist/ui/conversation-chrome.d.ts +15 -0
  573. package/dist/ui/conversation-chrome.d.ts.map +1 -0
  574. package/dist/ui/conversation-chrome.js +10 -0
  575. package/dist/ui/conversation-chrome.js.map +7 -0
  576. package/dist/ui/conversation-native-reader.d.ts +106 -0
  577. package/dist/ui/conversation-native-reader.d.ts.map +1 -0
  578. package/dist/ui/conversation-native-reader.js +784 -0
  579. package/dist/ui/conversation-native-reader.js.map +7 -0
  580. package/dist/ui/conversation-queue-store.d.ts +12 -0
  581. package/dist/ui/conversation-queue-store.d.ts.map +1 -0
  582. package/dist/ui/conversation-queue.d.ts +242 -0
  583. package/dist/ui/conversation-queue.d.ts.map +1 -0
  584. package/dist/ui/conversation-render.d.ts +45 -0
  585. package/dist/ui/conversation-render.d.ts.map +1 -0
  586. package/dist/ui/conversation-shortcut.d.ts +3 -0
  587. package/dist/ui/conversation-shortcut.d.ts.map +1 -0
  588. package/dist/ui/conversation-targets.d.ts +7 -0
  589. package/dist/ui/conversation-targets.d.ts.map +1 -0
  590. package/dist/ui/conversation-targets.js +12 -0
  591. package/dist/ui/conversation-targets.js.map +7 -0
  592. package/dist/ui/conversation-transcript.d.ts +25 -0
  593. package/dist/ui/conversation-transcript.d.ts.map +1 -0
  594. package/dist/ui/conversation.d.ts +170 -0
  595. package/dist/ui/conversation.d.ts.map +1 -0
  596. package/dist/ui/conversation.js +1868 -0
  597. package/dist/ui/conversation.js.map +7 -0
  598. package/dist/ui/core-tool-render.d.ts +20 -0
  599. package/dist/ui/core-tool-render.d.ts.map +1 -0
  600. package/dist/ui/dashboard-detail.d.ts +68 -0
  601. package/dist/ui/dashboard-detail.d.ts.map +1 -0
  602. package/dist/ui/dashboard-fabric-graph.d.ts +50 -0
  603. package/dist/ui/dashboard-fabric-graph.d.ts.map +1 -0
  604. package/dist/ui/dashboard-model.d.ts +111 -0
  605. package/dist/ui/dashboard-model.d.ts.map +1 -0
  606. package/dist/ui/dashboard-presentation.d.ts +6 -0
  607. package/dist/ui/dashboard-presentation.d.ts.map +1 -0
  608. package/dist/ui/dashboard.d.ts +188 -0
  609. package/dist/ui/dashboard.d.ts.map +1 -0
  610. package/dist/ui/dashboard.js +4604 -0
  611. package/dist/ui/dashboard.js.map +7 -0
  612. package/dist/ui/diff-background.d.ts +12 -0
  613. package/dist/ui/diff-background.d.ts.map +1 -0
  614. package/dist/ui/dynamic-border.d.ts +8 -0
  615. package/dist/ui/dynamic-border.d.ts.map +1 -0
  616. package/dist/ui/escape-halt.d.ts +11 -0
  617. package/dist/ui/escape-halt.d.ts.map +1 -0
  618. package/dist/ui/fabric-actor-delivery-selector.d.ts +17 -0
  619. package/dist/ui/fabric-actor-delivery-selector.d.ts.map +1 -0
  620. package/dist/ui/fabric-actor-tool-selector.d.ts +22 -0
  621. package/dist/ui/fabric-actor-tool-selector.d.ts.map +1 -0
  622. package/dist/ui/fabric-code-parser.d.ts +8 -0
  623. package/dist/ui/fabric-code-parser.d.ts.map +1 -0
  624. package/dist/ui/fabric-host-event-selector.d.ts +29 -0
  625. package/dist/ui/fabric-host-event-selector.d.ts.map +1 -0
  626. package/dist/ui/fabric-model-selector.d.ts +64 -0
  627. package/dist/ui/fabric-model-selector.d.ts.map +1 -0
  628. package/dist/ui/fabric-render.d.ts +113 -0
  629. package/dist/ui/fabric-render.d.ts.map +1 -0
  630. package/dist/ui/fabric-thinking-selector.d.ts +26 -0
  631. package/dist/ui/fabric-thinking-selector.d.ts.map +1 -0
  632. package/dist/ui/fabric-title-hint.d.ts +2 -0
  633. package/dist/ui/fabric-title-hint.d.ts.map +1 -0
  634. package/dist/ui/format.d.ts +9 -0
  635. package/dist/ui/format.d.ts.map +1 -0
  636. package/dist/ui/highlight.d.ts +69 -0
  637. package/dist/ui/highlight.d.ts.map +1 -0
  638. package/dist/ui/model-picker.d.ts +46 -0
  639. package/dist/ui/model-picker.d.ts.map +1 -0
  640. package/dist/ui/model-picker.js +17 -0
  641. package/dist/ui/model-picker.js.map +7 -0
  642. package/dist/ui/preview-lines.d.ts +16 -0
  643. package/dist/ui/preview-lines.d.ts.map +1 -0
  644. package/dist/ui/row-balance.d.ts +29 -0
  645. package/dist/ui/row-balance.d.ts.map +1 -0
  646. package/dist/ui/settings.d.ts +57 -0
  647. package/dist/ui/settings.d.ts.map +1 -0
  648. package/dist/ui/settings.js +1908 -0
  649. package/dist/ui/settings.js.map +7 -0
  650. package/dist/ui/shiki-language.d.ts +7 -0
  651. package/dist/ui/shiki-language.d.ts.map +1 -0
  652. package/dist/ui/shiki-theme.d.ts +7 -0
  653. package/dist/ui/shiki-theme.d.ts.map +1 -0
  654. package/dist/ui/snapshot.d.ts +7 -0
  655. package/dist/ui/snapshot.d.ts.map +1 -0
  656. package/dist/ui/spinner.d.ts +6 -0
  657. package/dist/ui/spinner.d.ts.map +1 -0
  658. package/dist/ui/state-file-preview.d.ts +13 -0
  659. package/dist/ui/state-file-preview.d.ts.map +1 -0
  660. package/dist/ui/structured.d.ts +9 -0
  661. package/dist/ui/structured.d.ts.map +1 -0
  662. package/dist/ui/symbol-theme.d.ts +3 -0
  663. package/dist/ui/symbol-theme.d.ts.map +1 -0
  664. package/dist/ui/tool-call-timing.d.ts +2 -0
  665. package/dist/ui/tool-call-timing.d.ts.map +1 -0
  666. package/dist/ui/tool-display.d.ts +8 -0
  667. package/dist/ui/tool-display.d.ts.map +1 -0
  668. package/dist/ui/topology.d.ts +162 -0
  669. package/dist/ui/topology.d.ts.map +1 -0
  670. package/dist/ui/transcript-parser.d.ts +18 -0
  671. package/dist/ui/transcript-parser.d.ts.map +1 -0
  672. package/dist/ui/transcript-reader.d.ts +10 -0
  673. package/dist/ui/transcript-reader.d.ts.map +1 -0
  674. package/dist/ui/transcript-sanitization.d.ts +14 -0
  675. package/dist/ui/transcript-sanitization.d.ts.map +1 -0
  676. package/dist/ui/transcript.d.ts +52 -0
  677. package/dist/ui/transcript.d.ts.map +1 -0
  678. package/dist/ui/types.d.ts +84 -0
  679. package/dist/ui/types.d.ts.map +1 -0
  680. package/dist/ui/widget.d.ts +16 -0
  681. package/dist/ui/widget.d.ts.map +1 -0
  682. package/dist/ui/word-diff/alignment.d.ts +6 -0
  683. package/dist/ui/word-diff/alignment.d.ts.map +1 -0
  684. package/dist/ui/word-diff/change-block.d.ts +18 -0
  685. package/dist/ui/word-diff/change-block.d.ts.map +1 -0
  686. package/dist/ui/word-diff/changed-line.d.ts +14 -0
  687. package/dist/ui/word-diff/changed-line.d.ts.map +1 -0
  688. package/dist/ui/word-diff/emphasis.d.ts +9 -0
  689. package/dist/ui/word-diff/emphasis.d.ts.map +1 -0
  690. package/dist/ui/word-diff/line-emphasis.d.ts +7 -0
  691. package/dist/ui/word-diff/line-emphasis.d.ts.map +1 -0
  692. package/dist/ui/word-diff/line-matching.d.ts +10 -0
  693. package/dist/ui/word-diff/line-matching.d.ts.map +1 -0
  694. package/dist/ui/word-diff/line-similarity.d.ts +16 -0
  695. package/dist/ui/word-diff/line-similarity.d.ts.map +1 -0
  696. package/dist/ui/word-diff/normalize.d.ts +3 -0
  697. package/dist/ui/word-diff/normalize.d.ts.map +1 -0
  698. package/dist/ui/word-diff/parse.d.ts +17 -0
  699. package/dist/ui/word-diff/parse.d.ts.map +1 -0
  700. package/dist/ui/word-diff/range-refinement.d.ts +5 -0
  701. package/dist/ui/word-diff/range-refinement.d.ts.map +1 -0
  702. package/dist/ui/word-diff/ranges.d.ts +11 -0
  703. package/dist/ui/word-diff/ranges.d.ts.map +1 -0
  704. package/dist/ui/word-diff/smart-filter.d.ts +3 -0
  705. package/dist/ui/word-diff/smart-filter.d.ts.map +1 -0
  706. package/dist/ui/word-diff/sparse-line-matching.d.ts +25 -0
  707. package/dist/ui/word-diff/sparse-line-matching.d.ts.map +1 -0
  708. package/dist/ui/word-diff/text-boundaries.d.ts +11 -0
  709. package/dist/ui/word-diff/text-boundaries.d.ts.map +1 -0
  710. package/dist/ui/word-diff/token-alignment.d.ts +9 -0
  711. package/dist/ui/word-diff/token-alignment.d.ts.map +1 -0
  712. package/dist/ui/word-diff/token-text-refinement.d.ts +4 -0
  713. package/dist/ui/word-diff/token-text-refinement.d.ts.map +1 -0
  714. package/dist/ui/word-diff/tokens.d.ts +16 -0
  715. package/dist/ui/word-diff/tokens.d.ts.map +1 -0
  716. package/dist/ui/word-diff/types.d.ts +10 -0
  717. package/dist/ui/word-diff/types.d.ts.map +1 -0
  718. package/dist/util.d.ts +3 -0
  719. package/dist/util.d.ts.map +1 -0
  720. package/dist/worker/options.d.ts +3 -0
  721. package/dist/worker/options.d.ts.map +1 -0
  722. package/dist/worker/options.js +104 -0
  723. package/dist/worker/options.js.map +7 -0
  724. package/dist/worker/run-record.d.ts +22 -0
  725. package/dist/worker/run-record.d.ts.map +1 -0
  726. package/dist/worker/run-record.js +123 -0
  727. package/dist/worker/run-record.js.map +7 -0
  728. package/dist/worker/session-export.d.ts +45 -0
  729. package/dist/worker/session-export.d.ts.map +1 -0
  730. package/dist/worker/session-export.js +91 -0
  731. package/dist/worker/session-export.js.map +7 -0
  732. package/dist/worker.d.ts +3 -0
  733. package/dist/worker.d.ts.map +1 -0
  734. package/dist/worker.js +1061 -0
  735. package/dist/worker.js.map +7 -0
  736. package/docs/agents.md +564 -0
  737. package/docs/architecture.md +139 -0
  738. package/docs/audit-trace.md +116 -0
  739. package/docs/certification.md +134 -0
  740. package/docs/compaction.md +332 -0
  741. package/docs/component-calculus.md +191 -0
  742. package/docs/components.md +329 -0
  743. package/docs/configuration.md +478 -0
  744. package/docs/entropy.md +396 -0
  745. package/docs/interface.md +149 -0
  746. package/docs/memory-recall.md +614 -0
  747. package/docs/programmatic-compaction.md +207 -0
  748. package/docs/provider-component-calculus.md +378 -0
  749. package/docs/providers.md +109 -0
  750. package/docs/repairs.md +69 -0
  751. package/docs/residency-runtime.md +82 -0
  752. package/docs/schema-enforcement.md +166 -0
  753. package/docs/skills.md +48 -0
  754. package/docs/speculation.md +132 -0
  755. package/docs/state-layer.md +197 -0
  756. package/package.json +116 -0
  757. package/skills/fabric-advisor/SKILL.md +29 -0
  758. package/skills/fabric-ambient/SKILL.md +44 -0
  759. package/skills/fabric-ambient/references/setup.md +90 -0
  760. package/skills/fabric-council/SKILL.md +94 -0
  761. package/skills/fabric-exec/SKILL.md +123 -0
  762. package/skills/fabric-exec/references/agents.md +211 -0
  763. package/skills/fabric-exec/references/mcp.md +49 -0
  764. package/skills/fabric-exec/references/mesh.md +51 -0
  765. package/skills/fabric-fusion/SKILL.md +332 -0
  766. package/skills/fabric-guide/SKILL.md +28 -0
  767. package/skills/fabric-rlm/SKILL.md +284 -0
  768. package/skills/fabric-schema/SKILL.md +121 -0
  769. package/skills/fabric-spec/SKILL.md +42 -0
  770. package/skills/fabric-supervisor/SKILL.md +37 -0
  771. package/skills/fabric-swarm/SKILL.md +80 -0
  772. package/skills/fabric-workflow/SKILL.md +133 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/memory/index.ts", "../../src/memory/lineage.ts", "../../src/memory/regex.ts", "../../src/memory/search.ts"],
4
+ "sourcesContent": ["import crypto from \"node:crypto\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { foldSessionDigest, type SessionDigest } from \"./digest.js\";\nimport type { SessionRef } from \"./discovery.js\";\nimport type { LiveSessionBranch, MemoryBranches, SessionLineage } from \"./lineage.js\";\nimport { reconstructSessionLineage } from \"./lineage.js\";\nimport type { NormalizedEntry } from \"./normalize.js\";\nimport { DEFAULT_MEMORY_INDEX_PRIVACY, normalizeSession } from \"./normalize.js\";\nimport { compareLexical, lexicalTermCounts, tokenizeLexical } from \"./tokenize.js\";\n\nexport const MEMORY_CACHE_VERSION = 6;\nexport const DEFAULT_HOT_SESSIONS = 50;\nconst DEFAULT_MAX_COLD_VOCABULARY_BYTES = 512 * 1024;\nconst DEFAULT_MAX_COLD_CACHE_BYTES = 1024 * 1024;\nconst DEFAULT_MAX_SYNC_SESSIONS = 10_000;\nconst DEFAULT_MAX_SYNC_SOURCE_BYTES = 512 * 1024 * 1024;\nconst DEFAULT_MAX_CACHE_CLEANUP_FILES = 100_000;\n\ntype MemoryTier = \"hot\" | \"cold\";\n\ninterface CacheRecord {\n cacheVersion: typeof MEMORY_CACHE_VERSION;\n kind: \"shard\" | \"digest\";\n mtime: number;\n size: number;\n sourceHash: string;\n branches: MemoryBranches;\n lineageFingerprint: string;\n policy: string;\n cacheBytes: number;\n cacheSourceRatio: number;\n}\n\nexport interface Shard extends CacheRecord {\n kind: \"shard\";\n sessionFile: string;\n sessionId: string;\n entries: NormalizedEntry[];\n totalEntryCount: number;\n indexCoverage: { complete: boolean; reasons: string[] };\n tier?: MemoryTier;\n indexReason?: string;\n}\n\nexport interface DigestShard extends SessionDigest, CacheRecord {\n kind: \"digest\";\n}\n\nexport interface MemoryIndexOptions {\n indexDir: string;\n maxEntryChars: number;\n hotSessions?: number;\n digestTerms?: number;\n maxColdVocabularyBytes?: number;\n maxColdCacheBytes?: number;\n maxSyncSessions?: number;\n maxSyncSourceBytes?: number;\n maxCacheCleanupFiles?: number;\n branches?: MemoryBranches;\n indexThinking?: boolean;\n indexToolOutput?: boolean;\n liveBranchForFile?: (sessionFile: string) => LiveSessionBranch | undefined;\n}\n\nexport interface EntryRange {\n first: number;\n last: number;\n}\n\nconst cacheBaseName = (sessionFile: string): string => {\n const hash = crypto.createHash(\"sha1\").update(sessionFile).digest(\"hex\").slice(0, 16);\n const safeBase = path.basename(sessionFile).replace(/[^a-zA-Z0-9._-]/g, \"_\");\n return `${hash}-${safeBase}`;\n};\n\nconst cacheModeSuffix = (branches: MemoryBranches): string => branches === \"all\" ? \".all\" : \"\";\n\nexport const shardPathForSession = (\n sessionFile: string,\n indexDir: string,\n branches: MemoryBranches = \"active\",\n): string => path.join(indexDir, `${cacheBaseName(sessionFile)}${cacheModeSuffix(branches)}.json`);\n\nexport const digestPathForSession = (\n sessionFile: string,\n indexDir: string,\n branches: MemoryBranches = \"active\",\n): string => path.join(indexDir, `${cacheBaseName(sessionFile)}${cacheModeSuffix(branches)}.digest.json`);\n\nconst policyPrivacy = (options: MemoryIndexOptions): string =>\n `thinking:${options.indexThinking ?? DEFAULT_MEMORY_INDEX_PRIVACY.indexThinking};tool-output:${options.indexToolOutput ?? DEFAULT_MEMORY_INDEX_PRIVACY.indexToolOutput}`;\nconst shardPolicy = (options: MemoryIndexOptions, lineage: SessionLineage): string =>\n `entry:${options.maxEntryChars};branches:${lineage.branches};lineage:${lineage.fingerprint};${policyPrivacy(options)}`;\nconst digestPolicy = (options: MemoryIndexOptions, lineage: SessionLineage): string =>\n `vocab:${options.maxColdVocabularyBytes ?? DEFAULT_MAX_COLD_VOCABULARY_BYTES};cache:${options.maxColdCacheBytes ?? DEFAULT_MAX_COLD_CACHE_BYTES};branches:${lineage.branches};lineage:${lineage.fingerprint};${policyPrivacy(options)}`;\n\nconst resolveLineage = (sessionFile: string, options: MemoryIndexOptions): SessionLineage =>\n reconstructSessionLineage(\n sessionFile,\n options.branches ?? \"active\",\n options.liveBranchForFile?.(sessionFile),\n );\n\nconst normalizationOptions = (options: MemoryIndexOptions, lineage: SessionLineage) => ({\n lineage,\n indexThinking: options.indexThinking ?? DEFAULT_MEMORY_INDEX_PRIVACY.indexThinking,\n indexToolOutput: options.indexToolOutput ?? DEFAULT_MEMORY_INDEX_PRIVACY.indexToolOutput,\n});\n\nconst readShardFile = (\n filePath: string,\n maxBytes = DEFAULT_MAX_SYNC_SOURCE_BYTES,\n): Shard | null => {\n try {\n const stat = fs.statSync(filePath);\n if (!stat.isFile() || stat.size > maxBytes) return null;\n const parsed = JSON.parse(fs.readFileSync(filePath, \"utf8\")) as Shard;\n if (\n parsed.cacheVersion !== MEMORY_CACHE_VERSION ||\n parsed.kind !== \"shard\" ||\n typeof parsed.sessionFile !== \"string\" ||\n typeof parsed.sessionId !== \"string\" ||\n typeof parsed.sourceHash !== \"string\" ||\n parsed.sourceHash.length !== 64 ||\n (parsed.branches !== \"active\" && parsed.branches !== \"all\") ||\n typeof parsed.lineageFingerprint !== \"string\" ||\n parsed.lineageFingerprint.length !== 64 ||\n typeof parsed.policy !== \"string\" ||\n typeof parsed.cacheBytes !== \"number\" ||\n parsed.cacheBytes !== stat.size ||\n typeof parsed.cacheSourceRatio !== \"number\" ||\n typeof parsed.totalEntryCount !== \"number\" ||\n typeof parsed.indexCoverage !== \"object\" ||\n parsed.indexCoverage === null ||\n typeof parsed.indexCoverage.complete !== \"boolean\" ||\n !Array.isArray(parsed.indexCoverage.reasons) ||\n !parsed.indexCoverage.reasons.every((reason) => typeof reason === \"string\") ||\n !Array.isArray(parsed.entries) ||\n !parsed.entries.every((entry) =>\n entry !== null &&\n typeof entry === \"object\" &&\n typeof entry.index === \"number\" &&\n typeof entry.sessionFile === \"string\" &&\n typeof entry.text === \"string\")\n ) return null;\n return parsed;\n } catch {\n return null;\n }\n};\n\nconst readDigestFile = (\n filePath: string,\n maxBytes = DEFAULT_MAX_COLD_CACHE_BYTES,\n): DigestShard | null => {\n try {\n const stat = fs.statSync(filePath);\n if (!stat.isFile() || stat.size > maxBytes) return null;\n const parsed = JSON.parse(fs.readFileSync(filePath, \"utf8\")) as DigestShard;\n if (\n parsed.cacheVersion !== MEMORY_CACHE_VERSION ||\n parsed.kind !== \"digest\" ||\n typeof parsed.sessionId !== \"string\" ||\n typeof parsed.file !== \"string\" ||\n typeof parsed.sourceHash !== \"string\" ||\n parsed.sourceHash.length !== 64 ||\n (parsed.branches !== \"active\" && parsed.branches !== \"all\") ||\n typeof parsed.lineageFingerprint !== \"string\" ||\n parsed.lineageFingerprint.length !== 64 ||\n typeof parsed.policy !== \"string\" ||\n typeof parsed.cacheBytes !== \"number\" ||\n parsed.cacheBytes !== stat.size ||\n typeof parsed.cacheSourceRatio !== \"number\" ||\n !Array.isArray(parsed.filesTouched) ||\n !Array.isArray(parsed.vocabulary) ||\n !parsed.vocabulary.every((term, index) =>\n typeof term === \"string\" && (index === 0 || parsed.vocabulary[index - 1]! < term)) ||\n !Array.isArray(parsed.addresses) ||\n !parsed.addresses.every((address) =>\n Array.isArray(address) &&\n address.length === 10 &&\n typeof address[0] === \"number\" &&\n (address[1] === null || typeof address[1] === \"string\") &&\n (address[2] === null || typeof address[2] === \"string\") &&\n (address[3] === null || typeof address[3] === \"string\") &&\n (address[4] === null || typeof address[4] === \"string\") &&\n (address[5] === null || typeof address[5] === \"number\") &&\n (address[6] === null || typeof address[6] === \"string\") &&\n (address[7] === null || typeof address[7] === \"string\") &&\n (address[8] === null || typeof address[8] === \"string\") &&\n (address[9] === null ||\n address[9] === \"succeeded\" ||\n address[9] === \"failed\" ||\n address[9] === \"aborted\" ||\n address[9] === \"timed_out\")) ||\n typeof parsed.indexCoverage !== \"object\" ||\n parsed.indexCoverage === null ||\n typeof parsed.indexCoverage.complete !== \"boolean\" ||\n typeof parsed.indexCoverage.vocabularyBytes !== \"number\" ||\n !Array.isArray(parsed.indexCoverage.reasons) ||\n !parsed.indexCoverage.reasons.every((reason) => typeof reason === \"string\") ||\n typeof parsed.mtime !== \"number\" ||\n typeof parsed.size !== \"number\"\n ) return null;\n return parsed;\n } catch {\n return null;\n }\n};\n\nconst serializedBytes = (value: unknown): number =>\n Buffer.byteLength(JSON.stringify(value), \"utf8\");\n\nconst applyCacheMetrics = <T extends CacheRecord>(value: T): T => {\n let previous = -1;\n for (let iteration = 0; iteration < 5; iteration += 1) {\n const bytes = serializedBytes(value);\n value.cacheBytes = bytes;\n value.cacheSourceRatio = value.size === 0 ? 0 : Number((bytes / value.size).toFixed(6));\n if (bytes === previous) break;\n previous = bytes;\n }\n value.cacheBytes = serializedBytes(value);\n value.cacheSourceRatio = value.size === 0\n ? 0\n : Number((value.cacheBytes / value.size).toFixed(6));\n return value;\n};\n\nconst writeCacheFile = (filePath: string, value: Shard | DigestShard): boolean => {\n try {\n fs.mkdirSync(path.dirname(filePath), { recursive: true, mode: 0o700 });\n try { fs.chmodSync(path.dirname(filePath), 0o700); } catch {}\n fs.writeFileSync(filePath, JSON.stringify(value), { encoding: \"utf8\", mode: 0o600 });\n try { fs.chmodSync(filePath, 0o600); } catch {}\n return true;\n } catch {\n return false;\n }\n};\n\nconst removeCacheFile = (filePath: string): void => {\n try {\n fs.rmSync(filePath, { force: true, recursive: true });\n } catch {\n // Cache cleanup is best effort.\n }\n};\n\nexport interface SourceState {\n mtime: number;\n size: number;\n sourceHash: string;\n}\n\nexport const fingerprintSource = (file: string): SourceState | null => {\n try {\n const content = fs.readFileSync(file);\n const stat = fs.statSync(file);\n if (!stat.isFile()) return null;\n return {\n mtime: stat.mtimeMs,\n size: stat.size,\n sourceHash: crypto.createHash(\"sha256\").update(content).digest(\"hex\"),\n };\n } catch {\n return null;\n }\n};\n\nconst isCacheFresh = (\n cache: CacheRecord | null,\n state: SourceState,\n policy: string,\n): boolean =>\n cache !== null &&\n cache.mtime === state.mtime &&\n cache.size === state.size &&\n cache.sourceHash === state.sourceHash &&\n cache.policy === policy;\n\nconst missingShard = (\n ref: SessionRef,\n lineage: SessionLineage,\n reason = \"source_unavailable\",\n): Shard => ({\n cacheVersion: MEMORY_CACHE_VERSION,\n kind: \"shard\",\n sessionFile: ref.file,\n sessionId: ref.id,\n mtime: 0,\n size: 0,\n sourceHash: \"\",\n branches: lineage.branches,\n lineageFingerprint: lineage.fingerprint,\n policy: reason,\n cacheBytes: 0,\n cacheSourceRatio: 0,\n entries: [],\n totalEntryCount: 0,\n indexCoverage: { complete: false, reasons: [reason] },\n tier: \"hot\",\n indexReason: reason,\n});\n\nexport const loadShard = (ref: SessionRef, options: MemoryIndexOptions): Shard => {\n const lineage = resolveLineage(ref.file, options);\n const filePath = shardPathForSession(ref.file, options.indexDir, lineage.branches);\n const state = fingerprintSource(ref.file);\n if (!state) {\n removeCacheFile(filePath);\n return missingShard(ref, lineage);\n }\n const policy = shardPolicy(options, lineage);\n const cached = readShardFile(\n filePath,\n options.maxSyncSourceBytes ?? DEFAULT_MAX_SYNC_SOURCE_BYTES,\n );\n if (isCacheFresh(cached, state, policy) && cached?.sessionFile === ref.file) return cached;\n if (fs.existsSync(filePath)) removeCacheFile(filePath);\n const { entries, header, indexCoverage } = normalizeSession(\n ref.file,\n options.maxEntryChars,\n normalizationOptions(options, lineage),\n );\n const finalState = fingerprintSource(ref.file);\n const finalLineage = resolveLineage(ref.file, options);\n if (\n !finalState ||\n finalState.sourceHash !== state.sourceHash ||\n finalLineage.fingerprint !== lineage.fingerprint\n ) {\n removeCacheFile(filePath);\n return missingShard(\n ref,\n finalLineage,\n finalState?.sourceHash === state.sourceHash\n ? \"lineage_changed_during_index\"\n : \"source_changed_during_index\",\n );\n }\n const shard = applyCacheMetrics<Shard>({\n cacheVersion: MEMORY_CACHE_VERSION,\n kind: \"shard\",\n sessionFile: ref.file,\n sessionId: header?.sessionId ?? ref.id,\n ...state,\n branches: lineage.branches,\n lineageFingerprint: lineage.fingerprint,\n policy,\n cacheBytes: 0,\n cacheSourceRatio: 0,\n entries,\n totalEntryCount: entries.length,\n indexCoverage,\n tier: \"hot\",\n });\n writeCacheFile(filePath, shard);\n return shard;\n};\n\nconst hydrateShard = (\n ref: SessionRef,\n options: MemoryIndexOptions,\n entryRange?: EntryRange,\n): Shard => {\n const lineage = resolveLineage(ref.file, options);\n const state = fingerprintSource(ref.file);\n if (!state) return { ...missingShard(ref, lineage), tier: \"cold\" };\n const { entries, header, indexCoverage } = normalizeSession(\n ref.file,\n options.maxEntryChars,\n normalizationOptions(options, lineage),\n );\n const finalState = fingerprintSource(ref.file);\n const finalLineage = resolveLineage(ref.file, options);\n if (\n !finalState ||\n finalState.sourceHash !== state.sourceHash ||\n finalLineage.fingerprint !== lineage.fingerprint\n ) {\n return {\n ...missingShard(\n ref,\n finalLineage,\n finalState?.sourceHash === state.sourceHash\n ? \"lineage_changed_during_index\"\n : \"source_changed_during_index\",\n ),\n tier: \"cold\",\n };\n }\n const selected = entryRange\n ? entries.filter((entry) => entry.index >= entryRange.first && entry.index <= entryRange.last)\n : entries;\n return {\n cacheVersion: MEMORY_CACHE_VERSION,\n kind: \"shard\",\n sessionFile: ref.file,\n sessionId: header?.sessionId ?? ref.id,\n ...state,\n branches: lineage.branches,\n lineageFingerprint: lineage.fingerprint,\n policy: shardPolicy(options, lineage),\n cacheBytes: 0,\n cacheSourceRatio: 0,\n entries: selected,\n totalEntryCount: entries.length,\n indexCoverage,\n tier: \"cold\",\n };\n};\n\nconst missingDigest = (\n ref: SessionRef,\n lineage: SessionLineage,\n reason = \"source_unavailable\",\n): DigestShard => ({\n cacheVersion: MEMORY_CACHE_VERSION,\n kind: \"digest\",\n sessionId: ref.id,\n file: ref.file,\n cwd: ref.cwd,\n firstTs: null,\n lastTs: null,\n entryCount: 0,\n filesTouched: [],\n toolHistogram: {},\n errorCount: 0,\n vocabulary: [],\n addresses: [],\n indexCoverage: { complete: false, vocabularyBytes: 2, reasons: [reason] },\n mtime: 0,\n size: 0,\n sourceHash: \"\",\n branches: lineage.branches,\n lineageFingerprint: lineage.fingerprint,\n policy: reason,\n cacheBytes: 0,\n cacheSourceRatio: 0,\n});\n\nconst maxFittingPrefix = <T>(\n values: T[],\n fits: (candidate: T[]) => boolean,\n): T[] => {\n let low = 0;\n let high = values.length;\n while (low < high) {\n const middle = Math.ceil((low + high) / 2);\n if (fits(values.slice(0, middle))) low = middle;\n else high = middle - 1;\n }\n return values.slice(0, low);\n};\n\nconst fitDigestCache = (digest: DigestShard, maxBytes: number): DigestShard => {\n applyCacheMetrics(digest);\n if (digest.cacheBytes <= maxBytes) return digest;\n\n digest.indexCoverage.complete = false;\n if (!digest.indexCoverage.reasons.includes(\"max_cold_cache_bytes\")) {\n digest.indexCoverage.reasons.push(\"max_cold_cache_bytes\");\n }\n digest.addresses = maxFittingPrefix(digest.addresses, (addresses) => {\n digest.addresses = addresses;\n applyCacheMetrics(digest);\n return digest.cacheBytes <= maxBytes;\n });\n applyCacheMetrics(digest);\n if (digest.cacheBytes <= maxBytes) return digest;\n\n digest.vocabulary = maxFittingPrefix(digest.vocabulary, (vocabulary) => {\n digest.vocabulary = vocabulary;\n digest.indexCoverage.vocabularyBytes = serializedBytes(vocabulary);\n applyCacheMetrics(digest);\n return digest.cacheBytes <= maxBytes;\n });\n digest.indexCoverage.vocabularyBytes = serializedBytes(digest.vocabulary);\n return applyCacheMetrics(digest);\n};\n\nexport const loadDigest = (ref: SessionRef, options: MemoryIndexOptions): DigestShard => {\n const lineage = resolveLineage(ref.file, options);\n const filePath = digestPathForSession(ref.file, options.indexDir, lineage.branches);\n const state = fingerprintSource(ref.file);\n if (!state) {\n removeCacheFile(filePath);\n return missingDigest(ref, lineage);\n }\n const policy = digestPolicy(options, lineage);\n const maxCacheBytes = options.maxColdCacheBytes ?? DEFAULT_MAX_COLD_CACHE_BYTES;\n const cached = readDigestFile(filePath, maxCacheBytes);\n if (\n isCacheFresh(cached, state, policy) &&\n cached?.file === ref.file &&\n serializedBytes(cached) <= maxCacheBytes\n ) return cached;\n if (fs.existsSync(filePath)) removeCacheFile(filePath);\n\n const { entries, header, indexCoverage } = normalizeSession(\n ref.file,\n Number.MAX_SAFE_INTEGER,\n normalizationOptions(options, lineage),\n );\n const finalState = fingerprintSource(ref.file);\n const finalLineage = resolveLineage(ref.file, options);\n if (\n !finalState ||\n finalState.sourceHash !== state.sourceHash ||\n finalLineage.fingerprint !== lineage.fingerprint\n ) {\n removeCacheFile(filePath);\n return missingDigest(\n ref,\n finalLineage,\n finalState?.sourceHash === state.sourceHash\n ? \"lineage_changed_during_index\"\n : \"source_changed_during_index\",\n );\n }\n const digest = foldSessionDigest({\n sessionId: header?.sessionId ?? ref.id,\n file: ref.file,\n cwd: header?.cwd ?? ref.cwd,\n entries,\n maxVocabularyBytes:\n options.maxColdVocabularyBytes ?? DEFAULT_MAX_COLD_VOCABULARY_BYTES,\n normalizationCoverage: indexCoverage,\n });\n const persisted = fitDigestCache({\n cacheVersion: MEMORY_CACHE_VERSION,\n kind: \"digest\",\n ...digest,\n ...state,\n branches: lineage.branches,\n lineageFingerprint: lineage.fingerprint,\n policy,\n cacheBytes: 0,\n cacheSourceRatio: 0,\n }, maxCacheBytes);\n if (persisted.cacheBytes <= maxCacheBytes) writeCacheFile(filePath, persisted);\n return persisted;\n};\n\nconst compareRefsByRecency = (left: SessionRef, right: SessionRef): number => {\n if (right.mtime !== left.mtime) return right.mtime - left.mtime;\n return compareLexical(left.file, right.file);\n};\n\nconst classifySessionTiers = (\n refs: SessionRef[],\n hotSessions = DEFAULT_HOT_SESSIONS,\n): Map<string, MemoryTier> => {\n const sorted = [...refs].sort(compareRefsByRecency);\n const hot = new Set(sorted.slice(0, Math.max(0, Math.floor(hotSessions))).map((ref) => ref.file));\n return new Map(sorted.map((ref) => [ref.file, hot.has(ref.file) ? \"hot\" : \"cold\"]));\n};\n\nexport interface MemoryCoverage {\n complete: boolean;\n indexedSessions: number;\n eligibleSessions: number;\n staleSessions: number;\n incompleteSessions: number;\n reasons: string[];\n}\n\nexport interface TieredIndexBundle {\n shards: Shard[];\n digests: DigestShard[];\n refs: SessionRef[];\n tiers: Map<string, MemoryTier>;\n coverage: MemoryCoverage;\n}\n\nconst cleanupCacheDirectory = (\n indexDir: string,\n branchesToClean: MemoryBranches,\n maxFiles: number,\n maxBytes: number,\n): { complete: boolean; reasons: string[] } => {\n let directory: fs.Dir;\n try {\n directory = fs.opendirSync(indexDir);\n } catch {\n return { complete: true, reasons: [] };\n }\n let inspected = 0;\n let inspectedBytes = 0;\n try {\n while (true) {\n const entry = directory.readSync();\n if (!entry) return { complete: true, reasons: [] };\n if (!entry.name.endsWith(\".json\")) continue;\n if (inspected >= maxFiles) {\n return { complete: false, reasons: [\"cache_cleanup_budget\"] };\n }\n inspected += 1;\n const cacheFile = path.join(indexDir, entry.name);\n if (!entry.isFile()) {\n removeCacheFile(cacheFile);\n continue;\n }\n let cacheBytes: number;\n try {\n cacheBytes = fs.statSync(cacheFile).size;\n } catch {\n removeCacheFile(cacheFile);\n continue;\n }\n if (inspectedBytes + cacheBytes > maxBytes) {\n return { complete: false, reasons: [\"cache_cleanup_budget\"] };\n }\n inspectedBytes += cacheBytes;\n try {\n const parsed = JSON.parse(fs.readFileSync(cacheFile, \"utf8\")) as Record<string, unknown>;\n const kind = parsed.kind;\n const source = kind === \"shard\" && typeof parsed.sessionFile === \"string\"\n ? parsed.sessionFile\n : kind === \"digest\" && typeof parsed.file === \"string\" ? parsed.file : null;\n const branches = parsed.branches === \"active\" || parsed.branches === \"all\"\n ? parsed.branches\n : null;\n if (branches !== null && branches !== branchesToClean) continue;\n const expected = source && branches && kind === \"shard\"\n ? shardPathForSession(source, indexDir, branches)\n : source && branches && kind === \"digest\"\n ? digestPathForSession(source, indexDir, branches)\n : null;\n const structurallyValid = kind === \"shard\"\n ? readShardFile(cacheFile, cacheBytes) !== null\n : kind === \"digest\" ? readDigestFile(cacheFile, cacheBytes) !== null : false;\n if (\n parsed.cacheVersion !== MEMORY_CACHE_VERSION ||\n source === null ||\n expected !== cacheFile ||\n !fs.existsSync(source) ||\n !structurallyValid\n ) removeCacheFile(cacheFile);\n } catch {\n removeCacheFile(cacheFile);\n }\n }\n } finally {\n directory.closeSync();\n }\n};\n\nconst sourceSize = (file: string): number | null => {\n try {\n const stat = fs.statSync(file);\n return stat.isFile() ? stat.size : null;\n } catch {\n return null;\n }\n};\n\nexport const loadTieredIndex = (\n refs: SessionRef[],\n allRefs: SessionRef[],\n options: MemoryIndexOptions,\n hydrate = false,\n entryRange?: EntryRange,\n): TieredIndexBundle => {\n const cleanup = cleanupCacheDirectory(\n options.indexDir,\n options.branches ?? \"active\",\n options.maxCacheCleanupFiles ?? DEFAULT_MAX_CACHE_CLEANUP_FILES,\n options.maxSyncSourceBytes ?? DEFAULT_MAX_SYNC_SOURCE_BYTES,\n );\n const tierRefs = allRefs.length > 0 ? allRefs : refs;\n const tiers = classifySessionTiers(tierRefs, options.hotSessions ?? DEFAULT_HOT_SESSIONS);\n const maxSessions = options.maxSyncSessions ?? DEFAULT_MAX_SYNC_SESSIONS;\n const maxSourceBytes = options.maxSyncSourceBytes ?? DEFAULT_MAX_SYNC_SOURCE_BYTES;\n const shards: Shard[] = [];\n const digests: DigestShard[] = [];\n const reasons = new Set(cleanup.reasons);\n let indexedSessions = 0;\n let incompleteSessions = 0;\n let processedSessions = 0;\n let processedSourceBytes = 0;\n\n for (const ref of refs) {\n const size = sourceSize(ref.file);\n if (size === null) {\n reasons.add(\"source_unavailable\");\n continue;\n }\n if (processedSessions >= maxSessions) {\n reasons.add(\"max_sync_sessions\");\n continue;\n }\n const tier = tiers.get(ref.file) ?? \"cold\";\n const sourceWorkBytes = size * (hydrate && tier === \"cold\" ? 6 : 3);\n if (processedSourceBytes + sourceWorkBytes > maxSourceBytes) {\n reasons.add(\"max_sync_source_bytes\");\n continue;\n }\n processedSessions += 1;\n processedSourceBytes += sourceWorkBytes;\n try {\n if (hydrate) {\n if (tier === \"cold\") loadDigest(ref, options);\n const shard = hydrateShard(ref, options, entryRange);\n shards.push(shard);\n if (shard.sourceHash) indexedSessions += 1;\n else reasons.add(shard.indexReason ?? \"source_unavailable\");\n if (shard.sourceHash && !shard.indexCoverage.complete) {\n incompleteSessions += 1;\n for (const reason of shard.indexCoverage.reasons) reasons.add(reason);\n }\n } else if (tier === \"hot\") {\n const shard = loadShard(ref, options);\n removeCacheFile(digestPathForSession(\n ref.file,\n options.indexDir,\n options.branches ?? \"active\",\n ));\n shards.push(shard);\n if (shard.sourceHash) indexedSessions += 1;\n else reasons.add(shard.indexReason ?? \"source_unavailable\");\n if (shard.sourceHash && !shard.indexCoverage.complete) {\n incompleteSessions += 1;\n for (const reason of shard.indexCoverage.reasons) reasons.add(reason);\n }\n } else {\n const digest = loadDigest(ref, options);\n removeCacheFile(shardPathForSession(\n ref.file,\n options.indexDir,\n options.branches ?? \"active\",\n ));\n digests.push(digest);\n if (digest.sourceHash) indexedSessions += 1;\n if (!digest.indexCoverage.complete) {\n incompleteSessions += 1;\n for (const reason of digest.indexCoverage.reasons) reasons.add(reason);\n }\n }\n } catch {\n reasons.add(\"index_error\");\n }\n }\n\n const eligibleSessions = refs.length;\n const staleSessions = eligibleSessions - indexedSessions;\n return {\n shards,\n digests,\n refs,\n tiers,\n coverage: {\n complete: cleanup.complete && staleSessions === 0 && incompleteSessions === 0,\n indexedSessions,\n eligibleSessions,\n staleSessions,\n incompleteSessions,\n reasons: [...reasons].sort(compareLexical),\n },\n };\n};\n\nexport interface SearchFilters {\n role?: string;\n tool?: string;\n ref?: string;\n provider?: string;\n action?: string;\n outcome?: NonNullable<NormalizedEntry[\"outcome\"]>;\n since?: number;\n until?: number;\n}\n\nconst matchesFilters = (entry: NormalizedEntry, filters: SearchFilters): boolean => {\n if (filters.role !== undefined && entry.role !== filters.role) return false;\n if (filters.tool !== undefined && entry.toolName !== filters.tool) return false;\n if (filters.ref !== undefined && entry.ref !== filters.ref) return false;\n if (filters.provider !== undefined && entry.provider !== filters.provider) return false;\n if (filters.action !== undefined && entry.action !== filters.action) return false;\n if (filters.outcome !== undefined && entry.outcome !== filters.outcome) return false;\n if (filters.since !== undefined && entry.timestamp !== null && entry.timestamp < filters.since) return false;\n if (filters.until !== undefined && entry.timestamp !== null && entry.timestamp > filters.until) return false;\n return true;\n};\n\nexport interface IndexedEntry {\n entry: NormalizedEntry;\n sessionMtime: number;\n}\n\nexport interface ScoredEntry extends IndexedEntry {\n score: number;\n matchedTerms: number;\n}\n\nexport interface ShardBundle {\n shards: Shard[];\n refs: SessionRef[];\n}\n\nexport const loadShards = (refs: SessionRef[], options: MemoryIndexOptions): ShardBundle => ({\n shards: refs.map((ref) => loadShard(ref, options)),\n refs,\n});\n\nexport const bm25Score = (\n shards: Shard[],\n terms: string[],\n filters: SearchFilters,\n candidateLimit = Number.MAX_SAFE_INTEGER,\n): ScoredEntry[] => {\n const queryTerms = [...new Set(terms.flatMap((term) => tokenizeLexical(term)))];\n const matching: { entry: NormalizedEntry; mtime: number; counts: Map<string, number> }[] = [];\n for (const shard of shards) {\n for (const entry of shard.entries) {\n if (matchesFilters(entry, filters) && matching.length < candidateLimit) {\n matching.push({ entry, mtime: shard.mtime, counts: lexicalTermCounts(entry.text) });\n }\n }\n }\n if (matching.length === 0 || queryTerms.length === 0) return [];\n\n const lengths = matching.map((item) => Math.max(1, [...item.counts.values()].reduce((a, b) => a + b, 0)));\n const averageLength = lengths.reduce((sum, length) => sum + length, 0) / matching.length;\n const documentFrequency = new Map<string, number>();\n for (const item of matching) {\n for (const term of queryTerms) {\n if ((item.counts.get(term) ?? 0) > 0) {\n documentFrequency.set(term, (documentFrequency.get(term) ?? 0) + 1);\n }\n }\n }\n\n const K = 1.2;\n const B = 0.75;\n const results: ScoredEntry[] = [];\n for (let index = 0; index < matching.length; index += 1) {\n const item = matching[index]!;\n let score = 0;\n let matchedTerms = 0;\n for (const term of queryTerms) {\n const tf = item.counts.get(term) ?? 0;\n if (tf === 0) continue;\n matchedTerms += 1;\n const df = documentFrequency.get(term) ?? 0;\n const idf = Math.log((matching.length - df + 0.5) / (df + 0.5) + 1);\n const normalized = (tf * (K + 1)) /\n (tf + K * (1 - B + B * (lengths[index]! / averageLength)));\n score += idf * normalized;\n }\n if (score > 0) {\n results.push({ entry: item.entry, sessionMtime: item.mtime, score, matchedTerms });\n }\n }\n\n results.sort((left, right) => {\n if (right.score !== left.score) return right.score - left.score;\n if (right.sessionMtime !== left.sessionMtime) return right.sessionMtime - left.sessionMtime;\n if (left.entry.index !== right.entry.index) return left.entry.index - right.entry.index;\n return compareLexical(left.entry.sessionFile, right.entry.sessionFile);\n });\n return results;\n};\n\nexport const recentEntries = (\n shards: Shard[],\n filters: SearchFilters,\n limit: number,\n): IndexedEntry[] => {\n const all: IndexedEntry[] = [];\n for (const shard of shards) {\n for (const entry of shard.entries) {\n if (matchesFilters(entry, filters)) all.push({ entry, sessionMtime: shard.mtime });\n }\n }\n all.sort((left, right) => {\n if (right.sessionMtime !== left.sessionMtime) return right.sessionMtime - left.sessionMtime;\n if (left.entry.index !== right.entry.index) return left.entry.index - right.entry.index;\n return compareLexical(left.entry.sessionFile, right.entry.sessionFile);\n });\n return all.slice(0, Math.max(0, limit));\n};\n", "import crypto from \"node:crypto\";\nimport fs from \"node:fs\";\n\nexport type MemoryBranches = \"active\" | \"all\";\n\nexport interface LiveSessionBranch {\n entries: readonly unknown[];\n leafId: string | null;\n}\n\nexport interface SessionLineage {\n branches: MemoryBranches;\n leafId: string | null;\n entryOrdinals: ReadonlySet<number> | null;\n fingerprint: string;\n coverageReasons: string[];\n}\n\ninterface PersistedNode {\n id: string;\n parentId: string | null;\n ordinal: number;\n}\n\nconst fingerprint = (branches: MemoryBranches, leafId: string | null, ids: string[]): string =>\n crypto.createHash(\"sha256\").update(JSON.stringify({ branches, leafId, ids })).digest(\"hex\");\n\nconst readPersistedNodes = (sessionFile: string): PersistedNode[] => {\n let content: string;\n try {\n content = fs.readFileSync(sessionFile, \"utf8\");\n } catch {\n return [];\n }\n const nodes: PersistedNode[] = [];\n let ordinal = 0;\n for (const line of content.split(\"\\n\")) {\n if (!line.trim()) continue;\n let raw: Record<string, unknown>;\n try {\n raw = JSON.parse(line) as Record<string, unknown>;\n } catch {\n continue;\n }\n if (raw.type === \"session\") continue;\n if (typeof raw.id === \"string\" && (raw.parentId === null || typeof raw.parentId === \"string\")) {\n nodes.push({ id: raw.id, parentId: raw.parentId, ordinal });\n }\n ordinal += 1;\n }\n return nodes;\n};\n\nconst allLineage = (): SessionLineage => ({\n branches: \"all\",\n leafId: null,\n entryOrdinals: null,\n fingerprint: fingerprint(\"all\", null, []),\n coverageReasons: [],\n});\n\n/**\n * Reconstruct the OMP host's persisted leaf semantics without treating append\n * order as a transcript: the final persisted entry is the leaf, duplicate IDs\n * resolve to their last record in the ID map, and parent links are walked to a\n * root. Cycles are stopped defensively and reported as incomplete coverage.\n */\nexport const reconstructSessionLineage = (\n sessionFile: string,\n branches: MemoryBranches,\n liveBranch?: LiveSessionBranch,\n): SessionLineage => {\n if (branches === \"all\") return allLineage();\n\n const nodes = readPersistedNodes(sessionFile);\n const byId = new Map(nodes.map((node) => [node.id, node]));\n const liveIds = liveBranch?.entries.flatMap((entry) => {\n if (entry === null || typeof entry !== \"object\" || Array.isArray(entry)) return [];\n const id = (entry as Record<string, unknown>).id;\n return typeof id === \"string\" ? [id] : [];\n });\n const leafId = liveBranch ? liveBranch.leafId : (nodes[nodes.length - 1]?.id ?? null);\n const path: PersistedNode[] = [];\n const reasons = new Set<string>();\n\n if (liveIds) {\n for (const id of liveIds) {\n const node = byId.get(id);\n if (node) path.push(node);\n }\n } else {\n const seen = new Set<string>();\n let current = leafId ? byId.get(leafId) : undefined;\n while (current) {\n if (seen.has(current.id)) {\n reasons.add(\"invalid_parent_graph\");\n break;\n }\n seen.add(current.id);\n path.push(current);\n current = current.parentId ? byId.get(current.parentId) : undefined;\n }\n path.reverse();\n }\n\n const ids = liveIds ?? path.map((node) => node.id);\n return {\n branches: \"active\",\n leafId,\n entryOrdinals: new Set(path.map((node) => node.ordinal)),\n fingerprint: fingerprint(\"active\", leafId, ids),\n coverageReasons: [...reasons].sort(),\n };\n};\n", "import { Worker } from \"node:worker_threads\";\n\nexport interface RegexLimits {\n maxPatternBytes: number;\n timeoutMs: number;\n}\n\nexport interface RegexExecutionError {\n code: \"invalid_regex\" | \"regex_pattern_too_large\" | \"regex_timeout\" | \"regex_worker_error\";\n message: string;\n}\n\nexport type RegexExecutionResult =\n | { complete: true; matched: number[] }\n | { complete: false; matched: []; error: RegexExecutionError };\n\nconst WORKER_SOURCE = String.raw`\nconst { parentPort } = require(\"node:worker_threads\");\nparentPort.on(\"message\", ({ pattern, haystacks }) => {\n try {\n const regex = new RegExp(pattern, \"iu\");\n const matched = [];\n for (let index = 0; index < haystacks.length; index += 1) {\n if (regex.test(haystacks[index])) matched.push(index);\n }\n parentPort.postMessage({ matched });\n } catch (error) {\n parentPort.postMessage({\n error: {\n code: \"invalid_regex\",\n message: error instanceof Error ? error.message : String(error),\n },\n });\n }\n});\n`;\n\n/** Execute untrusted regex in a disposable worker that can be forcibly terminated. */\nexport const executeBoundedRegex = async (\n pattern: string,\n haystacks: string[],\n limits: RegexLimits,\n): Promise<RegexExecutionResult> => {\n const patternBytes = Buffer.byteLength(pattern, \"utf8\");\n if (patternBytes > limits.maxPatternBytes) {\n return {\n complete: false,\n matched: [],\n error: {\n code: \"regex_pattern_too_large\",\n message: `Regex pattern is ${patternBytes} bytes; limit is ${limits.maxPatternBytes}.`,\n },\n };\n }\n\n return new Promise((resolve) => {\n let worker: Worker;\n try {\n worker = new Worker(WORKER_SOURCE, {\n eval: true,\n resourceLimits: { maxOldGenerationSizeMb: 16, maxYoungGenerationSizeMb: 4 },\n });\n } catch (error) {\n resolve({\n complete: false,\n matched: [],\n error: {\n code: \"regex_worker_error\",\n message: error instanceof Error ? error.message : String(error),\n },\n });\n return;\n }\n let settled = false;\n const finish = (result: RegexExecutionResult): void => {\n if (settled) return;\n settled = true;\n clearTimeout(timer);\n void worker.terminate();\n resolve(result);\n };\n const timer = setTimeout(() => {\n finish({\n complete: false,\n matched: [],\n error: {\n code: \"regex_timeout\",\n message: `Regex execution exceeded ${limits.timeoutMs} ms.`,\n },\n });\n }, limits.timeoutMs);\n worker.once(\"message\", (message: unknown) => {\n const record = message as { matched?: unknown; error?: RegexExecutionError };\n if (record.error) {\n finish({ complete: false, matched: [], error: record.error });\n return;\n }\n if (Array.isArray(record.matched) && record.matched.every((value) => Number.isInteger(value))) {\n finish({ complete: true, matched: record.matched as number[] });\n return;\n }\n finish({\n complete: false,\n matched: [],\n error: { code: \"regex_worker_error\", message: \"Regex worker returned an invalid result.\" },\n });\n });\n worker.once(\"error\", (error: unknown) => {\n finish({\n complete: false,\n matched: [],\n error: {\n code: \"regex_worker_error\",\n message: error instanceof Error ? error.message : String(error),\n },\n });\n });\n worker.postMessage({ pattern, haystacks });\n });\n};\n", "import type { DigestEntryAddress } from \"./digest.js\";\nimport type { MemoryBranches } from \"./lineage.js\";\nimport type { NormalizedEntry } from \"./normalize.js\";\nimport type { DigestShard, SearchFilters, Shard } from \"./index.js\";\nimport { bm25Score, recentEntries, type ScoredEntry } from \"./index.js\";\nimport { executeBoundedRegex, type RegexExecutionError } from \"./regex.js\";\nimport {\n compareLexical,\n normalizeMemoryPhrase,\n planMemoryQuery,\n type MemoryQueryMatch,\n type MemoryQueryMode,\n} from \"./tokenize.js\";\n\nexport const DEFAULT_REGEX_MAX_PATTERN_BYTES = 1_024;\nexport const DEFAULT_REGEX_MAX_HAYSTACK_TERMS = 20_000;\nexport const DEFAULT_REGEX_MAX_HAYSTACK_BYTES = 2 * 1024 * 1024;\nexport const DEFAULT_REGEX_TIMEOUT_MS = 250;\nconst DEFAULT_SEARCH_MAX_CANDIDATE_ENTRIES = 50_000;\nconst DEFAULT_SEARCH_MAX_CANDIDATE_DIGESTS = 10_000;\nconst DEFAULT_SEARCH_MAX_CANDIDATE_ITEMS = 10_000;\n\nexport interface SearchQuery {\n query?: string;\n queryMode?: MemoryQueryMode;\n queryMatch?: MemoryQueryMatch;\n filters?: SearchFilters;\n limit?: number;\n candidateLimits?: {\n maxEntries: number;\n maxDigests: number;\n maxItems: number;\n };\n regexLimits?: {\n maxPatternBytes: number;\n maxHaystackTerms: number;\n maxHaystackBytes: number;\n timeoutMs: number;\n };\n}\n\nexport interface SearchSegmentEntry {\n entry: NormalizedEntry;\n matched: boolean;\n marker: \">\" | \" \";\n score: number;\n}\n\ninterface ExactEntryAddress {\n index: number;\n entryId: string | null;\n operationAddress: string | null;\n}\n\nexport interface SearchSegment {\n sessionId: string;\n sessionFile: string;\n sourceHash: string;\n branches: MemoryBranches;\n lineageFingerprint: string;\n sessionMtime: number;\n range: string;\n entryRange: { first: number; last: number };\n entries: SearchSegmentEntry[];\n exactMatches: ExactEntryAddress[];\n matchedCount: number;\n score: number;\n tier: \"hot\" | \"cold\";\n}\n\nexport interface DigestHit {\n sessionId: string;\n sessionFile: string;\n sourceHash: string;\n branches: MemoryBranches;\n lineageFingerprint: string;\n cwd: string;\n lastTs: number | null;\n sessionMtime: number;\n score: number;\n tier: \"cold\";\n matchedTerms: number;\n matchedStructuralEntries: number;\n}\n\ntype SearchItem =\n | { kind: \"entry\"; segment: SearchSegment }\n | { kind: \"digest\"; digest: DigestHit };\n\ninterface QueryCoverage {\n complete: boolean;\n reasons: string[];\n error?: RegexExecutionError;\n}\n\ntype MemoryMatchMode = \"browse\" | \"lexical\" | \"phrase\" | \"regex\" | \"structural\" | \"combined\";\n\nexport interface SearchResult {\n matchMode: MemoryMatchMode;\n matchedCount: number;\n totalMatches: number;\n totalItems: number;\n segmentCount: number;\n segments: SearchSegment[];\n digestHits: DigestHit[];\n items: SearchItem[];\n queryCoverage: QueryCoverage;\n}\n\nconst segmentStartRoles = new Set([\"user\", \"bashExecution\", \"compaction\"]);\n\nconst matchesFilters = (entry: NormalizedEntry, filters: SearchFilters): boolean => {\n if (filters.role !== undefined && entry.role !== filters.role) return false;\n if (filters.tool !== undefined && entry.toolName !== filters.tool) return false;\n if (filters.ref !== undefined && entry.ref !== filters.ref) return false;\n if (filters.provider !== undefined && entry.provider !== filters.provider) return false;\n if (filters.action !== undefined && entry.action !== filters.action) return false;\n if (filters.outcome !== undefined && entry.outcome !== filters.outcome) return false;\n if (filters.since !== undefined && entry.timestamp !== null && entry.timestamp < filters.since) return false;\n if (filters.until !== undefined && entry.timestamp !== null && entry.timestamp > filters.until) return false;\n return true;\n};\n\nconst addressMatchesFilters = (address: DigestEntryAddress, filters: SearchFilters): boolean => {\n if (filters.role !== undefined && address[3] !== filters.role) return false;\n if (filters.tool !== undefined && address[4] !== filters.tool) return false;\n if (filters.ref !== undefined && address[6] !== filters.ref) return false;\n if (filters.provider !== undefined && address[7] !== filters.provider) return false;\n if (filters.action !== undefined && address[8] !== filters.action) return false;\n if (filters.outcome !== undefined && address[9] !== filters.outcome) return false;\n if (filters.since !== undefined && address[5] !== null && address[5] < filters.since) return false;\n if (filters.until !== undefined && address[5] !== null && address[5] > filters.until) return false;\n return true;\n};\n\nconst hasFilters = (filters: SearchFilters): boolean => Object.keys(filters).length > 0;\n\nconst lexicalProvenanceWeight = (entry: NormalizedEntry, filters: SearchFilters): number => {\n if (\n filters.tool !== undefined ||\n filters.ref !== undefined ||\n filters.provider !== undefined ||\n filters.action !== undefined ||\n filters.outcome !== undefined\n ) return 1;\n if (entry.toolName === null && entry.role === \"assistant\") return 2.5;\n if (entry.toolName === null && entry.role === \"user\") return 2.25;\n if (entry.toolName === null && (entry.role === \"compactionSummary\" || entry.role === \"custom\")) return 1.5;\n if (entry.role === \"toolResult\" || entry.role === \"fabricOperation\") return 0.75;\n if (entry.toolName !== null) return 0.7;\n return 1;\n};\n\ninterface LocatedEntry {\n entry: NormalizedEntry;\n matched: boolean;\n sessionMtime: number;\n score: number;\n}\n\nconst sortLocated = (located: LocatedEntry[]): void => {\n located.sort((left, right) => {\n if (right.score !== left.score) return right.score - left.score;\n if (right.sessionMtime !== left.sessionMtime) return right.sessionMtime - left.sessionMtime;\n if (left.entry.index !== right.entry.index) return left.entry.index - right.entry.index;\n return compareLexical(left.entry.sessionFile, right.entry.sessionFile);\n });\n};\n\nconst filteredEntryCount = (shards: Shard[], filters: SearchFilters): number => {\n let count = 0;\n for (const shard of shards) {\n for (const entry of shard.entries) if (matchesFilters(entry, filters)) count += 1;\n }\n return count;\n};\n\nconst collectTermMatches = (\n shards: Shard[],\n terms: string[],\n filters: SearchFilters,\n maxEntries: number,\n match: MemoryQueryMatch,\n): LocatedEntry[] => {\n const scored: ScoredEntry[] = bm25Score(shards, terms, filters, maxEntries);\n const selected = match === \"all\"\n ? scored.filter((item) => item.matchedTerms === terms.length)\n : scored;\n return selected.map((item) => ({\n entry: item.entry,\n matched: true,\n sessionMtime: item.sessionMtime,\n score: item.score * lexicalProvenanceWeight(item.entry, filters),\n }));\n};\n\nconst collectPhraseMatches = (\n shards: Shard[],\n phrase: string,\n filters: SearchFilters,\n maxEntries: number,\n): LocatedEntry[] => {\n const located: LocatedEntry[] = [];\n let inspected = 0;\n outer: for (const shard of shards) {\n for (const entry of shard.entries) {\n if (!matchesFilters(entry, filters)) continue;\n if (inspected >= maxEntries) break outer;\n inspected += 1;\n if (!normalizeMemoryPhrase(entry.text).includes(phrase)) continue;\n located.push({\n entry,\n matched: true,\n sessionMtime: shard.mtime,\n score: lexicalProvenanceWeight(entry, filters),\n });\n }\n }\n sortLocated(located);\n return located;\n};\n\nconst collectRecent = (\n shards: Shard[],\n filters: SearchFilters,\n maxEntries: number,\n score = 0,\n): LocatedEntry[] =>\n recentEntries(shards, filters, maxEntries).map((item) => ({\n entry: item.entry,\n matched: true,\n sessionMtime: item.sessionMtime,\n score,\n }));\n\nconst digestStructuralMatchCount = (digest: DigestShard, filters: SearchFilters): number =>\n hasFilters(filters)\n ? digest.addresses.filter((address) => addressMatchesFilters(address, filters)).length\n : 0;\n\nconst digestCanMatchFilters = (digest: DigestShard, filters: SearchFilters): boolean =>\n !hasFilters(filters) || digestStructuralMatchCount(digest, filters) > 0;\n\nconst toDigestHit = (\n digest: DigestShard,\n score: number,\n matchedTerms: number,\n matchedStructuralEntries = 0,\n): DigestHit => ({\n sessionId: digest.sessionId,\n sessionFile: digest.file,\n sourceHash: digest.sourceHash,\n branches: digest.branches,\n lineageFingerprint: digest.lineageFingerprint,\n cwd: digest.cwd,\n lastTs: digest.lastTs,\n sessionMtime: digest.mtime,\n score,\n tier: \"cold\",\n matchedTerms,\n matchedStructuralEntries,\n});\n\nconst scoreDigestTerms = (\n digests: DigestShard[],\n terms: string[],\n filters: SearchFilters,\n maxDigests: number,\n match: MemoryQueryMatch,\n): { hits: DigestHit[]; complete: boolean } => {\n if (digests.length === 0 || terms.length === 0) return { hits: [], complete: true };\n const candidates: Array<{ digest: DigestShard; matches: string[]; structuralMatches: number }> = [];\n let matchingDigests = 0;\n for (const digest of digests) {\n if (!digestCanMatchFilters(digest, filters)) continue;\n const vocabulary = new Set(digest.vocabulary);\n const matches = terms.filter((term) => vocabulary.has(term));\n if (matches.length === 0 || (match === \"all\" && matches.length !== terms.length)) continue;\n matchingDigests += 1;\n if (candidates.length < maxDigests) {\n candidates.push({\n digest,\n matches,\n structuralMatches: digestStructuralMatchCount(digest, filters),\n });\n }\n }\n const documentFrequency = new Map<string, number>();\n for (const candidate of candidates) {\n for (const term of candidate.matches) {\n documentFrequency.set(term, (documentFrequency.get(term) ?? 0) + 1);\n }\n }\n\n const hits = candidates.map((candidate) => {\n const score = candidate.matches.reduce((total, term) => {\n const df = documentFrequency.get(term) ?? 0;\n return total + Math.log((candidates.length - df + 0.5) / (df + 0.5) + 1);\n }, 0);\n return toDigestHit(\n candidate.digest,\n score,\n candidate.matches.length,\n candidate.structuralMatches,\n );\n });\n return { hits, complete: matchingDigests <= maxDigests };\n};\n\ninterface RegexHotTarget {\n kind: \"hot\";\n shard: Shard;\n entry: NormalizedEntry;\n}\n\ninterface RegexColdTarget {\n kind: \"cold\";\n digest: DigestShard;\n}\n\ntype RegexTarget = RegexHotTarget | RegexColdTarget;\n\nconst collectRegexTargets = (\n shards: Shard[],\n digests: DigestShard[],\n filters: SearchFilters,\n maxTerms: number,\n maxBytes: number,\n): { haystacks: string[]; targets: RegexTarget[]; complete: boolean; reasons: string[] } => {\n const haystacks: string[] = [];\n const targets: RegexTarget[] = [];\n let bytes = 0;\n let complete = true;\n const reasons = new Set<string>();\n const append = (haystack: string, target: RegexTarget): boolean => {\n const nextBytes = Buffer.byteLength(haystack, \"utf8\");\n if (haystacks.length >= maxTerms) {\n complete = false;\n reasons.add(\"regex_max_haystack_terms\");\n return false;\n }\n if (bytes + nextBytes > maxBytes) {\n complete = false;\n reasons.add(\"regex_max_haystack_bytes\");\n return false;\n }\n haystacks.push(haystack);\n targets.push(target);\n bytes += nextBytes;\n return true;\n };\n\n outer: for (const shard of shards) {\n for (const entry of shard.entries) {\n if (!matchesFilters(entry, filters)) continue;\n if (!append(entry.text, { kind: \"hot\", shard, entry })) break outer;\n }\n }\n if (complete) {\n outer: for (const digest of digests) {\n if (!digestCanMatchFilters(digest, filters)) continue;\n for (const term of digest.vocabulary) {\n if (!append(term, { kind: \"cold\", digest })) break outer;\n }\n }\n }\n return { haystacks, targets, complete, reasons: [...reasons].sort(compareLexical) };\n};\n\nconst searchRegex = async (\n shards: Shard[],\n digests: DigestShard[],\n pattern: string,\n filters: SearchFilters,\n query: SearchQuery,\n): Promise<{ located: LocatedEntry[]; digestHits: DigestHit[]; coverage: QueryCoverage }> => {\n const limits = query.regexLimits ?? {\n maxPatternBytes: DEFAULT_REGEX_MAX_PATTERN_BYTES,\n maxHaystackTerms: DEFAULT_REGEX_MAX_HAYSTACK_TERMS,\n maxHaystackBytes: DEFAULT_REGEX_MAX_HAYSTACK_BYTES,\n timeoutMs: DEFAULT_REGEX_TIMEOUT_MS,\n };\n const collected = collectRegexTargets(\n shards,\n digests,\n filters,\n limits.maxHaystackTerms,\n limits.maxHaystackBytes,\n );\n const execution = await executeBoundedRegex(pattern, collected.haystacks, {\n maxPatternBytes: limits.maxPatternBytes,\n timeoutMs: limits.timeoutMs,\n });\n if (!execution.complete) {\n return {\n located: [],\n digestHits: [],\n coverage: { complete: false, reasons: [execution.error.code], error: execution.error },\n };\n }\n\n const located: LocatedEntry[] = [];\n const coldMatches = new Map<DigestShard, number>();\n for (const index of execution.matched) {\n const target = collected.targets[index];\n if (!target) continue;\n if (target.kind === \"hot\") {\n located.push({\n entry: target.entry,\n matched: true,\n sessionMtime: target.shard.mtime,\n score: lexicalProvenanceWeight(target.entry, filters),\n });\n } else {\n coldMatches.set(target.digest, (coldMatches.get(target.digest) ?? 0) + 1);\n }\n }\n const reasons = new Set(collected.reasons);\n if (coldMatches.size > 0 && hasFilters(filters)) {\n reasons.add(\"cold_structural_filter_requires_hydration\");\n }\n return {\n located,\n digestHits: [...coldMatches].map(([digest, count]) =>\n toDigestHit(digest, count, count, digestStructuralMatchCount(digest, filters))),\n coverage: {\n complete: collected.complete && reasons.size === 0,\n reasons: [...reasons].sort(compareLexical),\n },\n };\n};\n\nconst sortDigestHits = (hits: DigestHit[]): void => {\n hits.sort((left, right) => {\n if (right.score !== left.score) return right.score - left.score;\n if (right.sessionMtime !== left.sessionMtime) return right.sessionMtime - left.sessionMtime;\n return compareLexical(left.sessionFile, right.sessionFile);\n });\n};\n\nexport const searchMemoryIndex = async (\n shards: Shard[],\n digests: DigestShard[],\n query: SearchQuery,\n): Promise<SearchResult> => {\n const filters: SearchFilters = query.filters ?? {};\n const plan = planMemoryQuery(\n query.query,\n query.queryMode ?? \"literal\",\n query.queryMatch ?? \"any\",\n );\n const limits = query.candidateLimits ?? {\n maxEntries: DEFAULT_SEARCH_MAX_CANDIDATE_ENTRIES,\n maxDigests: DEFAULT_SEARCH_MAX_CANDIDATE_DIGESTS,\n maxItems: DEFAULT_SEARCH_MAX_CANDIDATE_ITEMS,\n };\n const maxEntries = Math.max(1, Math.floor(limits.maxEntries));\n const maxDigests = Math.max(1, Math.floor(limits.maxDigests));\n const maxItems = Math.max(1, Math.floor(limits.maxItems));\n let located: LocatedEntry[];\n let digestHits: DigestHit[] = [];\n let queryCoverage: QueryCoverage = { complete: true, reasons: [] };\n const structurallyFiltered = hasFilters(filters);\n const matchMode: MemoryMatchMode = plan.kind === \"browse\"\n ? structurallyFiltered ? \"structural\" : \"browse\"\n : structurallyFiltered\n ? \"combined\"\n : plan.kind === \"regex\"\n ? \"regex\"\n : plan.kind === \"phrase\"\n ? \"phrase\"\n : \"lexical\";\n const markOnlyMatches = plan.kind !== \"browse\" || structurallyFiltered;\n const coverageReasons = new Set<string>();\n\n if (plan.kind === \"browse\") {\n const eligibleEntries = filteredEntryCount(shards, filters);\n located = collectRecent(shards, filters, maxEntries, structurallyFiltered ? 1 : 0);\n if (eligibleEntries > maxEntries) coverageReasons.add(\"candidate_entry_budget\");\n let eligibleDigests = 0;\n for (const digest of digests) {\n if (!digestCanMatchFilters(digest, filters)) continue;\n eligibleDigests += 1;\n if (digestHits.length < maxDigests) {\n const structuralMatches = digestStructuralMatchCount(digest, filters);\n digestHits.push(toDigestHit(\n digest,\n structurallyFiltered ? 1 : 0,\n 0,\n structuralMatches,\n ));\n }\n }\n if (eligibleDigests > maxDigests) coverageReasons.add(\"candidate_digest_budget\");\n } else if (plan.kind === \"regex\") {\n const regexResult = await searchRegex(shards, digests, plan.pattern, filters, query);\n located = regexResult.located.slice(0, maxEntries);\n digestHits = regexResult.digestHits.slice(0, maxDigests);\n queryCoverage = regexResult.coverage;\n if (regexResult.located.length > maxEntries) coverageReasons.add(\"candidate_entry_budget\");\n if (regexResult.digestHits.length > maxDigests) coverageReasons.add(\"candidate_digest_budget\");\n sortLocated(located);\n } else if (plan.kind === \"phrase\") {\n const eligibleEntries = filteredEntryCount(shards, filters);\n located = collectPhraseMatches(shards, plan.phrase, filters, maxEntries);\n if (eligibleEntries > maxEntries) coverageReasons.add(\"candidate_entry_budget\");\n const digestResult = scoreDigestTerms(digests, plan.terms, filters, maxDigests, \"all\");\n digestHits = digestResult.hits;\n if (!digestResult.complete) coverageReasons.add(\"candidate_digest_budget\");\n if (digestHits.length > 0) coverageReasons.add(\"cold_phrase_requires_hydration\");\n if (digestHits.length > 0 && hasFilters(filters)) {\n coverageReasons.add(\"cold_structural_filter_requires_hydration\");\n }\n } else {\n const eligibleEntries = filteredEntryCount(shards, filters);\n located = collectTermMatches(shards, plan.terms, filters, maxEntries, plan.match);\n if (eligibleEntries > maxEntries) coverageReasons.add(\"candidate_entry_budget\");\n const digestResult = scoreDigestTerms(digests, plan.terms, filters, maxDigests, plan.match);\n digestHits = digestResult.hits;\n if (!digestResult.complete) coverageReasons.add(\"candidate_digest_budget\");\n if (digestHits.length > 0 && plan.match === \"all\" && plan.terms.length > 1) {\n coverageReasons.add(\"cold_all_terms_requires_hydration\");\n }\n if (digestHits.length > 0 && hasFilters(filters)) {\n coverageReasons.add(\"cold_structural_filter_requires_hydration\");\n }\n }\n\n sortDigestHits(digestHits);\n for (const reason of queryCoverage.reasons) coverageReasons.add(reason);\n queryCoverage = {\n ...queryCoverage,\n complete: queryCoverage.complete && coverageReasons.size === 0,\n reasons: [...coverageReasons].sort(compareLexical),\n };\n return groupIntoResults(\n shards,\n located,\n digestHits,\n markOnlyMatches,\n matchMode,\n maxItems,\n queryCoverage,\n );\n};\n\nexport const searchShards = (shards: Shard[], query: SearchQuery): Promise<SearchResult> =>\n searchMemoryIndex(shards, [], query);\n\nconst groupIntoResults = (\n shards: Shard[],\n located: LocatedEntry[],\n digestHits: DigestHit[],\n markOnlyMatches: boolean,\n matchMode: MemoryMatchMode,\n maxItems: number,\n queryCoverage: QueryCoverage,\n): SearchResult => {\n if (located.length === 0 && digestHits.length === 0) {\n return {\n matchMode,\n matchedCount: 0,\n totalMatches: 0,\n totalItems: 0,\n segmentCount: 0,\n segments: [],\n digestHits: [],\n items: [],\n queryCoverage,\n };\n }\n\n const shardsByFile = new Map(shards.map((shard) => [shard.sessionFile, shard]));\n const sessionOrder: string[] = [];\n const matchedBySession = new Map<string, Set<number>>();\n const scores = new Map<string, number>();\n for (const item of located) {\n if (!matchedBySession.has(item.entry.sessionFile)) sessionOrder.push(item.entry.sessionFile);\n const set = matchedBySession.get(item.entry.sessionFile) ?? new Set<number>();\n set.add(item.entry.index);\n matchedBySession.set(item.entry.sessionFile, set);\n scores.set(`${item.entry.sessionFile}\\0${item.entry.index}`, item.score);\n }\n\n const segments: SearchSegment[] = [];\n for (const file of sessionOrder) {\n const shard = shardsByFile.get(file);\n const matchedSet = matchedBySession.get(file);\n if (!shard || !matchedSet) continue;\n let current: NormalizedEntry[] = [];\n let currentStart = 0;\n const flush = (): void => {\n if (current.length === 0) return;\n const entries: SearchSegmentEntry[] = current.map((entry) => {\n const matched = matchedSet.has(entry.index);\n return {\n entry,\n matched,\n marker: markOnlyMatches ? (matched ? \">\" : \" \") : \">\",\n score: matched ? scores.get(`${file}\\0${entry.index}`) ?? 0 : 0,\n };\n });\n const matchedEntries = entries.filter((entry) => entry.matched);\n if (markOnlyMatches && matchedEntries.length === 0) {\n current = [];\n return;\n }\n const lastIndex = current[current.length - 1]!.index;\n const range = lastIndex === currentStart ? `#${currentStart}` : `#${currentStart}-#${lastIndex}`;\n const score = Math.max(\n 0,\n ...matchedEntries.map((item) => scores.get(`${file}\\0${item.entry.index}`) ?? 0),\n );\n segments.push({\n sessionId: shard.sessionId,\n sessionFile: shard.sessionFile,\n sourceHash: shard.sourceHash,\n branches: shard.branches,\n lineageFingerprint: shard.lineageFingerprint,\n sessionMtime: shard.mtime,\n range,\n entryRange: { first: currentStart, last: lastIndex },\n entries,\n exactMatches: matchedEntries.map(({ entry }) => ({\n index: entry.index,\n entryId: entry.entryId,\n operationAddress: entry.operationAddress ?? null,\n })),\n matchedCount: matchedEntries.length,\n score,\n tier: shard.tier ?? \"hot\",\n });\n current = [];\n };\n\n for (const entry of shard.entries) {\n if (current.length > 0 && entry.role !== null && segmentStartRoles.has(entry.role)) flush();\n if (current.length === 0) currentStart = entry.index;\n current.push(entry);\n }\n flush();\n }\n\n const items: SearchItem[] = [\n ...segments.map((segment): SearchItem => ({ kind: \"entry\", segment })),\n ...digestHits.map((digest): SearchItem => ({ kind: \"digest\", digest })),\n ];\n items.sort(compareSearchItems);\n const candidateItemsExceeded = items.length > maxItems;\n const limitedItems = items.slice(0, maxItems);\n const limitedSegments = limitedItems\n .filter((item): item is { kind: \"entry\"; segment: SearchSegment } => item.kind === \"entry\")\n .map((item) => item.segment);\n const limitedDigests = limitedItems\n .filter((item): item is { kind: \"digest\"; digest: DigestHit } => item.kind === \"digest\")\n .map((item) => item.digest);\n const matchedCount = limitedSegments.reduce((sum, segment) => sum + segment.matchedCount, 0)\n + limitedDigests.length;\n const finalCoverage = candidateItemsExceeded\n ? {\n ...queryCoverage,\n complete: false,\n reasons: [...new Set([...queryCoverage.reasons, \"candidate_item_budget\"])].sort(compareLexical),\n }\n : queryCoverage;\n return {\n matchMode,\n matchedCount,\n totalMatches: matchedCount,\n totalItems: limitedItems.length,\n segmentCount: limitedSegments.length,\n segments: limitedSegments,\n digestHits: limitedDigests,\n items: limitedItems,\n queryCoverage: finalCoverage,\n };\n};\n\nconst compareSearchItems = (left: SearchItem, right: SearchItem): number => {\n const leftValue = left.kind === \"entry\" ? left.segment : left.digest;\n const rightValue = right.kind === \"entry\" ? right.segment : right.digest;\n if (rightValue.score !== leftValue.score) return rightValue.score - leftValue.score;\n if (rightValue.sessionMtime !== leftValue.sessionMtime) return rightValue.sessionMtime - leftValue.sessionMtime;\n if (left.kind !== right.kind) return left.kind === \"entry\" ? -1 : 1;\n if (left.kind === \"entry\" && right.kind === \"entry\") {\n const leftIndex = left.segment.entries[0]?.entry.index ?? 0;\n const rightIndex = right.segment.entries[0]?.entry.index ?? 0;\n if (leftIndex !== rightIndex) return leftIndex - rightIndex;\n return compareLexical(left.segment.sessionFile, right.segment.sessionFile);\n }\n if (left.kind === \"digest\" && right.kind === \"digest\") {\n return compareLexical(left.digest.sessionFile, right.digest.sessionFile);\n }\n return 0;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["crypto", "fs", "path", "crypto", "fs", "matchesFilters"]
7
+ }
@@ -0,0 +1,354 @@
1
+ // src/ui/fabric-code-parser.ts
2
+ var identifierStart = (char) => /[A-Za-z_$payloads]/u.test(char);
3
+ var identifierPart = (char) => /[A-Za-z0-9_$payloads]/u.test(char);
4
+ var readEscape = (source, index) => {
5
+ const char = source[index];
6
+ if (char === void 0) return { value: "", next: index };
7
+ const simple = {
8
+ n: "\n",
9
+ r: "\r",
10
+ t: " ",
11
+ b: "\b",
12
+ f: "\f",
13
+ v: "\v",
14
+ 0: "\0"
15
+ };
16
+ if (char in simple) return { value: simple[char], next: index + 1 };
17
+ if (char === "\n") return { value: "", next: index + 1 };
18
+ if (char === "\r") return { value: "", next: source[index + 1] === "\n" ? index + 2 : index + 1 };
19
+ if (char === "x") {
20
+ const digits = source.slice(index + 1, index + 3);
21
+ if (/^[0-9a-f]{2}$/i.test(digits)) return { value: String.fromCharCode(Number.parseInt(digits, 16)), next: index + 3 };
22
+ }
23
+ if (char === "u") {
24
+ if (source[index + 1] === "{") {
25
+ const end = source.indexOf("}", index + 2);
26
+ const digits2 = end < 0 ? "" : source.slice(index + 2, end);
27
+ if (/^[0-9a-f]{1,6}$/i.test(digits2)) {
28
+ return { value: String.fromCodePoint(Number.parseInt(digits2, 16)), next: end + 1 };
29
+ }
30
+ }
31
+ const digits = source.slice(index + 1, index + 5);
32
+ if (/^[0-9a-f]{4}$/i.test(digits)) return { value: String.fromCharCode(Number.parseInt(digits, 16)), next: index + 5 };
33
+ }
34
+ return { value: char, next: index + 1 };
35
+ };
36
+ var tokenize = (source) => {
37
+ const tokens = [];
38
+ let index = 0;
39
+ while (index < source.length) {
40
+ const char = source[index];
41
+ if (/\s/u.test(char)) {
42
+ index++;
43
+ continue;
44
+ }
45
+ if (char === "/" && source[index + 1] === "/") {
46
+ index = source.indexOf("\n", index + 2);
47
+ if (index < 0) break;
48
+ continue;
49
+ }
50
+ if (char === "/" && source[index + 1] === "*") {
51
+ const end = source.indexOf("*/", index + 2);
52
+ index = end < 0 ? source.length : end + 2;
53
+ continue;
54
+ }
55
+ if (char === "'" || char === '"' || char === "`") {
56
+ const quote = char;
57
+ let value = "";
58
+ let dynamicTemplate = false;
59
+ index++;
60
+ while (index < source.length) {
61
+ const current = source[index];
62
+ if (current === quote) {
63
+ index++;
64
+ break;
65
+ }
66
+ if (quote === "`" && current === "$" && source[index + 1] === "{") dynamicTemplate = true;
67
+ if (current === "\\") {
68
+ const escaped = readEscape(source, index + 1);
69
+ value += escaped.value;
70
+ index = escaped.next;
71
+ continue;
72
+ }
73
+ value += current;
74
+ index++;
75
+ }
76
+ if (!dynamicTemplate) tokens.push({ kind: "string", text: value });
77
+ continue;
78
+ }
79
+ if (identifierStart(char)) {
80
+ const start = index++;
81
+ while (index < source.length && identifierPart(source[index])) index++;
82
+ tokens.push({ kind: "identifier", text: source.slice(start, index) });
83
+ continue;
84
+ }
85
+ tokens.push({ kind: "punctuation", text: char });
86
+ index++;
87
+ }
88
+ return tokens;
89
+ };
90
+ var fabricStringLiterals = (code) => tokenize(code).filter((token) => token.kind === "string").map((token) => token.text);
91
+ var propertyName = (token) => token?.kind === "identifier" || token?.kind === "string" ? token.text : void 0;
92
+ var namedStringKey = (tokens, start, end) => {
93
+ if (tokens[start]?.text !== "payloads" && tokens[start]?.text !== "omp") return void 0;
94
+ if (tokens[start + 1]?.text === "." && tokens[start + 2]?.kind === "identifier" && start + 3 === end) {
95
+ return tokens[start + 2].text;
96
+ }
97
+ if (tokens[start + 1]?.text === "[" && tokens[start + 2]?.kind === "string" && tokens[start + 3]?.text === "]" && start + 4 === end) {
98
+ return tokens[start + 2].text;
99
+ }
100
+ return void 0;
101
+ };
102
+ var objectBinding = (tokens, start) => {
103
+ let depth = 1;
104
+ let index = start + 1;
105
+ let path;
106
+ let stringKey;
107
+ while (index < tokens.length && depth > 0) {
108
+ if (tokens[index]?.text === "{") {
109
+ depth++;
110
+ index++;
111
+ continue;
112
+ }
113
+ if (tokens[index]?.text === "}") {
114
+ depth--;
115
+ index++;
116
+ continue;
117
+ }
118
+ if (depth !== 1) {
119
+ index++;
120
+ continue;
121
+ }
122
+ const name = propertyName(tokens[index]);
123
+ if (!name || tokens[index + 1]?.text !== ":") {
124
+ index++;
125
+ continue;
126
+ }
127
+ const valueStart = index + 2;
128
+ let valueEnd = valueStart;
129
+ let nested = 0;
130
+ while (valueEnd < tokens.length) {
131
+ const text = tokens[valueEnd].text;
132
+ if (nested === 0 && (text === "," || text === "}")) break;
133
+ if (text === "(" || text === "[" || text === "{") nested++;
134
+ else if (text === ")" || text === "]" || text === "}") nested--;
135
+ valueEnd++;
136
+ }
137
+ if (["path", "file", "file_path"].includes(name) && valueEnd === valueStart + 1 && tokens[valueStart]?.kind === "string") {
138
+ path = tokens[valueStart].text;
139
+ } else if (["content", "text", "contents"].includes(name)) {
140
+ stringKey = namedStringKey(tokens, valueStart, valueEnd);
141
+ }
142
+ index = valueEnd;
143
+ }
144
+ return path !== void 0 && stringKey !== void 0 ? { binding: { path, stringKey }, next: index } : { next: index };
145
+ };
146
+ var fabricWriteBindings = (code) => {
147
+ const tokens = tokenize(code);
148
+ const bindings = [];
149
+ for (let index = 0; index < tokens.length - 5; index++) {
150
+ if (tokens[index]?.text !== "omp" || tokens[index + 1]?.text !== "." || tokens[index + 2]?.text !== "write" || tokens[index + 3]?.text !== "(" || tokens[index + 4]?.text !== "{") continue;
151
+ const parsed = objectBinding(tokens, index + 4);
152
+ if (parsed.binding) bindings.push(parsed.binding);
153
+ index = parsed.next - 1;
154
+ }
155
+ return bindings;
156
+ };
157
+ var TITLE_MAX_CHARS = 80;
158
+ var TITLE_MAX_ANCHOR_CHARS = 40;
159
+ var TITLE_MAX_COMMAND_CHARS = 30;
160
+ var TITLE_MAX_TASK_CHARS = 40;
161
+ var TITLE_MAX_PATTERN_CHARS = 24;
162
+ var TITLE_MAX_KEY_CHARS = 24;
163
+ var TITLE_MAX_WINDOW_TOKENS = 96;
164
+ var TITLE_SAFE_ANCHOR = /^[A-Za-z0-9_./~@*+,-]+$/;
165
+ var TITLE_FILE_LIKE = /\.[A-Za-z0-9]{1,8}$/;
166
+ var OMP_VERB_LABELS = {
167
+ read: "Read",
168
+ bash: "Shell",
169
+ edit: "Edit",
170
+ write: "Write",
171
+ grep: "Search",
172
+ find: "Search",
173
+ ls: "Search"
174
+ };
175
+ var ROOT_VERB_LABELS = {
176
+ agents: "Agent",
177
+ memory: "Memory",
178
+ state: "State",
179
+ schema: "Schema",
180
+ compact: "Compact",
181
+ mesh: "Mesh",
182
+ tools: "Tools"
183
+ };
184
+ var TITLE_PATH_KEYS = /* @__PURE__ */ new Set(["path", "file", "file_path"]);
185
+ var humanizeIdentifier = (value) => value.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/^./, (char) => char.toUpperCase());
186
+ var titleAnchorPathLike = (value) => value.length > 0 && value.length <= 64 && TITLE_SAFE_ANCHOR.test(value) && (value.includes("/") || TITLE_FILE_LIKE.test(value) || value.includes("*"));
187
+ var titleBasename = (value) => value.split("/").filter(Boolean).pop() ?? value;
188
+ var titleClip = (value, maxChars) => value.length > maxChars ? `${value.slice(0, maxChars - 1)}\u2026` : value;
189
+ var clipWords = (value, maxChars) => {
190
+ if (value.length <= maxChars) return value;
191
+ const cut = value.slice(0, maxChars - 1);
192
+ const space = cut.lastIndexOf(" ");
193
+ return `${space > 0 ? cut.slice(0, space) : cut}\u2026`;
194
+ };
195
+ var callWindow = (tokens, openIndex) => {
196
+ let depth = 0;
197
+ let end = openIndex;
198
+ while (end < tokens.length && end - openIndex < TITLE_MAX_WINDOW_TOKENS) {
199
+ const text = tokens[end].text;
200
+ if (text === "(" || text === "[" || text === "{") depth++;
201
+ else if (text === ")" || text === "]" || text === "}") {
202
+ depth--;
203
+ if (depth <= 0) break;
204
+ }
205
+ end++;
206
+ }
207
+ return { start: openIndex + 1, end };
208
+ };
209
+ var isNamedStringToken = (tokens, index) => tokens[index]?.kind === "string" && tokens[index - 1]?.text === "[" && tokens[index - 2]?.text === "payloads";
210
+ var windowKeyedString = (tokens, start, end, keys) => {
211
+ for (let index = start; index < end; index++) {
212
+ if (tokens[index]?.kind !== "string" || isNamedStringToken(tokens, index)) continue;
213
+ if (tokens[index - 1]?.text !== ":") continue;
214
+ const key = propertyName(tokens[index - 2]);
215
+ if (key === void 0 || !(typeof keys === "string" ? key === keys : keys.has(key))) continue;
216
+ return tokens[index].text;
217
+ }
218
+ return void 0;
219
+ };
220
+ var windowFirstString = (tokens, start, end) => {
221
+ for (let index = start; index < end; index++) {
222
+ if (tokens[index]?.kind === "string" && !isNamedStringToken(tokens, index)) return tokens[index].text;
223
+ }
224
+ return void 0;
225
+ };
226
+ var windowPathLike = (tokens, start, end) => {
227
+ for (let index = start; index < end; index++) {
228
+ if (tokens[index]?.kind === "string" && !isNamedStringToken(tokens, index) && titleAnchorPathLike(tokens[index].text)) {
229
+ return tokens[index].text;
230
+ }
231
+ }
232
+ return void 0;
233
+ };
234
+ var dirQualifier = (value) => TITLE_FILE_LIKE.test(titleBasename(value)) ? titleClip(titleBasename(value), TITLE_MAX_ANCHOR_CHARS) : TITLE_SAFE_ANCHOR.test(value) && value !== "." && value.length <= TITLE_MAX_ANCHOR_CHARS ? value : void 0;
235
+ var searchTarget = (tokens, start, end) => {
236
+ const pattern = windowKeyedString(tokens, start, end, "pattern");
237
+ let head;
238
+ if (pattern !== void 0) {
239
+ if (titleAnchorPathLike(pattern)) head = titleClip(titleBasename(pattern), TITLE_MAX_ANCHOR_CHARS);
240
+ else if (TITLE_SAFE_ANCHOR.test(pattern) && pattern.length <= TITLE_MAX_PATTERN_CHARS) head = `"${pattern}"`;
241
+ }
242
+ const pathValue = windowKeyedString(tokens, start, end, TITLE_PATH_KEYS);
243
+ let tail = pathValue !== void 0 ? dirQualifier(pathValue) : void 0;
244
+ if (tail === void 0 && pathValue === void 0) {
245
+ const positional = windowFirstString(tokens, start, end);
246
+ if (positional !== void 0 && TITLE_SAFE_ANCHOR.test(positional) && positional.length <= TITLE_MAX_ANCHOR_CHARS) {
247
+ tail = titleAnchorPathLike(positional) ? titleClip(titleBasename(positional), TITLE_MAX_ANCHOR_CHARS) : positional;
248
+ }
249
+ }
250
+ if (head !== void 0 && tail !== void 0) return `${head} in ${tail}`;
251
+ return head ?? tail;
252
+ };
253
+ var pathTarget = (tokens, start, end) => {
254
+ const keyed = windowKeyedString(tokens, start, end, TITLE_PATH_KEYS);
255
+ if (keyed !== void 0 && TITLE_FILE_LIKE.test(titleBasename(keyed))) {
256
+ return titleClip(titleBasename(keyed), TITLE_MAX_ANCHOR_CHARS);
257
+ }
258
+ const loose = windowPathLike(tokens, start, end);
259
+ if (loose !== void 0) return titleClip(titleBasename(loose), TITLE_MAX_ANCHOR_CHARS);
260
+ return keyed !== void 0 ? dirQualifier(keyed) : void 0;
261
+ };
262
+ var ompCallTarget = (label, tokens, start, end) => {
263
+ if (label === "Shell") {
264
+ const command = windowFirstString(tokens, start, end);
265
+ return command !== void 0 ? titleClip(command.split("\n")[0], TITLE_MAX_COMMAND_CHARS) : void 0;
266
+ }
267
+ if (label === "Search") return searchTarget(tokens, start, end);
268
+ return pathTarget(tokens, start, end);
269
+ };
270
+ var fabricExecTitleHint = (code) => {
271
+ const tokens = tokenize(code);
272
+ const groups = /* @__PURE__ */ new Map();
273
+ const record = (verb, target) => {
274
+ const list = groups.get(verb);
275
+ if (list) list.push(target);
276
+ else groups.set(verb, [target]);
277
+ };
278
+ for (let index = 0; index < tokens.length; index++) {
279
+ const token = tokens[index];
280
+ if (token.kind !== "identifier") continue;
281
+ if ((token.text === "agents" || token.text === "compact") && tokens[index + 1]?.text === "(") {
282
+ const window = callWindow(tokens, index + 1);
283
+ const target = token.text === "agents" ? (() => {
284
+ const task = windowKeyedString(tokens, window.start, window.end, "task");
285
+ return task !== void 0 ? clipWords(task.split("\n")[0], TITLE_MAX_TASK_CHARS) : void 0;
286
+ })() : void 0;
287
+ record(ROOT_VERB_LABELS[token.text], target);
288
+ continue;
289
+ }
290
+ const dot = tokens[index + 1];
291
+ const leaf = tokens[index + 2];
292
+ if (dot?.text !== "." || leaf?.kind !== "identifier") continue;
293
+ if (token.text === "omp" && tokens[index + 3]?.text === "(") {
294
+ const label = OMP_VERB_LABELS[leaf.text] ?? humanizeIdentifier(leaf.text);
295
+ const window = callWindow(tokens, index + 3);
296
+ record(label, ompCallTarget(label, tokens, window.start, window.end));
297
+ continue;
298
+ }
299
+ if (token.text === "mcp" && tokens[index + 3]?.text === "." && tokens[index + 4]?.kind === "identifier" && tokens[index + 5]?.text === "(") {
300
+ record("Mcp", `${leaf.text}.${tokens[index + 4].text}`);
301
+ continue;
302
+ }
303
+ if (tokens[index + 3]?.text === "(") {
304
+ const label = ROOT_VERB_LABELS[token.text];
305
+ if (!label) continue;
306
+ if (token.text === "memory" || token.text === "state") {
307
+ const window = callWindow(tokens, index + 3);
308
+ const key = windowKeyedString(tokens, window.start, window.end, "key");
309
+ record(label, key !== void 0 ? clipWords(key.split("\n")[0], TITLE_MAX_KEY_CHARS) : void 0);
310
+ } else {
311
+ record(label, void 0);
312
+ }
313
+ }
314
+ }
315
+ if (groups.size === 0) return void 0;
316
+ const segments = [];
317
+ for (const [verb, targets] of groups) {
318
+ const first = targets.find((target) => target !== void 0);
319
+ let segment = verb;
320
+ if (first !== void 0) {
321
+ segment = `${verb} ${first}`;
322
+ if (targets.length > 1) {
323
+ segment += targets.every((target) => target === first) ? ` \xD7${targets.length}` : ` +${targets.length - 1}`;
324
+ }
325
+ } else if (targets.length > 1) {
326
+ segment += ` \xD7${targets.length}`;
327
+ }
328
+ segments.push(segment);
329
+ }
330
+ let title;
331
+ let overflow = false;
332
+ for (const segment of segments) {
333
+ if (title === void 0) {
334
+ title = segment.length <= TITLE_MAX_CHARS ? segment : clipWords(segment, TITLE_MAX_CHARS);
335
+ continue;
336
+ }
337
+ const candidate = `${title} + ${segment}`;
338
+ if (candidate.length <= TITLE_MAX_CHARS) {
339
+ title = candidate;
340
+ continue;
341
+ }
342
+ overflow = true;
343
+ break;
344
+ }
345
+ if (overflow && title !== void 0 && title.length + 3 <= TITLE_MAX_CHARS) title = `${title} +\u2026`;
346
+ return title;
347
+ };
348
+
349
+ export {
350
+ fabricStringLiterals,
351
+ fabricWriteBindings,
352
+ fabricExecTitleHint
353
+ };
354
+ //# sourceMappingURL=chunk-3J7BKUNG.js.map