@rubytech/create-sitedesk-code 0.1.613 → 0.1.615
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/agent-dispatch-rule/dist/index.d.ts +34 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js +39 -0
- package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -1
- package/payload/platform/lib/agent-dispatch-rule/src/__tests__/carrier-verdict.test.ts +92 -0
- package/payload/platform/lib/agent-dispatch-rule/src/index.ts +59 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +46 -1
- package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +11 -0
- package/payload/platform/plugins/browser/PLUGIN.md +1 -1
- package/payload/platform/plugins/docs/references/telegram-guide.md +45 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.js +72 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.js +327 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.js +130 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js +27 -58
- package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +8 -3
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +37 -3
- package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.d.ts +67 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.js +133 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts +67 -12
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js +226 -72
- package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +66 -4
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.d.ts +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.d.ts.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.js +45 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.js.map +1 -0
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +3 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +32 -7
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +12 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +15 -2
- package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +14 -0
- 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 +4 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +3 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +2 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +14 -0
- package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
- package/payload/platform/plugins/telegram/PLUGIN.md +2 -2
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.d.ts +2 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.js +237 -0
- package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.js.map +1 -0
- 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/lib/card-row.d.ts +96 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.d.ts.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.js +156 -0
- package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.js.map +1 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts.map +1 -1
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.js +53 -0
- package/payload/platform/plugins/telegram/mcp/dist/tools/card.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/scripts/__tests__/vnc-cdp-liveness.test.sh +270 -19
- package/payload/platform/scripts/vnc.sh +174 -71
- package/payload/server/public/operator.html +1 -1
- package/payload/server/server.js +989 -775
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Driver } from "neo4j-driver";
|
|
2
|
+
import { type StoredAgentRow } from "./routine-delivery.js";
|
|
2
3
|
/** Which dispatch loop opened the record. */
|
|
3
4
|
export type RunKind = "recurring" | "one-time";
|
|
4
5
|
/** The `chooseDispatchMode` result the record was opened for. */
|
|
@@ -23,6 +24,19 @@ export type RunMode = "agent" | "action" | "none";
|
|
|
23
24
|
export type RunOutcome = "accepted" | "failed" | "no-destination" | "gated";
|
|
24
25
|
/** Records are kept for 30 days. A quarter-hourly routine settles at ~2,900 per account. */
|
|
25
26
|
export declare const RETENTION_DAYS = 30;
|
|
27
|
+
/**
|
|
28
|
+
* Task 2776 — the window BOTH delivery controls work over.
|
|
29
|
+
*
|
|
30
|
+
* One constant because the two must not drift: if `reconcileRoutineDelivery`
|
|
31
|
+
* looked over a shorter window than `routineDeliveryCensus`, the census would
|
|
32
|
+
* report as silent a run the reconciliation had already stopped trying to
|
|
33
|
+
* stamp — an alarm about the checker rather than about the routine.
|
|
34
|
+
*
|
|
35
|
+
* It is also what makes the change forward-only without a migration: runs
|
|
36
|
+
* recorded before this shipped leave the window within a day, so nothing needs
|
|
37
|
+
* backfilling and nothing is backfilled.
|
|
38
|
+
*/
|
|
39
|
+
export declare const DELIVERY_WINDOW_HOURS = 24;
|
|
26
40
|
/**
|
|
27
41
|
* How long an `open` record may live before it counts as an orphan. This is
|
|
28
42
|
* `DISPATCH_TIMEOUT_MS` from check-due-events, the hard ceiling on the dispatch
|
|
@@ -133,18 +147,6 @@ export declare function classifyRunEvidence(window: string, eventId: string): "n
|
|
|
133
147
|
* characters holds every real message and bounds the node, the JSON the admin
|
|
134
148
|
* route serves and the CSV cell together. */
|
|
135
149
|
export declare const OUTPUT_EXCERPT_CAP = 2000;
|
|
136
|
-
/**
|
|
137
|
-
* The delivered text inside one run's transcript window, or null when the run
|
|
138
|
-
* delivered nothing. Pure, so the rule is testable without a filesystem or a
|
|
139
|
-
* graph, exactly like `classifyRunEvidence` above.
|
|
140
|
-
*
|
|
141
|
-
* Null is not a failure. A routine that only writes to the calendar finishes
|
|
142
|
-
* having sent nothing, and `finished` with no excerpt is the honest reading of
|
|
143
|
-
* that; the run surfaces say so in those words. A malformed line is skipped
|
|
144
|
-
* rather than thrown on — the window is a byte range of a file being appended
|
|
145
|
-
* to, so a partial trailing line is normal.
|
|
146
|
-
*/
|
|
147
|
-
export declare function extractDeliveredText(window: string): string | null;
|
|
148
150
|
/**
|
|
149
151
|
* Promote `accepted` and `started` records from evidence in the transcript.
|
|
150
152
|
*
|
|
@@ -219,4 +221,57 @@ export declare function auditRunsWithoutOutput(driver: Driver, accountId: string
|
|
|
219
221
|
* nothing watching it. Emitted every tick including zero.
|
|
220
222
|
*/
|
|
221
223
|
export declare function auditRunCensus(driver: Driver, accountId: string): Promise<void>;
|
|
224
|
+
/**
|
|
225
|
+
* Task 2776 — stamp each telegram run with the send that reached the chat, and
|
|
226
|
+
* with the text of it.
|
|
227
|
+
*
|
|
228
|
+
* Runs AFTER `promoteRoutineRuns` and separately from it. Promotion acts on a
|
|
229
|
+
* status transition, and the send lands at about the same instant as the
|
|
230
|
+
* assistant row that triggers it, so stamping inside that transition would race
|
|
231
|
+
* and record a false silence.
|
|
232
|
+
*
|
|
233
|
+
* No status filter, deliberately: a run can deliver while still `accepted`,
|
|
234
|
+
* before promotion has seen its assistant row, and filtering to `finished` would
|
|
235
|
+
* read that as silence. Rows already carrying a `deliveredMessageId` are skipped
|
|
236
|
+
* in JS rather than in Cypher because every run on a session is needed to
|
|
237
|
+
* compute the next one's ceiling — the same reason `promoteRoutineRuns` selects
|
|
238
|
+
* them all. That skip is what makes the pass idempotent, so a delivery arriving
|
|
239
|
+
* after promotion is picked up on a later tick.
|
|
240
|
+
*
|
|
241
|
+
* Telegram only. A WhatsApp run has no equivalent store to reconcile against and
|
|
242
|
+
* is left alone rather than stamped null-and-counted, which would manufacture
|
|
243
|
+
* exactly the false silence this task removes.
|
|
244
|
+
*
|
|
245
|
+
* Never throws (honours the sweep contract).
|
|
246
|
+
*/
|
|
247
|
+
export declare function reconcileRoutineDelivery(driver: Driver, accountId: string, platformRoot: string, nowMs: number, deps?: {
|
|
248
|
+
readRows?: (root: string, acct: string, dest: string) => StoredAgentRow[];
|
|
249
|
+
}): Promise<{
|
|
250
|
+
stamped: number;
|
|
251
|
+
}>;
|
|
252
|
+
/**
|
|
253
|
+
* Task 2776 — the standing reconciliation: accepted wakes against runs that
|
|
254
|
+
* carry a delivery, over a rolling window.
|
|
255
|
+
*
|
|
256
|
+
* This is the control the defect needed and did not have. A wake that produced
|
|
257
|
+
* no message emits nothing, and re-firing the routine does not surface it, so
|
|
258
|
+
* only a periodic comparison of expected against actual can see it — the same
|
|
259
|
+
* reasoning `auditRunsWithoutOutput` states for itself.
|
|
260
|
+
*
|
|
261
|
+
* `silent` is NOT an error on its own: a routine told to report only when
|
|
262
|
+
* something is new is silent by design. So the line NAMES the events
|
|
263
|
+
* contributing to it rather than alarming on the count, and an event silent
|
|
264
|
+
* across every accepted wake for a full window is the shape worth reading.
|
|
265
|
+
*
|
|
266
|
+
* The window also carries the forward-only rule. Runs recorded before this
|
|
267
|
+
* shipped fall out of a 24-hour window within a day, so nothing needs
|
|
268
|
+
* backfilling and nothing is backfilled.
|
|
269
|
+
*
|
|
270
|
+
* Telegram only, matching `reconcileRoutineDelivery`: a WhatsApp run can never
|
|
271
|
+
* be stamped, so counting it would report every one of them as silent forever.
|
|
272
|
+
*
|
|
273
|
+
* Emitted every sweep including zero, because a check that is silent when
|
|
274
|
+
* healthy cannot be told apart from one that stopped running. Never throws.
|
|
275
|
+
*/
|
|
276
|
+
export declare function routineDeliveryCensus(driver: Driver, accountId: string, nowMs: number, windowHours?: number): Promise<void>;
|
|
222
277
|
//# sourceMappingURL=routine-run.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routine-run.d.ts","sourceRoot":"","sources":["../../src/lib/routine-run.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"routine-run.d.ts","sourceRoot":"","sources":["../../src/lib/routine-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,8 +18,22 @@
|
|
|
18
18
|
import { randomUUID } from "node:crypto";
|
|
19
19
|
import { closeSync, openSync, readdirSync, readSync, statSync } from "node:fs";
|
|
20
20
|
import { dirname, join } from "node:path";
|
|
21
|
+
import { readAgentRowsForDestination, selectDeliveredRows, } from "./routine-delivery.js";
|
|
21
22
|
/** Records are kept for 30 days. A quarter-hourly routine settles at ~2,900 per account. */
|
|
22
23
|
export const RETENTION_DAYS = 30;
|
|
24
|
+
/**
|
|
25
|
+
* Task 2776 — the window BOTH delivery controls work over.
|
|
26
|
+
*
|
|
27
|
+
* One constant because the two must not drift: if `reconcileRoutineDelivery`
|
|
28
|
+
* looked over a shorter window than `routineDeliveryCensus`, the census would
|
|
29
|
+
* report as silent a run the reconciliation had already stopped trying to
|
|
30
|
+
* stamp — an alarm about the checker rather than about the routine.
|
|
31
|
+
*
|
|
32
|
+
* It is also what makes the change forward-only without a migration: runs
|
|
33
|
+
* recorded before this shipped leave the window within a day, so nothing needs
|
|
34
|
+
* backfilling and nothing is backfilled.
|
|
35
|
+
*/
|
|
36
|
+
export const DELIVERY_WINDOW_HOURS = 24;
|
|
23
37
|
/**
|
|
24
38
|
* How long an `open` record may live before it counts as an orphan. This is
|
|
25
39
|
* `DISPATCH_TIMEOUT_MS` from check-due-events, the hard ceiling on the dispatch
|
|
@@ -71,6 +85,11 @@ export async function openRoutineRun(driver, input) {
|
|
|
71
85
|
sessionKey: null,
|
|
72
86
|
transcriptOffset: null,
|
|
73
87
|
bounded: false,
|
|
88
|
+
// Task 2776 — the store row id of the message that reached the chat,
|
|
89
|
+
// stamped later by `reconcileRoutineDelivery`. Null here and null
|
|
90
|
+
// forever on a run that sent nothing, which is the property that
|
|
91
|
+
// separates a quiet routine from a broken one.
|
|
92
|
+
deliveredMessageId: null,
|
|
74
93
|
error: null,
|
|
75
94
|
},
|
|
76
95
|
});
|
|
@@ -287,66 +306,19 @@ export function classifyRunEvidence(window, eventId) {
|
|
|
287
306
|
* characters holds every real message and bounds the node, the JSON the admin
|
|
288
307
|
* route serves and the CSV cell together. */
|
|
289
308
|
export const OUTPUT_EXCERPT_CAP = 2000;
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
const DELIVERY_TOOLS = new Set([
|
|
304
|
-
"mcp__whatsapp-channel__reply",
|
|
305
|
-
"mcp__channel__reply",
|
|
306
|
-
"mcp__webchat-channel__reply",
|
|
307
|
-
"mcp__whatsapp-channel__send-to-party",
|
|
308
|
-
"mcp__channel__send-to-party",
|
|
309
|
-
]);
|
|
310
|
-
/**
|
|
311
|
-
* The delivered text inside one run's transcript window, or null when the run
|
|
312
|
-
* delivered nothing. Pure, so the rule is testable without a filesystem or a
|
|
313
|
-
* graph, exactly like `classifyRunEvidence` above.
|
|
314
|
-
*
|
|
315
|
-
* Null is not a failure. A routine that only writes to the calendar finishes
|
|
316
|
-
* having sent nothing, and `finished` with no excerpt is the honest reading of
|
|
317
|
-
* that; the run surfaces say so in those words. A malformed line is skipped
|
|
318
|
-
* rather than thrown on — the window is a byte range of a file being appended
|
|
319
|
-
* to, so a partial trailing line is normal.
|
|
320
|
-
*/
|
|
321
|
-
export function extractDeliveredText(window) {
|
|
322
|
-
const parts = [];
|
|
323
|
-
for (const raw of window.split("\n")) {
|
|
324
|
-
const line = raw.trim();
|
|
325
|
-
if (line.length === 0)
|
|
326
|
-
continue;
|
|
327
|
-
let rec;
|
|
328
|
-
try {
|
|
329
|
-
rec = JSON.parse(line);
|
|
330
|
-
}
|
|
331
|
-
catch {
|
|
332
|
-
continue;
|
|
333
|
-
}
|
|
334
|
-
const r = rec;
|
|
335
|
-
if (r?.type !== "assistant" || !Array.isArray(r.message?.content))
|
|
336
|
-
continue;
|
|
337
|
-
for (const block of r.message.content) {
|
|
338
|
-
const b = block;
|
|
339
|
-
if (b?.type !== "tool_use" || typeof b.name !== "string" || !DELIVERY_TOOLS.has(b.name))
|
|
340
|
-
continue;
|
|
341
|
-
const text = b.input?.text;
|
|
342
|
-
if (typeof text === "string" && text.trim().length > 0)
|
|
343
|
-
parts.push(text);
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
if (parts.length === 0)
|
|
347
|
-
return null;
|
|
348
|
-
return parts.join("\n\n").slice(0, OUTPUT_EXCERPT_CAP);
|
|
349
|
-
}
|
|
309
|
+
// Task 2776 — `DELIVERY_TOOLS` and `extractDeliveredText` are GONE.
|
|
310
|
+
//
|
|
311
|
+
// They scanned a run's transcript window for the channel reply tools
|
|
312
|
+
// (`mcp__channel__reply` and siblings). Task 2078 retired every one of them: the
|
|
313
|
+
// turn's own final text is the delivery on all four doors now, and nothing live
|
|
314
|
+
// emits those tool calls. So the scan matched nothing, `outputExcerpt` was null
|
|
315
|
+
// on every modern run, and `auditRunsWithoutOutput` reported `missing` equal to
|
|
316
|
+
// `finished` forever — a control pinned at its alarm value, which reads as noise
|
|
317
|
+
// rather than as the signal it was built to be.
|
|
318
|
+
//
|
|
319
|
+
// The excerpt now comes from the outbound store rows `reconcileRoutineDelivery`
|
|
320
|
+
// finds below: the text the recipient actually received, from the only record
|
|
321
|
+
// that exists because a send was confirmed.
|
|
350
322
|
/**
|
|
351
323
|
* Promote `accepted` and `started` records from evidence in the transcript.
|
|
352
324
|
*
|
|
@@ -413,27 +385,32 @@ export async function promoteRoutineRuns(driver, accountId, deps = {}) {
|
|
|
413
385
|
const produced = evidence === "finished";
|
|
414
386
|
if (next === status)
|
|
415
387
|
continue;
|
|
416
|
-
// Task
|
|
417
|
-
//
|
|
418
|
-
//
|
|
419
|
-
//
|
|
420
|
-
|
|
388
|
+
// Task 2776 — the excerpt is no longer written here. It was read from the
|
|
389
|
+
// transcript by `extractDeliveredText`, which scanned for reply tools Task
|
|
390
|
+
// 2078 retired and so stored null on every modern run. The text the
|
|
391
|
+
// recipient received is the outbound store row, stamped by
|
|
392
|
+
// `reconcileRoutineDelivery` on the same pass that records WHICH message
|
|
393
|
+
// reached the chat — after this one, because a send lands at about the
|
|
394
|
+
// same moment as the assistant row that triggers `finished` here.
|
|
395
|
+
//
|
|
396
|
+
// This function now establishes status alone, which is all a transcript
|
|
397
|
+
// can honestly answer.
|
|
421
398
|
const now = new Date().toISOString();
|
|
422
399
|
const w = driver.session();
|
|
423
400
|
try {
|
|
424
401
|
await w.run(`MATCH (r:RoutineRun {runId: $runId})
|
|
425
402
|
SET r.status = $status,
|
|
426
|
-
r.finishedAt = $finishedAt,
|
|
427
|
-
r.outputExcerpt = $outputExcerpt`, { runId, status: next, finishedAt: produced ? now : null, outputExcerpt: excerpt });
|
|
403
|
+
r.finishedAt = $finishedAt`, { runId, status: next, finishedAt: produced ? now : null });
|
|
428
404
|
if (produced)
|
|
429
405
|
finished++;
|
|
430
406
|
else
|
|
431
407
|
started++;
|
|
432
|
-
//
|
|
433
|
-
//
|
|
434
|
-
//
|
|
435
|
-
//
|
|
436
|
-
|
|
408
|
+
// Task 2776 — `outputChars` is gone from this line. It reported the
|
|
409
|
+
// length of an excerpt this function no longer captures, so keeping it
|
|
410
|
+
// would print `outputChars=0` on every promotion and read as a run that
|
|
411
|
+
// sent nothing. What was sent is named on `op=routine-delivered`, by the
|
|
412
|
+
// pass that actually knows.
|
|
413
|
+
console.error(`[routine-run] op=promote runId=${runId} status=${next}`);
|
|
437
414
|
}
|
|
438
415
|
finally {
|
|
439
416
|
try {
|
|
@@ -644,4 +621,181 @@ export async function auditRunCensus(driver, accountId) {
|
|
|
644
621
|
}
|
|
645
622
|
}
|
|
646
623
|
}
|
|
624
|
+
/**
|
|
625
|
+
* Task 2776 — stamp each telegram run with the send that reached the chat, and
|
|
626
|
+
* with the text of it.
|
|
627
|
+
*
|
|
628
|
+
* Runs AFTER `promoteRoutineRuns` and separately from it. Promotion acts on a
|
|
629
|
+
* status transition, and the send lands at about the same instant as the
|
|
630
|
+
* assistant row that triggers it, so stamping inside that transition would race
|
|
631
|
+
* and record a false silence.
|
|
632
|
+
*
|
|
633
|
+
* No status filter, deliberately: a run can deliver while still `accepted`,
|
|
634
|
+
* before promotion has seen its assistant row, and filtering to `finished` would
|
|
635
|
+
* read that as silence. Rows already carrying a `deliveredMessageId` are skipped
|
|
636
|
+
* in JS rather than in Cypher because every run on a session is needed to
|
|
637
|
+
* compute the next one's ceiling — the same reason `promoteRoutineRuns` selects
|
|
638
|
+
* them all. That skip is what makes the pass idempotent, so a delivery arriving
|
|
639
|
+
* after promotion is picked up on a later tick.
|
|
640
|
+
*
|
|
641
|
+
* Telegram only. A WhatsApp run has no equivalent store to reconcile against and
|
|
642
|
+
* is left alone rather than stamped null-and-counted, which would manufacture
|
|
643
|
+
* exactly the false silence this task removes.
|
|
644
|
+
*
|
|
645
|
+
* Never throws (honours the sweep contract).
|
|
646
|
+
*/
|
|
647
|
+
export async function reconcileRoutineDelivery(driver, accountId, platformRoot, nowMs, deps = {}) {
|
|
648
|
+
const readRows = deps.readRows ?? readAgentRowsForDestination;
|
|
649
|
+
const since = new Date(nowMs - DELIVERY_WINDOW_HOURS * 60 * 60 * 1000).toISOString();
|
|
650
|
+
let stamped = 0;
|
|
651
|
+
// One read per DESTINATION, not per run. Every run against one chat shares a
|
|
652
|
+
// destination, so reading inside the loop parsed the same files once per run
|
|
653
|
+
// and discarded all but one result. The files cannot change within a pass.
|
|
654
|
+
const rowCache = new Map();
|
|
655
|
+
const rowsFor = (dest) => {
|
|
656
|
+
const hit = rowCache.get(dest);
|
|
657
|
+
if (hit !== undefined)
|
|
658
|
+
return hit;
|
|
659
|
+
const read = readRows(platformRoot, accountId, dest);
|
|
660
|
+
rowCache.set(dest, read);
|
|
661
|
+
return read;
|
|
662
|
+
};
|
|
663
|
+
const session = driver.session();
|
|
664
|
+
try {
|
|
665
|
+
// Bounded by the SAME window as the census, deliberately. Unbounded, this
|
|
666
|
+
// stamped every telegram run in the 30-day retention on the first tick after
|
|
667
|
+
// upgrade — the backfill this task's scope boundaries exclude — and never
|
|
668
|
+
// settled: a run that legitimately delivered nothing stays unstamped, so it
|
|
669
|
+
// was re-examined on every 120-second tick for as long as it survived.
|
|
670
|
+
//
|
|
671
|
+
// The window must never be SHORTER than the census's, or the census would
|
|
672
|
+
// report as silent a run this pass had already stopped trying to stamp. One
|
|
673
|
+
// constant serves both so they cannot drift.
|
|
674
|
+
const res = await session.run(`MATCH (r:RoutineRun)
|
|
675
|
+
WHERE r.accountId = $accountId
|
|
676
|
+
AND r.target STARTS WITH 'telegram:'
|
|
677
|
+
AND r.sessionKey IS NOT NULL
|
|
678
|
+
AND r.startedAt >= $since
|
|
679
|
+
RETURN r.runId AS runId, r.sessionKey AS sessionKey, r.target AS target,
|
|
680
|
+
r.eventId AS eventId, r.startedAt AS startedAt,
|
|
681
|
+
r.deliveredMessageId AS deliveredMessageId
|
|
682
|
+
ORDER BY r.sessionKey, r.startedAt`, { accountId, since });
|
|
683
|
+
const rows = res.records.map((rec) => ({
|
|
684
|
+
runId: rec.get("runId"),
|
|
685
|
+
sessionKey: rec.get("sessionKey"),
|
|
686
|
+
destination: rec.get("target").slice("telegram:".length),
|
|
687
|
+
eventId: rec.get("eventId"),
|
|
688
|
+
startedAt: rec.get("startedAt"),
|
|
689
|
+
delivered: (rec.get("deliveredMessageId") ?? null),
|
|
690
|
+
}));
|
|
691
|
+
for (let i = 0; i < rows.length; i++) {
|
|
692
|
+
const row = rows[i];
|
|
693
|
+
if (row.delivered !== null)
|
|
694
|
+
continue;
|
|
695
|
+
// The ceiling is the next run's start in the SAME conversation. Null means
|
|
696
|
+
// this is the newest run there and its window is still open, so a slow
|
|
697
|
+
// turn is still attributed rather than read as silence.
|
|
698
|
+
const succ = rows[i + 1];
|
|
699
|
+
const ceiling = succ && succ.sessionKey === row.sessionKey ? succ.startedAt : null;
|
|
700
|
+
const found = selectDeliveredRows(rowsFor(row.destination), row.sessionKey, row.startedAt, ceiling);
|
|
701
|
+
if (found.length === 0)
|
|
702
|
+
continue;
|
|
703
|
+
const excerpt = found.map((r) => r.body).join("\n\n").slice(0, OUTPUT_EXCERPT_CAP);
|
|
704
|
+
const w = driver.session();
|
|
705
|
+
try {
|
|
706
|
+
await w.run(`MATCH (r:RoutineRun {runId: $runId})
|
|
707
|
+
SET r.deliveredMessageId = $deliveredMessageId,
|
|
708
|
+
r.outputExcerpt = $outputExcerpt`, { runId: row.runId, deliveredMessageId: found[0].messageId, outputExcerpt: excerpt });
|
|
709
|
+
stamped++;
|
|
710
|
+
// The carrier comes off the row id (`telegram:<acct>:<botId>:<chat>:out:<iso>`)
|
|
711
|
+
// rather than from the event, so this names the bot that ACTUALLY carried
|
|
712
|
+
// the message. A routine whose carrier moved shows a botId here that
|
|
713
|
+
// differs from the one it named — the wrong-bot case made visible on the
|
|
714
|
+
// delivery itself rather than inferred afterwards.
|
|
715
|
+
const botId = found[0].messageId.split(":")[2] ?? "-";
|
|
716
|
+
console.error(`[schedule-dispatch] op=routine-delivered event=${row.eventId} run=${row.runId} ` +
|
|
717
|
+
`botId=${botId} chatId=${row.destination} messageId=${found[0].messageId} ` +
|
|
718
|
+
`rows=${found.length} chars=${excerpt.length}`);
|
|
719
|
+
}
|
|
720
|
+
finally {
|
|
721
|
+
try {
|
|
722
|
+
await w.close();
|
|
723
|
+
}
|
|
724
|
+
catch {
|
|
725
|
+
// ignore
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
catch (err) {
|
|
731
|
+
console.error(`[routine-run] op=delivery-reconcile-error acct=${accountId.slice(0, 8)} ` +
|
|
732
|
+
`detail=${err instanceof Error ? err.message : String(err)}`);
|
|
733
|
+
}
|
|
734
|
+
finally {
|
|
735
|
+
try {
|
|
736
|
+
await session.close();
|
|
737
|
+
}
|
|
738
|
+
catch {
|
|
739
|
+
// ignore
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
return { stamped };
|
|
743
|
+
}
|
|
744
|
+
/**
|
|
745
|
+
* Task 2776 — the standing reconciliation: accepted wakes against runs that
|
|
746
|
+
* carry a delivery, over a rolling window.
|
|
747
|
+
*
|
|
748
|
+
* This is the control the defect needed and did not have. A wake that produced
|
|
749
|
+
* no message emits nothing, and re-firing the routine does not surface it, so
|
|
750
|
+
* only a periodic comparison of expected against actual can see it — the same
|
|
751
|
+
* reasoning `auditRunsWithoutOutput` states for itself.
|
|
752
|
+
*
|
|
753
|
+
* `silent` is NOT an error on its own: a routine told to report only when
|
|
754
|
+
* something is new is silent by design. So the line NAMES the events
|
|
755
|
+
* contributing to it rather than alarming on the count, and an event silent
|
|
756
|
+
* across every accepted wake for a full window is the shape worth reading.
|
|
757
|
+
*
|
|
758
|
+
* The window also carries the forward-only rule. Runs recorded before this
|
|
759
|
+
* shipped fall out of a 24-hour window within a day, so nothing needs
|
|
760
|
+
* backfilling and nothing is backfilled.
|
|
761
|
+
*
|
|
762
|
+
* Telegram only, matching `reconcileRoutineDelivery`: a WhatsApp run can never
|
|
763
|
+
* be stamped, so counting it would report every one of them as silent forever.
|
|
764
|
+
*
|
|
765
|
+
* Emitted every sweep including zero, because a check that is silent when
|
|
766
|
+
* healthy cannot be told apart from one that stopped running. Never throws.
|
|
767
|
+
*/
|
|
768
|
+
export async function routineDeliveryCensus(driver, accountId, nowMs, windowHours = DELIVERY_WINDOW_HOURS) {
|
|
769
|
+
const since = new Date(nowMs - windowHours * 60 * 60 * 1000).toISOString();
|
|
770
|
+
const session = driver.session();
|
|
771
|
+
try {
|
|
772
|
+
const res = await session.run(`MATCH (r:RoutineRun)
|
|
773
|
+
WHERE r.accountId = $accountId
|
|
774
|
+
AND r.target STARTS WITH 'telegram:'
|
|
775
|
+
AND r.dispatchResult = 'accepted'
|
|
776
|
+
AND r.startedAt >= $since
|
|
777
|
+
RETURN count(r) AS accepted,
|
|
778
|
+
count(r.deliveredMessageId) AS delivered,
|
|
779
|
+
collect(DISTINCT CASE WHEN r.deliveredMessageId IS NULL THEN r.eventId END) AS silentEvents`, { accountId, since });
|
|
780
|
+
const rec = res.records[0];
|
|
781
|
+
const accepted = toNumber(rec?.get("accepted")) ?? 0;
|
|
782
|
+
const delivered = toNumber(rec?.get("delivered")) ?? 0;
|
|
783
|
+
const silentEvents = (rec?.get("silentEvents") ?? []).filter((e) => typeof e === "string");
|
|
784
|
+
const head = `[routine-delivery-census] accountId=${accountId.slice(0, 8)} accepted=${accepted} ` +
|
|
785
|
+
`delivered=${delivered} silent=${accepted - delivered} window=${windowHours}h`;
|
|
786
|
+
console.error(silentEvents.length > 0 ? `${head} silent-events=[${silentEvents.join(",")}]` : head);
|
|
787
|
+
}
|
|
788
|
+
catch (err) {
|
|
789
|
+
console.error(`[routine-delivery-census] op=routine-delivery-census-error acct=${accountId.slice(0, 8)} ` +
|
|
790
|
+
`detail=${err instanceof Error ? err.message : String(err)}`);
|
|
791
|
+
}
|
|
792
|
+
finally {
|
|
793
|
+
try {
|
|
794
|
+
await session.close();
|
|
795
|
+
}
|
|
796
|
+
catch {
|
|
797
|
+
// ignore
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
}
|
|
647
801
|
//# sourceMappingURL=routine-run.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routine-run.js","sourceRoot":"","sources":["../../src/lib/routine-run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routine-run.js","sourceRoot":"","sources":["../../src/lib/routine-run.ts"],"names":[],"mappings":"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"}
|
package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js
CHANGED
|
@@ -15,7 +15,34 @@ describe("chooseDispatchMode", () => {
|
|
|
15
15
|
actionTool: null,
|
|
16
16
|
actionArgs: null,
|
|
17
17
|
});
|
|
18
|
-
|
|
18
|
+
// Task 2776 — botId null: a caller that reads no carrier field gets a
|
|
19
|
+
// routine with none, which dispatches on the fire-time resolver exactly as
|
|
20
|
+
// it always has.
|
|
21
|
+
expect(m).toEqual({
|
|
22
|
+
kind: "agent",
|
|
23
|
+
channel: "whatsapp",
|
|
24
|
+
destination: "+447504472444",
|
|
25
|
+
prompt: "reply OK",
|
|
26
|
+
botId: null,
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
it("carries a named carrier onto the agent mode (Task 2776)", () => {
|
|
30
|
+
const m = chooseDispatchMode({
|
|
31
|
+
agentChannel: "telegram",
|
|
32
|
+
agentDestination: "8992591236",
|
|
33
|
+
agentPrompt: "reply OK",
|
|
34
|
+
agentBotId: "8711566959",
|
|
35
|
+
actionPlugin: null,
|
|
36
|
+
actionTool: null,
|
|
37
|
+
actionArgs: null,
|
|
38
|
+
});
|
|
39
|
+
expect(m).toEqual({
|
|
40
|
+
kind: "agent",
|
|
41
|
+
channel: "telegram",
|
|
42
|
+
destination: "8992591236",
|
|
43
|
+
prompt: "reply OK",
|
|
44
|
+
botId: "8711566959",
|
|
45
|
+
});
|
|
19
46
|
});
|
|
20
47
|
it("selects action when action fields are present and no agent dispatch", () => {
|
|
21
48
|
const m = chooseDispatchMode({
|
|
@@ -345,7 +372,7 @@ describe("dispatchAgentTurn — session pointer (Task 2136)", () => {
|
|
|
345
372
|
});
|
|
346
373
|
describe("targetOf (Task 2136)", () => {
|
|
347
374
|
it("names the channel and destination for an agent dispatch", () => {
|
|
348
|
-
expect(targetOf({ kind: "agent", channel: "whatsapp", destination: "+15550000000", prompt: "go" }))
|
|
375
|
+
expect(targetOf({ kind: "agent", channel: "whatsapp", destination: "+15550000000", prompt: "go", botId: null }))
|
|
349
376
|
.toBe("whatsapp:+15550000000");
|
|
350
377
|
});
|
|
351
378
|
it("names plugin.tool for an action dispatch", () => {
|
|
@@ -478,12 +505,47 @@ describe("dispatchAgentTurn — the gate mark advance (Task 2663)", () => {
|
|
|
478
505
|
expect(readWatermarks(EVT, platformRoot).telegram?.byBot?.["555"]).toBe("2026-08-10T18:00:00.000Z");
|
|
479
506
|
expect(errors.join("\n")).toContain(`op=mark-advanced eventId=${EVT.slice(0, 8)} advanced=telegram:555`);
|
|
480
507
|
});
|
|
481
|
-
it("emits a routine-
|
|
508
|
+
it("emits a routine-wake-accepted attribution line naming the event and target (Tasks 2681, 2776)", async () => {
|
|
482
509
|
respond(true, 200);
|
|
483
510
|
await send(OBSERVED);
|
|
484
|
-
expect(errors.join("\n")).toContain(`op=routine-
|
|
511
|
+
expect(errors.join("\n")).toContain(`op=routine-wake-accepted event=${EVT}`);
|
|
485
512
|
expect(errors.join("\n")).toContain("target=telegram:8992591236 httpStatus=200");
|
|
486
513
|
});
|
|
514
|
+
it("never calls an accepted wake a delivery (Task 2776)", async () => {
|
|
515
|
+
// 200 proves the wake was accepted and a session was spawned or resumed. It
|
|
516
|
+
// proves nothing about a message reaching the chat, which is established on
|
|
517
|
+
// the reconcile tick from the outbound store. Measured before the rename:
|
|
518
|
+
// 34 runs read as successful deliveries across a three-day silence.
|
|
519
|
+
respond(true, 200);
|
|
520
|
+
await send(OBSERVED);
|
|
521
|
+
expect(errors.join("\n")).not.toContain("op=routine-deliver ");
|
|
522
|
+
expect(errors.join("\n")).not.toContain("op=routine-delivered");
|
|
523
|
+
});
|
|
524
|
+
it("puts a named carrier bot on the inject body (Task 2776)", async () => {
|
|
525
|
+
const bodies = [];
|
|
526
|
+
globalThis.fetch = vi.fn(async (_u, init) => {
|
|
527
|
+
bodies.push(init.body);
|
|
528
|
+
return { ok: true, status: 200, json: async () => ({}) };
|
|
529
|
+
});
|
|
530
|
+
await dispatchAgentTurn(EVT, "telegram", "8992591236", "read the bookings", "acct-house", null, null, "schedule-event", "/tmp/no-accounts", fakeDriver(), null, null, null, null, "8711566959");
|
|
531
|
+
expect(JSON.parse(bodies[0]).botId).toBe("8711566959");
|
|
532
|
+
});
|
|
533
|
+
it("omits botId from the inject body when the routine names none (Task 2776)", async () => {
|
|
534
|
+
// A routine naming no carrier must send exactly the pre-2776 shape, so the
|
|
535
|
+
// route's resolver branch is reached unchanged.
|
|
536
|
+
const bodies = [];
|
|
537
|
+
globalThis.fetch = vi.fn(async (_u, init) => {
|
|
538
|
+
// Only the POSTs. For a telegram wake carrying a gate watermark the
|
|
539
|
+
// delivered-window read fires FIRST and sends no body, so capturing every
|
|
540
|
+
// call unfiltered would inspect that read instead of the inject.
|
|
541
|
+
if (typeof init?.body === "string")
|
|
542
|
+
bodies.push(init.body);
|
|
543
|
+
return { ok: true, status: 200, json: async () => ({}) };
|
|
544
|
+
});
|
|
545
|
+
await send(OBSERVED);
|
|
546
|
+
expect(bodies.length).toBeGreaterThan(0);
|
|
547
|
+
expect(Object.hasOwn(JSON.parse(bodies[bodies.length - 1]), "botId")).toBe(false);
|
|
548
|
+
});
|
|
487
549
|
it("advances NOTHING when the wake was refused", async () => {
|
|
488
550
|
// The 100 x httpStatus=403 measured on 2026-08-10. Marking those messages
|
|
489
551
|
// seen would have lost them with no record anywhere.
|