@ashx-j/lunr 0.2.24 → 0.2.25

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 (104) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/dist/gateway/adapters/discord.d.ts.map +1 -1
  3. package/dist/gateway/adapters/discord.js +2 -7
  4. package/dist/gateway/adapters/discord.js.map +1 -1
  5. package/dist/gateway/adapters/telegram.d.ts.map +1 -1
  6. package/dist/gateway/adapters/telegram.js +7 -0
  7. package/dist/gateway/adapters/telegram.js.map +1 -1
  8. package/dist/gateway/agent-bridge.d.ts +4 -1
  9. package/dist/gateway/agent-bridge.d.ts.map +1 -1
  10. package/dist/gateway/agent-bridge.js +57 -17
  11. package/dist/gateway/agent-bridge.js.map +1 -1
  12. package/dist/gateway/buttons.d.ts.map +1 -1
  13. package/dist/gateway/buttons.js +29 -19
  14. package/dist/gateway/buttons.js.map +1 -1
  15. package/dist/gateway/commands.d.ts +2 -0
  16. package/dist/gateway/commands.d.ts.map +1 -1
  17. package/dist/gateway/commands.js +39 -18
  18. package/dist/gateway/commands.js.map +1 -1
  19. package/dist/gateway/config.d.ts +1 -0
  20. package/dist/gateway/config.d.ts.map +1 -1
  21. package/dist/gateway/config.js +2 -0
  22. package/dist/gateway/config.js.map +1 -1
  23. package/dist/gateway/cron.d.ts +1 -1
  24. package/dist/gateway/cron.d.ts.map +1 -1
  25. package/dist/gateway/cron.js +2 -2
  26. package/dist/gateway/cron.js.map +1 -1
  27. package/dist/gateway/index.d.ts.map +1 -1
  28. package/dist/gateway/index.js +26 -26
  29. package/dist/gateway/index.js.map +1 -1
  30. package/dist/gateway/mobile-commands.d.ts.map +1 -1
  31. package/dist/gateway/mobile-commands.js +3 -3
  32. package/dist/gateway/mobile-commands.js.map +1 -1
  33. package/dist/gateway/presenter.d.ts +12 -1
  34. package/dist/gateway/presenter.d.ts.map +1 -1
  35. package/dist/gateway/presenter.js +146 -48
  36. package/dist/gateway/presenter.js.map +1 -1
  37. package/dist/gateway/router.d.ts +5 -5
  38. package/dist/gateway/router.d.ts.map +1 -1
  39. package/dist/gateway/router.js +95 -41
  40. package/dist/gateway/router.js.map +1 -1
  41. package/dist/gateway/service.d.ts.map +1 -1
  42. package/dist/gateway/service.js +13 -4
  43. package/dist/gateway/service.js.map +1 -1
  44. package/dist/gateway/setup.d.ts +5 -0
  45. package/dist/gateway/setup.d.ts.map +1 -1
  46. package/dist/gateway/setup.js +98 -42
  47. package/dist/gateway/setup.js.map +1 -1
  48. package/dist/gateway/stream.d.ts +6 -5
  49. package/dist/gateway/stream.d.ts.map +1 -1
  50. package/dist/gateway/stream.js +24 -11
  51. package/dist/gateway/stream.js.map +1 -1
  52. package/dist/node-runtime/{agent-session-services-IEF7LQWD.js → agent-session-services-YXXFCP5J.js} +7 -6
  53. package/dist/node-runtime/{builtin-extensions-EBAWTH4M.js → builtin-extensions-ZLAX7TUH.js} +1 -1
  54. package/dist/node-runtime/{chunk-OF7PWMG4.js → chunk-2HHLJWGD.js} +3 -87
  55. package/dist/node-runtime/{chunk-VWCE2HSZ.js → chunk-2HMIRK7W.js} +4 -4
  56. package/dist/node-runtime/{chunk-K5AGHH57.js → chunk-3XPLBUEM.js} +1 -1
  57. package/dist/node-runtime/{chunk-RORY2HMJ.js → chunk-6XL67VVY.js} +1 -1
  58. package/dist/node-runtime/chunk-7S3T6YEA.js +97 -0
  59. package/dist/node-runtime/{chunk-R3K2F5GI.js → chunk-B4HP6ZWM.js} +2 -0
  60. package/dist/node-runtime/{chunk-YVI6L6LU.js → chunk-E4D3IGP2.js} +38 -22
  61. package/dist/node-runtime/{chunk-5Q3EHOHI.js → chunk-IJIFHRTB.js} +14 -12
  62. package/dist/node-runtime/{chunk-Y73WPE6S.js → chunk-KWIYUUZK.js} +63 -37
  63. package/dist/node-runtime/{chunk-F4FLTQKV.js → chunk-LQP3RB67.js} +184 -1527
  64. package/dist/node-runtime/{chunk-FU6OODRZ.js → chunk-NRKGMJYU.js} +1 -1
  65. package/dist/node-runtime/{chunk-IGV54Q5V.js → chunk-QTU6AKNJ.js} +128 -63
  66. package/dist/node-runtime/{chunk-L3LX4SNR.js → chunk-RC7DMV45.js} +5 -5
  67. package/dist/node-runtime/{chunk-UWPJL22I.js → chunk-SLVOAQOY.js} +15 -4
  68. package/dist/node-runtime/{chunk-WHLRAGUQ.js → chunk-TORR5XBV.js} +6 -6
  69. package/dist/node-runtime/{chunk-UP2XBVH5.js → chunk-UOEDI7RP.js} +1 -1
  70. package/dist/node-runtime/{chunk-DE2JB6J5.js → chunk-VQFSUJJG.js} +2 -2
  71. package/dist/node-runtime/{chunk-QM43FEAE.js → chunk-WF7PGWRZ.js} +3 -3
  72. package/dist/node-runtime/chunk-YCUZEGJG.js +1361 -0
  73. package/dist/node-runtime/{command-7BG7VVTS.js → command-6WDOYKS6.js} +5 -5
  74. package/dist/node-runtime/{commands-QFDKNQTL.js → commands-QC6VUZJQ.js} +5 -5
  75. package/dist/node-runtime/{config-RORQUQFG.js → config-D4QUPAHX.js} +1 -1
  76. package/dist/node-runtime/{gateway-TWR3N65G.js → gateway-INAYBF4Q.js} +134 -78
  77. package/dist/node-runtime/index.js +15 -12
  78. package/dist/node-runtime/{install-cli-VAP6KBFN.js → install-cli-KL4UDDAD.js} +3 -3
  79. package/dist/node-runtime/{interactive-mode-6J5VZ2TT.js → interactive-mode-Z5M7WYYZ.js} +8 -7
  80. package/dist/node-runtime/{lunr-browser-J5ZZYVGM.js → lunr-browser-IR7TL3J7.js} +3 -3
  81. package/dist/node-runtime/{lunr-cron-CXOL37AL.js → lunr-cron-LWIZJM2N.js} +5 -5
  82. package/dist/node-runtime/main.js +12 -10
  83. package/dist/node-runtime/{mobile-commands-VTBM5DSZ.js → mobile-commands-J7OJEKFO.js} +4 -4
  84. package/dist/node-runtime/{package-manager-cli-ZLW5DZXF.js → package-manager-cli-VYZM5WHN.js} +10 -7
  85. package/dist/node-runtime/{pi-subagents-XPCLLKIM.js → pi-subagents-DNY7EAIG.js} +6 -6
  86. package/dist/node-runtime/rpc-entry.js +12 -10
  87. package/dist/node-runtime/{runtime-bridges-QYXUX2TG.js → runtime-bridges-VRDDR73P.js} +5 -5
  88. package/dist/node-runtime/{service-ISSP6VHE.js → service-MDQIPQ26.js} +1 -1
  89. package/dist/node-runtime/{settings-manager-WCQDUVQB.js → settings-manager-J4SPQPDJ.js} +4 -4
  90. package/dist/node-runtime/setup-CQ2NLVK5.js +214 -0
  91. package/dist/node-runtime/{subagent-executor-OTNISDQU.js → subagent-executor-KZZQGAKV.js} +5 -5
  92. package/dist/node-runtime/{update-cli-VBR2777K.js → update-cli-GTFJC7XK.js} +4 -4
  93. package/docs/features.md +4 -4
  94. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  95. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  96. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  97. package/examples/extensions/gondolin/package-lock.json +2 -2
  98. package/examples/extensions/gondolin/package.json +1 -1
  99. package/examples/extensions/sandbox/package-lock.json +2 -2
  100. package/examples/extensions/sandbox/package.json +1 -1
  101. package/examples/extensions/with-deps/package-lock.json +2 -2
  102. package/examples/extensions/with-deps/package.json +1 -1
  103. package/package.json +4 -4
  104. package/dist/node-runtime/setup-YRBKH2LD.js +0 -155
