@ashx-j/lunr-dev 0.2.19-dev.10.1 → 0.2.21-dev.12.1

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 (307) hide show
  1. package/CHANGELOG.md +36 -1
  2. package/README.md +2 -2
  3. package/dist/builtin-extensions/index.d.ts.map +1 -1
  4. package/dist/builtin-extensions/index.js +0 -2
  5. package/dist/builtin-extensions/index.js.map +1 -1
  6. package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -1
  7. package/dist/builtin-extensions/lunr-computer-use.js +15 -14
  8. package/dist/builtin-extensions/lunr-computer-use.js.map +1 -1
  9. package/dist/builtin-extensions/lunr-todos.d.ts +6 -5
  10. package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
  11. package/dist/builtin-extensions/lunr-todos.js +9 -7
  12. package/dist/builtin-extensions/lunr-todos.js.map +1 -1
  13. package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts +6 -4
  14. package/dist/builtin-extensions/pi-intercom/broker/spawn.d.ts.map +1 -1
  15. package/dist/builtin-extensions/pi-intercom/broker/spawn.js +114 -61
  16. package/dist/builtin-extensions/pi-intercom/broker/spawn.js.map +1 -1
  17. package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
  18. package/dist/builtin-extensions/pi-intercom/index.js +360 -351
  19. package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
  20. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.d.ts.map +1 -1
  21. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js +2 -2
  22. package/dist/builtin-extensions/pi-subagents/src/extension/fanout-child.js.map +1 -1
  23. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +8 -6
  24. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  25. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +128 -57
  26. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  27. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts +18 -8
  28. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  29. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +38 -13
  30. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  31. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +4 -3
  32. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  33. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +24 -14
  34. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  35. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +8 -1
  36. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts.map +1 -1
  37. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js +247 -18
  38. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.js.map +1 -1
  39. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.d.ts +1 -0
  40. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.d.ts.map +1 -1
  41. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.js +1 -1
  42. package/dist/builtin-extensions/pi-subagents/src/intercom/result-intercom.js.map +1 -1
  43. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts +29 -0
  44. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.d.ts.map +1 -0
  45. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js +179 -0
  46. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js.map +1 -0
  47. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts +89 -0
  48. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts.map +1 -0
  49. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js +541 -0
  50. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js.map +1 -0
  51. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts +11 -1
  52. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.d.ts.map +1 -1
  53. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js +38 -12
  54. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-execution.js.map +1 -1
  55. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.d.ts.map +1 -1
  56. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js +3 -2
  57. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-job-tracker.js.map +1 -1
  58. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts +2 -1
  59. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.d.ts.map +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js +35 -8
  61. package/dist/builtin-extensions/pi-subagents/src/runs/background/async-resume.js.map +1 -1
  62. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts +7 -3
  63. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.d.ts.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js +26 -4
  65. package/dist/builtin-extensions/pi-subagents/src/runs/background/notify.js.map +1 -1
  66. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts +1 -0
  67. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js +55 -38
  69. package/dist/builtin-extensions/pi-subagents/src/runs/background/result-watcher.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts +100 -0
  71. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.d.ts.map +1 -1
  72. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js +46 -31
  73. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-runner.js.map +1 -1
  74. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +3 -6
  75. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts.map +1 -1
  76. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js +64 -5
  77. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
  78. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.d.ts +15 -2
  79. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.d.ts.map +1 -1
  80. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js +14 -4
  81. package/dist/builtin-extensions/pi-subagents/src/runs/background/top-level-async.js.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +2 -1
  84. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  85. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js +21 -8
  87. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/chain-execution.js.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.d.ts.map +1 -1
  89. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/execution.js.map +1 -1
  91. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts +0 -1
  92. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  93. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +71 -25
  94. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  95. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts +2 -0
  96. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.d.ts.map +1 -1
  97. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js +75 -18
  98. package/dist/builtin-extensions/pi-subagents/src/runs/shared/acceptance.js.map +1 -1
  99. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts +1 -1
  100. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.d.ts.map +1 -1
  101. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js +1 -1
  102. package/dist/builtin-extensions/pi-subagents/src/runs/shared/completion-guard.js.map +1 -1
  103. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts +13 -1
  104. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.d.ts.map +1 -1
  105. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js +67 -11
  106. package/dist/builtin-extensions/pi-subagents/src/runs/shared/model-fallback.js.map +1 -1
  107. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts +1 -0
  108. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.d.ts.map +1 -1
  109. package/dist/builtin-extensions/pi-subagents/src/runs/shared/parallel-utils.js.map +1 -1
  110. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts +3 -0
  111. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
  112. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +7 -2
  113. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
  114. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
  115. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +13 -3
  116. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
  117. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts +2 -2
  118. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.d.ts.map +1 -1
  119. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js +5 -10
  120. package/dist/builtin-extensions/pi-subagents/src/runs/shared/task-intent.js.map +1 -1
  121. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.d.ts +2 -0
  122. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.d.ts.map +1 -0
  123. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.js +3 -0
  124. package/dist/builtin-extensions/pi-subagents/src/shared/async-guidance.js.map +1 -0
  125. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts +3 -0
  126. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.d.ts.map +1 -1
  127. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js +68 -11
  128. package/dist/builtin-extensions/pi-subagents/src/shared/child-spec.js.map +1 -1
  129. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts +12 -1
  130. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.d.ts.map +1 -1
  131. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js +21 -2
  132. package/dist/builtin-extensions/pi-subagents/src/shared/formatters.js.map +1 -1
  133. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +21 -4
  134. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  135. package/dist/builtin-extensions/pi-subagents/src/shared/types.js +1 -1
  136. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  137. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.d.ts.map +1 -1
  138. package/dist/builtin-extensions/pi-subagents/src/slash/delegation-adapters.js.map +1 -1
  139. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts +7 -0
  140. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.d.ts.map +1 -1
  141. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js +11 -7
  142. package/dist/builtin-extensions/pi-subagents/src/slash/prompt-workflows.js.map +1 -1
  143. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +6 -0
  144. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  145. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +46 -29
  146. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  147. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +46 -4
  148. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  149. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +407 -450
  150. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  151. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.d.ts.map +1 -1
  152. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js +1 -1
  153. package/dist/builtin-extensions/pi-subagents/src/watchdog/register-main.js.map +1 -1
  154. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts +2 -13
  155. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.d.ts.map +1 -1
  156. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js +5 -91
  157. package/dist/builtin-extensions/pi-subagents/src/watchdog/tool-actions.js.map +1 -1
  158. package/dist/core/computer-use/image.d.ts +26 -0
  159. package/dist/core/computer-use/image.d.ts.map +1 -0
  160. package/dist/core/computer-use/image.js +64 -0
  161. package/dist/core/computer-use/image.js.map +1 -0
  162. package/dist/core/computer-use/policy.d.ts.map +1 -1
  163. package/dist/core/computer-use/policy.js +2 -6
  164. package/dist/core/computer-use/policy.js.map +1 -1
  165. package/dist/core/computer-use/schemas.d.ts +13 -10
  166. package/dist/core/computer-use/schemas.d.ts.map +1 -1
  167. package/dist/core/computer-use/schemas.js +26 -35
  168. package/dist/core/computer-use/schemas.js.map +1 -1
  169. package/dist/core/computer-use/workflow.d.ts +16 -8
  170. package/dist/core/computer-use/workflow.d.ts.map +1 -1
  171. package/dist/core/computer-use/workflow.js +271 -260
  172. package/dist/core/computer-use/workflow.js.map +1 -1
  173. package/dist/core/customize.d.ts +2 -0
  174. package/dist/core/customize.d.ts.map +1 -1
  175. package/dist/core/customize.js +3 -0
  176. package/dist/core/customize.js.map +1 -1
  177. package/dist/core/permissions.d.ts +1 -0
  178. package/dist/core/permissions.d.ts.map +1 -1
  179. package/dist/core/permissions.js +8 -4
  180. package/dist/core/permissions.js.map +1 -1
  181. package/dist/core/plan-mode.d.ts.map +1 -1
  182. package/dist/core/plan-mode.js +0 -5
  183. package/dist/core/plan-mode.js.map +1 -1
  184. package/dist/core/runtime-bridges.d.ts.map +1 -1
  185. package/dist/core/runtime-bridges.js +0 -2
  186. package/dist/core/runtime-bridges.js.map +1 -1
  187. package/dist/core/settings-manager.d.ts +4 -0
  188. package/dist/core/settings-manager.d.ts.map +1 -1
  189. package/dist/core/settings-manager.js +11 -0
  190. package/dist/core/settings-manager.js.map +1 -1
  191. package/dist/core/subagent-cancellation.d.ts +21 -0
  192. package/dist/core/subagent-cancellation.d.ts.map +1 -0
  193. package/dist/core/subagent-cancellation.js +53 -0
  194. package/dist/core/subagent-cancellation.js.map +1 -0
  195. package/dist/core/subagent-spinner-setting.d.ts +6 -0
  196. package/dist/core/subagent-spinner-setting.d.ts.map +1 -0
  197. package/dist/core/subagent-spinner-setting.js +12 -0
  198. package/dist/core/subagent-spinner-setting.js.map +1 -0
  199. package/dist/core/subagent-spinner.d.ts +4 -0
  200. package/dist/core/subagent-spinner.d.ts.map +1 -0
  201. package/dist/core/subagent-spinner.js +6 -0
  202. package/dist/core/subagent-spinner.js.map +1 -0
  203. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  204. package/dist/modes/interactive/components/assistant-message.js +12 -18
  205. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  206. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  207. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  208. package/dist/modes/interactive/components/settings-selector.js +73 -1
  209. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  210. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  211. package/dist/modes/interactive/components/tool-execution.js +12 -0
  212. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  213. package/dist/modes/interactive/extension-widget-order.d.ts +8 -0
  214. package/dist/modes/interactive/extension-widget-order.d.ts.map +1 -0
  215. package/dist/modes/interactive/extension-widget-order.js +37 -0
  216. package/dist/modes/interactive/extension-widget-order.js.map +1 -0
  217. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  218. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  219. package/dist/modes/interactive/interactive-mode.js +44 -22
  220. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  221. package/dist/node-runtime/{agent-session-services-RSGP5GDN.js → agent-session-services-QANFGM2V.js} +14 -13
  222. package/dist/node-runtime/{builtin-extensions-7STLFW3A.js → builtin-extensions-SRCYQPZ6.js} +4 -3
  223. package/dist/node-runtime/{chunk-5OLJGVCB.js → chunk-3ONQTOMR.js} +2 -2
  224. package/dist/node-runtime/chunk-5ZH3ZFIZ.js +308 -0
  225. package/dist/node-runtime/{chunk-4SJWFTUP.js → chunk-7NBZ5P7I.js} +1 -1
  226. package/dist/node-runtime/chunk-A3KMVBZV.js +60 -0
  227. package/dist/node-runtime/{chunk-FLYMHKCS.js → chunk-BJ6H7DPI.js} +25 -25
  228. package/dist/node-runtime/{chunk-T5GM5BFH.js → chunk-BYQ2MOFI.js} +6 -6
  229. package/dist/node-runtime/{chunk-W7S2REEG.js → chunk-CZUBYPFP.js} +157 -74
  230. package/dist/node-runtime/{chunk-ZRDIMBEQ.js → chunk-D466UAID.js} +9 -6
  231. package/dist/node-runtime/{chunk-K72NVGUB.js → chunk-GT5F3OKM.js} +1 -1
  232. package/dist/node-runtime/chunk-H2BI7G7T.js +73 -0
  233. package/dist/node-runtime/{chunk-ISQDQIZN.js → chunk-HXJS2PJM.js} +2 -2
  234. package/dist/node-runtime/chunk-LISUTZS3.js +19 -0
  235. package/dist/node-runtime/{chunk-BKAZ6BKX.js → chunk-LOYUC2ID.js} +7 -7
  236. package/dist/node-runtime/{chunk-OTT6JMPU.js → chunk-LTYWTR3V.js} +1 -369
  237. package/dist/node-runtime/{chunk-5Q45AVQG.js → chunk-MW2XJZIK.js} +1 -1
  238. package/dist/node-runtime/{chunk-MUMMMTW4.js → chunk-N3PNL74S.js} +536 -265
  239. package/dist/node-runtime/{chunk-HQCKFM2O.js → chunk-VGYZ3APQ.js} +3 -0
  240. package/dist/node-runtime/{chunk-5NWQCSKR.js → chunk-VQ4UBWSA.js} +11 -1
  241. package/dist/node-runtime/{chunk-6SPPH4FY.js → chunk-VTGEKB7R.js} +4 -4
  242. package/dist/node-runtime/chunk-W3SILANP.js +24 -0
  243. package/dist/node-runtime/{chunk-J7QGQD45.js → chunk-WJVFOIB5.js} +1 -1
  244. package/dist/node-runtime/{chunk-JT6YCS5B.js → chunk-XAUQOKYK.js} +408 -45
  245. package/dist/node-runtime/{chunk-LCACDWHJ.js → chunk-XSRCAQK2.js} +13 -13
  246. package/dist/node-runtime/{chunk-TAP7QTUT.js → chunk-ZOIIMEN6.js} +24 -425
  247. package/dist/node-runtime/{chunk-MGSB2C3M.js → chunk-ZVSORYRM.js} +1 -1
  248. package/dist/node-runtime/{command-6UXQ6XZN.js → command-ZURZJDXF.js} +1 -1
  249. package/dist/node-runtime/{commands-LGR5VT5X.js → commands-BZGSLIP7.js} +3 -3
  250. package/dist/node-runtime/{customize-XEXL2DGQ.js → customize-LF5VST47.js} +1 -1
  251. package/dist/node-runtime/{direct-tool-executor-TDJS7TBD.js → direct-tool-executor-BSZDHIYR.js} +4 -4
  252. package/dist/node-runtime/{extract-IUCVZCWC.js → extract-XLQSJN4V.js} +2 -2
  253. package/dist/node-runtime/{gateway-3OLC4GQN.js → gateway-FWHRIBK5.js} +9 -9
  254. package/dist/node-runtime/{gemini-search-NCIDF7NE.js → gemini-search-U7SUMPQA.js} +1 -1
  255. package/dist/node-runtime/{gemini-url-context-OKIN7AIP.js → gemini-url-context-PXWCBQHK.js} +2 -2
  256. package/dist/node-runtime/index.js +34 -31
  257. package/dist/node-runtime/{init-EKE277AG.js → init-DVJUAOUO.js} +3 -3
  258. package/dist/node-runtime/{interactive-mode-S5M26CQ7.js → interactive-mode-BBASNWHN.js} +18 -15
  259. package/dist/node-runtime/lunr-computer-use-TJNDAMWM.js +135 -0
  260. package/dist/node-runtime/{lunr-cron-KKBOGAEF.js → lunr-cron-J64I72C6.js} +5 -5
  261. package/dist/node-runtime/main.js +22 -20
  262. package/dist/node-runtime/{package-manager-cli-C4EJOO5Q.js → package-manager-cli-VMYX4Y2S.js} +8 -7
  263. package/dist/node-runtime/{pi-intercom-EEMBGQID.js → pi-intercom-NV2LW6X7.js} +108 -87
  264. package/dist/node-runtime/{pi-mcp-adapter-DPTJGAAL.js → pi-mcp-adapter-JLB5YL2F.js} +6 -6
  265. package/dist/node-runtime/{pi-subagents-VKCLYIBY.js → pi-subagents-WEHV3W7H.js} +1267 -604
  266. package/dist/node-runtime/{pi-web-access-BV6DSZOP.js → pi-web-access-FN5YC5T6.js} +5 -5
  267. package/dist/node-runtime/{proxy-modes-R64LU6WZ.js → proxy-modes-OR7ISBXK.js} +7 -7
  268. package/dist/node-runtime/rpc-entry.js +22 -20
  269. package/dist/node-runtime/{runtime-bridges-UJ5WJJLN.js → runtime-bridges-2VQTLPOZ.js} +3 -5
  270. package/dist/node-runtime/{settings-manager-K6IPIQTI.js → settings-manager-3CCU326G.js} +3 -2
  271. package/dist/node-runtime/{subagent-executor-EFLTO32A.js → subagent-executor-CXKXQDHH.js} +186 -299
  272. package/dist/node-runtime/{update-cli-I6OVDRPL.js → update-cli-NM7B4CKL.js} +3 -2
  273. package/dist/node-runtime/{video-extract-ETA5RA7U.js → video-extract-OYT5WKS5.js} +2 -2
  274. package/dist/node-runtime/workflow-C26QCUTW.js +468 -0
  275. package/dist/node-runtime/{youtube-extract-SRVGNN26.js → youtube-extract-TQYKGFGS.js} +2 -2
  276. package/docs/computer-use.md +233 -268
  277. package/docs/features.md +22 -4
  278. package/docs/keybindings.md +3 -1
  279. package/docs/settings.md +3 -2
  280. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  281. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  282. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  283. package/examples/extensions/gondolin/package-lock.json +2 -2
  284. package/examples/extensions/gondolin/package.json +1 -1
  285. package/examples/extensions/sandbox/package-lock.json +2 -2
  286. package/examples/extensions/sandbox/package.json +1 -1
  287. package/examples/extensions/with-deps/package-lock.json +2 -2
  288. package/examples/extensions/with-deps/package.json +1 -1
  289. package/install-lock/package-lock.json +24 -24
  290. package/install-lock/package.json +2 -2
  291. package/npm-shrinkwrap.json +21 -21
  292. package/package.json +7 -7
  293. package/dist/builtin-extensions/lunr-settings-tools.d.ts +0 -4
  294. package/dist/builtin-extensions/lunr-settings-tools.d.ts.map +0 -1
  295. package/dist/builtin-extensions/lunr-settings-tools.js +0 -120
  296. package/dist/builtin-extensions/lunr-settings-tools.js.map +0 -1
  297. package/dist/core/settings-tools-bridge.d.ts +0 -35
  298. package/dist/core/settings-tools-bridge.d.ts.map +0 -1
  299. package/dist/core/settings-tools-bridge.js +0 -56
  300. package/dist/core/settings-tools-bridge.js.map +0 -1
  301. package/dist/node-runtime/chunk-EH2LJQPM.js +0 -64
  302. package/dist/node-runtime/image-resize-6ZPBFMWW.js +0 -11
  303. package/dist/node-runtime/lunr-computer-use-4X3KUNF4.js +0 -206
  304. package/dist/node-runtime/workflow-SA34S4VX.js +0 -325
  305. package/dist/node-runtime/{chunk-EHMBW7FA.js → chunk-VSELYKWU.js} +3 -3
  306. package/dist/node-runtime/{chunk-ZSEZY3II.js → chunk-VTPM5V35.js} +0 -0
  307. package/dist/node-runtime/{src-GPFAU3N6.js → src-BPQFJR76.js} +3 -3
