aibroker 0.58.0 → 0.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/iterm/core.d.ts +26 -1
- package/dist/adapters/iterm/core.d.ts.map +1 -1
- package/dist/adapters/iterm/core.js +71 -4
- package/dist/adapters/iterm/core.js.map +1 -1
- package/dist/adapters/iterm/sessions.d.ts.map +1 -1
- package/dist/adapters/iterm/sessions.js +36 -4
- package/dist/adapters/iterm/sessions.js.map +1 -1
- package/dist/adapters/pailot/gateway.d.ts.map +1 -1
- package/dist/adapters/pailot/gateway.js +7 -4
- package/dist/adapters/pailot/gateway.js.map +1 -1
- package/dist/adapters/pailot/mqtt-broker.d.ts +6 -0
- package/dist/adapters/pailot/mqtt-broker.d.ts.map +1 -1
- package/dist/adapters/pailot/mqtt-broker.js +137 -119
- package/dist/adapters/pailot/mqtt-broker.js.map +1 -1
- package/dist/core/call-timing.d.ts +10 -0
- package/dist/core/call-timing.d.ts.map +1 -0
- package/dist/core/call-timing.js +42 -0
- package/dist/core/call-timing.js.map +1 -0
- package/dist/core/env-bootstrap.d.ts +14 -0
- package/dist/core/env-bootstrap.d.ts.map +1 -0
- package/dist/core/env-bootstrap.js +21 -0
- package/dist/core/env-bootstrap.js.map +1 -0
- package/dist/core/session-discovery.d.ts +3 -1
- package/dist/core/session-discovery.d.ts.map +1 -1
- package/dist/core/session-discovery.js +2 -2
- package/dist/core/session-discovery.js.map +1 -1
- package/dist/core/state.d.ts +7 -1
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +13 -3
- package/dist/core/state.js.map +1 -1
- package/dist/daemon/cli.d.ts +1 -1
- package/dist/daemon/cli.d.ts.map +1 -1
- package/dist/daemon/cli.js +1 -0
- package/dist/daemon/cli.js.map +1 -1
- package/dist/daemon/core-handlers.d.ts +28 -0
- package/dist/daemon/core-handlers.d.ts.map +1 -1
- package/dist/daemon/core-handlers.js +150 -50
- package/dist/daemon/core-handlers.js.map +1 -1
- package/dist/daemon/dispatch.d.ts +39 -0
- package/dist/daemon/dispatch.d.ts.map +1 -1
- package/dist/daemon/dispatch.js +331 -2
- package/dist/daemon/dispatch.js.map +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +10 -0
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/manage.d.ts +37 -0
- package/dist/daemon/manage.d.ts.map +1 -1
- package/dist/daemon/manage.js +164 -18
- package/dist/daemon/manage.js.map +1 -1
- package/dist/daemon/session-content.d.ts +3 -1
- package/dist/daemon/session-content.d.ts.map +1 -1
- package/dist/daemon/session-content.js +35 -2
- package/dist/daemon/session-content.js.map +1 -1
- package/dist/daemon/todoist-pending.d.ts +45 -0
- package/dist/daemon/todoist-pending.d.ts.map +1 -0
- package/dist/daemon/todoist-pending.js +58 -0
- package/dist/daemon/todoist-pending.js.map +1 -0
- package/dist/daemon/todoist-reply.d.ts +10 -0
- package/dist/daemon/todoist-reply.d.ts.map +1 -1
- package/dist/daemon/todoist-reply.js +1 -0
- package/dist/daemon/todoist-reply.js.map +1 -1
- package/dist/daemon/todoist-webhook.d.ts +29 -0
- package/dist/daemon/todoist-webhook.d.ts.map +1 -1
- package/dist/daemon/todoist-webhook.js +331 -208
- package/dist/daemon/todoist-webhook.js.map +1 -1
- package/dist/ipc/client.d.ts.map +1 -1
- package/dist/ipc/client.js +24 -3
- package/dist/ipc/client.js.map +1 -1
- package/dist/mcp/index.js +19 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/transport/sync-facade.d.ts +15 -2
- package/dist/transport/sync-facade.d.ts.map +1 -1
- package/dist/transport/sync-facade.js +16 -3
- package/dist/transport/sync-facade.js.map +1 -1
- package/dist/transport/tmux.d.ts.map +1 -1
- package/dist/transport/tmux.js +20 -2
- package/dist/transport/tmux.js.map +1 -1
- package/hooks/drain-mailbox.mjs +34 -8
- package/package.json +1 -1
|
@@ -63,6 +63,13 @@ export interface DispatchOptions {
|
|
|
63
63
|
* adjust what it already has.
|
|
64
64
|
*/
|
|
65
65
|
prefix?: string;
|
|
66
|
+
/**
|
|
67
|
+
* INTERNAL — set only by redriveQueuedDispatches. Marks this dispatch as the
|
|
68
|
+
* one redrive a queued record gets, so the fresh record a `queued` outcome
|
|
69
|
+
* writes is generation-counted and never redriven again. Not part of the
|
|
70
|
+
* public surface.
|
|
71
|
+
*/
|
|
72
|
+
redriveCount?: number;
|
|
66
73
|
}
|
|
67
74
|
/**
|
|
68
75
|
* Everything dispatch() touches outside itself, injected so the outcome matrix
|
|
@@ -76,6 +83,12 @@ export interface DispatchDeps {
|
|
|
76
83
|
name: string;
|
|
77
84
|
paiName: string | null;
|
|
78
85
|
}[];
|
|
86
|
+
/**
|
|
87
|
+
* Did `sessions()` actually enumerate, or fall back to `[]` after a failed
|
|
88
|
+
* osascript call? An empty array means two different things and only this
|
|
89
|
+
* tells them apart — see the spawn-gate below.
|
|
90
|
+
*/
|
|
91
|
+
sessionsReliable: () => boolean;
|
|
79
92
|
deliver: (sessionId: string, body: string, timeoutMs: number, io?: TerminalIO, retries?: number) => Promise<AckResult>;
|
|
80
93
|
launch: (project: PaiProject, opts?: {
|
|
81
94
|
initialPrompt?: string;
|
|
@@ -83,6 +96,11 @@ export interface DispatchDeps {
|
|
|
83
96
|
itermSessionId: string;
|
|
84
97
|
}>;
|
|
85
98
|
waitReady: (sessionId: string, timeoutMs: number) => Promise<boolean>;
|
|
99
|
+
/**
|
|
100
|
+
* INTERNAL — Todoist fetch used only by the redrive freshness gate, so tests
|
|
101
|
+
* can drive it without the network. Defaults to the global fetch.
|
|
102
|
+
*/
|
|
103
|
+
todoistFetch?: typeof fetch;
|
|
86
104
|
/** Read a session's screen, to confirm Claude still owns the tty. */
|
|
87
105
|
capture: (sessionId: string) => string | null;
|
|
88
106
|
/** Clock for the shared budget; injectable so budget maths is testable. */
|
|
@@ -163,4 +181,25 @@ export declare function submitAndConfirm(sessionId: string, body: string, timeou
|
|
|
163
181
|
* Never throws for a routing outcome — see the module comment.
|
|
164
182
|
*/
|
|
165
183
|
export declare function dispatch(projectName: string, message: string, opts?: DispatchOptions, deps?: DispatchDeps): Promise<DispatchResult>;
|
|
184
|
+
/**
|
|
185
|
+
* Re-attempt every queued dispatch still on disk from before this start.
|
|
186
|
+
* Call once, at daemon startup.
|
|
187
|
+
*
|
|
188
|
+
* Not provably exactly-once: if the original typed input was in fact consumed
|
|
189
|
+
* moments after its own delivery window closed, this can deliver a second
|
|
190
|
+
* copy — the same risk `dispatch()`'s single-attempt rule accepts for a normal
|
|
191
|
+
* retry. The alternative is what actually happened: a dispatch typed into a
|
|
192
|
+
* live session, never run, nothing anywhere to say so, and no way to recover
|
|
193
|
+
* it. A record aged past the grace period is stronger evidence of loss than of
|
|
194
|
+
* a slow turn.
|
|
195
|
+
*
|
|
196
|
+
* Bounded, not a retry loop: a record whose todoist task has since closed or
|
|
197
|
+
* completed is dropped as stale, a record whose transcript shows the session
|
|
198
|
+
* already received it is deleted as consumed, a record that has already had
|
|
199
|
+
* its one redrive is dropped without sending, and whatever this pass leaves
|
|
200
|
+
* behind (still `queued`, `unreachable`, `unlaunchable`) is dropped after one
|
|
201
|
+
* audited attempt rather than kept for the next restart, so a daemon that
|
|
202
|
+
* restarts repeatedly cannot turn this into a duplicate-dispatch storm.
|
|
203
|
+
*/
|
|
204
|
+
export declare function redriveQueuedDispatches(deps?: DispatchDeps): Promise<void>;
|
|
166
205
|
//# sourceMappingURL=dispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/daemon/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;
|
|
1
|
+
{"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/daemon/dispatch.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/dispatch.js
CHANGED
|
@@ -28,9 +28,12 @@
|
|
|
28
28
|
* them sends whoever reads the result looking in the wrong place.
|
|
29
29
|
*/
|
|
30
30
|
import { mkdirSync, writeFileSync, readdirSync, statSync, unlinkSync } from "node:fs";
|
|
31
|
+
import { execFileSync } from "node:child_process";
|
|
31
32
|
import { homedir } from "node:os";
|
|
32
33
|
import { join } from "node:path";
|
|
33
|
-
import {
|
|
34
|
+
import { saveJson, loadJson } from "../core/json-store.js";
|
|
35
|
+
import { audit } from "./audit.js";
|
|
36
|
+
import { snapshotAllSessions, wasLastEnumerationReliable } from "../transport/sync-facade.js";
|
|
34
37
|
import { findCuratedPaiProject, launchResolvedPaiProject, invalidatePaiProjectCache, } from "./pai-projects.js";
|
|
35
38
|
import { getAllPersistentSessionNames, lookupPersistentName } from "../core/persistence.js";
|
|
36
39
|
import { flatten, isClaudeReady, isInputBoxEmpty, hasBeenSubmitted, realIO, } from "./terminal-screen.js";
|
|
@@ -158,6 +161,7 @@ export async function submitAndConfirm(sessionId, body, timeoutMs, io = realIO,
|
|
|
158
161
|
const realDeps = {
|
|
159
162
|
resolve: findCuratedPaiProject,
|
|
160
163
|
sessions: liveSessions,
|
|
164
|
+
sessionsReliable: wasLastEnumerationReliable,
|
|
161
165
|
deliver: submitAndConfirm,
|
|
162
166
|
capture: (id) => realIO.capture(id),
|
|
163
167
|
now: () => Date.now(),
|
|
@@ -223,15 +227,26 @@ export async function dispatch(projectName, message, opts = {}, deps = realDeps)
|
|
|
223
227
|
`prompt. Nothing was sent, because a shell would execute the message rather than read it.`,
|
|
224
228
|
};
|
|
225
229
|
}
|
|
230
|
+
// Write-ahead: a record on disk BEFORE the type, not after. `queued` means
|
|
231
|
+
// the text left our hands for Claude Code's own in-terminal queue, which we
|
|
232
|
+
// cannot see into — if that queue drops it (pane closed, session killed
|
|
233
|
+
// mid-turn, daemon restarted and nobody re-checked) there was previously
|
|
234
|
+
// NOTHING anywhere recording that this dispatch ever happened. Deleted
|
|
235
|
+
// below the moment delivery is actually confirmed; kept otherwise so
|
|
236
|
+
// redriveQueuedDispatches() has something to find.
|
|
237
|
+
const queuedRecordPath = writeQueuedRecord(projectName, label, message, opts.prefix, opts.redriveCount);
|
|
226
238
|
// One attempt, never three. The text is already in a live session's input
|
|
227
239
|
// box; typing it again does not retry, it duplicates — one trigger became
|
|
228
240
|
// three full job sweeps on 2026-08-01. Retries belong to the spawn path
|
|
229
241
|
// below, where an earlier attempt may genuinely never have landed.
|
|
230
242
|
const res = await deps.deliver(existing.id, body, deliverTimeoutMs(), undefined, 1);
|
|
231
243
|
if (res === "ok") {
|
|
244
|
+
deleteQueuedRecord(queuedRecordPath);
|
|
232
245
|
return { outcome: "delivered", project: label, session: existing.label, reason: "" };
|
|
233
246
|
}
|
|
234
247
|
if (res === "unreadable") {
|
|
248
|
+
// Never typed — nothing was queued anywhere, so there is nothing to redrive.
|
|
249
|
+
deleteQueuedRecord(queuedRecordPath);
|
|
235
250
|
return {
|
|
236
251
|
outcome: "unreachable",
|
|
237
252
|
project: label,
|
|
@@ -249,7 +264,25 @@ export async function dispatch(projectName, message, opts = {}, deps = realDeps)
|
|
|
249
264
|
project: label,
|
|
250
265
|
session: existing.label,
|
|
251
266
|
reason: `Typed into live session "${existing.label}", which was still working and had not read it ` +
|
|
252
|
-
`within the window. This is delivery, not failure — do NOT retry
|
|
267
|
+
`within the window. This is delivery, not failure — do NOT retry. Recorded at ${queuedRecordPath} ` +
|
|
268
|
+
`in case it turns out to have been lost; redriven once on the next daemon start.`,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
// Enumeration itself may have failed rather than truthfully found nothing —
|
|
272
|
+
// an osascript hiccup returns `[]` indistinguishable from an empty machine.
|
|
273
|
+
// Reading that as "target absent" spawns a session next to one that already
|
|
274
|
+
// exists, or — worse — the write for that spawn can land on whatever pane
|
|
275
|
+
// happened to be current, which is exactly how a launch command ends up
|
|
276
|
+
// typed into a live Claude pane instead of a fresh shell. Unknown is not
|
|
277
|
+
// absent: report it as a transient failure so the caller retries instead of
|
|
278
|
+
// either giving up (`unlaunchable`) or launching blind.
|
|
279
|
+
if (!deps.sessionsReliable()) {
|
|
280
|
+
return {
|
|
281
|
+
outcome: "unreachable",
|
|
282
|
+
project: label,
|
|
283
|
+
session: "",
|
|
284
|
+
reason: `Session enumeration failed, so whether "${label}" already has a live session could not be ` +
|
|
285
|
+
`confirmed. Not launching one on an unverified "no session" — retry once enumeration recovers.`,
|
|
253
286
|
};
|
|
254
287
|
}
|
|
255
288
|
if (opts.noSpawn) {
|
|
@@ -404,4 +437,300 @@ function pruneWorkOrders(dir) {
|
|
|
404
437
|
// is a reason to skip the sweep, not to fail the work order.
|
|
405
438
|
}
|
|
406
439
|
}
|
|
440
|
+
const QUEUED_DIR = join(homedir(), ".aibroker", "queued-dispatches");
|
|
441
|
+
/** Persist a queued dispatch before it is typed. Returns the record's path. */
|
|
442
|
+
function writeQueuedRecord(project, label, message, prefix, redriveCount) {
|
|
443
|
+
const path = join(QUEUED_DIR, `${Date.now()}-${Math.random().toString(36).slice(2, 8)}.json`);
|
|
444
|
+
const record = { project, label, message, prefix, createdAt: Date.now() };
|
|
445
|
+
if (redriveCount !== undefined)
|
|
446
|
+
record.redriveCount = redriveCount;
|
|
447
|
+
try {
|
|
448
|
+
saveJson(path, record, { backup: false });
|
|
449
|
+
}
|
|
450
|
+
catch (err) {
|
|
451
|
+
log(`dispatch: could not persist queued-dispatch record for "${label}": ${err instanceof Error ? err.message : String(err)}`);
|
|
452
|
+
}
|
|
453
|
+
return path;
|
|
454
|
+
}
|
|
455
|
+
function deleteQueuedRecord(path) {
|
|
456
|
+
try {
|
|
457
|
+
unlinkSync(path);
|
|
458
|
+
}
|
|
459
|
+
catch { /* already gone, or never written */ }
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* How long a queued (typed-but-unacked) dispatch is left alone before it is
|
|
463
|
+
* treated as possibly lost. Long enough that a genuinely busy Claude turn has
|
|
464
|
+
* finished and consumed it — the sweeps this exists for run for minutes, not
|
|
465
|
+
* hours — short enough to catch a same-morning daemon restart like 2026-09-23's
|
|
466
|
+
* (07:37 dispatch, 07:42/07:44 restarts, never redriven because nothing
|
|
467
|
+
* persisted the attempt).
|
|
468
|
+
*/
|
|
469
|
+
const QUEUED_REDRIVE_GRACE_MS = 5 * 60 * 1000;
|
|
470
|
+
// ── was a queued dispatch in fact consumed? ────────────────────────────────
|
|
471
|
+
//
|
|
472
|
+
// Real fault, 2026-09-24: a dispatch typed into a busy session at 06:56 was
|
|
473
|
+
// read and handled by that session minutes later — it is in its transcript —
|
|
474
|
+
// but the queued record stayed on disk, because nothing marks a record
|
|
475
|
+
// consumed. Every daemon restart then re-typed the same message into the same
|
|
476
|
+
// session (the 11:02 restart delivered it a second time), and THAT delivery
|
|
477
|
+
// wrote its own record, so each restart meant one more duplicate, forever.
|
|
478
|
+
// The transcript is the ground truth of what a session actually received, so
|
|
479
|
+
// it is what decides whether a redrive is a recovery or a duplicate.
|
|
480
|
+
/**
|
|
481
|
+
* Substrings that identify `message` inside a transcript entry.
|
|
482
|
+
*
|
|
483
|
+
* Both ends, not just the head: a long body delivered into a busy input box
|
|
484
|
+
* can lose its head (measured 2026-09-24: ~700 of ~5000 chars survived, and
|
|
485
|
+
* they were the tail), so a head-only needle would miss exactly the deliveries
|
|
486
|
+
* that most need finding. Drawn from single lines and capped, so a needle
|
|
487
|
+
* never spans a newline.
|
|
488
|
+
*/
|
|
489
|
+
function transcriptNeedles(message) {
|
|
490
|
+
const lines = message.split("\n").map((l) => l.trim()).filter((l) => l.length > 0);
|
|
491
|
+
if (!lines.length)
|
|
492
|
+
return [];
|
|
493
|
+
return [...new Set([lines[0].slice(0, 80), lines[lines.length - 1].slice(-80)])];
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Does the target project's transcript already hold this message?
|
|
497
|
+
*
|
|
498
|
+
* true — a user message created after the record contains a distinctive
|
|
499
|
+
* slice of it: the session received it, redelivering duplicates.
|
|
500
|
+
* false — transcript resolvable, message absent: a redrive is warranted.
|
|
501
|
+
* undefined — no transcript could be resolved (no curated project, no
|
|
502
|
+
* rootPath, no ~/.claude/projects dir for it): cannot tell.
|
|
503
|
+
*/
|
|
504
|
+
async function queuedDispatchConsumed(record, deps) {
|
|
505
|
+
if (typeof record.createdAt !== "number")
|
|
506
|
+
return undefined;
|
|
507
|
+
const needles = transcriptNeedles(record.message);
|
|
508
|
+
if (!needles.length)
|
|
509
|
+
return undefined;
|
|
510
|
+
const project = await deps.resolve(record.project).catch(() => undefined);
|
|
511
|
+
const rootPath = project?.rootPath;
|
|
512
|
+
if (!rootPath)
|
|
513
|
+
return undefined;
|
|
514
|
+
// Same encoding Claude Code uses for ~/.claude/projects/<dir>: every
|
|
515
|
+
// non-alphanumeric in the cwd becomes a dash — measured against real dirs
|
|
516
|
+
// ("/Users/x/.claude" -> "-Users-x--claude"). The five newest transcripts
|
|
517
|
+
// cover every session that could have consumed it recently.
|
|
518
|
+
const dir = join(homedir(), ".claude", "projects", rootPath.replace(/[^a-zA-Z0-9]/g, "-"));
|
|
519
|
+
let files;
|
|
520
|
+
try {
|
|
521
|
+
files = readdirSync(dir)
|
|
522
|
+
.filter((f) => f.endsWith(".jsonl"))
|
|
523
|
+
.map((f) => ({ f, m: statSync(join(dir, f)).mtimeMs }))
|
|
524
|
+
.sort((a, b) => b.m - a.m)
|
|
525
|
+
.slice(0, 5)
|
|
526
|
+
.map((e) => e.f);
|
|
527
|
+
}
|
|
528
|
+
catch {
|
|
529
|
+
return undefined;
|
|
530
|
+
}
|
|
531
|
+
if (!files.length)
|
|
532
|
+
return undefined;
|
|
533
|
+
// grep for the JSON-ESCAPED spelling: a needle containing a quote never
|
|
534
|
+
// appears verbatim in a JSONL line, only as its escaped form. Whole-file
|
|
535
|
+
// scans, because the consumed entry can sit far above a busy session's tail.
|
|
536
|
+
const patterns = needles.flatMap((n) => ["-e", JSON.stringify(n).slice(1, -1)]);
|
|
537
|
+
for (const f of files) {
|
|
538
|
+
let hits;
|
|
539
|
+
try {
|
|
540
|
+
hits = execFileSync("/usr/bin/grep", ["-F", ...patterns, join(dir, f)], {
|
|
541
|
+
encoding: "utf8",
|
|
542
|
+
timeout: 10_000,
|
|
543
|
+
maxBuffer: 32 * 1024 * 1024,
|
|
544
|
+
});
|
|
545
|
+
}
|
|
546
|
+
catch {
|
|
547
|
+
continue; // no match in this file (grep exits 1) — next transcript
|
|
548
|
+
}
|
|
549
|
+
for (const line of hits.split("\n")) {
|
|
550
|
+
if (!line.trim())
|
|
551
|
+
continue;
|
|
552
|
+
let entry;
|
|
553
|
+
try {
|
|
554
|
+
entry = JSON.parse(line);
|
|
555
|
+
}
|
|
556
|
+
catch {
|
|
557
|
+
continue; // truncated by a concurrent write — skip it
|
|
558
|
+
}
|
|
559
|
+
// Typed-in text only. Tool results are user-type entries too and can
|
|
560
|
+
// echo the body (a session reading the record file itself), which is
|
|
561
|
+
// a mention, not a delivery.
|
|
562
|
+
if (entry?.type !== "user")
|
|
563
|
+
continue;
|
|
564
|
+
const content = entry.message?.content;
|
|
565
|
+
const text = typeof content === "string"
|
|
566
|
+
? content
|
|
567
|
+
: Array.isArray(content)
|
|
568
|
+
? content.filter((c) => c?.type === "text").map((c) => c.text).join("\n")
|
|
569
|
+
: "";
|
|
570
|
+
if (!text)
|
|
571
|
+
continue;
|
|
572
|
+
const at = entry.timestamp ? Date.parse(entry.timestamp) : NaN;
|
|
573
|
+
if (Number.isNaN(at) || at < record.createdAt)
|
|
574
|
+
continue;
|
|
575
|
+
if (needles.some((n) => text.includes(n)))
|
|
576
|
+
return true;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
return false;
|
|
580
|
+
}
|
|
581
|
+
// ── a queued todoist dispatch must still be current ─────────────────────────
|
|
582
|
+
//
|
|
583
|
+
// Real fault, 2026-09-24 (records 1790226222101/1790226253580): a dispatch sat
|
|
584
|
+
// queued for 4h and was then re-driven, long after the run it asked for had
|
|
585
|
+
// happened and been completed. A todoist dispatch's `[todoist:<id>` trailer
|
|
586
|
+
// names the task it came from, and that task says whether the order is still
|
|
587
|
+
// wanted: unfetchable means the trigger is closed, and a due date moved far
|
|
588
|
+
// past the queueing moment means the occurrence was completed since.
|
|
589
|
+
/** How far the due date may legitimately sit past queueing: a trigger fires ON its due time, so anything further is a new occurrence. */
|
|
590
|
+
const REDRIVE_DUE_TOLERANCE_MS = 60 * 60 * 1000;
|
|
591
|
+
const TODOIST_TRAILER = /\[todoist:(\d+)(?:\s+in:[^\]]*)?\]/;
|
|
592
|
+
/**
|
|
593
|
+
* Why this record's todoist task makes a redrive stale, or undefined when the
|
|
594
|
+
* dispatch is still current — or cannot be judged, which must NOT drop it.
|
|
595
|
+
*/
|
|
596
|
+
async function staleTodoistTrailer(record, fetchImpl) {
|
|
597
|
+
const taskId = TODOIST_TRAILER.exec(record.message)?.[1];
|
|
598
|
+
if (!taskId)
|
|
599
|
+
return undefined;
|
|
600
|
+
try {
|
|
601
|
+
const { fetchParentTask } = await import("./todoist-reply.js");
|
|
602
|
+
const parent = await fetchParentTask(taskId, fetchImpl);
|
|
603
|
+
const due = parent.due?.date ? Date.parse(parent.due.date) : NaN;
|
|
604
|
+
if (Number.isFinite(due) && due > record.createdAt + REDRIVE_DUE_TOLERANCE_MS) {
|
|
605
|
+
return `task ${taskId} is due ${parent.due?.date}, well past the ${new Date(record.createdAt).toISOString()} it was queued at — the occurrence advanced, the run already happened`;
|
|
606
|
+
}
|
|
607
|
+
return undefined;
|
|
608
|
+
}
|
|
609
|
+
catch (err) {
|
|
610
|
+
// A fetch that never got an answer says nothing about the task: keep the
|
|
611
|
+
// record. Only a definitive "gone" (404/401/…, per the webhook's own
|
|
612
|
+
// transient/permanent classifier) is evidence the trigger is closed.
|
|
613
|
+
const { isTransientTodoistError } = await import("./todoist-webhook.js");
|
|
614
|
+
if (isTransientTodoistError(err))
|
|
615
|
+
return undefined;
|
|
616
|
+
return `task ${taskId} is no longer fetchable (${err instanceof Error ? err.message : String(err)}) — closed since the dispatch was queued`;
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* Re-attempt every queued dispatch still on disk from before this start.
|
|
621
|
+
* Call once, at daemon startup.
|
|
622
|
+
*
|
|
623
|
+
* Not provably exactly-once: if the original typed input was in fact consumed
|
|
624
|
+
* moments after its own delivery window closed, this can deliver a second
|
|
625
|
+
* copy — the same risk `dispatch()`'s single-attempt rule accepts for a normal
|
|
626
|
+
* retry. The alternative is what actually happened: a dispatch typed into a
|
|
627
|
+
* live session, never run, nothing anywhere to say so, and no way to recover
|
|
628
|
+
* it. A record aged past the grace period is stronger evidence of loss than of
|
|
629
|
+
* a slow turn.
|
|
630
|
+
*
|
|
631
|
+
* Bounded, not a retry loop: a record whose todoist task has since closed or
|
|
632
|
+
* completed is dropped as stale, a record whose transcript shows the session
|
|
633
|
+
* already received it is deleted as consumed, a record that has already had
|
|
634
|
+
* its one redrive is dropped without sending, and whatever this pass leaves
|
|
635
|
+
* behind (still `queued`, `unreachable`, `unlaunchable`) is dropped after one
|
|
636
|
+
* audited attempt rather than kept for the next restart, so a daemon that
|
|
637
|
+
* restarts repeatedly cannot turn this into a duplicate-dispatch storm.
|
|
638
|
+
*/
|
|
639
|
+
export async function redriveQueuedDispatches(deps = realDeps) {
|
|
640
|
+
let names;
|
|
641
|
+
try {
|
|
642
|
+
names = readdirSync(QUEUED_DIR).filter((n) => n.endsWith(".json"));
|
|
643
|
+
}
|
|
644
|
+
catch {
|
|
645
|
+
return; // directory does not exist yet — nothing was ever queued
|
|
646
|
+
}
|
|
647
|
+
const cutoff = Date.now() - QUEUED_REDRIVE_GRACE_MS;
|
|
648
|
+
for (const name of names) {
|
|
649
|
+
const path = join(QUEUED_DIR, name);
|
|
650
|
+
let record;
|
|
651
|
+
try {
|
|
652
|
+
if (statSync(path).mtimeMs >= cutoff)
|
|
653
|
+
continue; // still inside its own delivery window
|
|
654
|
+
const loaded = loadJson(path);
|
|
655
|
+
if (loaded.status !== "ok") {
|
|
656
|
+
deleteQueuedRecord(path);
|
|
657
|
+
continue;
|
|
658
|
+
}
|
|
659
|
+
record = loaded.data;
|
|
660
|
+
}
|
|
661
|
+
catch {
|
|
662
|
+
continue;
|
|
663
|
+
}
|
|
664
|
+
// Second generation, one chance only. This record was written BY a redrive
|
|
665
|
+
// whose transcript could not be checked; sending it again would make every
|
|
666
|
+
// restart one more duplicate of the same work order.
|
|
667
|
+
if ((record.redriveCount ?? 0) >= 1) {
|
|
668
|
+
log(`dispatch: dropping queued dispatch for "${record.label}" — already redriven once ` +
|
|
669
|
+
`(from ${new Date(record.createdAt).toISOString()}) and never confirmed, not sending it again`);
|
|
670
|
+
audit({
|
|
671
|
+
action: "dispatch-redrive",
|
|
672
|
+
actor: "aibroker:daemon-start",
|
|
673
|
+
target: record.project,
|
|
674
|
+
outcome: "dropped",
|
|
675
|
+
body: record.message,
|
|
676
|
+
reason: "already redriven once and never confirmed — dropped rather than risk another duplicate",
|
|
677
|
+
meta: { project: record.project, originallyQueuedAt: record.createdAt, redriveCount: record.redriveCount },
|
|
678
|
+
});
|
|
679
|
+
deleteQueuedRecord(path);
|
|
680
|
+
continue;
|
|
681
|
+
}
|
|
682
|
+
// Still current? A todoist-trailer dispatch names its task; if that task
|
|
683
|
+
// has since been completed (due advanced) or closed, re-driving would
|
|
684
|
+
// resurrect a run that already happened. Checked before the transcript
|
|
685
|
+
// scan: one task lookup is cheaper than grepping five transcripts, and it
|
|
686
|
+
// answers first when both would apply.
|
|
687
|
+
const stale = await staleTodoistTrailer(record, deps.todoistFetch ?? fetch);
|
|
688
|
+
if (stale) {
|
|
689
|
+
log(`dispatch: dropping queued dispatch for "${record.label}" — ${stale}`);
|
|
690
|
+
audit({
|
|
691
|
+
action: "dispatch-redrive",
|
|
692
|
+
actor: "aibroker:daemon-start",
|
|
693
|
+
target: record.project,
|
|
694
|
+
outcome: "dropped",
|
|
695
|
+
body: record.message,
|
|
696
|
+
reason: stale,
|
|
697
|
+
meta: { project: record.project, originallyQueuedAt: record.createdAt },
|
|
698
|
+
});
|
|
699
|
+
deleteQueuedRecord(path);
|
|
700
|
+
continue;
|
|
701
|
+
}
|
|
702
|
+
// Consumed already? The transcript says whether the session ever read it.
|
|
703
|
+
const consumed = await queuedDispatchConsumed(record, deps);
|
|
704
|
+
if (consumed) {
|
|
705
|
+
log(`dispatch: queued dispatch for "${record.label}" already consumed, not redriving`);
|
|
706
|
+
audit({
|
|
707
|
+
action: "dispatch-redrive",
|
|
708
|
+
actor: "aibroker:daemon-start",
|
|
709
|
+
target: record.project,
|
|
710
|
+
outcome: "consumed",
|
|
711
|
+
body: record.message,
|
|
712
|
+
reason: "found in the target project's transcript after the record was written — the first delivery landed",
|
|
713
|
+
meta: { project: record.project, originallyQueuedAt: record.createdAt },
|
|
714
|
+
});
|
|
715
|
+
deleteQueuedRecord(path);
|
|
716
|
+
continue;
|
|
717
|
+
}
|
|
718
|
+
log(`dispatch: redriving queued dispatch for "${record.label}" left over from ` +
|
|
719
|
+
`${new Date(record.createdAt).toISOString()} (${path})`);
|
|
720
|
+
const result = await dispatch(record.project, record.message, { prefix: record.prefix, redriveCount: 1 }, deps);
|
|
721
|
+
audit({
|
|
722
|
+
action: "dispatch-redrive",
|
|
723
|
+
actor: "aibroker:daemon-start",
|
|
724
|
+
target: result.session || record.project,
|
|
725
|
+
outcome: result.outcome,
|
|
726
|
+
body: record.message,
|
|
727
|
+
reason: result.reason || undefined,
|
|
728
|
+
meta: { project: result.project, originallyQueuedAt: record.createdAt },
|
|
729
|
+
});
|
|
730
|
+
// Delete unconditionally: `delivered`/`spawned` need no further record, and
|
|
731
|
+
// a fresh `queued` result already wrote ITS OWN record above — marked
|
|
732
|
+
// redriveCount so the next start drops it instead of redelivering.
|
|
733
|
+
deleteQueuedRecord(path);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
407
736
|
//# sourceMappingURL=dispatch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/daemon/dispatch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/daemon/dispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgDH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAyBvD,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/daemon/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgDH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAyBvD,wBAAsB,WAAW,CAAC,OAAO,CAAC,EAAE;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAihBhB"}
|
package/dist/daemon/index.js
CHANGED
|
@@ -301,6 +301,16 @@ export async function startDaemon(options) {
|
|
|
301
301
|
const { startManagerLoop } = await import("./manage.js");
|
|
302
302
|
startManagerLoop();
|
|
303
303
|
}
|
|
304
|
+
// A dispatch typed into a live session but never confirmed ("queued") is
|
|
305
|
+
// recorded on disk before the type happens — see dispatch.ts. Redrive them
|
|
306
|
+
// once here, deferred so iTerm enumeration has a chance to warm up first
|
|
307
|
+
// rather than racing the very osascript flakiness that can cause a lost
|
|
308
|
+
// dispatch in the first place.
|
|
309
|
+
setTimeout(() => {
|
|
310
|
+
import("./dispatch.js")
|
|
311
|
+
.then(({ redriveQueuedDispatches }) => redriveQueuedDispatches())
|
|
312
|
+
.catch((err) => log(`dispatch: queued-redrive failed to start — ${err instanceof Error ? err.message : String(err)}`));
|
|
313
|
+
}, 10_000).unref();
|
|
304
314
|
startTodoistWebhook({
|
|
305
315
|
deliver: async (project, body, opts) => {
|
|
306
316
|
const { dispatch } = await import("./dispatch.js");
|