@rubytech/create-maxy-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.
Files changed (78) hide show
  1. package/package.json +1 -1
  2. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts +34 -0
  3. package/payload/platform/lib/agent-dispatch-rule/dist/index.d.ts.map +1 -1
  4. package/payload/platform/lib/agent-dispatch-rule/dist/index.js +39 -0
  5. package/payload/platform/lib/agent-dispatch-rule/dist/index.js.map +1 -1
  6. package/payload/platform/lib/agent-dispatch-rule/src/__tests__/carrier-verdict.test.ts +92 -0
  7. package/payload/platform/lib/agent-dispatch-rule/src/index.ts +59 -0
  8. package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +46 -1
  9. package/payload/platform/plugins/admin/skills/whats-new/SKILL.md +11 -0
  10. package/payload/platform/plugins/browser/PLUGIN.md +1 -1
  11. package/payload/platform/plugins/docs/references/telegram-guide.md +45 -0
  12. package/payload/platform/plugins/scheduling/mcp/dist/index.js +2 -0
  13. package/payload/platform/plugins/scheduling/mcp/dist/index.js.map +1 -1
  14. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.d.ts +2 -0
  15. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.d.ts.map +1 -0
  16. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.js +72 -0
  17. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/agent-dispatch-carrier.test.js.map +1 -0
  18. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.d.ts +2 -0
  19. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.d.ts.map +1 -0
  20. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.js +327 -0
  21. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery-reconcile.test.js.map +1 -0
  22. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.d.ts +2 -0
  23. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.d.ts.map +1 -0
  24. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.js +130 -0
  25. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-delivery.test.js.map +1 -0
  26. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js +27 -58
  27. package/payload/platform/plugins/scheduling/mcp/dist/lib/__tests__/routine-run.test.js.map +1 -1
  28. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts +8 -3
  29. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.d.ts.map +1 -1
  30. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js +37 -3
  31. package/payload/platform/plugins/scheduling/mcp/dist/lib/agent-dispatch.js.map +1 -1
  32. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.d.ts +67 -0
  33. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.d.ts.map +1 -0
  34. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.js +133 -0
  35. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-delivery.js.map +1 -0
  36. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts +67 -12
  37. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.d.ts.map +1 -1
  38. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js +226 -72
  39. package/payload/platform/plugins/scheduling/mcp/dist/lib/routine-run.js.map +1 -1
  40. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js +66 -4
  41. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/agent-turn-dispatch.test.js.map +1 -1
  42. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.d.ts +2 -0
  43. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.d.ts.map +1 -0
  44. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.js +45 -0
  45. package/payload/platform/plugins/scheduling/mcp/dist/scripts/__tests__/reconcile-run-controls.test.js.map +1 -0
  46. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts +3 -1
  47. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.d.ts.map +1 -1
  48. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js +32 -7
  49. package/payload/platform/plugins/scheduling/mcp/dist/scripts/agent-turn-dispatch.js.map +1 -1
  50. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js +12 -1
  51. package/payload/platform/plugins/scheduling/mcp/dist/scripts/check-due-events.js.map +1 -1
  52. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js +15 -2
  53. package/payload/platform/plugins/scheduling/mcp/dist/scripts/reconcile-bookings.js.map +1 -1
  54. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts +14 -0
  55. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.d.ts.map +1 -1
  56. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js +4 -0
  57. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-event.js.map +1 -1
  58. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts +3 -0
  59. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.d.ts.map +1 -1
  60. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js +2 -0
  61. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-get.js.map +1 -1
  62. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.d.ts.map +1 -1
  63. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js +14 -0
  64. package/payload/platform/plugins/scheduling/mcp/dist/tools/schedule-update.js.map +1 -1
  65. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.d.ts +2 -0
  66. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.d.ts.map +1 -0
  67. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.js +237 -0
  68. package/payload/platform/plugins/telegram/mcp/dist/__tests__/card-row.test.js.map +1 -0
  69. package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.d.ts +96 -0
  70. package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.d.ts.map +1 -0
  71. package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.js +156 -0
  72. package/payload/platform/plugins/telegram/mcp/dist/lib/card-row.js.map +1 -0
  73. package/payload/platform/plugins/telegram/mcp/dist/tools/card.d.ts.map +1 -1
  74. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js +53 -0
  75. package/payload/platform/plugins/telegram/mcp/dist/tools/card.js.map +1 -1
  76. package/payload/platform/scripts/__tests__/vnc-cdp-liveness.test.sh +270 -19
  77. package/payload/platform/scripts/vnc.sh +174 -71
  78. package/payload/server/server.js +980 -774
@@ -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":"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"}
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
- * The tool calls whose `input.text` IS the message the recipient saw.
292
- *
293
- * Deliberately a second copy of the reader's constants
294
- * (`platform/ui/app/lib/reader/parse-transcript.ts:147-168`): `platform/plugins`
295
- * must never import from `platform/ui`, exactly as `mapRun` in
296
- * `platform/ui/server/routes/admin/routines.ts` restates this module's own
297
- * projection across the same boundary.
298
- *
299
- * Reading the assistant's `text` blocks instead would store the agent's internal
300
- * narration the reader classifies those as `agent-text` and never as anything
301
- * delivered and present it as the message that was sent.
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 2359captured on the finished transition only. A `started` run
417
- // has produced nothing yet, and a run already at `finished` never reaches
418
- // here (the `next === status` guard above), so the window is read for its
419
- // text exactly once per run.
420
- const excerpt = produced ? extractDeliveredText(win) : null;
388
+ // Task 2776the 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
- // outputChars is the measured length of what was stored, not a claim
433
- // that capture ran: `outputChars=0` on `status=finished` is the
434
- // signature of a run that finished having sent nothing, or of
435
- // extraction having gone blind.
436
- console.error(`[routine-run] op=promote runId=${runId} status=${next} outputChars=${excerpt?.length ?? 0}`);
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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"}
@@ -15,7 +15,34 @@ describe("chooseDispatchMode", () => {
15
15
  actionTool: null,
16
16
  actionArgs: null,
17
17
  });
18
- expect(m).toEqual({ kind: "agent", channel: "whatsapp", destination: "+447504472444", prompt: "reply OK" });
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-deliver attribution line naming the event and target (Task 2681)", async () => {
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-deliver event=${EVT}`);
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.