@@ -1,277 +1,242 @@
1
- # Native computer use
1
+ # Image-only computer use
2
2
 
3
- This implementation is available through the experimental `@ashx-j/lunr-dev`
4
- channel, based on stable lunR 0.2.19 plus PR #77. Install with
5
- `npm i -g @ashx-j/lunr-dev`, then run `lunr-dev`. Stable `@ashx-j/lunr` is unchanged.
6
- This is not production support certification. Windows
7
- MCP metadata interoperability and local runtime/lifecycle tests pass. The macOS
8
- launch path is implemented but has not run on macOS hardware. Neither platform
9
- has passed live desktop acceptance. Production publication remains blocked.
3
+ This dev-channel integration combines stable lunR 0.2.21 with image-only computer
4
+ use. Offline builds, focused automated tests, local scripted-provider startup
5
+ checks, and isolated package installation pass. No live desktop capture or input,
6
+ native runtime launch, or remote inference ran. Stable production publication
7
+ remains blocked. Smooth cursor animation is not included.
10
8
 
11
- ## Local setup
9
+ The dev package is `@ashx-j/lunr-dev`, with command `lunr-dev` and update command
10
+ `lunr-dev update`. Stable `@ashx-j/lunr` and `lunr` remain separate. Both commands
11
+ share `~/.lunr/agent` credentials, settings, and sessions.
12
12
 
