@rubytech/create-maxy-code 0.1.281 → 0.1.283
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/config/brand.json +0 -1
- package/payload/platform/plugins/admin/PLUGIN.md +2 -1
- package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-compliance.test.sh +154 -0
- package/payload/platform/plugins/admin/hooks/__tests__/prompt-optimiser-directive.test.sh +24 -0
- package/payload/platform/plugins/admin/hooks/prompt-optimiser-compliance.sh +174 -0
- package/payload/platform/plugins/admin/hooks/prompt-optimiser-directive.sh +22 -2
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +5 -5
- package/payload/platform/plugins/business-assistant/skills/e-sign/SKILL.md +378 -56
- package/payload/platform/plugins/cloudflare/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/cloudflare/PLUGIN.md +5 -5
- package/payload/platform/plugins/cloudflare/references/api.md +107 -34
- package/payload/platform/plugins/cloudflare/references/d1-data-capture.md +29 -21
- package/payload/platform/plugins/cloudflare/references/dashboard-guide.md +3 -2
- package/payload/platform/plugins/cloudflare/references/hosting-sites.md +7 -5
- package/payload/platform/plugins/cloudflare/references/manual-setup.md +3 -2
- package/payload/platform/plugins/cloudflare/skills/cloudflare/SKILL.md +6 -6
- package/payload/platform/plugins/docs/references/cloudflare.md +1 -1
- package/payload/platform/plugins/docs/references/telegram-guide.md +3 -3
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.js +25 -1
- package/payload/platform/plugins/email/mcp/dist/__tests__/attachment-resolve.test.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts +7 -0
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js +9 -0
- package/payload/platform/plugins/email/mcp/dist/lib/attachment-resolve.js.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.d.ts.map +1 -1
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js +6 -2
- package/payload/platform/plugins/email/mcp/dist/tools/email-ingest.js.map +1 -1
- package/payload/platform/plugins/prompt-optimiser/skills/prompt-optimiser/SKILL.md +1 -0
- package/payload/platform/plugins/telegram/PLUGIN.md +7 -2
- package/payload/platform/plugins/telegram/mcp/dist/index.js +66 -11
- package/payload/platform/plugins/telegram/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.d.ts +6 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.js +20 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-token.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts +21 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js +52 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/account-write.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/message.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/message.js +5 -2
- package/payload/platform/plugins/telegram/mcp/dist/tools/message.js.map +1 -1
- package/payload/platform/plugins/telegram/references/setup-guide.md +10 -7
- package/payload/platform/plugins/telegram/skills/configure/SKILL.md +79 -0
- package/payload/platform/plugins/whatsapp/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/whatsapp/PLUGIN.md +7 -11
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js +10 -56
- package/payload/platform/plugins/whatsapp/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/whatsapp/references/channels-whatsapp.md +26 -2
- package/payload/platform/plugins/whatsapp/skills/manage-whatsapp-config/SKILL.md +9 -14
- package/payload/platform/scripts/setup-account.sh +7 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +0 -2
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/http-server.js +80 -3
- package/payload/platform/services/claude-session-manager/dist/http-server.js.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts +6 -0
- package/payload/platform/services/whatsapp-channel/dist/notification.d.ts.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/notification.js +14 -0
- package/payload/platform/services/whatsapp-channel/dist/notification.js.map +1 -1
- package/payload/platform/services/whatsapp-channel/dist/server.js +5 -3
- package/payload/platform/services/whatsapp-channel/dist/server.js.map +1 -1
- package/payload/platform/templates/specialists/agents/personal-assistant.md +1 -1
- package/payload/server/public/assets/AdminShell-8Y7-maNi.js +1 -0
- package/payload/server/public/assets/{admin-0_VxffD5.js → admin-DyuZ4NT5.js} +1 -1
- package/payload/server/public/assets/{browser-Cxjkhtsk.js → browser-XrVAUQdG.js} +1 -1
- package/payload/server/public/assets/{data-BOgwOWnw.js → data-tcu3MXmK.js} +1 -1
- package/payload/server/public/assets/{graph-BqD2GjQd.js → graph-I4GyC2MW.js} +1 -1
- package/payload/server/public/browser.html +2 -2
- package/payload/server/public/data.html +2 -2
- package/payload/server/public/graph.html +2 -2
- package/payload/server/public/index.html +2 -2
- package/payload/server/server.js +882 -767
- package/payload/server/public/assets/AdminShell-FO766lOW.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: whatsapp
|
|
3
|
-
description: WhatsApp messaging channel — Baileys QR pairing, DM
|
|
3
|
+
description: WhatsApp messaging channel — Baileys QR pairing, DM policy enforcement, inbound routing, business hours gating, conversation browsing. Reply-only in DMs (no agent-initiated send, Task 723); observation-only in groups (the agent never responds in a group, Task 726).
|
|
4
4
|
tools:
|
|
5
5
|
- name: whatsapp-login-start
|
|
6
6
|
publicAllowlist: false
|
|
@@ -14,12 +14,6 @@ tools:
|
|
|
14
14
|
- name: whatsapp-disconnect
|
|
15
15
|
publicAllowlist: false
|
|
16
16
|
adminAllowlist: false
|
|
17
|
-
- name: whatsapp-send
|
|
18
|
-
publicAllowlist: false
|
|
19
|
-
adminAllowlist: false
|
|
20
|
-
- name: whatsapp-send-document
|
|
21
|
-
publicAllowlist: false
|
|
22
|
-
adminAllowlist: false
|
|
23
17
|
- name: whatsapp-config
|
|
24
18
|
publicAllowlist: false
|
|
25
19
|
adminAllowlist: false
|
|
@@ -63,7 +57,7 @@ Activate when the user asks about WhatsApp — connecting, linking, checking sta
|
|
|
63
57
|
- QR-code-based WhatsApp pairing via Baileys (linked device) — `whatsapp-login-start` returns the QR as a scannable Unicode block printed on the PTY surface (the only operator surface); the operator scans it directly from the terminal output
|
|
64
58
|
- Multi-account support (optional, multiple linked numbers)
|
|
65
59
|
- Inbound message routing — sender-keyed `claude` PTY sessions via the loopback claude-session-manager (admin phone → admin agent, public → resolved public agent); a "typing…" presence is sent on receipt as an ack while the agent turn runs
|
|
66
|
-
- Group
|
|
60
|
+
- Group observation — group messages are stored, persisted, and browsable, but the agent never responds in a group (observation-only, Task 726)
|
|
67
61
|
- DM policy enforcement (open, allowlist, disabled)
|
|
68
62
|
- Conversation browsing — list active conversations, read message history, inspect group metadata
|
|
69
63
|
- Inbound voice note transcription (OGG Opus → text via local whisper.cpp)
|
|
@@ -82,9 +76,11 @@ Four tools for reading WhatsApp conversation context. The first two read from th
|
|
|
82
76
|
| `whatsapp-conversation-graph-state` | Persisted `:Message:WhatsAppMessage` rows attached to the `:Conversation` (sessionKey-keyed) plus the resolved `sessionId`, the cypher string, and a divergence header reporting graph-row count vs in-memory count. Use when the question is "what got persisted" — never compose the cypher manually |
|
|
83
77
|
| `whatsapp-group-info` | Group metadata from WhatsApp servers — subject, description, participants with admin flags, creation date. Requires active connection |
|
|
84
78
|
|
|
85
|
-
## Group access —
|
|
79
|
+
## Group access — observation-only (Task 726)
|
|
80
|
+
|
|
81
|
+
The agent never responds in a group. `checkGroupAccess` ([`inbound/access-control.ts`](../../ui/app/lib/whatsapp/inbound/access-control.ts)) is a structural observe-only deny — it always returns `allowed:false reason:group-observe-only`, so every group inbound ends at the manager's `!accessResult.allowed` return before dispatch. There is no group policy, allowlist, per-group activation, or @mention setting; setting any of those keys is a `.strict()` schema rejection, not a silently-dead key. A belt invariant in the manager's `reply` closure refuses any `@g.us` recipient and logs `op=group-reply-blocked` — that line is the leak signature if a dispatch path ever leaks.
|
|
86
82
|
|
|
87
|
-
|
|
83
|
+
Observation is fully preserved: group messages are stored in the ring buffer, recorded as activity, and persisted to the graph at the access-independent capture site, and remain visible via `whatsapp-conversations`, `whatsapp-group-info`, `list-groups`, and the `/whatsapp` reader. This is a Meta-policy constraint (automated messaging from an unofficial linked device is penalised, the same class as the reply-only DM posture); for agent-driven group messaging, Telegram is the recommended channel.
|
|
88
84
|
|
|
89
85
|
## Live persistence
|
|
90
86
|
|
|
@@ -97,7 +93,7 @@ Every `messages.upsert` event (both `notify` and `append`, both `fromMe` directi
|
|
|
97
93
|
| Skill | Purpose |
|
|
98
94
|
|-------|---------|
|
|
99
95
|
| [connect-whatsapp](skills/connect-whatsapp/SKILL.md) | Complete WhatsApp setup — QR pairing, admin phone registration, public agent selection |
|
|
100
|
-
| [manage-whatsapp-config](skills/manage-whatsapp-config/SKILL.md) | Guided WhatsApp settings editing —
|
|
96
|
+
| [manage-whatsapp-config](skills/manage-whatsapp-config/SKILL.md) | Guided WhatsApp settings editing — DM policy, limits, acknowledgement |
|
|
101
97
|
|
|
102
98
|
## References
|
|
103
99
|
|
|
@@ -34,8 +34,6 @@ function getBaseUrl(toolName) {
|
|
|
34
34
|
throw err;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
// Maxy account ID — used for file path validation in send-document.
|
|
38
|
-
const MAXY_ACCOUNT_ID = process.env.ACCOUNT_ID;
|
|
39
37
|
const server = new McpServer({
|
|
40
38
|
name: "maxy-whatsapp",
|
|
41
39
|
version: "0.1.0",
|
|
@@ -164,39 +162,21 @@ server.tool("whatsapp-disconnect", "Disconnect a WhatsApp account. Closes the Ba
|
|
|
164
162
|
return textResult(`Disconnect failed: ${err instanceof Error ? err.message : String(err)}`, true);
|
|
165
163
|
}
|
|
166
164
|
});
|
|
167
|
-
// ─── whatsapp-send ─────────────────────────────────────────────────────
|
|
168
|
-
server.tool("whatsapp-send", "Send a WhatsApp message to a phone number or group. The target can be an E.164 phone number or a WhatsApp group JID.", {
|
|
169
|
-
to: z.string().describe("Target phone number (E.164) or group JID"),
|
|
170
|
-
text: z.string().describe("Message text to send"),
|
|
171
|
-
accountId: z.string().optional().describe('Account to send from (default: "default")'),
|
|
172
|
-
}, async ({ to, text, accountId }) => {
|
|
173
|
-
try {
|
|
174
|
-
const result = await callApi("whatsapp-send", "/api/whatsapp/send", "POST", { to, text, accountId });
|
|
175
|
-
if (result.error)
|
|
176
|
-
return textResult(`Send failed: ${result.error}`, true);
|
|
177
|
-
return textResult(`Message sent via WhatsApp${result.messageId ? ` (ID: ${result.messageId})` : ""}`);
|
|
178
|
-
}
|
|
179
|
-
catch (err) {
|
|
180
|
-
return textResult(`Send failed: ${err instanceof Error ? err.message : String(err)}`, true);
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
165
|
// ─── whatsapp-config ──────────────────────────────────────────────────
|
|
184
166
|
server.tool("whatsapp-config", [
|
|
185
167
|
"Manage WhatsApp configuration. Actions:",
|
|
186
168
|
" - add-admin-phone (register a phone as admin — messages from it route to admin agent)",
|
|
187
169
|
" - remove-admin-phone (demote to public routing)",
|
|
188
170
|
" - list-admin-phones (show current admin phones)",
|
|
189
|
-
" - set-public-agent (set the top-level public-agent slug for non-admin DMs
|
|
190
|
-
" - get-public-agent (show the resolved public-agent slug
|
|
191
|
-
" - set-group-public-agent (set a per-group public-agent override; requires `groupJid` and `slug`; optional `accountId` defaults to 'default')",
|
|
192
|
-
" - unset-group-public-agent (remove a per-group override; requires `groupJid`; optional `accountId`)",
|
|
171
|
+
" - set-public-agent (set the top-level public-agent slug for non-admin DMs; requires `slug`)",
|
|
172
|
+
" - get-public-agent (show the resolved public-agent slug for DMs)",
|
|
193
173
|
" - list-public-agents (slug and display name for each available public agent)",
|
|
194
174
|
" - update-config (change any WhatsApp config field — pass `fields` as a JSON string of field/value pairs)",
|
|
195
175
|
" - get-config (return the full current WhatsApp config object)",
|
|
196
176
|
" - schema (return all config field definitions — names, types, defaults, descriptions, constraints)",
|
|
197
177
|
" - list-groups (return WhatsApp groups the account belongs to — names, JIDs, participant counts)",
|
|
198
|
-
"
|
|
199
|
-
"Public-agent precedence at routing time: per-
|
|
178
|
+
"Groups are observation-only — the agent never responds in a group, so there is no per-group config. list-groups still lists them for reference.",
|
|
179
|
+
"Public-agent precedence at routing time (DMs): per-account default → top-level default.",
|
|
200
180
|
"Phone numbers must be E.164 format (e.g. +441234567890).",
|
|
201
181
|
].join("\n"), {
|
|
202
182
|
action: z.enum([
|
|
@@ -205,8 +185,6 @@ server.tool("whatsapp-config", [
|
|
|
205
185
|
"list-admin-phones",
|
|
206
186
|
"set-public-agent",
|
|
207
187
|
"get-public-agent",
|
|
208
|
-
"set-group-public-agent",
|
|
209
|
-
"unset-group-public-agent",
|
|
210
188
|
"list-public-agents",
|
|
211
189
|
"update-config",
|
|
212
190
|
"get-config",
|
|
@@ -214,11 +192,10 @@ server.tool("whatsapp-config", [
|
|
|
214
192
|
"list-groups",
|
|
215
193
|
]).describe("The config action to perform"),
|
|
216
194
|
phone: z.string().optional().describe("Phone number in E.164 format (required for add/remove admin phone)"),
|
|
217
|
-
slug: z.string().optional().describe("Agent slug (required for set-public-agent
|
|
218
|
-
groupJid: z.string().optional().describe("Group JID ending in @g.us (required for set-group-public-agent and unset-group-public-agent; optional for get-public-agent to resolve the per-group chain)"),
|
|
195
|
+
slug: z.string().optional().describe("Agent slug (required for set-public-agent)"),
|
|
219
196
|
fields: z.string().optional().describe('JSON string of config fields to update (required for update-config, e.g. \'{"dmPolicy":"open","allowFrom":["*"]}\')'),
|
|
220
|
-
accountId: z.string().optional().describe('Account ID (default: "default"). Used by list-groups
|
|
221
|
-
}, async ({ action, phone, slug,
|
|
197
|
+
accountId: z.string().optional().describe('Account ID (default: "default"). Used by list-groups.'),
|
|
198
|
+
}, async ({ action, phone, slug, fields, accountId }) => {
|
|
222
199
|
try {
|
|
223
200
|
// Parse fields JSON string for update-config
|
|
224
201
|
let parsedFields;
|
|
@@ -230,7 +207,7 @@ server.tool("whatsapp-config", [
|
|
|
230
207
|
return textResult('Invalid JSON in "fields" parameter. Expected a JSON object, e.g. {"dmPolicy":"open","allowFrom":["*"]}', true);
|
|
231
208
|
}
|
|
232
209
|
}
|
|
233
|
-
const result = await callApi("whatsapp-config", "/api/whatsapp/config", "POST", { action, phone, slug,
|
|
210
|
+
const result = await callApi("whatsapp-config", "/api/whatsapp/config", "POST", { action, phone, slug, fields: parsedFields, accountId });
|
|
234
211
|
if (!result.ok)
|
|
235
212
|
return textResult(result.error ?? "Config operation failed.", true);
|
|
236
213
|
if (action === "list-admin-phones") {
|
|
@@ -243,14 +220,10 @@ server.tool("whatsapp-config", [
|
|
|
243
220
|
const agentSlug = result.slug;
|
|
244
221
|
const source = result.source;
|
|
245
222
|
if (!agentSlug) {
|
|
246
|
-
return textResult(
|
|
247
|
-
? `No public agent resolves for group ${groupJid}. Set one with set-group-public-agent, or set a top-level fallback with set-public-agent.`
|
|
248
|
-
: "No public agent configured for WhatsApp. Use set-public-agent to assign one.");
|
|
223
|
+
return textResult("No public agent configured for WhatsApp. Use set-public-agent to assign one.");
|
|
249
224
|
}
|
|
250
225
|
const sourceLabel = source ? ` (source: ${source})` : "";
|
|
251
|
-
return textResult(
|
|
252
|
-
? `Resolved public agent for group ${groupJid}: ${agentSlug}${sourceLabel}`
|
|
253
|
-
: `WhatsApp public agent: ${agentSlug}${sourceLabel}`);
|
|
226
|
+
return textResult(`WhatsApp public agent: ${agentSlug}${sourceLabel}`);
|
|
254
227
|
}
|
|
255
228
|
if (action === "list-public-agents") {
|
|
256
229
|
const agents = result.agents ?? [];
|
|
@@ -281,25 +254,6 @@ server.tool("whatsapp-config", [
|
|
|
281
254
|
return textResult(`Config operation failed: ${err instanceof Error ? err.message : String(err)}`, true);
|
|
282
255
|
}
|
|
283
256
|
});
|
|
284
|
-
// ─── whatsapp-send-document ───────────────────────────────────────────
|
|
285
|
-
server.tool("whatsapp-send-document", "Send a file as a WhatsApp document message. The file is read from disk and sent as a downloadable document attachment. The file must be within the account directory tree.", {
|
|
286
|
-
to: z.string().describe("Target phone number (E.164) or group JID"),
|
|
287
|
-
filePath: z.string().describe("Absolute path to the file to send"),
|
|
288
|
-
caption: z.string().optional().describe("Optional caption text to accompany the document"),
|
|
289
|
-
accountId: z.string().optional().describe('Account to send from (default: "default")'),
|
|
290
|
-
}, async ({ to, filePath, caption, accountId }) => {
|
|
291
|
-
try {
|
|
292
|
-
const result = await callApi("whatsapp-send-document", "/api/whatsapp/send-document", "POST", {
|
|
293
|
-
to, filePath, caption, accountId, maxyAccountId: MAXY_ACCOUNT_ID,
|
|
294
|
-
});
|
|
295
|
-
if (result.error)
|
|
296
|
-
return textResult(`Send failed: ${result.error}`, true);
|
|
297
|
-
return textResult(`Document sent via WhatsApp${result.messageId ? ` (ID: ${result.messageId})` : ""}`);
|
|
298
|
-
}
|
|
299
|
-
catch (err) {
|
|
300
|
-
return textResult(`Send failed: ${err instanceof Error ? err.message : String(err)}`, true);
|
|
301
|
-
}
|
|
302
|
-
});
|
|
303
257
|
// ─── whatsapp-conversations ──────────────────────────────────────────
|
|
304
258
|
server.tool("whatsapp-conversations", "List WhatsApp conversations with recent message activity. Returns each conversation's JID, type (group or DM), last message timestamp, and message count. Messages are from the in-memory store (clears on server restart). Use this to see which conversations have recent activity before retrieving specific messages with whatsapp-messages.", {
|
|
305
259
|
accountId: z.string().optional().describe('Account ID (default: "default")'),
|
|
@@ -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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"}
|
|
@@ -6,6 +6,20 @@ WhatsApp connects via Baileys multi-account:
|
|
|
6
6
|
|----------|----------|------------|
|
|
7
7
|
| **baileys** | All WhatsApp accounts | WebSocket via QR code (linked device) |
|
|
8
8
|
|
|
9
|
+
## Reply-only posture (Task 723)
|
|
10
|
+
|
|
11
|
+
The agent has **no tool to initiate a WhatsApp message to an arbitrary number.** The `whatsapp-send` and `whatsapp-send-document` MCP tools were removed after an agent-initiated cold first-contact send (to a number with no prior conversation) tripped WhatsApp's anti-automation guard and restricted the operator's account. Initiating is intentionally unavailable, not merely gated — a soft approval gate already existed and did not prevent the incident.
|
|
12
|
+
|
|
13
|
+
What the agent **can** still do: reply within an existing chat. The whatsapp-channel `reply` tool (per-sender stdio channel, `platform/services/whatsapp-channel/`) and reply-path document delivery (`SendUserFile` → `file-delivery-bridge.ts` → `POST /api/whatsapp/send-document`) respond to a sender who messaged first. Replying within your chats is what WhatsApp permits; starting new chats from a linked device is what it penalises.
|
|
14
|
+
|
|
15
|
+
## Observation-only in groups (Task 726)
|
|
16
|
+
|
|
17
|
+
The agent **never responds in a group chat.** Every inbound group message is stored, recorded, and persisted to the graph (observation is fully preserved — `list-groups`, `whatsapp-group-info`, conversations, and the `/whatsapp` reader all still work), but it is never dispatched to a responding session and never produces an outbound message into the group. `checkGroupAccess` is a structural observe-only deny — there is no group policy, allowlist, per-group activation, or @mention setting to turn responses on. A belt invariant in the manager's `reply` closure refuses any `@g.us` recipient (`op=group-reply-blocked`).
|
|
18
|
+
|
|
19
|
+
This is the same Meta-policy constraint as the reply-only DM posture above, applied one step further. Replying into a group from an unofficial linked device is automated business-style messaging — the class of behaviour that restricted a live operator account. It is a **Meta-policy constraint, not a Maxy limitation.**
|
|
20
|
+
|
|
21
|
+
For agent-driven messaging in groups or initiating conversations, **Telegram is the better channel** — it has no equivalent linked-device automation penalty, so the agent can send and respond freely there. See `platform/plugins/telegram/references/setup-guide.md`.
|
|
22
|
+
|
|
9
23
|
## Primary Architecture: Multi-Account Baileys
|
|
10
24
|
|
|
11
25
|
Users link one or more WhatsApp numbers via QR. Each account is an independent Baileys connection with its own credentials, policies, and agent routing. Multiple accounts are optional — most setups use a single account.
|
|
@@ -44,7 +58,6 @@ Accounts are linked via QR in the Channels UI. Outbound routing (`src/web/outbou
|
|
|
44
58
|
|--------|---------|--------|
|
|
45
59
|
| Admin phones | Account with admin binding | Admin's registered number |
|
|
46
60
|
| Self-chat | Account with selfChatMode | Admin talking to themselves |
|
|
47
|
-
| Group messages | Account that is a group member | Whichever is in the group |
|
|
48
61
|
| Customer DMs | Account with open DM policy | Dedicated agent number |
|
|
49
62
|
| Inbound replies | Same account that received | Closures capture the right provider |
|
|
50
63
|
|
|
@@ -105,7 +118,7 @@ Admin phones always bypass DM policy — the `isAdminPhone()` check runs before
|
|
|
105
118
|
|
|
106
119
|
**Schema constraint:** `dmPolicy: "open"` requires `allowFrom` to include `"*"` (enforced by Zod validation).
|
|
107
120
|
|
|
108
|
-
**Key file:** `access-control.ts` — `checkDmAccess()`
|
|
121
|
+
**Key file:** `access-control.ts` — `checkDmAccess()` gates DMs by the policy above; `checkGroupAccess()` is a structural observe-only deny (always `allowed:false reason:group-observe-only`, Task 726) — no group policy is consulted.
|
|
109
122
|
|
|
110
123
|
**Config path:** Per-account at `whatsapp.accounts.{accountId}.dmPolicy` in `account.json`. Falls back to `whatsapp.dmPolicy`. Changes are conversational — the admin agent writes to config via `whatsapp-config action: "update-config"`.
|
|
111
124
|
|
|
@@ -220,6 +233,17 @@ Baileys disconnect errors carry a numeric status code mapped to `DisconnectReaso
|
|
|
220
233
|
|
|
221
234
|
**Conflict vs logout (401 ambiguity):** WhatsApp's server can send a stream error with code 401 and reason "conflict" — Baileys normally maps "conflict" to 440, but the server's explicit `code` attribute overrides the mapping. The monitor checks for "conflict" in the error message to distinguish this from a true logout.
|
|
222
235
|
|
|
236
|
+
## Terminal Logout: Visibility and Remedy
|
|
237
|
+
|
|
238
|
+
A `loggedOut` (401, `device_removed`) or a `conflict` (login taken over elsewhere) is **terminal**: the manager stops reconnecting (`classifyDisconnect` returns `shouldRetry: false`) and the link will NOT come back on its own. The cause is a WhatsApp-account-side action — the phone unlinked the device, or another login replaced this one — not something the gateway can recover from. The only remedy is re-pairing (the connect-whatsapp skill); waiting does nothing.
|
|
239
|
+
|
|
240
|
+
The dead state is reported at two surfaces so it is visible without a reply having to fail first:
|
|
241
|
+
|
|
242
|
+
- **Standing health signal.** On a terminal disconnect the manager sets `terminalReason` on the account connection (distinct from `sessionStuckReason`, which is the fast-reconnect-churn give-up). `/api/health` reports `whatsapp.any_terminal = true` and the account's `terminalReason`; `whatsapp-status` shows the account Disconnected with the reason (`Session logged out — re-link required`). `terminalReason` clears automatically once a re-pair establishes a fresh connection.
|
|
243
|
+
- **Reply failures are correctly described.** The native-channel `reply` tool no longer returns a bare `gateway returned 500`. On a terminal link it returns `reply: WhatsApp logged out — re-link required` (the agent must NOT promise an automatic recovery — there is none until re-pairing); a transient blip during reconnection stays a retryable `reply: WhatsApp disconnected — cannot reply`. The gateway carries the distinction as a `terminal` boolean in the `/wa-channel/reply` failure body, and the `op=reply-failed` log line records `terminal=true|false`.
|
|
244
|
+
|
|
245
|
+
What is NOT handled here: the end user who triggered the reply receives no delivery-failure notice over WhatsApp, and there is no outbound retry queue — a dropped reply on a dead link is lost (the agent is made aware of the failure, but the sender is not). That is a separate concern; file a task if it is wanted.
|
|
246
|
+
|
|
223
247
|
## Reconnection: Setup Failures vs Runtime Disconnects
|
|
224
248
|
|
|
225
249
|
> **Authoritative source:** The current runtime connection lifecycle — including reconnect bounding (`STABLE_UPTIME_MS`, `MAX_RECONNECT_ATTEMPTS`), platform-side init queries (fetchBlocklist, fetchPrivacySettings, intentional fetchProps skip), and the `/api/health` WhatsApp field — is documented in [`.docs/whatsapp.md`](../../../../.docs/whatsapp.md) under "Connection Lifecycle", "Init Query Visibility", and "Reconnect Bounding and Escape". The content below describes the historical disconnect-reason mapping which still applies; for anything about how the loop retries, aborts, or runs its init sequence, read the `.docs` file first.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: manage-whatsapp-config
|
|
3
|
-
description: Guide the user through viewing and editing WhatsApp settings — messaging
|
|
3
|
+
description: Guide the user through viewing and editing WhatsApp settings — DM messaging policy, operational limits, and acknowledgement behaviour. Conversational, not a raw form dump.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Manage WhatsApp Config
|
|
@@ -11,7 +11,7 @@ Conversational editing of WhatsApp settings. Every field is presented with its d
|
|
|
11
11
|
|
|
12
12
|
## When to activate
|
|
13
13
|
|
|
14
|
-
User asks to change, view, edit, or manage WhatsApp settings, policies,
|
|
14
|
+
User asks to change, view, edit, or manage WhatsApp settings, policies, or limits. Also activate when the user asks about read receipts, message batching, media limits, or the DM policy. If the user asks how to make the agent respond in a group, see "Group posture" below — the answer is that it cannot, by design.
|
|
15
15
|
|
|
16
16
|
## Prerequisites
|
|
17
17
|
|
|
@@ -47,10 +47,8 @@ Call `whatsapp-config action: list-public-agents` to get available agents, and `
|
|
|
47
47
|
- `open` — "Open — anyone can message"
|
|
48
48
|
- `allowlist` — "Allowlist — only approved numbers"
|
|
49
49
|
- `disabled` — "Disabled — no public DMs"
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- `allowlist` — "Allowlist — only in approved groups"
|
|
53
|
-
- `disabled` — "Disabled — ignore all group messages"
|
|
50
|
+
|
|
51
|
+
There is no group policy. Groups are observation-only — see "Group posture" below.
|
|
54
52
|
|
|
55
53
|
**Behaviour:**
|
|
56
54
|
|
|
@@ -68,16 +66,13 @@ Call `whatsapp-config action: list-public-agents` to get available agents, and `
|
|
|
68
66
|
|
|
69
67
|
The form's `submitMessage` must map the field values back to `update-config` field names: `Save these WhatsApp settings: {{json}}` — where `{{json}}` produces the JSON object with field names as keys (e.g. `{ "dmPolicy": "open", "mediaMaxMb": 50, ... }`).
|
|
70
68
|
|
|
71
|
-
## Group
|
|
69
|
+
## Group posture
|
|
70
|
+
|
|
71
|
+
The agent is **observation-only in groups**: it sees and records every group message but never replies in a group. There is no per-group setting to turn responses on — the restriction is structural, not a toggle. `whatsapp-config action: list-groups` still lists the groups the connected phone is in, for reference.
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
This is a **Meta-policy constraint, not a Maxy limitation.** WhatsApp penalises automated and business-style messaging sent from an unofficial linked device. Replying in groups and sending cold first-contact messages are both anti-automation triggers — they restricted a live operator account, which is why the agent is observe-only in groups and reply-only in DMs (Task 723).
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
2. If the account is not connected, explain that group discovery requires an active WhatsApp connection
|
|
77
|
-
3. If no groups are found, tell the user: "You're not in any WhatsApp groups on this account yet. Groups will appear here once the connected phone joins them."
|
|
78
|
-
4. Present groups by name (not by JID) — the user picks from a list
|
|
79
|
-
5. For each selected group, offer the activation options: 'always' (respond to every message), 'mention' (respond only when @mentioned), 'off' (silent)
|
|
80
|
-
6. Map the user's selections back to JIDs when writing config
|
|
75
|
+
If the user wants an agent that actively messages in groups or initiates conversations, recommend **Telegram** instead. Telegram has no equivalent linked-device automation penalty, so the agent can send and respond freely there. Point them to the Telegram setup path at `platform/plugins/telegram/references/setup-guide.md`.
|
|
81
76
|
|
|
82
77
|
## Writing changes
|
|
83
78
|
|
|
@@ -160,6 +160,13 @@ cat > "$ACCOUNT_SETTINGS" << SETTINGS_EOF
|
|
|
160
160
|
{ "type": "command", "command": "bash $HOOKS_PATH/prompt-optimiser-directive.sh" }
|
|
161
161
|
]
|
|
162
162
|
}
|
|
163
|
+
],
|
|
164
|
+
"Stop": [
|
|
165
|
+
{
|
|
166
|
+
"hooks": [
|
|
167
|
+
{ "type": "command", "command": "bash $HOOKS_PATH/prompt-optimiser-compliance.sh" }
|
|
168
|
+
]
|
|
169
|
+
}
|
|
163
170
|
]
|
|
164
171
|
}
|
|
165
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAiB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAiB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EA8KtD,CAAA"}
|
package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js
CHANGED
|
@@ -176,8 +176,6 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
|
|
|
176
176
|
"mcp__plugin_whatsapp_whatsapp__whatsapp-login-start",
|
|
177
177
|
"mcp__plugin_whatsapp_whatsapp__whatsapp-login-wait",
|
|
178
178
|
"mcp__plugin_whatsapp_whatsapp__whatsapp-messages",
|
|
179
|
-
"mcp__plugin_whatsapp_whatsapp__whatsapp-send",
|
|
180
|
-
"mcp__plugin_whatsapp_whatsapp__whatsapp-send-document",
|
|
181
179
|
"mcp__plugin_whatsapp_whatsapp__whatsapp-status",
|
|
182
180
|
"mcp__plugin_work_work__project-complete",
|
|
183
181
|
"mcp__plugin_work_work__project-create",
|
package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAS3B,OAAO,EAgBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AAoBzB,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAgFtD,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,cAAc,EAAE,cAAc,CAAA;IAC9B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AA+MD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AAmBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAS3B,OAAO,EAgBL,KAAK,SAAS,EAEf,MAAM,kBAAkB,CAAA;AAoBzB,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAgFtD,eAAO,MAAM,kBAAkB,QAA2B,CAAA;AAS1D,eAAO,MAAM,4BAA4B,QAAS,CAAA;AAIlD,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAC7E;;qEAEiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,SAAS,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,iBAAiB,EAAE,MAAM,CAAA;IACzB,kBAAkB,EAAE,WAAW,CAAA;IAC/B,eAAe,EAAE,aAAa,CAAA;IAC9B;kFAC8E;IAC9E,cAAc,EAAE,cAAc,CAAA;IAC9B;;gFAE4E;IAC5E,cAAc,EAAE,cAAc,CAAA;IAC9B;;gFAE4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AA+MD;;;kEAGkE;AAClE,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG;IAC3B,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACpD;;;+CAG2C;IAC3C,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAChD,CAAA;AAmBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAo4DpD"}
|
|
@@ -30,7 +30,7 @@ import { buildRcChildEnv } from './rc-daemon.js';
|
|
|
30
30
|
import { spawnClaudeSession, stopSession, writeInputToPty, isLive, onPtyExit, livePtyCount, liveSessionIds, getPtyTrackerForTests, livePidForSession, priorExitedCountForSession, PERMISSION_MODES, openFdCount, registerRcSpawnPty, } from './pty-spawner.js';
|
|
31
31
|
import { writeScopeRecord, removeScopeRecord } from './scope-record.js';
|
|
32
32
|
import { getScopeMainPid, defaultProcessSignals, defaultSystemctlRunner } from './systemd-scope.js';
|
|
33
|
-
import { readSidecar, updateSidecar, appendBridgeId } from './session-sidecar.js';
|
|
33
|
+
import { readSidecar, updateSidecar, appendBridgeId, writeSidecar } from './session-sidecar.js';
|
|
34
34
|
import { emitRcLife } from './rc-life.js';
|
|
35
35
|
import { readJsonlSession } from './jsonl-enumerator.js';
|
|
36
36
|
import { watchInputSubmission, countUserEntries } from './input-postcondition.js';
|
|
@@ -1551,6 +1551,23 @@ export function buildHttpApp(deps) {
|
|
|
1551
1551
|
if (mainPid !== null && defaultProcessSignals.isAlive(mainPid))
|
|
1552
1552
|
seen.set(row.sessionId, mainPid);
|
|
1553
1553
|
}
|
|
1554
|
+
// Task 731 — a live, non-detached row whose owned PTY tracker has been
|
|
1555
|
+
// released (or was registered under a placeholder sessionId, never the
|
|
1556
|
+
// real one) is counted by the master-reconcile `liveSessions` census yet
|
|
1557
|
+
// missed by both arms above: it is not an owned PTY and not a detached
|
|
1558
|
+
// survivor. Adopt it on PID-file process truth — `row.pid` is claude's own
|
|
1559
|
+
// live pid for a `state==='live'` row — gated on `isAlive` so a stale PID
|
|
1560
|
+
// file (dead process) never reports a false-green dot. Detached rows are
|
|
1561
|
+
// excluded here on purpose: their liveness is the scope MainPID (resolved
|
|
1562
|
+
// above) and their `row.pid` may be a stale manager-side pid.
|
|
1563
|
+
for (const row of deps.watcher.all()) {
|
|
1564
|
+
if (row.state !== 'live' || row.status === 'detached' || seen.has(row.sessionId) || row.pid === null)
|
|
1565
|
+
continue;
|
|
1566
|
+
if (defaultProcessSignals.isAlive(row.pid)) {
|
|
1567
|
+
seen.set(row.sessionId, row.pid);
|
|
1568
|
+
deps.logger(`[live-sessions] op=adopt-orphan-live sessionId=${row.sessionId.slice(0, 8)} pid=${row.pid} via=reconcile`);
|
|
1569
|
+
}
|
|
1570
|
+
}
|
|
1554
1571
|
const sessions = [...seen.entries()].map(([sessionId, pid]) => ({ sessionId, pid }));
|
|
1555
1572
|
return c.json({ sessions });
|
|
1556
1573
|
});
|
|
@@ -1612,6 +1629,18 @@ export function buildHttpApp(deps) {
|
|
|
1612
1629
|
typeof waChannelRaw.serverPath === 'string'
|
|
1613
1630
|
? waChannelRaw
|
|
1614
1631
|
: undefined;
|
|
1632
|
+
// Task 724 — the bridge routes EVERY role=admin channel inbound here, not
|
|
1633
|
+
// just WhatsApp, and supplies the real channel (+ role:'admin', senderId) so
|
|
1634
|
+
// the classification sidecar below records the actual channel. The WaGateway
|
|
1635
|
+
// supplies channel:'whatsapp'; the one-shot admin jobs (LinkedIn ingest,
|
|
1636
|
+
// session-end review) supply no channel and get no sidecar.
|
|
1637
|
+
const adminRole = body.role === 'admin' ? 'admin' : undefined;
|
|
1638
|
+
const adminChannel = typeof body.channel === 'string' && CHANNELS.includes(body.channel)
|
|
1639
|
+
? body.channel
|
|
1640
|
+
: undefined;
|
|
1641
|
+
const adminSenderId = typeof body.senderId === 'string' && body.senderId.length > 0 && body.senderId.length <= 256
|
|
1642
|
+
? body.senderId
|
|
1643
|
+
: undefined;
|
|
1615
1644
|
if (sessionId !== null && !UUID_PATTERN.test(sessionId)) {
|
|
1616
1645
|
timed(deps.logger, 'POST', '/rc-spawn', 400, Date.now() - start);
|
|
1617
1646
|
return c.json({ error: 'sessionId must be a v4 UUID' }, 400);
|
|
@@ -1808,10 +1837,58 @@ export function buildHttpApp(deps) {
|
|
|
1808
1837
|
const tracker = registerRcSpawnPty({ logger: deps.logger }, trackerKey, pty, unitToken);
|
|
1809
1838
|
// Task 702 — persist the reattach hint so a manager restart adopts this
|
|
1810
1839
|
// scope instead of orphan-killing it. /spawn persists this via its sidecar;
|
|
1811
|
-
// /
|
|
1812
|
-
//
|
|
1840
|
+
// the Task 721/724 classification sidecar below carries scopeUnitToken too,
|
|
1841
|
+
// but only for channel-admin spawns, so /rc-spawn writes the record here for
|
|
1842
|
+
// every resumable session. Only resumable sessions (a caller-supplied
|
|
1843
|
+
// sessionId) have a stable id worth reattaching.
|
|
1813
1844
|
if (sessionId)
|
|
1814
1845
|
writeScopeRecord(sessionsDir, sessionId, unitToken, deps.logger);
|
|
1846
|
+
// Task 721 / Task 724 — the WhatsApp reader, the sidebar channel badge, and
|
|
1847
|
+
// archive classification read a live session's channel ONLY from its
|
|
1848
|
+
// <sessionId>.meta.json sidecar (role:admin, channel:<channel>). /spawn
|
|
1849
|
+
// writes that sidecar for the public path; channel-admin sessions never use
|
|
1850
|
+
// /spawn — they land here via /rc-spawn — so /rc-spawn must write it too.
|
|
1851
|
+
// Task 721 wrote it only for the WhatsApp case (keyed on effectiveWaChannel);
|
|
1852
|
+
// Task 724 generalizes it: the bridge routes EVERY role=admin channel inbound
|
|
1853
|
+
// here and supplies the real channel, so write the sidecar for any admin
|
|
1854
|
+
// channel, not one at a time. The channel comes from the body (the bridge and
|
|
1855
|
+
// the WaGateway both supply it); senderId comes from the body, or for the
|
|
1856
|
+
// WhatsApp gateway path that carries it inside waChannel, from
|
|
1857
|
+
// effectiveWaChannel. The one-shot admin jobs (LinkedIn ingest, session-end
|
|
1858
|
+
// review) supply no channel and are correctly skipped — they are role:admin
|
|
1859
|
+
// but not channel conversations. Write-once: a resume already has the sidecar
|
|
1860
|
+
// (url filled by url-capture, bridgeIds appended by Task 550); overwriting
|
|
1861
|
+
// would wipe both (the single-writer note in session-sidecar.ts), so skip
|
|
1862
|
+
// when one exists. Non-fatal: the PTY here is already serving a live thread —
|
|
1863
|
+
// a failed classification sidecar must not tear it down, so it logs and the
|
|
1864
|
+
// session keeps running (the pre-fix reader-blind behaviour, no worse).
|
|
1865
|
+
const classifyChannel = adminRole === 'admin' ? adminChannel : undefined;
|
|
1866
|
+
const classifySenderId = adminSenderId ?? effectiveWaChannel?.senderId;
|
|
1867
|
+
if (sessionId && classifyChannel && classifySenderId) {
|
|
1868
|
+
const classifySidecarPath = sidecarPathForSessionId(deps.spawnCwd, sessionId);
|
|
1869
|
+
if (!existsSync(classifySidecarPath)) {
|
|
1870
|
+
try {
|
|
1871
|
+
writeSidecar(classifySidecarPath, {
|
|
1872
|
+
senderId: classifySenderId,
|
|
1873
|
+
role: 'admin',
|
|
1874
|
+
channel: classifyChannel,
|
|
1875
|
+
url: null,
|
|
1876
|
+
startedAt: new Date().toISOString(),
|
|
1877
|
+
permissionMode: null,
|
|
1878
|
+
effectivePermissionMode: null,
|
|
1879
|
+
model: null,
|
|
1880
|
+
hidden: false,
|
|
1881
|
+
specialist: null,
|
|
1882
|
+
scopeUnitToken: unitToken,
|
|
1883
|
+
bridgeIds: [],
|
|
1884
|
+
}, deps.logger);
|
|
1885
|
+
deps.watcher.refreshSidecar?.(sessionId);
|
|
1886
|
+
}
|
|
1887
|
+
catch (err) {
|
|
1888
|
+
deps.logger(`[rc-spawn] op=channel-sidecar-write-failed sessionId=${sessionId.slice(0, 8)} channel=${classifyChannel} err=${JSON.stringify(err instanceof Error ? err.message : String(err))}`);
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
}
|
|
1815
1892
|
// Task 626 — one-shot job (LinkedIn ingest, public session-end review):
|
|
1816
1893
|
// stop the PTY once its single assistant turn lands `end_turn`. closeAfterTurn
|
|
1817
1894
|
// implies a sessionId (validated above), so trackerKey === sessionId and the
|