@inhuman.tools/quickdraw 0.0.0-bootstrap.0 → 0.2.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 (522) hide show
  1. package/LICENSE.md +7 -0
  2. package/README.md +102 -1
  3. package/aurora.vert +168 -0
  4. package/dist/bench/host.d.ts +62 -0
  5. package/dist/bench/host.d.ts.map +1 -0
  6. package/dist/bench/host.js +77 -0
  7. package/dist/bench/host.js.map +1 -0
  8. package/dist/bench/main.d.ts +6 -0
  9. package/dist/bench/main.d.ts.map +1 -0
  10. package/dist/bench/main.js +118 -0
  11. package/dist/bench/main.js.map +1 -0
  12. package/dist/bench/model.d.ts +36 -0
  13. package/dist/bench/model.d.ts.map +1 -0
  14. package/dist/bench/model.js +112 -0
  15. package/dist/bench/model.js.map +1 -0
  16. package/dist/bench/tea.d.ts +14 -0
  17. package/dist/bench/tea.d.ts.map +1 -0
  18. package/dist/bench/tea.js +6 -0
  19. package/dist/bench/tea.js.map +1 -0
  20. package/dist/bench/view.d.ts +9 -0
  21. package/dist/bench/view.d.ts.map +1 -0
  22. package/dist/bench/view.js +88 -0
  23. package/dist/bench/view.js.map +1 -0
  24. package/dist/bench/worker.d.ts +6 -0
  25. package/dist/bench/worker.d.ts.map +1 -0
  26. package/dist/bench/worker.js +46 -0
  27. package/dist/bench/worker.js.map +1 -0
  28. package/dist/buffer/bgfx-mark.d.ts +32 -0
  29. package/dist/buffer/bgfx-mark.d.ts.map +1 -0
  30. package/dist/buffer/bgfx-mark.js +43 -0
  31. package/dist/buffer/bgfx-mark.js.map +1 -0
  32. package/dist/buffer/index.d.ts +191 -0
  33. package/dist/buffer/index.d.ts.map +1 -0
  34. package/dist/buffer/index.js +353 -0
  35. package/dist/buffer/index.js.map +1 -0
  36. package/dist/capabilities/env.d.ts +23 -0
  37. package/dist/capabilities/env.d.ts.map +1 -0
  38. package/dist/capabilities/env.js +35 -0
  39. package/dist/capabilities/env.js.map +1 -0
  40. package/dist/capabilities/index.d.ts +13 -0
  41. package/dist/capabilities/index.d.ts.map +1 -0
  42. package/dist/capabilities/index.js +13 -0
  43. package/dist/capabilities/index.js.map +1 -0
  44. package/dist/capabilities/parse.d.ts +41 -0
  45. package/dist/capabilities/parse.d.ts.map +1 -0
  46. package/dist/capabilities/parse.js +86 -0
  47. package/dist/capabilities/parse.js.map +1 -0
  48. package/dist/capabilities/probe.d.ts +37 -0
  49. package/dist/capabilities/probe.d.ts.map +1 -0
  50. package/dist/capabilities/probe.js +75 -0
  51. package/dist/capabilities/probe.js.map +1 -0
  52. package/dist/capabilities/sequences.d.ts +33 -0
  53. package/dist/capabilities/sequences.d.ts.map +1 -0
  54. package/dist/capabilities/sequences.js +36 -0
  55. package/dist/capabilities/sequences.js.map +1 -0
  56. package/dist/capabilities/types.d.ts +25 -0
  57. package/dist/capabilities/types.d.ts.map +1 -0
  58. package/dist/capabilities/types.js +5 -0
  59. package/dist/capabilities/types.js.map +1 -0
  60. package/dist/index.d.ts +11 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +11 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/input/decode.d.ts +167 -0
  65. package/dist/input/decode.d.ts.map +1 -0
  66. package/dist/input/decode.js +825 -0
  67. package/dist/input/decode.js.map +1 -0
  68. package/dist/input/draft.d.ts +85 -0
  69. package/dist/input/draft.d.ts.map +1 -0
  70. package/dist/input/draft.js +276 -0
  71. package/dist/input/draft.js.map +1 -0
  72. package/dist/input/index.d.ts +3 -0
  73. package/dist/input/index.d.ts.map +1 -0
  74. package/dist/input/index.js +3 -0
  75. package/dist/input/index.js.map +1 -0
  76. package/dist/input/prompt-blocks.d.ts +58 -0
  77. package/dist/input/prompt-blocks.d.ts.map +1 -0
  78. package/dist/input/prompt-blocks.js +48 -0
  79. package/dist/input/prompt-blocks.js.map +1 -0
  80. package/dist/input/rich-draft.d.ts +46 -0
  81. package/dist/input/rich-draft.d.ts.map +1 -0
  82. package/dist/input/rich-draft.js +391 -0
  83. package/dist/input/rich-draft.js.map +1 -0
  84. package/dist/input/rich-hit.d.ts +17 -0
  85. package/dist/input/rich-hit.d.ts.map +1 -0
  86. package/dist/input/rich-hit.js +89 -0
  87. package/dist/input/rich-hit.js.map +1 -0
  88. package/dist/input/rich-intake.d.ts +16 -0
  89. package/dist/input/rich-intake.d.ts.map +1 -0
  90. package/dist/input/rich-intake.js +22 -0
  91. package/dist/input/rich-intake.js.map +1 -0
  92. package/dist/input/rich-paint.d.ts +13 -0
  93. package/dist/input/rich-paint.d.ts.map +1 -0
  94. package/dist/input/rich-paint.js +18 -0
  95. package/dist/input/rich-paint.js.map +1 -0
  96. package/dist/internals/bgfx/index.d.ts +17 -0
  97. package/dist/internals/bgfx/index.d.ts.map +1 -0
  98. package/dist/internals/bgfx/index.js +17 -0
  99. package/dist/internals/bgfx/index.js.map +1 -0
  100. package/dist/internals/bgfx/materialize.d.ts +31 -0
  101. package/dist/internals/bgfx/materialize.d.ts.map +1 -0
  102. package/dist/internals/bgfx/materialize.js +117 -0
  103. package/dist/internals/bgfx/materialize.js.map +1 -0
  104. package/dist/internals/bgfx/opacity.d.ts +37 -0
  105. package/dist/internals/bgfx/opacity.d.ts.map +1 -0
  106. package/dist/internals/bgfx/opacity.js +76 -0
  107. package/dist/internals/bgfx/opacity.js.map +1 -0
  108. package/dist/internals/bgfx/registry.d.ts +13 -0
  109. package/dist/internals/bgfx/registry.d.ts.map +1 -0
  110. package/dist/internals/bgfx/registry.js +24 -0
  111. package/dist/internals/bgfx/registry.js.map +1 -0
  112. package/dist/internals/bgfx/sab-layout.d.ts +61 -0
  113. package/dist/internals/bgfx/sab-layout.d.ts.map +1 -0
  114. package/dist/internals/bgfx/sab-layout.js +107 -0
  115. package/dist/internals/bgfx/sab-layout.js.map +1 -0
  116. package/dist/internals/bgfx/shader-frame-host.d.ts +22 -0
  117. package/dist/internals/bgfx/shader-frame-host.d.ts.map +1 -0
  118. package/dist/internals/bgfx/shader-frame-host.js +165 -0
  119. package/dist/internals/bgfx/shader-frame-host.js.map +1 -0
  120. package/dist/internals/bgfx/shadertoy-catalog.d.ts +41 -0
  121. package/dist/internals/bgfx/shadertoy-catalog.d.ts.map +1 -0
  122. package/dist/internals/bgfx/shadertoy-catalog.js +200 -0
  123. package/dist/internals/bgfx/shadertoy-catalog.js.map +1 -0
  124. package/dist/internals/bgfx/shadertoy-gl.d.ts +38 -0
  125. package/dist/internals/bgfx/shadertoy-gl.d.ts.map +1 -0
  126. package/dist/internals/bgfx/shadertoy-gl.js +283 -0
  127. package/dist/internals/bgfx/shadertoy-gl.js.map +1 -0
  128. package/dist/internals/bgfx/types.d.ts +51 -0
  129. package/dist/internals/bgfx/types.d.ts.map +1 -0
  130. package/dist/internals/bgfx/types.js +14 -0
  131. package/dist/internals/bgfx/types.js.map +1 -0
  132. package/dist/internals/bgfx-worker.d.ts +6 -0
  133. package/dist/internals/bgfx-worker.d.ts.map +1 -0
  134. package/dist/internals/bgfx-worker.js +131 -0
  135. package/dist/internals/bgfx-worker.js.map +1 -0
  136. package/dist/layout/birth.d.ts +77 -0
  137. package/dist/layout/birth.d.ts.map +1 -0
  138. package/dist/layout/birth.js +148 -0
  139. package/dist/layout/birth.js.map +1 -0
  140. package/dist/layout/children.d.ts +5 -0
  141. package/dist/layout/children.d.ts.map +1 -0
  142. package/dist/layout/children.js +19 -0
  143. package/dist/layout/children.js.map +1 -0
  144. package/dist/layout/chrome_frame.d.ts +254 -0
  145. package/dist/layout/chrome_frame.d.ts.map +1 -0
  146. package/dist/layout/chrome_frame.js +1080 -0
  147. package/dist/layout/chrome_frame.js.map +1 -0
  148. package/dist/layout/chrome_mask.d.ts +40 -0
  149. package/dist/layout/chrome_mask.d.ts.map +1 -0
  150. package/dist/layout/chrome_mask.js +150 -0
  151. package/dist/layout/chrome_mask.js.map +1 -0
  152. package/dist/layout/engine.d.ts +49 -0
  153. package/dist/layout/engine.d.ts.map +1 -0
  154. package/dist/layout/engine.js +1269 -0
  155. package/dist/layout/engine.js.map +1 -0
  156. package/dist/layout/flex.d.ts +36 -0
  157. package/dist/layout/flex.d.ts.map +1 -0
  158. package/dist/layout/flex.js +111 -0
  159. package/dist/layout/flex.js.map +1 -0
  160. package/dist/layout/grid.d.ts +36 -0
  161. package/dist/layout/grid.d.ts.map +1 -0
  162. package/dist/layout/grid.js +126 -0
  163. package/dist/layout/grid.js.map +1 -0
  164. package/dist/layout/index.d.ts +30 -0
  165. package/dist/layout/index.d.ts.map +1 -0
  166. package/dist/layout/index.js +30 -0
  167. package/dist/layout/index.js.map +1 -0
  168. package/dist/layout/indication.d.ts +34 -0
  169. package/dist/layout/indication.d.ts.map +1 -0
  170. package/dist/layout/indication.js +68 -0
  171. package/dist/layout/indication.js.map +1 -0
  172. package/dist/layout/length.d.ts +18 -0
  173. package/dist/layout/length.d.ts.map +1 -0
  174. package/dist/layout/length.js +24 -0
  175. package/dist/layout/length.js.map +1 -0
  176. package/dist/layout/live_paint.d.ts +145 -0
  177. package/dist/layout/live_paint.d.ts.map +1 -0
  178. package/dist/layout/live_paint.js +255 -0
  179. package/dist/layout/live_paint.js.map +1 -0
  180. package/dist/layout/markdown.d.ts +22 -0
  181. package/dist/layout/markdown.d.ts.map +1 -0
  182. package/dist/layout/markdown.js +167 -0
  183. package/dist/layout/markdown.js.map +1 -0
  184. package/dist/layout/measure.d.ts +46 -0
  185. package/dist/layout/measure.d.ts.map +1 -0
  186. package/dist/layout/measure.js +307 -0
  187. package/dist/layout/measure.js.map +1 -0
  188. package/dist/layout/paint-hotkey.d.ts +45 -0
  189. package/dist/layout/paint-hotkey.d.ts.map +1 -0
  190. package/dist/layout/paint-hotkey.js +152 -0
  191. package/dist/layout/paint-hotkey.js.map +1 -0
  192. package/dist/layout/paint.d.ts +25 -0
  193. package/dist/layout/paint.d.ts.map +1 -0
  194. package/dist/layout/paint.js +189 -0
  195. package/dist/layout/paint.js.map +1 -0
  196. package/dist/layout/paint_theme.d.ts +85 -0
  197. package/dist/layout/paint_theme.d.ts.map +1 -0
  198. package/dist/layout/paint_theme.js +76 -0
  199. package/dist/layout/paint_theme.js.map +1 -0
  200. package/dist/layout/progress.d.ts +31 -0
  201. package/dist/layout/progress.d.ts.map +1 -0
  202. package/dist/layout/progress.js +83 -0
  203. package/dist/layout/progress.js.map +1 -0
  204. package/dist/layout/selection.d.ts +136 -0
  205. package/dist/layout/selection.d.ts.map +1 -0
  206. package/dist/layout/selection.js +312 -0
  207. package/dist/layout/selection.js.map +1 -0
  208. package/dist/layout/selection_gesture.d.ts +88 -0
  209. package/dist/layout/selection_gesture.d.ts.map +1 -0
  210. package/dist/layout/selection_gesture.js +239 -0
  211. package/dist/layout/selection_gesture.js.map +1 -0
  212. package/dist/layout/selection_paint.d.ts +47 -0
  213. package/dist/layout/selection_paint.d.ts.map +1 -0
  214. package/dist/layout/selection_paint.js +320 -0
  215. package/dist/layout/selection_paint.js.map +1 -0
  216. package/dist/layout/serialize.d.ts +49 -0
  217. package/dist/layout/serialize.d.ts.map +1 -0
  218. package/dist/layout/serialize.js +437 -0
  219. package/dist/layout/serialize.js.map +1 -0
  220. package/dist/layout/squeeze.d.ts +58 -0
  221. package/dist/layout/squeeze.d.ts.map +1 -0
  222. package/dist/layout/squeeze.js +239 -0
  223. package/dist/layout/squeeze.js.map +1 -0
  224. package/dist/layout/text.d.ts +44 -0
  225. package/dist/layout/text.d.ts.map +1 -0
  226. package/dist/layout/text.js +230 -0
  227. package/dist/layout/text.js.map +1 -0
  228. package/dist/layout/theme_store.d.ts +21 -0
  229. package/dist/layout/theme_store.d.ts.map +1 -0
  230. package/dist/layout/theme_store.js +133 -0
  231. package/dist/layout/theme_store.js.map +1 -0
  232. package/dist/layout/types.d.ts +564 -0
  233. package/dist/layout/types.d.ts.map +1 -0
  234. package/dist/layout/types.js +2 -0
  235. package/dist/layout/types.js.map +1 -0
  236. package/dist/layout/visual_draft.d.ts +60 -0
  237. package/dist/layout/visual_draft.d.ts.map +1 -0
  238. package/dist/layout/visual_draft.js +199 -0
  239. package/dist/layout/visual_draft.js.map +1 -0
  240. package/dist/lexicon/color.d.ts +22 -0
  241. package/dist/lexicon/color.d.ts.map +1 -0
  242. package/dist/lexicon/color.js +6 -0
  243. package/dist/lexicon/color.js.map +1 -0
  244. package/dist/lexicon/index.d.ts +15 -0
  245. package/dist/lexicon/index.d.ts.map +1 -0
  246. package/dist/lexicon/index.js +15 -0
  247. package/dist/lexicon/index.js.map +1 -0
  248. package/dist/lexicon/prominence.d.ts +46 -0
  249. package/dist/lexicon/prominence.d.ts.map +1 -0
  250. package/dist/lexicon/prominence.js +73 -0
  251. package/dist/lexicon/prominence.js.map +1 -0
  252. package/dist/lexicon/quarantine.d.ts +21 -0
  253. package/dist/lexicon/quarantine.d.ts.map +1 -0
  254. package/dist/lexicon/quarantine.js +15 -0
  255. package/dist/lexicon/quarantine.js.map +1 -0
  256. package/dist/lexicon/roles.d.ts +37 -0
  257. package/dist/lexicon/roles.d.ts.map +1 -0
  258. package/dist/lexicon/roles.js +52 -0
  259. package/dist/lexicon/roles.js.map +1 -0
  260. package/dist/lexicon/tiers.d.ts +18 -0
  261. package/dist/lexicon/tiers.d.ts.map +1 -0
  262. package/dist/lexicon/tiers.js +17 -0
  263. package/dist/lexicon/tiers.js.map +1 -0
  264. package/dist/measure/index.d.ts +43 -0
  265. package/dist/measure/index.d.ts.map +1 -0
  266. package/dist/measure/index.js +120 -0
  267. package/dist/measure/index.js.map +1 -0
  268. package/dist/render.d.ts +72 -0
  269. package/dist/render.d.ts.map +1 -0
  270. package/dist/render.js +164 -0
  271. package/dist/render.js.map +1 -0
  272. package/dist/runtime/agents_keys.d.ts +8 -0
  273. package/dist/runtime/agents_keys.d.ts.map +1 -0
  274. package/dist/runtime/agents_keys.js +24 -0
  275. package/dist/runtime/agents_keys.js.map +1 -0
  276. package/dist/runtime/agents_peek.d.ts +44 -0
  277. package/dist/runtime/agents_peek.d.ts.map +1 -0
  278. package/dist/runtime/agents_peek.js +96 -0
  279. package/dist/runtime/agents_peek.js.map +1 -0
  280. package/dist/runtime/agents_preview.d.ts +27 -0
  281. package/dist/runtime/agents_preview.d.ts.map +1 -0
  282. package/dist/runtime/agents_preview.js +122 -0
  283. package/dist/runtime/agents_preview.js.map +1 -0
  284. package/dist/runtime/box_bus.d.ts +144 -0
  285. package/dist/runtime/box_bus.d.ts.map +1 -0
  286. package/dist/runtime/box_bus.js +74 -0
  287. package/dist/runtime/box_bus.js.map +1 -0
  288. package/dist/runtime/clipboard-image.d.ts +20 -0
  289. package/dist/runtime/clipboard-image.d.ts.map +1 -0
  290. package/dist/runtime/clipboard-image.js +62 -0
  291. package/dist/runtime/clipboard-image.js.map +1 -0
  292. package/dist/runtime/copy_toast.d.ts +46 -0
  293. package/dist/runtime/copy_toast.d.ts.map +1 -0
  294. package/dist/runtime/copy_toast.js +117 -0
  295. package/dist/runtime/copy_toast.js.map +1 -0
  296. package/dist/runtime/echo.d.ts +41 -0
  297. package/dist/runtime/echo.d.ts.map +1 -0
  298. package/dist/runtime/echo.js +112 -0
  299. package/dist/runtime/echo.js.map +1 -0
  300. package/dist/runtime/frame.d.ts +79 -0
  301. package/dist/runtime/frame.d.ts.map +1 -0
  302. package/dist/runtime/frame.js +258 -0
  303. package/dist/runtime/frame.js.map +1 -0
  304. package/dist/runtime/index.d.ts +16 -0
  305. package/dist/runtime/index.d.ts.map +1 -0
  306. package/dist/runtime/index.js +16 -0
  307. package/dist/runtime/index.js.map +1 -0
  308. package/dist/runtime/key_buffer.d.ts +19 -0
  309. package/dist/runtime/key_buffer.d.ts.map +1 -0
  310. package/dist/runtime/key_buffer.js +24 -0
  311. package/dist/runtime/key_buffer.js.map +1 -0
  312. package/dist/runtime/keys.d.ts +66 -0
  313. package/dist/runtime/keys.d.ts.map +1 -0
  314. package/dist/runtime/keys.js +220 -0
  315. package/dist/runtime/keys.js.map +1 -0
  316. package/dist/runtime/paint_snapshot.d.ts +9 -0
  317. package/dist/runtime/paint_snapshot.d.ts.map +1 -0
  318. package/dist/runtime/paint_snapshot.js +8 -0
  319. package/dist/runtime/paint_snapshot.js.map +1 -0
  320. package/dist/runtime/paint_source.d.ts +266 -0
  321. package/dist/runtime/paint_source.d.ts.map +1 -0
  322. package/dist/runtime/paint_source.js +532 -0
  323. package/dist/runtime/paint_source.js.map +1 -0
  324. package/dist/runtime/present_loop.d.ts +11 -0
  325. package/dist/runtime/present_loop.d.ts.map +1 -0
  326. package/dist/runtime/present_loop.js +46 -0
  327. package/dist/runtime/present_loop.js.map +1 -0
  328. package/dist/runtime/present_profile.d.ts +58 -0
  329. package/dist/runtime/present_profile.d.ts.map +1 -0
  330. package/dist/runtime/present_profile.js +130 -0
  331. package/dist/runtime/present_profile.js.map +1 -0
  332. package/dist/runtime/raster.d.ts +24 -0
  333. package/dist/runtime/raster.d.ts.map +1 -0
  334. package/dist/runtime/raster.js +43 -0
  335. package/dist/runtime/raster.js.map +1 -0
  336. package/dist/runtime/renderer.d.ts +151 -0
  337. package/dist/runtime/renderer.d.ts.map +1 -0
  338. package/dist/runtime/renderer.js +1607 -0
  339. package/dist/runtime/renderer.js.map +1 -0
  340. package/dist/runtime/screenshot.d.ts +9 -0
  341. package/dist/runtime/screenshot.d.ts.map +1 -0
  342. package/dist/runtime/screenshot.js +111 -0
  343. package/dist/runtime/screenshot.js.map +1 -0
  344. package/dist/runtime/selection_host.d.ts +41 -0
  345. package/dist/runtime/selection_host.d.ts.map +1 -0
  346. package/dist/runtime/selection_host.js +190 -0
  347. package/dist/runtime/selection_host.js.map +1 -0
  348. package/dist/runtime/stderr_hold.d.ts +16 -0
  349. package/dist/runtime/stderr_hold.d.ts.map +1 -0
  350. package/dist/runtime/stderr_hold.js +23 -0
  351. package/dist/runtime/stderr_hold.js.map +1 -0
  352. package/dist/runtime/thought_birth.d.ts +25 -0
  353. package/dist/runtime/thought_birth.d.ts.map +1 -0
  354. package/dist/runtime/thought_birth.js +122 -0
  355. package/dist/runtime/thought_birth.js.map +1 -0
  356. package/dist/runtime/thought_collapsed.d.ts +35 -0
  357. package/dist/runtime/thought_collapsed.d.ts.map +1 -0
  358. package/dist/runtime/thought_collapsed.js +94 -0
  359. package/dist/runtime/thought_collapsed.js.map +1 -0
  360. package/dist/runtime/tty.d.ts +58 -0
  361. package/dist/runtime/tty.d.ts.map +1 -0
  362. package/dist/runtime/tty.js +130 -0
  363. package/dist/runtime/tty.js.map +1 -0
  364. package/dist/theme/ansi16.d.ts +34 -0
  365. package/dist/theme/ansi16.d.ts.map +1 -0
  366. package/dist/theme/ansi16.js +181 -0
  367. package/dist/theme/ansi16.js.map +1 -0
  368. package/dist/theme/ansi256.d.ts +15 -0
  369. package/dist/theme/ansi256.d.ts.map +1 -0
  370. package/dist/theme/ansi256.js +94 -0
  371. package/dist/theme/ansi256.js.map +1 -0
  372. package/dist/theme/ground.d.ts +8 -0
  373. package/dist/theme/ground.d.ts.map +1 -0
  374. package/dist/theme/ground.js +11 -0
  375. package/dist/theme/ground.js.map +1 -0
  376. package/dist/theme/index.d.ts +10 -0
  377. package/dist/theme/index.d.ts.map +1 -0
  378. package/dist/theme/index.js +10 -0
  379. package/dist/theme/index.js.map +1 -0
  380. package/dist/theme/region.d.ts +42 -0
  381. package/dist/theme/region.d.ts.map +1 -0
  382. package/dist/theme/region.js +105 -0
  383. package/dist/theme/region.js.map +1 -0
  384. package/dist/theme/resolver.d.ts +126 -0
  385. package/dist/theme/resolver.d.ts.map +1 -0
  386. package/dist/theme/resolver.js +366 -0
  387. package/dist/theme/resolver.js.map +1 -0
  388. package/dist/theme/salience.d.ts +90 -0
  389. package/dist/theme/salience.d.ts.map +1 -0
  390. package/dist/theme/salience.js +208 -0
  391. package/dist/theme/salience.js.map +1 -0
  392. package/dist/theme/seeds.d.ts +113 -0
  393. package/dist/theme/seeds.d.ts.map +1 -0
  394. package/dist/theme/seeds.js +52 -0
  395. package/dist/theme/seeds.js.map +1 -0
  396. package/dist/theme/selection.d.ts +94 -0
  397. package/dist/theme/selection.d.ts.map +1 -0
  398. package/dist/theme/selection.js +135 -0
  399. package/dist/theme/selection.js.map +1 -0
  400. package/dist/theme/theme.d.ts +41 -0
  401. package/dist/theme/theme.d.ts.map +1 -0
  402. package/dist/theme/theme.js +34 -0
  403. package/dist/theme/theme.js.map +1 -0
  404. package/dist/widgets/composer-caret.d.ts +47 -0
  405. package/dist/widgets/composer-caret.d.ts.map +1 -0
  406. package/dist/widgets/composer-caret.js +90 -0
  407. package/dist/widgets/composer-caret.js.map +1 -0
  408. package/dist/widgets/composer-click.d.ts +30 -0
  409. package/dist/widgets/composer-click.d.ts.map +1 -0
  410. package/dist/widgets/composer-click.js +89 -0
  411. package/dist/widgets/composer-click.js.map +1 -0
  412. package/dist/widgets/composer-command.d.ts +64 -0
  413. package/dist/widgets/composer-command.d.ts.map +1 -0
  414. package/dist/widgets/composer-command.js +127 -0
  415. package/dist/widgets/composer-command.js.map +1 -0
  416. package/dist/widgets/composer-frame.d.ts +74 -0
  417. package/dist/widgets/composer-frame.d.ts.map +1 -0
  418. package/dist/widgets/composer-frame.js +284 -0
  419. package/dist/widgets/composer-frame.js.map +1 -0
  420. package/dist/widgets/composer-picker.d.ts +89 -0
  421. package/dist/widgets/composer-picker.d.ts.map +1 -0
  422. package/dist/widgets/composer-picker.js +240 -0
  423. package/dist/widgets/composer-picker.js.map +1 -0
  424. package/dist/widgets/diff.d.ts +11 -0
  425. package/dist/widgets/diff.d.ts.map +1 -0
  426. package/dist/widgets/diff.js +19 -0
  427. package/dist/widgets/diff.js.map +1 -0
  428. package/dist/widgets/expand.d.ts +28 -0
  429. package/dist/widgets/expand.d.ts.map +1 -0
  430. package/dist/widgets/expand.js +94 -0
  431. package/dist/widgets/expand.js.map +1 -0
  432. package/dist/widgets/index.d.ts +126 -0
  433. package/dist/widgets/index.d.ts.map +1 -0
  434. package/dist/widgets/index.js +455 -0
  435. package/dist/widgets/index.js.map +1 -0
  436. package/dist/widgets/internals/arrival-lang.d.ts +88 -0
  437. package/dist/widgets/internals/arrival-lang.d.ts.map +1 -0
  438. package/dist/widgets/internals/arrival-lang.js +211 -0
  439. package/dist/widgets/internals/arrival-lang.js.map +1 -0
  440. package/dist/widgets/internals/diff-expand.d.ts +93 -0
  441. package/dist/widgets/internals/diff-expand.d.ts.map +1 -0
  442. package/dist/widgets/internals/diff-expand.js +1106 -0
  443. package/dist/widgets/internals/diff-expand.js.map +1 -0
  444. package/dist/widgets/internals/embedded-syntax.d.ts +62 -0
  445. package/dist/widgets/internals/embedded-syntax.d.ts.map +1 -0
  446. package/dist/widgets/internals/embedded-syntax.js +465 -0
  447. package/dist/widgets/internals/embedded-syntax.js.map +1 -0
  448. package/dist/widgets/internals/markdown-expand.d.ts +57 -0
  449. package/dist/widgets/internals/markdown-expand.d.ts.map +1 -0
  450. package/dist/widgets/internals/markdown-expand.js +980 -0
  451. package/dist/widgets/internals/markdown-expand.js.map +1 -0
  452. package/dist/widgets/internals/overlay-syntax.d.ts +24 -0
  453. package/dist/widgets/internals/overlay-syntax.d.ts.map +1 -0
  454. package/dist/widgets/internals/overlay-syntax.js +90 -0
  455. package/dist/widgets/internals/overlay-syntax.js.map +1 -0
  456. package/dist/widgets/internals/pierre-parse/cleanLastNewline.d.ts +6 -0
  457. package/dist/widgets/internals/pierre-parse/cleanLastNewline.d.ts.map +1 -0
  458. package/dist/widgets/internals/pierre-parse/cleanLastNewline.js +8 -0
  459. package/dist/widgets/internals/pierre-parse/cleanLastNewline.js.map +1 -0
  460. package/dist/widgets/internals/pierre-parse/constants.d.ts +13 -0
  461. package/dist/widgets/internals/pierre-parse/constants.d.ts.map +1 -0
  462. package/dist/widgets/internals/pierre-parse/constants.js +13 -0
  463. package/dist/widgets/internals/pierre-parse/constants.js.map +1 -0
  464. package/dist/widgets/internals/pierre-parse/detachString.d.ts +3 -0
  465. package/dist/widgets/internals/pierre-parse/detachString.d.ts.map +1 -0
  466. package/dist/widgets/internals/pierre-parse/detachString.js +24 -0
  467. package/dist/widgets/internals/pierre-parse/detachString.js.map +1 -0
  468. package/dist/widgets/internals/pierre-parse/index.d.ts +8 -0
  469. package/dist/widgets/internals/pierre-parse/index.d.ts.map +1 -0
  470. package/dist/widgets/internals/pierre-parse/index.js +8 -0
  471. package/dist/widgets/internals/pierre-parse/index.js.map +1 -0
  472. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.d.ts +15 -0
  473. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.d.ts.map +1 -0
  474. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.js +39 -0
  475. package/dist/widgets/internals/pierre-parse/parseDiffFromFile.js.map +1 -0
  476. package/dist/widgets/internals/pierre-parse/parsePatchFiles.d.ts +11 -0
  477. package/dist/widgets/internals/pierre-parse/parsePatchFiles.d.ts.map +1 -0
  478. package/dist/widgets/internals/pierre-parse/parsePatchFiles.js +621 -0
  479. package/dist/widgets/internals/pierre-parse/parsePatchFiles.js.map +1 -0
  480. package/dist/widgets/internals/pierre-parse/types.d.ts +73 -0
  481. package/dist/widgets/internals/pierre-parse/types.d.ts.map +1 -0
  482. package/dist/widgets/internals/pierre-parse/types.js +7 -0
  483. package/dist/widgets/internals/pierre-parse/types.js.map +1 -0
  484. package/dist/widgets/internals/syntax.d.ts +55 -0
  485. package/dist/widgets/internals/syntax.d.ts.map +1 -0
  486. package/dist/widgets/internals/syntax.js +261 -0
  487. package/dist/widgets/internals/syntax.js.map +1 -0
  488. package/dist/widgets/markdown.d.ts +14 -0
  489. package/dist/widgets/markdown.d.ts.map +1 -0
  490. package/dist/widgets/markdown.js +9 -0
  491. package/dist/widgets/markdown.js.map +1 -0
  492. package/dist/widgets/shadow-stream.d.ts +88 -0
  493. package/dist/widgets/shadow-stream.d.ts.map +1 -0
  494. package/dist/widgets/shadow-stream.js +359 -0
  495. package/dist/widgets/shadow-stream.js.map +1 -0
  496. package/dist/widgets/speech.d.ts +36 -0
  497. package/dist/widgets/speech.d.ts.map +1 -0
  498. package/dist/widgets/speech.js +238 -0
  499. package/dist/widgets/speech.js.map +1 -0
  500. package/dist/widgets/stream-birth.d.ts +13 -0
  501. package/dist/widgets/stream-birth.d.ts.map +1 -0
  502. package/dist/widgets/stream-birth.js +70 -0
  503. package/dist/widgets/stream-birth.js.map +1 -0
  504. package/dist/widgets/syntax-boot.d.ts +25 -0
  505. package/dist/widgets/syntax-boot.d.ts.map +1 -0
  506. package/dist/widgets/syntax-boot.js +181 -0
  507. package/dist/widgets/syntax-boot.js.map +1 -0
  508. package/dist/widgets/text.d.ts +16 -0
  509. package/dist/widgets/text.d.ts.map +1 -0
  510. package/dist/widgets/text.js +14 -0
  511. package/dist/widgets/text.js.map +1 -0
  512. package/dist/widgets/transcript.d.ts +44 -0
  513. package/dist/widgets/transcript.d.ts.map +1 -0
  514. package/dist/widgets/transcript.js +106 -0
  515. package/dist/widgets/transcript.js.map +1 -0
  516. package/doom.vert +1840 -0
  517. package/fonts/DejaVuSans.ttf +0 -0
  518. package/fonts/DejaVuSansMono.ttf +0 -0
  519. package/fonts/LICENSE-DejaVu.txt +187 -0
  520. package/fonts/README.md +6 -0
  521. package/gradient.vert +75 -0
  522. package/package.json +147 -4
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Speculative composer echo — spec §3.
3
+ *
4
+ * State: boxId + predicted. Mutations via DraftOp
5
+ * (key → keyEventToDraftOp → optional visual rewrite → applyDraftOp).
6
+ * Soft-wrap vertical motion matches paint when `composerOuterWidth` is set.
7
+ */
8
+ import { type DraftOp, type DraftState } from "../input/index.js";
9
+ export interface EchoState {
10
+ readonly boxId: number | null;
11
+ readonly predicted: DraftState | null;
12
+ /**
13
+ * Last reconcile disagreed with the prediction. Host snaps (clears
14
+ * predicted); this flag is the detect, not a second draft loop.
15
+ */
16
+ readonly misaligned: boolean;
17
+ }
18
+ export declare function emptyEcho(): EchoState;
19
+ export declare function withComposerBox(echo: EchoState, boxId: number | null): EchoState;
20
+ /**
21
+ * When outer width is known, rewrite hard-line vertical/home/end to visual
22
+ * setCaret so soft-wrap matches paint. DraftOp itself has no layout dep.
23
+ * Host echo and the worker draft loop must share this or ↑ on a wrapped
24
+ * paste inserts at different offsets than the caret on screen.
25
+ */
26
+ export declare function maybeVisualMotion(op: DraftOp, state: DraftState, composerOuterWidth?: number): DraftOp;
27
+ export declare function predict(echo: EchoState, current: DraftState, key: {
28
+ readonly key: string;
29
+ readonly ctrl?: boolean;
30
+ readonly meta?: boolean;
31
+ readonly alt?: boolean;
32
+ readonly shift?: boolean;
33
+ }, opts?: {
34
+ readonly composerOuterWidth?: number;
35
+ }): EchoState;
36
+ /**
37
+ * Authoritative box arrived. Clear the prediction. If `incoming` is given
38
+ * and disagrees with what we showed, `misaligned` is true (snap, no replay).
39
+ */
40
+ export declare function reconcile(echo: EchoState, boxId: number, incoming?: DraftState): EchoState;
41
+ //# sourceMappingURL=echo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../src/runtime/echo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAgD,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGhH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,SAAS,IAAI,SAAS,CAErC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAGhF;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAgDtG;AAMD,wBAAgB,OAAO,CACrB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,UAAU,EACnB,GAAG,EAAE;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,EACD,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,SAAS,CAiBX;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,GAAG,SAAS,CAU1F"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Speculative composer echo — spec §3.
3
+ *
4
+ * State: boxId + predicted. Mutations via DraftOp
5
+ * (key → keyEventToDraftOp → optional visual rewrite → applyDraftOp).
6
+ * Soft-wrap vertical motion matches paint when `composerOuterWidth` is set.
7
+ */
8
+ import { keyEventToDraftOp } from "./keys.js";
9
+ import { applyDraftOp, normalizeDraft, selectionRange } from "../input/index.js";
10
+ import { chromeFrameTextWidth, moveVisualDraft } from "../layout/index.js";
11
+ export function emptyEcho() {
12
+ return { boxId: null, predicted: null, misaligned: false };
13
+ }
14
+ export function withComposerBox(echo, boxId) {
15
+ if (echo.boxId === boxId)
16
+ return echo;
17
+ return { boxId, predicted: null, misaligned: false };
18
+ }
19
+ function baseState(echo, current) {
20
+ return echo.predicted ?? current;
21
+ }
22
+ /**
23
+ * When outer width is known, rewrite hard-line vertical/home/end to visual
24
+ * setCaret so soft-wrap matches paint. DraftOp itself has no layout dep.
25
+ * Host echo and the worker draft loop must share this or ↑ on a wrapped
26
+ * paste inserts at different offsets than the caret on screen.
27
+ */
28
+ export function maybeVisualMotion(op, state, composerOuterWidth) {
29
+ if (op.type !== "move")
30
+ return op;
31
+ const textW = typeof composerOuterWidth === "number" && composerOuterWidth > 0 ? chromeFrameTextWidth(composerOuterWidth) : 0;
32
+ if (textW <= 0)
33
+ return op;
34
+ let visual = null;
35
+ switch (op.to) {
36
+ case "line_up": {
37
+ visual = "line_up";
38
+ break;
39
+ }
40
+ case "line_down": {
41
+ visual = "line_down";
42
+ break;
43
+ }
44
+ case "home": {
45
+ visual = "line_home";
46
+ break;
47
+ }
48
+ case "end": {
49
+ visual = "line_end";
50
+ break;
51
+ }
52
+ case "left":
53
+ case "right":
54
+ case "word_left":
55
+ case "word_right":
56
+ break;
57
+ }
58
+ if (visual === null)
59
+ return op;
60
+ const n = normalizeDraft(state);
61
+ const select = op.select === true;
62
+ let from = n.cursor;
63
+ if (!select) {
64
+ const range = selectionRange(n);
65
+ if (range) {
66
+ from = visual === "line_up" || visual === "line_home" ? range.a : range.b;
67
+ }
68
+ }
69
+ const nextCursor = moveVisualDraft(n.draft, from, textW, visual);
70
+ if (!select)
71
+ return { type: "setCaret", cursor: nextCursor, mark: null };
72
+ return {
73
+ type: "setCaret",
74
+ cursor: nextCursor,
75
+ mark: n.mark ?? n.cursor,
76
+ };
77
+ }
78
+ function isDestructiveOp(op) {
79
+ return op.type === "backspace" || op.type === "delete";
80
+ }
81
+ export function predict(echo, current, key, opts) {
82
+ const mapped = keyEventToDraftOp(key);
83
+ // Tab / Enter / Esc are worker commands, not draft mutations. A standing
84
+ // prediction would hide the rewrite (slash-complete) or the clear (submit).
85
+ if (mapped === null || mapped === "clear") {
86
+ if (echo.predicted === null && !echo.misaligned)
87
+ return echo;
88
+ return { ...echo, predicted: null, misaligned: false };
89
+ }
90
+ const base = baseState(echo, current);
91
+ const op = maybeVisualMotion(mapped, base, opts?.composerOuterWidth);
92
+ const next = applyDraftOp(base, op);
93
+ if (isDestructiveOp(op) && next.draft === base.draft && next.cursor === base.cursor && next.mark === base.mark) {
94
+ return echo;
95
+ }
96
+ return { ...echo, predicted: next, misaligned: false };
97
+ }
98
+ /**
99
+ * Authoritative box arrived. Clear the prediction. If `incoming` is given
100
+ * and disagrees with what we showed, `misaligned` is true (snap, no replay).
101
+ */
102
+ export function reconcile(echo, boxId, incoming) {
103
+ if (echo.predicted === null || echo.boxId !== boxId) {
104
+ return echo.misaligned ? { ...echo, misaligned: false } : echo;
105
+ }
106
+ const misaligned = incoming !== undefined &&
107
+ (echo.predicted.draft !== incoming.draft ||
108
+ echo.predicted.cursor !== incoming.cursor ||
109
+ (echo.predicted.mark ?? null) !== (incoming.mark ?? null));
110
+ return { ...echo, predicted: null, misaligned };
111
+ }
112
+ //# sourceMappingURL=echo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/runtime/echo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAiC,MAAM,mBAAmB,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AAY9F,MAAM,UAAU,SAAS;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAe,EAAE,KAAoB;IACnE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,SAAS,CAAC,IAAe,EAAE,OAAmB;IACrD,OAAO,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAAW,EAAE,KAAiB,EAAE,kBAA2B;IAC3F,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GACT,OAAO,kBAAkB,KAAK,QAAQ,IAAI,kBAAkB,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClH,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAE1B,IAAI,MAAM,GAAwB,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QACd,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,GAAG,SAAS,CAAC;YACnB,MAAM;QACR,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,GAAG,WAAW,CAAC;YACrB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,WAAW,CAAC;YACrB,MAAM;QACR,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,UAAU,CAAC;YACpB,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,WAAW,CAAC;QACjB,KAAK,YAAY;YACf,MAAM;IACV,CAAC;IACD,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAE/B,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC;IACpB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjE,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzE,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,EAAW;IAClC,OAAO,EAAE,CAAC,IAAI,KAAK,WAAW,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,IAAe,EACf,OAAmB,EACnB,GAMC,EACD,IAA+C;IAE/C,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,yEAAyE;IACzE,4EAA4E;IAC5E,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC7D,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEpC,IAAI,eAAe,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/G,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAe,EAAE,KAAa,EAAE,QAAqB;IAC7E,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;IACD,MAAM,UAAU,GACd,QAAQ,KAAK,SAAS;QACtB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YACtC,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YACzC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;IAC/D,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,79 @@
1
+ import type { EchoState } from "./echo.js";
2
+ import { type Buffer } from "../buffer/index.js";
3
+ import { type ChromeHotkey, type Frame, type Theme as PaintTheme } from "../layout/index.js";
4
+ /**
5
+ * Protocol-free paint view of the mirrors — not BoxMailbox (no structureGen / Map / protocol).
6
+ *
7
+ * `getBox` must be pure over the snapshot for one `renderFrame` call (I8 / F11).
8
+ * The mailbox adapter projects a frozen Map view each tick.
9
+ */
10
+ /**
11
+ * Purity contract: an implementation must answer identically for the same
12
+ * `id` for the snapshot's lifetime — a stateful `getBox` makes `renderFrame`
13
+ * non-deterministic and no gate would see it. The mailbox adapter gets this
14
+ * from `BoxMailbox`'s copy-on-write.
15
+ */
16
+ export interface PaintSnapshot {
17
+ readonly tree: unknown;
18
+ getBox(id: number): unknown;
19
+ }
20
+ /** Terminal size — owned by the UI thread; read, never derived, here. */
21
+ export interface Geometry {
22
+ readonly cols: number;
23
+ readonly rows: number;
24
+ }
25
+ /**
26
+ * Explicit state beside the mirrors. Anything else is mailbox-derived (worker)
27
+ * or a phase (collapse) — anti-spec §4.5 to hold it here.
28
+ */
29
+ export interface FrameState {
30
+ readonly nowMs: number;
31
+ readonly echo: EchoState;
32
+ /** Passed in so this module stays free of theme/surface state (F11). */
33
+ readonly theme?: PaintTheme;
34
+ /**
35
+ * Host lifecycle chrome (e.g. Ctrl+C exit) — overrides chrome_frame
36
+ * hotkeys after substitution; must not wait for a worker round-trip.
37
+ */
38
+ readonly hostHotkeys?: readonly ChromeHotkey[] | null;
39
+ /** Host-stepped birth wavefront W, keyed by live.siteId. */
40
+ readonly birth?: ReadonlyMap<string, number>;
41
+ /**
42
+ * Host-eased progress (key → displayed 0..1 + role). Injected before
43
+ * layout so the bar samples the interpolant, not the target jump.
44
+ */
45
+ readonly progress?: ReadonlyMap<string, {
46
+ displayed: number;
47
+ role?: string;
48
+ }>;
49
+ /** Last mouse cell is over a chrome_frame progress hit — swap annotation. */
50
+ readonly hoverProgress?: boolean;
51
+ /**
52
+ * Host pointer chrome for an already-windowed picker body.
53
+ * Restyles hover/press only — does not re-window.
54
+ */
55
+ readonly pickerChrome?: {
56
+ readonly hoverKey: string | null;
57
+ readonly pressKey: string | null;
58
+ };
59
+ /** Host-local agents-row hover. Worker focus remains authoritative for actions. */
60
+ readonly agentsChrome?: {
61
+ readonly hoverKey: string;
62
+ };
63
+ }
64
+ export interface FrameInputs {
65
+ readonly snapshot: PaintSnapshot;
66
+ readonly geometry: Geometry;
67
+ readonly state: FrameState;
68
+ }
69
+ export interface FrameOutput {
70
+ readonly buffer: Buffer;
71
+ /**
72
+ * Painted layout for click hit-testing (§1 admits only this to the UI thread
73
+ * on performance grounds). `null` before first structure (boot frame).
74
+ */
75
+ readonly frame: Frame | null;
76
+ }
77
+ /** Mirrors + geometry + state → painted buffer. */
78
+ export declare function renderFrame(inputs: FrameInputs): FrameOutput;
79
+ //# sourceMappingURL=frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../../src/runtime/frame.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,KAAK,EAEV,KAAK,KAAK,IAAI,UAAU,EACzB,MAAM,oBAAoB,CAAC;AAI5B;;;;;GAKG;AACH;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CAC7B;AAED,yEAAyE;AACzE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,wEAAwE;IACxE,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI,CAAC;IACtD,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9E,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,CAAC;IACF,mFAAmF;IACnF,QAAQ,CAAC,YAAY,CAAC,EAAE;QACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CAC9B;AAuPD,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CA2B5D"}
@@ -0,0 +1,258 @@
1
+ import { agentsRowKeyFromHit } from "./agents_keys.js";
2
+ import { createBuffer } from "../buffer/index.js";
3
+ import { layout, layoutChildren, mapLayoutChildren, paintFrame, } from "../layout/index.js";
4
+ import { FgP } from "../lexicon/index.js";
5
+ import { expandWidgetPriors } from "../widgets/expand.js";
6
+ /**
7
+ * Mailbox stores tree as `unknown` (protocol §4 opaque). Malformed → boot frame,
8
+ * never throw: a paint loop that dies on a message stops repainting the last
9
+ * good frame (F2 by another door).
10
+ */
11
+ function asTree(value) {
12
+ if (typeof value !== "object" || value === null)
13
+ return null;
14
+ const record = value;
15
+ if (typeof record.root !== "object" || record.root === null)
16
+ return null;
17
+ if (typeof record.boxes !== "object" || record.boxes === null)
18
+ return null;
19
+ return { root: record.root, boxes: record.boxes };
20
+ }
21
+ function asNode(value) {
22
+ if (typeof value !== "object" || value === null)
23
+ return null;
24
+ return typeof value.type === "string" ? value : null;
25
+ }
26
+ function isPaintReady(node) {
27
+ return node.paintReady === true;
28
+ }
29
+ /** Speculative draft overlay — inform paint; draft stays authoritative. */
30
+ function withEcho(node, boxId, echo) {
31
+ if (isPaintReady(node))
32
+ return node;
33
+ if (echo.predicted === null || echo.boxId !== boxId)
34
+ return node;
35
+ // Composer may be a stack (slash strip + chrome_frame) — walk children.
36
+ if (node.type === "chrome_frame" && !Array.isArray(node.bodySegRows)) {
37
+ const p = echo.predicted;
38
+ return {
39
+ ...node,
40
+ speculativeDraft: p.draft,
41
+ cursor: p.cursor,
42
+ mark: p.mark,
43
+ };
44
+ }
45
+ if (layoutChildren(node).length === 0)
46
+ return node;
47
+ return mapLayoutChildren(node, (child) => withEcho(child, boxId, echo));
48
+ }
49
+ /** Overlay host lifecycle bindings onto the strip (left), not the annotation. */
50
+ function withHostHotkeys(node, hotkeys) {
51
+ // paintReady skips mailbox/echo, not host chrome. Product stamps the
52
+ // composer subtree ready; Ctrl+C: exit must still reach chrome_frame.
53
+ if (node.type === "chrome_frame") {
54
+ return { ...node, hotkeys };
55
+ }
56
+ if (layoutChildren(node).length === 0)
57
+ return node;
58
+ return mapLayoutChildren(node, (child) => withHostHotkeys(child, hotkeys));
59
+ }
60
+ function withProgressDisplay(node, progress) {
61
+ if (isPaintReady(node))
62
+ return node;
63
+ if (node.type === "chrome_frame") {
64
+ const key = node.key;
65
+ const shown = key ? progress.get(key) : undefined;
66
+ if (!shown)
67
+ return node;
68
+ return {
69
+ ...node,
70
+ progress: shown.displayed,
71
+ progressRole: shown.role,
72
+ };
73
+ }
74
+ if (layoutChildren(node).length === 0)
75
+ return node;
76
+ return mapLayoutChildren(node, (child) => withProgressDisplay(child, progress));
77
+ }
78
+ function withHoverProgressAnnotation(node) {
79
+ if (isPaintReady(node))
80
+ return node;
81
+ if (node.type === "chrome_frame") {
82
+ const swap = (node.progressAnnotation ?? "").trim();
83
+ if (!swap)
84
+ return node;
85
+ return { ...node, annotation: swap };
86
+ }
87
+ if (layoutChildren(node).length === 0)
88
+ return node;
89
+ return mapLayoutChildren(node, (child) => withHoverProgressAnnotation(child));
90
+ }
91
+ /** Same matrix as paintPicker — restyle existing rows, never re-slice. */
92
+ function pickerNameKind(key, chrome, selectedKey) {
93
+ if (key != null && selectedKey != null && key === selectedKey)
94
+ return "selected";
95
+ if (key != null && chrome.pressKey != null && key === chrome.pressKey && chrome.hoverKey === chrome.pressKey) {
96
+ return "press-full";
97
+ }
98
+ if (key != null && (key === chrome.hoverKey || key === chrome.pressKey))
99
+ return "half";
100
+ return "idle";
101
+ }
102
+ function pickerNameStyle(kind) {
103
+ if (kind === "selected" || kind === "press-full") {
104
+ return { role: "foreground", prominence: FgP.primary, bold: true };
105
+ }
106
+ if (kind === "half") {
107
+ return { role: "muted", prominence: FgP.secondary };
108
+ }
109
+ return { role: "muted", prominence: FgP.ghost };
110
+ }
111
+ function pickerDescStyle(kind) {
112
+ if (kind === "idle") {
113
+ return { role: "muted", prominence: FgP.ghost };
114
+ }
115
+ return { role: "muted", prominence: FgP.secondary };
116
+ }
117
+ function isPickerHrefRow(row) {
118
+ const first = row[0];
119
+ if (!first)
120
+ return false;
121
+ if (typeof first.href === "string" && first.href.length > 0)
122
+ return true;
123
+ return first.underline === true && first.role === "accent";
124
+ }
125
+ function paintRowKeysFromPicker(picker) {
126
+ const n = picker.rows.length;
127
+ const v = picker.viewport;
128
+ const maxS = Math.max(0, n - v);
129
+ const scroll = Math.min(maxS, Math.max(0, picker.scrollOffset));
130
+ const visible = picker.rows.slice(scroll, scroll + v);
131
+ const keys = [];
132
+ for (const row of visible) {
133
+ const key = row.key ?? null;
134
+ keys.push(key);
135
+ if ((row.href ?? "").trim().length > 0)
136
+ keys.push(key);
137
+ }
138
+ return keys;
139
+ }
140
+ function restylePickerNameRow(row, kind) {
141
+ const left = pickerNameStyle(kind);
142
+ const right = pickerDescStyle(kind);
143
+ return row.map((seg, i) => {
144
+ if (i === 0) {
145
+ const next = {
146
+ ...seg,
147
+ role: left.role,
148
+ prominence: left.prominence,
149
+ };
150
+ if (left.bold)
151
+ next.bold = true;
152
+ else
153
+ delete next.bold;
154
+ return next;
155
+ }
156
+ if (i === row.length - 1 && row.length >= 3) {
157
+ return { ...seg, role: right.role, prominence: right.prominence };
158
+ }
159
+ return seg;
160
+ });
161
+ }
162
+ function withPickerChrome(node, chrome) {
163
+ if (isPaintReady(node))
164
+ return node;
165
+ if (node.type === "chrome_frame" && (node.key === "slash-complete" || node.picker)) {
166
+ const bodySegRows = node.bodySegRows;
167
+ if (!bodySegRows || bodySegRows.length === 0 || !node.picker)
168
+ return node;
169
+ const keys = paintRowKeysFromPicker(node.picker);
170
+ const selectedKey = node.picker.selectedKey;
171
+ const nextSegs = bodySegRows.map((row, i) => {
172
+ if (isPickerHrefRow(row))
173
+ return row;
174
+ const kind = pickerNameKind(keys[i] ?? null, chrome, selectedKey);
175
+ return restylePickerNameRow(row, kind);
176
+ });
177
+ const glyphs = node.bodyGlyphs ?? bodySegRows.map(() => " ");
178
+ const nextGlyphs = glyphs.map((glyph, i) => {
179
+ if (isPickerHrefRow(bodySegRows[i] ?? []))
180
+ return glyph;
181
+ const kind = pickerNameKind(keys[i] ?? null, chrome, selectedKey);
182
+ return kind === "selected" ? "›" : " ";
183
+ });
184
+ return { ...node, bodySegRows: nextSegs, bodyGlyphs: nextGlyphs };
185
+ }
186
+ if (layoutChildren(node).length === 0)
187
+ return node;
188
+ return mapLayoutChildren(node, (child) => withPickerChrome(child, chrome));
189
+ }
190
+ /** Restyle session names from pointer state without waiting for a worker paint patch. */
191
+ function withAgentsChrome(node, hoverKey) {
192
+ const key = "key" in node && typeof node.key === "string" ? node.key : "";
193
+ let next = node;
194
+ if (node.type === "text" && key.endsWith(":name")) {
195
+ const rowKey = agentsRowKeyFromHit(key);
196
+ if (rowKey !== null) {
197
+ next = {
198
+ ...node,
199
+ style: {
200
+ ...node.style,
201
+ role: "foreground",
202
+ prominence: rowKey === hoverKey ? FgP.primary : FgP.rising,
203
+ },
204
+ };
205
+ }
206
+ }
207
+ return mapLayoutChildren(next, (child) => withAgentsChrome(child, hoverKey));
208
+ }
209
+ /**
210
+ * Splice mirror values into named content sites.
211
+ * Recursion, not mutation: mailbox tree is re-rendered every frame the worker
212
+ * does not replace it; in-place edit would introduce the memory F11 guards against.
213
+ */
214
+ function substitute(node, boxes, getBox, echo) {
215
+ if (isPaintReady(node))
216
+ return node;
217
+ const key = "key" in node ? node.key : undefined;
218
+ const boxId = typeof key === "string" ? boxes[key] : undefined;
219
+ if (boxId !== undefined) {
220
+ const value = asNode(getBox(boxId));
221
+ // Unfilled site → empty children (structure reserved space; one-batch-behind
222
+ // box_set must not make layout jump).
223
+ return { ...node, children: value === null ? [] : [withEcho(value, boxId, echo)] };
224
+ }
225
+ return mapLayoutChildren(node, (child) => substitute(child, boxes, getBox, echo));
226
+ }
227
+ /** Mirrors + geometry + state → painted buffer. */
228
+ export function renderFrame(inputs) {
229
+ const { snapshot, geometry, state } = inputs;
230
+ const cols = Math.max(1, Math.floor(geometry.cols));
231
+ const rows = Math.max(1, Math.floor(geometry.rows));
232
+ const buffer = createBuffer(cols, rows);
233
+ const tree = asTree(snapshot.tree);
234
+ if (tree === null)
235
+ return { buffer, frame: null };
236
+ let root = substitute(tree.root, tree.boxes, (id) => snapshot.getBox(id), state.echo);
237
+ if (state.hostHotkeys && state.hostHotkeys.length > 0) {
238
+ root = withHostHotkeys(root, state.hostHotkeys);
239
+ }
240
+ if (state.progress && state.progress.size > 0) {
241
+ root = withProgressDisplay(root, state.progress);
242
+ }
243
+ if (state.hoverProgress)
244
+ root = withHoverProgressAnnotation(root);
245
+ if (state.pickerChrome)
246
+ root = withPickerChrome(root, state.pickerChrome);
247
+ if (state.agentsChrome)
248
+ root = withAgentsChrome(root, state.agentsChrome.hoverKey);
249
+ root = expandWidgetPriors(root, { width: cols });
250
+ const frame = layout(root, { w: cols, h: rows });
251
+ // Omit theme → ambient paintTheme(); production passes explicit binding.
252
+ paintFrame(frame, buffer, state.theme, {
253
+ nowMs: state.nowMs,
254
+ birth: state.birth,
255
+ });
256
+ return { buffer, frame };
257
+ }
258
+ //# sourceMappingURL=frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame.js","sourceRoot":"","sources":["../../src/runtime/frame.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Worker runtime the TUI imports: paint seam, mailbox, draft keys, raster,
3
+ * thought birth and collapse. Host entry (tty, present loop, cadence) stays
4
+ * on the package root.
5
+ */
6
+ export * from "./agents_keys.js";
7
+ export * from "./agents_peek.js";
8
+ export * from "./agents_preview.js";
9
+ export * from "./box_bus.js";
10
+ export * from "./echo.js";
11
+ export * from "./keys.js";
12
+ export * from "./paint_source.js";
13
+ export * from "./raster.js";
14
+ export * from "./thought_birth.js";
15
+ export * from "./thought_collapsed.js";
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Worker runtime the TUI imports: paint seam, mailbox, draft keys, raster,
3
+ * thought birth and collapse. Host entry (tty, present loop, cadence) stays
4
+ * on the package root.
5
+ */
6
+ export * from "./agents_keys.js";
7
+ export * from "./agents_peek.js";
8
+ export * from "./agents_preview.js";
9
+ export * from "./box_bus.js";
10
+ export * from "./echo.js";
11
+ export * from "./keys.js";
12
+ export * from "./paint_source.js";
13
+ export * from "./raster.js";
14
+ export * from "./thought_birth.js";
15
+ export * from "./thought_collapsed.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * F1 first-frame gate. `offer` always enqueues (ready or not). `deliver`
3
+ * is empty until `markReady` — never hand keys to a worker that has not
4
+ * published its first frame. After ready is still queue-then-deliver, not
5
+ * pass-through: this type only decides what is deliverable, never sends.
6
+ */
7
+ export interface KeyBuffer<T> {
8
+ readonly ready: boolean;
9
+ readonly held: readonly T[];
10
+ }
11
+ /** Fresh queue per call — shared `held` would leak across boots. */
12
+ export declare function emptyQueue<T>(): KeyBuffer<T>;
13
+ export declare function offer<T>(queue: KeyBuffer<T>, events: readonly T[]): KeyBuffer<T>;
14
+ export declare function markReady<T>(queue: KeyBuffer<T>): KeyBuffer<T>;
15
+ export declare function deliver<T>(queue: KeyBuffer<T>): {
16
+ readonly queue: KeyBuffer<T>;
17
+ readonly events: readonly T[];
18
+ };
19
+ //# sourceMappingURL=key_buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key_buffer.d.ts","sourceRoot":"","sources":["../../src/runtime/key_buffer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;CAC7B;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAE5C;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAGhF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAE9D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAA;CAAE,CAG/G"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * F1 first-frame gate. `offer` always enqueues (ready or not). `deliver`
3
+ * is empty until `markReady` — never hand keys to a worker that has not
4
+ * published its first frame. After ready is still queue-then-deliver, not
5
+ * pass-through: this type only decides what is deliverable, never sends.
6
+ */
7
+ /** Fresh queue per call — shared `held` would leak across boots. */
8
+ export function emptyQueue() {
9
+ return { ready: false, held: [] };
10
+ }
11
+ export function offer(queue, events) {
12
+ if (events.length === 0)
13
+ return queue;
14
+ return { ...queue, held: [...queue.held, ...events] };
15
+ }
16
+ export function markReady(queue) {
17
+ return queue.ready ? queue : { ...queue, ready: true };
18
+ }
19
+ export function deliver(queue) {
20
+ if (!queue.ready || queue.held.length === 0)
21
+ return { queue, events: [] };
22
+ return { queue: { ...queue, held: [] }, events: queue.held };
23
+ }
24
+ //# sourceMappingURL=key_buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key_buffer.js","sourceRoot":"","sources":["../../src/runtime/key_buffer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,oEAAoE;AACpE,MAAM,UAAU,UAAU;IACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,KAAK,CAAI,KAAmB,EAAE,MAAoB;IAChE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,SAAS,CAAI,KAAmB;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,OAAO,CAAI,KAAmB;IAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAC1E,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;AAC/D,CAAC"}