@@ -3,7 +3,7 @@ import {
3
3
  InteractiveMode,
4
4
  formatResumeCommand,
5
5
  startInteractiveToolInstalls
6
- } from "./chunk-L3LX4SNR.js";
6
+ } from "./chunk-RC7DMV45.js";
7
7
  import "./chunk-KWA4OC2J.js";
8
8
  import "./chunk-US544NN6.js";
9
9
  import "./chunk-CDVHZOOK.js";
@@ -13,9 +13,10 @@ import "./chunk-RWTKOC3B.js";
13
13
  import "./chunk-7N3YHTYF.js";
14
14
  import "./chunk-YPHAIRZT.js";
15
15
  import "./chunk-5ZH3ZFIZ.js";
16
- import "./chunk-DE2JB6J5.js";
16
+ import "./chunk-VQFSUJJG.js";
17
17
  import "./chunk-CCCN2UCX.js";
18
- import "./chunk-F4FLTQKV.js";
18
+ import "./chunk-YCUZEGJG.js";
19
+ import "./chunk-LQP3RB67.js";
19
20
  import "./chunk-OBMWP3I5.js";
20
21
  import "./chunk-DVGWF6A2.js";
21
22
  import "./chunk-QFWG2RVL.js";
@@ -24,9 +25,9 @@ import "./chunk-53YJI7JU.js";
24
25
  import "./chunk-5ZQXRPMC.js";
25
26
  import "./chunk-AD6VXAO7.js";
26
27
  import "./chunk-KJ6DWS3K.js";
27
- import "./chunk-RORY2HMJ.js";
28
- import "./chunk-UP2XBVH5.js";
29
- import "./chunk-VWCE2HSZ.js";
28
+ import "./chunk-6XL67VVY.js";
29
+ import "./chunk-UOEDI7RP.js";
30
+ import "./chunk-2HMIRK7W.js";
30
31
  import "./chunk-HTFRRDSF.js";
31
32
  import "./chunk-URD2SLIT.js";
32
33
  import "./chunk-GYIXXQAO.js";
@@ -52,7 +53,7 @@ import "./chunk-H2EOZYMP.js";
52
53
  import "./chunk-5EFIU3OM.js";
53
54
  import "./chunk-PVCDKGR6.js";
54
55
  import "./chunk-OR4L3IB2.js";
55
- import "./chunk-R3K2F5GI.js";
56
+ import "./chunk-B4HP6ZWM.js";
56
57
  import "./chunk-E24EO34J.js";
57
58
  import "./chunk-CCZJ3PYY.js";
58
59
  import "./chunk-QH6YL7VK.js";
@@ -5,10 +5,10 @@ import {
5
5
  import {
6
6
  onBrowserEnabledChange,
7
7
  readBrowserSettings
8
- } from "./chunk-UP2XBVH5.js";
9
- import "./chunk-VWCE2HSZ.js";
8
+ } from "./chunk-UOEDI7RP.js";
9
+ import "./chunk-2HMIRK7W.js";
10
10
  import "./chunk-CSFI6YXL.js";
11
- import "./chunk-R3K2F5GI.js";
11
+ import "./chunk-B4HP6ZWM.js";
12
12
  import "./chunk-FQMM2EZ2.js";
