ftown 0.19.44 → 0.19.48
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/claude-mod/.claude-plugin/plugin.json +6 -0
- package/claude-mod/hooks/hooks.json +3 -0
- package/claude-mod/hooks/register.js +137 -0
- package/dist/agent-commands.js +17 -2
- package/dist/agent-commands.js.map +1 -1
- package/dist/attention-store.d.ts +21 -1
- package/dist/attention-store.js +131 -3
- package/dist/attention-store.js.map +1 -1
- package/dist/claude-mod-installer.d.ts +9 -0
- package/dist/claude-mod-installer.js +55 -0
- package/dist/claude-mod-installer.js.map +1 -0
- package/dist/ftown-cli.d.ts +1 -1
- package/dist/ftown-cli.js +11 -3
- package/dist/ftown-cli.js.map +1 -1
- package/dist/harness-registry.js +4 -0
- package/dist/harness-registry.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +719 -671
- package/dist/index.js.map +1 -1
- package/dist/install-ftown-command-cli.d.ts +1 -1
- package/dist/install-ftown-command-cli.js +35 -44
- package/dist/install-ftown-command-cli.js.map +1 -1
- package/dist/installation-manifest.d.ts +25 -0
- package/dist/installation-manifest.js +37 -0
- package/dist/installation-manifest.js.map +1 -0
- package/dist/local-api-server.js +12 -1
- package/dist/local-api-server.js.map +1 -1
- package/dist/mail-delivery.d.ts +24 -0
- package/dist/mail-delivery.js +155 -7
- package/dist/mail-delivery.js.map +1 -1
- package/dist/mcp/fleet.d.ts +2 -2
- package/dist/native-mail.d.ts +31 -0
- package/dist/native-mail.js +142 -0
- package/dist/native-mail.js.map +1 -0
- package/dist/production-dependencies.d.ts +13 -0
- package/dist/production-dependencies.js +175 -0
- package/dist/production-dependencies.js.map +1 -0
- package/dist/push-notifier.d.ts +40 -0
- package/dist/push-notifier.js +126 -0
- package/dist/push-notifier.js.map +1 -0
- package/dist/sessions-commands.js +278 -310
- package/dist/sessions-commands.js.map +1 -1
- package/dist/setup-state.d.ts +1 -2
- package/dist/setup-state.js +31 -11
- package/dist/setup-state.js.map +1 -1
- package/dist/setup.js +3 -1
- package/dist/setup.js.map +1 -1
- package/dist/start-commands.d.ts +10 -0
- package/dist/start-commands.js +15 -0
- package/dist/start-commands.js.map +1 -0
- package/opencode-plugin/ftown.js +142 -129
- package/package.json +3 -2
- package/skills/ftown/SKILL.md +7 -2
package/dist/mail-delivery.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type NativeMailWaker } from './native-mail.js';
|
|
1
2
|
import type { MailMessage, Session } from './types.js';
|
|
2
3
|
export declare const MAX_MAIL_BODY_LENGTH: number;
|
|
3
4
|
export declare const MAX_MAIL_WAIT_SECONDS = 30;
|
|
@@ -6,6 +7,17 @@ export declare const MAIL_NUDGE_DELAY_HOOKED_MS = 60000;
|
|
|
6
7
|
export declare const MAIL_NUDGE_MIN_INTERVAL_MS = 30000;
|
|
7
8
|
export declare const MAIL_NUDGE_BUSY_RECHECK_MS = 60000;
|
|
8
9
|
export declare const AGENT_BUSY_STALE_MS: number;
|
|
10
|
+
export declare const NATIVE_WAKE_LEASE_MS = 30000;
|
|
11
|
+
export declare const MAIL_WAKE_TEXT = "You have new ftown mail \u2014 run `ftown harness mail read` to read it.";
|
|
12
|
+
export interface NativeWakeRegistration {
|
|
13
|
+
adapter: 'claude-mod' | 'opencode';
|
|
14
|
+
nativeSessionId: string;
|
|
15
|
+
}
|
|
16
|
+
export declare class NativeWakeRegistrationError extends Error {
|
|
17
|
+
readonly status: 400 | 409;
|
|
18
|
+
constructor(status: 400 | 409, message: string);
|
|
19
|
+
}
|
|
20
|
+
export declare function parseNativeWakeRegistration(query: URLSearchParams): NativeWakeRegistration | undefined;
|
|
9
21
|
export declare const MAIL_TYPES: ReadonlyArray<MailMessage['type']>;
|
|
10
22
|
export declare function sanitizeMessageText(text: string): string;
|
|
11
23
|
/** The slice of SessionStore the mail engine needs. */
|
|
@@ -37,6 +49,7 @@ export interface MailDeliveryOptions {
|
|
|
37
49
|
now?: () => number;
|
|
38
50
|
setTimeout?: (fn: () => void, ms: number) => MailTimerHandle;
|
|
39
51
|
clearTimeout?: (handle: MailTimerHandle) => void;
|
|
52
|
+
nativeWake?: NativeMailWaker;
|
|
40
53
|
}
|
|
41
54
|
export type AcceptMailResult = {
|
|
42
55
|
ok: true;
|
|
@@ -74,6 +87,13 @@ export declare class MailDeliveryService {
|
|
|
74
87
|
private pendingNudgeFrom;
|
|
75
88
|
private lastNudgeAt;
|
|
76
89
|
private agentBusySince;
|
|
90
|
+
private nativeLeases;
|
|
91
|
+
private nativeBatches;
|
|
92
|
+
private wakeLocks;
|
|
93
|
+
private wakeControllers;
|
|
94
|
+
private legacyReadyAt;
|
|
95
|
+
private stopped;
|
|
96
|
+
private readonly nativeWake;
|
|
77
97
|
constructor(options?: MailDeliveryOptions);
|
|
78
98
|
setStore(store: MailDeliverySessionStore): void;
|
|
79
99
|
setMailStore(mailStore: MailDeliveryMailStore): void;
|
|
@@ -82,6 +102,9 @@ export declare class MailDeliveryService {
|
|
|
82
102
|
isReady(): boolean;
|
|
83
103
|
/** Clear all timers and resolve every pending long poll with []. */
|
|
84
104
|
stop(): void;
|
|
105
|
+
private pluginIdentity;
|
|
106
|
+
registerNativeWake(session: Session, registration: NativeWakeRegistration): void;
|
|
107
|
+
private pluginLeaseRemaining;
|
|
85
108
|
/** Hook activity (UserPromptSubmit/PreToolUse/PostToolUse): the agent is mid-turn. */
|
|
86
109
|
markAgentBusy(sessionId: string): void;
|
|
87
110
|
/** Hook Stop/SessionEnd: the agent's turn ended. */
|
|
@@ -109,5 +132,6 @@ export declare class MailDeliveryService {
|
|
|
109
132
|
participatesInMail(session: Session): Promise<boolean>;
|
|
110
133
|
private scheduleMailNudge;
|
|
111
134
|
private fireMailNudge;
|
|
135
|
+
private wakeSession;
|
|
112
136
|
private delay;
|
|
113
137
|
}
|
package/dist/mail-delivery.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createMailMessage } from './mail-store.js';
|
|
2
2
|
import { HOOKED_SHELL_TYPES } from './harness-registry.js';
|
|
3
|
+
import { createNativeMailWaker } from './native-mail.js';
|
|
3
4
|
export const MAX_MAIL_BODY_LENGTH = 64 * 1024;
|
|
4
5
|
export const MAX_MAIL_WAIT_SECONDS = 30;
|
|
5
6
|
export const MAIL_NUDGE_DELAY_MS = 5_000;
|
|
@@ -13,6 +14,28 @@ export const MAIL_NUDGE_MIN_INTERVAL_MS = 30_000;
|
|
|
13
14
|
// turn never reaches Stop, and ignore busy markers old enough to be a crash.
|
|
14
15
|
export const MAIL_NUDGE_BUSY_RECHECK_MS = 60_000;
|
|
15
16
|
export const AGENT_BUSY_STALE_MS = 30 * 60_000;
|
|
17
|
+
export const NATIVE_WAKE_LEASE_MS = 30_000;
|
|
18
|
+
export const MAIL_WAKE_TEXT = 'You have new ftown mail — run `ftown harness mail read` to read it.';
|
|
19
|
+
export class NativeWakeRegistrationError extends Error {
|
|
20
|
+
status;
|
|
21
|
+
constructor(status, message) {
|
|
22
|
+
super(message);
|
|
23
|
+
this.status = status;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function parseNativeWakeRegistration(query) {
|
|
27
|
+
const adapter = query.get('adapter');
|
|
28
|
+
const nativeSessionId = query.get('nativeSessionId');
|
|
29
|
+
if (adapter === null && nativeSessionId === null)
|
|
30
|
+
return undefined;
|
|
31
|
+
if ((adapter !== 'claude-mod' && adapter !== 'opencode') || !nativeSessionId
|
|
32
|
+
|| nativeSessionId.length > 200 || !/^[a-zA-Z0-9_-]+$/.test(nativeSessionId)
|
|
33
|
+
|| query.getAll('adapter').length !== 1 || query.getAll('nativeSessionId').length !== 1
|
|
34
|
+
|| query.get('peek') !== '1' || query.get('wait') !== '0') {
|
|
35
|
+
throw new NativeWakeRegistrationError(400, 'Native wake registration requires peek=1, wait=0, adapter and nativeSessionId');
|
|
36
|
+
}
|
|
37
|
+
return { adapter, nativeSessionId };
|
|
38
|
+
}
|
|
16
39
|
export const MAIL_TYPES = ['message', 'task', 'result', 'escalation'];
|
|
17
40
|
// Composer TUIs detect pastes by input arrival rate; the submit CR must come well
|
|
18
41
|
// after that window or it is treated as a pasted newline.
|
|
@@ -29,6 +52,7 @@ export function sanitizeMessageText(text) {
|
|
|
29
52
|
.replace(/\s+/g, ' ')
|
|
30
53
|
.trim();
|
|
31
54
|
}
|
|
55
|
+
const nativeIdentity = (session) => `${session.shellType}:${session.shellType === 'codex' ? session.codexSessionId ?? '' : session.museSessionId ?? ''}`;
|
|
32
56
|
/**
|
|
33
57
|
* The bridge's mail-delivery engine, extracted from the HTTP router so its
|
|
34
58
|
* timing logic (long-poll waiters, nudge debounce/rate-limit/busy-recheck,
|
|
@@ -50,6 +74,13 @@ export class MailDeliveryService {
|
|
|
50
74
|
pendingNudgeFrom = new Map();
|
|
51
75
|
lastNudgeAt = new Map();
|
|
52
76
|
agentBusySince = new Map();
|
|
77
|
+
nativeLeases = new Map();
|
|
78
|
+
nativeBatches = new Map();
|
|
79
|
+
wakeLocks = new Map();
|
|
80
|
+
wakeControllers = new Map();
|
|
81
|
+
legacyReadyAt = new Map();
|
|
82
|
+
stopped = false;
|
|
83
|
+
nativeWake;
|
|
53
84
|
constructor(options = {}) {
|
|
54
85
|
this.store = options.store ?? null;
|
|
55
86
|
this.mailStore = options.mailStore ?? null;
|
|
@@ -57,6 +88,7 @@ export class MailDeliveryService {
|
|
|
57
88
|
this.now = options.now ?? (() => Date.now());
|
|
58
89
|
this.setTimeoutFn = options.setTimeout ?? ((fn, ms) => setTimeout(fn, ms));
|
|
59
90
|
this.clearTimeoutFn = options.clearTimeout ?? ((handle) => clearTimeout(handle));
|
|
91
|
+
this.nativeWake = options.nativeWake ?? createNativeMailWaker();
|
|
60
92
|
}
|
|
61
93
|
setStore(store) {
|
|
62
94
|
this.store = store;
|
|
@@ -73,12 +105,44 @@ export class MailDeliveryService {
|
|
|
73
105
|
}
|
|
74
106
|
/** Clear all timers and resolve every pending long poll with []. */
|
|
75
107
|
stop() {
|
|
108
|
+
this.stopped = true;
|
|
76
109
|
for (const timer of this.nudgeTimers.values())
|
|
77
110
|
this.clearTimeoutFn(timer);
|
|
78
111
|
this.nudgeTimers.clear();
|
|
79
112
|
for (const waiter of [...this.mailWaiters.values()])
|
|
80
113
|
waiter.deliver([]);
|
|
81
114
|
this.mailWaiters.clear();
|
|
115
|
+
this.nativeLeases.clear();
|
|
116
|
+
this.nativeBatches.clear();
|
|
117
|
+
this.legacyReadyAt.clear();
|
|
118
|
+
for (const controller of this.wakeControllers.values())
|
|
119
|
+
controller.abort();
|
|
120
|
+
this.wakeControllers.clear();
|
|
121
|
+
}
|
|
122
|
+
pluginIdentity(session, adapter) {
|
|
123
|
+
if (adapter === 'opencode')
|
|
124
|
+
return session.shellType === 'opencode' ? session.opencodeSessionId : undefined;
|
|
125
|
+
return ['claude', 'zai', 'kimi', 'deepseek', 'fireworks'].includes(session.shellType ?? 'claude')
|
|
126
|
+
? session.claudeSessionId : undefined;
|
|
127
|
+
}
|
|
128
|
+
registerNativeWake(session, registration) {
|
|
129
|
+
if (this.stopped || session.status !== 'running' || !this.runner?.isRunning(session.id)
|
|
130
|
+
|| this.pluginIdentity(session, registration.adapter) !== registration.nativeSessionId) {
|
|
131
|
+
this.nativeLeases.delete(session.id);
|
|
132
|
+
throw new NativeWakeRegistrationError(409, 'Native wake session identity or running process does not match');
|
|
133
|
+
}
|
|
134
|
+
this.nativeLeases.set(session.id, { ...registration, until: this.now() + NATIVE_WAKE_LEASE_MS });
|
|
135
|
+
}
|
|
136
|
+
pluginLeaseRemaining(session) {
|
|
137
|
+
const lease = this.nativeLeases.get(session.id);
|
|
138
|
+
if (!lease)
|
|
139
|
+
return 0;
|
|
140
|
+
if (session.status !== 'running' || !this.runner?.isRunning(session.id)
|
|
141
|
+
|| this.pluginIdentity(session, lease.adapter) !== lease.nativeSessionId || lease.until <= this.now()) {
|
|
142
|
+
this.nativeLeases.delete(session.id);
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
return lease.until - this.now();
|
|
82
146
|
}
|
|
83
147
|
/** Hook activity (UserPromptSubmit/PreToolUse/PostToolUse): the agent is mid-turn. */
|
|
84
148
|
markAgentBusy(sessionId) {
|
|
@@ -91,7 +155,7 @@ export class MailDeliveryService {
|
|
|
91
155
|
// Plain shells would execute the message as a command; deliver it as a quoted no-op
|
|
92
156
|
// (`: '...'`) — interactive zsh has no '#' comments by default.
|
|
93
157
|
async injectPtyLine(session, sender, text) {
|
|
94
|
-
if (!this.runner)
|
|
158
|
+
if (this.stopped || !this.runner)
|
|
95
159
|
return false;
|
|
96
160
|
const isAgent = session.shellType && session.shellType !== 'shell';
|
|
97
161
|
const safeSender = sender.replace(/['\r\n]/g, '');
|
|
@@ -103,12 +167,16 @@ export class MailDeliveryService {
|
|
|
103
167
|
// Composer TUIs detect pastes by input arrival rate; the submit CR must come well
|
|
104
168
|
// after that window or it is treated as a pasted newline.
|
|
105
169
|
await this.delay(COMPOSER_PASTE_SETTLE_MS);
|
|
170
|
+
if (this.stopped)
|
|
171
|
+
return false;
|
|
106
172
|
if (!this.runner.write(session.id, submitSuffixFor(session.shellType)))
|
|
107
173
|
return false;
|
|
108
174
|
if (isAgent) {
|
|
109
175
|
// Retry Enter separately after the same settle window so it cannot become
|
|
110
176
|
// part of the first paste/submit batch.
|
|
111
177
|
await this.delay(COMPOSER_PASTE_SETTLE_MS);
|
|
178
|
+
if (this.stopped)
|
|
179
|
+
return false;
|
|
112
180
|
if (!this.runner.write(session.id, submitSuffixFor(session.shellType)))
|
|
113
181
|
return false;
|
|
114
182
|
}
|
|
@@ -157,9 +225,12 @@ export class MailDeliveryService {
|
|
|
157
225
|
else if (session.shellType !== 'pi') {
|
|
158
226
|
// Pi's extension owns wake/retry natively; leave mail undelivered between
|
|
159
227
|
// polls instead of falling back to terminal keystroke injection.
|
|
160
|
-
const
|
|
228
|
+
const legacyDelay = HOOKED_SHELL_TYPES.has(session.shellType ?? 'claude')
|
|
161
229
|
? MAIL_NUDGE_DELAY_HOOKED_MS
|
|
162
230
|
: MAIL_NUDGE_DELAY_MS;
|
|
231
|
+
if (!this.pendingNudgeFrom.has(session.id))
|
|
232
|
+
this.legacyReadyAt.set(session.id, this.now() + legacyDelay);
|
|
233
|
+
const nudgeDelay = session.shellType === 'codex' || session.shellType === 'muse' ? MAIL_NUDGE_DELAY_MS : legacyDelay;
|
|
163
234
|
this.scheduleMailNudge(session.id, fromName ?? from, nudgeDelay);
|
|
164
235
|
}
|
|
165
236
|
return { ok: true, id: msg.id };
|
|
@@ -262,6 +333,8 @@ export class MailDeliveryService {
|
|
|
262
333
|
// undelivered and the session is running, inject a one-line pointer to the
|
|
263
334
|
// harness mail command. At most one nudge per session per 30s; senders coalesce.
|
|
264
335
|
scheduleMailNudge(sessionId, fromLabel, delayMs = MAIL_NUDGE_DELAY_MS) {
|
|
336
|
+
if (this.stopped)
|
|
337
|
+
return;
|
|
265
338
|
this.pendingNudgeFrom.set(sessionId, fromLabel);
|
|
266
339
|
if (this.nudgeTimers.has(sessionId))
|
|
267
340
|
return;
|
|
@@ -274,13 +347,78 @@ export class MailDeliveryService {
|
|
|
274
347
|
timer.unref?.();
|
|
275
348
|
this.nudgeTimers.set(sessionId, timer);
|
|
276
349
|
}
|
|
277
|
-
|
|
278
|
-
|
|
350
|
+
fireMailNudge(sessionId) {
|
|
351
|
+
const previous = this.wakeLocks.get(sessionId) ?? Promise.resolve();
|
|
352
|
+
const next = previous.then(() => this.wakeSession(sessionId));
|
|
353
|
+
const settled = next.catch(() => undefined);
|
|
354
|
+
this.wakeLocks.set(sessionId, settled);
|
|
355
|
+
void settled.then(() => { if (this.wakeLocks.get(sessionId) === settled)
|
|
356
|
+
this.wakeLocks.delete(sessionId); });
|
|
357
|
+
return next;
|
|
358
|
+
}
|
|
359
|
+
async wakeSession(sessionId) {
|
|
360
|
+
if (this.stopped || !this.store || !this.mailStore || !this.runner)
|
|
279
361
|
return;
|
|
280
362
|
const fromLabel = this.pendingNudgeFrom.get(sessionId) ?? 'ftown';
|
|
281
363
|
const undelivered = await this.mailStore.listUndelivered(sessionId);
|
|
364
|
+
if (this.stopped)
|
|
365
|
+
return;
|
|
282
366
|
if (undelivered.length === 0) {
|
|
283
367
|
this.pendingNudgeFrom.delete(sessionId);
|
|
368
|
+
this.nativeBatches.delete(sessionId);
|
|
369
|
+
this.legacyReadyAt.delete(sessionId);
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
let session = await this.store.loadSession(sessionId);
|
|
373
|
+
if (this.stopped || !session || session.status !== 'running' || !this.runner.isRunning(sessionId)) {
|
|
374
|
+
this.nativeLeases.delete(sessionId);
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
const leaseRemaining = this.pluginLeaseRemaining(session);
|
|
378
|
+
if (leaseRemaining > 0) {
|
|
379
|
+
this.scheduleMailNudge(sessionId, fromLabel, leaseRemaining);
|
|
380
|
+
return;
|
|
381
|
+
}
|
|
382
|
+
if (session.shellType === 'codex' || session.shellType === 'muse') {
|
|
383
|
+
let identity = nativeIdentity(session);
|
|
384
|
+
const prior = this.nativeBatches.get(sessionId);
|
|
385
|
+
if (prior?.identity === identity && undelivered.every((message) => prior.ids.has(message.id)))
|
|
386
|
+
return;
|
|
387
|
+
// A hook may have drained mail during the session lookup. Never wake for a stale snapshot.
|
|
388
|
+
session = await this.store.loadSession(sessionId);
|
|
389
|
+
const pending = await this.mailStore.listUndelivered(sessionId);
|
|
390
|
+
if (this.stopped || !pending.length || !session || session.status !== 'running' || !this.runner.isRunning(sessionId))
|
|
391
|
+
return;
|
|
392
|
+
identity = nativeIdentity(session);
|
|
393
|
+
const controller = new AbortController();
|
|
394
|
+
this.wakeControllers.set(sessionId, controller);
|
|
395
|
+
const isCurrent = async () => {
|
|
396
|
+
if (this.stopped || controller.signal.aborted)
|
|
397
|
+
return false;
|
|
398
|
+
const live = await this.store.loadSession(sessionId);
|
|
399
|
+
const pending = await this.mailStore.listUndelivered(sessionId);
|
|
400
|
+
return !this.stopped && !controller.signal.aborted && !!live && live.status === 'running'
|
|
401
|
+
&& nativeIdentity(live) === identity
|
|
402
|
+
&& this.runner.isRunning(sessionId) && pending.some(message => undelivered.some(original => original.id === message.id));
|
|
403
|
+
};
|
|
404
|
+
let result;
|
|
405
|
+
try {
|
|
406
|
+
result = await this.nativeWake(session, MAIL_WAKE_TEXT, controller.signal, isCurrent).catch(() => ({ status: 'unknown' }));
|
|
407
|
+
}
|
|
408
|
+
finally {
|
|
409
|
+
if (this.wakeControllers.get(sessionId) === controller)
|
|
410
|
+
this.wakeControllers.delete(sessionId);
|
|
411
|
+
}
|
|
412
|
+
if (this.stopped)
|
|
413
|
+
return;
|
|
414
|
+
if (result.status === 'accepted' || result.status === 'unknown') {
|
|
415
|
+
this.nativeBatches.set(sessionId, { identity, ids: new Set(pending.map((message) => message.id)) });
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
const legacyWait = (this.legacyReadyAt.get(sessionId) ?? 0) - this.now();
|
|
420
|
+
if (legacyWait > 0) {
|
|
421
|
+
this.scheduleMailNudge(sessionId, fromLabel, legacyWait);
|
|
284
422
|
return;
|
|
285
423
|
}
|
|
286
424
|
const busySince = this.agentBusySince.get(sessionId);
|
|
@@ -308,11 +446,21 @@ export class MailDeliveryService {
|
|
|
308
446
|
// re-check this session (new mail via acceptMail, or an external
|
|
309
447
|
// restart/idle hook re-invoking this nudge check) still knows who to
|
|
310
448
|
// credit.
|
|
311
|
-
|
|
449
|
+
// Recheck after native probing/rejection and before each legacy side effect.
|
|
450
|
+
const pending = await this.mailStore.listUndelivered(sessionId);
|
|
451
|
+
session = await this.store.loadSession(sessionId);
|
|
452
|
+
if (this.stopped || !pending.length || !session || session.status !== 'running' || !this.runner.isRunning(sessionId))
|
|
312
453
|
return;
|
|
313
|
-
const
|
|
314
|
-
if (
|
|
454
|
+
const refreshedLease = this.pluginLeaseRemaining(session);
|
|
455
|
+
if (refreshedLease > 0) {
|
|
456
|
+
this.scheduleMailNudge(sessionId, fromLabel, refreshedLease);
|
|
315
457
|
return;
|
|
458
|
+
}
|
|
459
|
+
const freshBusySince = this.agentBusySince.get(sessionId);
|
|
460
|
+
if (freshBusySince !== undefined && this.now() - freshBusySince < AGENT_BUSY_STALE_MS) {
|
|
461
|
+
this.scheduleMailNudge(sessionId, fromLabel, MAIL_NUDGE_BUSY_RECHECK_MS);
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
316
464
|
this.pendingNudgeFrom.delete(sessionId);
|
|
317
465
|
this.lastNudgeAt.set(sessionId, this.now());
|
|
318
466
|
const text = sanitizeMessageText(`You have new ftown mail from ${fromLabel} — run \`ftown harness mail read\` to read it.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mail-delivery.js","sourceRoot":"","sources":["../src/mail-delivery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mail-delivery.js","sourceRoot":"","sources":["../src/mail-delivery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAwB,MAAM,kBAAkB,CAAC;AAI/E,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,IAAI,CAAC;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AACzC,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,qEAAqE,CAAC;AAEpG,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC/B;IAArB,YAAqB,MAAiB,EAAE,OAAe;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAArD,WAAM,GAAN,MAAM,CAAW;IAAqC,CAAC;CAC7E;AACD,MAAM,UAAU,2BAA2B,CAAC,KAAsB;IAChE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrD,IAAI,OAAO,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACnE,IAAI,CAAC,OAAO,KAAK,YAAY,IAAI,OAAO,KAAK,UAAU,CAAC,IAAI,CAAC,eAAe;WACvE,eAAe,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC;WACzE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,KAAK,CAAC;WACpF,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAC5D,MAAM,IAAI,2BAA2B,CAAC,GAAG,EAAE,+EAA+E,CAAC,CAAC;IAC9H,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAuC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAE1G,kFAAkF;AAClF,0DAA0D;AAC1D,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAErC,qFAAqF;AACrF,yEAAyE;AACzE,SAAS,eAAe,CAAC,UAAiC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI;SACR,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC;SACtC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC;AAMD,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;AA8ClK;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAmB;IACtB,KAAK,CAAkC;IACvC,SAAS,CAA+B;IACxC,MAAM,CAA4B;IACzB,GAAG,CAAe;IAClB,YAAY,CAAkD;IAC9D,cAAc,CAAoC;IAE3D,WAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;IACjD,WAAW,GAAiC,IAAI,GAAG,EAAE,CAAC;IACtD,gBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;IAClD,WAAW,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC7C,cAAc,GAAwB,IAAI,GAAG,EAAE,CAAC;IAChD,YAAY,GAAG,IAAI,GAAG,EAAsD,CAAC;IAC7E,aAAa,GAAG,IAAI,GAAG,EAAkD,CAAC;IAC1E,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,eAAe,GAAG,IAAI,GAAG,EAA2B,CAAC;IACrD,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,OAAO,GAAG,KAAK,CAAC;IACP,UAAU,CAAkB;IAE7C,YAAY,UAA+B,EAAE;QAC3C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,MAAwB,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,qBAAqB,EAAE,CAAC;IAClE,CAAC;IAED,QAAQ,CAAC,KAA+B;QACtC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,YAAY,CAAC,SAAgC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,SAAS,CAAC,MAA0B;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,2DAA2D;IAC3D,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACxD,CAAC;IAED,oEAAoE;IACpE,IAAI;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;QAC3B,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YAAE,UAAU,CAAC,KAAK,EAAE,CAAC;QAC3E,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAEO,cAAc,CAAC,OAAgB,EAAE,OAA0C;QACjF,IAAI,OAAO,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5G,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;YAC/F,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1C,CAAC;IAED,kBAAkB,CAAC,OAAgB,EAAE,YAAoC;QACvE,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;eAClF,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,eAAe,EAAE,CAAC;YACzF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,IAAI,2BAA2B,CAAC,GAAG,EAAE,gEAAgE,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,oBAAoB,EAAE,CAAC,CAAC;IACnG,CAAC;IAEO,oBAAoB,CAAC,OAAgB;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;eAClE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACxG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,CAAC;IAED,sFAAsF;IACtF,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,oDAAoD;IACpD,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,oFAAoF;IACpF,gEAAgE;IAChE,KAAK,CAAC,aAAa,CAAC,OAAgB,EAAE,MAAc,EAAE,IAAY;QAChE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,CAAC;QACnE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,OAAO;YAClB,CAAC,CAAC,mBAAmB,UAAU,KAAK,IAAI,EAAE;YAC1C,CAAC,CAAC,sBAAsB,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,kFAAkF;QAClF,0DAA0D;QAC1D,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACrF,IAAI,OAAO,EAAE,CAAC;YACZ,0EAA0E;YAC1E,wCAAwC;YACxC,MAAM,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC3C,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO,KAAK,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QACvF,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,OAAgB,EAAE,IAA6B;QAC9D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QACtD,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;YACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,oBAAoB,SAAS,EAAE,CAAC;QACnF,CAAC;QAED,IAAI,IAAI,GAAwB,SAAS,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAA2B,CAAC,EAAE,CAAC;gBAC5F,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1F,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,IAA2B,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC/F,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAE/F,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9F,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACrE,oEAAoE;YACpE,wEAAwE;YACxE,uEAAuE;YACvE,wEAAwE;YACxE,+CAA+C;YAC/C,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAC/C,OAAO,CAAC,EAAE,EACV,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5B,MAAM,CACP,CAAC;gBACF,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACtC,0EAA0E;YAC1E,iEAAiE;YACjE,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;gBACvE,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,mBAAmB,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC;YACzG,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,KAAK,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC;YACrH,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,IAAI,IAAI,EAAE,UAAU,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CACZ,OAAgB,EAChB,KAAmE;QAEnE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAEzD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG;gBACxB,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC;gBAClD,CAAC,CAAC,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;QACzC,CAAC;QAED,qEAAqE;QACrE,iDAAiD;QACjD,yEAAyE;QACzE,6DAA6D;QAC7D,IAAI,aAAa,GAAG,IAAI,CAAC;QACzB,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC1D,aAAa,GAAG,CAAC,CAAC;QACpB,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,aAAa,CAC1C,OAAO,CAAC,EAAE,EACV,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5B,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CACrC,CAAC;YACF,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACjD,CAAC;QAED,0EAA0E;QAC1E,kEAAkE;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,QAAQ;YAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEnC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,eAAmD,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,EAAE;YACtD,eAAe,GAAG,OAAO,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAe;YACzB,OAAO,EAAE,CAAC,SAAwB,EAAE,EAAE;gBACpC,IAAI,OAAO;oBAAE,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;oBAChD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,eAAe,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;SACF,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;YACnC,0EAA0E;YAC1E,uEAAuE;YACvE,iDAAiD;YACjD,IAAI,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE,OAAO;YACnE,SAAS;iBACN,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;iBAC3B,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,EAAmB,CAAC;gBAChE,OAAO,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YAC/E,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBACxC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAEzC,MAAM,OAAO,GAAG,GAAS,EAAE;YACzB,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,MAAM;gBAAE,OAAO;YACxD,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC,CAAC;QAEF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACjD,CAAC;IAED;2DACuD;IACvD,KAAK,CAAC,kBAAkB,CAAC,OAAgB;QACvC,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAC5C,IAAI,OAAO,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACjD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,OAAO,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,kFAAkF;IAClF,2EAA2E;IAC3E,iFAAiF;IACzE,iBAAiB,CAAC,SAAiB,EAAE,SAAiB,EAAE,OAAO,GAAG,mBAAmB;QAC3F,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC1C,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACvG,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,OAAO,CAAC,CAAC;QACZ,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAEO,aAAa,CAAC,SAAiB;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9G,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,SAAiB;QACzC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAE3E,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC;QAClE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;YAClG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAEjG,IAAI,OAAO,CAAC,SAAS,KAAK,OAAO,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAClE,IAAI,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,KAAK,EAAE,QAAQ,KAAK,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAAE,OAAO;YACtG,2FAA2F;YAC3F,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAChE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;gBAAE,OAAO;YAC7H,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;gBAC3B,IAAI,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,KAAK,CAAC;gBAC5D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBACtD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAU,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;uBACpF,cAAc,CAAC,IAAI,CAAC,KAAK,QAAQ;uBACjC,IAAI,CAAC,MAAO,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9H,CAAC,CAAC;YACF,IAAI,MAAM,CAAC;YACX,IAAI,CAAC;gBAAC,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;oBACpI,CAAC;gBAAC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,UAAU;oBAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;YAC3G,IAAI,IAAI,CAAC,OAAO;gBAAE,OAAO;YACzB,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpG,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzE,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAEzF,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,mBAAmB,EAAE,CAAC;YAC5E,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,0BAA0B,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,yEAAyE;QACzE,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;YAC3C,IAAI,SAAS,GAAG,0BAA0B,EAAE,CAAC;gBAC3C,0EAA0E;gBAC1E,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,0BAA0B,GAAG,SAAS,CAAC,CAAC;gBACrF,OAAO;YACT,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,uEAAuE;QACvE,yEAAyE;QACzE,4DAA4D;QAC5D,oEAAoE;QACpE,iEAAiE;QACjE,qEAAqE;QACrE,UAAU;QACV,6EAA6E;QAC7E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAChE,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO;QAC7H,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACjG,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1D,IAAI,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,mBAAmB,EAAE,CAAC;YACtF,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,0BAA0B,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,mBAAmB,CAC9B,gCAAgC,SAAS,gDAAgD,CAC1F,CAAC;QACF,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;CACF"}
|
package/dist/mcp/fleet.d.ts
CHANGED
|
@@ -181,13 +181,13 @@ export declare const requestSchema: z.ZodObject<{
|
|
|
181
181
|
body: z.ZodOptional<z.ZodUnknown>;
|
|
182
182
|
timeoutMs: z.ZodNumber;
|
|
183
183
|
}, "strict", z.ZodTypeAny, {
|
|
184
|
-
path: string;
|
|
185
184
|
method: "POST" | "GET" | "DELETE" | "PATCH";
|
|
185
|
+
path: string;
|
|
186
186
|
timeoutMs: number;
|
|
187
187
|
body?: unknown;
|
|
188
188
|
}, {
|
|
189
|
-
path: string;
|
|
190
189
|
method: "POST" | "GET" | "DELETE" | "PATCH";
|
|
190
|
+
path: string;
|
|
191
191
|
timeoutMs: number;
|
|
192
192
|
body?: unknown;
|
|
193
193
|
}>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Session } from './types.js';
|
|
2
|
+
export type NativeMailWakeResult = {
|
|
3
|
+
status: 'accepted' | 'unsupported' | 'rejected' | 'unknown';
|
|
4
|
+
};
|
|
5
|
+
export type NativeMailWaker = (session: Session, text: string, signal?: AbortSignal, isCurrent?: () => Promise<boolean>) => Promise<NativeMailWakeResult>;
|
|
6
|
+
interface CommandOptions {
|
|
7
|
+
cwd: string;
|
|
8
|
+
env: NodeJS.ProcessEnv;
|
|
9
|
+
input?: string;
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
timeoutMs: number;
|
|
12
|
+
maxOutputBytes: number;
|
|
13
|
+
}
|
|
14
|
+
interface CommandResult {
|
|
15
|
+
started: boolean;
|
|
16
|
+
code: number | null;
|
|
17
|
+
stdout: string;
|
|
18
|
+
stderr: string;
|
|
19
|
+
errorCode?: string;
|
|
20
|
+
timedOut?: boolean;
|
|
21
|
+
overflow?: boolean;
|
|
22
|
+
aborted?: boolean;
|
|
23
|
+
}
|
|
24
|
+
interface Dependencies {
|
|
25
|
+
run?: (file: string, args: string[], options: CommandOptions) => Promise<CommandResult>;
|
|
26
|
+
now?: () => number;
|
|
27
|
+
env?: NodeJS.ProcessEnv;
|
|
28
|
+
}
|
|
29
|
+
/** Native commands are only wake pointers; the durable inbox owns consumption. */
|
|
30
|
+
export declare function createNativeMailWaker(deps?: Dependencies): NativeMailWaker;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
const UUID = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i;
|
|
3
|
+
const MAX_OUTPUT = 65_536;
|
|
4
|
+
const PROBE_TTL_MS = 60_000;
|
|
5
|
+
const PROBE_CACHE_LIMIT = 16;
|
|
6
|
+
/** No shell interpolation, bounded output/time, explicit stdin EOF for Muse. */
|
|
7
|
+
async function runCommand(file, args, options) {
|
|
8
|
+
if (options.signal?.aborted)
|
|
9
|
+
return { started: false, code: null, stdout: '', stderr: '', aborted: true };
|
|
10
|
+
return new Promise((resolve) => {
|
|
11
|
+
const result = { started: false, code: null, stdout: '', stderr: '' };
|
|
12
|
+
let bytes = 0;
|
|
13
|
+
let forceTimer;
|
|
14
|
+
const child = spawn(file, args, { cwd: options.cwd, env: options.env, shell: false, stdio: ['pipe', 'pipe', 'pipe'] });
|
|
15
|
+
const terminate = () => {
|
|
16
|
+
child.kill('SIGTERM');
|
|
17
|
+
forceTimer ??= setTimeout(() => { child.kill('SIGKILL'); }, 250);
|
|
18
|
+
forceTimer.unref();
|
|
19
|
+
};
|
|
20
|
+
const abort = () => { result.aborted = true; terminate(); };
|
|
21
|
+
const timer = setTimeout(() => { result.timedOut = true; terminate(); }, options.timeoutMs);
|
|
22
|
+
timer.unref();
|
|
23
|
+
const collect = (key, data) => {
|
|
24
|
+
bytes += data.length;
|
|
25
|
+
if (bytes > options.maxOutputBytes) {
|
|
26
|
+
result.overflow = true;
|
|
27
|
+
terminate();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
result[key] += data.toString('utf8');
|
|
31
|
+
};
|
|
32
|
+
child.once('spawn', () => { result.started = true; });
|
|
33
|
+
child.stdout.on('data', (data) => collect('stdout', data));
|
|
34
|
+
child.stderr.on('data', (data) => collect('stderr', data));
|
|
35
|
+
child.once('error', (error) => { result.errorCode = error.code; });
|
|
36
|
+
child.once('close', (code) => {
|
|
37
|
+
result.code = code;
|
|
38
|
+
clearTimeout(timer);
|
|
39
|
+
if (forceTimer)
|
|
40
|
+
clearTimeout(forceTimer);
|
|
41
|
+
options.signal?.removeEventListener('abort', abort);
|
|
42
|
+
resolve(result);
|
|
43
|
+
});
|
|
44
|
+
child.stdin.on('error', () => { });
|
|
45
|
+
options.signal?.addEventListener('abort', abort, { once: true });
|
|
46
|
+
if (options.signal?.aborted)
|
|
47
|
+
abort();
|
|
48
|
+
child.stdin.end(options.input);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function targetEnvironment(base, session) {
|
|
52
|
+
const env = { ...base };
|
|
53
|
+
// A bridge may itself be running inside Codex/Muse. Its client/transport
|
|
54
|
+
// selectors must not redirect the wake away from the receiving session.
|
|
55
|
+
for (const key of Object.keys(env)) {
|
|
56
|
+
if ((key.startsWith('CODEX_') && key !== 'CODEX_HOME') || key.startsWith('MUSE_'))
|
|
57
|
+
delete env[key];
|
|
58
|
+
}
|
|
59
|
+
// ProcessRunner applies explicit target overrides last, including home/XDG.
|
|
60
|
+
Object.assign(env, session.env);
|
|
61
|
+
for (const key of ['CODEX_THREAD_ID', 'CODEX_SESSION_ID', 'MUSE_SESSION_ID', 'MUSE_THREAD_ID'])
|
|
62
|
+
delete env[key];
|
|
63
|
+
env.MUSE_NO_AUTO_UPDATE = '1';
|
|
64
|
+
return env;
|
|
65
|
+
}
|
|
66
|
+
function interrupted(result) {
|
|
67
|
+
return !!(result.timedOut || result.overflow || result.aborted || result.errorCode);
|
|
68
|
+
}
|
|
69
|
+
function parserUnsupported(result) {
|
|
70
|
+
return result.code !== 0 && /(?:unrecognized subcommand|unknown command|unexpected argument)[^\n]*(?:queue|session-message|--thread|--target|--json)/i.test(result.stderr);
|
|
71
|
+
}
|
|
72
|
+
function backendUnsupported(result) {
|
|
73
|
+
// Codex itself emits this only for typed method-not-found/feature-gate
|
|
74
|
+
// errors. Capacity, permissions and transport failures are not unsupported.
|
|
75
|
+
return result.code !== 0 && /the (?:local app-server daemon|remote app server) does not support thread\/queue\/add; update or restart the (?:local app-server daemon|remote app server)/.test(result.stderr);
|
|
76
|
+
}
|
|
77
|
+
/** Native commands are only wake pointers; the durable inbox owns consumption. */
|
|
78
|
+
export function createNativeMailWaker(deps = {}) {
|
|
79
|
+
const run = deps.run ?? runCommand;
|
|
80
|
+
const now = deps.now ?? Date.now;
|
|
81
|
+
const base = deps.env ?? process.env;
|
|
82
|
+
const probes = new Map();
|
|
83
|
+
return async (session, text, signal, isCurrent) => {
|
|
84
|
+
const harness = session.shellType;
|
|
85
|
+
if (harness !== 'codex' && harness !== 'muse')
|
|
86
|
+
return { status: 'unsupported' };
|
|
87
|
+
const nativeId = harness === 'codex' ? session.codexSessionId : session.museSessionId;
|
|
88
|
+
if (!nativeId || !UUID.test(nativeId))
|
|
89
|
+
return { status: 'unsupported' };
|
|
90
|
+
if (session.status !== 'running' || !text.trim() || text.length > 4096 || signal?.aborted)
|
|
91
|
+
return { status: 'rejected' };
|
|
92
|
+
// Real Muse 1.4.10 default-preset echo receivers rejected idle AND busy
|
|
93
|
+
// sends with external_agent_ingress_closed and no receipts. Keep the
|
|
94
|
+
// compatibility path until an ingress with verified admission is available;
|
|
95
|
+
// command presence alone is insufficient.
|
|
96
|
+
if (harness === 'muse')
|
|
97
|
+
return { status: 'unsupported' };
|
|
98
|
+
const env = targetEnvironment(base, session);
|
|
99
|
+
const cwd = session.workingDir ?? process.cwd();
|
|
100
|
+
const options = { cwd, env, signal, timeoutMs: 5_000, maxOutputBytes: MAX_OUTPUT };
|
|
101
|
+
const cacheKey = JSON.stringify([harness, env.PATH, env.HOME, env.CODEX_HOME, env.XDG_CONFIG_HOME, cwd]);
|
|
102
|
+
let probe = probes.get(cacheKey);
|
|
103
|
+
try {
|
|
104
|
+
if (!probe || now() >= probe.expires) {
|
|
105
|
+
const result = await run('codex', ['queue', '--help'], options);
|
|
106
|
+
if (signal?.aborted)
|
|
107
|
+
return { status: 'rejected' };
|
|
108
|
+
if (result.errorCode === 'ENOENT' || parserUnsupported(result))
|
|
109
|
+
probe = { supported: false, expires: now() + PROBE_TTL_MS };
|
|
110
|
+
else if (interrupted(result) || result.code !== 0)
|
|
111
|
+
return { status: 'rejected' }; // Probe never submits input.
|
|
112
|
+
else
|
|
113
|
+
probe = { supported: /Usage:\s*codex queue\b/.test(result.stdout) && result.stdout.includes('--thread') && result.stdout.includes('--message'), expires: now() + PROBE_TTL_MS };
|
|
114
|
+
probes.delete(cacheKey);
|
|
115
|
+
while (probes.size >= PROBE_CACHE_LIMIT)
|
|
116
|
+
probes.delete(probes.keys().next().value);
|
|
117
|
+
probes.set(cacheKey, probe);
|
|
118
|
+
}
|
|
119
|
+
if (!probe.supported)
|
|
120
|
+
return { status: 'unsupported' };
|
|
121
|
+
if (signal?.aborted || (isCurrent && !await isCurrent()) || signal?.aborted)
|
|
122
|
+
return { status: 'rejected' };
|
|
123
|
+
const result = await run('codex', ['queue', '--thread', nativeId, '--message', text], { ...options, timeoutMs: 10_000 });
|
|
124
|
+
if (!result.started)
|
|
125
|
+
return { status: result.errorCode === 'ENOENT' ? 'unsupported' : 'rejected' };
|
|
126
|
+
if (interrupted(result))
|
|
127
|
+
return { status: 'unknown' };
|
|
128
|
+
if (parserUnsupported(result) || backendUnsupported(result))
|
|
129
|
+
return { status: 'unsupported' };
|
|
130
|
+
if (result.code !== 0)
|
|
131
|
+
return { status: 'unknown' };
|
|
132
|
+
const receipt = /^Queued message ([a-f0-9-]{36}) for thread ([a-f0-9-]{36})\.$/i.exec(result.stdout.trim());
|
|
133
|
+
return { status: receipt && UUID.test(receipt[1]) && receipt[2].toLowerCase() === nativeId.toLowerCase() ? 'accepted' : 'unknown' };
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// An injected runner must preserve dispatch state; a thrown exception is
|
|
137
|
+
// ambiguous, so never automatically dispatch again through another path.
|
|
138
|
+
return { status: 'unknown' };
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=native-mail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-mail.js","sourceRoot":"","sources":["../src/native-mail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface Dependency {
|
|
2
|
+
source: string;
|
|
3
|
+
target: string;
|
|
4
|
+
}
|
|
5
|
+
/** Preserve each resolved production edge, including root-local/outer-hoisted version conflicts. */
|
|
6
|
+
export declare function productionDependencies(packageRoot: string): Dependency[];
|
|
7
|
+
export declare function assertSafeDirectory(path: string): void;
|
|
8
|
+
export declare function assertNoSymlinks(path: string): void;
|
|
9
|
+
/** Copy own package files and native assets; node_modules are reconstructed from the production graph. */
|
|
10
|
+
export declare function copyRuntimeTree(source: string, target: string, inventoryRoot: string): string[];
|
|
11
|
+
/** Public fixture/installer helper: package metadata is copied separately by its caller. */
|
|
12
|
+
export declare function copyProductionDependencies(packageRoot: string, targetRoot: string): string[];
|
|
13
|
+
export {};
|