@sagmans/dsh-tui 0.12.1 → 0.14.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 (489) hide show
  1. package/.agents/skills/dsh-tui-dogfood/SKILL.md +18 -2
  2. package/.agents/skills/dsh-tui-dogfood/references/home-state.md +4 -4
  3. package/.agents/skills/dsh-tui-dogfood/scripts/clone-links.mjs +19 -11
  4. package/.agents/skills/dsh-tui-dogfood/scripts/run-plugin-from-worktree.sh +31 -9
  5. package/.agents/skills/dsh-tui-update-models/SKILL.md +1 -1
  6. package/.agents/skills/dsh-tui-update-models/references/model-wiring.md +6 -6
  7. package/.agents/skills/dsh-tui-update-models/scripts/dump-model-catalog.mjs +21 -13
  8. package/README.md +61 -23
  9. package/cordis.patch.yml +2 -0
  10. package/lib/agent/fork.d.ts +3 -1
  11. package/lib/agent/fork.d.ts.map +1 -1
  12. package/lib/agent/fork.js +2 -0
  13. package/lib/agent/fork.js.map +1 -1
  14. package/lib/agent/history.d.ts +14 -22
  15. package/lib/agent/history.d.ts.map +1 -1
  16. package/lib/agent/history.js +20 -14
  17. package/lib/agent/history.js.map +1 -1
  18. package/lib/agent/host.d.ts.map +1 -1
  19. package/lib/agent/host.js +6 -0
  20. package/lib/agent/host.js.map +1 -1
  21. package/lib/agent/model.d.ts +10 -8
  22. package/lib/agent/model.d.ts.map +1 -1
  23. package/lib/agent/model.js +9 -7
  24. package/lib/agent/model.js.map +1 -1
  25. package/lib/agent/present.d.ts +1 -1
  26. package/lib/agent/present.d.ts.map +1 -1
  27. package/lib/agent/present.js +1 -1
  28. package/lib/agent/present.js.map +1 -1
  29. package/lib/agent/presets.d.ts +4 -1
  30. package/lib/agent/presets.d.ts.map +1 -1
  31. package/lib/agent/presets.js +9 -2
  32. package/lib/agent/presets.js.map +1 -1
  33. package/lib/agent/projections.d.ts +8 -2
  34. package/lib/agent/projections.d.ts.map +1 -1
  35. package/lib/agent/projections.js +8 -2
  36. package/lib/agent/projections.js.map +1 -1
  37. package/lib/agent/prompt-history.d.ts +8 -48
  38. package/lib/agent/prompt-history.d.ts.map +1 -1
  39. package/lib/agent/prompt-history.js +34 -15
  40. package/lib/agent/prompt-history.js.map +1 -1
  41. package/lib/agent/status.d.ts +9 -24
  42. package/lib/agent/status.d.ts.map +1 -1
  43. package/lib/agent/status.js +7 -2
  44. package/lib/agent/status.js.map +1 -1
  45. package/lib/agent/undo.d.ts +2 -4
  46. package/lib/agent/undo.d.ts.map +1 -1
  47. package/lib/agent/undo.js +10 -5
  48. package/lib/agent/undo.js.map +1 -1
  49. package/lib/cards/composition.d.ts +7 -7
  50. package/lib/cards/composition.d.ts.map +1 -1
  51. package/lib/cards/composition.js +13 -12
  52. package/lib/cards/composition.js.map +1 -1
  53. package/lib/cards/presenter.d.ts +11 -14
  54. package/lib/cards/presenter.d.ts.map +1 -1
  55. package/lib/cards/presenter.js +40 -19
  56. package/lib/cards/presenter.js.map +1 -1
  57. package/lib/cards/preview.d.ts.map +1 -1
  58. package/lib/cards/preview.js +5 -1
  59. package/lib/cards/preview.js.map +1 -1
  60. package/lib/cards.d.ts +17 -23
  61. package/lib/cards.d.ts.map +1 -1
  62. package/lib/cards.js +27 -12
  63. package/lib/cards.js.map +1 -1
  64. package/lib/compat/probe.d.ts +2 -5
  65. package/lib/compat/probe.d.ts.map +1 -1
  66. package/lib/compat/probe.js +2 -2
  67. package/lib/compat/probe.js.map +1 -1
  68. package/lib/compat/section.d.ts +5 -4
  69. package/lib/compat/section.d.ts.map +1 -1
  70. package/lib/compat/section.js +4 -0
  71. package/lib/compat/section.js.map +1 -1
  72. package/lib/config.d.ts +0 -3
  73. package/lib/config.d.ts.map +1 -1
  74. package/lib/config.js +7 -1
  75. package/lib/config.js.map +1 -1
  76. package/lib/export.d.ts +5 -7
  77. package/lib/export.d.ts.map +1 -1
  78. package/lib/export.js +48 -10
  79. package/lib/export.js.map +1 -1
  80. package/lib/fold-cursor.d.ts +3 -3
  81. package/lib/fold-cursor.d.ts.map +1 -1
  82. package/lib/fold-cursor.js +5 -3
  83. package/lib/fold-cursor.js.map +1 -1
  84. package/lib/gates/question-card.d.ts +3 -38
  85. package/lib/gates/question-card.d.ts.map +1 -1
  86. package/lib/gates/question-card.js +13 -10
  87. package/lib/gates/question-card.js.map +1 -1
  88. package/lib/gates/questions.d.ts +14 -8
  89. package/lib/gates/questions.d.ts.map +1 -1
  90. package/lib/gates/questions.js +25 -18
  91. package/lib/gates/questions.js.map +1 -1
  92. package/lib/gates.d.ts +17 -25
  93. package/lib/gates.d.ts.map +1 -1
  94. package/lib/gates.js +2 -4
  95. package/lib/gates.js.map +1 -1
  96. package/lib/herdr/client.d.ts +10 -12
  97. package/lib/herdr/client.d.ts.map +1 -1
  98. package/lib/herdr/client.js +9 -8
  99. package/lib/herdr/client.js.map +1 -1
  100. package/lib/herdr/constants.d.ts +3 -2
  101. package/lib/herdr/constants.d.ts.map +1 -1
  102. package/lib/herdr/constants.js +3 -2
  103. package/lib/herdr/constants.js.map +1 -1
  104. package/lib/herdr/reporter.d.ts +4 -39
  105. package/lib/herdr/reporter.d.ts.map +1 -1
  106. package/lib/herdr/reporter.js +13 -19
  107. package/lib/herdr/reporter.js.map +1 -1
  108. package/lib/herdr/state.d.ts +4 -3
  109. package/lib/herdr/state.d.ts.map +1 -1
  110. package/lib/herdr/state.js +6 -5
  111. package/lib/herdr/state.js.map +1 -1
  112. package/lib/host/preset-files.d.ts +0 -17
  113. package/lib/host/preset-files.d.ts.map +1 -1
  114. package/lib/host/preset-files.js +7 -2
  115. package/lib/host/preset-files.js.map +1 -1
  116. package/lib/host/roster.d.ts +1 -1
  117. package/lib/host/roster.d.ts.map +1 -1
  118. package/lib/host/roster.js +3 -3
  119. package/lib/host/roster.js.map +1 -1
  120. package/lib/host/runner.d.ts +2 -5
  121. package/lib/host/runner.d.ts.map +1 -1
  122. package/lib/host/runner.js +2 -5
  123. package/lib/host/runner.js.map +1 -1
  124. package/lib/identity.d.ts +6 -3
  125. package/lib/identity.d.ts.map +1 -1
  126. package/lib/identity.js +18 -3
  127. package/lib/identity.js.map +1 -1
  128. package/lib/index.d.ts +2 -0
  129. package/lib/index.d.ts.map +1 -1
  130. package/lib/index.js +42 -14
  131. package/lib/index.js.map +1 -1
  132. package/lib/injection.d.ts.map +1 -1
  133. package/lib/injection.js +1 -0
  134. package/lib/injection.js.map +1 -1
  135. package/lib/input/action-catalog.d.ts.map +1 -1
  136. package/lib/input/action-catalog.js +4 -0
  137. package/lib/input/action-catalog.js.map +1 -1
  138. package/lib/input/actions.d.ts +4 -3
  139. package/lib/input/actions.d.ts.map +1 -1
  140. package/lib/input/actions.js +8 -3
  141. package/lib/input/actions.js.map +1 -1
  142. package/lib/input/completion.d.ts +3 -11
  143. package/lib/input/completion.d.ts.map +1 -1
  144. package/lib/input/completion.js +8 -6
  145. package/lib/input/completion.js.map +1 -1
  146. package/lib/input/file-index.d.ts +1 -12
  147. package/lib/input/file-index.d.ts.map +1 -1
  148. package/lib/input/file-index.js +21 -17
  149. package/lib/input/file-index.js.map +1 -1
  150. package/lib/input/file-search.d.ts +6 -3
  151. package/lib/input/file-search.d.ts.map +1 -1
  152. package/lib/input/file-search.js +29 -10
  153. package/lib/input/file-search.js.map +1 -1
  154. package/lib/input/fuzzy.d.ts +6 -12
  155. package/lib/input/fuzzy.d.ts.map +1 -1
  156. package/lib/input/fuzzy.js +18 -27
  157. package/lib/input/fuzzy.js.map +1 -1
  158. package/lib/input/ghost.d.ts +5 -5
  159. package/lib/input/ghost.d.ts.map +1 -1
  160. package/lib/input/ghost.js +4 -3
  161. package/lib/input/ghost.js.map +1 -1
  162. package/lib/input/key-press.d.ts +8 -7
  163. package/lib/input/key-press.d.ts.map +1 -1
  164. package/lib/input/key-press.js +8 -6
  165. package/lib/input/key-press.js.map +1 -1
  166. package/lib/input/keymap-conflicts.d.ts +6 -6
  167. package/lib/input/keymap-conflicts.d.ts.map +1 -1
  168. package/lib/input/keymap-conflicts.js +6 -6
  169. package/lib/input/keymap-conflicts.js.map +1 -1
  170. package/lib/input/keymap.d.ts +6 -18
  171. package/lib/input/keymap.d.ts.map +1 -1
  172. package/lib/input/keymap.js +7 -10
  173. package/lib/input/keymap.js.map +1 -1
  174. package/lib/input/match.js +4 -4
  175. package/lib/input/match.js.map +1 -1
  176. package/lib/input/submission.d.ts +7 -3
  177. package/lib/input/submission.d.ts.map +1 -1
  178. package/lib/input/submission.js +2 -2
  179. package/lib/input/submission.js.map +1 -1
  180. package/lib/input/workspace-files.d.ts +1 -2
  181. package/lib/input/workspace-files.d.ts.map +1 -1
  182. package/lib/input/workspace-files.js +20 -11
  183. package/lib/input/workspace-files.js.map +1 -1
  184. package/lib/input.d.ts +6 -0
  185. package/lib/input.d.ts.map +1 -1
  186. package/lib/input.js +34 -1
  187. package/lib/input.js.map +1 -1
  188. package/lib/install-skills.d.ts +5 -22
  189. package/lib/install-skills.d.ts.map +1 -1
  190. package/lib/install-skills.js +18 -18
  191. package/lib/install-skills.js.map +1 -1
  192. package/lib/jobs.d.ts +10 -5
  193. package/lib/jobs.d.ts.map +1 -1
  194. package/lib/jobs.js +39 -13
  195. package/lib/jobs.js.map +1 -1
  196. package/lib/keymaps.d.ts.map +1 -1
  197. package/lib/keymaps.js +2 -0
  198. package/lib/keymaps.js.map +1 -1
  199. package/lib/keys-command.d.ts +1 -1
  200. package/lib/keys-command.d.ts.map +1 -1
  201. package/lib/model-list.d.ts +0 -27
  202. package/lib/model-list.d.ts.map +1 -1
  203. package/lib/model-list.js +1 -1
  204. package/lib/model-list.js.map +1 -1
  205. package/lib/moshi.d.ts +13 -0
  206. package/lib/moshi.d.ts.map +1 -0
  207. package/lib/moshi.js +130 -0
  208. package/lib/moshi.js.map +1 -0
  209. package/lib/spacing.d.ts +0 -7
  210. package/lib/spacing.d.ts.map +1 -1
  211. package/lib/spacing.js +1 -1
  212. package/lib/spacing.js.map +1 -1
  213. package/lib/startup.d.ts +1 -1
  214. package/lib/startup.d.ts.map +1 -1
  215. package/lib/startup.js +9 -1
  216. package/lib/startup.js.map +1 -1
  217. package/lib/stash/lock.d.ts +1 -37
  218. package/lib/stash/lock.d.ts.map +1 -1
  219. package/lib/stash/lock.js +41 -35
  220. package/lib/stash/lock.js.map +1 -1
  221. package/lib/stash/paths.d.ts +8 -7
  222. package/lib/stash/paths.d.ts.map +1 -1
  223. package/lib/stash/paths.js +21 -17
  224. package/lib/stash/paths.js.map +1 -1
  225. package/lib/stash/private-fs.d.ts +14 -5
  226. package/lib/stash/private-fs.d.ts.map +1 -1
  227. package/lib/stash/private-fs.js +30 -8
  228. package/lib/stash/private-fs.js.map +1 -1
  229. package/lib/stash/schema.d.ts +3 -6
  230. package/lib/stash/schema.d.ts.map +1 -1
  231. package/lib/stash/schema.js +11 -9
  232. package/lib/stash/schema.js.map +1 -1
  233. package/lib/stash/store.d.ts +9 -40
  234. package/lib/stash/store.d.ts.map +1 -1
  235. package/lib/stash/store.js +26 -24
  236. package/lib/stash/store.js.map +1 -1
  237. package/lib/stash.d.ts +7 -11
  238. package/lib/stash.d.ts.map +1 -1
  239. package/lib/stash.js +18 -11
  240. package/lib/stash.js.map +1 -1
  241. package/lib/subagents.d.ts +9 -9
  242. package/lib/subagents.d.ts.map +1 -1
  243. package/lib/subagents.js +19 -18
  244. package/lib/subagents.js.map +1 -1
  245. package/lib/surface/appearance-preferences.d.ts.map +1 -1
  246. package/lib/surface/appearance-preferences.js +7 -0
  247. package/lib/surface/appearance-preferences.js.map +1 -1
  248. package/lib/surface/appearance.d.ts.map +1 -1
  249. package/lib/surface/appearance.js +7 -2
  250. package/lib/surface/appearance.js.map +1 -1
  251. package/lib/surface/background-work.d.ts +2 -0
  252. package/lib/surface/background-work.d.ts.map +1 -1
  253. package/lib/surface/background-work.js +45 -36
  254. package/lib/surface/background-work.js.map +1 -1
  255. package/lib/surface/commands.d.ts.map +1 -1
  256. package/lib/surface/commands.js +17 -9
  257. package/lib/surface/commands.js.map +1 -1
  258. package/lib/surface/modal-input.d.ts +4 -0
  259. package/lib/surface/modal-input.d.ts.map +1 -1
  260. package/lib/surface/modal-input.js +81 -46
  261. package/lib/surface/modal-input.js.map +1 -1
  262. package/lib/surface/model-choice.d.ts.map +1 -1
  263. package/lib/surface/model-choice.js +10 -8
  264. package/lib/surface/model-choice.js.map +1 -1
  265. package/lib/surface/plugin-actions.d.ts.map +1 -1
  266. package/lib/surface/plugin-actions.js +4 -0
  267. package/lib/surface/plugin-actions.js.map +1 -1
  268. package/lib/surface/preset-choice.d.ts.map +1 -1
  269. package/lib/surface/preset-choice.js +15 -17
  270. package/lib/surface/preset-choice.js.map +1 -1
  271. package/lib/surface/prompt-input.js +1 -1
  272. package/lib/surface/prompt-input.js.map +1 -1
  273. package/lib/surface/prompt-memory.d.ts +7 -6
  274. package/lib/surface/prompt-memory.d.ts.map +1 -1
  275. package/lib/surface/prompt-memory.js +3 -3
  276. package/lib/surface/session-lifecycle.d.ts +7 -1
  277. package/lib/surface/session-lifecycle.d.ts.map +1 -1
  278. package/lib/surface/session-lifecycle.js +17 -12
  279. package/lib/surface/session-lifecycle.js.map +1 -1
  280. package/lib/surface/session-picker.js +1 -1
  281. package/lib/surface/session-picker.js.map +1 -1
  282. package/lib/surface/session-view.d.ts +1 -1
  283. package/lib/surface/session-view.d.ts.map +1 -1
  284. package/lib/surface/session-view.js +4 -5
  285. package/lib/surface/session-view.js.map +1 -1
  286. package/lib/surface/staged-turns.d.ts.map +1 -1
  287. package/lib/surface/staged-turns.js +8 -4
  288. package/lib/surface/staged-turns.js.map +1 -1
  289. package/lib/surface/terminal-lifecycle.d.ts +1 -1
  290. package/lib/surface/terminal-lifecycle.d.ts.map +1 -1
  291. package/lib/surface/terminal-lifecycle.js +8 -5
  292. package/lib/surface/terminal-lifecycle.js.map +1 -1
  293. package/lib/terminal/bell.d.ts +0 -2
  294. package/lib/terminal/bell.d.ts.map +1 -1
  295. package/lib/terminal/bell.js +2 -1
  296. package/lib/terminal/bell.js.map +1 -1
  297. package/lib/terminal/clipboard.d.ts +4 -4
  298. package/lib/terminal/clipboard.js +4 -4
  299. package/lib/terminal/external-editor.d.ts +4 -60
  300. package/lib/terminal/external-editor.d.ts.map +1 -1
  301. package/lib/terminal/external-editor.js +28 -40
  302. package/lib/terminal/external-editor.js.map +1 -1
  303. package/lib/terminal/host-writes.d.ts +7 -18
  304. package/lib/terminal/host-writes.d.ts.map +1 -1
  305. package/lib/terminal/host-writes.js +19 -18
  306. package/lib/terminal/host-writes.js.map +1 -1
  307. package/lib/terminal/input.d.ts +6 -0
  308. package/lib/terminal/input.d.ts.map +1 -0
  309. package/lib/terminal/input.js +15 -0
  310. package/lib/terminal/input.js.map +1 -0
  311. package/lib/terminal/restore.d.ts +2 -1
  312. package/lib/terminal/restore.d.ts.map +1 -1
  313. package/lib/terminal/signals.d.ts +2 -1
  314. package/lib/terminal/signals.d.ts.map +1 -1
  315. package/lib/terminal/signals.js +1 -1
  316. package/lib/terminal/signals.js.map +1 -1
  317. package/lib/terminal/title.d.ts +1 -11
  318. package/lib/terminal/title.d.ts.map +1 -1
  319. package/lib/terminal/title.js +5 -4
  320. package/lib/terminal/title.js.map +1 -1
  321. package/lib/terminal/warning-screen.d.ts +11 -2
  322. package/lib/terminal/warning-screen.d.ts.map +1 -1
  323. package/lib/terminal/warning-screen.js +166 -22
  324. package/lib/terminal/warning-screen.js.map +1 -1
  325. package/lib/terminal-text/scan.d.ts +4 -5
  326. package/lib/terminal-text/scan.d.ts.map +1 -1
  327. package/lib/terminal-text/scan.js +16 -9
  328. package/lib/terminal-text/scan.js.map +1 -1
  329. package/lib/terminal-text/sgr.d.ts +4 -3
  330. package/lib/terminal-text/sgr.d.ts.map +1 -1
  331. package/lib/terminal-text/sgr.js +9 -14
  332. package/lib/terminal-text/sgr.js.map +1 -1
  333. package/lib/terminal-text.d.ts +7 -12
  334. package/lib/terminal-text.d.ts.map +1 -1
  335. package/lib/terminal-text.js +32 -23
  336. package/lib/terminal-text.js.map +1 -1
  337. package/lib/text.d.ts +8 -14
  338. package/lib/text.d.ts.map +1 -1
  339. package/lib/text.js +14 -15
  340. package/lib/text.js.map +1 -1
  341. package/lib/theme-capability.d.ts +3 -15
  342. package/lib/theme-capability.d.ts.map +1 -1
  343. package/lib/theme-capability.js +18 -15
  344. package/lib/theme-capability.js.map +1 -1
  345. package/lib/theme-defaults.d.ts +3 -57
  346. package/lib/theme-defaults.d.ts.map +1 -1
  347. package/lib/theme-defaults.js +25 -14
  348. package/lib/theme-defaults.js.map +1 -1
  349. package/lib/theme-files.d.ts +16 -32
  350. package/lib/theme-files.d.ts.map +1 -1
  351. package/lib/theme-files.js +43 -27
  352. package/lib/theme-files.js.map +1 -1
  353. package/lib/theme-resolver.d.ts +3 -3
  354. package/lib/theme-resolver.d.ts.map +1 -1
  355. package/lib/theme-resolver.js +9 -6
  356. package/lib/theme-resolver.js.map +1 -1
  357. package/lib/theme-schema.d.ts +7 -42
  358. package/lib/theme-schema.d.ts.map +1 -1
  359. package/lib/theme-schema.js +9 -11
  360. package/lib/theme-schema.js.map +1 -1
  361. package/lib/theme-settings.d.ts +19 -10
  362. package/lib/theme-settings.d.ts.map +1 -1
  363. package/lib/theme-settings.js +23 -17
  364. package/lib/theme-settings.js.map +1 -1
  365. package/lib/theme-tokens.d.ts +6 -12
  366. package/lib/theme-tokens.d.ts.map +1 -1
  367. package/lib/theme-tokens.js +2 -2
  368. package/lib/theme-tokens.js.map +1 -1
  369. package/lib/theme.d.ts +5 -10
  370. package/lib/theme.d.ts.map +1 -1
  371. package/lib/theme.js +11 -18
  372. package/lib/theme.js.map +1 -1
  373. package/lib/todo-guard.d.ts +8 -4
  374. package/lib/todo-guard.d.ts.map +1 -1
  375. package/lib/todo-guard.js +17 -6
  376. package/lib/todo-guard.js.map +1 -1
  377. package/lib/tokens.d.ts +0 -2
  378. package/lib/tokens.d.ts.map +1 -1
  379. package/lib/tokens.js +1 -1
  380. package/lib/tokens.js.map +1 -1
  381. package/lib/tool-display.d.ts +1 -13
  382. package/lib/tool-display.d.ts.map +1 -1
  383. package/lib/tool-display.js +4 -4
  384. package/lib/tool-display.js.map +1 -1
  385. package/lib/transcript/message-content.d.ts.map +1 -1
  386. package/lib/transcript/message-content.js +31 -9
  387. package/lib/transcript/message-content.js.map +1 -1
  388. package/lib/transcript/tool-calls.d.ts +9 -7
  389. package/lib/transcript/tool-calls.d.ts.map +1 -1
  390. package/lib/transcript/tool-calls.js +27 -20
  391. package/lib/transcript/tool-calls.js.map +1 -1
  392. package/lib/transcript.d.ts +15 -18
  393. package/lib/transcript.d.ts.map +1 -1
  394. package/lib/transcript.js +70 -41
  395. package/lib/transcript.js.map +1 -1
  396. package/lib/ui/copy.d.ts +5 -4
  397. package/lib/ui/copy.d.ts.map +1 -1
  398. package/lib/ui/copy.js +9 -6
  399. package/lib/ui/copy.js.map +1 -1
  400. package/lib/ui/diff.d.ts +0 -30
  401. package/lib/ui/diff.d.ts.map +1 -1
  402. package/lib/ui/diff.js +16 -9
  403. package/lib/ui/diff.js.map +1 -1
  404. package/lib/ui/dock.d.ts +12 -10
  405. package/lib/ui/dock.d.ts.map +1 -1
  406. package/lib/ui/dock.js +27 -14
  407. package/lib/ui/dock.js.map +1 -1
  408. package/lib/ui/editor.d.ts +5 -4
  409. package/lib/ui/editor.d.ts.map +1 -1
  410. package/lib/ui/editor.js +17 -9
  411. package/lib/ui/editor.js.map +1 -1
  412. package/lib/ui/frame.d.ts +4 -12
  413. package/lib/ui/frame.d.ts.map +1 -1
  414. package/lib/ui/frame.js +6 -6
  415. package/lib/ui/frame.js.map +1 -1
  416. package/lib/ui/gap.d.ts +0 -4
  417. package/lib/ui/gap.d.ts.map +1 -1
  418. package/lib/ui/gap.js +4 -3
  419. package/lib/ui/gap.js.map +1 -1
  420. package/lib/ui/gate-input.d.ts +3 -3
  421. package/lib/ui/gate-input.d.ts.map +1 -1
  422. package/lib/ui/gate-input.js +9 -9
  423. package/lib/ui/gate-input.js.map +1 -1
  424. package/lib/ui/layout.d.ts +1 -8
  425. package/lib/ui/layout.d.ts.map +1 -1
  426. package/lib/ui/layout.js +10 -11
  427. package/lib/ui/layout.js.map +1 -1
  428. package/lib/ui/markdown.d.ts +3 -5
  429. package/lib/ui/markdown.d.ts.map +1 -1
  430. package/lib/ui/markdown.js +18 -7
  431. package/lib/ui/markdown.js.map +1 -1
  432. package/lib/ui/mermaid.d.ts +0 -11
  433. package/lib/ui/mermaid.d.ts.map +1 -1
  434. package/lib/ui/mermaid.js +32 -17
  435. package/lib/ui/mermaid.js.map +1 -1
  436. package/lib/ui/picker-card.d.ts +4 -8
  437. package/lib/ui/picker-card.d.ts.map +1 -1
  438. package/lib/ui/picker-card.js +17 -15
  439. package/lib/ui/picker-card.js.map +1 -1
  440. package/lib/ui/picker.d.ts +11 -17
  441. package/lib/ui/picker.d.ts.map +1 -1
  442. package/lib/ui/picker.js +36 -17
  443. package/lib/ui/picker.js.map +1 -1
  444. package/lib/ui/queue.d.ts.map +1 -1
  445. package/lib/ui/queue.js +11 -1
  446. package/lib/ui/queue.js.map +1 -1
  447. package/lib/ui/stash-picker.d.ts +1 -10
  448. package/lib/ui/stash-picker.d.ts.map +1 -1
  449. package/lib/ui/stash-picker.js +4 -4
  450. package/lib/ui/stash-picker.js.map +1 -1
  451. package/lib/ui/status.d.ts +2 -19
  452. package/lib/ui/status.d.ts.map +1 -1
  453. package/lib/ui/status.js +15 -17
  454. package/lib/ui/status.js.map +1 -1
  455. package/lib/ui/view/document.d.ts +33 -0
  456. package/lib/ui/view/document.d.ts.map +1 -0
  457. package/lib/ui/view/document.js +96 -0
  458. package/lib/ui/view/document.js.map +1 -0
  459. package/lib/ui/view/gate-card.d.ts +2 -0
  460. package/lib/ui/view/gate-card.d.ts.map +1 -1
  461. package/lib/ui/view/gate-card.js +12 -10
  462. package/lib/ui/view/gate-card.js.map +1 -1
  463. package/lib/ui/view/tool-card.d.ts +7 -4
  464. package/lib/ui/view/tool-card.d.ts.map +1 -1
  465. package/lib/ui/view/tool-card.js +12 -17
  466. package/lib/ui/view/tool-card.js.map +1 -1
  467. package/lib/ui/view/transcript-message.d.ts +7 -7
  468. package/lib/ui/view/transcript-message.d.ts.map +1 -1
  469. package/lib/ui/view/transcript-message.js +19 -10
  470. package/lib/ui/view/transcript-message.js.map +1 -1
  471. package/lib/ui/view.d.ts +53 -84
  472. package/lib/ui/view.d.ts.map +1 -1
  473. package/lib/ui/view.js +79 -158
  474. package/lib/ui/view.js.map +1 -1
  475. package/lib/work.d.ts +13 -10
  476. package/lib/work.d.ts.map +1 -1
  477. package/lib/work.js +30 -8
  478. package/lib/work.js.map +1 -1
  479. package/package.json +12 -7
  480. package/presets/cordis.patch.yml +1 -0
  481. package/presets/minimal.patch.yml +1 -0
  482. package/presets/ptc.patch.yml +1 -0
  483. package/presets/standard.patch.yml +1 -0
  484. package/themes/deepseek-blue.yaml +38 -51
  485. package/themes/marine-static.yaml +27 -35
  486. package/themes/pine-slope.yaml +13 -11
  487. package/themes/polar-drift.yaml +6 -0
  488. package/themes/violet-orbit.yaml +14 -18
  489. package/themes/wine-thicket.yaml +13 -13