13
13
  import "./chunk-Q4Q6D4IY.js";
14
14
  import "./chunk-BRJX2PRC.js";
@@ -13,10 +13,10 @@ import {
13
13
  setCronDeliverValidator,
14
14
  startScheduler,
15
15
  updateJob
16
- } from "./chunk-Y73WPE6S.js";
17
- import "./chunk-IGV54Q5V.js";
16
+ } from "./chunk-KWIYUUZK.js";
17
+ import "./chunk-QTU6AKNJ.js";
18
18
  import "./chunk-RMQZU2YU.js";
19
- import "./chunk-UWPJL22I.js";
19
+ import "./chunk-SLVOAQOY.js";
20
20
  import {
21
21
  beginCronFire,
22
22
  endCronFire,
@@ -26,7 +26,7 @@ import {
26
26
  typebox_exports
27
27
  } from "./chunk-PL6JKXWI.js";
28
28
  import "./chunk-AD6VXAO7.js";
29
- import "./chunk-VWCE2HSZ.js";
29
+ import "./chunk-2HMIRK7W.js";
30
30
  import "./chunk-GJ2RDBRL.js";
31
31
  import "./chunk-BBUVIEZB.js";
32
32
  import "./chunk-ZXSGTGJ6.js";
@@ -41,7 +41,7 @@ import "./chunk-UAEOTO52.js";
41
41
  import "./chunk-RQ2Q5IYR.js";
42
42
  import {
43
43
  loadGatewayConfig
44
- } from "./chunk-R3K2F5GI.js";
44
+ } from "./chunk-B4HP6ZWM.js";
45
45
  import "./chunk-RDDAZOMU.js";
46
46
  import "./chunk-FQMM2EZ2.js";
47
47
  import "./chunk-Q4Q6D4IY.js";
@@ -2,16 +2,18 @@ import { createRequire as __lunrRequire } from "node:module"; const require = __
2
2
  import {
3
3
  main,
4
4
  readPipedStdin
5
- } from "./chunk-5Q3EHOHI.js";
6
- import "./chunk-QM43FEAE.js";
7
- import "./chunk-OF7PWMG4.js";
5
+ } from "./chunk-IJIFHRTB.js";
6
+ import "./chunk-WF7PGWRZ.js";
7
+ import "./chunk-7S3T6YEA.js";
8
+ import "./chunk-2HHLJWGD.js";
8
9
  import "./chunk-YPHAIRZT.js";
9
10
  import "./chunk-PL6JKXWI.js";
10
11
  import "./chunk-5ZH3ZFIZ.js";
11
12
  import "./chunk-OVX6X377.js";
12
- import "./chunk-DE2JB6J5.js";
13
+ import "./chunk-VQFSUJJG.js";
13
14
  import "./chunk-CCCN2UCX.js";
14
- import "./chunk-F4FLTQKV.js";
15
+ import "./chunk-YCUZEGJG.js";
16
+ import "./chunk-LQP3RB67.js";
15
17
  import "./chunk-OBMWP3I5.js";
16
18
  import "./chunk-DVGWF6A2.js";
17
19
  import "./chunk-QFWG2RVL.js";
@@ -20,10 +22,10 @@ import "./chunk-53YJI7JU.js";
20
22
  import "./chunk-5ZQXRPMC.js";
21
23
  import "./chunk-AD6VXAO7.js";
22
24
  import "./chunk-KJ6DWS3K.js";
23
- import "./chunk-FU6OODRZ.js";
24
- import "./chunk-RORY2HMJ.js";
25
- import "./chunk-UP2XBVH5.js";
26
- import "./chunk-VWCE2HSZ.js";
25
+ import "./chunk-NRKGMJYU.js";
26
+ import "./chunk-6XL67VVY.js";
27
+ import "./chunk-UOEDI7RP.js";
28
+ import "./chunk-2HMIRK7W.js";
27
29
  import "./chunk-HTFRRDSF.js";
28
30
  import "./chunk-URD2SLIT.js";
29
31
  import "./chunk-GYIXXQAO.js";
@@ -50,7 +52,7 @@ import "./chunk-H2EOZYMP.js";
50
52
  import "./chunk-5EFIU3OM.js";
51
53
  import "./chunk-PVCDKGR6.js";
52
54
  import "./chunk-OR4L3IB2.js";
53
- import "./chunk-R3K2F5GI.js";
55
+ import "./chunk-B4HP6ZWM.js";
54
56
  import "./chunk-E24EO34J.js";
55
57
  import "./chunk-CCZJ3PYY.js";
56
58
  import "./chunk-QH6YL7VK.js";
@@ -6,10 +6,10 @@ import {
6
6
  createProjectFolder,
7
7
  handleMobileCommand,
8
8
  resolveWithinRoots
9
- } from "./chunk-WHLRAGUQ.js";
10
- import "./chunk-IGV54Q5V.js";
9
+ } from "./chunk-TORR5XBV.js";
10
+ import "./chunk-QTU6AKNJ.js";
11
11
  import "./chunk-RMQZU2YU.js";
12
- import "./chunk-UWPJL22I.js";
12
+ import "./chunk-SLVOAQOY.js";
13
13
  import "./chunk-GJ2RDBRL.js";
14
14
  import "./chunk-BBUVIEZB.js";
15
15
  import "./chunk-ZXSGTGJ6.js";
@@ -17,7 +17,7 @@ import "./chunk-M3LZLQW2.js";
17
17
  import "./chunk-2KIPT4HJ.js";
18
18
  import "./chunk-FVDOXRUD.js";
19
19
  import "./chunk-UAEOTO52.js";
20
- import "./chunk-R3K2F5GI.js";
20
+ import "./chunk-B4HP6ZWM.js";
21
21
  import "./chunk-RDDAZOMU.js";
22
22
  import "./chunk-FQMM2EZ2.js";
23
23
  import "./chunk-Q4Q6D4IY.js";
