@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.
- package/CHANGELOG.md +9 -1
- package/dist/gateway/adapters/discord.d.ts.map +1 -1
- package/dist/gateway/adapters/discord.js +2 -7
- package/dist/gateway/adapters/discord.js.map +1 -1
- package/dist/gateway/adapters/telegram.d.ts.map +1 -1
- package/dist/gateway/adapters/telegram.js +7 -0
- package/dist/gateway/adapters/telegram.js.map +1 -1
- package/dist/gateway/agent-bridge.d.ts +4 -1
- package/dist/gateway/agent-bridge.d.ts.map +1 -1
- package/dist/gateway/agent-bridge.js +57 -17
- package/dist/gateway/agent-bridge.js.map +1 -1
- package/dist/gateway/buttons.d.ts.map +1 -1
- package/dist/gateway/buttons.js +29 -19
- package/dist/gateway/buttons.js.map +1 -1
- package/dist/gateway/commands.d.ts +2 -0
- package/dist/gateway/commands.d.ts.map +1 -1
- package/dist/gateway/commands.js +39 -18
- package/dist/gateway/commands.js.map +1 -1
- package/dist/gateway/config.d.ts +1 -0
- package/dist/gateway/config.d.ts.map +1 -1
- package/dist/gateway/config.js +2 -0
- package/dist/gateway/config.js.map +1 -1
- package/dist/gateway/cron.d.ts +1 -1
- package/dist/gateway/cron.d.ts.map +1 -1
- package/dist/gateway/cron.js +2 -2
- package/dist/gateway/cron.js.map +1 -1
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +26 -26
- package/dist/gateway/index.js.map +1 -1
- package/dist/gateway/mobile-commands.d.ts.map +1 -1
- package/dist/gateway/mobile-commands.js +3 -3
- package/dist/gateway/mobile-commands.js.map +1 -1
- package/dist/gateway/presenter.d.ts +12 -1
- package/dist/gateway/presenter.d.ts.map +1 -1
- package/dist/gateway/presenter.js +146 -48
- package/dist/gateway/presenter.js.map +1 -1
- package/dist/gateway/router.d.ts +5 -5
- package/dist/gateway/router.d.ts.map +1 -1
- package/dist/gateway/router.js +95 -41
- package/dist/gateway/router.js.map +1 -1
- package/dist/gateway/service.d.ts.map +1 -1
- package/dist/gateway/service.js +13 -4
- package/dist/gateway/service.js.map +1 -1
- package/dist/gateway/setup.d.ts +5 -0
- package/dist/gateway/setup.d.ts.map +1 -1
- package/dist/gateway/setup.js +98 -42
- package/dist/gateway/setup.js.map +1 -1
- package/dist/gateway/stream.d.ts +6 -5
- package/dist/gateway/stream.d.ts.map +1 -1
- package/dist/gateway/stream.js +24 -11
- package/dist/gateway/stream.js.map +1 -1
- package/dist/node-runtime/{agent-session-services-IEF7LQWD.js → agent-session-services-YXXFCP5J.js} +7 -6
- package/dist/node-runtime/{builtin-extensions-EBAWTH4M.js → builtin-extensions-ZLAX7TUH.js} +1 -1
- package/dist/node-runtime/{chunk-OF7PWMG4.js → chunk-2HHLJWGD.js} +3 -87
- package/dist/node-runtime/{chunk-VWCE2HSZ.js → chunk-2HMIRK7W.js} +4 -4
- package/dist/node-runtime/{chunk-K5AGHH57.js → chunk-3XPLBUEM.js} +1 -1
- package/dist/node-runtime/{chunk-RORY2HMJ.js → chunk-6XL67VVY.js} +1 -1
- package/dist/node-runtime/chunk-7S3T6YEA.js +97 -0
- package/dist/node-runtime/{chunk-R3K2F5GI.js → chunk-B4HP6ZWM.js} +2 -0
- package/dist/node-runtime/{chunk-YVI6L6LU.js → chunk-E4D3IGP2.js} +38 -22
- package/dist/node-runtime/{chunk-5Q3EHOHI.js → chunk-IJIFHRTB.js} +14 -12
- package/dist/node-runtime/{chunk-Y73WPE6S.js → chunk-KWIYUUZK.js} +63 -37
- package/dist/node-runtime/{chunk-F4FLTQKV.js → chunk-LQP3RB67.js} +184 -1527
- package/dist/node-runtime/{chunk-FU6OODRZ.js → chunk-NRKGMJYU.js} +1 -1
- package/dist/node-runtime/{chunk-IGV54Q5V.js → chunk-QTU6AKNJ.js} +128 -63
- package/dist/node-runtime/{chunk-L3LX4SNR.js → chunk-RC7DMV45.js} +5 -5
- package/dist/node-runtime/{chunk-UWPJL22I.js → chunk-SLVOAQOY.js} +15 -4
- package/dist/node-runtime/{chunk-WHLRAGUQ.js → chunk-TORR5XBV.js} +6 -6
- package/dist/node-runtime/{chunk-UP2XBVH5.js → chunk-UOEDI7RP.js} +1 -1
- package/dist/node-runtime/{chunk-DE2JB6J5.js → chunk-VQFSUJJG.js} +2 -2
- package/dist/node-runtime/{chunk-QM43FEAE.js → chunk-WF7PGWRZ.js} +3 -3
- package/dist/node-runtime/chunk-YCUZEGJG.js +1361 -0
- package/dist/node-runtime/{command-7BG7VVTS.js → command-6WDOYKS6.js} +5 -5
- package/dist/node-runtime/{commands-QFDKNQTL.js → commands-QC6VUZJQ.js} +5 -5
- package/dist/node-runtime/{config-RORQUQFG.js → config-D4QUPAHX.js} +1 -1
- package/dist/node-runtime/{gateway-TWR3N65G.js → gateway-INAYBF4Q.js} +134 -78
- package/dist/node-runtime/index.js +15 -12
- package/dist/node-runtime/{install-cli-VAP6KBFN.js → install-cli-KL4UDDAD.js} +3 -3
- package/dist/node-runtime/{interactive-mode-6J5VZ2TT.js → interactive-mode-Z5M7WYYZ.js} +8 -7
- package/dist/node-runtime/{lunr-browser-J5ZZYVGM.js → lunr-browser-IR7TL3J7.js} +3 -3
- package/dist/node-runtime/{lunr-cron-CXOL37AL.js → lunr-cron-LWIZJM2N.js} +5 -5
- package/dist/node-runtime/main.js +12 -10
- package/dist/node-runtime/{mobile-commands-VTBM5DSZ.js → mobile-commands-J7OJEKFO.js} +4 -4
- package/dist/node-runtime/{package-manager-cli-ZLW5DZXF.js → package-manager-cli-VYZM5WHN.js} +10 -7
- package/dist/node-runtime/{pi-subagents-XPCLLKIM.js → pi-subagents-DNY7EAIG.js} +6 -6
- package/dist/node-runtime/rpc-entry.js +12 -10
- package/dist/node-runtime/{runtime-bridges-QYXUX2TG.js → runtime-bridges-VRDDR73P.js} +5 -5
- package/dist/node-runtime/{service-ISSP6VHE.js → service-MDQIPQ26.js} +1 -1
- package/dist/node-runtime/{settings-manager-WCQDUVQB.js → settings-manager-J4SPQPDJ.js} +4 -4
- package/dist/node-runtime/setup-CQ2NLVK5.js +214 -0
- package/dist/node-runtime/{subagent-executor-OTNISDQU.js → subagent-executor-KZZQGAKV.js} +5 -5
- package/dist/node-runtime/{update-cli-VBR2777K.js → update-cli-GTFJC7XK.js} +4 -4
- package/docs/features.md +4 -4
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +4 -4
- 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-
|
|
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-
|
|
16
|
+
import "./chunk-VQFSUJJG.js";
|
|
17
17
|
import "./chunk-CCCN2UCX.js";
|
|
18
|
-
import "./chunk-
|
|
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-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-UOEDI7RP.js";
|
|
9
|
+
import "./chunk-2HMIRK7W.js";
|
|
10
10
|
import "./chunk-CSFI6YXL.js";
|
|
11
|
-
import "./chunk-
|
|
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-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-KWIYUUZK.js";
|
|
17
|
+
import "./chunk-QTU6AKNJ.js";
|
|
18
18
|
import "./chunk-RMQZU2YU.js";
|
|
19
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
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-
|
|
13
|
+
import "./chunk-VQFSUJJG.js";
|
|
13
14
|
import "./chunk-CCCN2UCX.js";
|
|
14
|
-
import "./chunk-
|
|
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-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-TORR5XBV.js";
|
|
10
|
+
import "./chunk-QTU6AKNJ.js";
|
|
11
11
|
import "./chunk-RMQZU2YU.js";
|
|
12
|
-
import "./chunk-
|
|
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-
|
|
20
|
+
import "./chunk-B4HP6ZWM.js";
|
|
21
21
|
import "./chunk-RDDAZOMU.js";
|
|
22
22
|
import "./chunk-FQMM2EZ2.js";
|
|
23
23
|
import "./chunk-Q4Q6D4IY.js";
|
package/dist/node-runtime/{package-manager-cli-ZLW5DZXF.js → package-manager-cli-VYZM5WHN.js}
RENAMED
|
@@ -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-
|
|
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-
|
|
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-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
113
|
-
import "./chunk-
|
|
114
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
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-
|
|
13
|
+
import "./chunk-VQFSUJJG.js";
|
|
13
14
|
import "./chunk-CCCN2UCX.js";
|
|
14
|
-
import "./chunk-
|
|
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-
|
|
25
|
+
import "./chunk-NRKGMJYU.js";
|
|
24
26
|
import {
|
|
25
27
|
configureHttpDispatcher
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
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-
|
|
14
|
+
import "./chunk-B4HP6ZWM.js";
|
|
15
15
|
import "./chunk-FQMM2EZ2.js";
|
|
16
16
|
import "./chunk-Q4Q6D4IY.js";
|
|
17
17
|
import "./chunk-BRJX2PRC.js";
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
bindSubagentCommunicationSetting,
|
|
9
9
|
parseSkillTagCharacter,
|
|
10
10
|
subagentCommunicationEnabled
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
205
|
-
import "./chunk-
|
|
206
|
-
import "./chunk-
|
|
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-
|
|
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-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
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-
|
|
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.
|
|
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
|
-
|
|
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
|
|