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/ui/conversation-native-reader.ts"],
4
+ "sourcesContent": ["import fs from \"node:fs\";\nimport type { SessionEntry, SessionMessageEntry } from \"@oh-my-pi/pi-coding-agent\";\nimport type { AssistantMessage } from \"@oh-my-pi/pi-ai\";\n\nconst isCustomMessageContent = (content: unknown): boolean =>\n typeof content === \"string\" || Array.isArray(content);\n\nconst customMessageFromEntry = (entry: Extract<SessionEntry, { type: \"custom_message\" }>): NativeAgentMessage => ({\n role: \"custom\",\n customType: entry.customType,\n content: entry.content,\n display: entry.display,\n ...(entry.details !== undefined ? { details: entry.details } : {}),\n ...(entry.attribution !== undefined ? { attribution: entry.attribution } : {}),\n timestamp: new Date(entry.timestamp).getTime(),\n});\n\nconst compactionSummaryMessage = (entry: Extract<SessionEntry, { type: \"compaction\" }>): NativeAgentMessage => ({\n role: \"compactionSummary\",\n summary: entry.summary,\n ...(entry.shortSummary !== undefined ? { shortSummary: entry.shortSummary } : {}),\n tokensBefore: entry.tokensBefore,\n ...(entry.tokensAfter !== undefined ? { tokensAfter: entry.tokensAfter } : {}),\n ...(entry.method !== undefined ? { method: entry.method } : {}),\n ...(entry.warning !== undefined ? { warning: entry.warning } : {}),\n timestamp: new Date(entry.timestamp).getTime(),\n});\n\nconst branchSummaryMessage = (entry: Extract<SessionEntry, { type: \"branch_summary\" }>): NativeAgentMessage => ({\n role: \"branchSummary\",\n summary: entry.summary,\n fromId: entry.fromId,\n timestamp: new Date(entry.timestamp).getTime(),\n});\n\nconst buildContextEntries = (entries: SessionEntry[], leafId: string, byId: Map<string, SessionEntry>): SessionEntry[] => {\n const path: SessionEntry[] = [];\n const seen = new Set<string>();\n let current = byId.get(leafId);\n while (current && !seen.has(current.id)) {\n seen.add(current.id);\n path.push(current);\n current = current.parentId ? byId.get(current.parentId) : undefined;\n }\n path.reverse();\n let compactionIdx = -1;\n for (let index = 0; index < path.length; index++) {\n if (path[index]?.type === \"compaction\") compactionIdx = index;\n }\n if (compactionIdx < 0) return path;\n const compaction = path[compactionIdx] as Extract<SessionEntry, { type: \"compaction\" }>;\n const keptStart = path.findIndex((candidate) => candidate.id === compaction.firstKeptEntryId);\n const kept = keptStart >= 0 ? path.slice(keptStart, compactionIdx) : [];\n return [compaction, ...kept, ...path.slice(compactionIdx + 1)];\n};\n\nconst buildSessionContext = (\n entries: SessionEntry[],\n leafId: string,\n byId: Map<string, SessionEntry>,\n): { messages: NativeAgentMessage[] } => {\n const messages: NativeAgentMessage[] = [];\n let activeSummaryEmitted = false;\n for (const entry of buildContextEntries(entries, leafId, byId)) {\n if (entry.type === \"message\") {\n messages.push(entry.message);\n } else if (entry.type === \"compaction\") {\n if (activeSummaryEmitted) continue;\n activeSummaryEmitted = true;\n messages.push(compactionSummaryMessage(entry));\n } else if (entry.type === \"custom_message\") {\n if (isCustomMessageContent(entry.content)) messages.push(customMessageFromEntry(entry));\n } else if (entry.type === \"branch_summary\" && entry.summary) {\n messages.push(branchSummaryMessage(entry));\n }\n }\n return { messages };\n};\n\n// Native OMP conversation transcript reader.\n//\n// Unlike the dashboard's FabricTranscriptEntry pipeline (transcript-reader.ts +\n// transcript-parser.ts), which flattens, clips (500/40k char caps), redacts and\n// drops fields, this reader preserves the native OMP AgentMessage union intact:\n//\n// - user messages with text AND image content blocks\n// - assistant thinking blocks, tool calls with full arguments\n// - tool results with full content, details and error flags\n// - native bashExecution / custom / branchSummary / compactionSummary messages\n// - session entry tree semantics (branch via leaf\u2192root walk, compaction\n// checkpoints, branch summaries) using OMP's own buildContextEntries +\n// sessionEntryToContextMessages \u2014 the same display projection interactive\n// mode's renderSessionItems consumes, with native summary roles preserved.\n// - live streaming from the worker RPC event log (events.jsonl): partial\n// assistant assembly from message_start/message_update deltas, full\n// tool_execution_{start,update,end} lifecycle with untruncated args,\n// partialResult and result details (including nested Fabric tool audits),\n// and entry_appended folding for extension session entries.\n//\n// Sources: either the native OMP session JSONL (preferred full history), the\n// worker run events.jsonl (surfaced by the agents.log API), or both. Retained\n// actor runs work in all shapes: a persistent session file, a retained\n// events.jsonl (--no-session runs keep their whole history in events only), or\n// a session file passed as `logFile` (the retained-actor fallback the UI uses).\n//\n// The controller keeps one reader per participant (stable source id). When only\n// `logFile`/`eventsFile` rolls to the next activation run, all history loaded\n// from the stable session file \u2014 including pinned loadOlder pages \u2014 is\n// preserved; only events-derived streaming state resets.\n//\n// IO is byte-bounded but always loads whole records \u2014 a single record larger\n// than the page budget grows the budget instead of being clipped, so no field\n// is ever dropped. Repeated loadOlder() calls walk the user through all of\n// history. Files that cannot be read are reported through the bounded\n// `unavailable`/`error` snapshot fields instead of throwing.\n\nexport type NativeAgentMessage = SessionMessageEntry[\"message\"];\n\nexport interface NativeConversationSource {\n /** Stable participant id (the controller keeps one reader per id). */\n id: string;\n status: string;\n /**\n * FabricTranscriptSource-compatible path: the active worker's or latest\n * retained run's events.jsonl (RPC event log) \u2014 or, retained-actor fallback,\n * a native OMP session file.\n */\n logFile?: string;\n /** Stable native OMP session file, preferred as the full history source. */\n sessionFile?: string;\n /** Explicit events.jsonl override; wins over logFile when both are given. */\n eventsFile?: string;\n}\n\nexport interface NativeToolExecution {\n toolCallId: string;\n toolName: string;\n args?: Record<string, unknown>;\n status: \"running\" | \"completed\" | \"failed\";\n /** tool_execution_start observed for this call. */\n executionStarted?: boolean;\n /** Full arguments are known (start/end observed or toolcall_end delivered). */\n argsComplete?: boolean;\n /** Accumulated partial result while running (content + details preserved whole). */\n partial?: { content?: unknown[]; details?: unknown };\n /** Final result (content + details preserved whole). */\n result?: { content?: unknown[]; details?: unknown };\n isError?: boolean;\n}\n\ninterface NativeTranscriptEntry {\n entryId: string;\n parentId: string | null;\n entryType: string;\n timestamp: string;\n /** Present for `message` entries; the native AgentMessage, unmodified. */\n message?: NativeAgentMessage;\n /** The whole native session entry \u2014 compaction, branch_summary, custom, \u2026 */\n entry: SessionEntry;\n}\n\ninterface NativeConversationStreaming {\n /** True while a partial assistant message or a tool execution is live. */\n active: boolean;\n /** Assistant message assembled from message_start + message_update deltas. */\n partialAssistant?: AssistantMessage;\n /** Tool executions keyed by toolCallId, including completed ones. */\n tools: NativeToolExecution[];\n}\n\nexport interface NativeConversationTranscript {\n /** Native AgentMessage union: active-branch display sequence + live tail. */\n messages: NativeAgentMessage[];\n /** Bumped whenever new records were applied; renderers can skip unchanged reads. */\n revision: number;\n /** Active branch entries (root \u2192 leaf), compaction-applied, native and whole. */\n entries: NativeTranscriptEntry[];\n streaming: NativeConversationStreaming;\n pendingMessages?: { steering: string[]; followUp: string[] };\n leafId: string | null;\n sourceId: string;\n status: string;\n sessionFile?: string;\n eventsFile?: string;\n sessionId?: string;\n /** Both file windows reached the file starts and the branch path reaches root. */\n historyComplete: boolean;\n /** Older whole-record pages are available via loadOlder(). */\n hasMore: boolean;\n /** New complete records exist past the window (only when reads are pinned). */\n hasNewer: boolean;\n /** Which source files could not be read, when any were given but unreadable. */\n unavailable?: { sessionFile?: boolean; eventsFile?: boolean };\n /** Bounded (\u2264200 char) reason for the last unreadable-file condition. */\n error?: string;\n updatedAt: number;\n}\n\nconst INITIAL_PAGE_BYTES = 256 * 1024;\nconst OLDER_PAGE_BYTES = 256 * 1024;\nconst GROWTH_PAGE_BYTES = 1024 * 1024;\nconst MAX_PAGE_BYTES = 64 * 1024 * 1024;\nconst CLASSIFY_PROBE_BYTES = 4096;\nconst SESSION_CLASSIFY_SCAN_LINES = 8;\nconst MAX_ERROR_CHARS = 200;\n\nconst emptyUsage = (): AssistantMessage[\"usage\"] => ({\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n totalTokens: 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n});\n\nconst parseRecord = (raw: string): Record<string, unknown> | undefined => {\n try {\n const parsed: unknown = JSON.parse(raw);\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) return undefined;\n return parsed as Record<string, unknown>;\n } catch {\n return undefined;\n }\n};\n\nconst isSessionEntry = (value: unknown): value is SessionEntry =>\n typeof value === \"object\" &&\n value !== null &&\n typeof (value as SessionEntry).type === \"string\" &&\n typeof (value as SessionEntry).id === \"string\" &&\n ((value as SessionEntry).parentId === null || typeof (value as SessionEntry).parentId === \"string\");\n\nconst messageFingerprint = (message: NativeAgentMessage): string => {\n if (\"content\" in message) return JSON.stringify(message.content);\n if (\"summary\" in message) return JSON.stringify(message.summary);\n return \"\";\n};\n\nconst messageKey = (message: NativeAgentMessage): string => {\n if (message.role === \"toolResult\") return `toolResult:${message.toolCallId}`;\n if (message.role === \"assistant\") {\n const calls = message.content\n .filter((block): block is Extract<typeof block, { type: \"toolCall\" }> => block.type === \"toolCall\")\n .map((block) => block.id);\n if (calls.length > 0) return `assistant:${message.timestamp}:calls:${calls.join(\",\")}`;\n }\n return `${message.role}:${message.timestamp}:${messageFingerprint(message)}`;\n};\n\nconst clipError = (error: unknown): string => {\n const text = error instanceof Error ? error.message : String(error);\n return text.length > MAX_ERROR_CHARS ? `${text.slice(0, MAX_ERROR_CHARS)}\u2026` : text;\n};\n\ninterface RecordPage {\n /** Byte offset of the first record included (record-aligned). */\n start: number;\n /** Byte offset just past the last record included. */\n end: number;\n records: string[];\n}\n\n/**\n * Read whole JSONL records ending at `end`, backwards, byte-bounded. The start\n * is aligned forward to a record boundary; if one record exceeds the budget the\n * budget doubles so the record is always loaded whole (never clipped).\n *\n * An unterminated trailing line (mid-write at EOF) is only included when it\n * already parses as JSON; otherwise the page ends before it so the next read\n * picks up the completed record. Nothing partially written is ever surfaced.\n */\nconst readBackwardPage = (\n descriptor: number,\n end: number,\n budget: number,\n includeFinalPartialLine: boolean,\n): RecordPage => {\n let windowBudget = Math.min(Math.max(budget, 1), MAX_PAGE_BYTES);\n for (;;) {\n const candidate = Math.max(0, end - windowBudget);\n const buffer = Buffer.allocUnsafe(end - candidate);\n const bytesRead = fs.readSync(descriptor, buffer, 0, buffer.length, candidate);\n const data = buffer.subarray(0, Math.max(0, bytesRead));\n if (data.length === 0) return { start: candidate, end: candidate, records: [] };\n const firstNewline = data.indexOf(0x0a);\n if (firstNewline === -1) {\n if (candidate === 0) {\n // The whole window is one unterminated record (single-record file\n // caught mid-write). Include it; JSON validity is decided by the parser.\n const raw = data.toString(\"utf8\").replace(/\\r$/, \"\");\n return { start: 0, end, records: raw ? [raw] : [] };\n }\n // One record larger than the budget: grow and retry so it loads whole.\n if (windowBudget >= MAX_PAGE_BYTES) return { start: end, end, records: [] };\n windowBudget = Math.min(windowBudget * 2, MAX_PAGE_BYTES);\n continue;\n }\n // At the file start (candidate === 0) the first line is a complete record;\n // otherwise align forward past a possibly partial head line.\n const alignStart = candidate > 0 ? firstNewline + 1 : 0;\n const records: string[] = [];\n let lineStart = alignStart;\n let lastComplete = alignStart;\n for (let index = alignStart; index < data.length; index++) {\n if (data[index] !== 0x0a) continue;\n const raw = data.subarray(lineStart, index).toString(\"utf8\").replace(/\\r$/, \"\");\n if (raw) records.push(raw);\n lineStart = index + 1;\n lastComplete = lineStart;\n }\n if (records.length === 0 && candidate > 0) {\n // No complete record fit before the window end (one record larger than\n // the budget): grow and retry so it loads whole.\n if (windowBudget >= MAX_PAGE_BYTES) return { start: end, end, records: [] };\n windowBudget = Math.min(windowBudget * 2, MAX_PAGE_BYTES);\n continue;\n }\n let endOffset = end;\n if (lastComplete < data.length) {\n const tail = data.subarray(lastComplete).toString(\"utf8\").replace(/\\r$/, \"\");\n if (includeFinalPartialLine && tail && parseRecord(tail)) {\n records.push(tail);\n } else {\n endOffset = candidate + lastComplete;\n }\n }\n return { start: candidate + alignStart, end: endOffset, records };\n }\n};\n\n/**\n * Read whole JSONL records forward from `start` up to the file end, bounded by\n * `budget`. An unterminated trailing line is only included when it already\n * parses as JSON (complete record caught mid-append); otherwise it is left for\n * the next read so no partially written record is ever surfaced.\n */\nconst readForwardPage = (\n descriptor: number,\n start: number,\n size: number,\n budget: number,\n): RecordPage => {\n let windowBudget = Math.min(Math.max(budget, 1), MAX_PAGE_BYTES);\n for (;;) {\n const limit = Math.min(size, start + windowBudget);\n if (limit <= start) return { start, end: start, records: [] };\n const buffer = Buffer.allocUnsafe(limit - start);\n const bytesRead = fs.readSync(descriptor, buffer, 0, buffer.length, start);\n const data = buffer.subarray(0, Math.max(0, bytesRead));\n if (data.length === 0) return { start, end: start, records: [] };\n const records: string[] = [];\n let lineStart = 0;\n let lastComplete = 0;\n for (let index = 0; index < data.length; index++) {\n if (data[index] !== 0x0a) continue;\n const raw = data.subarray(lineStart, index).toString(\"utf8\").replace(/\\r$/, \"\");\n if (raw) records.push(raw);\n lineStart = index + 1;\n lastComplete = lineStart;\n }\n if (lastComplete < data.length) {\n const tail = data.subarray(lastComplete).toString(\"utf8\").replace(/\\r$/, \"\");\n if (limit >= size && tail && parseRecord(tail)) {\n records.push(tail);\n lastComplete = data.length;\n }\n }\n if (lastComplete === 0 && limit < size) {\n // One record larger than the budget: grow and retry so it loads whole.\n if (windowBudget >= MAX_PAGE_BYTES) return { start, end: start, records: [] };\n windowBudget = Math.min(windowBudget * 2, MAX_PAGE_BYTES);\n continue;\n }\n return { start, end: start + lastComplete, records };\n }\n};\n\ninterface FileWindow {\n /** Oldest byte loaded so far (record-aligned); 0 once history start is reached. */\n head: number;\n /** Newest byte consumed so far. */\n tail: number;\n /** Size observed at the last read; tail === size means followed to EOF. */\n size: number;\n hasOlder: boolean;\n /** Set when the file exists but could not be read. */\n unavailable: boolean;\n}\n\ntype FileKind = \"session\" | \"events\";\n\nconst classifyFile = (filePath: string): FileKind | \"unreadable\" => {\n let descriptor: number | undefined;\n try {\n const noFollow = typeof fs.constants.O_NOFOLLOW === \"number\" ? fs.constants.O_NOFOLLOW : 0;\n descriptor = fs.openSync(filePath, fs.constants.O_RDONLY | noFollow);\n const stat = fs.fstatSync(descriptor);\n if (!stat.isFile()) return \"unreadable\";\n const buffer = Buffer.allocUnsafe(Math.max(1, Math.min(CLASSIFY_PROBE_BYTES, stat.size)));\n const bytesRead = fs.readSync(descriptor, buffer, 0, buffer.length, 0);\n const head = buffer.subarray(0, Math.max(0, bytesRead)).toString(\"utf8\");\n for (const line of head.split(\"\\n\").slice(0, SESSION_CLASSIFY_SCAN_LINES)) {\n const parsed = parseRecord(line);\n if (!parsed) continue;\n if (parsed.type === \"session\") return \"session\";\n if (parsed.type !== \"title\") break;\n }\n return \"events\";\n } catch {\n return \"unreadable\";\n } finally {\n if (descriptor !== undefined) closeQuietly(descriptor);\n }\n};\n\nconst openDescriptor = (\n filePath: string,\n): { descriptor: number; size: number } | { error: string } | undefined => {\n try {\n const noFollow = typeof fs.constants.O_NOFOLLOW === \"number\" ? fs.constants.O_NOFOLLOW : 0;\n const descriptor = fs.openSync(filePath, fs.constants.O_RDONLY | noFollow);\n const stat = fs.fstatSync(descriptor);\n if (!stat.isFile()) {\n closeQuietly(descriptor);\n return { error: \"not a regular file\" };\n }\n return { descriptor, size: stat.size };\n } catch (error) {\n return { error: clipError(error) };\n }\n};\n\nconst closeQuietly = (descriptor: number): void => {\n try {\n fs.closeSync(descriptor);\n } catch {\n // best effort\n }\n};\n\nexport class NativeConversationReader {\n #sourceId = \"\";\n #status = \"\";\n #sessionFile: string | undefined;\n #eventsFile: string | undefined;\n\n #entries: SessionEntry[] = [];\n readonly #entryIds = new Set<string>();\n readonly #byId = new Map<string, SessionEntry>();\n readonly #sessionEntryIds = new Set<string>();\n readonly #eventEntryIds = new Set<string>();\n #sessionLeafId: string | undefined;\n #eventLeafId: string | undefined;\n #sessionId: string | undefined;\n\n readonly #streamed = new Map<string, NativeAgentMessage>();\n #streamedOrder: string[] = [];\n #partial: AssistantMessage | undefined;\n #eventRecords: Record<string, unknown>[] = [];\n #pendingMessages: NativeConversationTranscript[\"pendingMessages\"];\n readonly #partialArgsRaw = new Map<number, string>();\n readonly #tools = new Map<string, NativeToolExecution>();\n\n readonly #windows = new Map<FileKind, FileWindow>();\n #followed = true;\n #revision = 0;\n #error: string | undefined;\n #snapshot: NativeConversationTranscript | undefined;\n\n /** Last transcript produced; undefined before the first successful read. */\n get last(): NativeConversationTranscript | undefined {\n return this.#snapshot;\n }\n\n read(source: NativeConversationSource, followLatest = true): NativeConversationTranscript {\n const sourceId = typeof source?.id === \"string\" ? source.id : \"\";\n const status = typeof source?.status === \"string\" ? source.status : \"\";\n const explicitSession = typeof source?.sessionFile === \"string\" && source.sessionFile\n ? source.sessionFile\n : undefined;\n const explicitEvents = typeof source?.eventsFile === \"string\" && source.eventsFile\n ? source.eventsFile\n : undefined;\n const logFile = typeof source?.logFile === \"string\" ? source.logFile : undefined;\n\n let sessionFile = explicitSession;\n let eventsFile = explicitEvents;\n let logUnresolved = false;\n if (logFile && logFile !== explicitSession && logFile !== explicitEvents) {\n // Retained-actor fallback: logFile may BE a native session file.\n const kind = classifyFile(logFile);\n if (kind === \"session\") sessionFile ??= logFile;\n else if (kind === \"events\") eventsFile ??= logFile;\n else logUnresolved = true;\n }\n\n if (sourceId !== this.#sourceId || sessionFile !== this.#sessionFile) {\n this.#resetPaths(sourceId, status, sessionFile, eventsFile);\n } else {\n this.#status = status;\n if (eventsFile !== this.#eventsFile) {\n // Rolling to the next activation run: preserve every bit of session\n // history loaded so far (including pinned older pages); reset only\n // events-derived streaming state.\n this.#eventsFile = eventsFile;\n this.#resetEventsState();\n this.#revision += 1;\n }\n }\n if (logUnresolved) {\n // The log path was given but could not be read: surface it as an\n // unavailable events source instead of silently showing nothing.\n this.#windows.set(\"events\", { head: 0, tail: 0, size: 0, hasOlder: false, unavailable: true });\n this.#setError(logFile ?? \"source log unreadable\");\n }\n this.#followed = followLatest !== false;\n this.#ingest(this.#followed);\n return this.#snapshot ?? this.#buildSnapshot();\n }\n\n /** Load older whole-record pages of history. Repeated calls load all of it. */\n loadOlder(pages = 1): NativeConversationTranscript | undefined {\n if (!this.#snapshot) return undefined;\n for (let page = 0; page < Math.max(1, pages); page++) {\n let progressed = false;\n for (const [kind, filePath] of this.#windowFiles()) {\n if (this.#loadOlderFile(kind, filePath)) progressed = true;\n }\n if (!progressed) break;\n }\n this.#revision += 1;\n this.#snapshot = this.#buildSnapshot();\n return this.#snapshot;\n }\n\n /** Consume any records newer than the current window (used when pinned). */\n loadNewer(): NativeConversationTranscript | undefined {\n if (!this.#snapshot) return undefined;\n this.#followed = true;\n this.#ingest(true);\n return this.#snapshot ?? undefined;\n }\n\n /** Drop the current windows and re-read from the tail of both files. */\n loadLatest(): NativeConversationTranscript | undefined {\n if (!this.#snapshot) return undefined;\n for (const [kind, filePath] of this.#windowFiles()) this.#initWindow(kind, filePath);\n this.#followed = true;\n this.#ingest(true);\n return this.#snapshot ?? undefined;\n }\n\n /** Drop all cached state for a clean re-read. */\n clear(): void {\n this.#resetPaths(\"\", \"\", undefined, undefined);\n }\n\n #windowFiles(): Array<[FileKind, string]> {\n const files: Array<[FileKind, string]> = [];\n if (this.#sessionFile) files.push([\"session\", this.#sessionFile]);\n if (this.#eventsFile) files.push([\"events\", this.#eventsFile]);\n return files;\n }\n\n #setError(detail: string): void {\n this.#error = clipError(detail);\n }\n\n #resetPaths(\n sourceId: string,\n status: string,\n sessionFile: string | undefined,\n eventsFile: string | undefined,\n ): void {\n this.#sourceId = sourceId;\n this.#status = status;\n this.#sessionFile = sessionFile;\n this.#eventsFile = eventsFile;\n this.#entries = [];\n this.#entryIds.clear();\n this.#byId.clear();\n this.#sessionEntryIds.clear();\n this.#eventEntryIds.clear();\n this.#sessionLeafId = undefined;\n this.#eventLeafId = undefined;\n this.#sessionId = undefined;\n this.#eventRecords = [];\n this.#resetStreamingState();\n this.#windows.clear();\n this.#revision = 0;\n this.#error = undefined;\n this.#snapshot = undefined;\n for (const [kind, filePath] of this.#windowFiles()) this.#initWindow(kind, filePath);\n }\n\n #resetStreamingState(): void {\n this.#pendingMessages = undefined;\n this.#streamed.clear();\n this.#streamedOrder = [];\n this.#partial = undefined;\n this.#partialArgsRaw.clear();\n this.#tools.clear();\n }\n\n #resetEventsState(): void {\n this.#eventRecords = [];\n this.#resetStreamingState();\n this.#eventLeafId = undefined;\n for (const id of this.#eventEntryIds) {\n if (this.#sessionEntryIds.has(id)) continue;\n this.#entryIds.delete(id);\n const entry = this.#byId.get(id);\n if (entry) {\n this.#byId.delete(id);\n const index = this.#entries.indexOf(entry);\n if (index >= 0) this.#entries.splice(index, 1);\n }\n }\n this.#eventEntryIds.clear();\n this.#windows.delete(\"events\");\n this.#error = undefined;\n if (this.#eventsFile) this.#initWindow(\"events\", this.#eventsFile);\n }\n\n #initWindow(kind: FileKind, filePath: string): void {\n const opened = openDescriptor(filePath);\n if (!opened || \"error\" in opened) {\n this.#windows.set(kind, {\n head: 0,\n tail: 0,\n size: 0,\n hasOlder: false,\n unavailable: true,\n });\n if (opened && \"error\" in opened) this.#setError(`${filePath}: ${opened.error}`);\n return;\n }\n try {\n const page = readBackwardPage(opened.descriptor, opened.size, INITIAL_PAGE_BYTES, kind === \"events\");\n this.#applyRecords(kind, page.records, true);\n this.#windows.set(kind, {\n head: page.start,\n tail: page.end,\n size: opened.size,\n hasOlder: page.start > 0,\n unavailable: false,\n });\n } catch (error) {\n this.#windows.set(kind, {\n head: 0,\n tail: 0,\n size: 0,\n hasOlder: false,\n unavailable: true,\n });\n this.#setError(`${filePath}: ${clipError(error)}`);\n } finally {\n closeQuietly(opened.descriptor);\n }\n }\n\n #loadOlderFile(kind: FileKind, filePath: string): boolean {\n const window = this.#windows.get(kind);\n if (!window || !window.hasOlder || window.head <= 0) return false;\n const opened = openDescriptor(filePath);\n if (!opened) return false;\n if (\"error\" in opened) {\n window.unavailable = true;\n this.#setError(`${filePath}: ${opened.error}`);\n return false;\n }\n try {\n const page = readBackwardPage(opened.descriptor, window.head, OLDER_PAGE_BYTES, false);\n if (page.start >= window.head) return false;\n // Older records join the index without moving the authoritative leaf.\n this.#applyRecords(kind, page.records, false);\n window.head = page.start;\n window.hasOlder = page.start > 0;\n window.unavailable = false;\n return true;\n } finally {\n closeQuietly(opened.descriptor);\n }\n }\n\n #growFile(kind: FileKind, filePath: string, followLatest: boolean): boolean {\n const window = this.#windows.get(kind);\n if (!window) return false;\n const opened = openDescriptor(filePath);\n if (!opened) return false;\n if (\"error\" in opened) {\n window.unavailable = true;\n this.#setError(`${filePath}: ${opened.error}`);\n return false;\n }\n try {\n window.size = opened.size;\n window.unavailable = false;\n if (!followLatest || opened.size <= window.tail) return false;\n const page = readForwardPage(opened.descriptor, window.tail, opened.size, GROWTH_PAGE_BYTES);\n if (page.end <= window.tail) return false;\n this.#applyRecords(kind, page.records, true);\n window.tail = Math.max(window.tail, page.end);\n return true;\n } finally {\n closeQuietly(opened.descriptor);\n }\n }\n\n #ingest(followLatest: boolean): void {\n let changed = false;\n for (const [kind, filePath] of this.#windowFiles()) {\n if (this.#growFile(kind, filePath, followLatest)) changed = true;\n }\n if (changed) this.#revision += 1;\n this.#snapshot = this.#buildSnapshot();\n }\n\n #applyRecords(kind: FileKind, records: string[], updateLeaf: boolean): void {\n const parsed = records.map(parseRecord).filter((record): record is Record<string, unknown> => record !== undefined);\n if (kind === \"session\") {\n for (const record of parsed) this.#applySessionRecord(record, updateLeaf);\n return;\n }\n if (updateLeaf) {\n this.#eventRecords.push(...parsed);\n for (const record of parsed) this.#applyEventRecord(record);\n } else {\n // Older event pages must prepend in arrival order, not append messages\n // after the live tail or overwrite live queue/partial/tool state.\n this.#eventRecords = [...parsed, ...this.#eventRecords];\n this.#resetStreamingState();\n this.#eventLeafId = undefined;\n for (const record of this.#eventRecords) this.#applyEventRecord(record);\n }\n }\n\n #applySessionRecord(record: Record<string, unknown>, updateLeaf: boolean): void {\n if (record.type === \"session\") {\n if (typeof record.id === \"string\") this.#sessionId = record.id;\n return;\n }\n if (!isSessionEntry(record)) return;\n this.#appendEntry(record, \"session\", updateLeaf);\n }\n\n // Entry list order is irrelevant: path construction walks byId from the leaf,\n // so older pages and live folds can append in any order.\n #appendEntry(entry: SessionEntry, origin: \"session\" | \"events\", updateLeaf = true): void {\n if (this.#entryIds.has(entry.id)) {\n const existing = this.#byId.get(entry.id);\n if (existing) Object.assign(existing, entry);\n (origin === \"session\" ? this.#sessionEntryIds : this.#eventEntryIds).add(entry.id);\n if (updateLeaf) {\n if (origin === \"session\") this.#sessionLeafId = entry.id;\n else this.#eventLeafId = entry.id;\n }\n return;\n }\n this.#entryIds.add(entry.id);\n this.#byId.set(entry.id, entry);\n (origin === \"session\" ? this.#sessionEntryIds : this.#eventEntryIds).add(entry.id);\n this.#entries.push(entry);\n if (!updateLeaf) return;\n if (origin === \"session\") this.#sessionLeafId = entry.id;\n else this.#eventLeafId = entry.id;\n }\n\n #applyEventRecord(event: Record<string, unknown>): void {\n switch (event.type) {\n case \"queue_update\": {\n const strings = (value: unknown): string[] => Array.isArray(value) ? value.filter((item): item is string => typeof item === \"string\") : [];\n this.#pendingMessages = { steering: strings(event.steering), followUp: strings(event.followUp) };\n return;\n }\n case \"message_start\": {\n const message = event.message as NativeAgentMessage | undefined;\n if (!message || typeof message !== \"object\") return;\n if (message.role === \"assistant\") {\n this.#partial = {\n ...message,\n content: message.content.map((part) => ({ ...part })),\n usage: message.usage ?? emptyUsage(),\n stopReason: message.stopReason ?? \"stop\",\n };\n } else {\n this.#foldMessage(message);\n }\n return;\n }\n case \"message_update\":\n this.#applyPartialDelta(event);\n return;\n case \"message_end\": {\n const message = event.message as NativeAgentMessage | undefined;\n if (!message || typeof message !== \"object\") return;\n if (message.role === \"assistant\") {\n this.#partial = undefined;\n this.#partialArgsRaw.clear();\n }\n this.#foldMessage(message);\n return;\n }\n case \"tool_execution_start\": {\n if (typeof event.toolCallId !== \"string\") return;\n const args = event.args as Record<string, unknown> | undefined;\n this.#tools.set(event.toolCallId, {\n toolCallId: event.toolCallId,\n toolName: typeof event.toolName === \"string\" ? event.toolName : \"\",\n ...(args !== undefined ? { args } : {}),\n status: \"running\",\n executionStarted: true,\n argsComplete: true,\n });\n return;\n }\n case \"tool_execution_update\": {\n const tool = this.#toolFor(event);\n if (!tool) return;\n const partial = event.partialResult as { content?: unknown[]; details?: unknown } | undefined;\n if (partial && typeof partial === \"object\") {\n tool.partial = {\n ...(Array.isArray(partial.content) ? { content: partial.content } : {}),\n ...(partial.details !== undefined ? { details: partial.details } : {}),\n };\n }\n return;\n }\n case \"tool_execution_end\": {\n const tool = this.#toolFor(event);\n if (!tool) return;\n const result = event.result as { content?: unknown[]; details?: unknown } | undefined;\n if (result && typeof result === \"object\") {\n tool.result = {\n ...(Array.isArray(result.content) ? { content: result.content } : {}),\n ...(result.details !== undefined ? { details: result.details } : {}),\n };\n }\n tool.isError = event.isError === true;\n tool.status = event.isError === true ? \"failed\" : \"completed\";\n tool.executionStarted = true;\n tool.argsComplete = true;\n return;\n }\n case \"turn_end\": {\n const message = event.message as NativeAgentMessage | undefined;\n if (message && typeof message === \"object\") this.#foldMessage(message);\n if (Array.isArray(event.toolResults)) {\n for (const result of event.toolResults) {\n if (result && typeof result === \"object\") this.#foldMessage(result as NativeAgentMessage);\n }\n }\n return;\n }\n case \"agent_end\": {\n if (!Array.isArray(event.messages)) return;\n for (const message of event.messages) {\n if (message && typeof message === \"object\") this.#foldMessage(message as NativeAgentMessage);\n }\n return;\n }\n case \"entry_appended\": {\n if (isSessionEntry(event.entry)) this.#appendEntry(event.entry, \"events\");\n return;\n }\n default:\n return;\n }\n }\n\n #toolFor(event: Record<string, unknown>): NativeToolExecution | undefined {\n if (typeof event.toolCallId !== \"string\") return undefined;\n return this.#tools.get(event.toolCallId);\n }\n\n #applyPartialDelta(event: Record<string, unknown>): void {\n const delta = event.assistantMessageEvent as Record<string, unknown> | undefined;\n if (!delta || typeof delta !== \"object\") return;\n if (!this.#partial) {\n this.#partial = {\n role: \"assistant\",\n content: [],\n api: \"\",\n provider: \"\",\n model: \"\",\n usage: emptyUsage(),\n stopReason: \"stop\",\n timestamp: Date.now(),\n };\n }\n const partial = this.#partial;\n if (event.usage && typeof event.usage === \"object\") {\n partial.usage = event.usage as AssistantMessage[\"usage\"];\n }\n const contentIndex = typeof delta.contentIndex === \"number\" ? delta.contentIndex : 0;\n switch (delta.type) {\n case \"text_start\":\n partial.content[contentIndex] = { type: \"text\", text: \"\" };\n return;\n case \"text_delta\": {\n const block = partial.content[contentIndex];\n const text = typeof delta.delta === \"string\" ? delta.delta : \"\";\n partial.content[contentIndex] = {\n type: \"text\",\n text: (block?.type === \"text\" ? block.text : \"\") + text,\n };\n return;\n }\n case \"text_end\": {\n if (typeof delta.content === \"string\") {\n partial.content[contentIndex] = { type: \"text\", text: delta.content };\n }\n return;\n }\n case \"thinking_start\":\n partial.content[contentIndex] = { type: \"thinking\", thinking: \"\" };\n return;\n case \"thinking_delta\": {\n const block = partial.content[contentIndex];\n const text = typeof delta.delta === \"string\" ? delta.delta : \"\";\n partial.content[contentIndex] = {\n type: \"thinking\",\n thinking: (block?.type === \"thinking\" ? block.thinking : \"\") + text,\n };\n return;\n }\n case \"thinking_end\": {\n if (typeof delta.content === \"string\") {\n partial.content[contentIndex] = { type: \"thinking\", thinking: delta.content };\n }\n return;\n }\n case \"toolcall_start\": {\n this.#partialArgsRaw.delete(contentIndex);\n partial.content[contentIndex] = {\n type: \"toolCall\",\n id: typeof delta.id === \"string\" ? delta.id : \"\",\n name: typeof delta.toolName === \"string\" ? delta.toolName : \"\",\n arguments: {},\n };\n return;\n }\n case \"toolcall_delta\": {\n const raw = typeof delta.delta === \"string\" ? delta.delta : \"\";\n if (!raw) return;\n const accumulated = (this.#partialArgsRaw.get(contentIndex) ?? \"\") + raw;\n this.#partialArgsRaw.set(contentIndex, accumulated);\n const parsed = parseRecord(accumulated);\n const block = partial.content[contentIndex];\n if (block?.type === \"toolCall\" && parsed) block.arguments = parsed;\n return;\n }\n case \"toolcall_end\": {\n const toolCall = delta.toolCall as AssistantMessage[\"content\"][number] | undefined;\n if (toolCall && typeof toolCall === \"object\") partial.content[contentIndex] = toolCall;\n this.#partialArgsRaw.delete(contentIndex);\n return;\n }\n default:\n return;\n }\n }\n\n #foldMessage(message: NativeAgentMessage): void {\n if (!message || typeof message !== \"object\" || typeof message.role !== \"string\") return;\n const key = messageKey(message);\n if (this.#streamed.has(key)) return;\n this.#streamed.set(key, message);\n this.#streamedOrder.push(key);\n }\n\n #buildSnapshot(): NativeConversationTranscript {\n const sessionWindow = this.#windows.get(\"session\");\n const eventsWindow = this.#windows.get(\"events\");\n const hasMore = (sessionWindow?.hasOlder ?? false) || (eventsWindow?.hasOlder ?? false);\n const hasNewer = !this.#followed &&\n ((sessionWindow !== undefined && sessionWindow.tail < sessionWindow.size) ||\n (eventsWindow !== undefined && eventsWindow.tail < eventsWindow.size));\n // The session file is authoritative for the leaf; event-folded entries\n // (entry_appended) only drive it when no session file exists (--no-session\n // retained runs keep their whole tree in the events stream).\n const leafId = this.#sessionLeafId ?? this.#eventLeafId ?? null;\n const pathComplete = leafId !== null && this.#pathReachesRoot(leafId);\n const historyComplete = !hasMore && pathComplete\n && (sessionWindow?.head ?? 0) === 0\n && (eventsWindow?.head ?? 0) === 0;\n const activeEntries = leafId !== null ? buildContextEntries(this.#entries, leafId, this.#byId) : [];\n const sessionMessages = leafId !== null\n ? buildSessionContext(this.#entries, leafId, this.#byId).messages\n : [];\n // Persisted entries remain authoritative even when compaction or a fork\n // removes them from the active display. Never resurrect their RPC copies.\n const persisted = new Set(this.#entries.flatMap((entry) => entry.type === \"message\" ? [messageKey(entry.message)] : []));\n const streamed = this.#streamedOrder\n .filter((key) => !persisted.has(key))\n .map((key) => this.#streamed.get(key))\n .filter((message): message is NativeAgentMessage => message !== undefined);\n // Live tail messages append after the persisted branch sequence \u2014 arrival\n // order, exactly as the events were observed.\n const messages = [...sessionMessages, ...streamed];\n\n const entries = leafId !== null\n ? activeEntries.map((entry) => ({\n entryId: entry.id,\n parentId: entry.parentId,\n entryType: entry.type,\n timestamp: entry.timestamp,\n ...(entry.type === \"message\" ? { message: entry.message } : {}),\n entry,\n }))\n : [];\n\n const tools = [...this.#tools.values()].map((tool) => ({ ...tool }));\n const partialAssistant = this.#partial\n ? { ...this.#partial, content: [...this.#partial.content] }\n : undefined;\n const unavailable: { sessionFile?: boolean; eventsFile?: boolean } = {};\n if (sessionWindow?.unavailable) unavailable.sessionFile = true;\n if (eventsWindow?.unavailable) unavailable.eventsFile = true;\n return {\n messages,\n revision: this.#revision,\n entries,\n streaming: {\n active: partialAssistant !== undefined || tools.some((tool) => tool.status === \"running\"),\n ...(partialAssistant ? { partialAssistant } : {}),\n tools,\n },\n ...(this.#pendingMessages ? { pendingMessages: { steering: [...this.#pendingMessages.steering], followUp: [...this.#pendingMessages.followUp] } } : {}),\n leafId,\n sourceId: this.#sourceId,\n status: this.#status,\n ...(this.#sessionFile ? { sessionFile: this.#sessionFile } : {}),\n ...(this.#eventsFile ? { eventsFile: this.#eventsFile } : {}),\n ...(this.#sessionId ? { sessionId: this.#sessionId } : {}),\n historyComplete,\n hasMore,\n hasNewer,\n ...(Object.keys(unavailable).length > 0 ? { unavailable } : {}),\n ...(Object.keys(unavailable).length > 0 && this.#error ? { error: this.#error } : {}),\n updatedAt: Date.now(),\n };\n }\n\n #pathReachesRoot(leafId: string): boolean {\n let current = this.#byId.get(leafId);\n if (!current) return false;\n const guard = new Set<string>();\n while (current.parentId !== null) {\n if (guard.has(current.id)) return true;\n guard.add(current.id);\n const parent = this.#byId.get(current.parentId);\n if (!parent) return false;\n current = parent;\n }\n return true;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ import { type ConversationQueue, type ConversationQueueOptions } from "./conversation-queue.js";
2
+ import type { NativeConversationTranscript } from "./conversation-native-reader.js";
3
+ /** Session-owned queues; replacing a view never strands an acknowledgement or editor. */
4
+ export declare class ConversationQueueStore {
5
+ private readonly slots;
6
+ attach(options: ConversationQueueOptions): ConversationQueue;
7
+ get(id: string): ConversationQueue | undefined;
8
+ detach(id: string): void;
9
+ sync(id: string, transcript: NativeConversationTranscript): void;
10
+ clear(): void;
11
+ }
12
+ //# sourceMappingURL=conversation-queue-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-queue-store.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-queue-store.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,KAAK,wBAAwB,EAAkC,MAAM,yBAAyB,CAAC;AACzJ,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAUpF,yFAAyF;AACzF,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEtD,MAAM,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB;IA2B5D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAE9C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAOxB,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,4BAA4B,GAAG,IAAI;IA8BhE,KAAK,IAAI,IAAI;CAId"}
@@ -0,0 +1,242 @@
1
+ import type { KeybindingsManager, Theme } from "@oh-my-pi/pi-coding-agent";
2
+ /**
3
+ * Target-scoped conversation queue for the focused conversation view.
4
+ *
5
+ * When pi-queue-steer is installed and loaded, a versioned omp.events
6
+ * request/capability handshake hands this adapter a bridge over the
7
+ * extension's actual queue-state machinery (DeliveryQueue / QueueEditSession)
8
+ * AND its actual shared execution-outline renderer (QueueTimelineWidget plus
9
+ * the real inline-editor line extractor) — no imitation, no hard dependency:
10
+ * the extension is discovered only through the shared bus. With no compatible
11
+ * listener, the adapter falls back to OMP's native queue display labels and
12
+ * colors ("Steering:" / "Follow-up:", dim) and never claims extension parity.
13
+ *
14
+ * Delivery ownership rules:
15
+ * - every queue is bound to one targetId; rows and edits never leak to Main
16
+ * or to another target (dispatch goes only through the injected per-target
17
+ * `send` route);
18
+ * - `submit` acknowledges route acceptance only: a resolved send marks the
19
+ * row `dispatched` — immutable, no longer editable (there is no remote
20
+ * retract API) — and still visible until native delivery is confirmed;
21
+ * - rows retire through `syncSnapshot`, reconciled against the native
22
+ * reader agent's complete-message snapshot (read-only messages/streaming/
23
+ * tools source). Retirement keys on stable native message identities plus
24
+ * a pre-dispatch baseline and live-append frontier, with duplicate
25
+ * counting — trimmed text alone is NOT identity: identical text already in
26
+ * history, or historical pages loaded later, can never fake consumption;
27
+ * - a failed send restores the exact remaining rows to the timeline head in
28
+ * order;
29
+ * - Main-only control actions (/ commands, ! bash) are rejected at stage
30
+ * time — they are not queueable from a focused conversation;
31
+ * - a run ending (settled, aborted, errored) is NOT a retirement event:
32
+ * follow-ups exist precisely to start the next run, and a route ack cannot
33
+ * prove consumption, so only `retireAll` (target removed/unreachable) or
34
+ * an identity match retires rows;
35
+ * - `dispose({ retain })` gives Main explicit cleanup/retention semantics on
36
+ * target switches: retention parks the rows (the extension bridge retains
37
+ * them per targetId for re-adoption), the default clears them and releases
38
+ * the extension's retained state.
39
+ */
40
+ export declare const QUEUE_STEER_CONVERSATION_QUEUE_REQUEST_EVENT = "queue-steer:conversation-queue:request:v1";
41
+ type ConversationQueueLane = "steer" | "followUp";
42
+ type ConversationQueueRowState = "queued" | "dispatched";
43
+ interface ConversationQueueRow {
44
+ id: string;
45
+ lane: ConversationQueueLane;
46
+ text: string;
47
+ state: ConversationQueueRowState;
48
+ paused: boolean;
49
+ /** Current row-editing selection (rendered live through the shared editor). */
50
+ selected: boolean;
51
+ /** Marked for removal inside the active editing session; save deletes it. */
52
+ removed: boolean;
53
+ }
54
+ /** Structural shape of the extension's real `DeliveryQueue` rows. */
55
+ interface ConversationQueueBridgeRow {
56
+ id: string;
57
+ lane: ConversationQueueLane;
58
+ text: string;
59
+ images: unknown[];
60
+ sequence: number;
61
+ paused?: boolean;
62
+ }
63
+ /** Structural subset of the extension's real `DeliveryQueue`. */
64
+ interface ConversationQueueBridgeQueue {
65
+ enqueue(lane: ConversationQueueLane, text: string, images?: readonly unknown[]): ConversationQueueBridgeRow;
66
+ snapshot(): ConversationQueueBridgeRow[];
67
+ peek(): ConversationQueueBridgeRow | undefined;
68
+ get(id: string): ConversationQueueBridgeRow | undefined;
69
+ remove(id: string): ConversationQueueBridgeRow | undefined;
70
+ prepend(item: ConversationQueueBridgeRow): void;
71
+ prependMany(items: readonly ConversationQueueBridgeRow[]): void;
72
+ update(id: string, text: string): boolean;
73
+ setLane(id: string, lane: ConversationQueueLane): boolean;
74
+ setPaused(id: string, paused: boolean): boolean;
75
+ clear(): void;
76
+ readonly length: number;
77
+ }
78
+ /** Structural subset of the extension's real `QueueEditSession`. */
79
+ interface ConversationQueueBridgeEditSession {
80
+ readonly selectedId: string;
81
+ readonly composerDraft: string;
82
+ capture(text: string): void;
83
+ select(item: ConversationQueueBridgeRow, currentText: string): string;
84
+ toggleRemoved(id: string): boolean | undefined;
85
+ togglePaused(id: string): boolean | undefined;
86
+ setLane(id: string, lane: ConversationQueueLane): ConversationQueueLane | undefined;
87
+ commit(queue: ConversationQueueBridgeQueue, currentText: string): {
88
+ updated: number;
89
+ removed: number;
90
+ moved: number;
91
+ held: number;
92
+ released: number;
93
+ };
94
+ rollbackPositions(queue: ConversationQueueBridgeQueue): void;
95
+ /** Draft decoration readers; present on the extension's real session. */
96
+ laneFor?(id: string): ConversationQueueLane | undefined;
97
+ textFor?(id: string): string | undefined;
98
+ pausedFor?(id: string): boolean | undefined;
99
+ isRemoved?(id: string): boolean;
100
+ }
101
+ /**
102
+ * Version 1 interop bridge served by a loaded pi-queue-steer over the
103
+ * `QUEUE_STEER_CONVERSATION_QUEUE_REQUEST_EVENT` handshake. The renderer
104
+ * members are optional so an older installed extension degrades gracefully
105
+ * to the native fallback rendering instead of an imitation outline.
106
+ */
107
+ export interface ConversationQueueBridgeV1 {
108
+ version: 1;
109
+ targetId: string;
110
+ createQueue(): ConversationQueueBridgeQueue;
111
+ createEditSession(item: ConversationQueueBridgeRow, composerDraft: string): ConversationQueueBridgeEditSession;
112
+ isQueueableSubmission(text: string): boolean;
113
+ laneLabel(lane: ConversationQueueLane): string;
114
+ laneColor(lane: ConversationQueueLane): string;
115
+ buildTimelineItems?(queue: ConversationQueueBridgeQueue, editSession: ConversationQueueBridgeEditSession | undefined, modes?: {
116
+ steer: "all" | "one-at-a-time";
117
+ followUp: "all" | "one-at-a-time";
118
+ }): readonly unknown[];
119
+ createTimelineWidget?(options: {
120
+ items: readonly unknown[];
121
+ editingId?: string;
122
+ paused?: boolean;
123
+ idle?: boolean;
124
+ renderInlineEditor?: (width: number) => string[];
125
+ }, theme: Theme): {
126
+ render(width: number): readonly string[];
127
+ invalidate(): void;
128
+ };
129
+ extractInlineEditorLines?(lines: readonly string[], paddingX?: number): string[];
130
+ }
131
+ /**
132
+ * One entry of the native reader agent's complete-message snapshot. `id` is
133
+ * a stable native identity (session entry id, reader event identity, or the
134
+ * actor envelope/message id); `historical` marks baseline/history entries —
135
+ * including older transcript pages loaded later — which establish identity
136
+ * but can never retire a queued row.
137
+ */
138
+ export interface ConversationSnapshotEntry {
139
+ id: string;
140
+ text: string;
141
+ historical?: boolean;
142
+ }
143
+ export interface ConversationQueueOptions {
144
+ /** Shared omp.events bus (emit only; the handshake is synchronous claim/respond). */
145
+ ompEvents: {
146
+ emit(channel: string, data: unknown): void;
147
+ };
148
+ targetId: string;
149
+ targetName?: string;
150
+ /**
151
+ * Per-target dispatch route owned by Main; rejection restores the rows. A
152
+ * resolved value may carry `messageId`/`id` (e.g. an actor envelope id) —
153
+ * it becomes the row's expected native delivery identity.
154
+ */
155
+ send: (message: string, delivery: ConversationQueueLane) => Promise<unknown>;
156
+ theme: Theme;
157
+ /** Shared focused-view editor; row editing renders live through it. */
158
+ editor?: {
159
+ getText(): string;
160
+ setText(text: string): void;
161
+ handleInput?(data: string): void;
162
+ /** Full renderer, used for real inline row editing via the bridge. */
163
+ render?(width: number): string[];
164
+ /** Editor interior padding, forwarded to the inline line extractor. */
165
+ paddingX?: number;
166
+ };
167
+ keybindings?: Pick<KeybindingsManager, "matches" | "getKeys">;
168
+ /** Target run state for the shared widget's stage label; default idle=false. */
169
+ isIdle?: () => boolean;
170
+ onNotify?: (text: string, kind: "info" | "error") => void;
171
+ requestRender?: () => void;
172
+ }
173
+ interface StageResult {
174
+ ok: boolean;
175
+ id?: string;
176
+ error?: string;
177
+ }
178
+ export interface ConversationQueue {
179
+ readonly targetId: string;
180
+ /** "extension" when a real pi-queue-steer bridge was claimed, "native" otherwise. */
181
+ readonly mode: "extension" | "native";
182
+ readonly active: boolean;
183
+ /** True while a row-editing session holds the shared editor. */
184
+ readonly editingActive: boolean;
185
+ /** Stage text as a queue row for this target. Control input is rejected. */
186
+ stage(text: string, lane: ConversationQueueLane): StageResult;
187
+ /**
188
+ * Dispatch the contiguous same-lane unpauseed head batch through `send`.
189
+ * Resolves true only when every row was accepted by the route; a failure
190
+ * restores the unsent rows to the timeline head in order. Acceptance is
191
+ * not consumption: accepted rows become immutable and stay visible until
192
+ * `syncSnapshot` confirms native delivery identity.
193
+ */
194
+ submit(lane: ConversationQueueLane): Promise<boolean>;
195
+ dispatch(text: string, lane: ConversationQueueLane): Promise<void>;
196
+ park(text: string, lane: ConversationQueueLane): StageResult;
197
+ cancelEditing(): void;
198
+ syncPending(pending: {
199
+ steering: string[];
200
+ followUp: string[];
201
+ } | undefined): void;
202
+ /** Decorated rows in timeline order (dispatched rows first, then queued). */
203
+ rows(): ConversationQueueRow[];
204
+ /** Queue list lines rendered above the editor; empty when nothing is held. */
205
+ render(width: number): readonly string[];
206
+ /**
207
+ * Row-editing input handling. Consumes keys only while an editing session
208
+ * is active or when the dequeue binding starts one; everything else passes
209
+ * back to Main (`false`).
210
+ */
211
+ handleInput(data: string): boolean;
212
+ /**
213
+ * Reconcile against the native reader snapshot (read-only). Main feeds the
214
+ * initial pre-dispatch snapshot as `historical` entries before the first
215
+ * submit, then subsequent live snapshots. Retirement matches, first, a
216
+ * dispatched row's expected native message identity (actor envelope id) or,
217
+ * failing that, one live-append entry beyond the historical baseline with
218
+ * the row's text — duplicate rows each consume their own frontier entry.
219
+ * Historical entries and older pages never retire anything.
220
+ */
221
+ syncSnapshot(entries: readonly ConversationSnapshotEntry[]): number;
222
+ /**
223
+ * The target is being removed/unreachable: retire every held row. This is
224
+ * the only blanket retirement, and it must NOT be called merely because a
225
+ * run ended or the target stopped — follow-ups are for the next run, and a
226
+ * route ack cannot prove consumption.
227
+ */
228
+ retireAll(reason?: string): number;
229
+ /** Number of rows still held (queued + dispatched-but-unconfirmed). */
230
+ pendingCount(): number;
231
+ dispose(options?: {
232
+ retain?: boolean;
233
+ }): void;
234
+ }
235
+ /**
236
+ * Create one target-scoped conversation queue. Attempts the pi-queue-steer
237
+ * interop handshake first (mode "extension"); with no claiming listener the
238
+ * adapter serves OMP's native queue labels and colors (mode "native").
239
+ */
240
+ export declare function createConversationQueue(options: ConversationQueueOptions): ConversationQueue;
241
+ export {};
242
+ //# sourceMappingURL=conversation-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-queue.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { type MessageRenderer, type Theme, type ToolDefinition } from "@oh-my-pi/pi-coding-agent";
2
+ import type { TUI } from "@oh-my-pi/pi-tui";
3
+ import type { FabricConversationTarget } from "./conversation.js";
4
+ import type { CodePreviewSettings } from "./code-preview.js";
5
+ import type { NativeConversationTranscript } from "./conversation-native-reader.js";
6
+ export type { NativeAgentMessage, NativeConversationTranscript, } from "./conversation-native-reader.js";
7
+ type FabricToolDefinitionLike = ToolDefinition<any, any> | undefined;
8
+ export type FabricGetToolDefinition = (toolName: string) => FabricToolDefinitionLike;
9
+ export interface FabricConversationTranscriptRendererOptions {
10
+ getToolDefinition?: FabricGetToolDefinition;
11
+ getMessageRenderer?: ((customType: string) => MessageRenderer | undefined) | undefined;
12
+ hiddenThinkingLabel?: string | undefined;
13
+ imageWidthCells?: number | undefined;
14
+ }
15
+ export interface FabricConversationTranscriptRenderOptions {
16
+ target: FabricConversationTarget;
17
+ toolsExpanded: boolean;
18
+ outputPad?: 0 | 1;
19
+ codeBlockIndent?: string;
20
+ codePreviewSettings?: CodePreviewSettings | undefined;
21
+ hideThinking?: boolean;
22
+ showImages?: boolean;
23
+ }
24
+ export declare class FabricConversationTranscriptRenderer {
25
+ private readonly tui;
26
+ private readonly theme;
27
+ private readonly rendererOptions;
28
+ private disposed;
29
+ private readonly toolComponents;
30
+ private readonly assistantComponents;
31
+ private readonly messageComponents;
32
+ constructor(tui: TUI, theme: Theme, rendererOptions?: FabricConversationTranscriptRendererOptions);
33
+ invalidate(): void;
34
+ dispose(): void;
35
+ render(transcript: NativeConversationTranscript, width: number, options: FabricConversationTranscriptRenderOptions): string[];
36
+ private renderMessage;
37
+ private renderAssistant;
38
+ private renderTool;
39
+ private renderBash;
40
+ private renderCustom;
41
+ private renderSummary;
42
+ private push;
43
+ private fallback;
44
+ }
45
+ //# sourceMappingURL=conversation-render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-render.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,KAAK,EAEV,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAa,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,iCAAiC,CAAC;AAEzC,YAAY,EACV,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC;AAEzC,KAAK,wBAAwB,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;AACrE,MAAM,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,wBAAwB,CAAC;AAErF,MAAM,WAAW,2CAA2C;IAC1D,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,kBAAkB,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,MAAM,KAAK,eAAe,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IACvF,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAED,MAAM,WAAW,yCAAyC;IACxD,MAAM,EAAE,wBAAwB,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAuCD,qBAAa,oCAAoC;IAO7C,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,eAAe;IARlC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAgD;IACpF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;gBAGhD,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,eAAe,GAAE,2CAAgD;IAGpF,UAAU,IAAI,IAAI;IAQlB,OAAO,IAAI,IAAI;IAKf,MAAM,CAAC,UAAU,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,yCAAyC,GAAG,MAAM,EAAE;IAqB7H,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,UAAU;IA8BlB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,QAAQ;CAGjB"}
@@ -0,0 +1,3 @@
1
+ export declare const FABRIC_CONVERSATION_SHORTCUT = "ctrl+shift+a";
2
+ export declare const FABRIC_CONVERSATION_HINT = "Ctrl+Shift+A chat";
3
+ //# sourceMappingURL=conversation-shortcut.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-shortcut.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-shortcut.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,iBAAiB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,sBAAsB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { FabricConversationTarget } from "./conversation.js";
2
+ import { type FabricDashboardSnapshot } from "./types.js";
3
+ export declare const conversationTargets: (snapshot: FabricDashboardSnapshot) => FabricConversationTarget[];
4
+ /** Implicit opens prefer a live working child, never the oldest retained run. */
5
+ export declare const defaultConversationTarget: (targets: FabricConversationTarget[], rememberedId?: string) => FabricConversationTarget | undefined;
6
+ export declare const resolveConversationTarget: (targets: FabricConversationTarget[], query: string) => FabricConversationTarget;
7
+ //# sourceMappingURL=conversation-targets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-targets.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-targets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAGL,KAAK,uBAAuB,EAE7B,MAAM,YAAY,CAAC;AA2QpB,eAAO,MAAM,mBAAmB,GAC9B,UAAU,uBAAuB,KAChC,wBAAwB,EAoE1B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,GACpC,SAAS,wBAAwB,EAAE,EACnC,eAAe,MAAM,KACpB,wBAAwB,GAAG,SAe7B,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,wBAAwB,EAAE,EACnC,OAAO,MAAM,KACZ,wBAuBF,CAAC"}
@@ -0,0 +1,12 @@
1
+ import {
2
+ conversationTargets,
3
+ defaultConversationTarget,
4
+ resolveConversationTarget
5
+ } from "../chunks/chunk-XU5Z4JCQ.js";
6
+ import "../chunks/chunk-QPXSCMTG.js";
7
+ export {
8
+ conversationTargets,
9
+ defaultConversationTarget,
10
+ resolveConversationTarget
11
+ };
12
+ //# sourceMappingURL=conversation-targets.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,25 @@
1
+ import type { FabricTranscriptEntry } from "./transcript.js";
2
+ /**
3
+ * Display-only unwrapping of a Fabric direct actor message envelope.
4
+ *
5
+ * Actors receive messages as `Fabric actor message from <source>:` followed by
6
+ * a JSON envelope. When that envelope is a validated direct actor message, this
7
+ * returns the human payload text so transcripts show a normal user bubble.
8
+ * Everything else — ordinary user JSON, code, malformed input, host-event
9
+ * envelopes, non-direct sources — is preserved untouched by returning undefined.
10
+ */
11
+ export declare const unwrapActorEnvelopeText: (text: string) => string | undefined;
12
+ export interface FocusedTranscriptView {
13
+ /** Entries to render in the focused (collapsed) view. */
14
+ entries: FabricTranscriptEntry[];
15
+ /** Raw diagnostics hidden by collapse; render these when expanded. */
16
+ hiddenDiagnostics: FabricTranscriptEntry[];
17
+ }
18
+ /**
19
+ * Pure focused-view projection: collapses runs of worker stderr warnings into
20
+ * one diagnostics summary entry without discarding anything — hidden originals
21
+ * come back in `hiddenDiagnostics` so an expand toggle can render them. Real
22
+ * errors (non-warning stderr) always stay visible.
23
+ */
24
+ export declare const focusTranscriptDiagnostics: (entries: FabricTranscriptEntry[], expandHint?: string) => FocusedTranscriptView;
25
+ //# sourceMappingURL=conversation-transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-transcript.d.ts","sourceRoot":"","sources":["../../src/ui/conversation-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAK7D;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,SAgB/D,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,sEAAsE;IACtE,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;CAC5C;AAUD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GACrC,SAAS,qBAAqB,EAAE,EAChC,mBAAqB,KACpB,qBAgCF,CAAC"}