@@ -2,20 +2,23 @@ import { createRequire as __lunrRequire } from "node:module"; const require = __
2
2
  import {
3
3
  createProjectTrustContext,
4
4
  resolveProjectTrusted
5
- } from "./chunk-OF7PWMG4.js";
5
+ } from "./chunk-7S3T6YEA.js";
6
+ import "./chunk-2HHLJWGD.js";
6
7
  import "./chunk-YPHAIRZT.js";
7
8
  import {
8
- DefaultPackageManager,
9
9
  DefaultResourceLoader
10
- } from "./chunk-F4FLTQKV.js";
10
+ } from "./chunk-YCUZEGJG.js";
11
+ import {
12
+ DefaultPackageManager
13
+ } from "./chunk-LQP3RB67.js";
11
14
  import "./chunk-OBMWP3I5.js";
12
15
  import "./chunk-DVGWF6A2.js";
13
16
  import "./chunk-QFWG2RVL.js";
14
17
  import {
15
18
  SettingsManager
16
- } from "./chunk-RORY2HMJ.js";
17
- import "./chunk-UP2XBVH5.js";
18
- import "./chunk-VWCE2HSZ.js";
19
+ } from "./chunk-6XL67VVY.js";
20
+ import "./chunk-UOEDI7RP.js";
21
+ import "./chunk-2HMIRK7W.js";
19
22
  import {
20
23
  ProjectTrustStore,
21
24
  hasTrustRequiringProjectResources
@@ -28,7 +31,7 @@ import "./chunk-UJOCPOMX.js";
28
31
  import "./chunk-IMLCWLPI.js";
29
32
  import "./chunk-5EFIU3OM.js";
30
33
  import "./chunk-PVCDKGR6.js";
31
- import "./chunk-R3K2F5GI.js";
34
+ import "./chunk-B4HP6ZWM.js";
32
35
  import "./chunk-QH6YL7VK.js";
33
36
  import "./chunk-HMBGROQK.js";
34
37
  import "./chunk-I6R76AG7.js";
@@ -94,7 +94,7 @@ import {
94
94
  validateExecutionAcceptance,
95
95
  validateToolBudgetConfig,
96
96
  writeAtomicJson
97
- } from "./chunk-K5AGHH57.js";
97
+ } from "./chunk-3XPLBUEM.js";
98
98
  import {
99
99
  formatControlNoticeMessage
100
100
  } from "./chunk-OAR4TYZE.js";
@@ -109,9 +109,9 @@ import "./chunk-5ZQXRPMC.js";
109
109
  import "./chunk-AD6VXAO7.js";
110
110
  import {
111
111
  subagentCommunicationEnabled
112
- } from "./chunk-RORY2HMJ.js";
113
- import "./chunk-UP2XBVH5.js";
114
- import "./chunk-VWCE2HSZ.js";
112
+ } from "./chunk-6XL67VVY.js";
113
+ import "./chunk-UOEDI7RP.js";
114
+ import "./chunk-2HMIRK7W.js";
115
115
  import "./chunk-URD2SLIT.js";
