@0xmaxma/claude-gateway 1.0.0 → 1.0.3

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/README.md CHANGED
@@ -32,7 +32,7 @@ A self-hosted multi-agent gateway for Claude Code. Connect Claude agents to Tele
32
32
 
33
33
  ## Requirements
34
34
 
35
- - Node.js 18+
35
+ - Node.js 22+
36
36
  - [Claude Code CLI](https://claude.ai/code) v2.1.0+ installed and authenticated — `channels mode` is required (`claude --version`)
37
37
  - [Bun](https://bun.sh) — runs the MCP server subprocess (`mcp/server.ts`)
38
38
  - A bot token per agent — Telegram (from [@BotFather](https://t.me/BotFather)) or Discord (from [Discord Developer Portal](https://discord.com/developers/applications))
@@ -41,26 +41,76 @@ A self-hosted multi-agent gateway for Claude Code. Connect Claude agents to Tele
41
41
 
42
42
  ## Quick Start
43
43
 
44
- ### 1. Install
44
+ ### Install via npm (for users)
45
+
46
+ **1. Install**
45
47
 
46
48
  ```bash
47
- git clone <repo>
48
- cd claude-gateway
49
- npm install
50
- npm run build
49
+ npm install -g @0xmaxma/claude-gateway
50
+ ```
51
+
52
+ Requires [Bun](https://bun.sh) — MCP server dependencies are installed automatically via `postinstall`.
53
+
54
+ **2. Configure environment (optional)**
55
+
56
+ The gateway auto-loads `~/.claude-gateway/.env` on startup:
57
+
58
+ ```bash
59
+ mkdir -p ~/.claude-gateway
60
+ cat > ~/.claude-gateway/.env << 'EOF'
61
+ # HTTP port (default: 10850)
62
+ # PORT=10850
63
+
64
+ # Path to gateway config (default: ~/.claude-gateway/config.json)
65
+ # GATEWAY_CONFIG=~/.claude-gateway/config.json
66
+ EOF
51
67
  ```
52
68
 
53
- ### 2. Install MCP server dependencies
69
+ All variables are optional. Full list: [`.env.example`](.env.example)
70
+
71
+ **3. Create an agent**
72
+
73
+ Add an agent entry to `~/.claude-gateway/config.json` manually (see [`config.template.json`](config.template.json) for the format), or clone the repo and run `make create-agent` for the interactive wizard (see **For development** below).
54
74
 
55
- The gateway MCP server uses Bun with its own `package.json`. Install once:
75
+ **4. Start**
56
76
 
57
77
  ```bash
58
- make mcp-install # runs: cd mcp && bun install
78
+ claude-gateway
59
79
  ```
60
80
 
61
- This installs `grammy` (Telegram Bot API) and `@modelcontextprotocol/sdk` into `mcp/node_modules/`.
81
+ **Run as a service with PM2 (optional)**
82
+
83
+ To keep the gateway running after logout or system restarts, use [PM2](https://pm2.keymetrics.io):
84
+
85
+ ```bash
86
+ npm install -g pm2
87
+ pm2 start $(which claude-gateway) --name gateway
88
+ pm2 save # persist the process list
89
+ pm2 startup # register PM2 to start on boot (follow the printed command)
90
+ ```
91
+
92
+ Useful commands:
93
+
94
+ ```bash
95
+ pm2 status # check gateway status
96
+ pm2 logs gateway # tail logs
97
+ pm2 restart gateway # restart
98
+ pm2 stop gateway # stop
99
+ pm2 delete gateway # remove from PM2
100
+ ```
101
+
102
+ ---
103
+
104
+ ### For development
105
+
106
+ ```bash
107
+ git clone https://github.com/0xMaxMa/claude-gateway
108
+ cd claude-gateway
109
+ npm install # also runs bun install in mcp/
110
+ npm run build
111
+ ```
62
112
 
63
- ### 3. Create an agent
113
+ ### Create an agent
64
114
 
65
115
  The interactive wizard handles everything — workspace files, config, bot token, and pairing:
66
116
 
@@ -717,7 +767,7 @@ Once paired, the following bot commands are available in a private chat:
717
767
 
718
768
  ## Monitoring
719
769
 
720
- The gateway runs an HTTP server on port 3000 (set `PORT` env var to change):
770
+ The gateway runs an HTTP server on port 10850 (set `PORT` env var to change):
721
771
 
722
772
  | Endpoint | Description |
723
773
  |----------|-------------|
package/dist/index.js CHANGED
@@ -34,16 +34,31 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  };
35
35
  })();
36
36
  Object.defineProperty(exports, "__esModule", { value: true });
37
+ // Must run before any other imports so env vars are set before modules read them.
38
+ // TypeScript compiles imports to inline require() calls (CommonJS), so placement matters.
37
39
  const path = __importStar(require("path"));
38
40
  const fs = __importStar(require("fs"));
39
41
  const os = __importStar(require("os"));
40
- const readline = __importStar(require("readline"));
41
- function expandTilde(p) {
42
- if (p === '~' || p.startsWith('~/')) {
43
- return path.join(os.homedir(), p.slice(1));
42
+ // Load ~/.claude-gateway/.env so global installs pick up env vars without
43
+ // needing shell exports or running via npm start.
44
+ (function loadDotenv() {
45
+ const envFile = path.join(os.homedir(), '.claude-gateway', '.env');
46
+ if (!fs.existsSync(envFile))
47
+ return;
48
+ for (const line of fs.readFileSync(envFile, 'utf8').split('\n')) {
49
+ const trimmed = line.trim();
50
+ if (!trimmed || trimmed.startsWith('#'))
51
+ continue;
52
+ const eq = trimmed.indexOf('=');
53
+ if (eq === -1)
54
+ continue;
55
+ const key = trimmed.slice(0, eq).trim();
56
+ const val = trimmed.slice(eq + 1).trim().replace(/^["']|["']$/g, '');
57
+ if (!(key in process.env))
58
+ process.env[key] = val;
44
59
  }
45
- return p;
46
- }
60
+ })();
61
+ const readline = __importStar(require("readline"));
47
62
  const loader_1 = require("./config/loader");
48
63
  const migrator_1 = require("./config/migrator");
49
64
  const workspace_loader_1 = require("./agent/workspace-loader");
@@ -57,6 +72,12 @@ const gateway_router_1 = require("./api/gateway-router");
57
72
  const context_isolation_1 = require("./agent/context-isolation");
58
73
  const logger_1 = require("./logger");
59
74
  const watcher_1 = require("./config/watcher");
75
+ function expandTilde(p) {
76
+ if (p === '~' || p.startsWith('~/')) {
77
+ return path.join(os.homedir(), p.slice(1));
78
+ }
79
+ return p;
80
+ }
60
81
  // ─── Simple argument parsing (no heavy deps) ──────────────────────────────────
61
82
  function parseArgs(argv) {
62
83
  const result = {};
@@ -80,7 +101,7 @@ const args = parseArgs(process.argv);
80
101
  const CONFIG_PATH = expandTilde(args['config'] ??
81
102
  process.env.GATEWAY_CONFIG ??
82
103
  path.join(os.homedir(), '.claude-gateway', 'config.json'));
83
- const PORT = parseInt((process.env.PORT ?? '3000'), 10);
104
+ const PORT = parseInt((process.env.PORT ?? '10850'), 10);
84
105
  function printStartupTable(results) {
85
106
  const COL_ID = Math.max(13, ...results.map((r) => r.id.length)) + 2;
86
107
  const COL_STATUS = 12;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Markdown detection and conversion utilities for Telegram HTML mode.
3
+ * Used by AgentRunner to auto-format agent output before forwarding.
4
+ */
5
+
6
+ /**
7
+ * Detects whether text contains markdown formatting patterns
8
+ * that warrant HTML rendering in Telegram.
9
+ */
10
+ export function hasMarkdown(text: string): boolean {
11
+ return (
12
+ /\*\*[^*\n]+\*\*/m.test(text) || // **bold**
13
+ /\*[^\s*\n][^*\n]*\*/m.test(text) || // *italic*
14
+ /_[^\s_\n][^_\n]*_/m.test(text) || // _italic_
15
+ /`[^`\n]+`/m.test(text) || // `inline code`
16
+ /^```/m.test(text) || // ```code block
17
+ /^#{1,6}\s/m.test(text) || // # header
18
+ /^\|.+\|/m.test(text) || // | table row |
19
+ /^- /m.test(text) || // - bullet list
20
+ /\[.+?\]\(https?:\/\/.+?\)/m.test(text) // [link](url)
21
+ )
22
+ }
23
+
24
+ /**
25
+ * Escapes HTML special characters in plain text.
26
+ */
27
+ function escapeHtml(text: string): string {
28
+ return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;')
29
+ }
30
+
31
+ /**
32
+ * Escapes HTML special characters in a URL attribute value.
33
+ */
34
+ function escapeHtmlAttr(url: string): string {
35
+ return escapeHtml(url).replace(/"/g, '&quot;')
36
+ }
37
+
38
+ /**
39
+ * Measures display width of a string, treating Thai/Unicode combining chars as 0-width.
40
+ * Each base character counts as 1 column.
41
+ */
42
+ function displayWidth(s: string): number {
43
+ // Strip Unicode combining characters (Mn category) — these include Thai tone marks,
44
+ // vowel signs above/below (U+0E31, U+0E34–U+0E3A, U+0E47–U+0E4E), and other combining marks
45
+ const stripped = s.replace(/[\u0300-\u036F\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E4F]/g, '')
46
+ return stripped.length
47
+ }
48
+
49
+ /**
50
+ * Pads a string on the right to reach the target display width.
51
+ */
52
+ function padEnd(s: string, width: number): string {
53
+ const pad = width - displayWidth(s)
54
+ return pad > 0 ? s + ' '.repeat(pad) : s
55
+ }
56
+
57
+ /**
58
+ * Splits a table row like `| a | b | c |` into trimmed cell strings.
59
+ */
60
+ function splitCells(line: string): string[] {
61
+ return line
62
+ .replace(/^\s*\|\s*/, '')
63
+ .replace(/\s*\|\s*$/, '')
64
+ .split(/\s*\|\s*/)
65
+ }
66
+
67
+ /**
68
+ * Returns true if the line is a separator row (e.g. |---|:---:|---:|)
69
+ */
70
+ function isSeparator(line: string): boolean {
71
+ return /^\s*\|[\s\-:|]+\|\s*$/.test(line)
72
+ }
73
+
74
+ /**
75
+ * Aligns table columns by padding each cell to the widest value in its column.
76
+ */
77
+ function formatTable(lines: string[]): string {
78
+ const dataLines = lines.filter(l => !isSeparator(l))
79
+ const rows = dataLines.map(splitCells)
80
+
81
+ // Find column count
82
+ const colCount = rows.reduce((m, r) => Math.max(m, r.length), 0)
83
+
84
+ // Compute max display width per column
85
+ const colWidths: number[] = Array(colCount).fill(0)
86
+ for (const row of rows) {
87
+ for (let c = 0; c < row.length; c++) {
88
+ colWidths[c] = Math.max(colWidths[c], displayWidth(row[c]))
89
+ }
90
+ }
91
+
92
+ // Render rows
93
+ const rendered = rows.map(row => {
94
+ const cells = Array.from({ length: colCount }, (_, c) => padEnd(row[c] ?? '', colWidths[c]))
95
+ return '| ' + cells.join(' | ') + ' |'
96
+ })
97
+
98
+ // Rebuild separator line from computed widths
99
+ const sep = '| ' + colWidths.map(w => '-'.repeat(w)).join(' | ') + ' |'
100
+
101
+ // Insert separator after header (first row)
102
+ if (rendered.length > 1) {
103
+ rendered.splice(1, 0, sep)
104
+ }
105
+
106
+ return rendered.join('\n')
107
+ }
108
+
109
+ /**
110
+ * Converts standard Markdown to Telegram HTML format.
111
+ *
112
+ * Conversions:
113
+ * - **bold** → <b>bold</b>
114
+ * - *italic* / _italic_ → <i>italic</i>
115
+ * - `code` → <code>code</code>
116
+ * - ```block``` → <pre><code>block</code></pre>
117
+ * - [text](url) → <a href="url">text</a>
118
+ * - # Header → <b>Header</b>
119
+ * - | table | → wrapped in <pre> (pipes preserved, monospace)
120
+ * - - bullet → • bullet
121
+ * - plain text → HTML-escaped (&amp; &lt; &gt;)
122
+ */
123
+ export function toTelegramHtml(text: string): string {
124
+ // Convert bullet lists first (line-level transform, safe as pre-pass)
125
+ text = text.replace(/^- /gm, '• ')
126
+
127
+ const out: string[] = []
128
+ let i = 0
129
+ const len = text.length
130
+
131
+ while (i < len) {
132
+ // Triple backtick code block: ```[lang]\n...\n```
133
+ if (text.startsWith('```', i)) {
134
+ const closeIdx = text.indexOf('\n```', i + 3)
135
+ if (closeIdx !== -1) {
136
+ const inner = text.slice(i + 3, closeIdx)
137
+ const nlIdx = inner.indexOf('\n')
138
+ const code = nlIdx > 0 ? inner.slice(nlIdx + 1) : inner.replace(/^\n/, '')
139
+ out.push('<pre><code>' + escapeHtml(code) + '</code></pre>')
140
+ i = closeIdx + 4
141
+ continue
142
+ }
143
+ }
144
+
145
+ // Inline code `...` (not ```)
146
+ if (text[i] === '`' && text[i + 1] !== '`') {
147
+ const closeIdx = text.indexOf('`', i + 1)
148
+ if (closeIdx !== -1) {
149
+ out.push('<code>' + escapeHtml(text.slice(i + 1, closeIdx)) + '</code>')
150
+ i = closeIdx + 1
151
+ continue
152
+ }
153
+ }
154
+
155
+ // Bold **...**
156
+ if (text.startsWith('**', i) && text[i + 2] !== '*' && text[i + 2] !== ' ') {
157
+ const closeIdx = text.indexOf('**', i + 2)
158
+ if (closeIdx !== -1 && !text.slice(i + 2, closeIdx).includes('\n')) {
159
+ out.push('<b>' + escapeHtml(text.slice(i + 2, closeIdx)) + '</b>')
160
+ i = closeIdx + 2
161
+ continue
162
+ }
163
+ }
164
+
165
+ // Italic *...* (single asterisk, not bold)
166
+ if (text[i] === '*' && text[i + 1] !== '*' && text[i + 1] !== ' ' && text[i + 1] !== undefined) {
167
+ const closeIdx = text.indexOf('*', i + 1)
168
+ if (closeIdx !== -1 && !text.slice(i + 1, closeIdx).includes('\n')) {
169
+ out.push('<i>' + escapeHtml(text.slice(i + 1, closeIdx)) + '</i>')
170
+ i = closeIdx + 1
171
+ continue
172
+ }
173
+ }
174
+
175
+ // Italic _..._ (underscore style)
176
+ if (text[i] === '_' && text[i + 1] !== '_' && text[i + 1] !== ' ' && text[i + 1] !== undefined) {
177
+ const closeIdx = text.indexOf('_', i + 1)
178
+ if (closeIdx !== -1 && !text.slice(i + 1, closeIdx).includes('\n')) {
179
+ out.push('<i>' + escapeHtml(text.slice(i + 1, closeIdx)) + '</i>')
180
+ i = closeIdx + 1
181
+ continue
182
+ }
183
+ }
184
+
185
+ // Link [text](url)
186
+ if (text[i] === '[') {
187
+ const closeBracket = text.indexOf(']', i + 1)
188
+ if (closeBracket !== -1 && text[closeBracket + 1] === '(') {
189
+ const closeParen = text.indexOf(')', closeBracket + 2)
190
+ if (closeParen !== -1) {
191
+ const linkText = text.slice(i + 1, closeBracket)
192
+ const url = text.slice(closeBracket + 2, closeParen)
193
+ out.push('<a href="' + escapeHtmlAttr(url) + '">' + escapeHtml(linkText) + '</a>')
194
+ i = closeParen + 1
195
+ continue
196
+ }
197
+ }
198
+ }
199
+
200
+ // Header # at start of line → bold
201
+ if ((i === 0 || text[i - 1] === '\n') && text[i] === '#') {
202
+ let level = 0
203
+ while (i + level < len && text[i + level] === '#') level++
204
+ if (level <= 6 && text[i + level] === ' ') {
205
+ const lineEnd = text.indexOf('\n', i + level + 1)
206
+ const end = lineEnd === -1 ? len : lineEnd
207
+ out.push('<b>' + escapeHtml(text.slice(i + level + 1, end)) + '</b>')
208
+ i = end
209
+ continue
210
+ }
211
+ }
212
+
213
+ // Table lines starting with | at line start → collect, align columns, wrap in <pre>
214
+ if ((i === 0 || text[i - 1] === '\n') && text[i] === '|') {
215
+ const tableLines: string[] = []
216
+ let j = i
217
+ while (j < len) {
218
+ const lineEnd = text.indexOf('\n', j)
219
+ const end = lineEnd === -1 ? len : lineEnd
220
+ const line = text.slice(j, end)
221
+ if (/^\s*\|.*\|\s*$/.test(line)) {
222
+ tableLines.push(line)
223
+ j = lineEnd === -1 ? len : lineEnd + 1
224
+ if (lineEnd === -1) break
225
+ } else {
226
+ break
227
+ }
228
+ }
229
+ if (tableLines.length > 0) {
230
+ out.push('<pre>' + escapeHtml(formatTable(tableLines)) + '</pre>')
231
+ i = j
232
+ continue
233
+ }
234
+ }
235
+
236
+ // Accumulate plain text until next markdown token
237
+ let j = i + 1
238
+ while (j < len) {
239
+ const c = text[j]
240
+ if (
241
+ text.startsWith('```', j) ||
242
+ (c === '`' && text[j + 1] !== '`') ||
243
+ text.startsWith('**', j) ||
244
+ (c === '*' && text[j + 1] !== '*' && text[j + 1] !== ' ') ||
245
+ (c === '_' && text[j + 1] !== '_' && text[j + 1] !== ' ') ||
246
+ c === '[' ||
247
+ (c === '#' && (j === 0 || text[j - 1] === '\n')) ||
248
+ (c === '|' && (j === 0 || text[j - 1] === '\n'))
249
+ ) break
250
+ j++
251
+ }
252
+ out.push(escapeHtml(text.slice(i, j)))
253
+ i = j
254
+ }
255
+
256
+ return out.join('')
257
+ }
@@ -194,7 +194,7 @@ export function gateLogic(
194
194
  return { action: 'drop' }
195
195
  }
196
196
 
197
- export { hasMarkdown, toTelegramHtml } from '../../../src/telegram/markdown'
197
+ export { hasMarkdown, toTelegramHtml } from './lib/markdown'
198
198
 
199
199
  export function isMentionedPure(input: GateInput, extraPatterns?: string[]): boolean {
200
200
  const entities = input.messageEntities ?? input.captionEntities ?? []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0xmaxma/claude-gateway",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "Multi-agent gateway for Claude",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,6 +26,7 @@
26
26
  "scripts": {
27
27
  "build": "tsc",
28
28
  "start": "node --no-warnings=ExperimentalWarning --env-file-if-exists=.env dist/index.js",
29
+ "postinstall": "if command -v bun >/dev/null 2>&1; then bun install --cwd mcp; else echo 'Warning: bun not found. Run `cd mcp && bun install` manually to enable MCP tools.'; fi",
29
30
  "test": "jest",
30
31
  "test:unit": "jest --testPathPattern=unit",
31
32
  "integration": "jest --testPathPattern=integration --testTimeout=15000",