ftown-bridge 0.19.68 → 0.20.2
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/ask-question-hook.d.ts +46 -0
- package/dist/ask-question-hook.js +192 -0
- package/dist/ask-question-hook.js.map +1 -0
- package/dist/attention-events.d.ts +38 -2
- package/dist/attention-events.js +70 -0
- package/dist/attention-events.js.map +1 -1
- package/dist/attention-prompt-protocol.d.ts +92 -0
- package/dist/attention-prompt-protocol.js +28 -0
- package/dist/attention-prompt-protocol.js.map +1 -0
- package/dist/attention-prompt.d.ts +12 -0
- package/dist/attention-prompt.js +333 -0
- package/dist/attention-prompt.js.map +1 -0
- package/dist/attention-store.d.ts +29 -1
- package/dist/attention-store.js +218 -18
- package/dist/attention-store.js.map +1 -1
- package/dist/bounded-regex.d.ts +22 -0
- package/dist/bounded-regex.js +118 -0
- package/dist/bounded-regex.js.map +1 -0
- package/dist/browser-access.js +7 -1
- package/dist/browser-access.js.map +1 -1
- package/dist/command-rpc.d.ts +10 -0
- package/dist/command-rpc.js +84 -19
- package/dist/command-rpc.js.map +1 -1
- package/dist/harness-commands.js +7 -0
- package/dist/harness-commands.js.map +1 -1
- package/dist/hook-installer.d.ts +2 -0
- package/dist/hook-installer.js +83 -9
- package/dist/hook-installer.js.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/local-api-server.d.ts +3 -1
- package/dist/local-api-server.js +134 -32
- package/dist/local-api-server.js.map +1 -1
- package/dist/mail-store.js +1 -1
- package/dist/mail-store.js.map +1 -1
- package/dist/mcp/fleet.d.ts +1 -1
- package/dist/mcp/fleet.js +1 -1
- package/dist/mcp/fleet.js.map +1 -1
- package/dist/mcp/security-events.js +2 -2
- package/dist/mcp/security-events.js.map +1 -1
- package/dist/mcp/server.js +38 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/pull-request-review-protocol.d.ts +59 -0
- package/dist/pull-request-review-protocol.js +6 -0
- package/dist/pull-request-review-protocol.js.map +1 -0
- package/dist/pull-request-review.d.ts +19 -0
- package/dist/pull-request-review.js +234 -0
- package/dist/pull-request-review.js.map +1 -0
- package/dist/security/bridge/account-state.d.ts +4 -4
- package/dist/security/bridge/audit.js +1 -1
- package/dist/security/bridge/audit.js.map +1 -1
- package/dist/security/bridge/identity.d.ts +3 -3
- package/dist/security/bridge/metadata.d.ts +2 -2
- package/dist/security/bridge/permissions.js +9 -4
- package/dist/security/bridge/permissions.js.map +1 -1
- package/dist/session-store.d.ts +7 -0
- package/dist/session-store.js +39 -7
- package/dist/session-store.js.map +1 -1
- package/dist/session-wire.d.ts +1 -0
- package/dist/session-wire.js +6 -2
- package/dist/session-wire.js.map +1 -1
- package/dist/sessions-commands.d.ts +5 -0
- package/dist/sessions-commands.js +155 -5
- package/dist/sessions-commands.js.map +1 -1
- package/dist/terminal-manager.d.ts +5 -1
- package/dist/terminal-manager.js +10 -28
- package/dist/terminal-manager.js.map +1 -1
- package/dist/types.d.ts +6 -2
- package/dist/usage-collector.js +4 -0
- package/dist/usage-collector.js.map +1 -1
- package/package.json +2 -2
- package/skills/ftown/SKILL.md +29 -6
- package/skills/ftown/references/sessions.md +65 -5
package/dist/attention-store.js
CHANGED
|
@@ -3,14 +3,35 @@ import { open, readFile, rename, rm } from 'node:fs/promises';
|
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { createHash, randomUUID } from 'node:crypto';
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
-
import { classifyAttentionHook, sanitizeAttentionText } from './attention-events.js';
|
|
6
|
+
import { classifyAttentionHook, normalizeAttentionPrompt, promptSchema, sanitizeAttentionText } from './attention-events.js';
|
|
7
|
+
import { ATTENTION_ITEM_WAIT_MAX_SECONDS, ATTENTION_PROMPT_LIMITS, ATTENTION_WAITER_TTL_MS } from './attention-prompt-protocol.js';
|
|
8
|
+
import { validateAttentionAnswer } from './attention-prompt.js';
|
|
9
|
+
const L = ATTENTION_PROMPT_LIMITS;
|
|
10
|
+
/** JSON with object keys sorted, so equal prompts always hash alike. */
|
|
11
|
+
function canonical(value) {
|
|
12
|
+
if (Array.isArray(value))
|
|
13
|
+
return `[${value.map(canonical).join(',')}]`;
|
|
14
|
+
if (value && typeof value === 'object') {
|
|
15
|
+
return `{${Object.entries(value).filter(([, v]) => v !== undefined)
|
|
16
|
+
.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0)).map(([k, v]) => `${JSON.stringify(k)}:${canonical(v)}`).join(',')}}`;
|
|
17
|
+
}
|
|
18
|
+
return JSON.stringify(value);
|
|
19
|
+
}
|
|
20
|
+
const answerSchema = z.object({
|
|
21
|
+
answers: z.array(z.object({
|
|
22
|
+
selected: z.array(z.number().int().nonnegative()).max(L.options),
|
|
23
|
+
text: z.string().max(L.answerTextChars).optional(),
|
|
24
|
+
}).strict()).min(1).max(L.questions),
|
|
25
|
+
answeredAt: z.string(),
|
|
26
|
+
}).strict();
|
|
7
27
|
const itemSchema = z.object({
|
|
8
28
|
id: z.string(), sequence: z.number().int().positive(),
|
|
9
29
|
type: z.enum(['permission_prompt', 'elicitation_dialog', 'agent_needs_input', 'ask_user']),
|
|
10
30
|
title: z.string().max(200), message: z.string().max(2000),
|
|
11
31
|
createdAt: z.string(), lastSeenAt: z.string(), occurrences: z.number().int().positive(),
|
|
12
32
|
acknowledgedAt: z.string().optional(), resolvedAt: z.string().optional(),
|
|
13
|
-
resolution: z.enum(['manual', 'user_prompt', 'elicitation_complete', 'session_end']).optional(),
|
|
33
|
+
resolution: z.enum(['manual', 'user_prompt', 'elicitation_complete', 'session_end', 'answered', 'tool_complete']).optional(),
|
|
34
|
+
prompt: promptSchema.optional(), answer: answerSchema.optional(),
|
|
14
35
|
fingerprint: z.string(), sourceId: z.string().optional(), reason: z.string().optional(),
|
|
15
36
|
}).strict();
|
|
16
37
|
const ledgerSchema = z.object({
|
|
@@ -41,6 +62,10 @@ export class AttentionStore {
|
|
|
41
62
|
onNotification;
|
|
42
63
|
locks = new Map();
|
|
43
64
|
listeners = new Map();
|
|
65
|
+
/** Per session: wake callbacks of item waiters, fired whenever any item is resolved. */
|
|
66
|
+
itemWaiters = new Map();
|
|
67
|
+
/** Per attention event id: active item long-polls and when the latest one started. */
|
|
68
|
+
pollers = new Map();
|
|
44
69
|
idleTimers = new Map();
|
|
45
70
|
notificationsStopped = false;
|
|
46
71
|
notificationOptions;
|
|
@@ -51,6 +76,22 @@ export class AttentionStore {
|
|
|
51
76
|
this.notificationOptions = { now: Date.now, schedule: setTimeout, cancel: clearTimeout,
|
|
52
77
|
isSessionActive: async () => true, ...options };
|
|
53
78
|
}
|
|
79
|
+
wakeItemWaiters(id) {
|
|
80
|
+
for (const wake of Array.from(this.itemWaiters.get(id) ?? []))
|
|
81
|
+
wake();
|
|
82
|
+
}
|
|
83
|
+
isExplicit(event) {
|
|
84
|
+
return event.type === 'agent_needs_input' || (event.type === 'ask_user' && !!event.prompt);
|
|
85
|
+
}
|
|
86
|
+
hasLiveWaiter(eventId, now = this.notificationOptions.now()) {
|
|
87
|
+
const poller = this.pollers.get(eventId);
|
|
88
|
+
if (!poller)
|
|
89
|
+
return false;
|
|
90
|
+
return poller.active > 0 || now - poller.lastPollAt <= ATTENTION_WAITER_TTL_MS;
|
|
91
|
+
}
|
|
92
|
+
activeWaits(eventId) {
|
|
93
|
+
return this.pollers.get(eventId)?.active ?? 0;
|
|
94
|
+
}
|
|
54
95
|
clearIdleTimer(id) {
|
|
55
96
|
const entry = this.idleTimers.get(id);
|
|
56
97
|
if (entry)
|
|
@@ -221,18 +262,30 @@ export class AttentionStore {
|
|
|
221
262
|
throw new AttentionError('invalid_cursor', 'Cursor is malformed or belongs to another session');
|
|
222
263
|
}
|
|
223
264
|
}
|
|
224
|
-
|
|
225
|
-
|
|
265
|
+
/** `protect`: items resolved by the current operation; a waiter must still be able to read them. */
|
|
266
|
+
prune(ledger, protect = []) {
|
|
267
|
+
const resolved = ledger.events.filter((event) => event.resolvedAt && !protect.includes(event.id)).sort((a, b) => b.sequence - a.sequence);
|
|
226
268
|
const drop = new Set(resolved.slice(this.resolvedRetention).map((event) => event.id));
|
|
227
269
|
for (const event of ledger.events)
|
|
228
270
|
if (drop.has(event.id))
|
|
229
271
|
ledger.prunedThrough = Math.max(ledger.prunedThrough, event.sequence);
|
|
230
272
|
ledger.events = ledger.events.filter((event) => !drop.has(event.id));
|
|
231
273
|
}
|
|
232
|
-
async record(id, eventName, data) {
|
|
274
|
+
async record(id, eventName, data, options = {}) {
|
|
275
|
+
return (await this.recordDetailed(id, eventName, data, options)).item;
|
|
276
|
+
}
|
|
277
|
+
/** Like record, but also reports whether the returned item was newly created (true) or deduped onto an existing one (false). */
|
|
278
|
+
async recordDetailed(id, eventName, data, options = {}) {
|
|
279
|
+
let apiPrompt;
|
|
280
|
+
if (options.prompt !== undefined) {
|
|
281
|
+
const checked = normalizeAttentionPrompt(options.prompt);
|
|
282
|
+
if (!checked.ok)
|
|
283
|
+
throw new AttentionError('invalid_prompt', checked.error, 400);
|
|
284
|
+
apiPrompt = checked.value;
|
|
285
|
+
}
|
|
233
286
|
const observation = classifyAttentionHook(eventName, data);
|
|
234
|
-
if (!observation.activity && !observation.attention && !observation.resolve)
|
|
235
|
-
return;
|
|
287
|
+
if (!observation.activity && !observation.attention && !observation.resolve && !observation.toolComplete)
|
|
288
|
+
return { item: undefined, created: false };
|
|
236
289
|
const cancelIdle = observation.activity === 'thinking' || observation.activity === 'tool_use' || observation.resolve === 'session_end';
|
|
237
290
|
if (cancelIdle)
|
|
238
291
|
this.idleCanceled(id);
|
|
@@ -249,34 +302,60 @@ export class AttentionStore {
|
|
|
249
302
|
}
|
|
250
303
|
if (observation.activity)
|
|
251
304
|
ledger.activity = { state: observation.activity, lastActivityAt: timestamp };
|
|
305
|
+
let resolvedAny = false;
|
|
306
|
+
const resolvedIds = [];
|
|
252
307
|
if (observation.resolve)
|
|
253
308
|
for (const event of ledger.events) {
|
|
254
309
|
if (event.resolvedAt || (observation.resolve === 'elicitation_complete' && event.type !== 'elicitation_dialog'))
|
|
255
310
|
continue;
|
|
256
311
|
event.resolvedAt = timestamp;
|
|
257
312
|
event.resolution = observation.resolve;
|
|
313
|
+
resolvedAny = true;
|
|
314
|
+
resolvedIds.push(event.id);
|
|
315
|
+
}
|
|
316
|
+
if (observation.toolComplete) {
|
|
317
|
+
const sourceId = createHash('sha256').update(observation.toolComplete).digest('hex');
|
|
318
|
+
for (const event of ledger.events) {
|
|
319
|
+
if (event.resolvedAt || event.type !== 'ask_user' || event.sourceId !== sourceId)
|
|
320
|
+
continue;
|
|
321
|
+
event.resolvedAt = timestamp;
|
|
322
|
+
event.resolution = 'tool_complete';
|
|
323
|
+
resolvedAny = true;
|
|
324
|
+
resolvedIds.push(event.id);
|
|
258
325
|
}
|
|
326
|
+
}
|
|
259
327
|
let created = false;
|
|
260
328
|
let recorded;
|
|
261
329
|
if (observation.attention) {
|
|
262
|
-
const { sourceId: rawSourceId, ...attention } = observation.attention;
|
|
330
|
+
const { sourceId: rawSourceId, prompt: hookPrompt, ...attention } = observation.attention;
|
|
263
331
|
const sourceId = rawSourceId ? createHash('sha256').update(rawSourceId).digest('hex') : undefined;
|
|
264
|
-
|
|
265
|
-
|
|
332
|
+
// Only a prompt the caller passed explicitly (agent_needs_input) or derived from AskUserQuestion's
|
|
333
|
+
// tool_input is stored; hook payload keys named prompt/attentionPrompt are never read.
|
|
334
|
+
const prompt = attention.type === 'agent_needs_input' ? apiPrompt : hookPrompt;
|
|
335
|
+
const fingerprintOf = (p) => createHash('sha256').update(p ? `${JSON.stringify(attention)}\u0000${canonical(p)}` : JSON.stringify(attention)).digest('hex');
|
|
336
|
+
const fingerprint = fingerprintOf(prompt);
|
|
337
|
+
// A tool_use_id names one AskUserQuestion call: a replayed hook must not reopen or duplicate a resolved one.
|
|
338
|
+
const existing = ledger.events.find((event) => sourceId
|
|
339
|
+
? event.sourceId === sourceId && (!event.resolvedAt || (attention.type === 'ask_user' && event.type === 'ask_user'))
|
|
340
|
+
: !event.resolvedAt && event.fingerprint === fingerprint);
|
|
266
341
|
if (existing) {
|
|
267
342
|
existing.lastSeenAt = timestamp;
|
|
268
343
|
existing.occurrences++;
|
|
269
344
|
recorded = existing;
|
|
345
|
+
if (!existing.prompt && prompt) {
|
|
346
|
+
existing.prompt = prompt;
|
|
347
|
+
existing.fingerprint = fingerprintOf(prompt);
|
|
348
|
+
}
|
|
270
349
|
}
|
|
271
350
|
else {
|
|
272
351
|
const attentionId = randomUUID();
|
|
273
352
|
notifications.push({ kind: 'question', eventKey: `question:${attentionId}`, title: attention.title, message: attention.message, occurredAt: timestamp });
|
|
274
|
-
recorded = { ...attention, id: attentionId, sequence: ++ledger.sequence, createdAt: timestamp, lastSeenAt: timestamp, occurrences: 1, fingerprint, ...(sourceId ? { sourceId } : {}) };
|
|
353
|
+
recorded = { ...attention, id: attentionId, sequence: ++ledger.sequence, createdAt: timestamp, lastSeenAt: timestamp, occurrences: 1, fingerprint, ...(sourceId ? { sourceId } : {}), ...(prompt ? { prompt } : {}) };
|
|
275
354
|
ledger.events.push(recorded);
|
|
276
355
|
created = true;
|
|
277
356
|
}
|
|
278
357
|
}
|
|
279
|
-
this.prune(ledger);
|
|
358
|
+
this.prune(ledger, resolvedIds);
|
|
280
359
|
await this.save(id, ledger);
|
|
281
360
|
if (ledger.activity.state === 'idle' && ledger.idleCycle && !ledger.idleCycle.notifiedAt
|
|
282
361
|
&& !this.idleTimers.has(id))
|
|
@@ -291,7 +370,9 @@ export class AttentionStore {
|
|
|
291
370
|
if (created)
|
|
292
371
|
for (const listener of this.listeners.get(id) ?? [])
|
|
293
372
|
listener();
|
|
294
|
-
|
|
373
|
+
if (resolvedAny)
|
|
374
|
+
this.wakeItemWaiters(id);
|
|
375
|
+
return { item: recorded ? publicItem(recorded) : undefined, created };
|
|
295
376
|
});
|
|
296
377
|
}
|
|
297
378
|
async list(id, options = {}) {
|
|
@@ -310,7 +391,7 @@ export class AttentionStore {
|
|
|
310
391
|
});
|
|
311
392
|
}
|
|
312
393
|
latestExplicit(ledger) {
|
|
313
|
-
const latest = ledger.events.filter(event => event
|
|
394
|
+
const latest = ledger.events.filter(event => this.isExplicit(event) && !event.resolvedAt && !event.acknowledgedAt)
|
|
314
395
|
.reduce((current, event) => !current || event.sequence > current.sequence ? event : current, undefined);
|
|
315
396
|
return latest ? publicItem(latest) : null;
|
|
316
397
|
}
|
|
@@ -324,21 +405,65 @@ export class AttentionStore {
|
|
|
324
405
|
async resolveExplicitThrough(id, eventId) {
|
|
325
406
|
return this.withLock(id, async () => {
|
|
326
407
|
const ledger = await this.load(id);
|
|
327
|
-
const displayed = ledger.events.find(event => event.id === eventId && event
|
|
408
|
+
const displayed = ledger.events.find(event => event.id === eventId && this.isExplicit(event));
|
|
328
409
|
if (!displayed)
|
|
329
410
|
throw new AttentionError('unknown_attention', 'Unknown explicit attention request');
|
|
330
411
|
const timestamp = new Date().toISOString();
|
|
412
|
+
const resolvedIds = [];
|
|
331
413
|
for (const event of ledger.events) {
|
|
332
|
-
|
|
414
|
+
// Older plain requests are superseded; an older question still awaiting its own answer is not.
|
|
415
|
+
if (this.isExplicit(event) && event.sequence <= displayed.sequence && !event.resolvedAt && (event.id === displayed.id || !event.prompt)) {
|
|
333
416
|
event.resolvedAt = timestamp;
|
|
334
417
|
event.resolution = 'manual';
|
|
418
|
+
resolvedIds.push(event.id);
|
|
335
419
|
}
|
|
336
420
|
}
|
|
337
|
-
this.prune(ledger);
|
|
421
|
+
this.prune(ledger, resolvedIds);
|
|
338
422
|
await this.save(id, ledger);
|
|
423
|
+
this.wakeItemWaiters(id);
|
|
339
424
|
return { attention: this.latestExplicit(ledger), sequence: ledger.sequence };
|
|
340
425
|
});
|
|
341
426
|
}
|
|
427
|
+
/** Record the human's answer and resolve the item. The caller delivers it (waiter or mail). */
|
|
428
|
+
async answer(id, eventId, answers, now) {
|
|
429
|
+
return this.withLock(id, async () => {
|
|
430
|
+
const ledger = await this.load(id);
|
|
431
|
+
const event = ledger.events.find(candidate => candidate.id === eventId);
|
|
432
|
+
if (!event)
|
|
433
|
+
throw new AttentionError('attention_not_found', 'Unknown attention request', 404);
|
|
434
|
+
if (!event.prompt)
|
|
435
|
+
throw new AttentionError('attention_not_answerable', 'This attention request has no question to answer', 409);
|
|
436
|
+
if (event.resolvedAt)
|
|
437
|
+
throw new AttentionError('attention_already_resolved', 'This attention request is already resolved', 409);
|
|
438
|
+
const checked = validateAttentionAnswer(event.prompt, answers);
|
|
439
|
+
if (!checked.ok)
|
|
440
|
+
throw new AttentionError('invalid_answer', checked.error, 400);
|
|
441
|
+
const at = now ?? new Date(this.notificationOptions.now());
|
|
442
|
+
// Mail answers fall back to mail when nobody is polling right now (a duplicate beats a lost answer);
|
|
443
|
+
// hook answers have no fallback, so a recent poll still counts.
|
|
444
|
+
const waiterLive = event.prompt.channel === 'mail' ? this.activeWaits(eventId) > 0 : this.hasLiveWaiter(eventId, at.getTime());
|
|
445
|
+
if (event.prompt.channel === 'hook' && !waiterLive) {
|
|
446
|
+
throw new AttentionError('answer_waiter_gone', 'The agent is no longer waiting for this answer', 409);
|
|
447
|
+
}
|
|
448
|
+
const timestamp = at.toISOString();
|
|
449
|
+
event.answer = { answers: checked.value, answeredAt: timestamp };
|
|
450
|
+
event.resolvedAt = timestamp;
|
|
451
|
+
event.resolution = 'answered';
|
|
452
|
+
const resolvedIds = [event.id];
|
|
453
|
+
for (const older of ledger.events) {
|
|
454
|
+
if (this.isExplicit(older) && older.sequence < event.sequence && !older.resolvedAt && !older.prompt) {
|
|
455
|
+
older.resolvedAt = timestamp;
|
|
456
|
+
older.resolution = 'manual';
|
|
457
|
+
resolvedIds.push(older.id);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
const item = publicItem(event);
|
|
461
|
+
this.prune(ledger, resolvedIds);
|
|
462
|
+
await this.save(id, ledger);
|
|
463
|
+
this.wakeItemWaiters(id);
|
|
464
|
+
return { item, snapshot: { attention: this.latestExplicit(ledger), sequence: ledger.sequence }, waiterLive };
|
|
465
|
+
});
|
|
466
|
+
}
|
|
342
467
|
async mutate(id, ids, operation, reason) {
|
|
343
468
|
return this.withLock(id, async () => {
|
|
344
469
|
const ledger = await this.load(id);
|
|
@@ -359,8 +484,10 @@ export class AttentionStore {
|
|
|
359
484
|
}
|
|
360
485
|
}
|
|
361
486
|
const output = result.map(publicItem);
|
|
362
|
-
this.prune(ledger);
|
|
487
|
+
this.prune(ledger, operation === 'resolve' ? wanted : []);
|
|
363
488
|
await this.save(id, ledger);
|
|
489
|
+
if (operation === 'resolve')
|
|
490
|
+
this.wakeItemWaiters(id);
|
|
364
491
|
return output;
|
|
365
492
|
});
|
|
366
493
|
}
|
|
@@ -404,5 +531,78 @@ export class AttentionStore {
|
|
|
404
531
|
this.listeners.delete(id);
|
|
405
532
|
}
|
|
406
533
|
}
|
|
534
|
+
async readItem(id, eventId) {
|
|
535
|
+
return this.withLock(id, async () => {
|
|
536
|
+
const event = (await this.load(id)).events.find(candidate => candidate.id === eventId);
|
|
537
|
+
if (!event)
|
|
538
|
+
throw new AttentionError('attention_not_found', 'Unknown attention request', 404);
|
|
539
|
+
return publicItem(event);
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
/** Long-poll one item: returns when it is resolved, at the deadline (current item), or rejects on abort. */
|
|
543
|
+
async waitForItem(id, eventId, waitMs, signal) {
|
|
544
|
+
const ms = Number.isFinite(waitMs) ? Math.min(Math.max(waitMs, 0), ATTENTION_ITEM_WAIT_MAX_SECONDS * 1000) : 0;
|
|
545
|
+
// A zero-wait read is a status check, not a waiter: it never counts toward liveness.
|
|
546
|
+
if (ms <= 0)
|
|
547
|
+
return this.readItem(id, eventId);
|
|
548
|
+
const deadline = Date.now() + ms;
|
|
549
|
+
// Install before the first read so a resolution cannot fall between read and listener setup.
|
|
550
|
+
let notify;
|
|
551
|
+
const waiters = this.itemWaiters.get(id) ?? new Set();
|
|
552
|
+
const waiter = () => notify?.();
|
|
553
|
+
waiters.add(waiter);
|
|
554
|
+
this.itemWaiters.set(id, waiters);
|
|
555
|
+
let poller;
|
|
556
|
+
try {
|
|
557
|
+
while (true) {
|
|
558
|
+
if (signal?.aborted)
|
|
559
|
+
throw new AttentionError('cancelled', 'Attention wait cancelled', 499);
|
|
560
|
+
let wake;
|
|
561
|
+
const change = new Promise((resolve) => { wake = resolve; });
|
|
562
|
+
notify = wake;
|
|
563
|
+
const item = await this.readItem(id, eventId);
|
|
564
|
+
if (item.resolvedAt || Date.now() >= deadline)
|
|
565
|
+
return item;
|
|
566
|
+
if (!poller) {
|
|
567
|
+
// Only a confirmed, still-open item gets a liveness record.
|
|
568
|
+
const nowMs = this.notificationOptions.now();
|
|
569
|
+
for (const [key, entry] of this.pollers)
|
|
570
|
+
if (!entry.active && nowMs - entry.lastPollAt > ATTENTION_WAITER_TTL_MS)
|
|
571
|
+
this.pollers.delete(key);
|
|
572
|
+
poller = this.pollers.get(eventId) ?? { active: 0, lastPollAt: nowMs };
|
|
573
|
+
poller.active++;
|
|
574
|
+
poller.lastPollAt = nowMs;
|
|
575
|
+
this.pollers.set(eventId, poller);
|
|
576
|
+
}
|
|
577
|
+
let timer;
|
|
578
|
+
const cancel = () => wake();
|
|
579
|
+
try {
|
|
580
|
+
const timeout = new Promise((resolve) => { timer = setTimeout(resolve, Math.max(0, deadline - Date.now())); });
|
|
581
|
+
signal?.addEventListener('abort', cancel, { once: true });
|
|
582
|
+
if (signal?.aborted)
|
|
583
|
+
wake();
|
|
584
|
+
await Promise.race([change, timeout]);
|
|
585
|
+
}
|
|
586
|
+
finally {
|
|
587
|
+
if (timer)
|
|
588
|
+
clearTimeout(timer);
|
|
589
|
+
signal?.removeEventListener('abort', cancel);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
finally {
|
|
594
|
+
waiters.delete(waiter);
|
|
595
|
+
if (!waiters.size)
|
|
596
|
+
this.itemWaiters.delete(id);
|
|
597
|
+
if (poller) {
|
|
598
|
+
poller.active--;
|
|
599
|
+
// The TTL bridges the gap between polls, so it runs from the end of the latest one.
|
|
600
|
+
if (!signal?.aborted)
|
|
601
|
+
poller.lastPollAt = this.notificationOptions.now();
|
|
602
|
+
if (signal?.aborted && poller.active === 0 && this.pollers.get(eventId) === poller)
|
|
603
|
+
this.pollers.delete(eventId);
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
}
|
|
407
607
|
}
|
|
408
608
|
//# sourceMappingURL=attention-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attention-store.js","sourceRoot":"","sources":["../src/attention-store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"attention-store.js","sourceRoot":"","sources":["../src/attention-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wall-clock budget for one grep match pass. Bounds catastrophic backtracking
|
|
3
|
+
* (e.g. `(.|..)+X$` on an ordinary line) that a read-permission endpoint could
|
|
4
|
+
* otherwise use to stall the bridge event loop.
|
|
5
|
+
*/
|
|
6
|
+
export declare const GREP_REGEX_TIMEOUT_MS = 300;
|
|
7
|
+
/** Maximum grep workers running at once for this bridge process. */
|
|
8
|
+
export declare const GREP_MAX_CONCURRENT = 4;
|
|
9
|
+
/** Maximum requests waiting for a worker slot before overload is reported. */
|
|
10
|
+
export declare const GREP_MAX_QUEUE = 16;
|
|
11
|
+
/** Raised when the grep worker pool and its wait queue are both saturated. */
|
|
12
|
+
export declare class GrepBusyError extends Error {
|
|
13
|
+
constructor();
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Test `pattern` against every line within a hard time budget, at most
|
|
17
|
+
* `GREP_MAX_CONCURRENT` at once with a bounded wait queue.
|
|
18
|
+
* Returns matching line indexes, or `null` when the match exceeded the budget.
|
|
19
|
+
* Throws `SyntaxError` for an invalid pattern and `GrepBusyError` when the pool
|
|
20
|
+
* and queue are saturated (the caller should respond 429).
|
|
21
|
+
*/
|
|
22
|
+
export declare function boundedMatchIndexes(pattern: string, lines: string[], timeoutMs?: number): Promise<number[] | null>;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { Worker } from 'node:worker_threads';
|
|
2
|
+
/**
|
|
3
|
+
* Wall-clock budget for one grep match pass. Bounds catastrophic backtracking
|
|
4
|
+
* (e.g. `(.|..)+X$` on an ordinary line) that a read-permission endpoint could
|
|
5
|
+
* otherwise use to stall the bridge event loop.
|
|
6
|
+
*/
|
|
7
|
+
export const GREP_REGEX_TIMEOUT_MS = 300;
|
|
8
|
+
/** Maximum grep workers running at once for this bridge process. */
|
|
9
|
+
export const GREP_MAX_CONCURRENT = 4;
|
|
10
|
+
/** Maximum requests waiting for a worker slot before overload is reported. */
|
|
11
|
+
export const GREP_MAX_QUEUE = 16;
|
|
12
|
+
/** Raised when the grep worker pool and its wait queue are both saturated. */
|
|
13
|
+
export class GrepBusyError extends Error {
|
|
14
|
+
constructor() {
|
|
15
|
+
super('Too many concurrent searches');
|
|
16
|
+
this.name = 'GrepBusyError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
let active = 0;
|
|
20
|
+
const waiters = [];
|
|
21
|
+
/** Reserve a worker slot, or return false when the queue is full. */
|
|
22
|
+
async function acquireSlot() {
|
|
23
|
+
if (active < GREP_MAX_CONCURRENT) {
|
|
24
|
+
active += 1;
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (waiters.length >= GREP_MAX_QUEUE)
|
|
28
|
+
return false;
|
|
29
|
+
await new Promise(resolve => waiters.push(resolve));
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
/** Hand the slot to the next waiter, or free it when none is waiting. */
|
|
33
|
+
function releaseSlot() {
|
|
34
|
+
const next = waiters.shift();
|
|
35
|
+
if (next)
|
|
36
|
+
next();
|
|
37
|
+
else
|
|
38
|
+
active -= 1;
|
|
39
|
+
}
|
|
40
|
+
// The worker compiles the pattern and tests each line, then posts the matching
|
|
41
|
+
// indexes. It runs off the main event loop; the parent force-terminates it on
|
|
42
|
+
// timeout, so a pathological regex cannot block command handling.
|
|
43
|
+
const WORKER_SOURCE = `import('node:worker_threads').then(({ parentPort, workerData }) => {
|
|
44
|
+
try {
|
|
45
|
+
const re = new RegExp(workerData.pattern, 'i');
|
|
46
|
+
const lines = workerData.lines;
|
|
47
|
+
const indexes = [];
|
|
48
|
+
for (let i = 0; i < lines.length; i++) if (re.test(lines[i])) indexes.push(i);
|
|
49
|
+
parentPort.postMessage({ indexes });
|
|
50
|
+
} catch { parentPort.postMessage({ invalid: true }); }
|
|
51
|
+
});`;
|
|
52
|
+
function runWorker(pattern, lines, timeoutMs) {
|
|
53
|
+
return new Promise(resolve => {
|
|
54
|
+
// Resolve only once the worker has actually exited, so a pool slot is never
|
|
55
|
+
// released while a terminating worker is still live.
|
|
56
|
+
let settled = false;
|
|
57
|
+
let exited = false;
|
|
58
|
+
let outcome = null;
|
|
59
|
+
let worker;
|
|
60
|
+
let timer;
|
|
61
|
+
const decide = (value) => {
|
|
62
|
+
if (settled)
|
|
63
|
+
return;
|
|
64
|
+
settled = true;
|
|
65
|
+
outcome = value;
|
|
66
|
+
if (timer)
|
|
67
|
+
clearTimeout(timer);
|
|
68
|
+
if (exited) {
|
|
69
|
+
resolve(outcome);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
void worker?.terminate();
|
|
73
|
+
};
|
|
74
|
+
const onExit = () => {
|
|
75
|
+
exited = true;
|
|
76
|
+
if (settled)
|
|
77
|
+
resolve(outcome);
|
|
78
|
+
else
|
|
79
|
+
decide(null);
|
|
80
|
+
};
|
|
81
|
+
timer = setTimeout(() => decide(null), timeoutMs);
|
|
82
|
+
try {
|
|
83
|
+
worker = new Worker(WORKER_SOURCE, { eval: true, workerData: { pattern, lines } });
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
if (timer)
|
|
87
|
+
clearTimeout(timer);
|
|
88
|
+
resolve(null);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
worker.once('message', (message) => {
|
|
92
|
+
decide(message?.invalid ? null : (Array.isArray(message?.indexes) ? message.indexes : []));
|
|
93
|
+
});
|
|
94
|
+
worker.once('error', () => decide(null));
|
|
95
|
+
worker.once('exit', onExit);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Test `pattern` against every line within a hard time budget, at most
|
|
100
|
+
* `GREP_MAX_CONCURRENT` at once with a bounded wait queue.
|
|
101
|
+
* Returns matching line indexes, or `null` when the match exceeded the budget.
|
|
102
|
+
* Throws `SyntaxError` for an invalid pattern and `GrepBusyError` when the pool
|
|
103
|
+
* and queue are saturated (the caller should respond 429).
|
|
104
|
+
*/
|
|
105
|
+
export async function boundedMatchIndexes(pattern, lines, timeoutMs = GREP_REGEX_TIMEOUT_MS) {
|
|
106
|
+
// Compile in the parent to distinguish an invalid pattern (throw) from a
|
|
107
|
+
// timeout (null) cheaply and without spawning a worker for bad input.
|
|
108
|
+
new RegExp(pattern, 'i');
|
|
109
|
+
if (!(await acquireSlot()))
|
|
110
|
+
throw new GrepBusyError();
|
|
111
|
+
try {
|
|
112
|
+
return await runWorker(pattern, lines, timeoutMs);
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
releaseSlot();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=bounded-regex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bounded-regex.js","sourceRoot":"","sources":["../src/bounded-regex.ts"],"names":[],"mappings":"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"}
|
package/dist/browser-access.js
CHANGED
|
@@ -23,7 +23,7 @@ class HttpError extends Error {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
const fail = (status, code, message) => { throw new HttpError(status, code, message); };
|
|
26
|
-
const commandTypes = new Set(['preview_chat_list', 'preview_chat_send', 'preview_chat_reply', 'create_session', 'stop_session', 'list_sessions', 'get_history', 'retry_session', 'send_message', 'rename_session', 'remove_session', 'bridge_exec', 'clear_terminal', 'update_session_parent', 'get_session_usage', 'get_sessions_usage', 'get_session_attention', 'resolve_session_attention', ...RETIRED_AUTOMATION_COMMANDS]);
|
|
26
|
+
const commandTypes = new Set(['preview_chat_list', 'preview_chat_send', 'preview_chat_reply', 'create_session', 'stop_session', 'list_sessions', 'get_history', 'retry_session', 'send_message', 'rename_session', 'remove_session', 'bridge_exec', 'clear_terminal', 'update_session_parent', 'get_session_usage', 'get_sessions_usage', 'get_session_attention', 'resolve_session_attention', 'answer_session_attention', ...RETIRED_AUTOMATION_COMMANDS]);
|
|
27
27
|
/** Loopback browser consent and control. No cloud dependency and no raw persisted tokens. */
|
|
28
28
|
export class BrowserAccess {
|
|
29
29
|
opts;
|
|
@@ -305,6 +305,12 @@ export class BrowserAccess {
|
|
|
305
305
|
|| (body.type === 'resolve_session_attention' && (typeof payload.eventId !== 'string' || !/^[A-Za-z0-9_-]+$/.test(payload.eventId))))
|
|
306
306
|
fail(400, 'invalid_command', 'Invalid attention target');
|
|
307
307
|
}
|
|
308
|
+
if (body.type === 'answer_session_attention') {
|
|
309
|
+
if (payload.bridgeId !== this.opts.bootstrap().bridgeId || typeof payload.sessionId !== 'string' || !/^[A-Za-z0-9_-]+$/.test(payload.sessionId)
|
|
310
|
+
|| Object.keys(payload).sort().join(',') !== 'answers,bridgeId,eventId,sessionId'
|
|
311
|
+
|| typeof payload.eventId !== 'string' || !/^[A-Za-z0-9_-]{1,100}$/.test(payload.eventId) || !Array.isArray(payload.answers))
|
|
312
|
+
fail(400, 'invalid_command', 'Invalid attention answer');
|
|
313
|
+
}
|
|
308
314
|
const key = `${device.id}:${requestId}`;
|
|
309
315
|
const serialized = canonical(body);
|
|
310
316
|
let cached = this.commands.get(key);
|