116
116
  import {
117
117
  createSubagentCancellation,
@@ -125,7 +125,7 @@ import "./chunk-FVDOXRUD.js";
125
125
  import "./chunk-UJOCPOMX.js";
126
126
  import "./chunk-IMLCWLPI.js";
127
127
  import "./chunk-RQ2Q5IYR.js";
128
- import "./chunk-R3K2F5GI.js";
128
+ import "./chunk-B4HP6ZWM.js";
129
129
  import {
130
130
  keyText
131
131
  } from "./chunk-GS42T6MX.js";
@@ -6695,7 +6695,7 @@ function registerSubagentExtension(pi) {
6695
6695
  try {
6696
6696
  let currentGeneration = generation;
6697
6697
  if (signal?.throwIfAborted(), !executorPromise) {
6698
- let pending = import("./subagent-executor-OTNISDQU.js").then(({ createSubagentExecutor }) => {
6698
+ let pending = import("./subagent-executor-KZZQGAKV.js").then(({ createSubagentExecutor }) => {
6699
6699
  if (generation !== currentGeneration)
6700
6700
  throw new Error("Subagent session changed before initialization");
6701
6701
  return createSubagentExecutor({
@@ -2,16 +2,18 @@
2
2
  import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
3
3
  import {
4
4
  main
5
- } from "./chunk-5Q3EHOHI.js";
6
- import "./chunk-QM43FEAE.js";
7
- import "./chunk-OF7PWMG4.js";
5
+ } from "./chunk-IJIFHRTB.js";
6
+ import "./chunk-WF7PGWRZ.js";
7
+ import "./chunk-7S3T6YEA.js";
8
+ import "./chunk-2HHLJWGD.js";
8
9
  import "./chunk-YPHAIRZT.js";
9
10
  import "./chunk-PL6JKXWI.js";
10
11
  import "./chunk-5ZH3ZFIZ.js";
11
12
  import "./chunk-OVX6X377.js";
12
- import "./chunk-DE2JB6J5.js";
13
+ import "./chunk-VQFSUJJG.js";
13
14
  import "./chunk-CCCN2UCX.js";
14
- import "./chunk-F4FLTQKV.js";
15
+ import "./chunk-YCUZEGJG.js";
16
+ import "./chunk-LQP3RB67.js";
15
17
  import "./chunk-OBMWP3I5.js";
16
18
  import "./chunk-DVGWF6A2.js";
17
19
  import "./chunk-QFWG2RVL.js";
@@ -20,12 +22,12 @@ import "./chunk-53YJI7JU.js";
20
22
  import "./chunk-5ZQXRPMC.js";
21
23
  import "./chunk-AD6VXAO7.js";
22
24
  import "./chunk-KJ6DWS3K.js";
23
- import "./chunk-FU6OODRZ.js";
25
+ import "./chunk-NRKGMJYU.js";
24
26
  import {
25
27
  configureHttpDispatcher
26
- } from "./chunk-RORY2HMJ.js";
27
- import "./chunk-UP2XBVH5.js";
28
- import "./chunk-VWCE2HSZ.js";
28
+ } from "./chunk-6XL67VVY.js";
29
+ import "./chunk-UOEDI7RP.js";
30
+ import "./chunk-2HMIRK7W.js";
29
31
  import "./chunk-HTFRRDSF.js";
30
32
  import "./chunk-URD2SLIT.js";
31
33
  import "./chunk-GYIXXQAO.js";
@@ -52,7 +54,7 @@ import "./chunk-H2EOZYMP.js";
52
54
  import "./chunk-5EFIU3OM.js";
53
55
  import "./chunk-PVCDKGR6.js";
54
56
  import "./chunk-OR4L3IB2.js";
55
- import "./chunk-R3K2F5GI.js";
57
+ import "./chunk-B4HP6ZWM.js";
56
58
  import "./chunk-E24EO34J.js";
57
59
  import "./chunk-CCZJ3PYY.js";
58
60
  import "./chunk-QH6YL7VK.js";
@@ -1,17 +1,17 @@
1
1
  import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
2
  import {
3
3
  bindRuntimeBridges
4
- } from "./chunk-FU6OODRZ.js";
5
- import "./chunk-RORY2HMJ.js";
6
- import "./chunk-UP2XBVH5.js";
7
- import "./chunk-VWCE2HSZ.js";
4
+ } from "./chunk-NRKGMJYU.js";
5
+ import "./chunk-6XL67VVY.js";
6
+ import "./chunk-UOEDI7RP.js";
7
+ import "./chunk-2HMIRK7W.js";
8
8
  import "./chunk-URD2SLIT.js";
9
9
  import "./chunk-4EULYYR4.js";
10
10
  import "./chunk-UJOCPOMX.js";
11
11
  import "./chunk-2TKODGBZ.js";
12
12
  import "./chunk-2MI5OPMN.js";
13
13
  import "./chunk-IMLCWLPI.js";
14
- import "./chunk-R3K2F5GI.js";
14
+ import "./chunk-B4HP6ZWM.js";
15
15
  import "./chunk-FQMM2EZ2.js";
16
16
  import "./chunk-Q4Q6D4IY.js";
17
17
  import "./chunk-BRJX2PRC.js";
@@ -14,7 +14,7 @@ import {
14
14
  startGatewayService,
15
15
  startupSpec,
16
16
  stopGatewayService
17
- } from "./chunk-UWPJL22I.js";
17
+ } from "./chunk-SLVOAQOY.js";
18
18
  import "./chunk-FQMM2EZ2.js";
19
19
  import "./chunk-Q4Q6D4IY.js";
20
20
  import "./chunk-BRJX2PRC.js";
@@ -8,13 +8,13 @@ import {
8
8
  bindSubagentCommunicationSetting,
9
9
  parseSkillTagCharacter,
10
10
  subagentCommunicationEnabled
11
- } from "./chunk-RORY2HMJ.js";
12
- import "./chunk-UP2XBVH5.js";
13
- import "./chunk-VWCE2HSZ.js";
11
+ } from "./chunk-6XL67VVY.js";
12
+ import "./chunk-UOEDI7RP.js";
13
+ import "./chunk-2HMIRK7W.js";
14
14
  import "./chunk-URD2SLIT.js";
15
15
  import "./chunk-UJOCPOMX.js";
16
16
  import "./chunk-IMLCWLPI.js";
17
- import "./chunk-R3K2F5GI.js";
17
+ import "./chunk-B4HP6ZWM.js";
18
18
  import "./chunk-FQMM2EZ2.js";
19
19
  import "./chunk-Q4Q6D4IY.js";
20
20
  import "./chunk-BRJX2PRC.js";
@@ -0,0 +1,214 @@
1
+ import { createRequire as __lunrRequire } from "node:module"; const require = __lunrRequire(import.meta.url);
2
+ import {
3
+ readSecret
4
+ } from "./chunk-H4K3JDRB.js";
5
+ import {
6
+ createPairingStore
7
+ } from "./chunk-RMQZU2YU.js";
8
+ import {
9
+ configureStartup,
10
+ loadServiceSettings,
11
+ startGatewayService
12
+ } from "./chunk-SLVOAQOY.js";
13
+ import {
14
+ createStartupTui,
15
+ showStartupInput,
16
+ startStartupTui
17
+ } from "./chunk-2HHLJWGD.js";
18
+ import "./chunk-YPHAIRZT.js";
19
+ import "./chunk-LQP3RB67.js";
20
+ import "./chunk-OBMWP3I5.js";
21
+ import "./chunk-DVGWF6A2.js";
22
+ import {
23
+ SettingsManager
24
+ } from "./chunk-6XL67VVY.js";
25
+ import "./chunk-UOEDI7RP.js";
26
+ import {
27
+ loadInstallFeatures,
28
+ saveInstallFeatures
29
+ } from "./chunk-2HMIRK7W.js";
30
+ import "./chunk-URD2SLIT.js";
31
+ import "./chunk-CGBXPL3E.js";
32
+ import "./chunk-UJOCPOMX.js";
33
+ import "./chunk-IMLCWLPI.js";
34
+ import "./chunk-5EFIU3OM.js";
35
+ import {
36
+ loadGatewayConfig,
37
+ saveGatewayConfig
38
+ } from "./chunk-B4HP6ZWM.js";
39
+ import "./chunk-QH6YL7VK.js";
40
+ import "./chunk-HMBGROQK.js";
41
+ import "./chunk-I6R76AG7.js";
42
+ import "./chunk-6VYZ5UFP.js";
43
+ import "./chunk-GS42T6MX.js";
44
+ import {
45
+ getSelectListTheme,
46
+ theme
47
+ } from "./chunk-RDDAZOMU.js";
48
+ import "./chunk-FQMM2EZ2.js";
49
+ import "./chunk-Q4Q6D4IY.js";
50
+ import "./chunk-BRJX2PRC.js";
51
+
52
+ // packages/coding-agent/dist/gateway/setup.js
53
+ import { existsSync, realpathSync, statSync } from "node:fs";
54
+ import { resolve } from "node:path";
55
+ import { Container, SelectList, Spacer, Text } from "@ashx-j/lunr-tui";
56
+ async function validateBotToken(platform, token) {
57
+ let url = platform === "telegram" ? `https://api.telegram.org/bot${token}/getMe` : "https://discord.com/api/v10/users/@me", response;
58
+ try {
59
+ response = await fetch(url, {
60
+ headers: platform === "discord" ? { Authorization: `Bot ${token}` } : {},
61
+ signal: AbortSignal.timeout(15e3)
62
+ });
63
+ } catch {
64
+ throw new Error(`${platform}: could not reach the bot API. Check your connection and try again.`);
65
+ }
66
+ if (!response.ok)
67
+ throw new Error(`${platform}: token check failed with HTTP ${response.status}. Check the token and bot permissions.`);
68
+ let value = await response.json();
69
+ if (!value || typeof value != "object")
70
+ throw new Error(`${platform}: unexpected bot API response.`);
71
+ let user = platform === "telegram" && "result" in value ? value.result : value;
72
+ if (!user || typeof user != "object" || !("id" in user))
73
+ throw new Error(`${platform}: bot identity was missing.`);
74
+ return "username" in user && typeof user.username == "string" ? user.username : String(user.id);
75
+ }
76
+ async function selectSetupOption(settings, title, options, initial) {
77
+ let ui = await createStartupTui(settings);
78
+ try {
79
+ return await new Promise((resolve2) => {
80
+ let list = new SelectList(options.map((option, index) => ({ label: option.label, value: String(index) })), 8, getSelectListTheme());
81
+ list.setSelectedIndex(Math.max(0, options.findIndex((option) => option.value === initial))), list.onSelect = (item) => resolve2(options[Number(item.value)].value), list.onCancel = () => resolve2(void 0);
82
+ let panel = new Container();
83
+ panel.addChild(new Text(theme.fg("accent", title), 1, 0)), panel.addChild(new Spacer(1)), panel.addChild(list), panel.addChild(new Text("Up/Down to navigate, Enter to select, Esc to cancel", 1, 1)), ui.addChild(panel), ui.setFocus(list), startStartupTui(ui, settings);
84
+ });
85
+ } finally {
86
+ ui.clear(), ui.requestRender(), await new Promise((resolve2) => setTimeout(resolve2, 25)), ui.stop();
87
+ }
88
+ }
89
+ async function setupGateway() {
90
+ if (!process.stdin.isTTY || !process.stdout.isTTY)
91
+ throw new Error("Run lunr gateway setup in a terminal. Bot tokens are entered privately, not as command arguments.");
92
+ let uiSettings = SettingsManager.inMemory({ theme: "moon" }), cancelled = new Error("Setup cancelled."), saved = !1, choose = async (title, options, initial) => {
93
+ let value = await selectSetupOption(uiSettings, title, options, initial);
94
+ if (value === void 0)
95
+ throw cancelled;
96
+ return value;
97
+ }, ask = async (title) => {
98
+ let value = await showStartupInput(uiSettings, title);
99
+ if (value === void 0)
100
+ throw cancelled;
101
+ return value.trim();
102
+ }, cfg = loadGatewayConfig();
103
+ try {
104
+ console.log(`Set up lunR on your phone
105
+ Your computer must stay awake and connected to the internet.
106
+ `);
107
+ let choice = await choose("Connect a chat platform", [
108
+ { label: "Telegram", value: "telegram" },
109
+ { label: "Discord", value: "discord" },
110
+ { label: "Both", value: "both" }
111
+ ], cfg.discord.enabled ? cfg.telegram.enabled ? "both" : "discord" : "telegram");
112
+ for (let platform of ["telegram", "discord"]) {
113
+ if (choice !== platform && choice !== "both")
114
+ continue;
115
+ console.log(platform === "telegram" ? `
116
+ Telegram
117
+ 1. Open https://t.me/BotFather and send /newbot.
118
+ 2. Follow its prompts and copy the bot token.
119
+ 3. Open your new bot and send /whoami. If your ID was not configured, it sends a pairing code for local approval.
120
+ Guide: https://core.telegram.org/bots/tutorial` : `
121
+ Discord
122
+ 1. Open https://discord.com/developers/applications and create an application.
123
+ 2. Open Bot, create or reset its token, and enable Message Content Intent for ordinary chat.
124
+ 3. Under Installation, add bot and applications.commands scopes. Grant View Channels, Send Messages, Read Message History, Attach Files, and thread permissions if needed.
125
+ 4. Use the install link to add your bot. In Discord, enable Developer Mode and copy your user ID.
126
+ Guide: https://docs.discord.com/developers/quick-start/getting-started`);
127
+ let token = cfg[platform].token;
128
+ if ((!token || await choose(`${platform} bot token`, [
129
+ { label: "Keep the saved token", value: !1 },
130
+ { label: "Enter a different token", value: !0 }
131
+ ])) && (token = (await readSecret(`${platform} bot token`))?.trim()), !token)
132
+ throw new Error("No token entered. Existing configuration was not changed.");
133
+ console.log(`Connected bot: ${await validateBotToken(platform, token)}`), cfg[platform].token = token, cfg[platform].enabled = !0, cfg.owners ??= { telegram: [], discord: [] };
134
+ let ownerChoice = await choose(`${platform} owner access`, [
135
+ ...cfg.owners[platform].length ? [{ label: "Keep the saved owners", value: "keep" }] : [],
136
+ { label: "Enter my user ID", value: "enter" },
137
+ { label: "Approve a pairing code later on this computer", value: "later" }
138
+ ]), owner = ownerChoice === "enter" ? await ask(`Your ${platform} user ID`) : "";
139
+ if (ownerChoice === "enter" && !/^\d+$/.test(owner))
140
+ throw new Error("User IDs contain digits only.");
141
+ owner && (cfg.owners[platform] = [.../* @__PURE__ */ new Set([...cfg.owners[platform], owner])], cfg[platform].allowedUsers = [.../* @__PURE__ */ new Set([...cfg[platform].allowedUsers, owner])]);
142
+ }
143
+ let folders = [.../* @__PURE__ */ new Set([cfg.defaultProject, ...cfg.projectRoots ?? [], process.cwd()])].filter((folder2) => !!folder2), root = await choose("Default project", [
144
+ ...folders.map((value) => ({ label: value, value })),
145
+ { label: "Enter another folder path", value: null }
146
+ ]) ?? await ask("Project folder path");
147
+ if (!root)
148
+ throw new Error("Enter a project folder. Nothing saved.");
149
+ let path = resolve(root);
150
+ if (!existsSync(path) || !statSync(path).isDirectory())
151
+ throw new Error("That project folder does not exist.");
152
+ cfg.defaultProject = realpathSync(path), cfg.projectRoots = [.../* @__PURE__ */ new Set([...cfg.projectRoots ?? [], cfg.defaultProject])];
153
+ let startup = await choose("Automatic startup", [
154
+ { label: "Off. Start manually", value: "off" },
155
+ { label: "When I sign in", value: "login" },
156
+ { label: "When the computer boots", value: "boot" }
157
+ ], loadServiceSettings().startup);
158
+ startup === "boot" && console.log("Boot startup may require administrator permission or OS-managed account credentials. lunR does not save your account password.");
159
+ let { ModelRuntime } = await import("./model-runtime-OO5HFLWE.js"), models = await (await ModelRuntime.create({ allowModelNetwork: !1 })).getAvailable();
160
+ if (!models.length)
161
+ throw new Error("No saved model credentials found. Open lunr locally and use /login, then rerun gateway setup. Nothing saved.");
162
+ let settings = SettingsManager.create(cfg.defaultProject), providers = [...new Set(models.map((model2) => model2.provider))], provider = await choose("Model provider", providers.map((value) => ({ label: value, value })), settings.getDefaultProvider()), choices = models.filter((model2) => model2.provider === provider), model = await choose("Model", choices.map((value) => ({ label: value.id, value })), choices.find((model2) => model2.id === settings.getDefaultModel()));
163
+ if (!await choose(`Save gateway settings?
164
+ Project: ${cfg.defaultProject}
165
+ Model: ${model.provider}/${model.id}
166
+ Startup: ${startup}`, [
167
+ { label: "Save", value: !0 },
168
+ { label: "Cancel", value: !1 }
169
+ ])) {
170
+ console.log("Cancelled. Nothing saved.");
171
+ return;
172
+ }
173
+ saveGatewayConfig(cfg), saved = !0, settings.setDefaultModelAndProvider(model.provider, model.id), await settings.flush();
174
+ let features = loadInstallFeatures();
175
+ features.features["chat-platforms"] = {
176
+ enabled: !0,
177
+ options: {
178
+ ...features.features["chat-platforms"]?.options,
179
+ autostart: loadServiceSettings().startup !== "off"
180
+ }
181
+ }, saveInstallFeatures(features);
182
+ try {
183
+ await configureStartup(startup);
184
+ } finally {
185
+ features.features["chat-platforms"].options.autostart = loadServiceSettings().startup !== "off", saveInstallFeatures(features);
186
+ }
187
+ await choose("Start the gateway now?", [
188
+ { label: "Start now", value: !0 },
189
+ { label: "Not now", value: !1 }
190
+ ]) && console.log(await startGatewayService()), console.log(`
191
+ If you entered your user ID, send /start to your bot, then send a task. Otherwise send /whoami, then on this computer run:
192
+ lunr gateway pair approve <telegram|discord> <code> --owner
193
+ Ordinary pairing without --owner does not grant project or TUI access.`);
194
+ } catch (error) {
195
+ if (error !== cancelled)
196
+ throw error;
197
+ console.log(saved ? "Settings saved. Start the gateway with lunr gateway start." : "Cancelled. Nothing saved.");
198
+ }
199
+ }
200
+ function approveGatewayOwner(platform, code) {
201
+ if (platform !== "telegram" && platform !== "discord")
202
+ throw new Error("Choose telegram or discord.");
203
+ let user = createPairingStore().approve(platform, code);
204
+ if (!user)
205
+ throw new Error("Pairing code is invalid or expired.");
206
+ let cfg = loadGatewayConfig();
207
+ return cfg.owners ??= { telegram: [], discord: [] }, cfg.owners[platform] = [.../* @__PURE__ */ new Set([...cfg.owners[platform], user])], cfg[platform].allowedUsers = [.../* @__PURE__ */ new Set([...cfg[platform].allowedUsers, user])], saveGatewayConfig(cfg), `Approved ${platform} owner ${user}. Owner access includes local projects and TUI session history.`;
208
+ }
209
+ export {
210
+ approveGatewayOwner,
211
+ selectSetupOption,
212
+ setupGateway,
213
+ validateBotToken
214
+ };
@@ -179,7 +179,7 @@ import {
179
179
  writeNestedControlRequest,
180
180
  writeNestedEvent,
181
181
  writePrivateAtomicJson
182
- } from "./chunk-K5AGHH57.js";
182
+ } from "./chunk-3XPLBUEM.js";
183
183
  import {
184
184
  DEFAULT_CONTROL_CONFIG,
185
185
  buildControlEvent,
@@ -201,9 +201,9 @@ import "./chunk-5ZQXRPMC.js";
201
201
  import "./chunk-AD6VXAO7.js";
202
202
  import {
203
203
  subagentCommunicationEnabled
204
- } from "./chunk-RORY2HMJ.js";
205
- import "./chunk-UP2XBVH5.js";
206
- import "./chunk-VWCE2HSZ.js";
204
+ } from "./chunk-6XL67VVY.js";
205
+ import "./chunk-UOEDI7RP.js";
206
+ import "./chunk-2HMIRK7W.js";
207
207
  import "./chunk-URD2SLIT.js";
208
208
  import "./chunk-ZXSGTGJ6.js";
209
209
  import "./chunk-M3LZLQW2.js";
@@ -217,7 +217,7 @@ import "./chunk-UJOCPOMX.js";
217
217
  import "./chunk-IMLCWLPI.js";
218
218
  import "./chunk-UAEOTO52.js";
219
219
  import "./chunk-RQ2Q5IYR.js";
220
- import "./chunk-R3K2F5GI.js";
220
+ import "./chunk-B4HP6ZWM.js";
221
221
  import "./chunk-GS42T6MX.js";
222
222
  import "./chunk-RDDAZOMU.js";
223
223
  import "./chunk-FQMM2EZ2.js";
@@ -6,13 +6,13 @@ import {
6
6
  import "./chunk-DVGWF6A2.js";
7
7
  import {
8
8
  SettingsManager
9
- } from "./chunk-RORY2HMJ.js";
10
- import "./chunk-UP2XBVH5.js";
11
- import "./chunk-VWCE2HSZ.js";
9
+ } from "./chunk-6XL67VVY.js";
10
+ import "./chunk-UOEDI7RP.js";
11
+ import "./chunk-2HMIRK7W.js";
12
12
  import "./chunk-URD2SLIT.js";
13
13
  import "./chunk-UJOCPOMX.js";
14
14
  import "./chunk-IMLCWLPI.js";
15
- import "./chunk-R3K2F5GI.js";
15
+ import "./chunk-B4HP6ZWM.js";
16
16
  import {
17
17
  APP_NAME,
18
18
  NPM_CLI_PACKAGE,
package/docs/features.md CHANGED
@@ -87,7 +87,7 @@ Schedule examples: `every 30m`, `every 2h`, `every 1d`, a duration one-shot (`30
87
87
 
88
88
  ## Gateway for Telegram and Discord
89
89
 
90
- Run `lunr gateway setup` in your terminal. It explains bot creation and permissions, masks token entry, validates the bot identity, and asks for your user ID, project roots, saved model, and startup preference. Log in to a model provider locally with `/login` first. Setup does not create model-provider accounts.
90
+ Run `lunr gateway setup` in your terminal. Use Up/Down and Enter to choose the platform, saved token and owner options, default project, startup preference, provider, and model. Long lists scroll; Escape cancels. Only a new bot token, user ID, or custom folder path needs typing. Token entry stays hidden. Setup explains bot creation, validates the bot identity, and asks before saving or starting the gateway. Log in to a model provider locally with `/login` first. Setup does not create model-provider accounts.
91
91
 
92
92
  Telegram uses BotFather and long polling. Discord needs the bot and `applications.commands` installation scopes. Enable Message Content Intent for ordinary text messages. GuildMembers intent is not required. Discord registers native slash commands; Telegram registers a command menu. Both platforms use buttons for selections and approvals.
93
93
 
@@ -127,11 +127,11 @@ lunr gateway pair approve discord <code> --owner
127
127
  lunr gateway pair list
128
128
  ```
129
129
 
130
- Owner access includes local projects and saved TUI conversation history. Ordinary pairing, group access, and Discord roles do not grant it. Project browsing, cross-project sessions, permission changes, and file downloads require an explicitly configured owner in a private DM. Removing owner access invalidates later owner actions and approvals.
130
+ Owner access includes local projects and saved TUI conversation history. Ordinary `lunr gateway pair approve <platform> <code>` grants chat access only; add `--owner` locally to grant owner access. Ordinary pairing, group access, and Discord roles do not grant it. Project browsing, cross-project sessions, permission changes, and file downloads require an explicitly configured owner in a private DM. Removing owner access invalidates later owner actions and approvals.
131
131
 
132
132
  ### Projects and mobile controls
133
133
 
134
- Use `/project` to browse approved roots, open child folders, go back, select a folder, or create one. `/project <path>` opens the browser at an approved path. The gateway remembers the selected working directory for that conversation. Project instruction files, skills, tools, and trust checks use that directory rather than the daemon's launch directory.
134
+ The owner can send `/start` to check setup before the first task, `/model` to select an authenticated model before a task, and a normal message immediately when setup's default project remains approved. With multiple approved roots and no explicit default, choose `/project` first. A paired non-owner without a project must ask the local owner to configure access; `/project` and `/continue` are owner-only. Use `/project` to browse approved roots, open child folders, go back, select a folder, or create one. `/project <path>` opens the browser at an approved path. The gateway remembers the selected working directory for that conversation. Project instruction files, skills, tools, and trust checks use that directory rather than the daemon's launch directory.
135
135
 
136
136
  **The selected project is a working directory, not a shell sandbox.** Shell commands and tools can access other locations allowed by your OS account. The folder browser and `/download` check their own path boundaries, including symlinks.
137
137
 
@@ -145,7 +145,7 @@ Use `/project` to browse approved roots, open child folders, go back, select a f
145
145
 
146
146
  Upload images or documents in chat. Images reach the model as images; documents are saved under the project's `.lunr/uploads/` directory and passed to the model as paths. `/download <project-relative path>` sends a file back. Files are limited to 8 MB; common credential filenames are blocked from download. This filename check is not a content-based secret scanner. Only send files you intend to share with the chat platform.
147
147
 
148
- Extension notices and background results reach the originating conversation even after the foreground answer. Undelivered notices persist for retry. Tool approvals, pickers, and text questions do not become model prompts; they expire when the session changes. Terminal-only custom screens report that limitation rather than pretending they accepted a selection.
148
+ Foreground replies, follow-up answers, errors, and extension notices enter a disk-backed outbox before sending. Successfully sent chunks are acknowledged in order; failed sends retry up to five times per destination without blocking other chats. A failed final preview edit falls back to a full reply. Permanently failed deliveries remain in `gateway-outbox.json` with `failed: true` and an error in gateway logs for diagnosis; they do not retry forever. A send can still reach the platform just before the process exits without recording its acknowledgement, so a restart can repeat that chunk. Existing outbox entries without the newer fields remain eligible for delivery. Session changes cancel stale interactive prompts and notices, but finished assistant results still reach their originating chat when authorized. Revoked access prevents delivery. Discord role-only authorization needs a fresh inbound role check after restart before it can authorize new sends; an old stored role assertion cannot authorize outbox replay. Tool approvals, pickers, and text questions do not become model prompts; they expire when the session changes. Terminal-only custom screens report that limitation rather than pretending they accepted a selection.
149
149
 
150
150
  ### Continue between desktop and phone
151
151