opencode-telegram-bridge 1.1.0 → 1.2.0
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/dist/cli.js +51 -12
- package/dist/cli.js.map +1 -1
- package/docs/installation.md +1 -1
- package/docs/systemd.md +2 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -4,6 +4,7 @@ import os from "node:os";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import readline from "node:readline/promises";
|
|
6
6
|
import { stdin, stdout } from "node:process";
|
|
7
|
+
import { fileURLToPath } from "node:url";
|
|
7
8
|
import { runBot } from "./run.js";
|
|
8
9
|
const die = (message) => {
|
|
9
10
|
console.error(message);
|
|
@@ -19,14 +20,19 @@ const runCommand = (command, args) => {
|
|
|
19
20
|
}
|
|
20
21
|
};
|
|
21
22
|
const resolveExecStart = () => {
|
|
22
|
-
const
|
|
23
|
+
const nodePath = process.execPath;
|
|
24
|
+
const cliPath = fileURLToPath(import.meta.url);
|
|
25
|
+
return { nodePath, cliPath };
|
|
26
|
+
};
|
|
27
|
+
const resolveOpencodePath = () => {
|
|
28
|
+
const result = spawnSync("sh", ["-c", "command -v opencode"], {
|
|
23
29
|
encoding: "utf8",
|
|
24
30
|
});
|
|
25
|
-
const
|
|
26
|
-
if (!
|
|
27
|
-
throw new Error("opencode
|
|
31
|
+
const opencodePath = result.stdout.trim();
|
|
32
|
+
if (!opencodePath || result.status !== 0) {
|
|
33
|
+
throw new Error("opencode CLI not found in PATH");
|
|
28
34
|
}
|
|
29
|
-
return
|
|
35
|
+
return opencodePath;
|
|
30
36
|
};
|
|
31
37
|
const readAnswer = async (prompt, options = {}) => {
|
|
32
38
|
const rl = readline.createInterface({ input: stdin, output: stdout });
|
|
@@ -60,7 +66,7 @@ const writeUnitFile = (unitPath, content) => {
|
|
|
60
66
|
fs.mkdirSync(path.dirname(unitPath), { recursive: true });
|
|
61
67
|
fs.writeFileSync(unitPath, content, "utf8");
|
|
62
68
|
};
|
|
63
|
-
const buildUnitFile = (envPath,
|
|
69
|
+
const buildUnitFile = (envPath, nodePath, cliPath) => `
|
|
64
70
|
[Unit]
|
|
65
71
|
Description=OpenCode Telegram Bridge
|
|
66
72
|
After=network-online.target
|
|
@@ -69,7 +75,23 @@ Wants=network-online.target
|
|
|
69
75
|
[Service]
|
|
70
76
|
Type=simple
|
|
71
77
|
EnvironmentFile=${envPath}
|
|
72
|
-
ExecStart=${
|
|
78
|
+
ExecStart=${nodePath} ${cliPath}
|
|
79
|
+
Restart=on-failure
|
|
80
|
+
RestartSec=3
|
|
81
|
+
|
|
82
|
+
[Install]
|
|
83
|
+
WantedBy=default.target
|
|
84
|
+
`;
|
|
85
|
+
const buildOpencodeUnitFile = (opencodePath, nodeDir) => `
|
|
86
|
+
[Unit]
|
|
87
|
+
Description=OpenCode Server
|
|
88
|
+
After=network-online.target
|
|
89
|
+
Wants=network-online.target
|
|
90
|
+
|
|
91
|
+
[Service]
|
|
92
|
+
Type=simple
|
|
93
|
+
Environment=PATH=${nodeDir}:/usr/local/bin:/usr/bin:/bin
|
|
94
|
+
ExecStart=${opencodePath} serve
|
|
73
95
|
Restart=on-failure
|
|
74
96
|
RestartSec=3
|
|
75
97
|
|
|
@@ -89,12 +111,19 @@ const runSetupWizard = async () => {
|
|
|
89
111
|
const homeDir = os.homedir();
|
|
90
112
|
const envPath = path.join(homeDir, ".config", "opencode-telegram-bridge", "opencode-telegram-bridge.env");
|
|
91
113
|
const unitPath = path.join(homeDir, ".config", "systemd", "user", "opencode-telegram-bridge.service");
|
|
92
|
-
|
|
114
|
+
const installOpencode = await confirmAnswer("Set up OpenCode server as a user service?", false);
|
|
115
|
+
const opencodeUnitPath = path.join(homeDir, ".config", "systemd", "user", "opencode.service");
|
|
116
|
+
const existingPaths = [envPath, unitPath];
|
|
117
|
+
if (installOpencode) {
|
|
118
|
+
existingPaths.push(opencodeUnitPath);
|
|
119
|
+
}
|
|
120
|
+
if (existingPaths.some((filePath) => fs.existsSync(filePath))) {
|
|
93
121
|
const overwrite = await confirmAnswer("Existing config found. Overwrite?", false);
|
|
94
122
|
if (!overwrite) {
|
|
95
123
|
die("Setup cancelled.");
|
|
96
124
|
}
|
|
97
125
|
}
|
|
126
|
+
const opencodePath = installOpencode ? resolveOpencodePath() : null;
|
|
98
127
|
const botToken = await readAnswer("TELEGRAM_BOT_TOKEN", { required: true });
|
|
99
128
|
const allowedUserId = await readAnswer("TELEGRAM_ALLOWED_USER_ID", {
|
|
100
129
|
required: true,
|
|
@@ -109,9 +138,11 @@ const runSetupWizard = async () => {
|
|
|
109
138
|
defaultValue: "opencode",
|
|
110
139
|
});
|
|
111
140
|
const serverPassword = await readAnswer("OPENCODE_SERVER_PASSWORD", {});
|
|
112
|
-
const opencodeRestartCommand =
|
|
141
|
+
const opencodeRestartCommand = installOpencode
|
|
142
|
+
? "systemctl --user restart opencode --no-block"
|
|
143
|
+
: await readAnswer("OPENCODE_RESTART_COMMAND", {});
|
|
113
144
|
const opencodeRestartTimeoutMs = opencodeRestartCommand ? "30000" : "";
|
|
114
|
-
const
|
|
145
|
+
const { nodePath, cliPath } = resolveExecStart();
|
|
115
146
|
writeEnvFile(envPath, {
|
|
116
147
|
TELEGRAM_BOT_TOKEN: botToken,
|
|
117
148
|
TELEGRAM_ALLOWED_USER_ID: allowedUserId,
|
|
@@ -125,11 +156,19 @@ const runSetupWizard = async () => {
|
|
|
125
156
|
OPENCODE_BRIDGE_RESTART_COMMAND: "systemctl --user restart opencode-telegram-bridge --no-block",
|
|
126
157
|
OPENCODE_BRIDGE_RESTART_TIMEOUT_MS: "30000",
|
|
127
158
|
});
|
|
128
|
-
const unitFile = buildUnitFile(envPath,
|
|
159
|
+
const unitFile = buildUnitFile(envPath, nodePath, cliPath);
|
|
129
160
|
writeUnitFile(unitPath, unitFile);
|
|
161
|
+
const nodeDir = path.dirname(nodePath);
|
|
162
|
+
if (installOpencode && opencodePath) {
|
|
163
|
+
const opencodeUnitFile = buildOpencodeUnitFile(opencodePath, nodeDir);
|
|
164
|
+
writeUnitFile(opencodeUnitPath, opencodeUnitFile);
|
|
165
|
+
}
|
|
130
166
|
runCommand("systemctl", ["--user", "daemon-reload"]);
|
|
167
|
+
if (installOpencode) {
|
|
168
|
+
runCommand("systemctl", ["--user", "enable", "--now", "opencode"]);
|
|
169
|
+
}
|
|
131
170
|
runCommand("systemctl", ["--user", "enable", "--now", "opencode-telegram-bridge"]);
|
|
132
|
-
const enableLinger = await confirmAnswer("Enable linger so
|
|
171
|
+
const enableLinger = await confirmAnswer("Enable linger so services start on boot without login?", false);
|
|
133
172
|
if (enableLinger) {
|
|
134
173
|
const user = os.userInfo().username;
|
|
135
174
|
const result = spawnSync("sudo", ["loginctl", "enable-linger", user], {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,QAAQ,MAAM,wBAAwB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/docs/installation.md
CHANGED
|
@@ -15,7 +15,7 @@ npm install -g opencode-telegram-bridge
|
|
|
15
15
|
opencode-telegram-bridge setup
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
Setup currently supports Linux systemd only. On other platforms, run the bot manually.
|
|
18
|
+
The wizard can also set up OpenCode as a user service. Setup currently supports Linux systemd only. On other platforms, run the bot manually.
|
|
19
19
|
|
|
20
20
|
## Run the bot
|
|
21
21
|
```bash
|
package/docs/systemd.md
CHANGED