13
- Run `/computer setup` in the local lunR terminal. It verifies and installs the
14
- bundled runtime without downloading code, capturing the screen, or operating an
15
- application. Setup is user-invoked and unavailable from gateway or headless
16
- sessions.
17
-
18
- On Windows, keep the desktop logged in and unlocked. On macOS, setup prints the
19
- exact installed `CuaDriver.app` path. Add that app under System Settings > Privacy
20
- & Security to both Accessibility and Screen & System Audio Recording, named
21
- Screen Recording on older macOS versions. Enable both grants, then restart lunR.
22
- These OS grants require the user; Auto mode cannot supply them. Setup never
23
- selects or changes an existing `/Applications/CuaDriver.app` installation.
13
+ ## Setup and permissions
24
14
 
25
- Complete setup before assigning GUI tasks through cron or the gateway. A setup
26
- success verifies the runtime files, not permission grants or desktop behavior.
15
+ Run `/computer setup` in the local lunR terminal. Setup verifies and installs the
16
+ bundled runtime without downloading code, capturing the screen, or operating an
17
+ application. It is unavailable in headless and gateway sessions.
27
18
 
28
- ## Tools and permissions
19
+ Windows needs an active, unlocked desktop. On Apple Silicon macOS, setup prints
20
+ the exact installed `CuaDriver.app` path. Add that app to Accessibility and
21
+ Screen & System Audio Recording in System Settings > Privacy & Security, then
22
+ restart lunR. Older macOS versions call the second grant Screen Recording.
23
+ Only the user can grant these permissions. Setup leaves an existing
24
+ `/Applications/CuaDriver.app` alone.
29
25
 
