@ashx-j/lunr 0.2.21 → 0.2.23

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 (461) hide show
  1. package/CHANGELOG.md +4 -2
  2. package/README.md +23 -5
  3. package/dist/builtin-extensions/index.d.ts.map +1 -1
  4. package/dist/builtin-extensions/index.js +1 -0
  5. package/dist/builtin-extensions/index.js.map +1 -1
  6. package/dist/builtin-extensions/lunr-browser.d.ts +9 -0
  7. package/dist/builtin-extensions/lunr-browser.d.ts.map +1 -0
  8. package/dist/builtin-extensions/lunr-browser.js +169 -0
  9. package/dist/builtin-extensions/lunr-browser.js.map +1 -0
  10. package/dist/builtin-extensions/lunr-todos.d.ts.map +1 -1
  11. package/dist/builtin-extensions/lunr-todos.js +15 -0
  12. package/dist/builtin-extensions/lunr-todos.js.map +1 -1
  13. package/dist/builtin-extensions/pi-intercom/index.d.ts.map +1 -1
  14. package/dist/builtin-extensions/pi-intercom/index.js +3 -0
  15. package/dist/builtin-extensions/pi-intercom/index.js.map +1 -1
  16. package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.d.ts +1 -1
  17. package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.d.ts.map +1 -1
  18. package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.js +5 -1
  19. package/dist/builtin-extensions/pi-subagents/src/extension/control-notices.js.map +1 -1
  20. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts +2 -2
  21. package/dist/builtin-extensions/pi-subagents/src/extension/index.d.ts.map +1 -1
  22. package/dist/builtin-extensions/pi-subagents/src/extension/index.js +18 -5
  23. package/dist/builtin-extensions/pi-subagents/src/extension/index.js.map +1 -1
  24. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts +4 -3
  25. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.d.ts.map +1 -1
  26. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js +3 -0
  27. package/dist/builtin-extensions/pi-subagents/src/extension/tool-description.js.map +1 -1
  28. package/dist/builtin-extensions/pi-subagents/src/intercom/communication.d.ts +17 -0
  29. package/dist/builtin-extensions/pi-subagents/src/intercom/communication.d.ts.map +1 -0
  30. package/dist/builtin-extensions/pi-subagents/src/intercom/communication.js +45 -0
  31. package/dist/builtin-extensions/pi-subagents/src/intercom/communication.js.map +1 -0
  32. package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.d.ts.map +1 -1
  33. package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.js +4 -11
  34. package/dist/builtin-extensions/pi-subagents/src/intercom/intercom-bridge.js.map +1 -1
  35. package/dist/builtin-extensions/pi-subagents/src/intercom/native-supervisor-channel.d.ts +4 -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 +160 -51
  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/supervisor-ask.d.ts.map +1 -1
  40. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js +5 -0
  41. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-ask.js.map +1 -1
  42. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts +2 -0
  43. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.d.ts.map +1 -1
  44. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js +3 -2
  45. package/dist/builtin-extensions/pi-subagents/src/intercom/supervisor-questions.js.map +1 -1
  46. package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.d.ts +1 -0
  47. package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.d.ts.map +1 -1
  48. package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.js +2 -1
  49. package/dist/builtin-extensions/pi-subagents/src/runs/background/auto-drain.js.map +1 -1
  50. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts +3 -0
  51. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.d.ts.map +1 -1
  52. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js +11 -0
  53. package/dist/builtin-extensions/pi-subagents/src/runs/background/subagent-wait.js.map +1 -1
  54. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.d.ts.map +1 -1
  55. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js +41 -3
  56. package/dist/builtin-extensions/pi-subagents/src/runs/background/wait-tool.js.map +1 -1
  57. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.d.ts.map +1 -1
  58. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js +4 -0
  59. package/dist/builtin-extensions/pi-subagents/src/runs/foreground/subagent-executor.js.map +1 -1
  60. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.d.ts.map +1 -1
  61. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js +3 -0
  62. package/dist/builtin-extensions/pi-subagents/src/runs/shared/pi-args.js.map +1 -1
  63. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-control.d.ts +1 -0
  64. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-control.d.ts.map +1 -1
  65. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-control.js +3 -0
  66. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-control.js.map +1 -1
  67. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.d.ts.map +1 -1
  68. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js +1 -1
  69. package/dist/builtin-extensions/pi-subagents/src/runs/shared/subagent-prompt-runtime.js.map +1 -1
  70. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts +1 -0
  71. package/dist/builtin-extensions/pi-subagents/src/shared/types.d.ts.map +1 -1
  72. package/dist/builtin-extensions/pi-subagents/src/shared/types.js.map +1 -1
  73. package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts +18 -0
  74. package/dist/builtin-extensions/pi-subagents/src/tui/communication.d.ts.map +1 -0
  75. package/dist/builtin-extensions/pi-subagents/src/tui/communication.js +48 -0
  76. package/dist/builtin-extensions/pi-subagents/src/tui/communication.js.map +1 -0
  77. package/dist/builtin-extensions/pi-web-access/index.d.ts.map +1 -1
  78. package/dist/builtin-extensions/pi-web-access/index.js +11 -7
  79. package/dist/builtin-extensions/pi-web-access/index.js.map +1 -1
  80. package/dist/cli/args.d.ts.map +1 -1
  81. package/dist/cli/args.js +2 -1
  82. package/dist/cli/args.js.map +1 -1
  83. package/dist/cli/install-cli.d.ts.map +1 -1
  84. package/dist/cli/install-cli.js +15 -45
  85. package/dist/cli/install-cli.js.map +1 -1
  86. package/dist/core/agent-session-runtime.d.ts +9 -0
  87. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  88. package/dist/core/agent-session-runtime.js +126 -29
  89. package/dist/core/agent-session-runtime.js.map +1 -1
  90. package/dist/core/agent-session.d.ts +22 -0
  91. package/dist/core/agent-session.d.ts.map +1 -1
  92. package/dist/core/agent-session.js +250 -105
  93. package/dist/core/agent-session.js.map +1 -1
  94. package/dist/core/browser/network.d.ts +9 -0
  95. package/dist/core/browser/network.d.ts.map +1 -0
  96. package/dist/core/browser/network.js +146 -0
  97. package/dist/core/browser/network.js.map +1 -0
  98. package/dist/core/browser/runtime.d.ts +24 -0
  99. package/dist/core/browser/runtime.d.ts.map +1 -0
  100. package/dist/core/browser/runtime.js +289 -0
  101. package/dist/core/browser/runtime.js.map +1 -0
  102. package/dist/core/browser/schema.d.ts +16 -0
  103. package/dist/core/browser/schema.d.ts.map +1 -0
  104. package/dist/core/browser/schema.js +36 -0
  105. package/dist/core/browser/schema.js.map +1 -0
  106. package/dist/core/browser/settings.d.ts +8 -0
  107. package/dist/core/browser/settings.d.ts.map +1 -0
  108. package/dist/core/browser/settings.js +30 -0
  109. package/dist/core/browser/settings.js.map +1 -0
  110. package/dist/core/browser/setup.d.ts +2 -0
  111. package/dist/core/browser/setup.d.ts.map +1 -0
  112. package/dist/core/browser/setup.js +16 -0
  113. package/dist/core/browser/setup.js.map +1 -0
  114. package/dist/core/customize.d.ts.map +1 -1
  115. package/dist/core/customize.js +15 -14
  116. package/dist/core/customize.js.map +1 -1
  117. package/dist/core/export-html/index.d.ts.map +1 -1
  118. package/dist/core/export-html/index.js +1 -1
  119. package/dist/core/export-html/index.js.map +1 -1
  120. package/dist/core/extensions/runner.d.ts +1 -0
  121. package/dist/core/extensions/runner.d.ts.map +1 -1
  122. package/dist/core/extensions/runner.js +1 -1
  123. package/dist/core/extensions/runner.js.map +1 -1
  124. package/dist/core/extensions/types.d.ts +1 -1
  125. package/dist/core/extensions/types.d.ts.map +1 -1
  126. package/dist/core/extensions/types.js.map +1 -1
  127. package/dist/core/install-features.d.ts.map +1 -1
  128. package/dist/core/install-features.js +10 -8
  129. package/dist/core/install-features.js.map +1 -1
  130. package/dist/core/memory-cap.d.ts.map +1 -1
  131. package/dist/core/memory-cap.js +5 -3
  132. package/dist/core/memory-cap.js.map +1 -1
  133. package/dist/core/model-tiers.d.ts.map +1 -1
  134. package/dist/core/model-tiers.js +9 -6
  135. package/dist/core/model-tiers.js.map +1 -1
  136. package/dist/core/permissions.d.ts.map +1 -1
  137. package/dist/core/permissions.js +9 -0
  138. package/dist/core/permissions.js.map +1 -1
  139. package/dist/core/plan-mode.d.ts.map +1 -1
  140. package/dist/core/plan-mode.js +3 -0
  141. package/dist/core/plan-mode.js.map +1 -1
  142. package/dist/core/process-registry.d.ts.map +1 -1
  143. package/dist/core/process-registry.js +6 -4
  144. package/dist/core/process-registry.js.map +1 -1
  145. package/dist/core/runtime-scope.d.ts +11 -0
  146. package/dist/core/runtime-scope.d.ts.map +1 -0
  147. package/dist/core/runtime-scope.js +3 -0
  148. package/dist/core/runtime-scope.js.map +1 -0
  149. package/dist/core/sdk.d.ts.map +1 -1
  150. package/dist/core/sdk.js +13 -0
  151. package/dist/core/sdk.js.map +1 -1
  152. package/dist/core/session-handoff.d.ts +35 -0
  153. package/dist/core/session-handoff.d.ts.map +1 -0
  154. package/dist/core/session-handoff.js +214 -0
  155. package/dist/core/session-handoff.js.map +1 -0
  156. package/dist/core/session-manager.d.ts +20 -0
  157. package/dist/core/session-manager.d.ts.map +1 -1
  158. package/dist/core/session-manager.js +184 -22
  159. package/dist/core/session-manager.js.map +1 -1
  160. package/dist/core/session-ownership.d.ts +28 -0
  161. package/dist/core/session-ownership.d.ts.map +1 -0
  162. package/dist/core/session-ownership.js +138 -0
  163. package/dist/core/session-ownership.js.map +1 -0
  164. package/dist/core/session-retention.d.ts.map +1 -1
  165. package/dist/core/session-retention.js +11 -2
  166. package/dist/core/session-retention.js.map +1 -1
  167. package/dist/core/settings-manager.d.ts +11 -0
  168. package/dist/core/settings-manager.d.ts.map +1 -1
  169. package/dist/core/settings-manager.js +27 -0
  170. package/dist/core/settings-manager.js.map +1 -1
  171. package/dist/core/slash-commands.d.ts.map +1 -1
  172. package/dist/core/slash-commands.js +2 -0
  173. package/dist/core/slash-commands.js.map +1 -1
  174. package/dist/core/subagent-wait-interruption.d.ts +11 -0
  175. package/dist/core/subagent-wait-interruption.d.ts.map +1 -0
  176. package/dist/core/subagent-wait-interruption.js +19 -0
  177. package/dist/core/subagent-wait-interruption.js.map +1 -0
  178. package/dist/core/system-prompt.d.ts.map +1 -1
  179. package/dist/core/system-prompt.js +7 -2
  180. package/dist/core/system-prompt.js.map +1 -1
  181. package/dist/core/todo-settings.d.ts +5 -0
  182. package/dist/core/todo-settings.d.ts.map +1 -0
  183. package/dist/core/todo-settings.js +7 -0
  184. package/dist/core/todo-settings.js.map +1 -0
  185. package/dist/core/tools/bash.d.ts.map +1 -1
  186. package/dist/core/tools/bash.js +4 -4
  187. package/dist/core/tools/bash.js.map +1 -1
  188. package/dist/core/tools/edit.d.ts.map +1 -1
  189. package/dist/core/tools/edit.js +5 -3
  190. package/dist/core/tools/edit.js.map +1 -1
  191. package/dist/core/tools/find.d.ts.map +1 -1
  192. package/dist/core/tools/find.js +4 -4
  193. package/dist/core/tools/find.js.map +1 -1
  194. package/dist/core/tools/grep.d.ts.map +1 -1
  195. package/dist/core/tools/grep.js +4 -4
  196. package/dist/core/tools/grep.js.map +1 -1
  197. package/dist/core/tools/ls.d.ts.map +1 -1
  198. package/dist/core/tools/ls.js +4 -4
  199. package/dist/core/tools/ls.js.map +1 -1
  200. package/dist/core/tools/read.d.ts.map +1 -1
  201. package/dist/core/tools/read.js +4 -4
  202. package/dist/core/tools/read.js.map +1 -1
  203. package/dist/core/tools/render-utils.d.ts +14 -5
  204. package/dist/core/tools/render-utils.d.ts.map +1 -1
  205. package/dist/core/tools/render-utils.js +34 -7
  206. package/dist/core/tools/render-utils.js.map +1 -1
  207. package/dist/core/tools/write.d.ts.map +1 -1
  208. package/dist/core/tools/write.js +4 -4
  209. package/dist/core/tools/write.js.map +1 -1
  210. package/dist/core/usage-service.d.ts.map +1 -1
  211. package/dist/core/usage-service.js +5 -3
  212. package/dist/core/usage-service.js.map +1 -1
  213. package/dist/gateway/adapters/discord.d.ts +12 -1
  214. package/dist/gateway/adapters/discord.d.ts.map +1 -1
  215. package/dist/gateway/adapters/discord.js +112 -17
  216. package/dist/gateway/adapters/discord.js.map +1 -1
  217. package/dist/gateway/adapters/telegram.d.ts +4 -2
  218. package/dist/gateway/adapters/telegram.d.ts.map +1 -1
  219. package/dist/gateway/adapters/telegram.js +34 -11
  220. package/dist/gateway/adapters/telegram.js.map +1 -1
  221. package/dist/gateway/agent-bridge.d.ts +14 -3
  222. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  223. package/dist/gateway/agent-bridge.js +252 -60
  224. package/dist/gateway/agent-bridge.js.map +1 -1
  225. package/dist/gateway/approval.d.ts +1 -0
  226. package/dist/gateway/approval.d.ts.map +1 -1
  227. package/dist/gateway/approval.js +60 -18
  228. package/dist/gateway/approval.js.map +1 -1
  229. package/dist/gateway/authz.d.ts +2 -0
  230. package/dist/gateway/authz.d.ts.map +1 -1
  231. package/dist/gateway/authz.js +13 -0
  232. package/dist/gateway/authz.js.map +1 -1
  233. package/dist/gateway/buttons.d.ts +3 -1
  234. package/dist/gateway/buttons.d.ts.map +1 -1
  235. package/dist/gateway/buttons.js +18 -3
  236. package/dist/gateway/buttons.js.map +1 -1
  237. package/dist/gateway/command.d.ts.map +1 -1
  238. package/dist/gateway/command.js +49 -4
  239. package/dist/gateway/command.js.map +1 -1
  240. package/dist/gateway/commands.d.ts.map +1 -1
  241. package/dist/gateway/commands.js +18 -3
  242. package/dist/gateway/commands.js.map +1 -1
  243. package/dist/gateway/config.d.ts +5 -0
  244. package/dist/gateway/config.d.ts.map +1 -1
  245. package/dist/gateway/config.js +5 -0
  246. package/dist/gateway/config.js.map +1 -1
  247. package/dist/gateway/conversations.d.ts +14 -0
  248. package/dist/gateway/conversations.d.ts.map +1 -0
  249. package/dist/gateway/conversations.js +30 -0
  250. package/dist/gateway/conversations.js.map +1 -0
  251. package/dist/gateway/download.d.ts +2 -0
  252. package/dist/gateway/download.d.ts.map +1 -0
  253. package/dist/gateway/download.js +36 -0
  254. package/dist/gateway/download.js.map +1 -0
  255. package/dist/gateway/index.d.ts.map +1 -1
  256. package/dist/gateway/index.js +85 -26
  257. package/dist/gateway/index.js.map +1 -1
  258. package/dist/gateway/mobile-commands.d.ts +24 -0
  259. package/dist/gateway/mobile-commands.d.ts.map +1 -0
  260. package/dist/gateway/mobile-commands.js +422 -0
  261. package/dist/gateway/mobile-commands.js.map +1 -0
  262. package/dist/gateway/presenter.d.ts +16 -0
  263. package/dist/gateway/presenter.d.ts.map +1 -0
  264. package/dist/gateway/presenter.js +210 -0
  265. package/dist/gateway/presenter.js.map +1 -0
  266. package/dist/gateway/router.d.ts +1 -0
  267. package/dist/gateway/router.d.ts.map +1 -1
  268. package/dist/gateway/router.js +32 -3
  269. package/dist/gateway/router.js.map +1 -1
  270. package/dist/gateway/service.d.ts +46 -0
  271. package/dist/gateway/service.d.ts.map +1 -0
  272. package/dist/gateway/service.js +395 -0
  273. package/dist/gateway/service.js.map +1 -0
  274. package/dist/gateway/setup.d.ts +4 -0
  275. package/dist/gateway/setup.d.ts.map +1 -0
  276. package/dist/gateway/setup.js +146 -0
  277. package/dist/gateway/setup.js.map +1 -0
  278. package/dist/gateway/types.d.ts +4 -2
  279. package/dist/gateway/types.d.ts.map +1 -1
  280. package/dist/gateway/types.js.map +1 -1
  281. package/dist/index.d.ts +2 -0
  282. package/dist/index.d.ts.map +1 -1
  283. package/dist/index.js +2 -0
  284. package/dist/index.js.map +1 -1
  285. package/dist/main.d.ts.map +1 -1
  286. package/dist/main.js +2 -1
  287. package/dist/main.js.map +1 -1
  288. package/dist/modes/interactive/components/assistant-message.d.ts +19 -2
  289. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  290. package/dist/modes/interactive/components/assistant-message.js +78 -17
  291. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  292. package/dist/modes/interactive/components/copyable-text.d.ts +27 -0
  293. package/dist/modes/interactive/components/copyable-text.d.ts.map +1 -0
  294. package/dist/modes/interactive/components/copyable-text.js +156 -0
  295. package/dist/modes/interactive/components/copyable-text.js.map +1 -0
  296. package/dist/modes/interactive/components/custom-entry.d.ts +1 -0
  297. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  298. package/dist/modes/interactive/components/custom-entry.js +8 -0
  299. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  300. package/dist/modes/interactive/components/custom-message.d.ts +1 -0
  301. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  302. package/dist/modes/interactive/components/custom-message.js +8 -0
  303. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  304. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  305. package/dist/modes/interactive/components/session-selector.js +16 -0
  306. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  307. package/dist/modes/interactive/components/settings-selector.d.ts +8 -1
  308. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  309. package/dist/modes/interactive/components/settings-selector.js +51 -0
  310. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  311. package/dist/modes/interactive/components/thinking-tail.d.ts +9 -2
  312. package/dist/modes/interactive/components/thinking-tail.d.ts.map +1 -1
  313. package/dist/modes/interactive/components/thinking-tail.js +43 -1
  314. package/dist/modes/interactive/components/thinking-tail.js.map +1 -1
  315. package/dist/modes/interactive/components/tool-execution.d.ts +4 -3
  316. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  317. package/dist/modes/interactive/components/tool-execution.js +34 -45
  318. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  319. package/dist/modes/interactive/interactive-mode.d.ts +9 -0
  320. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  321. package/dist/modes/interactive/interactive-mode.js +267 -44
  322. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  323. package/dist/modes/interactive/theme/theme.d.ts +1 -0
  324. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  325. package/dist/modes/interactive/theme/theme.js +23 -0
  326. package/dist/modes/interactive/theme/theme.js.map +1 -1
  327. package/dist/node-runtime/agent-session-services-GZVSOGYR.js +49 -0
  328. package/dist/node-runtime/{builtin-extensions-JCOPAAB5.js → builtin-extensions-QVCXNQT4.js} +6 -5
  329. package/dist/node-runtime/{chunk-LTYWTR3V.js → chunk-2MI5OPMN.js} +17 -2
  330. package/dist/node-runtime/{chunk-W3CVH5RX.js → chunk-2TKODGBZ.js} +11 -6
  331. package/dist/node-runtime/chunk-4EULYYR4.js +62 -0
  332. package/dist/node-runtime/{chunk-6N22HULO.js → chunk-5D7LC2ZQ.js} +7 -2
  333. package/dist/node-runtime/{chunk-KBKMCJDU.js → chunk-5ZQXRPMC.js} +19 -4
  334. package/dist/node-runtime/{chunk-BOHIDQT4.js → chunk-6VYZ5UFP.js} +1 -1
  335. package/dist/node-runtime/chunk-AZJHNQKQ.js +205 -0
  336. package/dist/node-runtime/{chunk-A3KMVBZV.js → chunk-BBUVIEZB.js} +1 -10
  337. package/dist/node-runtime/{chunk-IRPJXI6U.js → chunk-BX2RB477.js} +1 -1
  338. package/dist/node-runtime/chunk-CCCN2UCX.js +14 -0
  339. package/dist/node-runtime/{chunk-25I2BHAA.js → chunk-CSUZVNYE.js} +1 -1
  340. package/dist/node-runtime/chunk-DD5YWFSJ.js +708 -0
  341. package/dist/node-runtime/chunk-DQMGU675.js +3409 -0
  342. package/dist/node-runtime/{chunk-QZMODZQ2.js → chunk-E24EO34J.js} +2 -1
  343. package/dist/node-runtime/chunk-EKVFP6YF.js +355 -0
  344. package/dist/node-runtime/chunk-GJ2RDBRL.js +672 -0
  345. package/dist/node-runtime/{chunk-W3SILANP.js → chunk-GMHJCCEN.js} +8 -8
  346. package/dist/node-runtime/{chunk-DDWHZ633.js → chunk-GS42T6MX.js} +1 -1
  347. package/dist/node-runtime/chunk-GS66LV4M.js +2830 -0
  348. package/dist/node-runtime/chunk-H4K3JDRB.js +47 -0
  349. package/dist/node-runtime/{chunk-2SJB2AWP.js → chunk-HMBGROQK.js} +3 -3
  350. package/dist/node-runtime/{chunk-GB2MGFLI.js → chunk-HPUP7E4T.js} +216 -201
  351. package/dist/node-runtime/{chunk-YMEAYRBE.js → chunk-HTFRRDSF.js} +2 -7
  352. package/dist/node-runtime/{chunk-OPEK5RRY.js → chunk-IF24A3FH.js} +1 -1
  353. package/dist/node-runtime/chunk-IMLCWLPI.js +9 -0
  354. package/dist/node-runtime/chunk-KKUTQQV7.js +144 -0
  355. package/dist/node-runtime/chunk-LFZDVKSP.js +521 -0
  356. package/dist/node-runtime/{chunk-2BUAYZ7K.js → chunk-LLUIPGDR.js} +581 -197
  357. package/dist/node-runtime/{chunk-7NBZ5P7I.js → chunk-NAY6UUQZ.js} +1 -1
  358. package/dist/node-runtime/chunk-OAR4TYZE.js +146 -0
  359. package/dist/node-runtime/{chunk-STERBGUB.js → chunk-OFKSVRV7.js} +2 -2
  360. package/dist/node-runtime/{chunk-JZQ7F36T.js → chunk-PCEW76PM.js} +19 -3
  361. package/dist/node-runtime/{chunk-WLLDXJRT.js → chunk-QAZOULTU.js} +29 -1014
  362. package/dist/node-runtime/{chunk-6KDIOJL3.js → chunk-QH6YL7VK.js} +3 -3
  363. package/dist/node-runtime/chunk-R3K2F5GI.js +122 -0
  364. package/dist/node-runtime/{chunk-RNBHABBA.js → chunk-RDDAZOMU.js} +23 -0
  365. package/dist/node-runtime/{chunk-SY2TFMLO.js → chunk-RIR5EDDJ.js} +46 -151
  366. package/dist/node-runtime/chunk-RMQZU2YU.js +117 -0
  367. package/dist/node-runtime/{chunk-6BEIBLQ3.js → chunk-RWTKOC3B.js} +1 -1
  368. package/dist/node-runtime/{chunk-G6LRAP36.js → chunk-TQGPP4SC.js} +1 -1
  369. package/dist/node-runtime/{chunk-Y5KOEMBH.js → chunk-TVJUOJZJ.js} +9 -674
  370. package/dist/node-runtime/chunk-UAEOTO52.js +119 -0
  371. package/dist/node-runtime/{chunk-AY6CAJSL.js → chunk-UJOCPOMX.js} +6 -3
  372. package/dist/node-runtime/chunk-UP2XBVH5.js +40 -0
  373. package/dist/node-runtime/{chunk-WJVFOIB5.js → chunk-UQUCFAJ3.js} +1 -1
  374. package/dist/node-runtime/chunk-URD2SLIT.js +1019 -0
  375. package/dist/node-runtime/chunk-US544NN6.js +13 -0
  376. package/dist/node-runtime/chunk-UWPJL22I.js +341 -0
  377. package/dist/node-runtime/{chunk-4I23VTC4.js → chunk-VWCE2HSZ.js} +21 -124
  378. package/dist/node-runtime/{chunk-VZR3NCM7.js → chunk-W64JC4E7.js} +18 -14
  379. package/dist/node-runtime/{chunk-AWVD5IEY.js → chunk-X3URCYCU.js} +23 -12
  380. package/dist/node-runtime/{chunk-GKLEQ3I4.js → chunk-XLTL257W.js} +126 -27
  381. package/dist/node-runtime/{chunk-WKDK4C5P.js → chunk-YDO2F2IA.js} +38 -164
  382. package/dist/node-runtime/{chunk-PDNXVXMD.js → chunk-YHQ3NBB3.js} +58 -48
  383. package/dist/node-runtime/chunk-YPHAIRZT.js +10 -0
  384. package/dist/node-runtime/cli-runtime.js +2 -2
  385. package/dist/node-runtime/command-PDVTBRWA.js +45 -0
  386. package/dist/node-runtime/{commands-MV5KOZ64.js → commands-KAMO2T6P.js} +10 -10
  387. package/dist/node-runtime/commands-XDCFGIGW.js +36 -0
  388. package/dist/node-runtime/config-RORQUQFG.js +20 -0
  389. package/dist/node-runtime/{customize-LF5VST47.js → customize-VFJV3U6A.js} +2 -1
  390. package/dist/node-runtime/{direct-tool-executor-BK7CLEBX.js → direct-tool-executor-YAVOLDFY.js} +8 -8
  391. package/dist/node-runtime/{export-html-TEXVV5RP.js → export-html-KSOIMVPI.js} +4 -3
  392. package/dist/node-runtime/{extension-input-O4HSAEM4.js → extension-input-E7BJZ35H.js} +4 -4
  393. package/dist/node-runtime/{extension-selector-X5FCX43D.js → extension-selector-WU42XDTU.js} +4 -4
  394. package/dist/node-runtime/{extract-XLQSJN4V.js → extract-EQJE7FZZ.js} +2 -2
  395. package/dist/node-runtime/{gateway-BM6NLOH4.js → gateway-AYWM5DIO.js} +275 -994
  396. package/dist/node-runtime/{gemini-search-U7SUMPQA.js → gemini-search-35OCRFLN.js} +1 -1
  397. package/dist/node-runtime/{gemini-url-context-PXWCBQHK.js → gemini-url-context-UQY3PHHW.js} +2 -2
  398. package/dist/node-runtime/index.js +104 -65
  399. package/dist/node-runtime/{init-3C7Z24OI.js → init-X2LIUB2H.js} +3 -3
  400. package/dist/node-runtime/{install-cli-EXMJQESX.js → install-cli-3BO4MMQ6.js} +21 -82
  401. package/dist/node-runtime/interactive-mode-4MFRKAHG.js +72 -0
  402. package/dist/node-runtime/{interactive-view-ILS6TAN5.js → interactive-view-TUZHCQM3.js} +8 -8
  403. package/dist/node-runtime/lunr-browser-RYFIIVJN.js +174 -0
  404. package/dist/node-runtime/{lunr-cron-4VHP4E4B.js → lunr-cron-YWXEPZMQ.js} +19 -5
  405. package/dist/node-runtime/main.js +44 -31
  406. package/dist/node-runtime/{memory-cap-3S4XRLNP.js → memory-cap-EL3KL4JJ.js} +2 -1
  407. package/dist/node-runtime/mobile-commands-LVHDAUDP.js +32 -0
  408. package/dist/node-runtime/model-runtime-PLQKAG4B.js +16 -0
  409. package/dist/node-runtime/{model-tiers-NJLHUEGK.js → model-tiers-OU3U5CZG.js} +2 -1
  410. package/dist/node-runtime/{package-manager-cli-N37546V5.js → package-manager-cli-6GT3Z3CK.js} +22 -15
  411. package/dist/node-runtime/{pi-intercom-NV2LW6X7.js → pi-intercom-HBPK5HSJ.js} +4 -1
  412. package/dist/node-runtime/{pi-mcp-adapter-GUFZWW54.js → pi-mcp-adapter-E6WULBKF.js} +4 -4
  413. package/dist/node-runtime/{pi-subagents-6MUIFNDM.js → pi-subagents-CDWK2AKY.js} +236 -79
  414. package/dist/node-runtime/{pi-web-access-2CQGFLT2.js → pi-web-access-WTGMNZ32.js} +15 -15
  415. package/dist/node-runtime/process-registry-4FAKZQOL.js +31 -0
  416. package/dist/node-runtime/{proxy-modes-V6YVFH3C.js → proxy-modes-OSQCWRBI.js} +9 -9
  417. package/dist/node-runtime/rpc-entry.js +44 -31
  418. package/dist/node-runtime/{rpc-mode-W5ZTLTMZ.js → rpc-mode-O3XV4SID.js} +2 -2
  419. package/dist/node-runtime/runtime-4VA6JKNF.js +373 -0
  420. package/dist/node-runtime/{runtime-bridges-2VQTLPOZ.js → runtime-bridges-3XUQ46XW.js} +6 -5
  421. package/dist/node-runtime/service-ISSP6VHE.js +36 -0
  422. package/dist/node-runtime/session-handoff-HC7R5E24.js +33 -0
  423. package/dist/node-runtime/{session-manager-E7AREDTV.js → session-manager-CFN4UFM2.js} +2 -1
  424. package/dist/node-runtime/{session-selector-FJ7M2AIX.js → session-selector-GIM4DHQ2.js} +5 -4
  425. package/dist/node-runtime/{settings-manager-CUGAZWAB.js → settings-manager-6VEMXRDL.js} +7 -2
  426. package/dist/node-runtime/setup-5SR2J35A.js +155 -0
  427. package/dist/node-runtime/setup-JBKOLJ6F.js +18 -0
  428. package/dist/node-runtime/{subagent-executor-MH4A7CCF.js → subagent-executor-M5VWB3D3.js} +26 -18
  429. package/dist/node-runtime/theme-UOO5RVFN.js +68 -0
  430. package/dist/node-runtime/trust-manager-MMISNCYO.js +17 -0
  431. package/dist/node-runtime/{update-cli-XTZMZGOL.js → update-cli-UVKJWRRJ.js} +7 -2
  432. package/dist/node-runtime/usage-service-LFB2SWYV.js +37 -0
  433. package/dist/node-runtime/{video-extract-OYT5WKS5.js → video-extract-OOZHR7SU.js} +2 -2
  434. package/dist/node-runtime/{youtube-extract-TQYKGFGS.js → youtube-extract-FNPAUNHU.js} +6 -6
  435. package/docs/browser.md +86 -0
  436. package/docs/extensions.md +2 -0
  437. package/docs/features.md +96 -16
  438. package/docs/interactive-startup.md +2 -1
  439. package/docs/sessions.md +10 -0
  440. package/docs/settings.md +2 -0
  441. package/docs/tui.md +2 -0
  442. package/docs/usage.md +16 -0
  443. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  444. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  445. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  446. package/examples/extensions/gondolin/package-lock.json +2 -2
  447. package/examples/extensions/gondolin/package.json +1 -1
  448. package/examples/extensions/sandbox/package-lock.json +2 -2
  449. package/examples/extensions/sandbox/package.json +1 -1
  450. package/examples/extensions/with-deps/package-lock.json +2 -2
  451. package/examples/extensions/with-deps/package.json +1 -1
  452. package/package.json +7 -4
  453. package/scripts/install-browser.mjs +20 -0
  454. package/dist/node-runtime/agent-session-services-C743TYQE.js +0 -37
  455. package/dist/node-runtime/chunk-VGYZ3APQ.js +0 -59
  456. package/dist/node-runtime/chunk-XI77KVKA.js +0 -6009
  457. package/dist/node-runtime/command-P4NYCJ2M.js +0 -13
  458. package/dist/node-runtime/interactive-mode-EVVBA64D.js +0 -59
  459. package/dist/node-runtime/{chunk-UWQYRSYQ.js → chunk-YJMMG7C6.js} +25 -25
  460. package/dist/node-runtime/{mcp-panel-IIGMXQGP.js → mcp-panel-KTTFXJZ4.js} +3 -3
  461. package/dist/node-runtime/{src-BPQFJR76.js → src-IVPNZ2BX.js} +9 -9
