@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 @@
1
+ {"version":3,"file":"agents_preview.d.ts","sourceRoot":"","sources":["../../src/runtime/agents_preview.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAcrD,eAAO,MAAM,8BAA8B,2BAA2B,CAAC;AACvE,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,6BAA6B,0BAA0B,CAAC;AACrE,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AACjE,eAAO,MAAM,+BAA+B,4BAA4B,CAAC;AACzE,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AAEjE,4CAA4C;AAC5C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAIxC,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CASpF;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,UAAU,CA8Eb"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Subagent sneak-peek: 90×90 centered overlay. Chrome-frame contour (not a
3
+ * sharp box): process title on ╭╮, Esc: close on ╰╯, omnibox right-│ thumb.
4
+ * Nested backdrop compounds with the agents drawer so the sidebar is 1× dim
5
+ * and the attached tape is 2×. Viewer only — no attach, no composer.
6
+ * Disclosures in the peeked tape still collapse on click.
7
+ */
8
+ import { CHROME_FRAME_CHROME_ROWS, chromeFrameTextWidth } from "../layout/chrome_frame.js";
9
+ import { measureNode } from "../layout/measure.js";
10
+ import { BgP, FgP } from "../lexicon/index.js";
11
+ import { thumbCoverage } from "../widgets/composer-picker.js";
12
+ /** Same key as {@link APP_FRAME_KEY} — kept local to avoid a paint_source cycle. */
13
+ const FRAME_KEY = "frame";
14
+ const FOLLOW_TAIL_SCROLL = Number.MAX_SAFE_INTEGER;
15
+ const PREVIEW_CLOSE = [{ key: "Esc", action: "close" }];
16
+ /**
17
+ * `│` + 1-cell pad. chromeFrameTextInset is composer `│ · ` (3) — that would
18
+ * leave the tape flush against the right │.
19
+ */
20
+ const PREVIEW_TAPE_INSET_X = 2;
21
+ export const APP_AGENTS_PREVIEW_OVERLAY_KEY = "agents:preview-overlay";
22
+ export const APP_AGENTS_PREVIEW_KEY = "agents:preview";
23
+ export const APP_AGENTS_PREVIEW_CHROME_KEY = "agents:preview:chrome";
24
+ export const APP_AGENTS_PREVIEW_BODY_KEY = "agents:preview:body";
25
+ export const APP_AGENTS_PREVIEW_VIEWPORT_KEY = "agents:preview:viewport";
26
+ export const APP_AGENTS_PREVIEW_TAPE_KEY = "agents:preview:tape";
27
+ /** Viewport fraction for the peek modal. */
28
+ export const AGENTS_PREVIEW_SCALE = 0.9;
29
+ const PANEL_FILL = { bgRole: "surface", bgProminence: BgP.panel };
30
+ export function agentsPreviewRect(cols, rows) {
31
+ const w = Math.max(8, Math.floor(cols * AGENTS_PREVIEW_SCALE));
32
+ const h = Math.max(4, Math.floor(rows * AGENTS_PREVIEW_SCALE));
33
+ return {
34
+ w,
35
+ h,
36
+ x: Math.floor((cols - w) / 2),
37
+ y: Math.floor((rows - h) / 2),
38
+ };
39
+ }
40
+ /** Width offered to the peeked tape: modal minus chrome_frame body chrome. */
41
+ export function agentsPreviewInnerWidth(cols) {
42
+ return Math.max(8, chromeFrameTextWidth(agentsPreviewRect(cols, 24).w));
43
+ }
44
+ export function withAgentsPreview(args) {
45
+ const rect = agentsPreviewRect(args.cols, args.rows);
46
+ const innerW = Math.max(1, chromeFrameTextWidth(rect.w));
47
+ const innerH = Math.max(1, rect.h - CHROME_FRAME_CHROME_ROWS);
48
+ const tapeH = Math.max(1, measureNode(args.tape, innerW, 10_000).h);
49
+ const maxScroll = Math.max(0, tapeH - innerH);
50
+ const atBottom = args.atBottom !== false;
51
+ const scroll = atBottom ? maxScroll : Math.min(maxScroll, Math.max(0, args.scroll ?? 0));
52
+ const title = (args.title ?? "").trim();
53
+ const overlay = {
54
+ type: "overlay",
55
+ key: APP_AGENTS_PREVIEW_OVERLAY_KEY,
56
+ origin: { x: rect.x, y: rect.y },
57
+ backdrop: true,
58
+ children: [
59
+ {
60
+ type: "box",
61
+ key: APP_AGENTS_PREVIEW_KEY,
62
+ userSelect: "none",
63
+ style: {
64
+ width: rect.w,
65
+ height: rect.h,
66
+ overflow: "hidden",
67
+ background: PANEL_FILL,
68
+ },
69
+ children: [
70
+ {
71
+ type: "chrome_frame",
72
+ key: APP_AGENTS_PREVIEW_CHROME_KEY,
73
+ width: rect.w,
74
+ draft: "",
75
+ topSegs: title === ""
76
+ ? undefined
77
+ : [
78
+ { text: "─ ", role: "foreground", prominence: FgP.ghost },
79
+ { text: title, role: "foreground", prominence: FgP.primary },
80
+ { text: " " },
81
+ ],
82
+ hotkeys: PREVIEW_CLOSE,
83
+ hotkeysBottom: true,
84
+ bodyUserSelect: "none",
85
+ bodySegRows: Array.from({ length: innerH }, () => [{ text: " " }]),
86
+ bodyRightCoverage: thumbCoverage(tapeH, innerH, scroll),
87
+ },
88
+ {
89
+ type: "overlay",
90
+ key: APP_AGENTS_PREVIEW_BODY_KEY,
91
+ origin: { x: PREVIEW_TAPE_INSET_X, y: 1 },
92
+ children: [
93
+ {
94
+ type: "viewport",
95
+ id: APP_AGENTS_PREVIEW_TAPE_KEY,
96
+ key: APP_AGENTS_PREVIEW_VIEWPORT_KEY,
97
+ overflowY: "scroll",
98
+ overflowAnchor: "none",
99
+ scroll: atBottom ? FOLLOW_TAIL_SCROLL : scroll,
100
+ style: { width: innerW, height: innerH },
101
+ children: [args.tape],
102
+ },
103
+ ],
104
+ },
105
+ ],
106
+ },
107
+ ],
108
+ };
109
+ if (args.root.type === "box" && args.root.key === FRAME_KEY) {
110
+ return {
111
+ ...args.root,
112
+ children: [...(args.root.children ?? []), overlay],
113
+ };
114
+ }
115
+ return {
116
+ type: "box",
117
+ key: FRAME_KEY,
118
+ style: { width: args.cols, height: args.rows },
119
+ children: [args.root, overlay],
120
+ };
121
+ }
122
+ //# sourceMappingURL=agents_preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents_preview.js","sourceRoot":"","sources":["../../src/runtime/agents_preview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Paint mailbox (structure / box_set / box_free) — the keyed-mirror mailbox
3
+ * discipline for box-cadence hosts. Obeys I1 (`README.md`): paint + mailbox
4
+ * push/peek share one Node event loop, no Atomics, no off-loop paint without
5
+ * a concurrency redesign. (The retired whole-model `LatestMailbox` lives on
6
+ * bench-locally in `src/bench/host.ts`.)
7
+ *
8
+ * Worker → UI: `structure{gen, tree}` (latest-wins by gen), `box_set{boxId,
9
+ * value}` (coalescable per boxId), `box_free{boxIds}` (mirror invalidation).
10
+ * UI → worker: `input_events[]`, `resize{cols, rows}`,
11
+ * `picker_activate{key}`, `picker_scroll{delta}`, `agents_scroll{delta}`,
12
+ * `agents_focus{key}`, `agents_hover{key}`, `activate{key}`.
13
+ *
14
+ * Everything here is structured-clone-safe plain data — no mobx observables,
15
+ * no plexus models, no functions cross this seam. Transport is
16
+ * `worker_threads` postMessage; this module defines the message shapes and
17
+ * the pure mailbox reducer, never the transport.
18
+ */
19
+ export interface StructureMessage {
20
+ readonly kind: "structure";
21
+ readonly gen: number;
22
+ readonly tree: unknown;
23
+ }
24
+ export interface BoxSetMessage {
25
+ readonly kind: "box_set";
26
+ /** Worker-minted, opaque integer id — the structure refers to boxes by id only. */
27
+ readonly boxId: number;
28
+ readonly value: unknown;
29
+ }
30
+ export interface BoxFreeMessage {
31
+ readonly kind: "box_free";
32
+ readonly boxIds: readonly number[];
33
+ }
34
+ export type BoxBusDownMessage = StructureMessage | BoxSetMessage | BoxFreeMessage;
35
+ /**
36
+ * Decoding lives UI-side with the single decoder; this module carries the
37
+ * ALREADY-DECODED result across the seam. Minimal shape covering the fields a
38
+ * key event needs to be replayed host-side — mirrors the conventional DOM
39
+ * `KeyboardEvent` modifier fields, the smallest vocabulary that lets a
40
+ * consumer distinguish plain keys from chorded ones.
41
+ */
42
+ export interface DecodedKeyEvent {
43
+ readonly key: string;
44
+ readonly ctrl?: boolean;
45
+ readonly alt?: boolean;
46
+ readonly shift?: boolean;
47
+ readonly meta?: boolean;
48
+ }
49
+ export interface InputEventsMessage {
50
+ readonly kind: "input_events";
51
+ readonly events: readonly DecodedKeyEvent[];
52
+ }
53
+ export interface ResizeMessage {
54
+ readonly kind: "resize";
55
+ readonly cols: number;
56
+ readonly rows: number;
57
+ }
58
+ export interface PickerActivateMessage {
59
+ readonly kind: "picker_activate";
60
+ readonly key: string;
61
+ }
62
+ export interface PickerScrollMessage {
63
+ readonly kind: "picker_scroll";
64
+ readonly delta: 1 | -1;
65
+ }
66
+ /**
67
+ * Bare-click activate (catalog row, button). Distinct from picker_activate —
68
+ * that key is a slash-complete row; this one is any `intent: "activate"` hit.
69
+ */
70
+ export interface ActivateMessage {
71
+ readonly kind: "activate";
72
+ readonly key: string;
73
+ }
74
+ export interface AgentsScrollMessage {
75
+ readonly kind: "agents_scroll";
76
+ readonly delta: 1 | -1;
77
+ }
78
+ /** Set keyboard home. Pointer path uses {@link AgentsHoverMessage}. */
79
+ export interface AgentsFocusMessage {
80
+ readonly kind: "agents_focus";
81
+ readonly key: string;
82
+ }
83
+ /** Pointer keep-alive over a session row, peek, or gap. Null on leave. */
84
+ export interface AgentsHoverMessage {
85
+ readonly kind: "agents_hover";
86
+ readonly key: string | null;
87
+ }
88
+ export interface SubmitPart {
89
+ readonly text?: string;
90
+ readonly image?: {
91
+ readonly mime: string;
92
+ readonly bytes: Uint8Array;
93
+ };
94
+ }
95
+ export interface SubmitCommand {
96
+ readonly name: string;
97
+ readonly args: Readonly<Record<string, string>>;
98
+ }
99
+ /** Render → host. Parts are the model prompt. Command is not a part. */
100
+ export interface SubmitMessage {
101
+ readonly kind: "submit";
102
+ readonly parts: readonly SubmitPart[];
103
+ readonly command: SubmitCommand | null;
104
+ }
105
+ export declare function receiveSubmit(message: {
106
+ readonly kind: string;
107
+ }): {
108
+ readonly parts: readonly SubmitPart[];
109
+ readonly command: SubmitCommand | null;
110
+ } | null;
111
+ export declare function submitMessage(split: {
112
+ readonly parts: readonly SubmitPart[];
113
+ readonly command: SubmitCommand | null;
114
+ }): SubmitMessage;
115
+ export type BoxBusUpMessage = InputEventsMessage | ResizeMessage | PickerActivateMessage | PickerScrollMessage | AgentsScrollMessage | AgentsFocusMessage | AgentsHoverMessage | ActivateMessage | SubmitMessage;
116
+ /** The UI thread's dumb mirror of worker-pushed state. */
117
+ export interface BoxMailbox {
118
+ readonly structureGen: number | null;
119
+ readonly tree: unknown;
120
+ readonly boxes: ReadonlyMap<number, unknown>;
121
+ }
122
+ /**
123
+ * A FRESH empty mailbox, per call.
124
+ *
125
+ * A factory rather than a shared constant: `boxes` is a nested `Map`, which a
126
+ * top-level freeze does not protect at all — `Map.set` ignores frozen-ness of
127
+ * its container — so a single stray write would taint the baseline every later
128
+ * mirror starts from. Today's `applyBoxBusMessage` is copy-on-write and never
129
+ * mutates it, but that is a property of the current call sites, not of the
130
+ * value. Same resolution as the model package's collapse baseline.
131
+ */
132
+ export declare function emptyMailbox(): BoxMailbox;
133
+ /**
134
+ * Apply one `BoxBusDownMessage` to the mailbox. Three laws, each one branch:
135
+ * `structure` is latest-wins by gen (stale gens dropped) and replaces
136
+ * tree/gen only — never `boxes`. `box_set` overwrites per-boxId (a `Map.set`
137
+ * on the same key IS the coalesce). `box_free` is the only invalidation
138
+ * (deletes named mirrors). A "new tree → empty Map" edit drops in-flight
139
+ * box_sets that arrived before or with the structure.
140
+ */
141
+ export declare function applyBoxBusMessage(mailbox: BoxMailbox, message: BoxBusDownMessage): BoxMailbox;
142
+ /** Fold a whole batch through the mailbox in order — what a UI thread does once per animation frame. */
143
+ export declare function applyBoxBusBatch(mailbox: BoxMailbox, messages: readonly BoxBusDownMessage[]): BoxMailbox;
144
+ //# sourceMappingURL=box_bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"box_bus.d.ts","sourceRoot":"","sources":["../../src/runtime/box_bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,aAAa,GAAG,cAAc,CAAC;AAIlF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB;AAED,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;KAAE,CAAC;CACxE;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACjD;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CACxC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IACjE,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CACxC,GAAG,IAAI,CAIP;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;CACxC,GAAG,aAAa,CAEhB;AAED,MAAM,MAAM,eAAe,GACvB,kBAAkB,GAClB,aAAa,GACb,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,eAAe,GACf,aAAa,CAAC;AAIlB,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,UAAU,CAEzC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAiB9F;AAED,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GAAG,UAAU,CAExG"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Paint mailbox (structure / box_set / box_free) — the keyed-mirror mailbox
3
+ * discipline for box-cadence hosts. Obeys I1 (`README.md`): paint + mailbox
4
+ * push/peek share one Node event loop, no Atomics, no off-loop paint without
5
+ * a concurrency redesign. (The retired whole-model `LatestMailbox` lives on
6
+ * bench-locally in `src/bench/host.ts`.)
7
+ *
8
+ * Worker → UI: `structure{gen, tree}` (latest-wins by gen), `box_set{boxId,
9
+ * value}` (coalescable per boxId), `box_free{boxIds}` (mirror invalidation).
10
+ * UI → worker: `input_events[]`, `resize{cols, rows}`,
11
+ * `picker_activate{key}`, `picker_scroll{delta}`, `agents_scroll{delta}`,
12
+ * `agents_focus{key}`, `agents_hover{key}`, `activate{key}`.
13
+ *
14
+ * Everything here is structured-clone-safe plain data — no mobx observables,
15
+ * no plexus models, no functions cross this seam. Transport is
16
+ * `worker_threads` postMessage; this module defines the message shapes and
17
+ * the pure mailbox reducer, never the transport.
18
+ */
19
+ export function receiveSubmit(message) {
20
+ if (message.kind !== "submit")
21
+ return null;
22
+ const submit = message;
23
+ return { parts: submit.parts, command: submit.command };
24
+ }
25
+ export function submitMessage(split) {
26
+ return { kind: "submit", parts: split.parts, command: split.command };
27
+ }
28
+ /**
29
+ * A FRESH empty mailbox, per call.
30
+ *
31
+ * A factory rather than a shared constant: `boxes` is a nested `Map`, which a
32
+ * top-level freeze does not protect at all — `Map.set` ignores frozen-ness of
33
+ * its container — so a single stray write would taint the baseline every later
34
+ * mirror starts from. Today's `applyBoxBusMessage` is copy-on-write and never
35
+ * mutates it, but that is a property of the current call sites, not of the
36
+ * value. Same resolution as the model package's collapse baseline.
37
+ */
38
+ export function emptyMailbox() {
39
+ return { structureGen: null, tree: null, boxes: new Map() };
40
+ }
41
+ /**
42
+ * Apply one `BoxBusDownMessage` to the mailbox. Three laws, each one branch:
43
+ * `structure` is latest-wins by gen (stale gens dropped) and replaces
44
+ * tree/gen only — never `boxes`. `box_set` overwrites per-boxId (a `Map.set`
45
+ * on the same key IS the coalesce). `box_free` is the only invalidation
46
+ * (deletes named mirrors). A "new tree → empty Map" edit drops in-flight
47
+ * box_sets that arrived before or with the structure.
48
+ */
49
+ export function applyBoxBusMessage(mailbox, message) {
50
+ switch (message.kind) {
51
+ case "structure":
52
+ if (mailbox.structureGen !== null && message.gen <= mailbox.structureGen)
53
+ return mailbox;
54
+ return { ...mailbox, structureGen: message.gen, tree: message.tree };
55
+ case "box_set": {
56
+ const boxes = new Map(mailbox.boxes);
57
+ boxes.set(message.boxId, message.value);
58
+ return { ...mailbox, boxes };
59
+ }
60
+ case "box_free": {
61
+ if (message.boxIds.length === 0)
62
+ return mailbox;
63
+ const boxes = new Map(mailbox.boxes);
64
+ for (const boxId of message.boxIds)
65
+ boxes.delete(boxId);
66
+ return { ...mailbox, boxes };
67
+ }
68
+ }
69
+ }
70
+ /** Fold a whole batch through the mailbox in order — what a UI thread does once per animation frame. */
71
+ export function applyBoxBusBatch(mailbox, messages) {
72
+ return messages.reduce(applyBoxBusMessage, mailbox);
73
+ }
74
+ //# sourceMappingURL=box_bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"box_bus.js","sourceRoot":"","sources":["../../src/runtime/box_bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAyGH,MAAM,UAAU,aAAa,CAAC,OAAkC;IAI9D,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAwB,CAAC;IACxC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAG7B;IACC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;AACxE,CAAC;AAsBD;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAmB,EAAE,OAA0B;IAChF,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,YAAY;gBAAE,OAAO,OAAO,CAAC;YACzF,OAAO,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACvE,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC;YAChD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM;gBAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxD,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,gBAAgB,CAAC,OAAmB,EAAE,QAAsC;IAC1F,OAAO,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { RichRun } from "../input/rich-draft.js";
2
+ export type ClipboardImage = {
3
+ readonly id: "clip";
4
+ readonly mime: "image/png";
5
+ readonly bytes: Buffer;
6
+ };
7
+ export type ClipboardProbe = {
8
+ readonly platform: NodeJS.Platform;
9
+ readonly info: string;
10
+ readonly readPng: () => Buffer | string;
11
+ };
12
+ export declare function clipboardImage(probe?: ClipboardProbe): Promise<ClipboardImage | null>;
13
+ /** osascript prints either raw bytes or `«data PNGf<hex>»`. Both become a buffer. */
14
+ export declare function decodeClipboardPng(printed: Buffer | string): Buffer;
15
+ /**
16
+ * Paste prefers pixels. A path that happens to end in `.png` stays text
17
+ * unless the pasteboard actually holds an image.
18
+ */
19
+ export declare function pasteRuns(text: string, probe?: ClipboardProbe): Promise<readonly RichRun[]>;
20
+ //# sourceMappingURL=clipboard-image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard-image.d.ts","sourceRoot":"","sources":["../../src/runtime/clipboard-image.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAKtD,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,GAAG,MAAM,CAAC;CACzC,CAAC;AAoBF,wBAAsB,cAAc,CAAC,KAAK,GAAE,cAA8B,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAM1G;AAED,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAUnE;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAIjG"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Clipboard image, macOS only.
3
+ *
4
+ * A terminal paste delivers text. Pixels stay on the pasteboard, so a paste
5
+ * that should become an image chip has to ask for them separately. The probe
6
+ * is injectable: tests never call osascript.
7
+ */
8
+ import { execFileSync } from "node:child_process";
9
+ import { intakePaste } from "../input/rich-intake.js";
10
+ const IMAGE_CLASSES = ["PNGf", "TIFF picture"];
11
+ function darwinProbe() {
12
+ return {
13
+ platform: process.platform,
14
+ info: execFileSync("osascript", ["-e", "clipboard info"], { encoding: "utf8" }),
15
+ readPng: () => {
16
+ try {
17
+ return execFileSync("osascript", ["-e", "get the clipboard as «class PNGf»"], {
18
+ encoding: "utf8",
19
+ stdio: ["ignore", "pipe", "pipe"],
20
+ });
21
+ }
22
+ catch (error) {
23
+ const failed = error;
24
+ return `${failed.stdout ?? ""}\n${failed.stderr ?? ""}`;
25
+ }
26
+ },
27
+ };
28
+ }
29
+ export async function clipboardImage(probe = darwinProbe()) {
30
+ if (probe.platform !== "darwin")
31
+ return null;
32
+ if (!IMAGE_CLASSES.some((kind) => probe.info.includes(kind)))
33
+ return null;
34
+ const bytes = decodeClipboardPng(probe.readPng());
35
+ if (bytes.length === 0)
36
+ return null;
37
+ return { id: "clip", mime: "image/png", bytes };
38
+ }
39
+ /** osascript prints either raw bytes or `«data PNGf<hex>»`. Both become a buffer. */
40
+ export function decodeClipboardPng(printed) {
41
+ const text = typeof printed === "string" ? printed : printed.toString("utf8");
42
+ const hex = /«data PNGf([0-9A-Fa-f]+)»/.exec(text)?.[1];
43
+ if (hex !== undefined)
44
+ return Buffer.from(hex, "hex");
45
+ const words = text
46
+ .trim()
47
+ .split(/\s+/)
48
+ .filter((word) => /^\d+$/.test(word));
49
+ if (words.length > 0)
50
+ return Buffer.from(words.map(Number));
51
+ return typeof printed === "string" ? Buffer.alloc(0) : printed;
52
+ }
53
+ /**
54
+ * Paste prefers pixels. A path that happens to end in `.png` stays text
55
+ * unless the pasteboard actually holds an image.
56
+ */
57
+ export async function pasteRuns(text, probe) {
58
+ const image = await clipboardImage(probe);
59
+ const input = image === null ? { text } : { text, image };
60
+ return intakePaste(input);
61
+ }
62
+ //# sourceMappingURL=clipboard-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard-image.js","sourceRoot":"","sources":["../../src/runtime/clipboard-image.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Copy-confirmation chrome — a present-path overlay, not a LayoutNode.
3
+ *
4
+ * Layout `overlay` participates in hit (backdrop dismiss). This plaque does
5
+ * not: mousedown is passthrough, serialize/word-snap read the pre-overlay
6
+ * buffer. Host paints it after selection recolor, onto a clone.
7
+ *
8
+ * Rim uses chrome_frame corners (╭╮╰╯), furniture weight. Label is primary.
9
+ * Glyphs only — no fill. Under-cell bg shows through (`put` mergeStyle).
10
+ *
11
+ * Place: outside the range-end side of the selection (below when active is
12
+ * down/same-row, above when selecting upward). Flip when that side does not
13
+ * fit the viewport. Horizontal center-anchor on the end cell, then clamp.
14
+ */
15
+ import { type Buffer, type Style } from "../buffer/index.js";
16
+ export declare const COPY_TOAST_TEXT = "Copied";
17
+ /** Move / key / scroll may dismiss after this. Press dismisses immediately. */
18
+ export declare const COPY_TOAST_ARM_MS = 3000;
19
+ /** Hard cap — toast never outlives this, even with no input. */
20
+ export declare const COPY_TOAST_HOLD_MS = 10000;
21
+ export type CopyToastPlace = {
22
+ x: number;
23
+ y: number;
24
+ w: number;
25
+ h: number;
26
+ side: "below" | "above";
27
+ };
28
+ export declare function copyToastSize(cols: number, rows: number, text?: string): {
29
+ w: number;
30
+ h: number;
31
+ };
32
+ export declare function placeCopyToast(args: {
33
+ end: {
34
+ col: number;
35
+ row: number;
36
+ };
37
+ anchor: {
38
+ col: number;
39
+ row: number;
40
+ };
41
+ cols: number;
42
+ rows: number;
43
+ text?: string;
44
+ }): CopyToastPlace;
45
+ export declare function paintCopyToast(buf: Buffer, place: CopyToastPlace, resolveStyle: (style: Style) => Style, text?: string): void;
46
+ //# sourceMappingURL=copy_toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy_toast.d.ts","sourceRoot":"","sources":["../../src/runtime/copy_toast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAO,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAKlE,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAwB,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAOlH;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,GAAG,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,cAAc,CAgCjB;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,cAAc,EACrB,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,EACrC,IAAI,GAAE,MAAwB,GAC7B,IAAI,CA8BN"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Copy-confirmation chrome — a present-path overlay, not a LayoutNode.
3
+ *
4
+ * Layout `overlay` participates in hit (backdrop dismiss). This plaque does
5
+ * not: mousedown is passthrough, serialize/word-snap read the pre-overlay
6
+ * buffer. Host paints it after selection recolor, onto a clone.
7
+ *
8
+ * Rim uses chrome_frame corners (╭╮╰╯), furniture weight. Label is primary.
9
+ * Glyphs only — no fill. Under-cell bg shows through (`put` mergeStyle).
10
+ *
11
+ * Place: outside the range-end side of the selection (below when active is
12
+ * down/same-row, above when selecting upward). Flip when that side does not
13
+ * fit the viewport. Horizontal center-anchor on the end cell, then clamp.
14
+ */
15
+ import { put } from "../buffer/index.js";
16
+ import { CHROME_FRAME_CORNERS } from "../layout/index.js";
17
+ import { FgP } from "../lexicon/index.js";
18
+ import { displayWidth } from "../measure/index.js";
19
+ export const COPY_TOAST_TEXT = "Copied";
20
+ /** Move / key / scroll may dismiss after this. Press dismisses immediately. */
21
+ export const COPY_TOAST_ARM_MS = 3000;
22
+ /** Hard cap — toast never outlives this, even with no input. */
23
+ export const COPY_TOAST_HOLD_MS = 10_000;
24
+ export function copyToastSize(cols, rows, text = COPY_TOAST_TEXT) {
25
+ const inner = Math.max(1, displayWidth(text));
26
+ const padded = inner + 4;
27
+ const tight = inner + 2;
28
+ const w = cols >= padded ? padded : Math.min(Math.max(2, cols), tight);
29
+ const h = Math.min(3, Math.max(1, rows));
30
+ return { w, h };
31
+ }
32
+ export function placeCopyToast(args) {
33
+ const { w, h } = copyToastSize(args.cols, args.rows, args.text);
34
+ const preferAbove = args.end.row < args.anchor.row;
35
+ const belowY = args.end.row + 1;
36
+ const aboveY = args.end.row - h;
37
+ const belowFits = belowY >= 0 && belowY + h <= args.rows;
38
+ const aboveFits = aboveY >= 0 && aboveY + h <= args.rows;
39
+ let side;
40
+ let y;
41
+ if (preferAbove) {
42
+ if (aboveFits) {
43
+ side = "above";
44
+ y = aboveY;
45
+ }
46
+ else if (belowFits) {
47
+ side = "below";
48
+ y = belowY;
49
+ }
50
+ else {
51
+ side = "above";
52
+ y = clamp(aboveY, 0, Math.max(0, args.rows - h));
53
+ }
54
+ }
55
+ else if (belowFits) {
56
+ side = "below";
57
+ y = belowY;
58
+ }
59
+ else if (aboveFits) {
60
+ side = "above";
61
+ y = aboveY;
62
+ }
63
+ else {
64
+ side = "below";
65
+ y = clamp(belowY, 0, Math.max(0, args.rows - h));
66
+ }
67
+ const x = clamp(args.end.col - Math.floor((w - 1) / 2), 0, Math.max(0, args.cols - w));
68
+ return { x, y, w, h, side };
69
+ }
70
+ export function paintCopyToast(buf, place, resolveStyle, text = COPY_TOAST_TEXT) {
71
+ const { x, y, w, h } = place;
72
+ if (w < 1 || h < 1)
73
+ return;
74
+ const rim = resolveStyle({ role: "foreground", prominence: FgP.ghost });
75
+ const ink = resolveStyle({ role: "foreground", prominence: FgP.primary });
76
+ if (h === 1) {
77
+ put(buf, x, y, clipToWidth(text, w), ink);
78
+ return;
79
+ }
80
+ const bar = "─".repeat(Math.max(0, w - 2));
81
+ const top = w >= 2 ? `${CHROME_FRAME_CORNERS.tl}${bar}${CHROME_FRAME_CORNERS.tr}` : "│";
82
+ put(buf, x, y, top.slice(0, w), rim);
83
+ if (h >= 3) {
84
+ const bot = w >= 2 ? `${CHROME_FRAME_CORNERS.bl}${bar}${CHROME_FRAME_CORNERS.br}` : "│";
85
+ put(buf, x, y + h - 1, bot.slice(0, w), rim);
86
+ }
87
+ const bodyY = y + 1;
88
+ if (bodyY >= y + h)
89
+ return;
90
+ if (w < 2) {
91
+ put(buf, x, bodyY, "│", rim);
92
+ return;
93
+ }
94
+ put(buf, x, bodyY, "│", rim);
95
+ put(buf, x + w - 1, bodyY, "│", rim);
96
+ const inner = w - 2;
97
+ if (inner > 0)
98
+ put(buf, x + 1, bodyY, " ".repeat(inner), {});
99
+ const label = clipToWidth(text, inner);
100
+ const labelW = displayWidth(label);
101
+ const left = Math.max(0, Math.floor((inner - labelW) / 2));
102
+ put(buf, x + 1 + left, bodyY, label, ink);
103
+ }
104
+ function clamp(n, lo, hi) {
105
+ return Math.min(hi, Math.max(lo, n));
106
+ }
107
+ function clipToWidth(text, width) {
108
+ if (width <= 0)
109
+ return "";
110
+ if (displayWidth(text) <= width)
111
+ return text;
112
+ let t = text;
113
+ while (t.length > 0 && displayWidth(t) > width)
114
+ t = t.slice(0, -1);
115
+ return t;
116
+ }
117
+ //# sourceMappingURL=copy_toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy_toast.js","sourceRoot":"","sources":["../../src/runtime/copy_toast.ts"],"names":[],"mappings":"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"}