30
26
  Computer use and Allow foreground control default to on. Windows x64/arm64 and
31
- Apple Silicon macOS expose `computer_load` before the first model request.
32
- The runtime loads only when a desktop operation needs it. Linux and Intel macOS
33
- have no default discovery tool.
34
-
35
- Loading activates app/window discovery, accessibility and image observation,
36
- single/right/double clicks, complete drags, scrolling, keys and modifier
37
- shortcuts, Unicode text, app launch, window management, and workflow release.
38
- Use these tools on the computer running lunR. Gateway sessions control the
39
- gateway host, not the Telegram or Discord client's machine.
40
-
41
- Prefer accessibility and background window input. Request window foreground
42
- input only after a background failure and a fresh observation. Primary-desktop
43
- input has no background route and requires `desktop=true` and `foreground=true`.
44
- Foreground off blocks desktop input, explicit foreground window input, app
45
- launches, and every window-management operation. Background delivery cannot
46
- prevent an application from changing its own focus.
47
-
48
- `computer_window` requires an exact window target and has no per-call foreground
49
- or desktop option. It moves/resizes with `action=frame`, or activates the exact
50
- window with `action=focus`. Minimize/restore invokes the supplied, freshly
51
- observed accessibility window-control element. The pinned driver has no portable
52
- minimize/restore RPC. If the control or minimized window cannot be observed, use
53
- freshly observed desktop controls rather than guessing a shortcut or window id.
54
- Text and keys can target an accessibility element, window-image coordinates,
55
- or the observed focused field. Desktop keyboard input targets the observed
56
- focused field; changing focus needs a separate grounded click.
57
-
58
- Manual asks before every computer call except `computer_end`, which only releases
59
- the workflow and never needs approval. Observation still requires approval.
60
- Plan permits relevant observation and workflow release but blocks mutation. Auto needs no
61
- lunR per-call prompt for requested, implied, or necessary GUI work. In Yolo,
62
- ask first when an otherwise non-GUI task newly requires GUI. This intent rule
63
- is agent guidance, not a natural-language authorization classifier.
64
-
65
- Native tools are excluded from children and also refuse child execution.
66
- Shell-capable children are not OS-sandboxed. No generic MCP registration or
67
- raw driver policy, update, recording, or administrative tool is exposed.
68
-
69
- ## Grounding and outcomes
70
-
71
- Each observation invalidates the previous token before contacting the driver.
72
- A token identifies one exact window or the primary desktop, expires after thirty
73
- seconds, and permits one action. Accessibility input includes the driver's
74
- snapshot id. Structured refusals count as refusals even without MCP `isError`.
75
- Partial and unverifiable outcomes remain visible; transport success is not
76
- proof of an application change.
77
-
78
- Window PNGs are capped by the driver at 1024 pixels on their long edge.
79
- Window coordinates use that returned image, without another resize. Both pinned
80
- platform implementations retain the capture resize ratio for later pixel input.
81
- The adapter checks PNG dimensions and refuses inconsistent pixel grounding. Desktop
82
- images are resized to at most 1024 pixels locally. Their token records separate
83
- x/y ratios back to the driver's native desktop image. Coordinates outside the
84
- returned image are rejected. Pixel and desktop operations require an
85
- image-capable current model; accessibility-only observation remains available.
86
-
87
- Observe after every action. A timeout or cancelled call may already have
88
- changed the application. Never retry input blindly. Cancelling the MCP request
89
- does not retract input already delivered to the OS. Normal shutdown asks the
90
- owned runtime to drain and exit; forced process termination cannot prove that
91
- all held input was released. Live gesture cancellation remains an acceptance
92
- gate.
93
-
94
- ## Ownership and lifecycle
95
-
96
- An OS-account lease holds the desktop across observe/action calls. Competing
97
- workflows get busy rather than queueing; calls within one workflow serialize.
98
- The lease uses the OS account home, not the selected lunR settings profile.
99
- One short cross-process acquisition lock protects creating, updating, and deleting
100
- the owner record. Updates replace the file atomically. Runtime installation uses
101
- a separate lock and never replaces an existing runtime. A live owner is never displaced because its heartbeat is late.
102
- After MCP initialization and before any driver tool call, the adapter records
103
- the transport PID and, on macOS, the daemon PID in that lease. Missing PIDs or
104
- failure to record ownership block tool dispatch. Driver-internal helper lifetime
105
- remains part of the unverified native shutdown acceptance gates.
106
- A crash during initialization can leave an unrecorded, idle runtime, but it has
107
- received no desktop action. Recovery requires both the owner and its recorded
108
- runtimes to have exited.
109
- PID reuse can conservatively leave the desktop busy rather than kill another
110
- process. A malformed owner record also fails closed.
111
-
112
- `computer_end`, cancellation, agent end, settings changes, and session shutdown
113
- close the owned runtime before releasing its lease. Queued operations cannot
114
- survive cancellation. Settings disable removes active tools immediately;
115
- session replacement discards loaded tools and grounding. The first-request
116
- hook also reapplies the loaded roster after extension registration refreshes it.
117
- If shutdown cannot be confirmed, the lease stays held. Confirm that the owned
118
- runtime has stopped before restarting the owning lunR process.
119
-
120
- Fresh gateway cron sessions get explicit permission contexts from the configured
121
- default mode. They inherit neither gateway approvals nor its interactive
122
- approval handler. Missing approval reports blocked. Session shutdown runs before
123
- context disposal, including partial extension-bind failure. TUI cron continues
124
- to use its live session mode.
125
-
126
- ## Runtime and packaging
27
+ Apple Silicon expose `computer_load`; detailed tools load on demand. Linux and
28
+ Intel macOS have no native discovery tool. All computer tools except release
29
+ require an image-capable model. There is no text-only accessibility fallback.
30
+ Gateway sessions operate the gateway host, not the chat client's device.
31
+
32
+ Manual approves observation and input. `computer_end` releases without approval.
33
+ Plan allows relevant observation and release, but blocks mutation. Auto allows
34
+ requested, implied, or necessary GUI work without lunR per-call prompts. In
35
+ Yolo, ask before introducing GUI work into an otherwise non-GUI task. These
36
+ intent rules are agent guidance, not a natural-language authorization classifier.
37
+
38
+ Prefer background window input. Foreground window input requires a verified
39
+ background failure and a fresh image. Desktop input requires `desktop=true` and
40
+ `foreground=true`. Disabling foreground control blocks desktop input, foreground
41
+ window input, launch, and window management. An application can still change its
42
+ own focus after background input.
43
+
44
+ Native tools are excluded from children and refuse child execution. Children
45
+ with shell access are not OS-sandboxed. No raw driver administration, update,
46
+ recording, or permission tool is exposed.
47
+
48
+ ## Observe, act, inspect
49
+
50
+ 1. Use `computer_apps` for app identities or windows for a PID. Results allowlist
51
+ at most 50 rows and truncate titles to 240 characters. Pass `next_offset` as
52
+ `offset` with the same PID selection to retrieve more apps or windows. Lists
53
+ refresh per call, so changing native order can shift page boundaries. PID zero
54
+ identifies an installed app that is not running. Window `bounds` are native
55
+ geometry, not screenshot coordinates.
56
+ 2. Use `computer_observe` with an exact `pid` and `window_id`, or `desktop=true`.
57
+ The result contains one image and a short coordinate/token record.
58
+ 3. Choose one action from that image. Pass its `observation` token and coordinates
59
+ in the returned image. The workflow applies the mapping; do not scale twice.
60
+ 4. Inspect the post-action image before continuing. The tool executes one action
61
+ and captures the same target once. It never polls or retries input internally.
62
+ 5. Call `computer_end` when finished.
63
+
64
+ The token lasts 30 seconds, belongs to one exact target, and permits one action.
65
+ Every new observation invalidates the previous token before capture. Failed,
66
+ cancelled, or malformed captures issue no token. Old tokens cannot be replayed,
67
+ including after a successful action returns a new image.
68
+
69
+ Supported input is single, double, and right click with modifiers, a complete
70
+ press-drag-release gesture, scrolling at image coordinates, Unicode text, and
71
+ keys or modifier shortcuts. Window text/keys can use image coordinates or the
72
+ observed focused field. Desktop text/keys use the observed focused field only;
73
+ change focus with a separate grounded click.
74
+
75
+ `computer_window` supports `frame` in native window-bounds units and `focus` on
76
+ an exact observed window. Minimize/restore uses a grounded image click on a
77
+ visible control. The pinned driver has no portable minimize/restore RPC.
78
+ `computer_launch` returns bounded app metadata, not an inferred input target;
79
+ capture an exact window before acting.
80
+
81
+ A successful transport or a changed image does not prove the intended application
82
+ effect. Results preserve partial/unverifiable outcomes and bounded refusal codes.
83
+ When input returns but its post-image fails, the tool reports possible effects
84
+ and stops the workflow. Capture again before deciding; never repeat input blindly.
85
+ After an unchanged post-image, the same action against identical captured pixels
86
+ is refused. Click signatures normalize omitted left-button/single-click/empty
87
+ modifier defaults and modifier order. Three consecutive unchanged full observations
88
+ stop polling in that workflow. Crops are explicit requests, not an automatic retry loop.
89
+
90
+ Partial typing retains validated `requested_chars`, `delivered_chars`, `retryable`,
91
+ and `retry_from_character` when supplied by the driver. Counts must be safe integers
92
+ within the submitted text's Unicode code-point length, capped at 20000; the retry
93
+ index must equal the delivered count. The index is zero-based in Unicode code
94
+ points, not UTF-16 units. Verify the field in a fresh image before considering a
95
+ remaining suffix. `retryable` is driver advice, not permission or proof that
96
+ repeating input is safe. The workflow never retries typing automatically.
97
+
98
+ ## Image contract and cost limits
99
+
100
+ Window capture requests `include_accessibility_tree:false` and
101
+ `include_screenshot:true`. Neither native accessibility trees nor duplicate raw
102
+ JSON reach the model. The macOS driver still reads minimal native accessibility
103
+ facts for window identity and background-input safety. Windows window discovery
104
+ can use UIA as a fallback. Image-only describes application observation sent to
105
+ the model, not the removal of every native accessibility API call.
106
+
107
+ Window capture requests a 2560-pixel maximum. The runtime can impose a lower
108
+ configured ceiling, so this is not a promised capture resolution. The workflow
109
+ checks actual PNG dimensions against native screenshot metadata and rejects
110
+ invalid frames. Primary-desktop capture is tree-free and uses the native PNG.
111
+ Desktop coordinates map back to that PNG once; macOS `scale_factor` is not an
112
+ additional multiplier.
113
+
114
+ Returned images have a maximum 1280-pixel edge, one million pixels, and 1.5 MiB
115
+ of base64 payload. The existing image processor bounds dimensions and encoding
116
+ size. The workflow refuses images it cannot decode or map. Source PNGs also have
117
+ allocation limits. These are engineering bounds, not measured token savings.
118
+
119
+ For small text or controls, request `crop:{x,y,width,height}` with the latest
120
+ observation token. The rectangle uses that returned image's pixels. The workflow
121
+ captures fresh pixels, maps the rectangle into the full capture, and sends only
122
+ the crop. Its record gives the source dimensions, crop offset, and separate x/y
123
+ ratios. Changed source dimensions or reported window bounds reject the crop;
124
+ request a full image again. Cropping cannot recover detail absent from the native
125
+ capture. Post-action captures return the full target so dialogs outside a crop
126
+ remain visible.
127
+
128
+ Saved sessions retain the returned screenshots. Provider-facing screenshot
129
+ history also accumulates until normal compaction. This change does not prune
130
+ user images, rewrite saved sessions, or implement a generic rolling history
131
+ filter. A targeted `context` hook could remove old computer screenshots while
132
+ leaving sessions intact, but a rolling cutoff changes an earlier prompt prefix
133
+ and can invalidate cached input. That tradeoff needs approved provider measurements
134
+ before adopting a retention policy. Image-only is not automatically cheaper than
135
+ text. Current cost controls bound each new payload, remove tree/JSON duplication,
136
+ and combine one action with its post-image.
137
+
138
+ ## Cursor status
139
+
140
+ Cursor animation remains a separate native-runtime decision. The inherited
141
+ runtime launch still uses `--no-overlay`. Upstream Windows drag animation uses a
142
+ timer separate from actual input, and desktop pointer movement can teleport.
143
+ This branch does not claim smooth actual-cursor motion or synchronized drag
144
+ feedback. Any eventual animation must stay local, preserve full gestures and
145
+ cancellation, and send zero intermediate frames to the model.
146
+
147
+ ## Ownership and cancellation
148
+
149
+ An OS-account lease spans observations and actions, independent of settings
150
+ profiles. Competing workflows receive busy rather than queueing. Calls within a
151
+ workflow serialize. One cross-process lock covers creation, atomic replacement,
152
+ and deletion of the owner record. A separate lock protects runtime installation.
153
+ A live owner is not displaced because its heartbeat is late.
154
+
155
+ After MCP initialization and before any driver tool dispatch, the adapter records
156
+ the transport PID and, on macOS, daemon PID. Missing identities or failed lease
157
+ updates refuse dispatch. Recovery requires both owner and recorded runtimes to
158
+ have exited. PID reuse and malformed owner records fail closed. A crash during
159
+ initialization can leave an unrecorded idle runtime that received no input.
160
+
161
+ Release, cancellation, agent end, settings changes, and session shutdown close
162
+ the owned runtime before releasing the lease. Queued work cannot survive
163
+ cancellation. Unconfirmed shutdown retains ownership. Cancellation cannot retract
164
+ already delivered input, and forced termination does not prove held input was
165
+ released. Driver-internal helper lifetime and held-input cancellation still need
166
+ native acceptance.
167
+
168
+ Gateway cron creates fresh permission contexts with the configured default mode,
169
+ without gateway approvals or its approval handler. Missing approval blocks calls.
170
+ Session shutdown precedes disposal, even after partial extension binding failure.
171
+ TUI cron continues to use its live permission context.
172
+
173
+ ## Runtime and distribution
127
174
 