@@ -0,0 +1,13 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ spinners
4
+ } from "./chunk-5ZH3ZFIZ.js";
5
+
6
+ // packages/coding-agent/dist/core/subagent-spinner.js
7
+ function getSubagentSpinnerDefinition(name) {
8
+ return spinners[name];
9
+ }
10
+
11
+ export {
12
+ getSubagentSpinnerDefinition
13
+ };
@@ -0,0 +1,341 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ getAgentDir
4
+ } from "./chunk-FQMM2EZ2.js";
5
+
6
+ // packages/coding-agent/dist/gateway/service.js
7
+ import { spawn, spawnSync } from "node:child_process";
8
+ import { createHash, randomUUID } from "node:crypto";
9
+ import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
10
+ import { homedir, userInfo } from "node:os";
11
+ import { dirname, join, resolve } from "node:path";
12
+ import { fileURLToPath } from "node:url";
13
+ var servicePrefix = "lunr-gateway", serviceDirectory = () => join(getAgentDir(), "gateway-service"), gatewayLogPath = () => join(serviceDirectory(), "gateway.log"), statusPath = () => join(serviceDirectory(), "status.json"), controlPath = () => join(serviceDirectory(), "control.json"), settingsPath = () => join(serviceDirectory(), "service.json");
14
+ function atomicJson(path, value) {
15
+ mkdirSync(dirname(path), { recursive: !0, mode: 448 });
16
+ let temp = `${path}.${randomUUID()}.tmp`;
17
+ writeFileSync(temp, `${JSON.stringify(value, null, 2)}
18
+ `, { mode: 384 }), renameSync(temp, path);
19
+ }
20
+ function readJson(path) {
21
+ try {
22
+ return JSON.parse(readFileSync(path, "utf8"));
23
+ } catch {
24
+ return;
25
+ }
26
+ }
27
+ function loadServiceSettings() {
28
+ let raw = readJson(settingsPath());
29
+ return raw && typeof raw == "object" && "startup" in raw && (raw.startup === "login" || raw.startup === "boot") ? { startup: raw.startup } : { startup: "off" };
30
+ }
31
+ function processExists(pid) {
32
+ if (!Number.isSafeInteger(pid) || pid <= 0)
33
+ return !1;
34
+ try {
35
+ return process.kill(pid, 0), !0;
36
+ } catch (error) {
37
+ return !(error && typeof error == "object" && "code" in error && error.code === "ESRCH");
38
+ }
39
+ }
40
+ function readGatewayStatus(file = statusPath()) {
41
+ let raw = readJson(file);
42
+ if (!(!raw || typeof raw != "object" || !("version" in raw) || raw.version !== 1 || !("pid" in raw) || typeof raw.pid != "number") && !(!("instance" in raw) || typeof raw.instance != "string" || !("updatedAt" in raw) || typeof raw.updatedAt != "string") && !(!("state" in raw) || !["starting", "ready", "stopping"].includes(String(raw.state))) && !(!("platforms" in raw) || !raw.platforms || typeof raw.platforms != "object" || !("startedAt" in raw) || typeof raw.startedAt != "string"))
43
+ return raw;
44
+ }
45
+ function gatewayIsRunning() {
46
+ let status = readGatewayStatus();
47
+ return !!status && processExists(status.pid);
48
+ }
49
+ function claimGateway(onStop) {
50
+ let dir = serviceDirectory();
51
+ mkdirSync(dir, { recursive: !0, mode: 448 });
52
+ let lock = join(dir, "lock");
53
+ try {
54
+ mkdirSync(lock);
55
+ } catch (error) {
56
+ if (!error || typeof error != "object" || !("code" in error) || error.code !== "EEXIST")
57
+ throw error;
58
+ let previous = readGatewayStatus(join(lock, "owner.json"));
59
+ if (!previous || processExists(previous.pid))
60
+ throw new Error("Gateway already running or startup lock is unresolved. Run lunr gateway doctor.");
61
+ let recovery = join(dir, "recovery");
62
+ mkdirSync(recovery);
63
+ try {
64
+ let current = readGatewayStatus(join(lock, "owner.json"));
65
+ if (!current || current.instance !== previous.instance || processExists(current.pid))
66
+ throw new Error("Gateway ownership changed. Try again.");
67
+ rmSync(lock, { recursive: !0 }), mkdirSync(lock);
68
+ } finally {
69
+ rmSync(recovery, { recursive: !0, force: !0 });
70
+ }
71
+ }
72
+ let status = {
73
+ version: 1,
74
+ instance: randomUUID(),
75
+ pid: process.pid,
76
+ startedAt: (/* @__PURE__ */ new Date()).toISOString(),
77
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
78
+ state: "starting",
79
+ platforms: {}
80
+ };
81
+ atomicJson(join(lock, "owner.json"), status);
82
+ let save = () => {
83
+ status.updatedAt = (/* @__PURE__ */ new Date()).toISOString(), atomicJson(statusPath(), status);
84
+ };
85
+ save();
86
+ let stopping = !1, timer = setInterval(() => {
87
+ save();
88
+ let control = readJson(controlPath());
89
+ !stopping && control && typeof control == "object" && "instance" in control && control.instance === status.instance && "action" in control && control.action === "stop" && (stopping = !0, status.state = "stopping", onStop());
90
+ }, 500);
91
+ return {
92
+ update(platforms, state = "ready") {
93
+ status.platforms = { ...platforms }, status.state = state, save();
94
+ },
95
+ release() {
96
+ clearInterval(timer), readGatewayStatus()?.instance === status.instance && (rmSync(statusPath(), { force: !0 }), rmSync(controlPath(), { force: !0 }), rmSync(lock, { recursive: !0, force: !0 }));
97
+ }
98
+ };
99
+ }
100
+ function cliPath() {
101
+ let candidate = process.argv[1];
102
+ return candidate && existsSync(candidate) ? resolve(candidate) : fileURLToPath(new URL("../cli.js", new URL("../gateway/service.js", import.meta.url).href));
103
+ }
104
+ var sleep = (ms) => new Promise((resolve2) => setTimeout(resolve2, ms));
105
+ async function startGatewayService() {
106
+ if (gatewayIsRunning())
107
+ return "Gateway is already running.";
108
+ mkdirSync(serviceDirectory(), { recursive: !0, mode: 448 });
109
+ let startup = loadServiceSettings().startup;
110
+ if (startup !== "off") {
111
+ let user = userInfo(), spec = startupSpec(process.platform, startup, {
112
+ home: homedir(),
113
+ agentDir: getAgentDir(),
114
+ node: process.execPath,
115
+ cli: cliPath(),
116
+ username: user.username,
117
+ uid: user.uid
118
+ });
119
+ execute(spec.start);
120
+ for (let i = 0; i < 100; i++) {
121
+ if (readGatewayStatus()?.state === "ready" && gatewayIsRunning())
122
+ return "Gateway started.";
123
+ await sleep(200);
124
+ }
125
+ throw new Error(`Startup service did not become ready. Run lunr gateway doctor and inspect ${gatewayLogPath()}`);
126
+ }
127
+ let { openSync, closeSync } = await import("node:fs"), log = openSync(gatewayLogPath(), "a", 384), child = spawn(process.execPath, [cliPath(), "gateway", "run"], {
128
+ cwd: homedir(),
129
+ detached: !0,
130
+ windowsHide: !0,
131
+ stdio: ["ignore", log, log],
132
+ env: { ...process.env, PI_CODING_AGENT_DIR: getAgentDir() }
133
+ });
134
+ closeSync(log);
135
+ let spawnError;
136
+ child.on("error", (error) => {
137
+ spawnError = error;
138
+ }), child.unref();
139
+ for (let i = 0; i < 100; i++) {
140
+ if (spawnError)
141
+ throw spawnError;
142
+ let status = readGatewayStatus();
143
+ if (status && status.pid === child.pid && status.state === "ready")
144
+ return "Gateway started.";
145
+ if (child.exitCode !== null)
146
+ throw new Error(`Gateway exited with code ${child.exitCode}. See ${gatewayLogPath()}`);
147
+ await sleep(200);
148
+ }
149
+ throw new Error(`Gateway did not become ready within 20 seconds. Check lunr gateway status and ${gatewayLogPath()}`);
150
+ }
151
+ async function stopGatewayService() {
152
+ let status = readGatewayStatus();
153
+ if (!status || !processExists(status.pid))
154
+ return "Gateway is not running.";
155
+ atomicJson(controlPath(), { instance: status.instance, action: "stop" });
156
+ for (let i = 0; i < 150; i++) {
157
+ if (readGatewayStatus()?.instance !== status.instance || !processExists(status.pid))
158
+ return "Gateway stopped.";
159
+ await sleep(200);
160
+ }
161
+ throw new Error("Gateway is still stopping after 30 seconds. Inspect the log; no unrelated process was terminated.");
162
+ }
163
+ function xml(value) {
164
+ return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;");
165
+ }
166
+ function systemdArg(value) {
167
+ return `"${value.replaceAll("%", "%%").replaceAll("\\", "\\\\").replaceAll('"', '\\"')}"`;
168
+ }
169
+ function ps(value) {
170
+ return `'${value.replaceAll("'", "''")}'`;
171
+ }
172
+ function startupSpec(platform, mode, options) {
173
+ let { home, agentDir, node, cli, username, uid } = options;
174
+ if ([home, agentDir, node, cli, username].some((value) => /[\r\n\0]/.test(value)))
175
+ throw new Error("Startup paths and account names must not contain control characters.");
176
+ let suffix = createHash("sha256").update(resolve(agentDir)).digest("hex").slice(0, 10), serviceName = `${servicePrefix}-${suffix}`, log = join(agentDir, "gateway-service", "gateway.log");
177
+ if (platform === "linux")
178
+ return {
179
+ path: join(home, ".config", "systemd", "user", `${serviceName}.service`),
180
+ content: `[Unit]
181
+ Description=lunR chat gateway
182
+ After=network-online.target
183
+
184
+ [Service]
185
+ Type=simple
186
+ ExecStart=${systemdArg(node)} ${systemdArg(cli)} gateway run
187
+ WorkingDirectory=${systemdArg(home)}
188
+ Environment=${systemdArg(`PI_CODING_AGENT_DIR=${agentDir}`)}
189
+ Restart=on-failure
190
+ RestartSec=5
191
+ TimeoutStopSec=30
192
+ StandardOutput=append:${log.replaceAll("%", "%%")}
193
+ StandardError=append:${log.replaceAll("%", "%%")}
194
+ UMask=0077
195
+
196
+ [Install]
197
+ WantedBy=default.target
198
+ `,
199
+ install: [
200
+ ...mode === "boot" ? [["loginctl", "enable-linger", username]] : [],
201
+ ["systemctl", "--user", "daemon-reload"],
202
+ ["systemctl", "--user", "enable", `${serviceName}.service`]
203
+ ],
204
+ remove: [["systemctl", "--user", "disable", `${serviceName}.service`]],
205
+ verify: ["systemctl", "--user", "is-enabled", `${serviceName}.service`],
206
+ start: ["systemctl", "--user", "start", `${serviceName}.service`]
207
+ };
208
+ if (platform === "darwin") {
209
+ let label = `dev.lunr.gateway.${suffix}`, path = mode === "boot" ? `/Library/LaunchDaemons/${label}.plist` : join(home, "Library", "LaunchAgents", `${label}.plist`), domain = mode === "boot" ? "system" : `gui/${uid}`, command = (args) => mode === "boot" ? ["sudo", "launchctl", ...args] : ["launchctl", ...args];
210
+ return {
211
+ path,
212
+ content: `<?xml version="1.0" encoding="UTF-8"?>
213
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
214
+ <plist version="1.0"><dict><key>Label</key><string>${label}</string><key>ProgramArguments</key><array>${[node, cli, "gateway", "run"].map((v) => `<string>${xml(v)}</string>`).join("")}</array><key>WorkingDirectory</key><string>${xml(home)}</string>${mode === "boot" ? `<key>UserName</key><string>${xml(username)}</string>` : ""}<key>EnvironmentVariables</key><dict><key>PI_CODING_AGENT_DIR</key><string>${xml(agentDir)}</string><key>HOME</key><string>${xml(home)}</string></dict><key>RunAtLoad</key><true/><key>KeepAlive</key><dict><key>SuccessfulExit</key><false/></dict><key>StandardOutPath</key><string>${xml(log)}</string><key>StandardErrorPath</key><string>${xml(log)}</string></dict></plist>
215
+ `,
216
+ install: [command(["bootstrap", domain, path])],
217
+ remove: [command(["bootout", `${domain}/${label}`])],
218
+ verify: command(["print", `${domain}/${label}`]),
219
+ start: command(["kickstart", `${domain}/${label}`])
220
+ };
221
+ }
222
+ if (platform === "win32") {
223
+ let path = join(agentDir, "gateway-service", "startup.ps1"), content = `$env:PI_CODING_AGENT_DIR = ${ps(agentDir)}
224
+ Set-Location -LiteralPath ${ps(home)}
225
+ & ${ps(node)} ${ps(cli)} gateway run *>> ${ps(log)}
226
+ exit $LASTEXITCODE
227
+ `, action = `New-ScheduledTaskAction -Execute 'powershell.exe' -Argument ${ps(`-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File "${path}"`)}`, trigger = mode === "boot" ? "New-ScheduledTaskTrigger -AtStartup" : `New-ScheduledTaskTrigger -AtLogOn -User ${ps(username)}`, register = `$ErrorActionPreference='Stop'; $a=${action}; $t=${trigger}; $s=New-ScheduledTaskSettingsSet -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1) -ExecutionTimeLimit ([TimeSpan]::Zero) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries; ${mode === "boot" ? `$c=Get-Credential -UserName ${ps(username)} -Message 'Windows needs your account credentials to run lunR before login'; if(!$c){throw 'Cancelled'}; Register-ScheduledTask -TaskName '${serviceName}' -Action $a -Trigger $t -Settings $s -User $c.UserName -Password $c.GetNetworkCredential().Password -Force | Out-Null` : `Register-ScheduledTask -TaskName '${serviceName}' -Action $a -Trigger $t -Settings $s -User ${ps(username)} -Force | Out-Null`}`, command = (script) => ["powershell.exe", "-NoProfile", "-Command", script];
228
+ return {
229
+ path,
230
+ content,
231
+ install: [command(register)],
232
+ remove: [
233
+ command(`$ErrorActionPreference='Stop'; Unregister-ScheduledTask -TaskName '${serviceName}' -Confirm:$false`)
234
+ ],
235
+ verify: command(`$ErrorActionPreference='Stop'; Get-ScheduledTask -TaskName '${serviceName}' | Out-Null`),
236
+ start: command(`$ErrorActionPreference='Stop'; Start-ScheduledTask -TaskName '${serviceName}'`)
237
+ };
238
+ }
239
+ throw new Error(`Automatic startup is not supported on ${platform}. Run lunr gateway start manually.`);
240
+ }
241
+ function execute(command) {
242
+ let [file, ...args] = command, result = spawnSync(file, args, { stdio: "inherit", windowsHide: !0, timeout: 12e4 });
243
+ if (result.error)
244
+ throw result.error;
245
+ if (result.status !== 0)
246
+ throw new Error(`${file} failed. Check OS permissions and run lunr gateway doctor.`);
247
+ }
248
+ async function configureStartup(mode) {
249
+ let previous = loadServiceSettings().startup;
250
+ if (process.platform === "linux" && mode === "login" && spawnSync("loginctl", ["show-user", userInfo().username, "--property=Linger", "--value"], {
251
+ encoding: "utf8",
252
+ timeout: 1e4
253
+ }).stdout?.trim() === "yes")
254
+ throw new Error("Linux user services already start at boot because lingering is enabled. Choose boot, or disable lingering yourself before choosing login. lunR will not change other user services.");
255
+ let user = userInfo(), options = {
256
+ home: homedir(),
257
+ agentDir: getAgentDir(),
258
+ node: process.execPath,
259
+ cli: cliPath(),
260
+ username: user.username,
261
+ uid: user.uid
262
+ };
263
+ if (previous !== "off") {
264
+ let old = startupSpec(process.platform, previous, options);
265
+ for (let command of old.remove)
266
+ execute(command);
267
+ process.platform === "darwin" && previous === "boot" ? execute(["sudo", "rm", "-f", old.path]) : rmSync(old.path, { force: !0 }), atomicJson(settingsPath(), { startup: "off" });
268
+ }
269
+ if (mode === "off") {
270
+ atomicJson(settingsPath(), { startup: "off" });
271
+ return;
272
+ }
273
+ let spec = startupSpec(process.platform, mode, options);
274
+ if (mkdirSync(serviceDirectory(), { recursive: !0, mode: 448 }), process.platform === "darwin" && mode === "boot") {
275
+ let temporary = join(serviceDirectory(), "install.plist");
276
+ writeFileSync(temporary, spec.content, { mode: 384 });
277
+ try {
278
+ execute(["sudo", "install", "-o", "root", "-g", "wheel", "-m", "644", temporary, spec.path]);
279
+ } finally {
280
+ rmSync(temporary, { force: !0 });
281
+ }
282
+ } else
283
+ mkdirSync(dirname(spec.path), { recursive: !0, mode: 448 }), writeFileSync(spec.path, spec.content, { mode: 384 });
284
+ for (let command of spec.install)
285
+ execute(command);
286
+ execute(spec.verify), atomicJson(settingsPath(), { startup: mode });
287
+ }
288
+ function startupVerification() {
289
+ let mode = loadServiceSettings().startup;
290
+ if (mode === "off")
291
+ return "";
292
+ try {
293
+ let user = userInfo(), spec = startupSpec(process.platform, mode, {
294
+ home: homedir(),
295
+ agentDir: getAgentDir(),
296
+ node: process.execPath,
297
+ cli: cliPath(),
298
+ username: user.username,
299
+ uid: user.uid
300
+ }), [command, ...args] = spec.verify[0] === "sudo" ? spec.verify.slice(1) : spec.verify;
301
+ return spawnSync(command, args, { encoding: "utf8", windowsHide: !0, timeout: 5e3 }).status === 0 ? " (native service verified)" : " (native service missing or unavailable)";
302
+ } catch {
303
+ return " (native service could not be checked)";
304
+ }
305
+ }
306
+ function serviceStatusText() {
307
+ let status = readGatewayStatus(), alive = !!status && processExists(status.pid), fresh = !!status && Date.now() - Date.parse(status.updatedAt) < 5e3;
308
+ return [
309
+ `Gateway: ${alive ? `${status.state}${fresh ? "" : " (not responding)"}` : "stopped"}`,
310
+ `Automatic startup: ${loadServiceSettings().startup}${startupVerification()}`,
311
+ ...alive ? [`PID: ${status.pid}`, ...Object.entries(status.platforms).map(([name, state]) => `${name}: ${state}`)] : [],
312
+ `Log: ${gatewayLogPath()}`
313
+ ].join(`
314
+ `);
315
+ }
316
+ function readGatewayLog() {
317
+ try {
318
+ return readFileSync(gatewayLogPath(), "utf8").split(`
319
+ `).slice(-100).join(`
320
+ `).replace(/bot\d+:[A-Za-z0-9_-]+/g, "bot[redacted]");
321
+ } catch {
322
+ return "No gateway log yet.";
323
+ }
324
+ }
325
+
326
+ export {
327
+ serviceDirectory,
328
+ gatewayLogPath,
329
+ atomicJson,
330
+ loadServiceSettings,
331
+ processExists,
332
+ readGatewayStatus,
333
+ gatewayIsRunning,
334
+ claimGateway,
335
+ startGatewayService,
336
+ stopGatewayService,
337
+ startupSpec,
338
+ configureStartup,
339
+ serviceStatusText,
340
+ readGatewayLog
341
+ };
@@ -1,118 +1,17 @@
1
1
  import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ loadGatewayConfig,