@@ -2,20 +2,14 @@ import {} from "./file-search.js";
2
2
  import { listWorkspaceFiles, canonicalOrUndefined } from "./workspace-files.js";
3
3
  import { realpath } from 'node:fs/promises';
4
4
  import { isAbsolute, join, relative } from 'node:path';
5
- /** How long a gathered listing is trusted before the tree is read again. */
5
+ /** Reuse scans across keystrokes without keeping agent-written files out of the menu indefinitely. */
6
6
  const INDEX_TTL_MS = 1_000;
7
- /** How long one scan may run before the index abandons it, awaited or not. */
7
+ /** Release stalled scan waiters and allow a later request to start fresh listing work. */
8
8
  const SCAN_TIMEOUT_MS = 5_000;
9
- /** How long proving one row may hold the menu before that row is left out. */
9
+ /** Omit a slow-to-prove row rather than let optional completion wait indefinitely on the filesystem. */
10
10
  const ROW_PROOF_TIMEOUT_MS = 500;
11
11
  /** A listing cache with a window, so a keystroke does not become a scan. */
12
- export function createFileIndex(cwd, options = {}) {
13
- const list = options.list ?? listWorkspaceFiles;
14
- const now = options.now ?? Date.now;
15
- const ttlMs = options.ttlMs ?? INDEX_TTL_MS;
16
- const scanTimeoutMs = options.scanTimeoutMs ?? SCAN_TIMEOUT_MS;
17
- const resolvePath = options.resolve ?? realpath;
18
- const proofTimeoutMs = options.proofTimeoutMs ?? ROW_PROOF_TIMEOUT_MS;
12
+ export function createFileIndex(cwd) {
19
13
  let cached;
20
14
  let cachedAt = 0;
21
15
  let pending;
@@ -26,17 +20,19 @@ export function createFileIndex(cwd, options = {}) {
26
20
  // is still waiting on. It runs under its own bound and leaves its answer for
27
21
  // the readers that follow.
28
22
  const scan = new AbortController();
29
- const run = list(cwd, scan.signal)
23
+ const run = listWorkspaceFiles(cwd, scan.signal)
30
24
  .then(found => {
31
25
  // An answer that arrives after the deadline is the one the waiting
32
26
  // readers were told to stop waiting for; keeping it would serve a
33
27
  // listing the scan had already given up on.
34
28
  if (!scan.signal.aborted) {
35
29
  cached = found;
36
- cachedAt = now();
30
+ cachedAt = Date.now();
37
31
  }
38
32
  return found;
39
33
  })
34
+ // Completion is optional: a failed listing leaves the bar usable without
35
+ // offering unproven rows. No cache refresh occurs, so the next stale read retries.
40
36
  .catch(() => []);
41
37
  const entry = { run, signal: scan.signal };
42
38
  pending = entry;
@@ -46,7 +42,7 @@ export function createFileIndex(cwd, options = {}) {
46
42
  // joining a scan that outlived its bound.
47
43
  if (pending === entry)
48
44
  pending = undefined;
49
- }, scanTimeoutMs);
45
+ }, SCAN_TIMEOUT_MS);
50
46
  void run.finally(() => {
51
47
  clearTimeout(timer);
52
48
  // A settled scan is no longer pending even when its listing was refused
@@ -62,7 +58,7 @@ export function createFileIndex(cwd, options = {}) {
62
58
  // holds, without starting work it would not wait for.
63
59
  if (signal.aborted)
64
60
  return cached ?? [];
65
- if (cached !== undefined && now() - cachedAt < ttlMs)
61
+ if (cached !== undefined && Date.now() - cachedAt < INDEX_TTL_MS)
66
62
  return cached;
67
63
  const entry = pending ?? startScan();
68
64
  // The deadline releases a waiter even when the work beneath it cannot be
@@ -74,18 +70,26 @@ export function createFileIndex(cwd, options = {}) {
74
70
  async reachable(path, signal) {
75
71
  if (signal.aborted)
76
72
  return false;
77
- root ??= canonicalOrUndefined(cwd);
73
+ // Share a proven anchor, but let transient filesystem failures recover on later attempts.
74
+ root ??= canonicalOrUndefined(cwd).then(canonical => {
75
+ if (canonical === undefined)
76
+ root = undefined;
77
+ return canonical;
78
+ });
78
79
  // Both the root and the row are bound the same way: a filesystem that
79
80
  // stopped answering must not hold a menu open, and a proof that did not
80
81
  // arrive in time is a proof that never happened.
81
- const canonical = await withinBound(root, signal, proofTimeoutMs);
82
+ const canonical = await withinBound(root, signal, ROW_PROOF_TIMEOUT_MS);
82
83
  // The caller may have looked away while the root was being proven, and row
83
84
  // work started behind its back would have nothing left to answer for it.
84
85
  if (canonical === undefined || signal.aborted)
85
86
  return false;
86
- const target = await withinBound(resolvePath(join(cwd, path)), signal, proofTimeoutMs);
87
+ const target = await withinBound(realpath(join(cwd, path)), signal, ROW_PROOF_TIMEOUT_MS);
87
88
  if (target === undefined)
88
89
  return false;
90
+ // Only descendants qualify for file references; the workspace root is not a row.
91
+ // This conservative parent-prefix check also omits contained names such as
92
+ // ..notes, so reachability is stricter than offerablePath spelling validation.
89
93
  const inside = relative(canonical, target);
90
94
  return inside !== '' && !inside.startsWith('..') && !isAbsolute(inside);
91
95
  },
@@ -1 +1 @@
1
- {"version":3,"file":"file-index.js","sourceRoot":"","sources":["../../src/input/file-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AA0CtD,4EAA4E;AAC5E,MAAM,YAAY,GAAG,KAAK,CAAA;AAE1B,8EAA8E;AAC9E,MAAM,eAAe,GAAG,KAAK,CAAA;AAE7B,8EAA8E;AAC9E,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAQhC,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,UAA4B,EAAE;IACzE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,kBAAkB,CAAA;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAA;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAA;IAC3C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,eAAe,CAAA;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAA;IAC/C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,oBAAoB,CAAA;IACrE,IAAI,MAAwC,CAAA;IAC5C,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAyB,CAAA;IAC7B,IAAI,IAA6C,CAAA;IAEjD,MAAM,SAAS,GAAG,GAAS,EAAE;QAC3B,2EAA2E;QAC3E,4EAA4E;QAC5E,6EAA6E;QAC7E,2BAA2B;QAC3B,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAA;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;aAC/B,IAAI,CAAC,KAAK,CAAC,EAAE;YACZ,mEAAmE;YACnE,kEAAkE;YAClE,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,GAAG,KAAK,CAAA;gBACd,QAAQ,GAAG,GAAG,EAAE,CAAA;YAClB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,CAAC,EAA0B,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;QAChD,OAAO,GAAG,KAAK,CAAA;QACf,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,oEAAoE;YACpE,0CAA0C;YAC1C,IAAI,OAAO,KAAK,KAAK;gBAAE,OAAO,GAAG,SAAS,CAAA;QAC5C,CAAC,EAAE,aAAa,CAAC,CAAA;QACjB,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE;YACpB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,wEAAwE;YACxE,qEAAqE;YACrE,IAAI,OAAO,KAAK,KAAK;gBAAE,OAAO,GAAG,SAAS,CAAA;QAC5C,CAAC,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,OAAO;QACL,KAAK,CAAC,UAAU,CAAC,MAAmB;YAClC,wEAAwE;YACxE,sDAAsD;YACtD,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,MAAM,IAAI,EAAE,CAAA;YACvC,IAAI,MAAM,KAAK,SAAS,IAAI,GAAG,EAAE,GAAG,QAAQ,GAAG,KAAK;gBAAE,OAAO,MAAM,CAAA;YACnE,MAAM,KAAK,GAAG,OAAO,IAAI,SAAS,EAAE,CAAA;YACpC,yEAAyE;YACzE,qEAAqE;YACrE,oBAAoB;YACpB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;YACjE,OAAO,KAAK,IAAI,MAAM,IAAI,EAAE,CAAA;QAC9B,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,MAAmB;YAC/C,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAChC,IAAI,KAAK,oBAAoB,CAAC,GAAG,CAAC,CAAA;YAClC,sEAAsE;YACtE,wEAAwE;YACxE,iDAAiD;YACjD,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;YACjE,2EAA2E;YAC3E,yEAAyE;YACzE,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAA;YAC3D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAA;YACtF,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAA;YACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAC1C,OAAO,MAAM,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACzE,CAAC;KACF,CAAA;AACH,CAAC;AAED,kFAAkF;AAClF,SAAS,WAAW,CAAI,IAAgB,EAAE,MAAmB,EAAE,SAAiB;IAC9E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,2EAA2E;QAC3E,6DAA6D;QAC7D,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAChC,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,OAAO,CAAgB,OAAO,CAAC,EAAE;QAC1C,IAAI,KAAgD,CAAA;QACpD,MAAM,MAAM,GAAG,CAAC,KAAoB,EAAQ,EAAE;YAC5C,IAAI,KAAK,KAAK,SAAS;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAC5C,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YACzC,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC,CAAA;QACD,MAAM,IAAI,GAAG,GAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC1C,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QACnC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACtD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAC5D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,mFAAmF;AACnF,SAAS,YAAY,CAAI,IAAgB,EAAE,GAAG,OAA+B;IAC3E,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAChC,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpD,MAAM,WAAW,GAAG,GAAS,EAAE;YAC7B,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC9E,OAAO,CAAC,SAAS,CAAC,CAAA;QACpB,CAAC,CAAA;QACD,KAAK,MAAM,MAAM,IAAI,OAAO;YAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3F,IAAI,CAAC,IAAI,CACP,KAAK,CAAC,EAAE;YACN,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC9E,OAAO,CAAC,KAAK,CAAC,CAAA;QAChB,CAAC,EACD,KAAK,CAAC,EAAE;YACN,KAAK,MAAM,MAAM,IAAI,OAAO;gBAAE,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC9E,MAAM,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACnE,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"file-index.js","sourceRoot":"","sources":["../../src/input/file-index.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export interface AtToken {
15
15
  readonly query: string;
16
16
  readonly quoted: boolean;
17
17
  }
18
- /** Suggestions a completion menu is allowed to gather at once. */
18
+ /** Bound menu rows and the concurrent reachability proofs completion performs for them. */
19
19
  export declare const SUGGESTION_LIMIT = 20;
20
20
  /**
21
21
  * Read the at-token the cursor sits in, or undefined when it sits in none.
@@ -57,12 +57,15 @@ export declare function offerableCandidate(candidate: Candidate): boolean;
57
57
  /**
58
58
  * The rows that best answer the fragment, best first.
59
59
  *
60
- * Only the paths are searched, the way fzf searches a path list, so a fragment
60
+ * Only the paths are searched, so a fragment
61
61
  * may match a segment anywhere in the tree. Ties fall to a directory over a
62
62
  * file — a directory is a place to keep typing, a file ends the search — then
63
63
  * to the shallower, shorter path, which is the one the reader is likelier to
64
64
  * mean.
65
+ *
66
+ * Scoring yields so newer input can cancel it; the final full sort is synchronous
67
+ * and is not bounded by the suggestion limit.
65
68
  */
66
- export declare function rankFiles(query: string, candidates: readonly Candidate[], limit: number): readonly Candidate[];
69
+ export declare function rankFilesAsync(query: string, candidates: readonly Candidate[], limit: number, signal: AbortSignal): Promise<readonly Candidate[]>;
67
70
  export declare function depthOf(path: string): number;
68
71
  //# sourceMappingURL=file-search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-search.d.ts","sourceRoot":"","sources":["../../src/input/file-search.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED,kEAAkE;AAClE,eAAO,MAAM,gBAAgB,KAAK,CAAA;AASlC;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAmBzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAI5E;AAyDD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAKD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAGhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,SAAS,EAAE,CAW9G;AAiBD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C"}
1
+ {"version":3,"file":"file-search.d.ts","sourceRoot":"","sources":["../../src/input/file-search.ts"],"names":[],"mappings":"AAQA,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACzB;AAED,2FAA2F;AAC3F,eAAO,MAAM,gBAAgB,KAAK,CAAA;AASlC;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAmBzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAI5E;AAyDD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAKD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAGhE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAoBvJ;AAiBD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C"}
@@ -1,7 +1,12 @@
1
+ import { setImmediate } from 'node:timers/promises';
2
+ import { performance } from 'node:perf_hooks';
1
3
  import { fuzzyScore } from "./fuzzy.js";
2
- /** Suggestions a completion menu is allowed to gather at once. */
4
+ /** Ranking must give a newer keyboard event time to cancel obsolete work. */
5
+ const RANK_BATCH_SIZE = 256;
6
+ const RANK_SLICE_MS = 4;
7
+ /** Bound menu rows and the concurrent reachability proofs completion performs for them. */
3
8
  export const SUGGESTION_LIMIT = 20;
4
- /** Where one token ends and the next begins, as a shell reader expects. */
9
+ /** Share token boundaries with quoting so an inserted path survives the same parser that offers it. */
5
10
  const TOKEN_DELIMITERS = new Set([' ', '\t', '"', "'", '=']);
6
11
  const QUOTE = '"';
7
12
  const ESCAPE = '\\';
@@ -129,25 +134,39 @@ export function offerableCandidate(candidate) {
129
134
  /**
130
135
  * The rows that best answer the fragment, best first.
131
136
  *
132
- * Only the paths are searched, the way fzf searches a path list, so a fragment
137
+ * Only the paths are searched, so a fragment
133
138
  * may match a segment anywhere in the tree. Ties fall to a directory over a
134
139
  * file — a directory is a place to keep typing, a file ends the search — then
135
140
  * to the shallower, shorter path, which is the one the reader is likelier to
136
141
  * mean.
142
+ *
143
+ * Scoring yields so newer input can cancel it; the final full sort is synchronous
144
+ * and is not bounded by the suggestion limit.
137
145
  */
138
- export function rankFiles(query, candidates, limit) {
146
+ export async function rankFilesAsync(query, candidates, limit, signal) {
147
+ if (signal.aborted)
148
+ return [];
139
149
  const needle = query.trim();
140
150
  if (needle === '')
141
151
  return topLevel(candidates, limit);
142
152
  const scored = [];
153
+ let batch = 0;
154
+ let deadline = performance.now() + RANK_SLICE_MS;
143
155
  for (const candidate of candidates) {
144
156
  const score = fuzzyScore(needle, candidate.path);
145
- if (score === undefined)
146
- continue;
147
- scored.push({ candidate, score });
157
+ if (score !== undefined)
158
+ scored.push({ candidate, score });
159
+ if (++batch >= RANK_BATCH_SIZE || performance.now() >= deadline) {
160
+ await setImmediate();
161
+ if (signal.aborted)
162
+ return [];
163
+ batch = 0;
164
+ deadline = performance.now() + RANK_SLICE_MS;
165
+ }
148
166
  }
149
- scored.sort((left, right) => compareScored(left, right));
150
- return scored.slice(0, limit).map(entry => entry.candidate);
167
+ // Select from the global ranking, not the listing order, so a late-listed
168
+ // candidate can still displace an earlier one from the limited menu.
169
+ return scored.sort(compareScored).slice(0, limit).map(entry => entry.candidate);
151
170
  }
152
171
  function compareScored(left, right) {
153
172
  if (left.score !== right.score)
@@ -165,7 +184,7 @@ function compareScored(left, right) {
165
184
  export function depthOf(path) {
166
185
  return path.split('/').length;
167
186
  }
168
- /** The entries a bare at-sign offers: what sits directly in the workspace. */
187
+ /** With no fragment to rank, offer root entries as starting points; directories let the reader narrow the path. */
169
188
  function topLevel(candidates, limit) {
170
189
  return candidates
171
190
  .filter(candidate => !candidate.path.includes('/'))
@@ -1 +1 @@
1
- {"version":3,"file":"file-search.js","sourceRoot":"","sources":["../../src/input/file-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-search.js","sourceRoot":"","sources":["../../src/input/file-search.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,9 @@
1
1
  /**
2
- * How well a row answers a fragment, scored the way fzf scores it.
2
+ * Rank ordered fragment matches by their boundaries, runs, and gaps.
3
3
  *
4
- * A greedy scan can say whether a fragment's characters are all present, but
5
- * not which of two rows the reader meant. This is the alignment fuzzy finders
6
- * use, with the constants fzf calibrates in its own source: matching a
7
- * character is worth a fixed amount, starting a word is worth more, continuing
8
- * a run is worth more than the gap it avoids, and every skipped character
9
- * costs — a little inside a run, more when it opens a new gap. A reader typing
10
- * edtr or srccomp gets a ranking their fingers recognize.
4
+ * A greedy scan can establish that all characters appear without distinguishing
5
+ * useful alignments. Boundary and consecutive credit favour segment starts and
6
+ * compact runs; gap penalties distinguish scattered matches.
11
7
  *
12
8
  * Classes are read from the original text, so a camel hump keeps its bonus
13
9
  * while the comparison itself stays case-insensitive. Matching works in code
@@ -18,10 +14,8 @@
18
14
  * different kinds of rows needs that concern in its own bands, and the bands
19
15
  * in {@link matchScore} keep an early hit above a late one.
20
16
  *
21
- * One deliberate divergence from fzf: for a one-character fragment fzf stops
22
- * at the first word boundary it meets, because its scan wants to stay cheap,
23
- * while this reads every position and keeps the best. A short fragment still
24
- * deserves the row that matches it best, and a test pins the difference.
17
+ * A one-character fragment considers every position so a later, stronger
18
+ * boundary can outrank the first occurrence.
25
19
  */
26
20
  /**
27
21
  * The case-folded text the scorer compares against.
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/input/fuzzy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAyIH;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAqG/E"}
1
+ {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/input/fuzzy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAoIH;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAuG/E"}
@@ -1,13 +1,9 @@
1
1
  /**
2
- * How well a row answers a fragment, scored the way fzf scores it.
2
+ * Rank ordered fragment matches by their boundaries, runs, and gaps.
3
3
  *
4
- * A greedy scan can say whether a fragment's characters are all present, but
5
- * not which of two rows the reader meant. This is the alignment fuzzy finders
6
- * use, with the constants fzf calibrates in its own source: matching a
7
- * character is worth a fixed amount, starting a word is worth more, continuing
8
- * a run is worth more than the gap it avoids, and every skipped character
9
- * costs — a little inside a run, more when it opens a new gap. A reader typing
10
- * edtr or srccomp gets a ranking their fingers recognize.
4
+ * A greedy scan can establish that all characters appear without distinguishing
5
+ * useful alignments. Boundary and consecutive credit favour segment starts and
6
+ * compact runs; gap penalties distinguish scattered matches.
11
7
  *
12
8
  * Classes are read from the original text, so a camel hump keeps its bonus
13
9
  * while the comparison itself stays case-insensitive. Matching works in code
@@ -18,17 +14,14 @@
18
14
  * different kinds of rows needs that concern in its own bands, and the bands
19
15
  * in {@link matchScore} keep an early hit above a late one.
20
16
  *
21
- * One deliberate divergence from fzf: for a one-character fragment fzf stops
22
- * at the first word boundary it meets, because its scan wants to stay cheap,
23
- * while this reads every position and keeps the best. A short fragment still
24
- * deserves the row that matches it best, and a test pins the difference.
17
+ * A one-character fragment considers every position so a later, stronger
18
+ * boundary can outrank the first occurrence.
25
19
  */
26
20
  /**
27
21
  * Character classes the bonus matrix distinguishes.
28
22
  *
29
- * A delimiter is a character a path or field is built from — fzf treats
30
- * `/,:;|` as such — because the start of a segment is a boundary a reader
31
- * aims at even though no whitespace precedes it.
23
+ * Path and field separators receive a distinct class because a segment start
24
+ * is a boundary a reader aims at even though no whitespace precedes it.
32
25
  */
33
26
  const WHITE = 0;
34
27
  const NON_WORD = 1;
@@ -58,15 +51,12 @@ const BONUS_BOUNDARY_DELIMITER = BONUS_BOUNDARY + 1;
58
51
  const INITIAL_CLASS = WHITE;
59
52
  const DELIMITER_CHARACTERS = '/,:;|';
60
53
  const WHITE_CHARACTERS = ' \t\n\v\f\r\u0085\u00a0';
61
- const LOWER_PATTERN = /[a-z]/;
62
- const UPPER_PATTERN = /[A-Z]/;
63
54
  const NUMBER_PATTERN = /[0-9]/;
64
55
  /**
65
- * The categories fzf reads a code point outside ASCII by.
56
+ * Preserve word boundaries for characters outside ASCII.
66
57
  *
67
- * Without them a letter such as é would be read as a word break, so a fragment
68
- * landing beside it would take a boundary bonus fzf never pays and outrank a
69
- * text fzf ranks higher.
58
+ * Treating a letter such as é as punctuation would grant an artificial boundary
59
+ * bonus to the following letter and distort ranking across scripts.
70
60
  */
71
61
  const UNICODE_SPACE_PATTERN = /\p{White_Space}/u;
72
62
  const UNICODE_LOWER_PATTERN = /\p{Ll}/u;
@@ -99,10 +89,9 @@ function classOf(character) {
99
89
  /**
100
90
  * What a character earns given the class before it.
101
91
  *
102
- * The order mirrors fzf's: a word opening after white, a delimiter, or a
103
- * non-word takes that boundary's bonus; a hump inside a word takes the smaller
104
- * camel one; and matching the separator itself is still worth something,
105
- * because a reader who typed it meant it.
92
+ * Boundary credit takes precedence over camel and digit transitions so an
93
+ * opening segment is not scored as an internal hump. Separator matches retain
94
+ * credit because the fragment may name the separator itself.
106
95
  */
107
96
  function bonusFor(previous, current) {
108
97
  if (current >= NON_WORD) {
@@ -263,6 +252,8 @@ export function fuzzyScore(needle, haystack) {
263
252
  credit = Math.max(bonus, BONUS_CONSECUTIVE, chunkStart);
264
253
  }
265
254
  }
255
+ // A losing match cannot pass consecutive credit into the next row:
256
+ // that would reward a run the retained alignment did not choose.
266
257
  if (matched + credit < skipped) {
267
258
  matched += bonus;
268
259
  consecutive = 0;
@@ -279,8 +270,8 @@ export function fuzzyScore(needle, haystack) {
279
270
  if (index === queryLength - 1 && score > best)
280
271
  best = score;
281
272
  }
282
- // The rows are rebuilt for each character of the fragment, so the arrays
283
- // that hold the previous one are replaced rather than copied.
273
+ // Retain only the previous score and run rows: the next recurrence needs
274
+ // those rows, not the full alignment table.
284
275
  previousRow.set(row);
285
276
  previousRuns.set(runs);
286
277
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../src/input/fuzzy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../src/input/fuzzy.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@
7
7
  * test can drive without a screen.
8
8
  */
9
9
  /** One recorded prompt, as this rule needs it. */
10
- export interface GhostCandidate {
10
+ interface GhostCandidate {
11
11
  readonly text: string;
12
12
  }
13
13
  /** Where the editor's cursor sits, in the coordinates the base editor reports. */
@@ -17,14 +17,13 @@ export interface EditorCursor {
17
17
  }
18
18
  /** What one paint knows when it asks for a suggestion. */
19
19
  export interface GhostInput {
20
+ /** Newest first, matching the history store; order breaks ties between matching prefixes. */
20
21
  readonly entries: readonly GhostCandidate[];
21
22
  readonly text: string;
22
23
  readonly lines: readonly string[];
23
24
  readonly cursor: EditorCursor;
24
25
  }
25
- /** Marks a folded ghost so the reader knows the suggestion continues. */
26
- export declare const NEWLINE_MARKER = "\u21B5";
27
- /** Whether the cursor sits past the last character of the whole text. */
26
+ /** Ghost drawing and acceptance append after the cursor, so neither may run inside existing text. */
28
27
  export declare function isCursorAtTextEnd(input: {
29
28
  lines: readonly string[];
30
29
  cursor: EditorCursor;
@@ -39,8 +38,9 @@ export declare function isCursorAtTextEnd(input: {
39
38
  export declare function ghostSuffix(input: GhostInput): string | undefined;
40
39
  /** The next word of a suffix, whitespace included, or undefined when there is none. */
41
40
  export declare function nextGhostWord(text: string): string | undefined;
42
- /** The suffix as one drawn line: only the first line, marked when it continues. */
41
+ /** Keep the ghost within the editor cursor row; mark a fold so acceptance can still include unseen following lines. */
43
42
  export declare function ghostDisplayLine(text: string): string;
44
43
  /** One grapheme per entry, so styling never lands inside a character. */
45
44
  export declare function ghostGraphemes(text: string): string[];
45
+ export {};
46
46
  //# sourceMappingURL=ghost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ghost.d.ts","sourceRoot":"","sources":["../../src/input/ghost.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAC9B;AAED,yEAAyE;AACzE,eAAO,MAAM,cAAc,WAAW,CAAA;AAetC,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAIpG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAKjE;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAErD"}
1
+ {"version":3,"file":"ghost.d.ts","sourceRoot":"","sources":["../../src/input/ghost.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kDAAkD;AAClD,UAAU,cAAc;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAA;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;CAC9B;AAkBD,qGAAqG;AACrG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAIpG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,CAMjE;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9D;AAED,uHAAuH;AACvH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAErD"}
@@ -7,7 +7,7 @@
7
7
  * test can drive without a screen.
8
8
  */
9
9
  /** Marks a folded ghost so the reader knows the suggestion continues. */
10
- export const NEWLINE_MARKER = '\u21b5';
10
+ const NEWLINE_MARKER = '\u21b5';
11
11
  /**
12
12
  * Leading whitespace travels with the word so a partial accept keeps spacing.
13
13
  *
@@ -19,7 +19,7 @@ const NEXT_WORD = /^\s*\S+/u;
19
19
  // and slicing by code unit would orphan the high surrogate of an emoji or split
20
20
  // a ZWJ cluster across the cursor cell.
21
21
  const GRAPHEMES = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
22
- /** Whether the cursor sits past the last character of the whole text. */
22
+ /** Ghost drawing and acceptance append after the cursor, so neither may run inside existing text. */
23
23
  export function isCursorAtTextEnd(input) {
24
24
  const lastLineIndex = Math.max(0, input.lines.length - 1);
25
25
  const lastLine = input.lines[lastLineIndex] ?? '';
@@ -33,6 +33,7 @@ export function isCursorAtTextEnd(input) {
33
33
  * an empty ghost and hide the useful one behind it.
34
34
  */
35
35
  export function ghostSuffix(input) {
36
+ // An empty prefix narrows nothing; require typed text before offering a history continuation.
36
37
  if (input.text.length === 0)
37
38
  return undefined;
38
39
  if (!isCursorAtTextEnd(input))
@@ -44,7 +45,7 @@ export function ghostSuffix(input) {
44
45
  export function nextGhostWord(text) {
45
46
  return text.match(NEXT_WORD)?.[0];
46
47
  }
47
- /** The suffix as one drawn line: only the first line, marked when it continues. */
48
+ /** Keep the ghost within the editor cursor row; mark a fold so acceptance can still include unseen following lines. */
48
49
  export function ghostDisplayLine(text) {
49
50
  const newlineIndex = text.indexOf('\n');
50
51
  if (newlineIndex < 0)
@@ -1 +1 @@
1
- {"version":3,"file":"ghost.js","sourceRoot":"","sources":["../../src/input/ghost.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqBH,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAA;AAEtC;;;;;GAKG;AACH,MAAM,SAAS,GAAG,UAAU,CAAA;AAE5B,+EAA+E;AAC/E,gFAAgF;AAChF,wCAAwC;AACxC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAA;AAE5E,yEAAyE;AACzE,MAAM,UAAU,iBAAiB,CAAC,KAAyD;IACzF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IACjD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,CAAA;AACpF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACzG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC9E,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,YAAY,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,cAAc,CAAA;AACrD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACrE,CAAC"}
1
+ {"version":3,"file":"ghost.js","sourceRoot":"","sources":["../../src/input/ghost.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,yEAAyE;AACzE,MAAM,cAAc,GAAG,QAAQ,CAAA;AAE/B;;;;;GAKG;AACH,MAAM,SAAS,GAAG,UAAU,CAAA;AAE5B,+EAA+E;AAC/E,gFAAgF;AAChF,wCAAwC;AACxC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAA;AAE5E,qGAAqG;AACrG,MAAM,UAAU,iBAAiB,CAAC,KAAyD;IACzF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IACjD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,CAAA;AACpF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,8FAA8F;IAC9F,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IACzG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC9E,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC;AAED,uHAAuH;AACvH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,IAAI,YAAY,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,cAAc,CAAA;AACrD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;AACrE,CAAC"}
@@ -6,7 +6,7 @@ import { type KeyId } from '@earendil-works/pi-tui';
6
6
  * layer owns the equivalences that make one press equal to another, separately
7
7
  * from the table of actions those presses resolve to.
8
8
  */
9
- /** A key the tty answers before the application sees it. */
9
+ /** Reserve the flow-control resume key so bindings do not depend on whether the tty consumes it. */
10
10
  export declare const TERMINAL_OWNED_KEYS: readonly KeyId[];
11
11
  /** The key a plain press of Return arrives as. */
12
12
  export declare const ENTER_KEY: KeyId;
@@ -24,9 +24,9 @@ export declare function normalizeKey(raw: string): KeyId | undefined;
24
24
  /**
25
25
  * Whether the library can match a key at all.
26
26
  *
27
- * The library answers no modifier on Escape or on a function key, because no
28
- * terminal reports those, and no modifier beyond plain, shift, and control on
29
- * Clear. A binding there would be a key the reader could never press.
27
+ * Reject combinations the installed matcher cannot recognize, rather than
28
+ * accepting bindings that never dispatch. This restricts modified Escape and
29
+ * function keys, and modifiers on Clear beyond plain, shift, and control.
30
30
  */
31
31
  export declare function isPressable(key: KeyId): boolean;
32
32
  /** Whether a key is one modifier chord on one letter or digit, the only shape a chord starter may take. */
@@ -43,15 +43,16 @@ export interface PressRow {
43
43
  readonly id: string;
44
44
  readonly key: KeyId;
45
45
  }
46
- /** A press more than one row reads: the rows, one spelling of it, and the sequences they share. */
46
+ /** Keep connected collision rows and their shared sequences together for conflict reporting. */
47
47
  export interface PressOverlap {
48
48
  readonly ids: readonly string[];
49
49
  readonly key: KeyId;
50
50
  readonly spellings: readonly string[];
51
51
  }
52
52
  /**
53
- * Group the rows one terminal sequence reaches, so a group is a press that cannot
54
- * be split between them.
53
+ * Report connected conflicts together so a row shared by multiple collisions
54
+ * appears in one group. Connections can use different sequences; not every row
55
+ * in a group necessarily matches the same sequence.
55
56
  */
56
57
  export declare function pressOverlaps(rows: readonly PressRow[]): PressOverlap[];
57
58
  //# sourceMappingURL=key-press.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"key-press.d.ts","sourceRoot":"","sources":["../../src/input/key-press.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEnH;;;;;;GAMG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,EAAE,SAAS,KAAK,EAAe,CAAA;AAE/D,kDAAkD;AAClD,eAAO,MAAM,SAAS,EAAE,KAAe,CAAA;AAkBvC,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAE1C;AA8BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAgB3D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAQ/C;AAED,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAGjD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAInD;AAkDD,8FAA8F;AAC9F,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAA;CACpB;AAED,mGAAmG;AACnG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CACtC;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,YAAY,EAAE,CA+CvE"}
1
+ {"version":3,"file":"key-press.d.ts","sourceRoot":"","sources":["../../src/input/key-press.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAEnH;;;;;;GAMG;AAEH,oGAAoG;AACpG,eAAO,MAAM,mBAAmB,EAAE,SAAS,KAAK,EAAe,CAAA;AAE/D,kDAAkD;AAClD,eAAO,MAAM,SAAS,EAAE,KAAe,CAAA;AAkBvC,8FAA8F;AAC9F,wBAAgB,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAE1C;AA8BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAgB3D;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAQ/C;AAED,2GAA2G;AAC3G,wBAAgB,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAGjD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAInD;AAmDD,8FAA8F;AAC9F,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAA;CACpB;AAED,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAA;IACnB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CACtC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,QAAQ,EAAE,GAAG,YAAY,EAAE,CA+CvE"}