@ashx-j/lunr-dev 0.2.13-dev.8.1 → 0.2.19-dev.10.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 (484) hide show
  1. package/CHANGELOG.md +60 -1
  2. package/README.md +7 -1
  3. package/dist/builtin-extensions/ashxj-thinking.d.ts +1 -0
  4. package/dist/builtin-extensions/ashxj-thinking.d.ts.map +1 -1
  5. package/dist/builtin-extensions/ashxj-thinking.js +44 -19
  6. package/dist/builtin-extensions/ashxj-thinking.js.map +1 -1
  7. package/dist/builtin-extensions/ashxj-tui.d.ts +14 -0
  8. package/dist/builtin-extensions/ashxj-tui.d.ts.map +1 -1
  9. package/dist/builtin-extensions/ashxj-tui.js +37 -3
  10. package/dist/builtin-extensions/ashxj-tui.js.map +1 -1
  11. package/dist/builtin-extensions/index.d.ts +1 -15
  12. package/dist/builtin-extensions/index.d.ts.map +1 -1
  13. package/dist/builtin-extensions/index.js +8 -21
  14. package/dist/builtin-extensions/index.js.map +1 -1
  15. package/dist/builtin-extensions/lunr-computer-use.d.ts +3 -0
  16. package/dist/builtin-extensions/lunr-computer-use.d.ts.map +1 -0
  17. package/dist/builtin-extensions/lunr-computer-use.js +157 -0
  18. package/dist/builtin-extensions/lunr-computer-use.js.map +1 -0
  19. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.d.ts.map +1 -1
  20. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js +6 -2
  21. package/dist/builtin-extensions/narumiruna-pi-goal/src/goal.js.map +1 -1
  22. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts +4 -0
  23. package/dist/builtin-extensions/pi-lsp-extension/src/index.d.ts.map +1 -1
  24. package/dist/builtin-extensions/pi-lsp-extension/src/index.js +172 -171
  25. package/dist/builtin-extensions/pi-lsp-extension/src/index.js.map +1 -1
  26. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts +50 -0
  27. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.d.ts.map +1 -0
  28. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js +131 -0
  29. package/dist/builtin-extensions/pi-lsp-extension/src/runtime.js.map +1 -0
  30. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts +7 -0
  31. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.d.ts.map +1 -0
  32. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js +211 -0
  33. package/dist/builtin-extensions/pi-mcp-adapter/direct-tool-executor.js.map +1 -0
  34. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts +0 -5
  35. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.d.ts.map +1 -1
  36. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js +0 -202
  37. package/dist/builtin-extensions/pi-mcp-adapter/direct-tools.js.map +1 -1
  38. package/dist/builtin-extensions/pi-mcp-adapter/index.d.ts.map +1 -1
  39. package/dist/builtin-extensions/pi-mcp-adapter/index.js +276 -109
  40. package/dist/builtin-extensions/pi-mcp-adapter/index.js.map +1 -1
  41. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts +4 -1
  42. package/dist/builtin-extensions/pi-mcp-adapter/init.d.ts.map +1 -1
  43. package/dist/builtin-extensions/pi-mcp-adapter/init.js +10 -3
  44. package/dist/builtin-extensions/pi-mcp-adapter/init.js.map +1 -1
  45. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.d.ts.map +1 -1
  46. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js +6 -1
  47. package/dist/builtin-extensions/pi-mcp-adapter/metadata-cache.js.map +1 -1
  48. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts +6 -1
  49. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.d.ts.map +1 -1
  50. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js +33 -8
  51. package/dist/builtin-extensions/pi-mcp-adapter/server-manager.js.map +1 -1
  52. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.d.ts.map +1 -1
  53. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js +2 -1
  54. package/dist/builtin-extensions/pi-prompt-template-model/prompt-loader.js.map +1 -1
  55. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts +1 -1
  56. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.d.ts.map +1 -1
  57. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js +1 -1
  58. package/dist/builtin-extensions/pi-prompt-template-model/tool-manager.js.map +1 -1
  59. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +68 -15
  62. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  63. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.d.ts.map +1 -1
  64. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js +6 -2
  65. package/dist/builtin-extensions/pi-subagents/src/extension/schemas.js.map +1 -1
  66. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +5 -2
  69. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts +10 -0
  71. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.d.ts.map +1 -0
  72. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js +38 -0
  73. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/request-params.js.map +1 -0
  74. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  75. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +3 -16
  76. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  77. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts +1 -1
  78. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.d.ts.map +1 -1
  79. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js +2 -0
  80. package/dist/builtin-extensions/pi-subagents/src/runs/shared/child-tools.js.map +1 -1
  81. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.d.ts.map +1 -1
  82. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js +1 -1
  83. package/dist/builtin-extensions/pi-subagents/src/shared/fork-context.js.map +1 -1
  84. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts +1 -1
  85. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.d.ts.map +1 -1
  86. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js +1 -1
  87. package/dist/builtin-extensions/pi-subagents/src/slash/slash-commands.js.map +1 -1
  88. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts +2 -1
  89. package/dist/builtin-extensions/pi-subagents/src/tui/render.d.ts.map +1 -1
  90. package/dist/builtin-extensions/pi-subagents/src/tui/render.js +72 -31
  91. package/dist/builtin-extensions/pi-subagents/src/tui/render.js.map +1 -1
  92. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts +1 -1
  93. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.d.ts.map +1 -1
  94. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js +2 -1
  95. package/dist/builtin-extensions/pi-subagents/src/watchdog/review.js.map +1 -1
  96. package/dist/builtin-extensions/pi-web-access/extract.d.ts.map +1 -1
  97. package/dist/builtin-extensions/pi-web-access/extract.js +105 -54
  98. package/dist/builtin-extensions/pi-web-access/extract.js.map +1 -1
  99. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts +1 -1
  100. package/dist/builtin-extensions/pi-web-access/gemini-search.d.ts.map +1 -1
  101. package/dist/builtin-extensions/pi-web-access/gemini-search.js +82 -65
  102. package/dist/builtin-extensions/pi-web-access/gemini-search.js.map +1 -1
  103. package/dist/builtin-extensions/pi-web-access/github-extract.d.ts.map +1 -1
  104. package/dist/builtin-extensions/pi-web-access/github-extract.js +2 -0
  105. package/dist/builtin-extensions/pi-web-access/github-extract.js.map +1 -1
  106. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  107. package/dist/builtin-extensions/pi-web-access/index.js +259 -168
  108. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  109. package/dist/builtin-extensions/pi-web-access/lazy.d.ts +18 -0
  110. package/dist/builtin-extensions/pi-web-access/lazy.d.ts.map +1 -0
  111. package/dist/builtin-extensions/pi-web-access/lazy.js +19 -0
  112. package/dist/builtin-extensions/pi-web-access/lazy.js.map +1 -0
  113. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts +6 -0
  114. package/dist/builtin-extensions/pi-web-access/session-cleanup.d.ts.map +1 -0
  115. package/dist/builtin-extensions/pi-web-access/session-cleanup.js +17 -0
  116. package/dist/builtin-extensions/pi-web-access/session-cleanup.js.map +1 -0
  117. package/dist/catalog/publication.json +12 -12
  118. package/dist/cli-runtime.d.ts +3 -0
  119. package/dist/cli-runtime.d.ts.map +1 -0
  120. package/dist/cli-runtime.js +73 -0
  121. package/dist/cli-runtime.js.map +1 -0
  122. package/dist/cli.d.ts.map +1 -1
  123. package/dist/cli.js +14 -53
  124. package/dist/cli.js.map +1 -1
  125. package/dist/config.d.ts +1 -0
  126. package/dist/config.d.ts.map +1 -1
  127. package/dist/config.js +1 -0
  128. package/dist/config.js.map +1 -1
  129. package/dist/core/agent-session-services.d.ts.map +1 -1
  130. package/dist/core/agent-session-services.js +1 -1
  131. package/dist/core/agent-session-services.js.map +1 -1
  132. package/dist/core/agent-session.d.ts +3 -0
  133. package/dist/core/agent-session.d.ts.map +1 -1
  134. package/dist/core/agent-session.js +56 -12
  135. package/dist/core/agent-session.js.map +1 -1
  136. package/dist/core/compaction/compaction.d.ts.map +1 -1
  137. package/dist/core/compaction/compaction.js +10 -5
  138. package/dist/core/compaction/compaction.js.map +1 -1
  139. package/dist/core/computer-use/adapter.d.ts +23 -0
  140. package/dist/core/computer-use/adapter.d.ts.map +1 -0
  141. package/dist/core/computer-use/adapter.js +116 -0
  142. package/dist/core/computer-use/adapter.js.map +1 -0
  143. package/dist/core/computer-use/lease.d.ts +18 -0
  144. package/dist/core/computer-use/lease.d.ts.map +1 -0
  145. package/dist/core/computer-use/lease.js +129 -0
  146. package/dist/core/computer-use/lease.js.map +1 -0
  147. package/dist/core/computer-use/macos-runtime.d.ts +14 -0
  148. package/dist/core/computer-use/macos-runtime.d.ts.map +1 -0
  149. package/dist/core/computer-use/macos-runtime.js +148 -0
  150. package/dist/core/computer-use/macos-runtime.js.map +1 -0
  151. package/dist/core/computer-use/policy.d.ts +19 -0
  152. package/dist/core/computer-use/policy.d.ts.map +1 -0
  153. package/dist/core/computer-use/policy.js +66 -0
  154. package/dist/core/computer-use/policy.js.map +1 -0
  155. package/dist/core/computer-use/release.generated.d.ts +31 -0
  156. package/dist/core/computer-use/release.generated.d.ts.map +1 -0
  157. package/dist/core/computer-use/release.generated.js +36 -0
  158. package/dist/core/computer-use/release.generated.js.map +1 -0
  159. package/dist/core/computer-use/runtime.d.ts +13 -0
  160. package/dist/core/computer-use/runtime.d.ts.map +1 -0
  161. package/dist/core/computer-use/runtime.js +158 -0
  162. package/dist/core/computer-use/runtime.js.map +1 -0
  163. package/dist/core/computer-use/schemas.d.ts +88 -0
  164. package/dist/core/computer-use/schemas.d.ts.map +1 -0
  165. package/dist/core/computer-use/schemas.js +80 -0
  166. package/dist/core/computer-use/schemas.js.map +1 -0
  167. package/dist/core/computer-use/windows-desktop.d.ts +3 -0
  168. package/dist/core/computer-use/windows-desktop.d.ts.map +1 -0
  169. package/dist/core/computer-use/windows-desktop.js +48 -0
  170. package/dist/core/computer-use/windows-desktop.js.map +1 -0
  171. package/dist/core/computer-use/workflow.d.ts +24 -0
  172. package/dist/core/computer-use/workflow.d.ts.map +1 -0
  173. package/dist/core/computer-use/workflow.js +330 -0
  174. package/dist/core/computer-use/workflow.js.map +1 -0
  175. package/dist/core/extensions/host-static.d.ts.map +1 -1
  176. package/dist/core/extensions/host-static.js +34 -12
  177. package/dist/core/extensions/host-static.js.map +1 -1
  178. package/dist/core/extensions/loader.d.ts +1 -2
  179. package/dist/core/extensions/loader.d.ts.map +1 -1
  180. package/dist/core/extensions/loader.js +10 -64
  181. package/dist/core/extensions/loader.js.map +1 -1
  182. package/dist/core/extensions/types.d.ts +2 -2
  183. package/dist/core/extensions/types.d.ts.map +1 -1
  184. package/dist/core/extensions/types.js.map +1 -1
  185. package/dist/core/footer-data-provider.d.ts.map +1 -1
  186. package/dist/core/footer-data-provider.js +2 -0
  187. package/dist/core/footer-data-provider.js.map +1 -1
  188. package/dist/core/keybindings.d.ts +2 -2
  189. package/dist/core/keybindings.d.ts.map +1 -1
  190. package/dist/core/keybindings.js +2 -2
  191. package/dist/core/keybindings.js.map +1 -1
  192. package/dist/core/model-runtime.d.ts +0 -3
  193. package/dist/core/model-runtime.d.ts.map +1 -1
  194. package/dist/core/model-runtime.js +1 -10
  195. package/dist/core/model-runtime.js.map +1 -1
  196. package/dist/core/package-manager.d.ts.map +1 -1
  197. package/dist/core/package-manager.js +1 -1
  198. package/dist/core/package-manager.js.map +1 -1
  199. package/dist/core/permissions.d.ts +1 -3
  200. package/dist/core/permissions.d.ts.map +1 -1
  201. package/dist/core/permissions.js +33 -25
  202. package/dist/core/permissions.js.map +1 -1
  203. package/dist/core/plan-mode.d.ts.map +1 -1
  204. package/dist/core/plan-mode.js +9 -0
  205. package/dist/core/plan-mode.js.map +1 -1
  206. package/dist/core/rollback.d.ts.map +1 -1
  207. package/dist/core/rollback.js +13 -90
  208. package/dist/core/rollback.js.map +1 -1
  209. package/dist/core/sdk.d.ts +1 -1
  210. package/dist/core/sdk.d.ts.map +1 -1
  211. package/dist/core/sdk.js +1 -1
  212. package/dist/core/sdk.js.map +1 -1
  213. package/dist/core/session-manager.d.ts +0 -1
  214. package/dist/core/session-manager.d.ts.map +1 -1
  215. package/dist/core/session-manager.js +21 -79
  216. package/dist/core/session-manager.js.map +1 -1
  217. package/dist/core/settings-manager.d.ts +6 -0
  218. package/dist/core/settings-manager.d.ts.map +1 -1
  219. package/dist/core/settings-manager.js +19 -0
  220. package/dist/core/settings-manager.js.map +1 -1
  221. package/dist/core/slash-commands.d.ts.map +1 -1
  222. package/dist/core/slash-commands.js +0 -1
  223. package/dist/core/slash-commands.js.map +1 -1
  224. package/dist/core/timings.d.ts +2 -1
  225. package/dist/core/timings.d.ts.map +1 -1
  226. package/dist/core/timings.js +17 -2
  227. package/dist/core/timings.js.map +1 -1
  228. package/dist/dev-cli.js +0 -0
  229. package/dist/gateway/agent-bridge.d.ts +6 -1
  230. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  231. package/dist/gateway/agent-bridge.js +23 -6
  232. package/dist/gateway/agent-bridge.js.map +1 -1
  233. package/dist/gateway/commands.d.ts +1 -1
  234. package/dist/gateway/commands.d.ts.map +1 -1
  235. package/dist/gateway/commands.js +1 -18
  236. package/dist/gateway/commands.js.map +1 -1
  237. package/dist/gateway/cron.d.ts +1 -1
  238. package/dist/gateway/cron.d.ts.map +1 -1
  239. package/dist/gateway/cron.js +23 -7
  240. package/dist/gateway/cron.js.map +1 -1
  241. package/dist/main.d.ts +2 -2
  242. package/dist/main.d.ts.map +1 -1
  243. package/dist/main.js +57 -48
  244. package/dist/main.js.map +1 -1
  245. package/dist/modes/interactive/components/footer.d.ts +4 -2
  246. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  247. package/dist/modes/interactive/components/footer.js +23 -32
  248. package/dist/modes/interactive/components/footer.js.map +1 -1
  249. package/dist/modes/interactive/components/processes-selector.d.ts +2 -3
  250. package/dist/modes/interactive/components/processes-selector.d.ts.map +1 -1
  251. package/dist/modes/interactive/components/processes-selector.js +5 -10
  252. package/dist/modes/interactive/components/processes-selector.js.map +1 -1
  253. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  254. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  255. package/dist/modes/interactive/components/settings-selector.js +20 -0
  256. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  257. package/dist/modes/interactive/interactive-mode.d.ts +12 -21
  258. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  259. package/dist/modes/interactive/interactive-mode.js +138 -152
  260. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  261. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  262. package/dist/modes/interactive/theme/theme.js +95 -84
  263. package/dist/modes/interactive/theme/theme.js.map +1 -1
  264. package/dist/modes/interactive/thinking-level-slash.d.ts +4 -0
  265. package/dist/modes/interactive/thinking-level-slash.d.ts.map +1 -0
  266. package/dist/modes/interactive/thinking-level-slash.js +23 -0
  267. package/dist/modes/interactive/thinking-level-slash.js.map +1 -0
  268. package/dist/node-runtime/adapter-AZMY335J.js +279 -0
  269. package/dist/node-runtime/agent-session-services-RSGP5GDN.js +39 -0
  270. package/dist/node-runtime/benchmark-request-UC7PD3V3.js +57 -0
  271. package/dist/node-runtime/brave-UWDA3I22.js +143 -0
  272. package/dist/node-runtime/builtin-extensions-7STLFW3A.js +29 -0
  273. package/dist/node-runtime/chunk-2IDTZAG5.js +1415 -0
  274. package/dist/node-runtime/chunk-3GHXVUAK.js +21 -0
  275. package/dist/node-runtime/chunk-3RCWXWAY.js +466 -0
  276. package/dist/node-runtime/chunk-3WFAEVKS.js +115 -0
  277. package/dist/node-runtime/chunk-3X3KZKMI.js +49 -0
  278. package/dist/node-runtime/chunk-4HXHDDCF.js +16 -0
  279. package/dist/node-runtime/chunk-4SJWFTUP.js +24 -0
  280. package/dist/node-runtime/chunk-4ZWGEEAS.js +69 -0
  281. package/dist/node-runtime/chunk-53YJI7JU.js +137 -0
  282. package/dist/node-runtime/chunk-5NWQCSKR.js +19218 -0
  283. package/dist/node-runtime/chunk-5OLJGVCB.js +68 -0
  284. package/dist/node-runtime/chunk-5Q45AVQG.js +108 -0
  285. package/dist/node-runtime/chunk-5SQDLSZJ.js +949 -0
  286. package/dist/node-runtime/chunk-6SPPH4FY.js +1269 -0
  287. package/dist/node-runtime/chunk-6UB6NKA3.js +860 -0
  288. package/dist/node-runtime/chunk-7AFOFSDY.js +105 -0
  289. package/dist/node-runtime/chunk-7N3YHTYF.js +26 -0
  290. package/dist/node-runtime/chunk-ARC4KOTI.js +11178 -0
  291. package/dist/node-runtime/chunk-AUXVGBO4.js +19 -0
  292. package/dist/node-runtime/chunk-AY6CAJSL.js +30 -0
  293. package/dist/node-runtime/chunk-BHO7O6E5.js +296 -0
  294. package/dist/node-runtime/chunk-BI3DHYCN.js +8845 -0
  295. package/dist/node-runtime/chunk-BKAZ6BKX.js +2185 -0
  296. package/dist/node-runtime/chunk-BR7YDUKA.js +109 -0
  297. package/dist/node-runtime/chunk-BRJX2PRC.js +53 -0
  298. package/dist/node-runtime/chunk-C4O2RSQQ.js +37 -0
  299. package/dist/node-runtime/chunk-CCZJ3PYY.js +17 -0
  300. package/dist/node-runtime/chunk-CGBXPL3E.js +1171 -0
  301. package/dist/node-runtime/chunk-CH6OL6P2.js +295 -0
  302. package/dist/node-runtime/chunk-CJECDQKP.js +19 -0
  303. package/dist/node-runtime/chunk-DAPBPCBP.js +53 -0
  304. package/dist/node-runtime/chunk-DDGMHUOW.js +305 -0
  305. package/dist/node-runtime/chunk-DMMTJQMQ.js +43 -0
  306. package/dist/node-runtime/chunk-DVGWF6A2.js +1180 -0
  307. package/dist/node-runtime/chunk-EH2LJQPM.js +64 -0
  308. package/dist/node-runtime/chunk-EHMBW7FA.js +772 -0
  309. package/dist/node-runtime/chunk-FLYMHKCS.js +966 -0
  310. package/dist/node-runtime/chunk-FVDOXRUD.js +96 -0
  311. package/dist/node-runtime/chunk-GZQHMEWL.js +126 -0
  312. package/dist/node-runtime/chunk-H2EOZYMP.js +57 -0
  313. package/dist/node-runtime/chunk-HQCKFM2O.js +56 -0
  314. package/dist/node-runtime/chunk-HRS4HMDX.js +610 -0
  315. package/dist/node-runtime/chunk-HYHJIRDW.js +19 -0
  316. package/dist/node-runtime/chunk-I6R76AG7.js +22 -0
  317. package/dist/node-runtime/chunk-ISQDQIZN.js +296 -0
  318. package/dist/node-runtime/chunk-J7QGQD45.js +24921 -0
  319. package/dist/node-runtime/chunk-JHYKXIMM.js +378 -0
  320. package/dist/node-runtime/chunk-JT6YCS5B.js +5648 -0
  321. package/dist/node-runtime/chunk-JZHEUQRL.js +180 -0
  322. package/dist/node-runtime/chunk-K72NVGUB.js +2834 -0
  323. package/dist/node-runtime/chunk-KKSIVROT.js +88 -0
  324. package/dist/node-runtime/chunk-LCACDWHJ.js +1743 -0
  325. package/dist/node-runtime/chunk-LTXUQJI4.js +173 -0
  326. package/dist/node-runtime/chunk-LWJXTA6Z.js +6814 -0
  327. package/dist/node-runtime/chunk-M3LZLQW2.js +98 -0
  328. package/dist/node-runtime/chunk-MGSB2C3M.js +46 -0
  329. package/dist/node-runtime/chunk-MGWCVY6Y.js +47 -0
  330. package/dist/node-runtime/chunk-MJQDX3BA.js +72 -0
  331. package/dist/node-runtime/chunk-MUMMMTW4.js +8392 -0
  332. package/dist/node-runtime/chunk-MX3GJNXJ.js +986 -0
  333. package/dist/node-runtime/chunk-NUIFPZWX.js +209 -0
  334. package/dist/node-runtime/chunk-OBMWP3I5.js +68 -0
  335. package/dist/node-runtime/chunk-OR4L3IB2.js +42 -0
  336. package/dist/node-runtime/chunk-OTT6JMPU.js +807 -0
  337. package/dist/node-runtime/chunk-PCIGF2XK.js +250 -0
  338. package/dist/node-runtime/chunk-PL6JKXWI.js +3622 -0
  339. package/dist/node-runtime/chunk-PVCDKGR6.js +55 -0
  340. package/dist/node-runtime/chunk-Q4Q6D4IY.js +364 -0
  341. package/dist/node-runtime/chunk-Q5ZU2VRT.js +83 -0
  342. package/dist/node-runtime/chunk-QFWG2RVL.js +5477 -0
  343. package/dist/node-runtime/chunk-RQ2Q5IYR.js +72 -0
  344. package/dist/node-runtime/chunk-RQ5DNUNG.js +429 -0
  345. package/dist/node-runtime/chunk-RRIZE6QQ.js +17 -0
  346. package/dist/node-runtime/chunk-SN6G4OU6.js +4753 -0
  347. package/dist/node-runtime/chunk-SWSN6HAB.js +53 -0
  348. package/dist/node-runtime/chunk-T5GM5BFH.js +7558 -0
  349. package/dist/node-runtime/chunk-TAP7QTUT.js +1346 -0
  350. package/dist/node-runtime/chunk-U6C7VTR5.js +2033 -0
  351. package/dist/node-runtime/chunk-URD2SLIT.js +1019 -0
  352. package/dist/node-runtime/chunk-VRB2IYGG.js +53 -0
  353. package/dist/node-runtime/chunk-W3CVH5RX.js +62 -0
  354. package/dist/node-runtime/chunk-W7S2REEG.js +9478 -0
  355. package/dist/node-runtime/chunk-XBWPBZBN.js +125 -0
  356. package/dist/node-runtime/chunk-XTHQ7XR7.js +509 -0
  357. package/dist/node-runtime/chunk-ZCHMJ34K.js +130 -0
  358. package/dist/node-runtime/chunk-ZRDIMBEQ.js +651 -0
  359. package/dist/node-runtime/chunk-ZSEZY3II.js +247 -0
  360. package/dist/node-runtime/cli-runtime.js +81 -0
  361. package/dist/node-runtime/clipboard-OZ63BBC6.js +12 -0
  362. package/dist/node-runtime/clipboard-image-7QR6GXVA.js +13 -0
  363. package/dist/node-runtime/command-6UXQ6XZN.js +13 -0
  364. package/dist/node-runtime/commands-LGR5VT5X.js +293 -0
  365. package/dist/node-runtime/config-FMEOZSWE.js +77 -0
  366. package/dist/node-runtime/curator-server-XCM43VEF.js +3816 -0
  367. package/dist/node-runtime/customize-XEXL2DGQ.js +12 -0
  368. package/dist/node-runtime/direct-tool-executor-TDJS7TBD.js +191 -0
  369. package/dist/node-runtime/exa-LL64QZR2.js +329 -0
  370. package/dist/node-runtime/export-html-E4DT6ZJQ.js +150 -0
  371. package/dist/node-runtime/extension-input-RV5N6APL.js +14 -0
  372. package/dist/node-runtime/extension-selector-CPD5LWDD.js +14 -0
  373. package/dist/node-runtime/extract-IUCVZCWC.js +17 -0
  374. package/dist/node-runtime/file-sync-HCOP2QVF.js +117 -0
  375. package/dist/node-runtime/gateway-3OLC4GQN.js +2139 -0
  376. package/dist/node-runtime/gemini-api-QE7ANVDZ.js +29 -0
  377. package/dist/node-runtime/gemini-search-NCIDF7NE.js +330 -0
  378. package/dist/node-runtime/gemini-url-context-OKIN7AIP.js +103 -0
  379. package/dist/node-runtime/gemini-web-MM446SEH.js +14 -0
  380. package/dist/node-runtime/github-extract-F64RZOEA.js +619 -0
  381. package/dist/node-runtime/goal-CZQ7FFQJ.js +1831 -0
  382. package/dist/node-runtime/image-resize-6ZPBFMWW.js +11 -0
  383. package/dist/node-runtime/index.js +863 -0
  384. package/dist/node-runtime/init-EKE277AG.js +30 -0
  385. package/dist/node-runtime/install-cli-TH7IJJQQ.js +308 -0
  386. package/dist/node-runtime/interactive-mode-S5M26CQ7.js +59 -0
  387. package/dist/node-runtime/interactive-view-N6F4KUIT.js +247 -0
  388. package/dist/node-runtime/lsp-manager-3ASUSO4T.js +1104 -0
  389. package/dist/node-runtime/lunr-computer-use-4X3KUNF4.js +206 -0
  390. package/dist/node-runtime/lunr-cron-KKBOGAEF.js +274 -0
  391. package/dist/node-runtime/main.js +57 -0
  392. package/dist/node-runtime/mcp-auth-flow-YL6RWPYG.js +33 -0
  393. package/dist/node-runtime/mcp-panel-IIGMXQGP.js +501 -0
  394. package/dist/node-runtime/mcp-setup-panel-FEK7663I.js +355 -0
  395. package/dist/node-runtime/memory-cap-3S4XRLNP.js +20 -0
  396. package/dist/node-runtime/model-tiers-NJLHUEGK.js +20 -0
  397. package/dist/node-runtime/openai-search-B3MSNCQA.js +288 -0
  398. package/dist/node-runtime/package-manager-cli-C4EJOO5Q.js +751 -0
  399. package/dist/node-runtime/parallel-AI2MNSCU.js +265 -0
  400. package/dist/node-runtime/parser-manager-TQHWYDH7.js +152 -0
  401. package/dist/node-runtime/pdf-extract-IPE6H4HP.js +57 -0
  402. package/dist/node-runtime/perplexity-QVJW3I35.js +12 -0
  403. package/dist/node-runtime/pi-intercom-EEMBGQID.js +2215 -0
  404. package/dist/node-runtime/pi-mcp-adapter-DPTJGAAL.js +428 -0
  405. package/dist/node-runtime/pi-ollama-cloud-4VZRMULP.js +1440 -0
  406. package/dist/node-runtime/pi-prompt-template-model-4QT4LLXF.js +3946 -0
  407. package/dist/node-runtime/pi-subagents-VKCLYIBY.js +6050 -0
  408. package/dist/node-runtime/pi-web-access-BV6DSZOP.js +1867 -0
  409. package/dist/node-runtime/print-mode-VWIRFDAC.js +12 -0
  410. package/dist/node-runtime/proxy-modes-R64LU6WZ.js +688 -0
  411. package/dist/node-runtime/rpc-entry.js +65 -0
  412. package/dist/node-runtime/rpc-mode-SJNSOA4G.js +13 -0
  413. package/dist/node-runtime/runtime-3SB5ATHQ.js +21 -0
  414. package/dist/node-runtime/runtime-bridges-UJ5WJJLN.js +14 -0
  415. package/dist/node-runtime/session-manager-QEMZBMTM.js +33 -0
  416. package/dist/node-runtime/session-selector-URVJLOTK.js +14 -0
  417. package/dist/node-runtime/settings-manager-K6IPIQTI.js +23 -0
  418. package/dist/node-runtime/src-GPFAU3N6.js +2427 -0
  419. package/dist/node-runtime/subagent-executor-EFLTO32A.js +8501 -0
  420. package/dist/node-runtime/summary-review-YSMXKITO.js +228 -0
  421. package/dist/node-runtime/tavily-WEZFVFP7.js +154 -0
  422. package/dist/node-runtime/timings-UAD5BEAS.js +16 -0
  423. package/dist/node-runtime/tool-renderer-MV5O452K.js +204 -0
  424. package/dist/node-runtime/update-cli-I6OVDRPL.js +75 -0
  425. package/dist/node-runtime/v4-5MNC3H7G.js +424 -0
  426. package/dist/node-runtime/video-extract-ETA5RA7U.js +304 -0
  427. package/dist/node-runtime/workflow-SA34S4VX.js +325 -0
  428. package/dist/node-runtime/workspace-index-6DBXSTJ6.js +163 -0
  429. package/dist/node-runtime/youtube-extract-SRVGNN26.js +264 -0
  430. package/dist/rpc.d.ts +3 -0
  431. package/dist/rpc.d.ts.map +1 -0
  432. package/dist/rpc.js +18 -0
  433. package/dist/rpc.js.map +1 -0
  434. package/dist/startup/benchmark-request.d.ts +3 -0
  435. package/dist/startup/benchmark-request.d.ts.map +1 -0
  436. package/dist/startup/benchmark-request.js +65 -0
  437. package/dist/startup/benchmark-request.js.map +1 -0
  438. package/dist/startup/{interactive-shell.d.ts → interactive-view.d.ts} +18 -18
  439. package/dist/startup/interactive-view.d.ts.map +1 -0
  440. package/dist/startup/{interactive-shell.js → interactive-view.js} +119 -52
  441. package/dist/startup/interactive-view.js.map +1 -0
  442. package/dist/startup/launch-routing.d.ts.map +1 -1
  443. package/dist/startup/launch-routing.js +9 -10
  444. package/dist/startup/launch-routing.js.map +1 -1
  445. package/dist/startup/startup-milestones.d.ts +1 -1
  446. package/dist/startup/startup-milestones.d.ts.map +1 -1
  447. package/dist/startup/startup-milestones.js +3 -2
  448. package/dist/startup/startup-milestones.js.map +1 -1
  449. package/dist/utils/await-with-abort.d.ts +2 -0
  450. package/dist/utils/await-with-abort.d.ts.map +1 -0
  451. package/dist/utils/await-with-abort.js +19 -0
  452. package/dist/utils/await-with-abort.js.map +1 -0
  453. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  454. package/dist/utils/syntax-highlight.js +10 -4
  455. package/dist/utils/syntax-highlight.js.map +1 -1
  456. package/docs/compaction.md +5 -3
  457. package/docs/computer-use.md +277 -0
  458. package/docs/development.md +5 -33
  459. package/docs/features.md +2 -3
  460. package/docs/interactive-startup.md +105 -0
  461. package/docs/keybindings.md +2 -2
  462. package/docs/terminal-setup.md +1 -1
  463. package/docs/usage.md +1 -2
  464. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  465. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  466. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  467. package/examples/extensions/gondolin/package-lock.json +2 -2
  468. package/examples/extensions/gondolin/package.json +1 -1
  469. package/examples/extensions/hidden-thinking-label.ts +1 -1
  470. package/examples/extensions/sandbox/package-lock.json +2 -2
  471. package/examples/extensions/sandbox/package.json +1 -1
  472. package/examples/extensions/with-deps/package-lock.json +2 -2
  473. package/examples/extensions/with-deps/package.json +1 -1
  474. package/install-lock/package-lock.json +3827 -0
  475. package/install-lock/package.json +18 -0
  476. package/native/computer-use/LICENSE.md +21 -0
  477. package/npm-shrinkwrap.json +3808 -0
  478. package/package.json +30 -24
  479. package/dist/core/swarm.d.ts +0 -23
  480. package/dist/core/swarm.d.ts.map +0 -1
  481. package/dist/core/swarm.js +0 -45
  482. package/dist/core/swarm.js.map +0 -1
  483. package/dist/startup/interactive-shell.d.ts.map +0 -1
  484. package/dist/startup/interactive-shell.js.map +0 -1
