@0xmaxma/claude-gateway 1.0.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.
Files changed (192) hide show
  1. package/README.md +791 -0
  2. package/config.template.json +87 -0
  3. package/dist/agent/context-isolation.d.ts +28 -0
  4. package/dist/agent/context-isolation.d.ts.map +1 -0
  5. package/dist/agent/context-isolation.js +80 -0
  6. package/dist/agent/context-isolation.js.map +1 -0
  7. package/dist/agent/runner.d.ts +211 -0
  8. package/dist/agent/runner.d.ts.map +1 -0
  9. package/dist/agent/runner.js +1802 -0
  10. package/dist/agent/runner.js.map +1 -0
  11. package/dist/agent/workspace-loader.d.ts +31 -0
  12. package/dist/agent/workspace-loader.d.ts.map +1 -0
  13. package/dist/agent/workspace-loader.js +207 -0
  14. package/dist/agent/workspace-loader.js.map +1 -0
  15. package/dist/api/auth.d.ts +25 -0
  16. package/dist/api/auth.d.ts.map +1 -0
  17. package/dist/api/auth.js +77 -0
  18. package/dist/api/auth.js.map +1 -0
  19. package/dist/api/cron-router.d.ts +22 -0
  20. package/dist/api/cron-router.d.ts.map +1 -0
  21. package/dist/api/cron-router.js +197 -0
  22. package/dist/api/cron-router.js.map +1 -0
  23. package/dist/api/gateway-router.d.ts +52 -0
  24. package/dist/api/gateway-router.d.ts.map +1 -0
  25. package/dist/api/gateway-router.js +215 -0
  26. package/dist/api/gateway-router.js.map +1 -0
  27. package/dist/api/router.d.ts +5 -0
  28. package/dist/api/router.d.ts.map +1 -0
  29. package/dist/api/router.js +1098 -0
  30. package/dist/api/router.js.map +1 -0
  31. package/dist/api/skills-router.d.ts +5 -0
  32. package/dist/api/skills-router.d.ts.map +1 -0
  33. package/dist/api/skills-router.js +424 -0
  34. package/dist/api/skills-router.js.map +1 -0
  35. package/dist/api/workspace-router.d.ts +4 -0
  36. package/dist/api/workspace-router.d.ts.map +1 -0
  37. package/dist/api/workspace-router.js +149 -0
  38. package/dist/api/workspace-router.js.map +1 -0
  39. package/dist/config/loader.d.ts +16 -0
  40. package/dist/config/loader.d.ts.map +1 -0
  41. package/dist/config/loader.js +235 -0
  42. package/dist/config/loader.js.map +1 -0
  43. package/dist/config/migrator.d.ts +70 -0
  44. package/dist/config/migrator.d.ts.map +1 -0
  45. package/dist/config/migrator.js +343 -0
  46. package/dist/config/migrator.js.map +1 -0
  47. package/dist/config/watcher.d.ts +30 -0
  48. package/dist/config/watcher.d.ts.map +1 -0
  49. package/dist/config/watcher.js +170 -0
  50. package/dist/config/watcher.js.map +1 -0
  51. package/dist/cron/manager.d.ts +48 -0
  52. package/dist/cron/manager.d.ts.map +1 -0
  53. package/dist/cron/manager.js +580 -0
  54. package/dist/cron/manager.js.map +1 -0
  55. package/dist/cron/scheduler.d.ts +50 -0
  56. package/dist/cron/scheduler.d.ts.map +1 -0
  57. package/dist/cron/scheduler.js +231 -0
  58. package/dist/cron/scheduler.js.map +1 -0
  59. package/dist/discord/receiver.d.ts +17 -0
  60. package/dist/discord/receiver.d.ts.map +1 -0
  61. package/dist/discord/receiver.js +108 -0
  62. package/dist/discord/receiver.js.map +1 -0
  63. package/dist/heartbeat/history.d.ts +24 -0
  64. package/dist/heartbeat/history.d.ts.map +1 -0
  65. package/dist/heartbeat/history.js +50 -0
  66. package/dist/heartbeat/history.js.map +1 -0
  67. package/dist/heartbeat/parser.d.ts +26 -0
  68. package/dist/heartbeat/parser.d.ts.map +1 -0
  69. package/dist/heartbeat/parser.js +283 -0
  70. package/dist/heartbeat/parser.js.map +1 -0
  71. package/dist/history/cleanup.d.ts +21 -0
  72. package/dist/history/cleanup.d.ts.map +1 -0
  73. package/dist/history/cleanup.js +171 -0
  74. package/dist/history/cleanup.js.map +1 -0
  75. package/dist/history/db.d.ts +27 -0
  76. package/dist/history/db.d.ts.map +1 -0
  77. package/dist/history/db.js +323 -0
  78. package/dist/history/db.js.map +1 -0
  79. package/dist/history/media-store.d.ts +27 -0
  80. package/dist/history/media-store.d.ts.map +1 -0
  81. package/dist/history/media-store.js +158 -0
  82. package/dist/history/media-store.js.map +1 -0
  83. package/dist/history/types.d.ts +62 -0
  84. package/dist/history/types.d.ts.map +1 -0
  85. package/dist/history/types.js +3 -0
  86. package/dist/history/types.js.map +1 -0
  87. package/dist/index.d.ts +3 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +483 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/logger.d.ts +3 -0
  92. package/dist/logger.d.ts.map +1 -0
  93. package/dist/logger.js +81 -0
  94. package/dist/logger.js.map +1 -0
  95. package/dist/memory/manager.d.ts +45 -0
  96. package/dist/memory/manager.d.ts.map +1 -0
  97. package/dist/memory/manager.js +178 -0
  98. package/dist/memory/manager.js.map +1 -0
  99. package/dist/session/compactor.d.ts +22 -0
  100. package/dist/session/compactor.d.ts.map +1 -0
  101. package/dist/session/compactor.js +151 -0
  102. package/dist/session/compactor.js.map +1 -0
  103. package/dist/session/process.d.ts +76 -0
  104. package/dist/session/process.d.ts.map +1 -0
  105. package/dist/session/process.js +729 -0
  106. package/dist/session/process.js.map +1 -0
  107. package/dist/session/store.d.ts +102 -0
  108. package/dist/session/store.d.ts.map +1 -0
  109. package/dist/session/store.js +533 -0
  110. package/dist/session/store.js.map +1 -0
  111. package/dist/skills/index.d.ts +9 -0
  112. package/dist/skills/index.d.ts.map +1 -0
  113. package/dist/skills/index.js +15 -0
  114. package/dist/skills/index.js.map +1 -0
  115. package/dist/skills/invoker.d.ts +16 -0
  116. package/dist/skills/invoker.d.ts.map +1 -0
  117. package/dist/skills/invoker.js +36 -0
  118. package/dist/skills/invoker.js.map +1 -0
  119. package/dist/skills/loader.d.ts +23 -0
  120. package/dist/skills/loader.d.ts.map +1 -0
  121. package/dist/skills/loader.js +183 -0
  122. package/dist/skills/loader.js.map +1 -0
  123. package/dist/skills/parser.d.ts +55 -0
  124. package/dist/skills/parser.d.ts.map +1 -0
  125. package/dist/skills/parser.js +178 -0
  126. package/dist/skills/parser.js.map +1 -0
  127. package/dist/skills/sync.d.ts +10 -0
  128. package/dist/skills/sync.d.ts.map +1 -0
  129. package/dist/skills/sync.js +130 -0
  130. package/dist/skills/sync.js.map +1 -0
  131. package/dist/skills/watcher.d.ts +16 -0
  132. package/dist/skills/watcher.d.ts.map +1 -0
  133. package/dist/skills/watcher.js +25 -0
  134. package/dist/skills/watcher.js.map +1 -0
  135. package/dist/telegram/markdown.d.ts +25 -0
  136. package/dist/telegram/markdown.d.ts.map +1 -0
  137. package/dist/telegram/markdown.js +237 -0
  138. package/dist/telegram/markdown.js.map +1 -0
  139. package/dist/telegram/receiver.d.ts +17 -0
  140. package/dist/telegram/receiver.d.ts.map +1 -0
  141. package/dist/telegram/receiver.js +104 -0
  142. package/dist/telegram/receiver.js.map +1 -0
  143. package/dist/types.d.ts +224 -0
  144. package/dist/types.d.ts.map +1 -0
  145. package/dist/types.js +3 -0
  146. package/dist/types.js.map +1 -0
  147. package/dist/ui/web-ui.d.ts +6 -0
  148. package/dist/ui/web-ui.d.ts.map +1 -0
  149. package/dist/ui/web-ui.js +227 -0
  150. package/dist/ui/web-ui.js.map +1 -0
  151. package/dist/watch/factory.d.ts +26 -0
  152. package/dist/watch/factory.d.ts.map +1 -0
  153. package/dist/watch/factory.js +43 -0
  154. package/dist/watch/factory.js.map +1 -0
  155. package/dist/webhook/manager.d.ts +34 -0
  156. package/dist/webhook/manager.d.ts.map +1 -0
  157. package/dist/webhook/manager.js +120 -0
  158. package/dist/webhook/manager.js.map +1 -0
  159. package/mcp/bun.lock +264 -0
  160. package/mcp/channel-manager.ts +115 -0
  161. package/mcp/package.json +15 -0
  162. package/mcp/router.ts +69 -0
  163. package/mcp/server.ts +129 -0
  164. package/mcp/tools/agent/handlers.ts +578 -0
  165. package/mcp/tools/agent/module.ts +163 -0
  166. package/mcp/tools/browser/module.ts +321 -0
  167. package/mcp/tools/browser/skills/open-browser/SKILL.md +89 -0
  168. package/mcp/tools/cron/client.ts +65 -0
  169. package/mcp/tools/cron/module.ts +158 -0
  170. package/mcp/tools/cron/skills/cron/SKILL.md +46 -0
  171. package/mcp/tools/discord/access.ts +197 -0
  172. package/mcp/tools/discord/client.ts +31 -0
  173. package/mcp/tools/discord/commands.ts +48 -0
  174. package/mcp/tools/discord/inbound.ts +53 -0
  175. package/mcp/tools/discord/module.ts +442 -0
  176. package/mcp/tools/discord/outbound.ts +90 -0
  177. package/mcp/tools/discord/receiver-server.ts +58 -0
  178. package/mcp/tools/discord/skills/access/SKILL.md +86 -0
  179. package/mcp/tools/discord/skills/configure/SKILL.md +53 -0
  180. package/mcp/tools/discord/threading.ts +37 -0
  181. package/mcp/tools/discord/types.ts +106 -0
  182. package/mcp/tools/skills/handlers.ts +196 -0
  183. package/mcp/tools/skills/module.ts +163 -0
  184. package/mcp/tools/telegram/module.ts +454 -0
  185. package/mcp/tools/telegram/pure.ts +224 -0
  186. package/mcp/tools/telegram/receiver-server.ts +1656 -0
  187. package/mcp/tools/telegram/skills/access/SKILL.md +169 -0
  188. package/mcp/tools/telegram/skills/configure/SKILL.md +118 -0
  189. package/mcp/tools/telegram/typing.ts +327 -0
  190. package/mcp/types.ts +128 -0
  191. package/package.json +62 -0
  192. package/resource/claude_gateway.svg +112 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generates a self-contained HTML dashboard page for the gateway status UI.
