@rubytech/create-maxy-code 0.1.614 → 0.1.616
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/package.json +1 -1
- package/payload/platform/lib/aeo-llms-txt-writer/dist/__tests__/write-llms-txt.test.d.ts +2 -0
- package/payload/platform/lib/aeo-llms-txt-writer/dist/__tests__/write-llms-txt.test.d.ts.map +1 -0
- package/payload/platform/lib/aeo-llms-txt-writer/dist/__tests__/write-llms-txt.test.js +291 -0
- package/payload/platform/lib/aeo-llms-txt-writer/dist/__tests__/write-llms-txt.test.js.map +1 -0
- package/payload/platform/lib/aeo-llms-txt-writer/dist/index.d.ts +13 -1
- package/payload/platform/lib/aeo-llms-txt-writer/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/aeo-llms-txt-writer/dist/index.js +127 -18
- package/payload/platform/lib/aeo-llms-txt-writer/dist/index.js.map +1 -1
- package/payload/platform/lib/aeo-llms-txt-writer/src/__tests__/write-llms-txt.test.ts +391 -0
- package/payload/platform/lib/aeo-llms-txt-writer/src/index.ts +156 -19
- package/payload/platform/lib/aeo-llms-txt-writer/vitest.config.ts +10 -0
- package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts +15 -1
- package/payload/platform/lib/mcp-spawn-tee/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/mcp-spawn-tee/dist/index.js +129 -7
- package/payload/platform/lib/mcp-spawn-tee/dist/index.js.map +1 -1
- package/payload/platform/lib/mcp-spawn-tee/src/__tests__/spawn-tee.test.ts +227 -0
- package/payload/platform/lib/mcp-spawn-tee/src/index.ts +133 -6
- package/payload/platform/plugins/admin/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/admin/mcp/dist/index.js +11 -3
- package/payload/platform/plugins/admin/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.d.ts +3 -0
- package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.d.ts.map +1 -1
- package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.js +38 -20
- package/payload/platform/plugins/admin/mcp/dist/tools/publish-site.js.map +1 -1
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +6 -5
- package/payload/platform/plugins/admin/skills/publish-site/SKILL.md +3 -0
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +13 -0
- package/payload/platform/plugins/aeo/PLUGIN.md +1 -1
- package/payload/platform/plugins/aeo/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/aeo/mcp/dist/index.js +17 -10
- package/payload/platform/plugins/aeo/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/browser/PLUGIN.md +1 -1
- package/payload/platform/plugins/browser/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/connector/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/contacts/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/dispatch/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/docs/references/aeo.md +4 -3
- package/payload/platform/plugins/docs/references/plugins-guide.md +1 -1
- package/payload/platform/plugins/email/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/filesystem/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/google/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/graph-viewer/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/inventory/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/ledger/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/memory/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/outlook/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/quickbooks/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/replicate/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/scheduling/PLUGIN.md +3 -4
- package/payload/platform/plugins/scheduling/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +0 -6
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-audits.test.js +65 -20
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-audits.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.js +20 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/gate-classification.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts +12 -4
- package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/gate.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js +39 -6
- package/payload/platform/plugins/scheduling/mcp/dist/lib/schedule-audit.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/gate-dispatch-wiring.test.js +21 -6
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/gate-dispatch-wiring.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +26 -5
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.js +17 -51
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-waiver.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js +6 -4
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/schedule-gate-write.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js +113 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/__tests__/scheduling-gate.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +8 -18
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +14 -27
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js +125 -56
- package/payload/platform/plugins/scheduling/mcp/dist/tools/scheduling-gate.js.map +1 -1
- package/payload/platform/plugins/storage-broker/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/telegram/PLUGIN.md +2 -2
- package/payload/platform/plugins/telegram/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-register.test.js +12 -5
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/webhook-register.test.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.js +14 -6
- package/payload/platform/plugins/telegram/mcp/dist/tools/webhook-register.js.map +1 -1
- package/payload/platform/plugins/telegram/skills/configure/SKILL.md +1 -1
- package/payload/platform/plugins/url-get/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/voice-mirror/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/whatsapp/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/work/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/plugins/workflows/lib/mcp-spawn-tee/index.js +129 -7
- package/payload/platform/scripts/__tests__/vnc-cdp-liveness.test.sh +270 -19
- package/payload/platform/scripts/vnc.sh +174 -71
- package/payload/platform/services/claude-session-manager/dist/index.js +17 -0
- package/payload/platform/services/claude-session-manager/dist/index.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/mcp-helper-census.d.ts +80 -0
- package/payload/platform/services/claude-session-manager/dist/mcp-helper-census.d.ts.map +1 -0
- package/payload/platform/services/claude-session-manager/dist/mcp-helper-census.js +201 -0
- package/payload/platform/services/claude-session-manager/dist/mcp-helper-census.js.map +1 -0
- package/payload/server/public/operator.html +1 -1
- package/payload/server/server.js +422 -251
|
@@ -25,10 +25,13 @@
|
|
|
25
25
|
* - `server.log` via the loopback log-ingest route — best-effort mirror of
|
|
26
26
|
* the [mcp-helper] lifecycle lines.
|
|
27
27
|
*
|
|
28
|
-
* Lifecycle lines, correlation key `session=<id8> server=<name
|
|
28
|
+
* Lifecycle lines, correlation key `session=<id8> server=<name>`:
|
|
29
29
|
* [mcp-helper] op=spawn ... pid= entry=
|
|
30
30
|
* [mcp-helper] op=boot ... head=<first stderr bytes>
|
|
31
31
|
* [mcp-helper] op=exit ... code= signal= lifetimeMs= stderr-tail=
|
|
32
|
+
* [mcp-helper] op=fatal ... kind=uncaught|rejection deferred=yes|no
|
|
33
|
+
* disposition=survived|exit error=
|
|
34
|
+
* preceded by an `op=fatal-stack` block carrying the full stack (Task 2787).
|
|
32
35
|
*
|
|
33
36
|
* Process model (Task 989): the shim IS the server's process. op=exit fires
|
|
34
37
|
* from process.on("exit"), so it covers a normal exit, a non-zero exit, an
|
|
@@ -37,6 +40,17 @@
|
|
|
37
40
|
* and leaves no op=exit line — the per-session stderr tail already on disk and
|
|
38
41
|
* Claude Code's own transport-drop are the evidence for that death mode.
|
|
39
42
|
*
|
|
43
|
+
* op=exit records THAT a fatal killed the process; it never records WHICH one,
|
|
44
|
+
* because Node's fatal printer writes beneath the tee (Task 2787). The op=fatal
|
|
45
|
+
* pair is what names the error.
|
|
46
|
+
*
|
|
47
|
+
* Task 2788 — a fatal no longer always kills. `disposition=` says what the guard
|
|
48
|
+
* did: the shim exits 1 only when it is the sole listener for the event AND no
|
|
49
|
+
* stdio transport is connected. A fatal on a connected transport is recorded
|
|
50
|
+
* and survived, because Claude Code's policy after a helper dies is one
|
|
51
|
+
* reconnect then stop, so killing a live server removes its whole tool surface
|
|
52
|
+
* for the rest of the session.
|
|
53
|
+
*
|
|
40
54
|
* The shim never writes to fd 1 (stdout) — that is the JSON-RPC channel.
|
|
41
55
|
*/
|
|
42
56
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -114,14 +128,22 @@ function postToServerLog(suffix, level) {
|
|
|
114
128
|
// Claude Code visibility, never re-teed), and a best-effort server.log mirror.
|
|
115
129
|
// `suffix` is the line body after the tag and carries no newline (the
|
|
116
130
|
// log-ingest route rejects newlines).
|
|
117
|
-
|
|
131
|
+
//
|
|
132
|
+
// Task 2787 — `mirror` is false for op=exit and op=fatal. Both fire while the
|
|
133
|
+
// loop is stopping, so the async fetch cannot flush: server.log held 2 op=exit
|
|
134
|
+
// lines against 160 op=spawn and 135 op=boot. The sync raw sink is the
|
|
135
|
+
// authoritative carrier for those two; posting them was a near-total loss
|
|
136
|
+
// dressed as a mirror. op=spawn/op=boot/op=error keep it — they fire while the
|
|
137
|
+
// loop is live and land.
|
|
138
|
+
function emitLifecycle(suffix, level, mirror = true) {
|
|
118
139
|
const line = `[mcp-helper] ${suffix}\n`;
|
|
119
140
|
appendSafe(rawSinkPath, line);
|
|
120
141
|
try {
|
|
121
142
|
rawStderrWrite(line);
|
|
122
143
|
}
|
|
123
144
|
catch { /* stderr closed */ }
|
|
124
|
-
|
|
145
|
+
if (mirror)
|
|
146
|
+
postToServerLog(suffix, level);
|
|
125
147
|
}
|
|
126
148
|
if (!ENTRY) {
|
|
127
149
|
emitLifecycle(`op=error session=${SESSION_ID8} server=${SERVER_NAME} reason="no entry given (argv[2] missing)"`, "error");
|
|
@@ -165,6 +187,97 @@ function onSignal(sig, code) {
|
|
|
165
187
|
process.on("SIGTERM", onSignal("SIGTERM", 143));
|
|
166
188
|
process.on("SIGINT", onSignal("SIGINT", 130));
|
|
167
189
|
process.on("SIGHUP", onSignal("SIGHUP", 129));
|
|
190
|
+
// Task 2787 — the fatal guard. Three measured facts drove it here rather than
|
|
191
|
+
// into the 26 plugin entries: Node's default fatal printer writes to fd 2
|
|
192
|
+
// BENEATH the JS `process.stderr.write` the tee replaces, so on both 18 Aug
|
|
193
|
+
// deaths the stack reached neither the raw sink nor Claude Code's own
|
|
194
|
+
// `Server stderr:` capture; the shim is the single seam every entry already
|
|
195
|
+
// loads through; and 26 copies would have to stay in step for ever.
|
|
196
|
+
//
|
|
197
|
+
// The stack is written through appendSafe and rawStderrWrite directly, never
|
|
198
|
+
// through teeWrite — the tee is the thing that was blind to it.
|
|
199
|
+
/** The three fields a fatal contributes. A rejection reason need not be an
|
|
200
|
+
* Error, in which case there is no stack and the stringified reason stands in
|
|
201
|
+
* for all three. */
|
|
202
|
+
function describeFatal(err) {
|
|
203
|
+
if (err instanceof Error) {
|
|
204
|
+
return { name: err.name, message: err.message, stack: err.stack ?? `${err.name}: ${err.message}` };
|
|
205
|
+
}
|
|
206
|
+
const s = String(err);
|
|
207
|
+
return { name: typeof err, message: s, stack: s };
|
|
208
|
+
}
|
|
209
|
+
/** Write a fatal's full stack as its own block, before the lifecycle line that
|
|
210
|
+
* summarises it. Multi-line by nature, which is why it is not a field on that
|
|
211
|
+
* line. Goes through appendSafe and the RAW writer — never teeWrite, which is
|
|
212
|
+
* the thing Node's own fatal printer writes beneath. */
|
|
213
|
+
function writeFatalStack(kind, stack) {
|
|
214
|
+
const block = `[mcp-helper] op=fatal-stack session=${SESSION_ID8} server=${SERVER_NAME} kind=${kind}\n${stack}\n`;
|
|
215
|
+
appendSafe(rawSinkPath, block);
|
|
216
|
+
try {
|
|
217
|
+
rawStderrWrite(block);
|
|
218
|
+
}
|
|
219
|
+
catch { /* stderr closed */ }
|
|
220
|
+
}
|
|
221
|
+
/** Task 2788 — has a stdio transport connected in this process?
|
|
222
|
+
*
|
|
223
|
+
* `server.connect(transport)` calls `StdioServerTransport.start()`, whose body
|
|
224
|
+
* is `this._stdin.on("data", …)`. So a stdin `data` listener exists if and only
|
|
225
|
+
* if a stdio transport has started, and `close()` removes it again — a fatal
|
|
226
|
+
* after the transport closed correctly reads as not connected.
|
|
227
|
+
*
|
|
228
|
+
* Read at the moment of the fatal rather than latched at first connect, so a
|
|
229
|
+
* transport that has since closed is not remembered as live. Nothing is
|
|
230
|
+
* patched: all 26 plugin entries construct a StdioServerTransport and none
|
|
231
|
+
* reads stdin itself, so this listener has exactly one source. The three
|
|
232
|
+
* channel services carry no stdio transport, so every fatal in them still
|
|
233
|
+
* exits — unchanged from before this task. */
|
|
234
|
+
function transportConnected() {
|
|
235
|
+
return process.stdin.listenerCount("data") > 0;
|
|
236
|
+
}
|
|
237
|
+
// Task 2788 — the disposition. `disposition=` names what THIS guard did with
|
|
238
|
+
// the process: `exit` means it called process.exit(1); `survived` means it
|
|
239
|
+
// returned and left the process running.
|
|
240
|
+
//
|
|
241
|
+
// Claude Code owns the spawn (Task 706: no ChildProcess handle; Task 989: the
|
|
242
|
+
// shim IS the server process) and its post-failure policy is one reconnect then
|
|
243
|
+
// stop — measured on 18 Aug, when the retry died the same way 2.6s in and the
|
|
244
|
+
// CLI never spawned again, leaving that session with `No such tool available`
|
|
245
|
+
// for the rest of its life. Nothing in this tree can change that policy, so not
|
|
246
|
+
// dying is the only mechanism available.
|
|
247
|
+
//
|
|
248
|
+
// The boundary is the connect, not a time window, because that is the fact that
|
|
249
|
+
// separates "a live server hit a bad request" from "this server never came up".
|
|
250
|
+
// Masking the second as the first would replace a visible outage with a silent
|
|
251
|
+
// one.
|
|
252
|
+
//
|
|
253
|
+
// * another listener present -> record and STAND DOWN, exactly as before. The
|
|
254
|
+
// email plugin installs its own pair (plugins/email/mcp/src/lib/setup-probe.ts)
|
|
255
|
+
// and deliberately survives errors it attributes to imapflow/nodemailer.
|
|
256
|
+
// The guard does not exit, so disposition=survived; if that handler then
|
|
257
|
+
// exits, the op=exit line that follows is the death record, and the census
|
|
258
|
+
// reads it as dark on its own terms.
|
|
259
|
+
// * sole listener, transport connected -> record and keep serving.
|
|
260
|
+
// * sole listener, no transport -> exit 1, which is Node's own default for an
|
|
261
|
+
// uncaught throw and (Node >= 15) for an unhandled rejection.
|
|
262
|
+
//
|
|
263
|
+
// The stack is written either way: surviving must not cost the diagnosis, which
|
|
264
|
+
// is what Task 2787 exists to preserve.
|
|
265
|
+
function onFatal(event, kind) {
|
|
266
|
+
return (err) => {
|
|
267
|
+
const sole = process.listenerCount(event) === 1;
|
|
268
|
+
const exiting = sole && !transportConnected();
|
|
269
|
+
const d = describeFatal(err);
|
|
270
|
+
// The stack first, so it is on disk before anything else can fail.
|
|
271
|
+
writeFatalStack(kind, d.stack);
|
|
272
|
+
emitLifecycle(`op=fatal session=${SESSION_ID8} server=${SERVER_NAME} kind=${kind} ` +
|
|
273
|
+
`deferred=${sole ? "no" : "yes"} disposition=${exiting ? "exit" : "survived"} ` +
|
|
274
|
+
`error=${JSON.stringify(JSON.stringify({ name: d.name, message: d.message }))}`, "error", false);
|
|
275
|
+
if (exiting)
|
|
276
|
+
process.exit(1);
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
process.on("uncaughtException", onFatal("uncaughtException", "uncaught"));
|
|
280
|
+
process.on("unhandledRejection", onFatal("unhandledRejection", "rejection"));
|
|
168
281
|
// op=exit, emitted once from the process "exit" event. Sync-only — the loop is
|
|
169
282
|
// stopping. When a catchable signal caused the exit, report code=— signal=<sig>
|
|
170
283
|
// to match the prior wrapper's format; otherwise code=<exit code> signal=—.
|
|
@@ -177,7 +290,7 @@ process.on("exit", (code) => {
|
|
|
177
290
|
const codeField = exitSignal ? "—" : String(code);
|
|
178
291
|
const level = exitSignal || code !== 0 ? "error" : "info";
|
|
179
292
|
emitLifecycle(`op=exit session=${SESSION_ID8} server=${SERVER_NAME} pid=${process.pid} ` +
|
|
180
|
-
`code=${codeField} signal=${exitSignal ?? "—"} lifetimeMs=${lifetimeMs} stderr-tail=${JSON.stringify(tail)}`, level);
|
|
293
|
+
`code=${codeField} signal=${exitSignal ?? "—"} lifetimeMs=${lifetimeMs} stderr-tail=${JSON.stringify(tail)}`, level, false);
|
|
181
294
|
});
|
|
182
295
|
emitLifecycle(`op=spawn session=${SESSION_ID8} server=${SERVER_NAME} pid=${process.pid} entry=${ENTRY}`, "info");
|
|
183
296
|
// Task 2356 — present argv as a direct `node <entry>` invocation before the
|
|
@@ -194,11 +307,20 @@ process.argv = [process.argv[0], ENTRY, ...process.argv.slice(3)];
|
|
|
194
307
|
// Run the real MCP server in THIS process. Dynamic import() (not top-level
|
|
195
308
|
// await — this file compiles to CommonJS) loads the ESM entry; a load-time
|
|
196
309
|
// failure mirrors the old child spawn-error path (op=error, exit 127). The
|
|
197
|
-
// op=exit handler is suppressed on this path so op=error stays the sole
|
|
310
|
+
// op=exit handler is suppressed on this path so op=error stays the sole
|
|
311
|
+
// lifecycle record.
|
|
312
|
+
//
|
|
313
|
+
// Task 2787 — this .catch() settles the rejection, so a throw during the
|
|
314
|
+
// entry's module EVALUATION never reaches the uncaughtException guard above.
|
|
315
|
+
// The stack is written here explicitly; without it a boot-time death leaves
|
|
316
|
+
// its message on the op=error line and nothing else — no type, no frames. The
|
|
317
|
+
// op=error line itself is unchanged: `describeFatal().message` is the same
|
|
318
|
+
// value the old inline expression produced.
|
|
198
319
|
import((0, node_url_1.pathToFileURL)(ENTRY).href).catch((err) => {
|
|
199
|
-
const
|
|
320
|
+
const d = describeFatal(err);
|
|
200
321
|
exitEmitted = true;
|
|
201
|
-
|
|
322
|
+
writeFatalStack("import", d.stack);
|
|
323
|
+
emitLifecycle(`op=error session=${SESSION_ID8} server=${SERVER_NAME} reason=${JSON.stringify(`import error: ${d.message}`)}`, "error");
|
|
202
324
|
process.exit(127);
|
|
203
325
|
});
|
|
204
326
|
//# sourceMappingURL=index.js.map
|
|
@@ -126,11 +126,11 @@ Five of those names are the group set: `chat_member` (another member's membershi
|
|
|
126
126
|
|
|
127
127
|
The last two are the channel pair, `channel_post` and `edited_channel_post`. Both are inside Telegram's default set, so they are named for the reason `chat_join_request` and the boost classes are: this install names its own list, and a class missing from it stops arriving with no error anywhere.
|
|
128
128
|
|
|
129
|
-
**Groups are a public-entry feature.** A public entry carries `groupPolicy` (`disabled` by default, or `allowlist`) and `allowGroups`, a list of numeric chat ids. `checkTelegramAccess` decides on the chat as well as the sender: a group or supergroup on an ADMIN entry is refused `admin-entry-no-groups` before any sender check, because admitting an operator there would put the admin persona, its standing rules and its tools into a room other people read. On a public entry the chat id must be in `allowGroups`; `dmPolicy` and `allowFrom` are never consulted for a group, because what is admitted is the chat and not its members. `telegram-webhook-register` refuses a bot whose `getMe` reports `can_read_all_group_messages: true` (privacy mode off in BotFather) or `can_join_groups: false
|
|
129
|
+
**Groups are a public-entry feature.** A public entry carries `groupPolicy` (`disabled` by default, or `allowlist`) and `allowGroups`, a list of numeric chat ids. `checkTelegramAccess` decides on the chat as well as the sender: a group or supergroup on an ADMIN entry is refused `admin-entry-no-groups` before any sender check, because admitting an operator there would put the admin persona, its standing rules and its tools into a room other people read. On a public entry the chat id must be in `allowGroups`; `dmPolicy` and `allowFrom` are never consulted for a group, because what is admitted is the chat and not its members. `telegram-webhook-register` refuses a bot whose `getMe` reports `can_read_all_group_messages: true` (privacy mode off in BotFather), before anything is registered or written. It does NOT refuse `can_join_groups: false`: Telegram imposes no such precondition, groups are opt-in and public-entry-only, and an admin or specialist bot can never hold a group at all, so the flag is recorded on `op=group-preflight` and reconciled by the hourly census instead.
|
|
130
130
|
|
|
131
131
|
A group is ONE conversation. `telegramConversationSubject` returns the chat id for a group and the sender id for a DM, and the gateway hub key, reply closure, store row and session id all take it — so five members of a room share one thread and one session rather than opening five. The turn's provenance line names who spoke: `Sender: <display name> (<id>)`. A message from a forum topic is answered in that topic; `is_topic_message` is what decides, because Telegram also stamps `message_thread_id` on an ordinary supergroup reply.
|
|
132
132
|
|
|
133
|
-
|
|
133
|
+
Three group failures emit nothing on their own and none reproduces on demand: a bot silently removed from a group, privacy mode turned off in BotFather after registration, and a bot configured for groups that cannot be added to one. The hourly `[telegram-audit] op=group-census bots=… groups=… present=… absent=… privacyOff=… cannotJoin=…` reconciles all three. `bots=` and `groups=` are load-bearing — `absent=0` on `groups=0` is an install with no groups, `absent=0` on `groups=6` is a check that has stopped running. `cannotJoin>0` means a bot carrying `groupPolicy: 'allowlist'` cannot be added to any group, whether or not `allowGroups` already holds an id — so an empty list is not evidence the count is wrong.
|
|
134
134
|
|
|
135
135
|
**Channels are a public-entry feature, and the allowlist gates both directions.** A public entry carries `channelPolicy` (`disabled` by default, or `allowlist`) and `allowChannels`. A channel update on any other role is refused before any sender check — `admin-entry-no-channels`, `specialist-entry-no-channels`, `unbound-entry-no-channels` — for the group refusal's reason one degree worse: a channel post reaches every subscriber and cannot be unsent. On a public entry the chat id must be in `allowChannels`; `dmPolicy`, `allowFrom` and `allowGroups` are never consulted, because a channel and a supergroup share an id shape but not a policy. A channel post carries no author at all (the Bot API: `Message.from` "may be empty for messages sent to channels"), so the turn names the channel by its title, and `telegramConversationSubject` returns the channel id.
|
|
136
136
|
|
|
@@ -25,10 +25,13 @@
|
|
|
25
25
|
* - `server.log` via the loopback log-ingest route — best-effort mirror of
|
|
26
26
|
* the [mcp-helper] lifecycle lines.
|
|
27
27
|
*
|
|
28
|
-
* Lifecycle lines, correlation key `session=<id8> server=<name
|
|
28
|
+
* Lifecycle lines, correlation key `session=<id8> server=<name>`:
|
|
29
29
|
* [mcp-helper] op=spawn ... pid= entry=
|
|
30
30
|
* [mcp-helper] op=boot ... head=<first stderr bytes>
|
|
31
31
|
* [mcp-helper] op=exit ... code= signal= lifetimeMs= stderr-tail=
|
|
32
|
+
* [mcp-helper] op=fatal ... kind=uncaught|rejection deferred=yes|no
|
|
33
|
+
* disposition=survived|exit error=
|
|
34
|
+
* preceded by an `op=fatal-stack` block carrying the full stack (Task 2787).
|
|
32
35
|
*
|
|
33
36
|
* Process model (Task 989): the shim IS the server's process. op=exit fires
|
|
34
37
|
* from process.on("exit"), so it covers a normal exit, a non-zero exit, an
|
|
@@ -37,6 +40,17 @@
|
|
|
37
40
|
* and leaves no op=exit line — the per-session stderr tail already on disk and
|
|
38
41
|
* Claude Code's own transport-drop are the evidence for that death mode.
|
|
39
42
|
*
|
|
43
|
+
* op=exit records THAT a fatal killed the process; it never records WHICH one,
|
|
44
|
+
* because Node's fatal printer writes beneath the tee (Task 2787). The op=fatal
|
|
45
|
+
* pair is what names the error.
|
|
46
|
+
*
|
|
47
|
+
* Task 2788 — a fatal no longer always kills. `disposition=` says what the guard
|
|
48
|
+
* did: the shim exits 1 only when it is the sole listener for the event AND no
|
|
49
|
+
* stdio transport is connected. A fatal on a connected transport is recorded
|
|
50
|
+
* and survived, because Claude Code's policy after a helper dies is one
|
|
51
|
+
* reconnect then stop, so killing a live server removes its whole tool surface
|
|
52
|
+
* for the rest of the session.
|
|
53
|
+
*
|
|
40
54
|
* The shim never writes to fd 1 (stdout) — that is the JSON-RPC channel.
|
|
41
55
|
*/
|
|
42
56
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -114,14 +128,22 @@ function postToServerLog(suffix, level) {
|
|
|
114
128
|
// Claude Code visibility, never re-teed), and a best-effort server.log mirror.
|
|
115
129
|
// `suffix` is the line body after the tag and carries no newline (the
|
|
116
130
|
// log-ingest route rejects newlines).
|
|
117
|
-
|
|
131
|
+
//
|
|
132
|
+
// Task 2787 — `mirror` is false for op=exit and op=fatal. Both fire while the
|
|
133
|
+
// loop is stopping, so the async fetch cannot flush: server.log held 2 op=exit
|
|
134
|
+
// lines against 160 op=spawn and 135 op=boot. The sync raw sink is the
|
|
135
|
+
// authoritative carrier for those two; posting them was a near-total loss
|
|
136
|
+
// dressed as a mirror. op=spawn/op=boot/op=error keep it — they fire while the
|
|
137
|
+
// loop is live and land.
|
|
138
|
+
function emitLifecycle(suffix, level, mirror = true) {
|
|
118
139
|
const line = `[mcp-helper] ${suffix}\n`;
|
|
119
140
|
appendSafe(rawSinkPath, line);
|
|
120
141
|
try {
|
|
121
142
|
rawStderrWrite(line);
|
|
122
143
|
}
|
|
123
144
|
catch { /* stderr closed */ }
|
|
124
|
-
|
|
145
|
+
if (mirror)
|
|
146
|
+
postToServerLog(suffix, level);
|
|
125
147
|
}
|
|
126
148
|
if (!ENTRY) {
|
|
127
149
|
emitLifecycle(`op=error session=${SESSION_ID8} server=${SERVER_NAME} reason="no entry given (argv[2] missing)"`, "error");
|
|
@@ -165,6 +187,97 @@ function onSignal(sig, code) {
|
|
|
165
187
|
process.on("SIGTERM", onSignal("SIGTERM", 143));
|
|
166
188
|
process.on("SIGINT", onSignal("SIGINT", 130));
|
|
167
189
|
process.on("SIGHUP", onSignal("SIGHUP", 129));
|
|
190
|
+
// Task 2787 — the fatal guard. Three measured facts drove it here rather than
|
|
191
|
+
// into the 26 plugin entries: Node's default fatal printer writes to fd 2
|
|
192
|
+
// BENEATH the JS `process.stderr.write` the tee replaces, so on both 18 Aug
|
|
193
|
+
// deaths the stack reached neither the raw sink nor Claude Code's own
|
|
194
|
+
// `Server stderr:` capture; the shim is the single seam every entry already
|
|
195
|
+
// loads through; and 26 copies would have to stay in step for ever.
|
|
196
|
+
//
|
|
197
|
+
// The stack is written through appendSafe and rawStderrWrite directly, never
|
|
198
|
+
// through teeWrite — the tee is the thing that was blind to it.
|
|
199
|
+
/** The three fields a fatal contributes. A rejection reason need not be an
|
|
200
|
+
* Error, in which case there is no stack and the stringified reason stands in
|
|
201
|
+
* for all three. */
|
|
202
|
+
function describeFatal(err) {
|
|
203
|
+
if (err instanceof Error) {
|
|
204
|
+
return { name: err.name, message: err.message, stack: err.stack ?? `${err.name}: ${err.message}` };
|
|
205
|
+
}
|
|
206
|
+
const s = String(err);
|
|
207
|
+
return { name: typeof err, message: s, stack: s };
|
|
208
|
+
}
|
|
209
|
+
/** Write a fatal's full stack as its own block, before the lifecycle line that
|
|
210
|
+
* summarises it. Multi-line by nature, which is why it is not a field on that
|
|
211
|
+
* line. Goes through appendSafe and the RAW writer — never teeWrite, which is
|
|
212
|
+
* the thing Node's own fatal printer writes beneath. */
|
|
213
|
+
function writeFatalStack(kind, stack) {
|
|
214
|
+
const block = `[mcp-helper] op=fatal-stack session=${SESSION_ID8} server=${SERVER_NAME} kind=${kind}\n${stack}\n`;
|
|
215
|
+
appendSafe(rawSinkPath, block);
|
|
216
|
+
try {
|
|
217
|
+
rawStderrWrite(block);
|
|
218
|
+
}
|
|
219
|
+
catch { /* stderr closed */ }
|
|
220
|
+
}
|
|
221
|
+
/** Task 2788 — has a stdio transport connected in this process?
|
|
222
|
+
*
|
|
223
|
+
* `server.connect(transport)` calls `StdioServerTransport.start()`, whose body
|
|
224
|
+
* is `this._stdin.on("data", …)`. So a stdin `data` listener exists if and only
|
|
225
|
+
* if a stdio transport has started, and `close()` removes it again — a fatal
|
|
226
|
+
* after the transport closed correctly reads as not connected.
|
|
227
|
+
*
|
|
228
|
+
* Read at the moment of the fatal rather than latched at first connect, so a
|
|
229
|
+
* transport that has since closed is not remembered as live. Nothing is
|
|
230
|
+
* patched: all 26 plugin entries construct a StdioServerTransport and none
|
|
231
|
+
* reads stdin itself, so this listener has exactly one source. The three
|
|
232
|
+
* channel services carry no stdio transport, so every fatal in them still
|
|
233
|
+
* exits — unchanged from before this task. */
|
|
234
|
+
function transportConnected() {
|
|
235
|
+
return process.stdin.listenerCount("data") > 0;
|
|
236
|
+
}
|
|
237
|
+
// Task 2788 — the disposition. `disposition=` names what THIS guard did with
|
|
238
|
+
// the process: `exit` means it called process.exit(1); `survived` means it
|
|
239
|
+
// returned and left the process running.
|
|
240
|
+
//
|
|
241
|
+
// Claude Code owns the spawn (Task 706: no ChildProcess handle; Task 989: the
|
|
242
|
+
// shim IS the server process) and its post-failure policy is one reconnect then
|
|
243
|
+
// stop — measured on 18 Aug, when the retry died the same way 2.6s in and the
|
|
244
|
+
// CLI never spawned again, leaving that session with `No such tool available`
|
|
245
|
+
// for the rest of its life. Nothing in this tree can change that policy, so not
|
|
246
|
+
// dying is the only mechanism available.
|
|
247
|
+
//
|
|
248
|
+
// The boundary is the connect, not a time window, because that is the fact that
|
|
249
|
+
// separates "a live server hit a bad request" from "this server never came up".
|
|
250
|
+
// Masking the second as the first would replace a visible outage with a silent
|
|
251
|
+
// one.
|
|
252
|
+
//
|
|
253
|
+
// * another listener present -> record and STAND DOWN, exactly as before. The
|
|
254
|
+
// email plugin installs its own pair (plugins/email/mcp/src/lib/setup-probe.ts)
|
|
255
|
+
// and deliberately survives errors it attributes to imapflow/nodemailer.
|
|
256
|
+
// The guard does not exit, so disposition=survived; if that handler then
|
|
257
|
+
// exits, the op=exit line that follows is the death record, and the census
|
|
258
|
+
// reads it as dark on its own terms.
|
|
259
|
+
// * sole listener, transport connected -> record and keep serving.
|
|
260
|
+
// * sole listener, no transport -> exit 1, which is Node's own default for an
|
|
261
|
+
// uncaught throw and (Node >= 15) for an unhandled rejection.
|
|
262
|
+
//
|
|
263
|
+
// The stack is written either way: surviving must not cost the diagnosis, which
|
|
264
|
+
// is what Task 2787 exists to preserve.
|
|
265
|
+
function onFatal(event, kind) {
|
|
266
|
+
return (err) => {
|
|
267
|
+
const sole = process.listenerCount(event) === 1;
|
|
268
|
+
const exiting = sole && !transportConnected();
|
|
269
|
+
const d = describeFatal(err);
|
|
270
|
+
// The stack first, so it is on disk before anything else can fail.
|
|
271
|
+
writeFatalStack(kind, d.stack);
|
|
272
|
+
emitLifecycle(`op=fatal session=${SESSION_ID8} server=${SERVER_NAME} kind=${kind} ` +
|
|
273
|
+
`deferred=${sole ? "no" : "yes"} disposition=${exiting ? "exit" : "survived"} ` +
|
|
274
|
+
`error=${JSON.stringify(JSON.stringify({ name: d.name, message: d.message }))}`, "error", false);
|
|
275
|
+
if (exiting)
|
|
276
|
+
process.exit(1);
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
process.on("uncaughtException", onFatal("uncaughtException", "uncaught"));
|
|
280
|
+
process.on("unhandledRejection", onFatal("unhandledRejection", "rejection"));
|
|
168
281
|
// op=exit, emitted once from the process "exit" event. Sync-only — the loop is
|
|
169
282
|
// stopping. When a catchable signal caused the exit, report code=— signal=<sig>
|
|
170
283
|
// to match the prior wrapper's format; otherwise code=<exit code> signal=—.
|
|
@@ -177,7 +290,7 @@ process.on("exit", (code) => {
|
|
|
177
290
|
const codeField = exitSignal ? "—" : String(code);
|
|
178
291
|
const level = exitSignal || code !== 0 ? "error" : "info";
|
|
179
292
|
emitLifecycle(`op=exit session=${SESSION_ID8} server=${SERVER_NAME} pid=${process.pid} ` +
|
|
180
|
-
`code=${codeField} signal=${exitSignal ?? "—"} lifetimeMs=${lifetimeMs} stderr-tail=${JSON.stringify(tail)}`, level);
|
|
293
|
+
`code=${codeField} signal=${exitSignal ?? "—"} lifetimeMs=${lifetimeMs} stderr-tail=${JSON.stringify(tail)}`, level, false);
|
|
181
294
|
});
|
|
182
295
|
emitLifecycle(`op=spawn session=${SESSION_ID8} server=${SERVER_NAME} pid=${process.pid} entry=${ENTRY}`, "info");
|
|
183
296
|
// Task 2356 — present argv as a direct `node <entry>` invocation before the
|
|
@@ -194,11 +307,20 @@ process.argv = [process.argv[0], ENTRY, ...process.argv.slice(3)];
|
|
|
194
307
|
// Run the real MCP server in THIS process. Dynamic import() (not top-level
|
|
195
308
|
// await — this file compiles to CommonJS) loads the ESM entry; a load-time
|
|
196
309
|
// failure mirrors the old child spawn-error path (op=error, exit 127). The
|
|
197
|
-
// op=exit handler is suppressed on this path so op=error stays the sole
|
|
310
|
+
// op=exit handler is suppressed on this path so op=error stays the sole
|
|
311
|
+
// lifecycle record.
|
|
312
|
+
//
|
|
313
|
+
// Task 2787 — this .catch() settles the rejection, so a throw during the
|
|
314
|
+
// entry's module EVALUATION never reaches the uncaughtException guard above.
|
|
315
|
+
// The stack is written here explicitly; without it a boot-time death leaves
|
|
316
|
+
// its message on the op=error line and nothing else — no type, no frames. The
|
|
317
|
+
// op=error line itself is unchanged: `describeFatal().message` is the same
|
|
318
|
+
// value the old inline expression produced.
|
|
198
319
|
import((0, node_url_1.pathToFileURL)(ENTRY).href).catch((err) => {
|
|
199
|
-
const
|
|
320
|
+
const d = describeFatal(err);
|
|
200
321
|
exitEmitted = true;
|
|
201
|
-
|
|
322
|
+
writeFatalStack("import", d.stack);
|
|
323
|
+
emitLifecycle(`op=error session=${SESSION_ID8} server=${SERVER_NAME} reason=${JSON.stringify(`import error: ${d.message}`)}`, "error");
|
|
202
324
|
process.exit(127);
|
|
203
325
|
});
|
|
204
326
|
//# sourceMappingURL=index.js.map
|
|
@@ -236,11 +236,18 @@ describe("Task 2616 — group pre-flight", () => {
|
|
|
236
236
|
// Nothing registered and nothing written: the refusal is before the stamp.
|
|
237
237
|
expect(botsIn(configPath)).toEqual([]);
|
|
238
238
|
});
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
239
|
+
// Task 2784 — a bot that cannot join groups registers. Groups are opt-in,
|
|
240
|
+
// default `disabled`, and live on public entries only; this fixture is an
|
|
241
|
+
// ADMIN bot, which can never hold a group at all, so the flag decides
|
|
242
|
+
// nothing here. The refusal it replaced made a group capability the
|
|
243
|
+
// precondition for registering a DM-only bot.
|
|
244
|
+
it("registers a bot that cannot be added to groups, and records the flag", async () => {
|
|
245
|
+
const { platformRoot, configPath } = stubAccount();
|
|
246
|
+
const lines = [];
|
|
247
|
+
const out = await webhookRegister({ botToken: TOKEN, webhookUrl: URL_OK, role: "admin" }, deps(platformRoot, lines, stubGetMe({ can_read_all_group_messages: false, can_join_groups: false })));
|
|
248
|
+
expect(out.isError).toBe(false);
|
|
249
|
+
expect(botsIn(configPath)).toHaveLength(1);
|
|
250
|
+
expect(lines.join("\n")).toContain("op=group-preflight botId=8861756902 canJoinGroups=false canReadAllGroupMessages=false verdict=ok");
|
|
244
251
|
});
|
|
245
252
|
it("registers a bot with privacy on and joining allowed", async () => {
|
|
246
253
|
const { platformRoot, configPath } = stubAccount();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-register.test.js","sourceRoot":"","sources":["../../src/__tests__/webhook-register.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webhook-register.test.js","sourceRoot":"","sources":["../../src/__tests__/webhook-register.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-register.d.ts","sourceRoot":"","sources":["../../src/tools/webhook-register.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;8DAC0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAID;;;;;;;uBAOuB;AACvB,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"webhook-register.d.ts","sourceRoot":"","sources":["../../src/tools/webhook-register.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,YAAY,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;8DAC0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC3C;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAID;;;;;;;uBAOuB;AACvB,wBAAsB,eAAe,CACnC,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAyPhC"}
|
|
@@ -109,6 +109,19 @@ export async function webhookRegister(params, deps) {
|
|
|
109
109
|
// group it is in, and nothing else on this install would say so: no update
|
|
110
110
|
// names the setting and the flood reads as ordinary traffic.
|
|
111
111
|
//
|
|
112
|
+
// Task 2784 — `can_join_groups` is RECORDED here and refuses nothing.
|
|
113
|
+
// Telegram imposes no such precondition: `setWebhook` takes seven optional
|
|
114
|
+
// parameters and names no group requirement, and the refusal this replaced
|
|
115
|
+
// returned before `setWebhook` was ever called, so Telegram was never asked.
|
|
116
|
+
// Groups are opt-in (`groupPolicy` defaults to `disabled`) and exist on
|
|
117
|
+
// public entries only, while an admin or specialist entry refuses a group
|
|
118
|
+
// outright — so for two of the three roles the flag is unusable by
|
|
119
|
+
// construction, and for the third no group is configured at the moment this
|
|
120
|
+
// runs, because `groupPolicy` and `allowGroups` are not registration
|
|
121
|
+
// parameters. The condition worth reporting is a bot ALREADY configured for
|
|
122
|
+
// groups that cannot be added to one, which only the hourly
|
|
123
|
+
// `op=group-census` can see.
|
|
124
|
+
//
|
|
112
125
|
// A flag Telegram did not send refuses nothing and prints `absent`, never
|
|
113
126
|
// `false`: `false` would claim Telegram had told us privacy was on when it
|
|
114
127
|
// had told us nothing, and this line is the only standing record of what it
|
|
@@ -117,8 +130,7 @@ export async function webhookRegister(params, deps) {
|
|
|
117
130
|
const rawJoin = meData.result?.can_join_groups;
|
|
118
131
|
const say = (v) => (v === undefined ? "absent" : String(v));
|
|
119
132
|
const privacyOff = rawReadAll === true;
|
|
120
|
-
const
|
|
121
|
-
const groupVerdict = privacyOff || cannotJoin ? "refused" : "ok";
|
|
133
|
+
const groupVerdict = privacyOff ? "refused" : "ok";
|
|
122
134
|
log(`[telegram-webhook] op=group-preflight botId=${botId} canJoinGroups=${say(rawJoin)} ` +
|
|
123
135
|
`canReadAllGroupMessages=${say(rawReadAll)} verdict=${groupVerdict}`);
|
|
124
136
|
if (privacyOff) {
|
|
@@ -126,10 +138,6 @@ export async function webhookRegister(params, deps) {
|
|
|
126
138
|
`message anyone types. In BotFather: /mybots, pick this bot, Bot Settings, Group Privacy, ` +
|
|
127
139
|
`Turn on. Then register again. Nothing was registered or written.`);
|
|
128
140
|
}
|
|
129
|
-
if (cannotJoin) {
|
|
130
|
-
return fail(`@${botUsername} cannot be added to groups. In BotFather: /mybots, pick this bot, Bot Settings, ` +
|
|
131
|
-
`Allow Groups?, Turn on. Then register again. Nothing was registered or written.`);
|
|
132
|
-
}
|
|
133
141
|
// Stamped immediately before registering: the probe below only treats an
|
|
134
142
|
// error Telegram saw AT OR AFTER this moment as this registration's.
|
|
135
143
|
const registeredAtSec = nowSec();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-register.js","sourceRoot":"","sources":["../../src/tools/webhook-register.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"webhook-register.js","sourceRoot":"","sources":["../../src/tools/webhook-register.ts"],"names":[],"mappings":"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"}
|
|
@@ -161,10 +161,10 @@ Tell the operator the bot is connected, which role it has, and that messaging th
|
|
|
161
161
|
- **Chat id claimed by two bots** — a scheduled dispatch logs `[schedule-inject] op=telegram-destination-ambiguous … dispatched=no`. Two bots, in one account or two, list the same numeric ID in their `adminUsers`. Remove it from the one that should not have it; the dispatch refuses rather than guessing which bot the person should hear from.
|
|
162
162
|
- **A secret file with no bot, or a bot with no secret file** — `[telegram-audit] op=secret-orphan botId=… side=file|entry`. Neither shows up any other way. `side=entry` means that bot cannot receive anything until it re-registers; `side=file` is left-over state from a bot that has been removed.
|
|
163
163
|
- **Group privacy mode off at registration** — register returns an error naming BotFather's Group Privacy setting and logs `op=group-preflight … verdict=refused`. Nothing was registered and nothing written. Turn privacy on, then register again.
|
|
164
|
-
- **The bot cannot be added to groups** — the same refusal, naming BotFather's "Allow Groups?" setting instead.
|
|
165
164
|
- **Admin bot in a group** — `[telegram-inbound] op=group-refused … reason=admin-entry-no-groups`, and no turn runs. This is not a misconfiguration to fix; the admin persona never enters a group. Use a public bot for the room.
|
|
166
165
|
- **Group not allowlisted** — `op=group-refused … reason=not-in-allowGroups` (the id is missing from `allowGroups`) or `reason=group-policy-disabled` (the entry has no `groupPolicy: 'allowlist'` at all). Both are silent to everyone in the room, so check the log rather than assuming the bot is broken.
|
|
167
166
|
- **Privacy mode turned off AFTER registration** — nothing fails and no update says so; the bot simply starts reading every message in the room. The hourly `[telegram-audit] op=group-census … privacyOff=<n>` is the only thing that reports it. `privacyOff>0` needs the BotFather setting turned back on.
|
|
167
|
+
- **Bot configured for groups that cannot be added to one** — "Allow Groups?" is off in BotFather, so the bot never enters a room: no inbound arrives and every send fails, one at a time, with nothing naming the cause. Counted for any `groupPolicy: 'allowlist'` bot, whether or not `allowGroups` already holds an id. The hourly `[telegram-audit] op=group-census … cannotJoin=<n>` is the only thing that reports it. `cannotJoin>0` needs the BotFather setting turned on. Registration does not refuse this, because at registration time no bot has a group yet.
|
|
168
168
|
- **Bot removed from a group** — every later send fails and no inbound arrives again. `op=chat-member-group … status=kicked` catches it live; if the install was down when it happened, the hourly `op=group-census … absent=<n>` is what surfaces it. Read `bots=` and `groups=` on that line before trusting `absent=0`: zero absent out of zero groups is an install with no groups, not a healthy one.
|
|
169
169
|
- **Admin or specialist bot in a channel** — `[telegram-inbound] op=channel-refused … reason=admin-entry-no-channels` (or `specialist-entry-no-channels`, or `unbound-entry-no-channels`), and no turn runs. Not a misconfiguration to fix; those personas never enter a channel. Use a public bot.
|
|
170
170
|
- **Channel not allowlisted** — `op=channel-refused … reason=not-in-allowChannels` (the id is missing from `allowChannels`) or `reason=channel-policy-disabled` (the entry has no `channelPolicy: 'allowlist'` at all). Both are silent to every subscriber, so read the log rather than assuming the bot is broken. The same two states also refuse every send, logged as `[telegram-outbound] op=channel-send … allowed=no reason=not-in-allowChannels`.
|