@@ -34,7 +34,9 @@ contextTokens > contextWindow - reserveTokens
34
34
 
35
35
  By default, `reserveTokens` is 16384 tokens (configurable in `~/.lunr/agent/settings.json` or `<project-dir>/.lunr/settings.json`). This leaves room for the LLM's response.
36
36
 
37
- You can also trigger manually with `/compact [instructions]`, where optional instructions focus the summary.
37
+ For Codex OAuth models, lunR checks the threshold after each complete batch of tool results. If the batch crosses the threshold, lunR compacts before sending the next provider request.
38
+
39
+ You can also trigger manually with `/compact [instructions]`, where optional instructions focus the summary. Running `/compact` again at an unchanged compaction boundary is a no-op.
38
40
 
39
41
  ### How It Works
40
42
 
@@ -114,7 +116,7 @@ Valid cut points are:
114
116
  - BashExecution messages
115
117
  - Custom messages (custom_message, branch_summary)
116
118
 
117
- Never cut at tool results (they must stay with their tool call).
119
+ Never cut at tool results (they must stay with their tool call). If the recent-token budget lands on a tool result, lunR keeps the assistant message containing its tool call.
118
120
 
119
121
  ### CompactionEntry Structure
120
122
 
@@ -288,7 +290,7 @@ pi.on("session_before_compact", async (event, ctx) => {
288
290
 
289
291
  // branchEntries - all entries on current branch (for custom state)
290
292
  // reason - "manual" (/compact), "threshold", or "overflow"
291
- // willRetry - whether the aborted turn is retried after compaction (overflow recovery)
293
+ // willRetry - whether the active run sends another provider request after compaction
292
294
  // signal - AbortSignal (pass to LLM calls)
293
295
 
294
296
  // Cancel:
@@ -0,0 +1,277 @@
1
+ # Native computer use
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.
10
+
11
+ ## Local setup
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.
24
+
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.
27
+
28
+ ## Tools and permissions
29
+
30
+ 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
127
+
128
+ 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.
@@ -11,7 +11,11 @@ npm install
11
11
  npm run build
12
12
  ```
13
13
 
14
- Compile in order: tui → ai → agent → coding-agent. From this repo, `npx lunr` is the workspace bin (`packages/coding-agent/dist/cli.js`), not a published global install. Rebuild coding-agent `dist` after changes.
14
+ Compile in order: tui → ai → agent → coding-agent → orchestrator. The root build stays offline and does not regenerate the model catalog. From this repo, `npx lunr` uses the workspace CLI, not a published global install.
15
+
16
+ After changing coding-agent, run `npm --prefix packages/coding-agent run build`. Bare `tsgo` updates individual modules but leaves the Node bundle stale. The CLI and public SDK use shared chunks in `dist/node-runtime`; keep that directory with the rest of `dist` when packaging.
17
+
18
+ For startup measurements, import boundaries, and first-turn checks, read [Interactive startup](interactive-startup.md).
15
19
 
16
20
  Run from the package:
17
21
 
@@ -21,38 +25,6 @@ npx lunr
21
25
 
22
26
  lunR keeps the caller's current working directory.
23
27
 
24
- ## TUI dev channel
25
-
26
- Every push to `dev/tui` builds and publishes `@ashx-j/lunr-dev`. The workflow does not run tests. If the code does not compile, npm keeps serving the previous dev build.
27
-
28
- Install it once:
29
-
30
- ```bash
31
- npm i -g @ashx-j/lunr-dev
32
- ```
33
-
34
- Run the stable and dev versions with separate commands:
35
-
36
- ```bash
37
- lunr
38
- lunr-dev
39
- ```
40
-
41
- After a new dev build publishes, update and run it:
42
-
43
- ```bash
44
- lunr-dev update
45
- lunr-dev
46
- ```
47
-
48
- The dev CLI has its own npm package and executable, so installing it does not replace `lunr`. It uses the same `~/.lunr/agent` data as stable lunR. Existing logins and settings work in both versions, but a broken dev change can modify shared settings or sessions.
49
-
50
- Remove only the dev CLI with:
51
-
52
- ```bash
53
- npm uninstall -g @ashx-j/lunr-dev
54
- ```
55
-
56
28
  ## Forking / Rebranding
57
29
 
58
30
  Configure via `package.json`:
package/docs/features.md CHANGED
@@ -6,7 +6,7 @@ Sample code under `examples/extensions/plan-mode`, `examples/extensions/todo.ts`
6
6
 
7
7
  ## Permissions and plan mode
8
8
 
9
- Permission modes: `manual | yolo | plan | auto`. Shift+Tab (`app.mode.cycle`) cycles that order. Thinking cycle is unbound; use `/thinking`, `/effort`, or `/reasoning`.
9
+ Permission modes: `manual | yolo | plan | auto`. Shift+Tab (`app.mode.cycle`) cycles that order. Ctrl+T (`app.thinking.cycle`) cycles thinking levels for the selected model.
10
10
 
11
11
  - **manual** — approve every tool
12
12
  - **yolo** — auto-approve ordinary tools; large subagent launches still request confirmation
@@ -23,7 +23,6 @@ Advertised subagents always start **fresh** (no forked parent context). Default
23
23
 
24
24
  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
25
 
26
-
27
26
  `/goal` sets a session goal and **forces session auto** permission mode.
28
27
 
29
28
  ## Todos, memory, and global instructions
@@ -79,7 +78,7 @@ Without runnable adapters (enabled platform + resolvable token), `lunr gateway`
79
78
 
80
79
  ## Thinking, usage, streaming, UI
81
80
 
82
- - `/thinking`, `/effort`, and `/reasoning` are full-parity aliases. `/thinking` only offers levels the session model supports (`getSupportedThinkingLevels`). `xhigh` and `max` are opt-in.
81
+ - `/thinking`, `/effort`, and `/reasoning` are full-parity aliases. `/off`, `/minimal`, `/low`, `/medium`, `/high`, `/xhigh`, and `/max` set a level when the current model supports it. `/thinking` completions follow the session model. `xhigh` and `max` are opt-in. `/thinking hide|show|toggle` still hides thinking blocks.
83
82
  - `/usage` is **this-session** context plus every stored-credential subscription plan. The current provider is included for env-only auth. There is no `/token-usage`.
84
83
  - `/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.
85
84
  - 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.
@@ -0,0 +1,105 @@
1
+ # Interactive startup
2
+
3
+ lunR paints the normal moon chatbox before loading the agent runtime. It keeps
4
+ that terminal and editor through attachment. Enter holds the editable draft until
5
+ session setup and required extension hooks finish. Escape cancels a pending
6
+ submission. Failed initialization preserves the draft and reports the error.
7
+
8
+ First paint and first request are separate measurements. An early chatbox does
9
+ not mean the agent can send a request yet.
10
+
11
+ ## First-request loading
12
+
13
+ The Node build uses split ESM bundles in `dist/node-runtime`. CLI and SDK entry
14
+ points share chunks so extensions see the same SDK classes as the running CLI.
15
+ The package RPC export uses a small wrapper that prefers its bundle and falls
16
+ back to the unbundled entry after a TypeScript-only development build. The
17
+ original `dist` layout remains available for assets and native dependencies.
18
+ The build preserves original module URLs for asset lookup and extension aliases.
19
+
20
+ Startup still registers tools, commands, permissions, and session hooks before
21
+ opening the prompt barrier. It does not replace tool schemas with placeholders.
22
+ The expensive implementations load when needed:
23
+
24
+ - Web tools load providers, extraction, and browser curation separately.
25
+ - LSP registers its tools before loading clients and Tree-sitter. Configured
26
+ autostart runs in the background; first use waits for the required services.
27
+ - MCP registers the proxy and cached direct-tool definitions without loading its
28
+ connection engine. Configured eager servers, keep-alive, and metadata discovery
29
+ retain their background behavior.
30
+ - Subagents keep restoration and watchers at startup, but load the executor on
31
+ first use.
32
+ - Third-party extensions load jiti when needed. Bun's static extension host keeps
33
+ its embedded modules. Package-management commands and HTML export load their
34
+ implementations only when invoked.
35
+
36
+ Session replacement invalidates pending initialization. MCP cancels initialization
37
+ and closes partially connected state. LSP drops stale write diagnostics. Web
38
+ requests and curator callbacks cannot publish into a replacement session.
39
+
40
+ The Node bundle does not automatically enable Node's compile cache. Reusing that
41
+ cache was slower in the measured bundle. Node's explicit compile-cache environment
42
+ settings remain available; the unbundled launch path keeps its existing policy.
43
+
44
+ ## Validation
45
+
46
+ Run the offline build, including coding-agent's bundle step, then:
47
+
48
+ ```sh
49
+ node scripts/check-interactive-first-paint.mjs
50
+ node scripts/profile-coding-agent-node.mjs --mode tui --skip-build --runs 10
51
+ ```
52
+
53
+ The check stalls or fails runtime loading and verifies the real frame, editable
54
+ draft, and terminal cleanup. It also blocks optional implementation imports and
55
+ checks a complete first request against the baseline tool-payload hash. Separate
56
+ first-turn fixtures exercise subagent status, MCP status, Tree-sitter parsing,
57
+ and local HTTP extraction. The default CI run checks the workspace build on
58
+ Ubuntu. Passing a CLI path runs the same checks against a relocated installation,
59
+ but CI does not currently pack that installation or run this check on Windows.
60
+
61
+ The publish script validates every staged compiled file after rewriting package
62
+ names and refuses missing package entry points or leftover `@earendil-works/*`
63
+ references.
64
+
65
+ The profiler uses a local Faux provider, not a remote model. It records dispatch
66
+ through the normal prompt path, plus first response and optional tool completion.
67
+ It isolates the home directory, settings, temporary files, and workspace by
68
+ default. It reports tool names and a schema hash, not prompt contents.
69
+
70
+ Use `--cli /path/to/dist/cli.js` to compare another built version. Use a dedicated
71
+ `--agent-dir` with `--warmup 1` for repeated launches. Without `--agent-dir`, each
72
+ run gets a fresh profile, including warmup runs. These are fresh profile and
73
+ compile-cache measurements, not reboot-cold filesystem measurements.
74
+
75
+ ## Measured results
76
+
77
+ Windows, Node 24.15.0, offline, empty workspace, builtin extensions, 2026-09-08.
78
+ Baseline is `b709d12` with benchmark instrumentation only. Measurements preceded
79
+ the rebase onto v0.2.16; build and first-turn checks were repeated afterward.
80
+ Ten launches per cell
81
+ alternated baseline and changed builds. Repeated launches reused each variant's
82
+ own profile after one warmup. The last repeated baseline sample ran separately
83
+ after the comparison runner reached its time limit.
84
+
85
+ | Profile | Baseline request median / p95 | Changed request median / p95 | Median reduction |
86
+ | --- | --- | --- | --- |
87
+ | Fresh | 1988.8 / 2026.4 ms | 968.2 / 1007.0 ms | 51.3% |
88
+ | Repeated | 2597.6 / 2628.6 ms | 970.6 / 993.5 ms | 62.6% |
89
+
90
+ First-frame medians were 100.7 to 90.0 ms for fresh profiles and 107.2 to 90.8 ms
91
+ for repeated launches. With ten samples, nearest-rank p95 is the maximum.
92
+
93
+ First-use fixtures on Node 24 added 68 ms for subagent status, 3075 ms for MCP
94
+ status, 143 ms for LSP parsing, and 257 ms for local HTTP extraction after request
95
+ dispatch. These are single observations of complete tool execution, not isolated
96
+ import costs. Later checks measured 126 to 482 ms for MCP status, so the first-use
97
+ observations are not a stable latency bound.
98
+
99
+ The packaged CLI passed the same checks on Node 22.19.0. A separately instrumented
100
+ Node 22 run took 6 seconds to dispatch, so these medians are not a latency bound.
101
+ Remote provider latency, terminal compositor latency, reboot-cold storage, large
102
+ user configurations, and third-party asynchronous extension hooks were not
103
+ measured. Bun 1.4.2 source launch completed a local request. Standalone compilation
104
+ was blocked on both baseline and changed builds by the missing native canvas
105
+ binary in the isolated, ignore-scripts dependency installation.
@@ -112,8 +112,8 @@ Modifier combinations: `ctrl+shift+x`, `alt+ctrl+x`, `ctrl+shift+alt+x`, `ctrl+1
112
112
  | `app.model.cycleForward` | `ctrl+p` | Cycle to next model |
113
113
  | `app.model.cycleBackward` | `shift+ctrl+p` | Cycle to previous model |
114
114
  | `app.mode.cycle` | `shift+tab` | Cycle permission mode (`manual` → `yolo` → `plan` → `auto`) |
115
- | `app.thinking.cycle` | *(unbound)* | Cycle thinking level (`/thinking`, `/effort`, `/reasoning`, and `/settings` still set it) |
116
- | `app.thinking.toggle` | `ctrl+t` | Collapse or expand thinking blocks |
115
+ | `app.thinking.cycle` | `ctrl+t` | Cycle thinking level for the selected model |
116
+ | `app.thinking.toggle` | *(unbound)* | Collapse or expand thinking blocks (`/thinking hide`, `show`, or `toggle`) |
117
117
 
118
118
  ### Display and Message Queue
119
119
 
@@ -108,7 +108,7 @@ On Windows, VS Code owns `Ctrl+V` and uses `Alt+V` as the View menu mnemonic. Fo
108
108
  }
109
109
  ```
110
110
 
111
- A successful paste toasts `Pasted [image_1]` and inserts that chip in the editor. If VS Code still owns the key, `/paste-image` invokes the same operation without depending on any terminal shortcut. Submit keeps the label in the chat card and attaches the image to the model. `Clipboard contains no image` means the command arrived but the OS clipboard had no image.
111
+ A successful paste inserts `[image_1]` in the editor. If VS Code still owns the key, `/paste-image` invokes the same operation without depending on any terminal shortcut. Submit keeps the label in the chat card and attaches the image to the model. `Clipboard contains no image` means the command arrived but the OS clipboard had no image.
112
112
 
113
113
  ## Windows Terminal
114
114
 
package/docs/usage.md CHANGED
@@ -69,7 +69,6 @@ Built-in commands (from `slash-commands.ts`):
69
69
  | `/logout`, `/deauth` | Remove provider authentication |
70
70
  | `/new` | Start a new session |
71
71
  | `/init` | Generate a starter AGENTS.md for this project |
72
- | `/swarm` | Orchestrate parallel subagents for a complex task |
73
72
  | `/compact` | Manually compact the session context |
74
73
  | `/resume`, `/sessions` | Browse and resume sessions |
75
74
  | `/reload` | Reload keybindings, extensions, skills, prompts, themes, and context files |
@@ -77,7 +76,7 @@ Built-in commands (from `slash-commands.ts`):
77
76
 
78
77
  There is no `/changelog` command.
79
78
 
80
- Notable extension-registered commands (always available unless you disable those built-ins): `/thinking`, `/effort`, `/reasoning`, `/cron`, `/goal`, `/mcp`, `/mcp-auth`, `/lsp`, `/lsp-restart`, `/websearch`. See [Built-in features](features.md).
79
+ Notable extension-registered commands (always available unless you disable those built-ins): `/thinking`, `/effort`, `/reasoning`, `/off` through `/max`, `/cron`, `/goal`, `/mcp`, `/mcp-auth`, `/lsp`, `/lsp-restart`, `/websearch`. See [Built-in features](features.md).
81
80
 
82
81
  ## Message Queue
83
82
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider",
3
- "version": "0.2.13",
3
+ "version": "0.2.19",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-custom-provider",
9
- "version": "0.2.13",
9
+ "version": "0.2.19",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "^0.52.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-anthropic",
3
3
  "private": true,
4
- "version": "0.2.13",
4
+ "version": "0.2.19",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-custom-provider-gitlab-duo",
3
3
  "private": true,
4
- "version": "0.2.13",
4
+ "version": "0.2.19",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
- "version": "0.2.13",
3
+ "version": "0.2.19",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-gondolin",
9
- "version": "0.2.13",
9
+ "version": "0.2.19",
10
10
  "dependencies": {
11
11
  "@earendil-works/gondolin": "0.12.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
3
  "private": true,
4
- "version": "0.2.13",
4
+ "version": "0.2.19",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * Test:
11
11
  * 1. Load this extension
12
- * 2. Hide thinking blocks with Ctrl+T
12
+ * 2. Hide thinking blocks with /thinking hide
13
13
  * 3. Ask for something that produces reasoning output
14
14
  * 4. The collapsed thinking block label will show the custom text
15
15
  *
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "0.2.13",
3
+ "version": "0.2.19",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "0.2.13",
9
+ "version": "0.2.19",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sandbox-runtime": "^0.0.26"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
3
  "private": true,
4
- "version": "0.2.13",
4
+ "version": "0.2.19",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-with-deps",
3
- "version": "0.2.13",
3
+ "version": "0.2.19",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-with-deps",
9
- "version": "0.2.13",
9
+ "version": "0.2.19",
10
10
  "dependencies": {
11
11
  "ms": "^2.1.3"
12
12
  },