3
+ * No external dependencies — all CSS and JS is inline.
4
+ */
5
+ export declare function generateDashboardHtml(): string;
6
+ //# sourceMappingURL=web-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-ui.d.ts","sourceRoot":"","sources":["../../src/ui/web-ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CA0N9C"}
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateDashboardHtml = generateDashboardHtml;
4
+ /**
5
+ * Generates a self-contained HTML dashboard page for the gateway status UI.
6
+ * No external dependencies — all CSS and JS is inline.
7
+ */
8
+ function generateDashboardHtml() {
9
+ return `<!DOCTYPE html>
10
+ <html lang="en">
11
+ <head>
12
+ <meta charset="UTF-8">
13
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
14
+ <title>Claude Gateway Status</title>
15
+ <style>
16
+ * { box-sizing: border-box; margin: 0; padding: 0; }
17
+ body {
18
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, monospace;
19
+ background: #0f1117;
20
+ color: #e2e8f0;
21
+ padding: 24px;
22
+ }
23
+ h1 { color: #63b3ed; font-size: 1.5rem; margin-bottom: 8px; }
24
+ .meta { color: #718096; font-size: 0.85rem; margin-bottom: 24px; }
25
+ .meta span { color: #a0aec0; }
26
+ h2 { color: #90cdf4; font-size: 1.1rem; margin: 20px 0 10px; }
27
+ table {
28
+ width: 100%;
29
+ border-collapse: collapse;
30
+ font-size: 0.875rem;
31
+ margin-bottom: 24px;
32
+ }
33
+ th {
34
+ background: #1a202c;
35
+ color: #718096;
36
+ text-align: left;
37
+ padding: 8px 12px;
38
+ border-bottom: 1px solid #2d3748;
39
+ font-weight: 600;
40
+ text-transform: uppercase;
41
+ font-size: 0.75rem;
42
+ letter-spacing: 0.05em;
43
+ }
44
+ td {
45
+ padding: 8px 12px;
46
+ border-bottom: 1px solid #1a202c;
47
+ }
48
+ tr:hover td { background: #1a202c; }
49
+ .badge {
50
+ display: inline-block;
51
+ padding: 2px 8px;
52
+ border-radius: 9999px;
53
+ font-size: 0.75rem;
54
+ font-weight: 600;
55
+ }
56
+ .badge-green { background: #22543d; color: #68d391; }
57
+ .badge-red { background: #742a2a; color: #fc8181; }
58
+ .badge-gray { background: #2d3748; color: #a0aec0; }
59
+ .ts { color: #718096; font-size: 0.8rem; }
60
+ #refresh-indicator {
61
+ float: right;
62
+ font-size: 0.75rem;
63
+ color: #4a5568;
64
+ }
65
+ .error { color: #fc8181; font-size: 0.85rem; margin-top: 8px; }
66
+ </style>
67
+ </head>
68
+ <body>
69
+ <h1>Claude Gateway <span id="refresh-indicator">refreshing...</span></h1>
70
+ <div class="meta">
71
+ Uptime: <span id="uptime">—</span> &nbsp;|&nbsp;
72
+ Started: <span id="started-at">—</span> &nbsp;|&nbsp;
73
+ Last updated: <span id="last-updated">—</span>
74
+ </div>
75
+
76
+ <h2>Agents</h2>
77
+ <table id="agents-table">
78
+ <thead>
79
+ <tr>
80
+ <th>ID</th>
81
+ <th>Status</th>
82
+ <th>Received</th>
83
+ <th>Sent</th>
84
+ <th>Last Activity</th>
85
+ </tr>
86
+ </thead>
87
+ <tbody id="agents-tbody">
88
+ <tr><td colspan="5" class="ts">Loading...</td></tr>
89
+ </tbody>
90
+ </table>
91
+
92
+ <h2>Heartbeat Tasks</h2>
93
+ <table id="heartbeat-table">
94
+ <thead>
95
+ <tr>
96
+ <th>Agent</th>
97
+ <th>Task</th>
98
+ <th>Last Run</th>
99
+ <th>Result</th>
100
+ </tr>
101
+ </thead>
102
+ <tbody id="heartbeat-tbody">
103
+ <tr><td colspan="4" class="ts">Loading...</td></tr>
104
+ </tbody>
105
+ </table>
106
+
107
+ <h2>Recent Sessions (last 5 per agent)</h2>
108
+ <table id="sessions-table">
109
+ <thead>
110
+ <tr>
111
+ <th>Agent</th>
112
+ <th>Chat ID</th>
113
+ <th>Messages</th>
114
+ <th>Last Activity</th>
115
+ </tr>
116
+ </thead>
117
+ <tbody id="sessions-tbody">
118
+ <tr><td colspan="4" class="ts">Loading...</td></tr>
119
+ </tbody>
120
+ </table>
121
+
122
+ <div id="error-msg" class="error" style="display:none;"></div>
123
+
124
+ <script>
125
+ function fmtUptime(seconds) {
126
+ const h = Math.floor(seconds / 3600);
127
+ const m = Math.floor((seconds % 3600) / 60);
128
+ const s = seconds % 60;
129
+ if (h > 0) return h + 'h ' + m + 'm ' + s + 's';
130
+ if (m > 0) return m + 'm ' + s + 's';
131
+ return s + 's';
132
+ }
133
+
134
+ function fmtTs(ts) {
135
+ if (!ts) return '<span class="ts">—</span>';
136
+ try {
137
+ const d = new Date(ts);
138
+ return '<span class="ts">' + d.toLocaleTimeString() + ' ' + d.toLocaleDateString() + '</span>';
139
+ } catch(e) { return ts; }
140
+ }
141
+
142
+ function badge(running) {
143
+ return running
144
+ ? '<span class="badge badge-green">running</span>'
145
+ : '<span class="badge badge-red">stopped</span>';
146
+ }
147
+
148
+ function resultBadge(suppressed, rateLimited) {
149
+ if (rateLimited) return '<span class="badge badge-gray">rate-limited</span>';
150
+ if (suppressed) return '<span class="badge badge-gray">suppressed</span>';
151
+ return '<span class="badge badge-green">sent</span>';
152
+ }
153
+
154
+ async function refresh() {
155
+ document.getElementById('refresh-indicator').textContent = 'refreshing...';
156
+ try {
157
+ const res = await fetch('/status');
158
+ if (!res.ok) throw new Error('HTTP ' + res.status);
159
+ const data = await res.json();
160
+
161
+ document.getElementById('uptime').textContent = fmtUptime(data.uptime || 0);
162
+ document.getElementById('started-at').textContent = data.startedAt
163
+ ? new Date(data.startedAt).toLocaleString() : '—';
164
+ document.getElementById('last-updated').textContent = new Date().toLocaleTimeString();
165
+ document.getElementById('error-msg').style.display = 'none';
166
+
167
+ // Agents table
168
+ const agentRows = (data.agents || []).map(function(a) {
169
+ return '<tr>' +
170
+ '<td>' + a.id + '</td>' +
171
+ '<td>' + badge(a.isRunning) + '</td>' +
172
+ '<td>' + (a.messagesReceived || 0) + '</td>' +
173
+ '<td>' + (a.messagesSent || 0) + '</td>' +
174
+ '<td>' + fmtTs(a.lastActivityAt) + '</td>' +
175
+ '</tr>';
176
+ });
177
+ document.getElementById('agents-tbody').innerHTML =
178
+ agentRows.length ? agentRows.join('') : '<tr><td colspan="5" class="ts">No agents</td></tr>';
179
+
180
+ // Heartbeat table
181
+ const hbRows = [];
182
+ (data.agents || []).forEach(function(a) {
183
+ const lastResults = (a.heartbeat && a.heartbeat.lastResults) || [];
184
+ lastResults.forEach(function(r) {
185
+ if (!r) return;
186
+ hbRows.push('<tr>' +
187
+ '<td>' + a.id + '</td>' +
188
+ '<td>' + r.taskName + '</td>' +
189
+ '<td>' + fmtTs(r.ts) + '</td>' +
190
+ '<td>' + resultBadge(r.suppressed, r.rateLimited) + '</td>' +
191
+ '</tr>');
192
+ });
193
+ });
194
+ document.getElementById('heartbeat-tbody').innerHTML =
195
+ hbRows.length ? hbRows.join('') : '<tr><td colspan="4" class="ts">No heartbeat data yet</td></tr>';
196
+
197
+ // Sessions table
198
+ const sessRows = [];
199
+ (data.agents || []).forEach(function(a) {
200
+ const sessions = (a.sessions || []).slice(0, 5);
201
+ sessions.forEach(function(s) {
202
+ sessRows.push('<tr>' +
203
+ '<td>' + a.id + '</td>' +
204
+ '<td>' + s.chatId + '</td>' +
205
+ '<td>' + (s.messageCount || 0) + '</td>' +
206
+ '<td>' + fmtTs(s.lastActivity) + '</td>' +
207
+ '</tr>');
208
+ });
209
+ });
210
+ document.getElementById('sessions-tbody').innerHTML =
211
+ sessRows.length ? sessRows.join('') : '<tr><td colspan="4" class="ts">No sessions yet</td></tr>';
212
+
213
+ document.getElementById('refresh-indicator').textContent = 'auto-refresh 5s';
214
+ } catch(e) {
215
+ document.getElementById('error-msg').textContent = 'Error fetching status: ' + e.message;
216
+ document.getElementById('error-msg').style.display = 'block';
217
+ document.getElementById('refresh-indicator').textContent = 'error';
218
+ }
219
+ }
220
+
221
+ refresh();
222
+ setInterval(refresh, 5000);
223
+ </script>
224
+ </body>
225
+ </html>`;
226
+ }
227
+ //# sourceMappingURL=web-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-ui.js","sourceRoot":"","sources":["../../src/ui/web-ui.ts"],"names":[],"mappings":";;AAIA,sDA0NC;AA9ND;;;GAGG;AACH,SAAgB,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwND,CAAC;AACT,CAAC"}
@@ -0,0 +1,26 @@
1
+ import chokidar from 'chokidar';
2
+ export interface WatcherOptions {
3
+ /** Glob patterns or file paths to watch */
4
+ paths: string[];
5
+ /** Debounce interval in ms */
6
+ debounceMs: number;
7
+ /** Additional chokidar options */
8
+ chokidarOpts?: chokidar.WatchOptions;
9
+ /** Callback invoked (debounced) when any watched path changes */
10
+ onChange: () => void;
11
+ /**
12
+ * Optional synchronous side-effect called immediately on 'add' events,
13
+ * before the debounced onChange fires (e.g. for file renames).
14
+ */
15
+ onAddSync?: (filePath: string) => void;
16
+ }
17
+ export interface WatchHandle {
18
+ close(): Promise<void> | void;
19
+ }
20
+ /**
21
+ * Shared chokidar watcher factory.
22
+ * Watches the given paths, debounces rapid changes, and calls onChange.
23
+ * Returns a WatchHandle with a close() method to stop watching.
24
+ */
25
+ export declare function createWatcher(opts: WatcherOptions): WatchHandle;
26
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/watch/factory.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC;IACrC,iEAAiE;IACjE,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,WAAW,CA+B/D"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createWatcher = createWatcher;
7
+ const chokidar_1 = __importDefault(require("chokidar"));
8
+ /**
9
+ * Shared chokidar watcher factory.
10
+ * Watches the given paths, debounces rapid changes, and calls onChange.
11
+ * Returns a WatchHandle with a close() method to stop watching.
12
+ */
13
+ function createWatcher(opts) {
14
+ const watcher = chokidar_1.default.watch(opts.paths, {
15
+ persistent: true,
16
+ ignoreInitial: true,
17
+ ...opts.chokidarOpts,
18
+ });
19
+ let debounceTimer = null;
20
+ const debounced = () => {
21
+ if (debounceTimer)
22
+ clearTimeout(debounceTimer);
23
+ debounceTimer = setTimeout(opts.onChange, opts.debounceMs);
24
+ };
25
+ watcher
26
+ .on('add', (filePath) => {
27
+ if (opts.onAddSync)
28
+ opts.onAddSync(filePath);
29
+ debounced();
30
+ })
31
+ .on('change', debounced)
32
+ .on('unlink', debounced);
33
+ return {
34
+ async close() {
35
+ if (debounceTimer) {
36
+ clearTimeout(debounceTimer);
37
+ debounceTimer = null;
38
+ }
39
+ await watcher.close();
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/watch/factory.ts"],"names":[],"mappings":";;;;;AA2BA,sCA+BC;AA1DD,wDAAgC;AAsBhC;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAAoB;IAChD,MAAM,OAAO,GAAG,kBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;QACzC,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;QACnB,GAAG,IAAI,CAAC,YAAY;KACrB,CAAC,CAAC;IAEH,IAAI,aAAa,GAAyC,IAAI,CAAC;IAE/D,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,aAAa;YAAE,YAAY,CAAC,aAAa,CAAC,CAAC;QAC/C,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC;IAEF,OAAO;SACJ,EAAE,CAAC,KAAK,EAAE,CAAC,QAAgB,EAAE,EAAE;QAC9B,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC7C,SAAS,EAAE,CAAC;IACd,CAAC,CAAC;SACD,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;SACvB,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE3B,OAAO;QACL,KAAK,CAAC,KAAK;YACT,IAAI,aAAa,EAAE,CAAC;gBAClB,YAAY,CAAC,aAAa,CAAC,CAAC;gBAC5B,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * webhook-manager — Admin utility for Telegram webhook management.
3
+ *
4
+ * NOTE: This module is NOT used in the gateway's normal operation (Option A).
5
+ * The gateway uses claude --channels which relies on long polling — no webhook needed.
6
+ *
7
+ * Use these functions as a one-time admin operation when:
8
+ * - Migrating a bot FROM webhook mode TO long polling: call deleteWebhook() first.
9
+ * - Diagnosing "409 Conflict" errors: call getWebhookInfo() to check existing webhook.
10
+ */
11
+ export interface WebhookInfo {
12
+ url: string;
13
+ has_custom_certificate: boolean;
14
+ pending_update_count: number;
15
+ ip_address?: string;
16
+ last_error_date?: number;
17
+ last_error_message?: string;
18
+ last_synchronization_error_date?: number;
19
+ max_connections?: number;
20
+ allowed_updates?: string[];
21
+ }
22
+ /**
23
+ * Register a webhook URL for the given bot token.
24
+ */
25
+ export declare function registerWebhook(botToken: string, webhookUrl: string): Promise<void>;
26
+ /**
27
+ * Delete (deregister) the webhook for the given bot token.
28
+ */
29
+ export declare function deleteWebhook(botToken: string): Promise<void>;
30
+ /**
31
+ * Get webhook info for the given bot token.
32
+ */
33
+ export declare function getWebhookInfo(botToken: string): Promise<WebhookInfo>;
34
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/webhook/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAsDD;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzF;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAI3E"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ /**
3
+ * webhook-manager — Admin utility for Telegram webhook management.
4
+ *
5
+ * NOTE: This module is NOT used in the gateway's normal operation (Option A).
6
+ * The gateway uses claude --channels which relies on long polling — no webhook needed.
7
+ *
8
+ * Use these functions as a one-time admin operation when:
9
+ * - Migrating a bot FROM webhook mode TO long polling: call deleteWebhook() first.
10
+ * - Diagnosing "409 Conflict" errors: call getWebhookInfo() to check existing webhook.
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.registerWebhook = registerWebhook;
47
+ exports.deleteWebhook = deleteWebhook;
48
+ exports.getWebhookInfo = getWebhookInfo;
49
+ const https = __importStar(require("https"));
50
+ const http = __importStar(require("http"));
51
+ const DEFAULT_TELEGRAM_API_BASE = 'https://api.telegram.org';
52
+ function getTelegramApiBase() {
53
+ return process.env.TELEGRAM_API_BASE ?? DEFAULT_TELEGRAM_API_BASE;
54
+ }
55
+ function request(method, url, body) {
56
+ return new Promise((resolve, reject) => {
57
+ const bodyStr = body ? JSON.stringify(body) : undefined;
58
+ const isHttps = url.startsWith('https://');
59
+ const lib = isHttps ? https : http;
60
+ const urlObj = new URL(url);
61
+ const options = {
62
+ hostname: urlObj.hostname,
63
+ port: urlObj.port || (isHttps ? 443 : 80),
64
+ path: urlObj.pathname + urlObj.search,
65
+ method,
66
+ headers: {
67
+ 'Content-Type': 'application/json',
68
+ ...(bodyStr ? { 'Content-Length': String(Buffer.byteLength(bodyStr)) } : {}),
69
+ },
70
+ };
71
+ const req = lib.request(options, (res) => {
72
+ const chunks = [];
73
+ res.on('data', (chunk) => chunks.push(chunk));
74
+ res.on('end', () => {
75
+ try {
76
+ const parsed = JSON.parse(Buffer.concat(chunks).toString('utf-8'));
77
+ if (!parsed.ok) {
78
+ reject(new Error(`Telegram API error: ${parsed.description ?? 'unknown'}`));
79
+ }
80
+ else {
81
+ resolve(parsed.result);
82
+ }
83
+ }
84
+ catch (e) {
85
+ reject(new Error(`Failed to parse Telegram API response: ${e.message}`));
86
+ }
87
+ });
88
+ });
89
+ req.on('error', reject);
90
+ if (bodyStr) {
91
+ req.write(bodyStr);
92
+ }
93
+ req.end();
94
+ });
95
+ }
96
+ /**
97
+ * Register a webhook URL for the given bot token.
98
+ */
99
+ async function registerWebhook(botToken, webhookUrl) {
100
+ const base = getTelegramApiBase();
101
+ const url = `${base}/bot${botToken}/setWebhook`;
102
+ await request('POST', url, { url: webhookUrl });
103
+ }
104
+ /**
105
+ * Delete (deregister) the webhook for the given bot token.
106
+ */
107
+ async function deleteWebhook(botToken) {
108
+ const base = getTelegramApiBase();
109
+ const url = `${base}/bot${botToken}/deleteWebhook`;
110
+ await request('POST', url, {});
111
+ }
112
+ /**
113
+ * Get webhook info for the given bot token.
114
+ */
115
+ async function getWebhookInfo(botToken) {
116
+ const base = getTelegramApiBase();
117
+ const url = `${base}/bot${botToken}/getWebhookInfo`;
118
+ return request('GET', url);
119
+ }
120
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/webhook/manager.ts"],"names":[],"mappings":"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"}