128
175
  The development pin is [CuaDriver 0.28.1](https://github.com/trycua/cua/releases/tag/cua-driver-rs-v0.28.1),
129
- source `d8028a7943087ee258dc1b4d19dc12a7cd27669c`. This exact prerelease and its
130
- three archive hashes are approved for development-channel distribution only.
131
- `scripts/computer-use-release.json` is the authoritative archive inventory.
132
- The upstream MIT license is included under `native/computer-use`.
133
-
134
- The runtime never downloads an executable. It resolves the host's optional
135
- payload package, or the matching archive beside a standalone binary. It verifies that archive,
136
- extracts a fresh reference tree, and checks every cached file and helper against
137
- that tree before execution. Redirected install paths and escaping symlinks are
138
- rejected. Concurrent installers do not overwrite each other. A modified or
139
- older cache is refused rather than overwritten. After confirming no runtime is
140
- active, remove the inactive lunR runtime directory to reinstall it.
141
-
142
- Windows uses the system `tar.exe`, not a `PATH`-selected extractor, and launches
143
- `mcp --direct --embedded --no-overlay`. A bounded, hidden system PowerShell
144
- helper checks WTS session activity and the input desktop name before admission.
145
- It refuses session zero, disconnected sessions, and a non-Default or inaccessible
146
- input desktop. It reads metadata only and never switches desktops. The isolated
147
- runtime profile avoids the user's Cua config. Both platforms remove inherited `CUA_*` settings and explicitly
148
- set standard permission mode, disable unrestricted mode, and set
149
- `CUA_DRIVER_RS_TELEMETRY_ENABLED=false` and `CUA_DRIVER_RS_UPDATE_CHECK=false`.
150
-
151
- macOS preserves the signed `CuaDriver.app` at the stable lunR-owned path
152
- `~/.lunr/desktop/runtime-darwin-arm64/CuaDriver.app` and verifies its signature
153
- with `codesign --verify --deep --strict`. It never re-signs the bundle.
154
- LaunchServices selects that exact app path with `open -n -g -W -a`, not its
155
- shared bundle id or the user's `/Applications` installation. Explicit `--env`
156
- arguments pass telemetry/update/permission settings and a private HOME to the
157
- daemon. The private HOME also isolates the upstream default PID/config files.
158
- A private Unix socket carries the MCP proxy connection. A private stdin FIFO
159
- and the pinned `--parent-liveness-stdio` option tie daemon lifetime to lunR.
160
- Shutdown uses the private endpoint's PID-bound request and waits for the owned
161
- app to exit. Startup and shutdown have time limits. These construction and
162
- cleanup paths have local tests, not macOS execution evidence.
163
-
164
- Release staging creates `@ashx-j/lunr-computer-win32-x64`,
165
- `@ashx-j/lunr-computer-win32-arm64`, and
166
- `@ashx-j/lunr-computer-darwin-arm64`. Each package contains one unchanged archive,
167
- the MIT license, and a manifest with `os` and `cpu`. There are no install scripts.
168
- The payload packages follow the CLI release version, independently of the upstream
169
- runtime version. The staged CLI declares exact optional versions. npm installs
170
- only the matching payload; `--ignore-scripts` works. Missing optional dependencies
171
- leave the CLI usable and produce a reinstall instruction when computer use needs
172
- the runtime. Unsupported hosts have no native discovery tool.
173
-
174
- The CLI tarball is about 10.7 MB, without runtime archives. Packed payload sizes
175
- are about 28.8 MB for Windows x64, 27.2 MB for Windows arm64, and 69.8 MB for
176
- Apple Silicon. These are decimal sizes, not extracted runtime sizes.
177
-
178
- Workspace manifests and locks keep unpublished native dependencies out of
179
- ordinary developer installs. `scripts/publish.mjs` injects them into the staged
180
- CLI shrinkwrap and standalone installer lock. Public lock rewriting updates both
181
- package names and tarball filenames. Publication validates all seven packages,
182
- then publishes payloads before the CLI. Dev staging uses exact
183
- `0.2.19-dev.<run>.<attempt>` versions throughout package manifests, shrinkwrap,
184
- and installer locks. It publishes `@ashx-j/lunr-dev` with its own `latest` tag;
185
- shared libraries and runtime payloads use `dev` tags. Stable tags stay unchanged.
186
- Production publication still requires separate approval and an unpublished
187
- stable CLI version.
188
-
189
- `scripts/build-binaries.sh` and `copy-binary-assets` copy only the selected opaque
190
- archive into `native/computer-use` beside the executable. They preserve the macOS
191
- archive without extracting or signing it. Routine builds stay offline. Release
192
- preparation may fetch only the pinned official archives, then verifies their
193
- sizes and hashes. Stable npm and GitHub binary publication stop on the current
194
- development-only approval. The `dev/tui` workflow may publish the explicitly
195
- requested npm dev channel.
196
-
197
- An installed payload package must match the CLI version. A CLI upgrade that keeps
198
- the same runtime bytes can reuse the verified cache. A changed or older cached
199
- runtime fails closed rather than replacing a possibly running app. After all
200
- owned processes stop, removing the inactive lunR runtime directory allows a fresh
201
- extraction at the same stable macOS path.
202
-
203
- ## Verification and remaining gates
204
-
205
- Local verification includes actual Windows initialize/tools/list and a
206
- metadata-only `health_report`, with capture and accessibility checks excluded.
207
- The binary reported 0.28.1 and 57 tools. Health results include human-readable
208
- text and `structuredContent`. Its `session_active` check reports MCP activity,
209
- not an unlocked or input-ready desktop. A separate real Windows metadata probe
210
- confirmed an active session and Default input desktop without screen, AX, or
211
- input calls. Snapshot identity and operation mapping
212
- were checked against the exact released tool schemas and source; no live
213
- snapshot was taken.
214
-
215
- Focused tests cover policy, result interpretation, image coordinate mapping,
216
- new GUI operation mapping, interrupted initialization, partial shutdown,
217
- settings/session tool rosters, real separate-process contention and death,
218
- orphan-runtime ownership, cache tampering, redirected paths, concurrent
219
- extraction, and the fresh gateway cron factory's approval/disposal lifecycle.
220
- The dev review passes 167 focused Vitest tests across 14 files and
221
- eight archive/package tests. All five offline production builds, including the
222
- coding-agent Node bundle, pass. Touched native TypeScript lint and the repository's
223
- relative-import, workflow-publication, browser-smoke, and diff checks pass.
224
-
225
- A loopback fixture registry served all seven public-name tarballs without changing
226
- their bytes. A fresh Windows install used `--ignore-scripts`, fetched only the host
227
- payload, then passed archive validation and first-paint/first-request fixtures
228
- after relocation. Separate npm installs selected the correct package for each
229
- supported OS/CPU combination and no package for Linux. An omitted-optional install
230
- returned the expected missing-payload error. The shipped installer lock passed
231
- `npm ci --ignore-scripts`. Standalone asset tests copied and rechecked all three
232
- opaque archives. No installed app or desktop operation ran in these packaging
233
- tests. Cross-platform npm selection on Windows is not macOS runtime acceptance.
234
-
235
- The first-request fixture strips inherited subagent environment state before
236
- checking the default tool inventory. The supported-host inventory includes only
237
- `computer_load`; detailed computer tools remain lazy. The unsupported-host
238
- baseline is unchanged.
239
-
240
- To repeat local distribution checks after the offline build, prepare the pinned
241
- archives with `scripts/bundle-computer-use.mjs`, create an empty temporary pack
242
- directory, then run:
243
-
244
- ```sh
245
- node scripts/generate-computer-use-manifest.mjs --check
246
- node --test scripts/check-computer-use-release.test.mjs scripts/computer-use-packages.test.mjs
247
- node scripts/publish.mjs --channel dev --version 0.2.19-dev.0.1 --dry-run --pack-dir /absolute/temporary/pack-directory
248
- node scripts/check-computer-use-install.mjs /absolute/temporary/pack-directory
249
- ```
250
-
251
- The install checker uses a loopback registry for the local public packages and
252
- npm's public registry for external dependencies. It isolates npm configuration,
253
- cache, and install directories and removes them afterward. It does not publish.
254
- These checks do not certify desktop behavior.
255
-
256
- External acceptance gates remain:
257
-
258
- - Windows locked, disconnected, UAC, and integrity-state acceptance for the
259
- metadata admission check and the actual driver.
260
- - Authorized native and Electron fixture desktops, Unicode, moved/resized
261
- windows, display scaling, stale accessibility handles, application exit,
262
- outcome verification, and cancellation during held input.
263
- - Real macOS signature/notarization, TCC, LaunchServices/FIFO environment,
264
- coexistence, upgrade, and shutdown acceptance.
265
- - Real macOS and Windows arm64 runtime installation and launch. Their npm
266
- selection and unchanged archive copying pass locally, but their hardware
267
- execution and upgrades remain unverified.
268
- - Full standalone executable acceptance. Payload asset copying passes; this
269
- verification did not compile and exercise every Bun target.
270
-
271
- ## Privacy and rollback
272
-
273
- GUI actions are outside lunR's filesystem rollback. Images, accessibility text,
274
- and typed text can enter selected-provider requests and saved sessions.
275
- Disabling driver telemetry does not disable lunR session storage. Application
276
- content is untrusted task data, never authorization. OS permissions, locked
277
- desktops, UAC, and integrity restrictions still apply.
176
+ source `d8028a7943087ee258dc1b4d19dc12a7cd27669c`. Archive identities and approval
177
+ are in `scripts/computer-use-release.json`; `release.generated.ts` derives from
178
+ it. The upstream MIT license is under `native/computer-use`. No runtime pin or
179
+ native binary changed in the image-only workflow work.
180
+
181
+ The runtime resolves the host's optional payload package or matching archive
182
+ beside a standalone executable. It verifies the archive, extracts a fresh
183
+ reference tree, and checks cached files/helpers against it. Redirected paths and
184
+ escaping symlinks are refused. Installers do not overwrite an existing runtime.
185
+ After confirming all owned processes stopped, an inactive cache can be removed
186
+ for reinstallation. Runtime code is never downloaded at first use.
187
+
188
+ Windows uses system `tar.exe` and an isolated `mcp --direct --embedded
189
+ --no-overlay` process. A hidden system PowerShell metadata probe refuses session
190
+ zero, disconnected sessions, and inaccessible/non-Default input desktops. It
191
+ never switches desktops. Both platforms isolate profiles, strip inherited
192
+ `CUA_*`, set standard permission mode, and disable telemetry/update checks.
193
+
194
+ macOS preserves the unchanged signed app at its stable lunR-owned path, verifies
195
+ its signature with `codesign --verify --deep --strict`, and launches that exact
196
+ path through `open -n -g -W -a`. A private HOME, socket, stdin FIFO, and
197
+ `--parent-liveness-stdio` isolate daemon state and lifetime. Shutdown uses the
198
+ private PID-bound endpoint and waits for the app to exit. No re-signing occurs.
199
+
200
+ Release staging creates exact-version host-specific optional payload packages.
201
+ They contain unchanged archives and no install scripts. Workspace manifests keep
202
+ unpublished payload dependencies out. Standalone asset copying selects one
203
+ opaque archive. Stable publication remains gated on production approval and a
204
+ new CLI version. This integration retains dev-channel CLI naming, update routing,
205
+ and exact-version package/lock rewriting. Dev publication uses `latest` only for
206
+ `@ashx-j/lunr-dev`; shared libraries and payload packages use the `dev` tag. Stable
207
+ tags remain unchanged. The user requested a dev-channel update and installation,
208
+ with automated release checks complete. Publication and global installation remain
209
+ separate distribution steps.
210
+
211
+ ## Pending acceptance
212
+
213
+ Source tests cover image-only capture flags, metadata allowlists, image/crop
214
+ mapping, fresh tokens, single-action post-images, bounded unchanged behavior,
215
+ uncertain outcomes, permissions, and ownership. Source-review fixes add equivalent
216
+ click defaults, app/window pagination, and Unicode partial-typing recovery coverage.
217
+ The focused 23-suite run passes 265 tests, including a real Photon PNG crop
218
+ fixture that checks output pixels and coordinate mapping. All five offline package
219
+ builds and the Node bundle pass. Clean-parent first-request capture confirms that
220
+ `computer_load` is the only addition to the unsupported-host tool inventory; the
221
+ supported-host fingerprint is current. Private prompt and tool snapshots remain
222
+ local validation artifacts.
223
+
224
+ Seven dev package tarballs pass isolated installation and relocation checks,
225
+ host-only payload selection, archive verification, omitted-optional handling, and
226
+ the standalone installer lock. First-paint and first-turn subagent, MCP, LSP, and
227
+ local HTTP fixtures pass without remote inference. These checks do not launch the
228
+ native driver or prove application effects.
229
+
230
+ Explicitly authorized desktop acceptance remains required. Native gates include
231
+ Windows locked/UAC/integrity states,
232
+ Electron/native apps, display scaling and moved/resized windows, Unicode,
233
+ held-input cancellation, and macOS TCC/LaunchServices/FIFO/shutdown on hardware.
234
+ Cursor/runtime changes need a separate scoped decision before implementation.
235
+
236
+ ## Privacy
237
+
238
+ Images, window titles, and typed text can enter selected-provider requests and
239
+ saved sessions. Disabling driver telemetry does not disable lunR session storage.
240
+ GUI changes are outside filesystem rollback. Application content is untrusted
241
+ task data, never authorization. OS permissions, locked desktops, UAC, and
242
+ integrity restrictions still apply.
package/docs/features.md CHANGED
@@ -21,13 +21,31 @@ Permission modes: `manual | yolo | plan | auto`. Shift+Tab (`app.mode.cycle`) cy
21
21
 
22
22
  Advertised subagents always start **fresh** (no forked parent context). Default parallel concurrency / max tasks / global run cap are unlimited; an explicit `concurrency` is still honored.
23
23
 
24
+ Single, parallel, and chain launches run async when `async` is omitted. Set `async:false` for an immediate foreground result or use `clarify:true` for the interactive preview/editor. Continue independent work after an async launch, then yield for normal interactive completion. Use `subagent_wait` only when the same turn or skill must finish after its children. Headless sessions auto-drain current-session work. Use status for one-time inspection rather than polling or sleeping for completion.
25
+
26
+ The legacy extension config keys `asyncByDefault` and `forceTopLevelAsync` remain accepted but no longer change launch mode. Omitted `async` resolves to async, while explicit `async:false`, `clarify:true`, and internal `foregroundOnly` calls stay foreground. RPC and scheduled launches remain always async.
27
+
28
+ Collapsed subagent rows (foreground and async) are one line: status glyph, description, selected tier or explicit model, tokens, and elapsed time. Mixed async runs use the same flat child rows without an aggregate tree. Running rows keep a live spinner and clock; completed collapsed rows freeze those stats. Choose the running child spinner under `/settings` → Customize. Async launches show `subagent async` in the tool header. Completed notify cards show title and status only; the model still receives the full result text.
29
+
24
30
  A launch of 3+ parallel children in one `tasks`/`chain.parallel` call, or 3+ same-turn SINGLE `subagent` calls, receives one aggregate confirmation in **manual and yolo**. Sequential work stays `chain`. Auto bypasses this confirmation, and it can be disabled independently in `/settings`.
25
31
 
26
32
  `/goal` sets a session goal and **forces session auto** permission mode.
27
33
 
34
+ ### Questions to async children
35
+
36
+ The parent can use `subagent_supervisor` with `action: "ask"` to ask a running async child for information it needs before the final report. The request names the run, selects one child, and includes a `reason` explaining which decision needs the answer.
37
+
38
+ Asking returns a question ID without waiting. The child receives the question at a safe turn boundary, replies from its current findings, and continues its assigned task. Answers arrive separately from the run's final result and wake an idle parent. A delivery receipt is not an answer. Questions do not change the assignment, broadcast to other children, or restart finished children.
39
+
40
+ The parent calls `subagent_supervisor({ action: "ask", id, index, reason, message })`. It must select an `index` or private `childId` when several children are running. The child answers with `contact_supervisor({ action: "reply", replyTo: questionId, message })`. If the parent's next decision must wait, `subagent_wait({ questionId })` returns the answer instead of sending a second notification. Read-only children can reply without receiving editing tools.
41
+
42
+ A child must have an active question-capable input channel. Only one question may be outstanding per child. Questions expire after ten minutes by default, and child termination, failed delivery, process replacement, or parent session replacement cancels pending questions. A wait timeout ends the wait, not the question. Existing blocking child-to-parent requests take priority to avoid mutual waiting.
43
+
44
+ The agent must ask only when the child has missing context, the answer changes a concrete next decision, and waiting for completion would block progress or risk rework. It must use available results first and batch related questions. Routine progress checks, duplicate questions, polling, and step-by-step supervision are prohibited. A follow-up is appropriate only when the answer leaves the original decision unresolved.
45
+
28
46
  ## Todos, memory, and global instructions
29
47
 
30
- - **Todos** — lunr-todos is a full-replace list. Completed todos prune on the next user turn (no leftover `✓ N done` footer).
48
+ - **Todos** — lunr-todos is a full-replace list. Collapsed lists show all four active items; lists of five or more show three and a `+N more` line. Completed todos prune on the next user turn (no leftover `✓ N done` footer).
31
49
  - **Agent memory** — durable established facts and stable preferences in `~/.lunr/simple-memory/memory.md`. `/settings` → Agent memory controls injection and the `memory_add`, `memory_remove`, and `memory_load` tools without deleting stored facts. `memoryCharCap` defaults to 5000. Behavior instructions, transient task state, transcripts, guesses, and secrets do not belong in memory.
32
50
  - **Global instructions** — create `~/.lunr/agent/agents/AGENTS.md` yourself when you want global behavior or instructions. lunR injects it through the normal context loader; `/reload` picks up changes. The model cannot modify this user-managed file. The retired `behavior.md` file and behavior presets are no longer loaded.
33
51
  - **Model instructions** — `/settings` can enable `~/.lunr/agent/agents/<model-name>/AGENTS.md` and choose **Both** (global then model-specific) or **Model only**. The folder name is provider-independent and filesystem-safe. Project `AGENTS.md`/`CLAUDE.md` files are unaffected, and `--no-context-files` disables all instruction files.
@@ -83,10 +101,10 @@ Without runnable adapters (enabled platform + resolvable token), `lunr gateway`
83
101
  - `/fast [on|off|status]` controls `service_tier: "fast"` for OpenAI Codex subscriptions only. It persists across new sessions, gateway turns, and subagents. Paid `openai` API models do not use it.
84
102
  - Footer plan bar prefers a 5h window and falls back to weekly (`planUsageWindow`). In Customize, Plan usage hides the whole segment while Plan bar hides only the █░ fill and keeps the percent.
85
103
  - Click a ✻ Thought or tool card to expand/collapse that item. `app.tools.expand` is unbound. `/tree` still uses `ctrl+o` for filters.
86
- - Smooth streaming (`smoothStreaming`, default off) is **interactive TUI only** (grapheme reveal at ~30 FPS). Print, RPC, and gateway stay unsmoothed.
104
+ - Smooth streaming (`smoothStreaming`, default off) reveals assistant text and thinking in small character batches at about 30 FPS in the interactive TUI. The thinking preview shows the last four revealed lines. Completed thinking collapses after its reveal catches up. Message completion flushes any remaining text immediately. Print, RPC, and gateway stay unsmoothed.
87
105
  - Image paste inserts `[image_n]` chips. Windows uses **Alt+V**; VS Code must forward it because it owns Ctrl+V and Alt+V. `/paste-image` bypasses terminal shortcuts.
88
- - Model tiers: every child launch selects `light`, `standard`, or `heavy`. Configure authenticated models for those routes in `/settings`; a missing, disabled, unauthenticated, or unavailable route fails closed. Per-tier thinking is optional; unset inherits the parent session.
89
- - Settings tools: `settings_load` is always available to the model. It injects four narrowly scoped tools for model tiers, model instruction subscriptions, rollback behavior, and session retention only after the model requests them.
106
+ - Model selection: every child launch chooses exactly one of `tier: light|standard|heavy` (default) or an explicit `model: provider/id` when the user names a model. Configure tier routes in `/settings`. Optional `thinking` is only valid with an explicit model; tier launches use configured tier thinking. Direct model launches do not require tier mode. Missing, both, inherit, unavailable, or unauthenticated selections fail closed before spawn.
107
+ - Settings changes stay on `/settings`. The agent does not get `settings_load` or other agent-managed settings tools, and direct file-tool writes to lunR `settings.json` are blocked.
90
108
 
91
109
  ## Updates, catalogs, local models
92
110