crewly 1.20.299 → 1.20.301
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/config/skills/agent/core/publish-app/SKILL.md +10 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js +2 -1
- package/dist/backend/backend/src/controllers/messaging/messenger.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +20 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/services/agent/follow-through.service.d.ts +33 -0
- package/dist/backend/backend/src/services/agent/follow-through.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/follow-through.service.js +80 -7
- package/dist/backend/backend/src/services/agent/follow-through.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/follow-through.wiring.d.ts +34 -0
- package/dist/backend/backend/src/services/agent/follow-through.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/follow-through.wiring.js +109 -4
- package/dist/backend/backend/src/services/agent/follow-through.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts +9 -0
- package/dist/backend/backend/src/services/agent/idle-detection.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js +24 -1
- package/dist/backend/backend/src/services/agent/idle-detection.service.js.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-work-guard.d.ts +12 -1
- package/dist/backend/backend/src/services/agent/idle-work-guard.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/idle-work-guard.js +11 -1
- package/dist/backend/backend/src/services/agent/idle-work-guard.js.map +1 -1
- package/dist/backend/backend/src/services/agent/stated-intent.d.ts +2 -2
- package/dist/backend/backend/src/services/agent/stated-intent.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/stated-intent.js +17 -7
- package/dist/backend/backend/src/services/agent/stated-intent.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts +2 -19
- package/dist/backend/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js +14 -10
- package/dist/backend/backend/src/services/cloud/cloud-client.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-config-file.d.ts +84 -0
- package/dist/backend/backend/src/services/cloud/cloud-config-file.d.ts.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-config-file.js +86 -0
- package/dist/backend/backend/src/services/cloud/cloud-config-file.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts +5 -0
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +9 -3
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +5 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +17 -3
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js +2 -1
- package/dist/backend/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/device-identity.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/device-identity.service.js +3 -2
- package/dist/backend/backend/src/services/cloud/device-identity.service.js.map +1 -1
- package/dist/backend/backend/src/services/core/api-token.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/core/api-token.service.js +2 -3
- package/dist/backend/backend/src/services/core/api-token.service.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/deferred-start-retry.d.ts +2 -0
- package/dist/backend/backend/src/services/messaging/deferred-start-retry.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/deferred-start-retry.js +1 -1
- package/dist/backend/backend/src/services/messaging/deferred-start-retry.js.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.service.d.ts +16 -0
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.service.js +38 -0
- package/dist/backend/backend/src/services/messaging/owner-thread-sentinel.service.js.map +1 -1
- package/dist/backend/backend/src/utils/file-io.utils.d.ts +66 -5
- package/dist/backend/backend/src/utils/file-io.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/utils/file-io.utils.js +169 -15
- package/dist/backend/backend/src/utils/file-io.utils.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/services/agent/follow-through.service.d.ts +33 -0
- package/dist/cli/backend/src/services/agent/follow-through.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/follow-through.service.js +80 -7
- package/dist/cli/backend/src/services/agent/follow-through.service.js.map +1 -1
- package/dist/cli/backend/src/services/agent/stated-intent.d.ts +2 -2
- package/dist/cli/backend/src/services/agent/stated-intent.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/stated-intent.js +17 -7
- package/dist/cli/backend/src/services/agent/stated-intent.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts +2 -19
- package/dist/cli/backend/src/services/cloud/cloud-client.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-client.service.js +14 -10
- package/dist/cli/backend/src/services/cloud/cloud-client.service.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-config-file.d.ts +84 -0
- package/dist/cli/backend/src/services/cloud/cloud-config-file.d.ts.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-config-file.js +86 -0
- package/dist/cli/backend/src/services/cloud/cloud-config-file.js.map +1 -0
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js +2 -1
- package/dist/cli/backend/src/services/cloud/cloud-sync.service.js.map +1 -1
- package/dist/cli/backend/src/services/cloud/device-identity.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/cloud/device-identity.service.js +3 -2
- package/dist/cli/backend/src/services/cloud/device-identity.service.js.map +1 -1
- package/dist/cli/backend/src/services/core/api-token.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/core/api-token.service.js +2 -3
- package/dist/cli/backend/src/services/core/api-token.service.js.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-thread-sentinel.service.d.ts +16 -0
- package/dist/cli/backend/src/services/messaging/owner-thread-sentinel.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/messaging/owner-thread-sentinel.service.js +38 -0
- package/dist/cli/backend/src/services/messaging/owner-thread-sentinel.service.js.map +1 -1
- package/dist/cli/backend/src/utils/file-io.utils.d.ts +66 -5
- package/dist/cli/backend/src/utils/file-io.utils.d.ts.map +1 -1
- package/dist/cli/backend/src/utils/file-io.utils.js +169 -15
- package/dist/cli/backend/src/utils/file-io.utils.js.map +1 -1
- package/dist/cli/cli/src/commands/cloud.d.ts.map +1 -1
- package/dist/cli/cli/src/commands/cloud.js +10 -28
- package/dist/cli/cli/src/commands/cloud.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import * as fs from 'fs/promises';
|
|
11
11
|
import * as fsSync from 'fs';
|
|
12
|
+
import { createHash } from 'crypto';
|
|
12
13
|
/**
|
|
13
14
|
* A JSON store file exists but cannot be read or parsed, AND it could not be
|
|
14
15
|
* copied aside. The caller must not overwrite it: that would destroy the only
|
|
@@ -124,14 +125,24 @@ export async function withFileLock(lockKey, operation) {
|
|
|
124
125
|
export async function withOperationLock(lockKey, operation) {
|
|
125
126
|
return withLock(operationLocks, lockKey, operation);
|
|
126
127
|
}
|
|
127
|
-
// ──────────────────────────────────────────────────────────────────────
|
|
128
|
-
// Atomic write
|
|
129
|
-
// ──────────────────────────────────────────────────────────────────────
|
|
130
128
|
/**
|
|
131
|
-
*
|
|
129
|
+
* Unique sibling temp path (same directory, so the rename stays on one filesystem).
|
|
130
|
+
* Includes the pid so two processes never share a temp file.
|
|
131
|
+
*
|
|
132
|
+
* @param filePath - Destination file
|
|
133
|
+
* @returns Temp path
|
|
134
|
+
*/
|
|
135
|
+
function tempPathFor(filePath) {
|
|
136
|
+
return `${filePath}.tmp.${process.pid}.${Date.now()}.${Math.random().toString(36).substring(2)}`;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Write a string to a file atomically (temp file in the same directory →
|
|
140
|
+
* fsync → rename).
|
|
132
141
|
*
|
|
133
142
|
* Acquires a per-path file lock so concurrent callers targeting the
|
|
134
|
-
* same path are serialized.
|
|
143
|
+
* same path are serialized. Readers (and a crash at any point) see either
|
|
144
|
+
* the old file or the new one, never a mix; a shorter write can never leave
|
|
145
|
+
* the tail of a longer one behind.
|
|
135
146
|
*
|
|
136
147
|
* **Precondition:** The parent directory must already exist. This function
|
|
137
148
|
* does not create intermediate directories — use {@link ensureDir} first
|
|
@@ -139,16 +150,25 @@ export async function withOperationLock(lockKey, operation) {
|
|
|
139
150
|
*
|
|
140
151
|
* @param filePath - Destination file path
|
|
141
152
|
* @param content - String content to write
|
|
153
|
+
* @param options - Optional file mode
|
|
142
154
|
*/
|
|
143
|
-
export async function atomicWriteFile(filePath, content) {
|
|
155
|
+
export async function atomicWriteFile(filePath, content, options = {}) {
|
|
144
156
|
await withFileLock(filePath, async () => {
|
|
145
|
-
const tempPath =
|
|
157
|
+
const tempPath = tempPathFor(filePath);
|
|
146
158
|
try {
|
|
147
|
-
|
|
159
|
+
// 'wx': a fresh file only — never reuse (and never inherit the tail of) an existing one
|
|
160
|
+
await fs.writeFile(tempPath, content, { encoding: 'utf8', flag: 'wx', mode: options.mode });
|
|
148
161
|
// Ensure data hits the disk before the atomic rename
|
|
149
162
|
const handle = await fs.open(tempPath, 'r+');
|
|
150
|
-
|
|
151
|
-
|
|
163
|
+
try {
|
|
164
|
+
await handle.sync();
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
await handle.close();
|
|
168
|
+
}
|
|
169
|
+
// `mode` is subject to the umask on create; make it exact.
|
|
170
|
+
if (options.mode !== undefined)
|
|
171
|
+
await fs.chmod(tempPath, options.mode);
|
|
152
172
|
await fs.rename(tempPath, filePath);
|
|
153
173
|
}
|
|
154
174
|
catch (error) {
|
|
@@ -168,9 +188,10 @@ export async function atomicWriteFile(filePath, content) {
|
|
|
168
188
|
*
|
|
169
189
|
* @param filePath - Destination file path
|
|
170
190
|
* @param data - Value to serialize (via `JSON.stringify`)
|
|
191
|
+
* @param options - Optional file mode
|
|
171
192
|
*/
|
|
172
|
-
export async function atomicWriteJson(filePath, data) {
|
|
173
|
-
await atomicWriteFile(filePath, JSON.stringify(data, null, 2));
|
|
193
|
+
export async function atomicWriteJson(filePath, data, options = {}) {
|
|
194
|
+
await atomicWriteFile(filePath, JSON.stringify(data, null, 2), options);
|
|
174
195
|
}
|
|
175
196
|
/**
|
|
176
197
|
* Synchronous {@link atomicWriteFile} for stores that persist synchronously
|
|
@@ -184,16 +205,19 @@ export async function atomicWriteJson(filePath, data) {
|
|
|
184
205
|
*
|
|
185
206
|
* @param filePath - Destination file path
|
|
186
207
|
* @param content - String content to write
|
|
208
|
+
* @param options - Optional file mode
|
|
187
209
|
*/
|
|
188
|
-
export function atomicWriteFileSync(filePath, content) {
|
|
189
|
-
const tempPath =
|
|
210
|
+
export function atomicWriteFileSync(filePath, content, options = {}) {
|
|
211
|
+
const tempPath = tempPathFor(filePath);
|
|
190
212
|
let fd = null;
|
|
191
213
|
try {
|
|
192
|
-
fd = fsSync.openSync(tempPath, '
|
|
214
|
+
fd = fsSync.openSync(tempPath, 'wx', options.mode);
|
|
193
215
|
fsSync.writeFileSync(fd, content, 'utf8');
|
|
194
216
|
fsSync.fsyncSync(fd);
|
|
195
217
|
fsSync.closeSync(fd);
|
|
196
218
|
fd = null;
|
|
219
|
+
if (options.mode !== undefined)
|
|
220
|
+
fsSync.chmodSync(tempPath, options.mode);
|
|
197
221
|
fsSync.renameSync(tempPath, filePath);
|
|
198
222
|
}
|
|
199
223
|
catch (error) {
|
|
@@ -352,6 +376,136 @@ function parseStore(raw, validate) {
|
|
|
352
376
|
return rejected ? { ok: false, reason: rejected } : { ok: true, data };
|
|
353
377
|
}
|
|
354
378
|
// ──────────────────────────────────────────────────────────────────────
|
|
379
|
+
// Lenient read + repair (raw_decode style)
|
|
380
|
+
// ──────────────────────────────────────────────────────────────────────
|
|
381
|
+
/**
|
|
382
|
+
* Decode the first JSON object at the start of `raw` and ignore whatever
|
|
383
|
+
* follows (Python's `json.JSONDecoder.raw_decode`). Recovers a file that holds
|
|
384
|
+
* a valid object followed by the tail of an older, longer write.
|
|
385
|
+
*
|
|
386
|
+
* @param raw - File text
|
|
387
|
+
* @returns The first object and the number of trailing non-whitespace bytes, or null when `raw` does not start with a complete JSON object
|
|
388
|
+
*/
|
|
389
|
+
export function decodeFirstJsonObject(raw) {
|
|
390
|
+
const start = raw.search(/\S/);
|
|
391
|
+
if (start < 0 || raw[start] !== '{')
|
|
392
|
+
return null;
|
|
393
|
+
let depth = 0;
|
|
394
|
+
let inString = false;
|
|
395
|
+
let escaped = false;
|
|
396
|
+
for (let i = start; i < raw.length; i++) {
|
|
397
|
+
const ch = raw[i];
|
|
398
|
+
if (inString) {
|
|
399
|
+
if (escaped)
|
|
400
|
+
escaped = false;
|
|
401
|
+
else if (ch === '\\')
|
|
402
|
+
escaped = true;
|
|
403
|
+
else if (ch === '"')
|
|
404
|
+
inString = false;
|
|
405
|
+
continue;
|
|
406
|
+
}
|
|
407
|
+
if (ch === '"')
|
|
408
|
+
inString = true;
|
|
409
|
+
else if (ch === '{')
|
|
410
|
+
depth++;
|
|
411
|
+
else if (ch === '}' && --depth === 0) {
|
|
412
|
+
try {
|
|
413
|
+
const value = JSON.parse(raw.slice(start, i + 1));
|
|
414
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value))
|
|
415
|
+
return null;
|
|
416
|
+
return { value: value, trailingChars: raw.slice(i + 1).trim().length };
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
return null;
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
return null;
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Read a JSON object file that holds credentials or other state that must not
|
|
427
|
+
* be silently dropped.
|
|
428
|
+
*
|
|
429
|
+
* - missing → `missing`;
|
|
430
|
+
* - parses and passes `validate` → `ok`;
|
|
431
|
+
* - does not parse, but starts with a complete object that passes `validate`
|
|
432
|
+
* (stale trailing bytes) → the file is rewritten atomically with just that
|
|
433
|
+
* object, a WARN is logged, `ok` with `repaired: true`;
|
|
434
|
+
* - anything else → a copy is kept at `<file>.corrupt-<ts>` and `damaged` is
|
|
435
|
+
* returned (the original is left in place; the next atomic write replaces it).
|
|
436
|
+
* The copy is made once per distinct damaged file content, not on every read.
|
|
437
|
+
*
|
|
438
|
+
* Other read errors (EACCES, EIO…) are rethrown: the file may be fine.
|
|
439
|
+
*
|
|
440
|
+
* @param filePath - File to read
|
|
441
|
+
* @param options.validate - Shape check; return an error text to reject
|
|
442
|
+
* @param options.logger - Optional logger
|
|
443
|
+
* @param options.mode - Mode for the repaired file
|
|
444
|
+
* @returns What was found
|
|
445
|
+
*/
|
|
446
|
+
export function readJsonObjectWithRepairSync(filePath, options) {
|
|
447
|
+
let raw;
|
|
448
|
+
try {
|
|
449
|
+
raw = fsSync.readFileSync(filePath, 'utf-8');
|
|
450
|
+
}
|
|
451
|
+
catch (err) {
|
|
452
|
+
if (err.code === 'ENOENT')
|
|
453
|
+
return { status: 'missing' };
|
|
454
|
+
throw err;
|
|
455
|
+
}
|
|
456
|
+
let reason;
|
|
457
|
+
try {
|
|
458
|
+
const data = JSON.parse(raw);
|
|
459
|
+
const rejected = options.validate(data);
|
|
460
|
+
if (!rejected)
|
|
461
|
+
return { status: 'ok', data: data, repaired: false };
|
|
462
|
+
reason = rejected;
|
|
463
|
+
}
|
|
464
|
+
catch (err) {
|
|
465
|
+
reason = `invalid JSON (${raw.length} bytes): ${errText(err)}`;
|
|
466
|
+
const first = decodeFirstJsonObject(raw);
|
|
467
|
+
if (first && !options.validate(first.value)) {
|
|
468
|
+
try {
|
|
469
|
+
atomicWriteFileSync(filePath, JSON.stringify(first.value, null, 2), { mode: options.mode });
|
|
470
|
+
options.logger?.warn('Repaired a JSON file that had stale trailing bytes after a complete object', {
|
|
471
|
+
filePath, trailingChars: first.trailingChars,
|
|
472
|
+
});
|
|
473
|
+
}
|
|
474
|
+
catch (writeErr) {
|
|
475
|
+
options.logger?.warn('JSON file had stale trailing bytes; using the first object but could not rewrite the file', {
|
|
476
|
+
filePath, error: errText(writeErr),
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
return { status: 'ok', data: first.value, repaired: true };
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
return { status: 'damaged', reason, quarantinedTo: quarantineOnce(filePath, raw, reason, options.logger) };
|
|
483
|
+
}
|
|
484
|
+
/** Damaged-content signatures already copied aside this process (path → length:hash). */
|
|
485
|
+
const quarantinedContent = new Map();
|
|
486
|
+
/**
|
|
487
|
+
* Copy a damaged file aside, at most once per distinct content.
|
|
488
|
+
*
|
|
489
|
+
* @param filePath - Damaged file
|
|
490
|
+
* @param raw - Its content
|
|
491
|
+
* @param reason - Why it is damaged
|
|
492
|
+
* @param logger - Optional logger
|
|
493
|
+
* @returns Backup path, or null when already copied / the copy failed
|
|
494
|
+
*/
|
|
495
|
+
function quarantineOnce(filePath, raw, reason, logger) {
|
|
496
|
+
const sig = `${raw.length}:${createHash('sha1').update(raw).digest('hex')}`;
|
|
497
|
+
if (quarantinedContent.get(filePath) === sig)
|
|
498
|
+
return null;
|
|
499
|
+
try {
|
|
500
|
+
const target = quarantineCorruptFileSync(filePath, reason, logger);
|
|
501
|
+
quarantinedContent.set(filePath, sig);
|
|
502
|
+
return target;
|
|
503
|
+
}
|
|
504
|
+
catch {
|
|
505
|
+
return null; // already logged by quarantineCorruptFileSync
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
// ──────────────────────────────────────────────────────────────────────
|
|
355
509
|
// Safe read
|
|
356
510
|
// ──────────────────────────────────────────────────────────────────────
|
|
357
511
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-io.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/file-io.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,IAAI,CAAC;AAa7B;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,iCAAiC;IACxB,QAAQ,CAAS;IAC1B,qDAAqD;IAC5C,MAAM,CAAS;IAExB;;;;OAIG;IACH,YAAY,QAAgB,EAAE,MAAc,EAAE,SAAiB;QAC7D,KAAK,CAAC,cAAc,QAAQ,mBAAmB,MAAM,iCAAiC,SAAS,6BAA6B,CAAC,CAAC;QAC9H,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAQD;;;;;GAKG;AACH,SAAS,OAAO,CAAC,GAAY;IAC3B,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,MAAgC,EAAE,OAAe,EAAE,IAA6B;IAChG,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,IAAI,MAAM,CAAC,KAAK;QAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;;QACzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,yEAAyE;AACzE,oEAAoE;AACpE,yEAAyE;AAEzE,MAAM,SAAS,GAA+B,IAAI,GAAG,EAAE,CAAC;AACxD,MAAM,cAAc,GAA+B,IAAI,GAAG,EAAE,CAAC;AAE7D,yEAAyE;AACzE,qBAAqB;AACrB,yEAAyE;AAEzE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe;IAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,yEAAyE;AACzE,WAAW;AACX,yEAAyE;AAEzE;;;;;;GAMG;AACH,KAAK,UAAU,QAAQ,CACrB,OAAmC,EACnC,OAAe,EACf,SAA2B;IAE3B,qEAAqE;IACrE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAE3D,IAAI,WAAuB,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,GAAG,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE7B,yCAAyC;IACzC,MAAM,QAAQ,CAAC;IAEf,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;YAAS,CAAC;QACT,WAAY,EAAE,CAAC;QACf,qDAAqD;QACrD,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,OAAe,EAAE,SAA2B;IAChF,OAAO,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAI,OAAe,EAAE,SAA2B;IACrF,OAAO,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,yEAAyE;AACzE,gBAAgB;AAChB,yEAAyE;AAEzE;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,OAAe;IACrE,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,QAAQ,GAAG,GAAG,QAAQ,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5F,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YAE9C,qDAAqD;YACrD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YAErB,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gCAAgC;YAChC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAI,QAAgB,EAAE,IAAO;IAChE,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,OAAe;IACnE,MAAM,QAAQ,GAAG,GAAG,QAAQ,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5F,IAAI,EAAE,GAAkB,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrB,EAAE,GAAG,IAAI,CAAC;QACV,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC;gBAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,CAAC;YAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,4BAA4B;AAC5B,yEAAyE;AAEzE;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,MAAY,IAAI,IAAI,EAAE;IACxE,OAAO,GAAG,QAAQ,YAAY,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAqB;IACjG,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,OAAO,EAAE,CAAC;QACjB,QAAQ,CAAC,MAAM,EAAE,iFAAiF,EAAE;YAClG,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;SAC9C,CAAC,CAAC;QACH,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,QAAQ,CAAC,MAAM,EAAE,4DAA4D,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5H,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAgB,EAAE,MAAc,EAAE,MAAqB;IAC/F,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,OAAO,EAAE,CAAC;QACjB,QAAQ,CAAC,MAAM,EAAE,iFAAiF,EAAE;YAClG,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC;SAC9C,CAAC,CAAC;QACH,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,QAAQ,CAAC,MAAM,EAAE,4DAA4D,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5H,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,UAAkF,EAAE;IAEpF,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACnF,qEAAqE;QACrE,uEAAuE;QACvE,yCAAyC;QACzC,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAS,EAAE,CAAC;IAC/D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC/I,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,UAAkF,EAAE;IAEpF,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACnF,MAAM,GAAG,CAAC,CAAC,oDAAoD;IACjE,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAS,EAAE,CAAC;IAC/D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7I,CAAC;AAED;;;;;;GAMG;AACH,SAAS,UAAU,CAAC,GAAW,EAAE,QAA2C;IAC1E,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,GAAG,CAAC,MAAM,YAAY,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IACtF,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC1C,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACzE,CAAC;AAED,yEAAyE;AACzE,aAAa;AACb,yEAAyE;AAEzE;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,QAAgB,EAAE,YAAe,EAAE,MAAqB;IAC5F,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uDAAuD;QACvD,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,MAAM,KAAK,CAAC,CAAC,uCAAuC;IACtD,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAClB,kEAAkE;QAClE,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACxC,MAAM,EAAE,IAAI,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,QAAQ,CAAC,MAAM,EAAE,2EAA2E,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5G,MAAM,IAAI,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,4BAA4B;AAC5B,yEAAyE;AAEzE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,YAAe,EACf,OAAoC,EACpC,MAAqB;IAErB,OAAO,iBAAiB,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,wEAAwE;QACxE,sEAAsE;QACtE,MAAM,OAAO,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACrD,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,yEAAyE;AACzE,eAAe;AACf,yEAAyE;AAEzE;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,SAAS,CAAC,KAAK,EAAE,CAAC;IAClB,cAAc,CAAC,KAAK,EAAE,CAAC;AACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"file-io.utils.js","sourceRoot":"","sources":["../../../../../backend/src/utils/file-io.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,18 @@ export declare const FOLLOW_THROUGH_CONSTANTS: {
|
|
|
27
27
|
readonly OUTPUT_WORK_MS: 45000;
|
|
28
28
|
/** After a runtime restart the first tool call is the harness's own register-self */
|
|
29
29
|
readonly TOOLS_AFTER_RESTART: 2;
|
|
30
|
+
/**
|
|
31
|
+
* Tool calls after the statement that count as having started. One is not
|
|
32
|
+
* enough: the reply itself is followed by housekeeping (status mark,
|
|
33
|
+
* memory write) that is not the promised work (Pia, 2026-10-11).
|
|
34
|
+
*/
|
|
35
|
+
readonly TOOLS_TO_COUNT: 3;
|
|
36
|
+
/** A statement this old whose agent is quiet is checked without waiting for a turn-end event */
|
|
37
|
+
readonly SWEEP_AFTER_MS: 60000;
|
|
38
|
+
/** How often open statements are swept */
|
|
39
|
+
readonly SWEEP_INTERVAL_MS: 20000;
|
|
40
|
+
/** Quiet for this long = the agent is not mid-turn */
|
|
41
|
+
readonly QUIET_MS: 15000;
|
|
30
42
|
};
|
|
31
43
|
/** What the guard needs from the rest of the backend. */
|
|
32
44
|
export interface FollowThroughDeps {
|
|
@@ -44,6 +56,12 @@ export interface FollowThroughDeps {
|
|
|
44
56
|
waitingOnOwner?: (session: string) => Promise<boolean>;
|
|
45
57
|
/** Owner-stopped or team-paused agents are never nudged */
|
|
46
58
|
isHeldBack?: (session: string) => boolean;
|
|
59
|
+
/** The agent produced no output for {@link FOLLOW_THROUGH_CONSTANTS.QUIET_MS} (sweep only) */
|
|
60
|
+
isQuiet?: (session: string) => boolean;
|
|
61
|
+
/** Make the statement a durable WorkItem for the agent; returns its id */
|
|
62
|
+
commit?: (session: string, sentence: string, at: number) => Promise<string | null>;
|
|
63
|
+
/** The statement was answered: close its WorkItem */
|
|
64
|
+
settle?: (workItemId: string) => Promise<void>;
|
|
47
65
|
now?: () => number;
|
|
48
66
|
}
|
|
49
67
|
/** What a turn end did. */
|
|
@@ -103,7 +121,15 @@ export declare class AgentFollowThroughService {
|
|
|
103
121
|
takeIntent(agent: string): {
|
|
104
122
|
sentence: string;
|
|
105
123
|
at: number;
|
|
124
|
+
workItemId?: string;
|
|
106
125
|
} | null;
|
|
126
|
+
/**
|
|
127
|
+
* Age of the agent's open stated intent.
|
|
128
|
+
*
|
|
129
|
+
* @param agent - Session
|
|
130
|
+
* @returns Milliseconds, or null when none is open
|
|
131
|
+
*/
|
|
132
|
+
intentAgeMs(agent: string): number | null;
|
|
107
133
|
/**
|
|
108
134
|
* The agent's turn ended: nudge it once when it stated an intent that
|
|
109
135
|
* nothing followed. Never throws.
|
|
@@ -112,6 +138,13 @@ export declare class AgentFollowThroughService {
|
|
|
112
138
|
* @returns What happened
|
|
113
139
|
*/
|
|
114
140
|
onTurnEnd(agent: string): Promise<TurnEndOutcome>;
|
|
141
|
+
/**
|
|
142
|
+
* Check statements whose agent went quiet without a turn-end event reaching
|
|
143
|
+
* us (the post can land after the turn-end settle ran). Called on a timer.
|
|
144
|
+
*
|
|
145
|
+
* @returns Agents nudged
|
|
146
|
+
*/
|
|
147
|
+
sweep(): Promise<string[]>;
|
|
115
148
|
/** Whether the agent did anything after the statement. */
|
|
116
149
|
private followed;
|
|
117
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"follow-through.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/follow-through.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,qBAAqB;AACrB,eAAO,MAAM,wBAAwB;IACpC,oFAAoF;;IAEpF,wEAAwE;;IAExE,wEAAwE;;IAExE,6FAA6F;;IAE7F,qFAAqF;;
|
|
1
|
+
{"version":3,"file":"follow-through.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/follow-through.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,15 +30,28 @@ export const FOLLOW_THROUGH_CONSTANTS = {
|
|
|
30
30
|
OUTPUT_WORK_MS: 45_000,
|
|
31
31
|
/** After a runtime restart the first tool call is the harness's own register-self */
|
|
32
32
|
TOOLS_AFTER_RESTART: 2,
|
|
33
|
+
/**
|
|
34
|
+
* Tool calls after the statement that count as having started. One is not
|
|
35
|
+
* enough: the reply itself is followed by housekeeping (status mark,
|
|
36
|
+
* memory write) that is not the promised work (Pia, 2026-10-11).
|
|
37
|
+
*/
|
|
38
|
+
TOOLS_TO_COUNT: 3,
|
|
39
|
+
/** A statement this old whose agent is quiet is checked without waiting for a turn-end event */
|
|
40
|
+
SWEEP_AFTER_MS: 60_000,
|
|
41
|
+
/** How often open statements are swept */
|
|
42
|
+
SWEEP_INTERVAL_MS: 20_000,
|
|
43
|
+
/** Quiet for this long = the agent is not mid-turn */
|
|
44
|
+
QUIET_MS: 15_000,
|
|
33
45
|
};
|
|
34
46
|
/**
|
|
35
47
|
* @param sentence - What the agent said
|
|
36
48
|
* @returns The nudge text (harness text, English)
|
|
37
49
|
*/
|
|
38
50
|
export function followThroughNudge(sentence) {
|
|
39
|
-
return (`[FOLLOW-THROUGH] You told the owner you
|
|
40
|
-
'Your turn ended without starting it. Start it now, in this turn
|
|
41
|
-
|
|
51
|
+
return (`[FOLLOW-THROUGH] You told the owner you're starting this now: "${sentence}". ` +
|
|
52
|
+
'Your turn ended without starting it. Start it now, in this turn. ' +
|
|
53
|
+
'If you were waiting on an answer, proceed with the default you stated; a question with a default is not a reason to wait. ' +
|
|
54
|
+
"Don't reply again until there's a result or a real blocker.");
|
|
42
55
|
}
|
|
43
56
|
/**
|
|
44
57
|
* Tracks the last stated intent per agent and nudges once when a turn ends
|
|
@@ -69,11 +82,42 @@ export class AgentFollowThroughService {
|
|
|
69
82
|
return;
|
|
70
83
|
const at = input.at ?? this.now();
|
|
71
84
|
const found = detectStatedIntent(input.text);
|
|
85
|
+
const prior = this.statements.get(input.agent);
|
|
72
86
|
if (found) {
|
|
73
|
-
|
|
87
|
+
const stmt = {
|
|
88
|
+
at,
|
|
89
|
+
sentence: found.sentence,
|
|
90
|
+
nudged: false,
|
|
91
|
+
...(prior?.workItemId ? { workItemId: prior.workItemId } : {}),
|
|
92
|
+
...(prior?.committing ? { committing: true } : {}),
|
|
93
|
+
};
|
|
94
|
+
this.statements.set(input.agent, stmt);
|
|
95
|
+
// Durable: the promise becomes a WorkItem for the agent (the answer goes to the
|
|
96
|
+
// owner's thread), so a stop or restart does not lose it.
|
|
97
|
+
if (!stmt.workItemId && !stmt.committing && this.deps.commit) {
|
|
98
|
+
stmt.committing = true;
|
|
99
|
+
const agent = input.agent;
|
|
100
|
+
void this.deps.commit(agent, found.sentence, at).then((id) => {
|
|
101
|
+
// The statement may have been replaced meanwhile: attach to the live one.
|
|
102
|
+
const live = this.statements.get(agent);
|
|
103
|
+
if (id && live) {
|
|
104
|
+
live.workItemId = id;
|
|
105
|
+
live.committing = false;
|
|
106
|
+
}
|
|
107
|
+
else if (id) {
|
|
108
|
+
void this.deps.settle?.(id).catch(() => undefined);
|
|
109
|
+
}
|
|
110
|
+
}, () => {
|
|
111
|
+
const live = this.statements.get(agent);
|
|
112
|
+
if (live)
|
|
113
|
+
live.committing = false;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
74
116
|
return;
|
|
75
117
|
}
|
|
76
118
|
this.statements.delete(input.agent);
|
|
119
|
+
if (prior?.workItemId && !input.interim)
|
|
120
|
+
void this.deps.settle?.(prior.workItemId).catch(() => undefined);
|
|
77
121
|
if (!input.interim)
|
|
78
122
|
this.lastReplyAt.set(input.agent, at);
|
|
79
123
|
}
|
|
@@ -109,7 +153,17 @@ export class AgentFollowThroughService {
|
|
|
109
153
|
if (!s)
|
|
110
154
|
return null;
|
|
111
155
|
this.statements.delete(agent);
|
|
112
|
-
return { sentence: s.sentence, at: s.at };
|
|
156
|
+
return { sentence: s.sentence, at: s.at, ...(s.workItemId ? { workItemId: s.workItemId } : {}) };
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Age of the agent's open stated intent.
|
|
160
|
+
*
|
|
161
|
+
* @param agent - Session
|
|
162
|
+
* @returns Milliseconds, or null when none is open
|
|
163
|
+
*/
|
|
164
|
+
intentAgeMs(agent) {
|
|
165
|
+
const s = this.statements.get(agent);
|
|
166
|
+
return s ? this.now() - s.at : null;
|
|
113
167
|
}
|
|
114
168
|
/**
|
|
115
169
|
* The agent's turn ended: nudge it once when it stated an intent that
|
|
@@ -141,10 +195,10 @@ export class AgentFollowThroughService {
|
|
|
141
195
|
if (this.deps.isHeldBack?.(agent))
|
|
142
196
|
return 'held';
|
|
143
197
|
// One nudge per statement; one per agent per cooldown, whatever it says next.
|
|
144
|
-
s.nudged = true;
|
|
145
198
|
const last = this.lastNudgeAt.get(agent);
|
|
146
199
|
if (last !== undefined && now - last < FOLLOW_THROUGH_CONSTANTS.NUDGE_COOLDOWN_MS)
|
|
147
200
|
return 'cooldown';
|
|
201
|
+
s.nudged = true;
|
|
148
202
|
const ok = await this.deps.nudgeAgent(agent, followThroughNudge(s.sentence)).catch(() => false);
|
|
149
203
|
this.logger.info('Stated intent without action — agent nudged', { agent, sentence: s.sentence, delivered: ok });
|
|
150
204
|
if (!ok)
|
|
@@ -157,12 +211,31 @@ export class AgentFollowThroughService {
|
|
|
157
211
|
return 'none';
|
|
158
212
|
}
|
|
159
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Check statements whose agent went quiet without a turn-end event reaching
|
|
216
|
+
* us (the post can land after the turn-end settle ran). Called on a timer.
|
|
217
|
+
*
|
|
218
|
+
* @returns Agents nudged
|
|
219
|
+
*/
|
|
220
|
+
async sweep() {
|
|
221
|
+
const out = [];
|
|
222
|
+
const now = this.now();
|
|
223
|
+
for (const [agent, s] of [...this.statements]) {
|
|
224
|
+
if (s.nudged || now - s.at < FOLLOW_THROUGH_CONSTANTS.SWEEP_AFTER_MS)
|
|
225
|
+
continue;
|
|
226
|
+
if (this.deps.isQuiet && !this.deps.isQuiet(agent))
|
|
227
|
+
continue;
|
|
228
|
+
if ((await this.onTurnEnd(agent)) === 'nudged')
|
|
229
|
+
out.push(agent);
|
|
230
|
+
}
|
|
231
|
+
return out;
|
|
232
|
+
}
|
|
160
233
|
/** Whether the agent did anything after the statement. */
|
|
161
234
|
followed(agent, s) {
|
|
162
235
|
const tools = this.deps.toolStartsSince(agent, s.at);
|
|
163
236
|
if (tools !== null) {
|
|
164
237
|
const restarted = (this.deps.runtimeStartedAt?.(agent) ?? 0) > s.at;
|
|
165
|
-
return tools >= (restarted ? FOLLOW_THROUGH_CONSTANTS.TOOLS_AFTER_RESTART :
|
|
238
|
+
return tools >= FOLLOW_THROUGH_CONSTANTS.TOOLS_TO_COUNT + (restarted ? FOLLOW_THROUGH_CONSTANTS.TOOLS_AFTER_RESTART : 0);
|
|
166
239
|
}
|
|
167
240
|
const span = this.deps.outputSpanSince?.(agent, s.at);
|
|
168
241
|
// No hooks and no output reading: cannot tell, so do not nag.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"follow-through.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/follow-through.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,qBAAqB;AACrB,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,oFAAoF;IACpF,UAAU,EAAE,EAAE,GAAG,MAAM;IACvB,wEAAwE;IACxE,OAAO,EAAE,EAAE,GAAG,MAAM;IACpB,wEAAwE;IACxE,iBAAiB,EAAE,EAAE,GAAG,MAAM;IAC9B,6FAA6F;IAC7F,cAAc,EAAE,MAAM;IACtB,qFAAqF;IACrF,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"follow-through.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/follow-through.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,8 +23,8 @@ export interface StatedIntent {
|
|
|
23
23
|
* Whether an agent post says it is starting work now.
|
|
24
24
|
*
|
|
25
25
|
* Returns null for finished-work reports, for text that waits on someone
|
|
26
|
-
* else
|
|
27
|
-
* starting).
|
|
26
|
+
* else (unless it states a default it will go with), and for text whose only
|
|
27
|
+
* commitments are questions (the agent is asking, not starting).
|
|
28
28
|
*
|
|
29
29
|
* @param text - The agent's post to the owner
|
|
30
30
|
* @returns The stated intent, or null
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stated-intent.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/stated-intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"stated-intent.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/stated-intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;AA2BD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAkBpE;AAMD,iDAAiD;AACjD,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAiBlC;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA0C1D"}
|
|
@@ -22,19 +22,25 @@ const EN_NOW = [
|
|
|
22
22
|
// "I'll start/build … now|right away|next|immediately"
|
|
23
23
|
/\b(?:i'?ll|i will|let me)\s+(?:now\s+)?(?:start|begin|build|make|create|write|do|draft|record|render|rebuild|fix|get (?:started|going)|work on|break down)\b[^.!?\n]*\b(?:now|right away|immediately|next|first|straight away)\b/i,
|
|
24
24
|
/\b(?:starting|beginning)\s+(?:now|right now|on (?:it|that|this))\b/i,
|
|
25
|
+
// "I'll do it", "on it", "will post it here when done", "will send it over once ready"
|
|
26
|
+
/\b(?:i'?ll|i will|let me)\s+(?:go\s+)?(?:do|make|build|handle|take care of)\s+(?:it|that|this)\b/i,
|
|
27
|
+
/\bon it\b[.!]?\s*$/i,
|
|
28
|
+
/\b(?:i'?ll|i will|will)\s+(?:post|send|share|drop|deliver|upload|reply with)\b[^.!?\n]*\b(?:here|in this thread|in the thread|when (?:it'?s |i'?m )?(?:done|ready|finished)|once (?:it'?s |i'?m )?(?:done|ready|finished))\b/i,
|
|
25
29
|
/\bnow\s+(?:building|writing|making|creating|drafting|recording|rendering|breaking|starting|working)\b/i,
|
|
26
30
|
];
|
|
27
|
-
const ZH_NOW = /(我现在(?:就)?(?:开始|去|来|做|写|改|弄|拆|搭|录|剪|做)
|
|
31
|
+
const ZH_NOW = /(我现在(?:就)?(?:开始|去|来|做|写|改|弄|拆|搭|录|剪|做)|我这就|这就(?:开始|去|做|来)|我(?:先)?(?:去|来)(?:做|弄|写|剪|搞|处理)|现在就(?:开始|去|做|来)|马上(?:开始|去|做|来|弄|处理)|(?:做好|做完|弄好|写好|剪好|搞好)(?:后|了)?(?:就|会)?(?:发|贴|回复|同步|给)|接下来(?:我)?(?:会|要|就)?[^,。\n]{0,12}|下一步(?:是|就是|我)|(?:做好|做完|弄好|写好|剪好|搞好)(?:后|了)?(?:就)?(?:发|给|交)你|开始(?:做|拆|写|搭|剪|录))/;
|
|
28
32
|
/** The agent is waiting on somebody else: not "doing it now". */
|
|
29
33
|
const WAITING = /\b(?:wait(?:ing)? (?:for|on)|once you|after you|when you (?:confirm|reply|answer|tell)|until you|if you (?:confirm|want|prefer|like|say)|let me know (?:if|which|whether))\b|(?:等你|等您|你确认|你回复|你告诉我|待你|您确认)/i;
|
|
34
|
+
/** A fallback the agent states itself: a question next to it is not a reason to wait. */
|
|
35
|
+
const STATED_DEFAULT = /\b(?:otherwise|if not|if (?:you|there)(?:'re| are)? no(?:t)?|by default|else i'?ll)\b|(?:否则|不然|没有的话|没回复的话|默认(?:我)?)/i;
|
|
30
36
|
/** A report of finished work, however it starts. */
|
|
31
37
|
const DONE_REPORT = /^\s*(?:done\b|finished\b|all done|已(?:经)?(?:完成|发|做好|搞定)|完成了|做好了|搞定了)/i;
|
|
32
38
|
/**
|
|
33
39
|
* Whether an agent post says it is starting work now.
|
|
34
40
|
*
|
|
35
41
|
* Returns null for finished-work reports, for text that waits on someone
|
|
36
|
-
* else
|
|
37
|
-
* starting).
|
|
42
|
+
* else (unless it states a default it will go with), and for text whose only
|
|
43
|
+
* commitments are questions (the agent is asking, not starting).
|
|
38
44
|
*
|
|
39
45
|
* @param text - The agent's post to the owner
|
|
40
46
|
* @returns The stated intent, or null
|
|
@@ -52,11 +58,15 @@ export function detectStatedIntent(text) {
|
|
|
52
58
|
return null;
|
|
53
59
|
if (DONE_REPORT.test(t))
|
|
54
60
|
return null;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
const sentences = t.split(/(?<=[.!。!??\n])\s*/).map((s) => s.trim()).filter(Boolean);
|
|
62
|
+
// A question next to a commitment is not "waiting": "starting now; if you
|
|
63
|
+
// have a preference tell me, otherwise I'll do X" commits. It is judged
|
|
64
|
+
// per sentence, so a reply that is only a question still returns null.
|
|
65
|
+
const hasDefault = STATED_DEFAULT.test(t);
|
|
58
66
|
for (const s of sentences) {
|
|
59
|
-
if (
|
|
67
|
+
if (/[??]\s*$/.test(s))
|
|
68
|
+
continue;
|
|
69
|
+
if (WAITING.test(s) && !hasDefault)
|
|
60
70
|
continue;
|
|
61
71
|
if (EN_NOW.some((re) => re.test(s)) || ZH_NOW.test(s)) {
|
|
62
72
|
// A sentence that is itself a past-tense report ("I've started …") never matches the patterns above.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stated-intent.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/stated-intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,MAAM,MAAM,GAAG;IACb,oDAAoD;IACpD,8SAA8S;IAC9S,8CAA8C;IAC9C,gDAAgD;IAChD,uDAAuD;IACvD,mOAAmO;IACnO,qEAAqE;IACrE,wGAAwG;CACzG,CAAC;AACF,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"stated-intent.js","sourceRoot":"","sources":["../../../../../../backend/src/services/agent/stated-intent.ts"],"names":[],"mappings":"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"}
|