4
+ saveGatewayConfig
5
+ } from "./chunk-R3K2F5GI.js";
2
6
  import {
3
7
  VERSION,
4
8
  appendDebugLog,
5
9
  getAgentDir
6
10
  } from "./chunk-FQMM2EZ2.js";
7
11
 
8
- // packages/coding-agent/dist/gateway/config.js
12
+ // packages/coding-agent/dist/core/install-features.js
9
13
  import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
10
14
  import { join } from "node:path";
11
- function gatewayConfigPath() {
12
- return join(getAgentDir(), "gateway.json");
13
- }
14
- function defaultPlatformConfig(requireMention) {
15
- return {
16
- enabled: !1,
17
- allowedUsers: [],
18
- allowedChats: [],
19
- requireMention,
20
- freeResponseChats: []
21
- };
22
- }
23
- function defaultGatewayConfig() {
24
- return {
25
- telegram: defaultPlatformConfig(!1),
26
- discord: { ...defaultPlatformConfig(!0), ignoredChannels: [], autoThread: !0 },
27
- groupSessionsPerUser: !0,
28
- unauthorizedDmBehavior: "pair",
29
- streaming: { enabled: !0, editIntervalMs: 800, bufferThreshold: 24 }
30
- };
31
- }
32
- function asStringArray(value) {
33
- if (Array.isArray(value))
34
- return value.every((v) => typeof v == "string") ? value : void 0;
35
- }
36
- function asBoolean(value) {
37
- return typeof value == "boolean" ? value : void 0;
38
- }
39
- function asNumber(value) {
40
- return typeof value == "number" && Number.isFinite(value) ? value : void 0;
41
- }
42
- function sanitizePlatform(raw, base) {
43
- if (raw == null || typeof raw != "object" || Array.isArray(raw))
44
- return base;
45
- let r = raw;
46
- return {
47
- enabled: asBoolean(r.enabled) ?? base.enabled,
48
- token: typeof r.token == "string" ? r.token : base.token,
49
- allowedUsers: asStringArray(r.allowedUsers) ?? base.allowedUsers,
50
- allowedChats: asStringArray(r.allowedChats) ?? base.allowedChats,
51
- requireMention: asBoolean(r.requireMention) ?? base.requireMention,
52
- freeResponseChats: asStringArray(r.freeResponseChats) ?? base.freeResponseChats,
53
- homeChannel: typeof r.homeChannel == "string" ? r.homeChannel : base.homeChannel
54
- };
55
- }
56
- function sanitizeDiscord(raw, base) {
57
- let platform = sanitizePlatform(raw, base), r = raw != null && typeof raw == "object" && !Array.isArray(raw) ? raw : {};
58
- return {
59
- ...platform,
60
- ignoredChannels: asStringArray(r.ignoredChannels) ?? base.ignoredChannels,
61
- autoThread: asBoolean(r.autoThread) ?? base.autoThread
62
- };
63
- }
64
- function sanitizeConfig(raw) {
65
- let base = defaultGatewayConfig();
66
- if (raw == null || typeof raw != "object" || Array.isArray(raw))
67
- return base;
68
- let r = raw, streamingRaw = r.streaming != null && typeof r.streaming == "object" && !Array.isArray(r.streaming) ? r.streaming : {};
69
- return {
70
- telegram: sanitizePlatform(r.telegram, base.telegram),
71
- discord: sanitizeDiscord(r.discord, base.discord),
72
- groupSessionsPerUser: asBoolean(r.groupSessionsPerUser) ?? base.groupSessionsPerUser,
73
- unauthorizedDmBehavior: r.unauthorizedDmBehavior === "ignore" ? "ignore" : "pair",
74
- streaming: {
75
- enabled: asBoolean(streamingRaw.enabled) ?? base.streaming.enabled,
76
- editIntervalMs: asNumber(streamingRaw.editIntervalMs) ?? base.streaming.editIntervalMs,
77
- bufferThreshold: asNumber(streamingRaw.bufferThreshold) ?? base.streaming.bufferThreshold
78
- }
79
- };
80
- }
81
- function loadGatewayConfig() {
82
- let path = gatewayConfigPath();
83
- if (!existsSync(path))
84
- return defaultGatewayConfig();
85
- try {
86
- return sanitizeConfig(JSON.parse(readFileSync(path, "utf-8")));
87
- } catch (err) {
88
- return console.error(`[gateway] Failed to load config from ${path}: ${err}`), defaultGatewayConfig();
89
- }
90
- }
91
- function saveGatewayConfig(config) {
92
- let path = gatewayConfigPath(), dir = getAgentDir();
93
- existsSync(dir) || mkdirSync(dir, { recursive: !0 });
94
- let tmp = `${path}.tmp-${process.pid}`;
95
- writeFileSync(tmp, `${JSON.stringify(config, null, 2)}
96
- `, "utf-8"), renameSync(tmp, path);
97
- try {
98
- chmodSync(path, 384);
99
- } catch {
100
- }
101
- }
102
- function resolvePlatformToken(platform, platformCfg) {
103
- let upper = platform.toUpperCase();
104
- return process.env[`LUNR_${upper}_BOT_TOKEN`] ?? process.env[`${upper}_BOT_TOKEN`] ?? platformCfg.token;
105
- }
106
- function platformConfigFor(cfg, platform) {
107
- if (platform === "telegram")
108
- return cfg.telegram;
109
- if (platform === "discord")
110
- return cfg.discord;
111
- }
112
-
113
- // packages/coding-agent/dist/core/install-features.js
114
- import { chmodSync as chmodSync2, existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync2, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "node:fs";
115
- import { join as join2 } from "node:path";
116
15
  var FEATURE_CATALOG = [
117
16
  {
118
17
  id: "chat-platforms",
@@ -143,7 +42,7 @@ var FEATURE_CATALOG = [
143
42
  }
144
43
  ], CHAT_PLATFORMS_INFER_UNTIL = "0.2.0";
145
44
  function installFeaturesPath() {
146
- return join2(getAgentDir(), "install-features.json");
45
+ return join(getAgentDir(), "install-features.json");
147
46
  }
148
47
  function getFeatureSpec(id) {
149
48
  return FEATURE_CATALOG.find((f) => f.id === id);
@@ -229,22 +128,22 @@ function inferFromGateway() {
229
128
  }
230
129
  function loadInstallFeatures() {
231
130
  let path = installFeaturesPath();
232
- if (!existsSync2(path))
131
+ if (!existsSync(path))
233
132
  return inferFromGateway() ?? emptyFile();
234
133
  try {
235
- return sanitizeFile(JSON.parse(readFileSync2(path, "utf-8"))) ?? inferFromGateway() ?? emptyFile();
134
+ return sanitizeFile(JSON.parse(readFileSync(path, "utf-8"))) ?? inferFromGateway() ?? emptyFile();
236
135
  } catch {
237
136
  return inferFromGateway() ?? emptyFile();
238
137
  }
239
138
  }
240
139
  function saveInstallFeatures(file) {
241
140
  let path = installFeaturesPath(), dir = getAgentDir();
242
- existsSync2(dir) || mkdirSync2(dir, { recursive: !0 });
141
+ existsSync(dir) || mkdirSync(dir, { recursive: !0 });
243
142
  let tmp = `${path}.tmp-${process.pid}`;
244
- writeFileSync2(tmp, `${JSON.stringify(file, null, 2)}
245
- `, "utf-8"), renameSync2(tmp, path);
143
+ writeFileSync(tmp, `${JSON.stringify(file, null, 2)}
144
+ `, "utf-8"), renameSync(tmp, path);
246
145
  try {
247
- chmodSync2(path, 420);
146
+ chmodSync(path, 420);
248
147
  } catch {
249
148
  }
250
149
  }
@@ -373,11 +272,14 @@ var chatPlatformsHandler = {
373
272
  persistEnvAndSecretTokens(ctx.secrets);
374
273
  let cfg = loadGatewayConfig();
375
274
  if (cfg.telegram.token && (cfg.telegram.enabled = !0), cfg.discord.token && (cfg.discord.enabled = !0), saveGatewayConfig(cfg), ctx.next.options.autostart === !0) {
376
- let hasFileToken = !!(cfg.telegram.token || cfg.discord.token);
377
- console.error(hasFileToken ? "chat-platforms: autostart recorded; login item install is not in this build yet." : "chat-platforms: autostart requested but no file token in gateway.json \u2014 unit not enabled.");
378
- }
275
+ if (!cfg.telegram.token && !cfg.discord.token)
276
+ throw new Error("Configure a bot token with lunr gateway setup before enabling automatic startup.");
277
+ await (await import("./service-ISSP6VHE.js")).configureStartup("login");
278
+ } else ctx.previous?.options.autostart === !0 && await (await import("./service-ISSP6VHE.js")).configureStartup("off");
379
279
  },
380
280
  async disable(opts) {
281
+ let service = await import("./service-ISSP6VHE.js");
282
+ service.loadServiceSettings().startup !== "off" && await service.configureStartup("off"), await service.stopGatewayService();
381
283
  let cfg = loadGatewayConfig();
382
284
  cfg.telegram.enabled = !1, cfg.discord.enabled = !1, opts.purgeSecrets && (delete cfg.telegram.token, delete cfg.discord.token), saveGatewayConfig(cfg);
383
285
  }
@@ -387,9 +289,9 @@ var chatPlatformsHandler = {
387
289
  function appendInstallLog(line) {
388
290
  try {
389
291
  let dir = getAgentDir();
390
- existsSync2(dir) || mkdirSync2(dir, { recursive: !0 });
391
- let path = join2(dir, "install.log");
392
- writeFileSync2(path, `${(/* @__PURE__ */ new Date()).toISOString()} ${line}
292
+ existsSync(dir) || mkdirSync(dir, { recursive: !0 });
293
+ let path = join(dir, "install.log");
294
+ writeFileSync(path, `${(/* @__PURE__ */ new Date()).toISOString()} ${line}
393
295
  `, { encoding: "utf-8", flag: "a" });
394
296
  } catch {
395
297
  }
@@ -409,11 +311,6 @@ function chatPlatformDeliverBlockedMessage() {
409
311
  }
410
312
 
411
313
  export {
412
- gatewayConfigPath,
413
- loadGatewayConfig,
414
- saveGatewayConfig,
415
- resolvePlatformToken,
416
- platformConfigFor,
417
314
  FEATURE_CATALOG,
418
315
  getFeatureSpec,
419
316
  loadInstallFeatures,
@@ -1,32 +1,36 @@
1
1
  import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
2
  import {
3
- areExperimentalFeaturesEnabled,
3
+ areExperimentalFeaturesEnabled
4
+ } from "./chunk-YPHAIRZT.js";
5
+ import {
6
+ DefaultPackageManager
7
+ } from "./chunk-TVJUOJZJ.js";
8
+ import {
9
+ SettingsManager
10
+ } from "./chunk-QAZOULTU.js";
11
+ import {
4
12
  getProjectTrustOptions,
5
13
  hasTrustRequiringProjectResources
6
- } from "./chunk-YMEAYRBE.js";
14
+ } from "./chunk-HTFRRDSF.js";
7
15
  import {
8
- DefaultPackageManager,
9
16
  emitProjectTrustEvent
10
- } from "./chunk-Y5KOEMBH.js";
17
+ } from "./chunk-GJ2RDBRL.js";
11
18
  import {
12
- SettingsManager
13
- } from "./chunk-WLLDXJRT.js";
19
+ KeybindingsManager
20
+ } from "./chunk-5EFIU3OM.js";
14
21
  import {
15
22
  ExtensionSelectorComponent
16
- } from "./chunk-6KDIOJL3.js";
23
+ } from "./chunk-QH6YL7VK.js";
17
24
  import {
18
25
  ExtensionInputComponent
19
- } from "./chunk-2SJB2AWP.js";
20
- import {
21
- KeybindingsManager
22
- } from "./chunk-5EFIU3OM.js";
26
+ } from "./chunk-HMBGROQK.js";
23
27
  import {
24
28
  DynamicBorder
25
- } from "./chunk-BOHIDQT4.js";
29
+ } from "./chunk-6VYZ5UFP.js";
26
30
  import {
27
31
  keyHint,
28
32
  rawKeyHint
29
- } from "./chunk-DDWHZ633.js";
33
+ } from "./chunk-GS42T6MX.js";
30
34
  import {
31
35
  detectTerminalBackgroundFromEnv,
32
36
  detectTerminalThemeForAuto,
@@ -37,7 +41,7 @@ import {
37
41
  setRegisteredThemes,
38
42
  setTheme,
39
43
  theme
40
- } from "./chunk-RNBHABBA.js";
44
+ } from "./chunk-RDDAZOMU.js";
41
45
  import {
42
46
  APP_NAME,
43
47
  CONFIG_DIR_NAME,