@cuylabs/agent-core 4.10.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/chat-loop/commit-batch.d.ts +1 -1
- package/dist/agent/chat-loop/commit-batch.d.ts.map +1 -1
- package/dist/agent/chat-loop/context-recovery.d.ts +7 -3
- package/dist/agent/chat-loop/context-recovery.d.ts.map +1 -1
- package/dist/agent/chat-loop/finalize-turn.d.ts.map +1 -1
- package/dist/agent/chat-loop/loop.d.ts.map +1 -1
- package/dist/agent/chat-loop/model-step-snapshot.d.ts +1 -1
- package/dist/agent/chat-loop/model-step-snapshot.d.ts.map +1 -1
- package/dist/agent/chat-loop/types.d.ts +1 -1
- package/dist/agent/chat-loop/types.d.ts.map +1 -1
- package/dist/agent/event-printer.d.ts.map +1 -1
- package/dist/agent/fork.d.ts +1 -1
- package/dist/agent/fork.d.ts.map +1 -1
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/instance/context-management.d.ts +14 -1
- package/dist/agent/instance/context-management.d.ts.map +1 -1
- package/dist/agent/instance/forking.d.ts +1 -1
- package/dist/agent/instance/forking.d.ts.map +1 -1
- package/dist/agent/instance/index.d.ts +17 -5
- package/dist/agent/instance/index.d.ts.map +1 -1
- package/dist/agent/instance/sessions.d.ts +1 -1
- package/dist/agent/instance/sessions.d.ts.map +1 -1
- package/dist/agent/instance/turn-lifecycle.d.ts +1 -1
- package/dist/agent/instance/turn-lifecycle.d.ts.map +1 -1
- package/dist/agent/session.d.ts +1 -1
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/setup/config.d.ts +1 -1
- package/dist/agent/setup/config.d.ts.map +1 -1
- package/dist/agent/setup/context-window.d.ts.map +1 -1
- package/dist/agent/setup.d.ts +1 -1
- package/dist/agent/setup.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/agent-context.d.ts +26 -3
- package/dist/agent/turn-context/compaction/agent-context.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/budget.d.ts +2 -2
- package/dist/agent/turn-context/compaction/budget.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/check.d.ts +9 -3
- package/dist/agent/turn-context/compaction/check.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/index.d.ts +1 -1
- package/dist/agent/turn-context/compaction/index.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/memory.d.ts +5 -4
- package/dist/agent/turn-context/compaction/memory.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/results.d.ts +7 -1
- package/dist/agent/turn-context/compaction/results.d.ts.map +1 -1
- package/dist/agent/turn-context/compaction/types.d.ts +7 -1
- package/dist/agent/turn-context/compaction/types.d.ts.map +1 -1
- package/dist/agent/turn-context/fit-model-context.d.ts +1 -1
- package/dist/agent/turn-context/fit-model-context.d.ts.map +1 -1
- package/dist/agent/turn-context/index.d.ts +1 -1
- package/dist/agent/turn-context/index.d.ts.map +1 -1
- package/dist/agent/types/config.d.ts +7 -0
- package/dist/agent/types/config.d.ts.map +1 -1
- package/dist/{chunk-LX4AHGI3.js → chunk-346FIYKT.js} +1 -1
- package/dist/{chunk-EBVSPHXA.js → chunk-556CPZ3J.js} +1 -1
- package/dist/{chunk-V4YQ6MBK.js → chunk-BKHWKKSG.js} +1 -1
- package/dist/{chunk-AAGKWUXR.js → chunk-CGP6UNCQ.js} +33 -18
- package/dist/{chunk-EEAGM5MS.js → chunk-DD7S7ZG4.js} +32 -15
- package/dist/{chunk-NMJNN6LS.js → chunk-DYZGHHDB.js} +424 -121
- package/dist/{chunk-VMGZKIFT.js → chunk-EDKZOPUV.js} +34 -298
- package/dist/{chunk-TU5KDFWI.js → chunk-GHVW7L4P.js} +41 -0
- package/dist/{chunk-IQA64CAO.js → chunk-TYQWH6XH.js} +6 -2
- package/dist/context/assembly/prepare.d.ts.map +1 -1
- package/dist/context/assembly/types.d.ts +6 -2
- package/dist/context/assembly/types.d.ts.map +1 -1
- package/dist/context/config.d.ts +10 -1
- package/dist/context/config.d.ts.map +1 -1
- package/dist/context/fragments/messages.d.ts +2 -0
- package/dist/context/fragments/messages.d.ts.map +1 -1
- package/dist/context/index.js +9 -3
- package/dist/context/window/budget.d.ts +28 -1
- package/dist/context/window/budget.d.ts.map +1 -1
- package/dist/context/window/compactor.d.ts +17 -2
- package/dist/context/window/compactor.d.ts.map +1 -1
- package/dist/context/window/cut-planner.d.ts +3 -0
- package/dist/context/window/cut-planner.d.ts.map +1 -1
- package/dist/context/window/decision.d.ts +11 -2
- package/dist/context/window/decision.d.ts.map +1 -1
- package/dist/context/window/estimation.d.ts +19 -4
- package/dist/context/window/estimation.d.ts.map +1 -1
- package/dist/context/window/index.d.ts +5 -3
- package/dist/context/window/index.d.ts.map +1 -1
- package/dist/context/window/manager.d.ts +33 -0
- package/dist/context/window/manager.d.ts.map +1 -1
- package/dist/context/window/summary.d.ts +9 -0
- package/dist/context/window/summary.d.ts.map +1 -1
- package/dist/context/window/tool-pruning.d.ts +11 -0
- package/dist/context/window/tool-pruning.d.ts.map +1 -1
- package/dist/dispatch/index.js +3 -3
- package/dist/execution/index.js +3 -3
- package/dist/execution/turn/index.js +3 -3
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +311 -125
- package/dist/memory/config.d.ts +2 -2
- package/dist/memory/config.d.ts.map +1 -1
- package/dist/memory/index.d.ts +2 -2
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +5 -5
- package/dist/memory/middleware.d.ts +2 -2
- package/dist/memory/middleware.d.ts.map +1 -1
- package/dist/memory/types.d.ts +34 -15
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/middleware/index.d.ts +2 -1
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +1 -1
- package/dist/middleware/runner.d.ts +16 -1
- package/dist/middleware/runner.d.ts.map +1 -1
- package/dist/middleware/types.d.ts +57 -2
- package/dist/middleware/types.d.ts.map +1 -1
- package/dist/{storage → sessions}/index.d.ts +7 -8
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/{storage → sessions}/index.js +6 -18
- package/dist/{storage → sessions}/manager/default.d.ts +3 -3
- package/dist/sessions/manager/default.d.ts.map +1 -0
- package/dist/sessions/manager/index.d.ts.map +1 -0
- package/dist/{storage → sessions}/manager/session-manager.d.ts +14 -4
- package/dist/sessions/manager/session-manager.d.ts.map +1 -0
- package/dist/sessions/manager/types.d.ts.map +1 -0
- package/dist/sessions/store/lock.d.ts.map +1 -0
- package/dist/{storage → sessions/store}/memory.d.ts +5 -5
- package/dist/sessions/store/memory.d.ts.map +1 -0
- package/dist/{storage → sessions}/types.d.ts +16 -6
- package/dist/sessions/types.d.ts.map +1 -0
- package/dist/{storage → sessions}/utils.d.ts +3 -3
- package/dist/sessions/utils.d.ts.map +1 -0
- package/dist/subagents/index.js +4 -4
- package/dist/types/compaction.d.ts +49 -0
- package/dist/types/compaction.d.ts.map +1 -1
- package/dist/types/events.d.ts +4 -2
- package/dist/types/events.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/storage/file/helpers.d.ts +0 -16
- package/dist/storage/file/helpers.d.ts.map +0 -1
- package/dist/storage/file/index.d.ts +0 -6
- package/dist/storage/file/index.d.ts.map +0 -1
- package/dist/storage/file/storage.d.ts +0 -29
- package/dist/storage/file/storage.d.ts.map +0 -1
- package/dist/storage/file/types.d.ts +0 -6
- package/dist/storage/file/types.d.ts.map +0 -1
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/lock.d.ts.map +0 -1
- package/dist/storage/manager/default.d.ts.map +0 -1
- package/dist/storage/manager/index.d.ts.map +0 -1
- package/dist/storage/manager/session-manager.d.ts.map +0 -1
- package/dist/storage/manager/types.d.ts.map +0 -1
- package/dist/storage/memory.d.ts.map +0 -1
- package/dist/storage/paths.d.ts +0 -37
- package/dist/storage/paths.d.ts.map +0 -1
- package/dist/storage/types.d.ts.map +0 -1
- package/dist/storage/utils.d.ts.map +0 -1
- /package/dist/{storage → sessions}/manager/index.d.ts +0 -0
- /package/dist/{storage → sessions}/manager/types.d.ts +0 -0
- /package/dist/{storage → sessions/store}/lock.d.ts +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createAgentContextFragmentMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CGP6UNCQ.js";
|
|
4
4
|
|
|
5
|
-
// src/
|
|
6
|
-
var
|
|
5
|
+
// src/sessions/types.ts
|
|
6
|
+
var SESSION_FORMAT_VERSION = 1;
|
|
7
7
|
|
|
8
|
-
// src/
|
|
8
|
+
// src/sessions/utils.ts
|
|
9
9
|
function generateEntryId(existingIds) {
|
|
10
10
|
for (let i = 0; i < 100; i++) {
|
|
11
11
|
const id = crypto.randomUUID().slice(0, 8);
|
|
@@ -298,8 +298,8 @@ function normalizeRecentMessagesLimit(limit) {
|
|
|
298
298
|
return Math.floor(limit);
|
|
299
299
|
}
|
|
300
300
|
|
|
301
|
-
// src/
|
|
302
|
-
var
|
|
301
|
+
// src/sessions/store/memory.ts
|
|
302
|
+
var InMemorySessionStore = class {
|
|
303
303
|
sessions = /* @__PURE__ */ new Map();
|
|
304
304
|
async create(header) {
|
|
305
305
|
if (this.sessions.has(header.id)) {
|
|
@@ -350,224 +350,7 @@ var MemoryStorage = class {
|
|
|
350
350
|
}
|
|
351
351
|
};
|
|
352
352
|
|
|
353
|
-
// src/
|
|
354
|
-
import {
|
|
355
|
-
appendFile,
|
|
356
|
-
mkdir,
|
|
357
|
-
readFile,
|
|
358
|
-
readdir,
|
|
359
|
-
stat,
|
|
360
|
-
unlink,
|
|
361
|
-
writeFile
|
|
362
|
-
} from "fs/promises";
|
|
363
|
-
import { existsSync } from "fs";
|
|
364
|
-
import { basename, join } from "path";
|
|
365
|
-
async function ensureStorageDirectory(directory) {
|
|
366
|
-
if (!existsSync(directory)) {
|
|
367
|
-
await mkdir(directory, { recursive: true });
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
function getSessionFilePath(directory, extension, sessionId) {
|
|
371
|
-
const safeId = sessionId.replace(/[^a-zA-Z0-9-_]/g, "_");
|
|
372
|
-
const needsHash = safeId !== sessionId;
|
|
373
|
-
if (needsHash) {
|
|
374
|
-
let hash = 2166136261;
|
|
375
|
-
for (let i = 0; i < sessionId.length; i++) {
|
|
376
|
-
hash ^= sessionId.charCodeAt(i);
|
|
377
|
-
hash = hash * 16777619 >>> 0;
|
|
378
|
-
}
|
|
379
|
-
const suffix = hash.toString(16).padStart(8, "0");
|
|
380
|
-
return join(directory, `${safeId}_${suffix}${extension}`);
|
|
381
|
-
}
|
|
382
|
-
return join(directory, `${safeId}${extension}`);
|
|
383
|
-
}
|
|
384
|
-
async function loadEntriesFromDisk(filePath, sessionId) {
|
|
385
|
-
try {
|
|
386
|
-
const content = await readFile(filePath, "utf-8");
|
|
387
|
-
return parseJSONL(content);
|
|
388
|
-
} catch (error) {
|
|
389
|
-
if (error.code === "ENOENT") {
|
|
390
|
-
throw new Error(`Session not found: ${sessionId}`);
|
|
391
|
-
}
|
|
392
|
-
throw error;
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
async function createSessionFile(filePath, header) {
|
|
396
|
-
await writeFile(filePath, toJSONL(header), "utf-8");
|
|
397
|
-
}
|
|
398
|
-
async function appendSessionEntry(filePath, entry) {
|
|
399
|
-
await appendFile(filePath, toJSONL(entry), "utf-8");
|
|
400
|
-
}
|
|
401
|
-
async function appendSessionEntries(filePath, entries) {
|
|
402
|
-
await appendFile(filePath, toJSONLBatch(entries), "utf-8");
|
|
403
|
-
}
|
|
404
|
-
function sessionFileExists(filePath) {
|
|
405
|
-
return existsSync(filePath);
|
|
406
|
-
}
|
|
407
|
-
async function deleteSessionFile(filePath) {
|
|
408
|
-
if (!existsSync(filePath)) {
|
|
409
|
-
return false;
|
|
410
|
-
}
|
|
411
|
-
try {
|
|
412
|
-
await unlink(filePath);
|
|
413
|
-
return true;
|
|
414
|
-
} catch {
|
|
415
|
-
return false;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
async function listSessionIds(directory, extension) {
|
|
419
|
-
try {
|
|
420
|
-
const files = await readdir(directory);
|
|
421
|
-
return files.filter((file) => file.endsWith(extension)).map((file) => basename(file, extension));
|
|
422
|
-
} catch {
|
|
423
|
-
return [];
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
async function clearSessionFiles(directory, extension) {
|
|
427
|
-
try {
|
|
428
|
-
const files = await readdir(directory);
|
|
429
|
-
await Promise.all(
|
|
430
|
-
files.filter((file) => file.endsWith(extension)).map((file) => unlink(join(directory, file)).catch(() => {
|
|
431
|
-
}))
|
|
432
|
-
);
|
|
433
|
-
} catch {
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
async function getSessionFileStats(filePath) {
|
|
437
|
-
try {
|
|
438
|
-
const info = await stat(filePath);
|
|
439
|
-
return {
|
|
440
|
-
size: info.size,
|
|
441
|
-
mtime: info.mtime
|
|
442
|
-
};
|
|
443
|
-
} catch {
|
|
444
|
-
return null;
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
// src/storage/file/storage.ts
|
|
449
|
-
var FileStorage = class {
|
|
450
|
-
directory;
|
|
451
|
-
extension;
|
|
452
|
-
useCache;
|
|
453
|
-
cache = /* @__PURE__ */ new Map();
|
|
454
|
-
initialized = false;
|
|
455
|
-
constructor(options) {
|
|
456
|
-
this.directory = options.directory;
|
|
457
|
-
this.extension = options.extension ?? ".jsonl";
|
|
458
|
-
this.useCache = options.cache ?? true;
|
|
459
|
-
}
|
|
460
|
-
async ensureDir() {
|
|
461
|
-
if (this.initialized) return;
|
|
462
|
-
await ensureStorageDirectory(this.directory);
|
|
463
|
-
this.initialized = true;
|
|
464
|
-
}
|
|
465
|
-
getPath(sessionId) {
|
|
466
|
-
return getSessionFilePath(this.directory, this.extension, sessionId);
|
|
467
|
-
}
|
|
468
|
-
async getEntries(sessionId) {
|
|
469
|
-
if (this.useCache && this.cache.has(sessionId)) {
|
|
470
|
-
return this.cache.get(sessionId);
|
|
471
|
-
}
|
|
472
|
-
const entries = await loadEntriesFromDisk(
|
|
473
|
-
this.getPath(sessionId),
|
|
474
|
-
sessionId
|
|
475
|
-
);
|
|
476
|
-
if (this.useCache) {
|
|
477
|
-
this.cache.set(sessionId, entries);
|
|
478
|
-
}
|
|
479
|
-
return entries;
|
|
480
|
-
}
|
|
481
|
-
async create(header) {
|
|
482
|
-
await this.ensureDir();
|
|
483
|
-
const filePath = this.getPath(header.id);
|
|
484
|
-
if (sessionFileExists(filePath)) {
|
|
485
|
-
throw new Error(`Session already exists: ${header.id}`);
|
|
486
|
-
}
|
|
487
|
-
await createSessionFile(filePath, header);
|
|
488
|
-
if (this.useCache) {
|
|
489
|
-
this.cache.set(header.id, [header]);
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
async append(sessionId, entry) {
|
|
493
|
-
await this.ensureDir();
|
|
494
|
-
const filePath = this.getPath(sessionId);
|
|
495
|
-
if (!sessionFileExists(filePath)) {
|
|
496
|
-
throw new Error(`Session not found: ${sessionId}`);
|
|
497
|
-
}
|
|
498
|
-
await appendSessionEntry(filePath, entry);
|
|
499
|
-
if (this.useCache) {
|
|
500
|
-
this.cache.get(sessionId)?.push(entry);
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
async appendBatch(sessionId, entries) {
|
|
504
|
-
if (entries.length === 0) return;
|
|
505
|
-
await this.ensureDir();
|
|
506
|
-
const filePath = this.getPath(sessionId);
|
|
507
|
-
if (!sessionFileExists(filePath)) {
|
|
508
|
-
throw new Error(`Session not found: ${sessionId}`);
|
|
509
|
-
}
|
|
510
|
-
await appendSessionEntries(filePath, entries);
|
|
511
|
-
if (this.useCache) {
|
|
512
|
-
this.cache.get(sessionId)?.push(...entries);
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
async read(sessionId) {
|
|
516
|
-
await this.ensureDir();
|
|
517
|
-
return [...await this.getEntries(sessionId)];
|
|
518
|
-
}
|
|
519
|
-
async delete(sessionId) {
|
|
520
|
-
this.cache.delete(sessionId);
|
|
521
|
-
return deleteSessionFile(this.getPath(sessionId));
|
|
522
|
-
}
|
|
523
|
-
async exists(sessionId) {
|
|
524
|
-
if (this.useCache && this.cache.has(sessionId)) {
|
|
525
|
-
return true;
|
|
526
|
-
}
|
|
527
|
-
return sessionFileExists(this.getPath(sessionId));
|
|
528
|
-
}
|
|
529
|
-
async list() {
|
|
530
|
-
await this.ensureDir();
|
|
531
|
-
const infos = [];
|
|
532
|
-
for (const sessionId of await listSessionIds(
|
|
533
|
-
this.directory,
|
|
534
|
-
this.extension
|
|
535
|
-
)) {
|
|
536
|
-
try {
|
|
537
|
-
const info = extractSessionInfo(
|
|
538
|
-
await this.getEntries(sessionId),
|
|
539
|
-
this.getPath(sessionId)
|
|
540
|
-
);
|
|
541
|
-
if (info) {
|
|
542
|
-
infos.push(info);
|
|
543
|
-
}
|
|
544
|
-
} catch {
|
|
545
|
-
}
|
|
546
|
-
}
|
|
547
|
-
infos.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
|
|
548
|
-
return infos;
|
|
549
|
-
}
|
|
550
|
-
async clear() {
|
|
551
|
-
this.cache.clear();
|
|
552
|
-
await clearSessionFiles(this.directory, this.extension);
|
|
553
|
-
}
|
|
554
|
-
flushCache() {
|
|
555
|
-
this.cache.clear();
|
|
556
|
-
}
|
|
557
|
-
async reload(sessionId) {
|
|
558
|
-
this.cache.delete(sessionId);
|
|
559
|
-
return this.read(sessionId);
|
|
560
|
-
}
|
|
561
|
-
async listIds() {
|
|
562
|
-
await this.ensureDir();
|
|
563
|
-
return listSessionIds(this.directory, this.extension);
|
|
564
|
-
}
|
|
565
|
-
async getStats(sessionId) {
|
|
566
|
-
return getSessionFileStats(this.getPath(sessionId));
|
|
567
|
-
}
|
|
568
|
-
};
|
|
569
|
-
|
|
570
|
-
// src/storage/lock.ts
|
|
353
|
+
// src/sessions/store/lock.ts
|
|
571
354
|
var LocalSessionTurnLock = class {
|
|
572
355
|
locks = /* @__PURE__ */ new Map();
|
|
573
356
|
async acquire(sessionId, options = {}) {
|
|
@@ -642,74 +425,29 @@ function createAbortError() {
|
|
|
642
425
|
return error;
|
|
643
426
|
}
|
|
644
427
|
|
|
645
|
-
// src/
|
|
646
|
-
import { homedir } from "os";
|
|
647
|
-
import { join as join2 } from "path";
|
|
648
|
-
import { execSync } from "child_process";
|
|
649
|
-
function getDataDir(appName = "cuylabs") {
|
|
650
|
-
const platform = process.platform;
|
|
651
|
-
if (platform === "darwin") {
|
|
652
|
-
return join2(homedir(), `.${appName}`);
|
|
653
|
-
}
|
|
654
|
-
if (platform === "win32") {
|
|
655
|
-
return join2(
|
|
656
|
-
process.env.APPDATA || join2(homedir(), "AppData", "Roaming"),
|
|
657
|
-
appName
|
|
658
|
-
);
|
|
659
|
-
}
|
|
660
|
-
const xdgData = process.env.XDG_DATA_HOME || join2(homedir(), ".local", "share");
|
|
661
|
-
return join2(xdgData, appName);
|
|
662
|
-
}
|
|
663
|
-
function getSessionsDir(appName = "cuylabs") {
|
|
664
|
-
return join2(getDataDir(appName), "sessions");
|
|
665
|
-
}
|
|
666
|
-
function getGitRootHash(cwd) {
|
|
667
|
-
try {
|
|
668
|
-
const result = execSync("git rev-list --max-parents=0 --all 2>/dev/null", {
|
|
669
|
-
cwd,
|
|
670
|
-
encoding: "utf-8"
|
|
671
|
-
});
|
|
672
|
-
const roots = result.split("\n").filter(Boolean).map((s) => s.trim()).sort();
|
|
673
|
-
return roots[0] || null;
|
|
674
|
-
} catch {
|
|
675
|
-
return null;
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
function getProjectId(cwd) {
|
|
679
|
-
const gitHash = getGitRootHash(cwd);
|
|
680
|
-
if (gitHash) {
|
|
681
|
-
return gitHash.slice(0, 12);
|
|
682
|
-
}
|
|
683
|
-
return cwd.replace(/^\//, "").replace(/[/\\:]/g, "-").replace(/\s+/g, "-").toLowerCase().slice(-50);
|
|
684
|
-
}
|
|
685
|
-
function getProjectSessionsDir(cwd, appName = "cuylabs") {
|
|
686
|
-
const projectId = getProjectId(cwd);
|
|
687
|
-
return join2(getSessionsDir(appName), projectId);
|
|
688
|
-
}
|
|
689
|
-
|
|
690
|
-
// src/storage/manager/session-manager.ts
|
|
428
|
+
// src/sessions/manager/session-manager.ts
|
|
691
429
|
var SessionManager = class {
|
|
692
|
-
|
|
430
|
+
store;
|
|
693
431
|
currentSessionId = null;
|
|
694
432
|
currentLeafId = null;
|
|
695
433
|
entriesCache = [];
|
|
696
434
|
idsCache = /* @__PURE__ */ new Set();
|
|
697
435
|
entriesByIdCache = /* @__PURE__ */ new Map();
|
|
698
|
-
constructor(
|
|
699
|
-
this.
|
|
436
|
+
constructor(store) {
|
|
437
|
+
this.store = store ?? new InMemorySessionStore();
|
|
700
438
|
}
|
|
701
439
|
async create(options) {
|
|
702
440
|
const id = options.id ?? crypto.randomUUID();
|
|
703
441
|
const header = {
|
|
704
442
|
type: "header",
|
|
705
|
-
version:
|
|
443
|
+
version: SESSION_FORMAT_VERSION,
|
|
706
444
|
id,
|
|
707
445
|
cwd: options.cwd,
|
|
708
446
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
709
447
|
title: options.title,
|
|
710
448
|
parentSessionId: options.parentSessionId
|
|
711
449
|
};
|
|
712
|
-
await this.
|
|
450
|
+
await this.store.create(header);
|
|
713
451
|
this.currentSessionId = id;
|
|
714
452
|
this.currentLeafId = null;
|
|
715
453
|
this.entriesCache = [header];
|
|
@@ -718,7 +456,7 @@ var SessionManager = class {
|
|
|
718
456
|
return id;
|
|
719
457
|
}
|
|
720
458
|
async load(sessionId) {
|
|
721
|
-
const entries = await this.
|
|
459
|
+
const entries = await this.store.read(sessionId);
|
|
722
460
|
if (entries.length === 0) {
|
|
723
461
|
throw new Error(`Empty session: ${sessionId}`);
|
|
724
462
|
}
|
|
@@ -750,7 +488,7 @@ var SessionManager = class {
|
|
|
750
488
|
this.currentLeafId,
|
|
751
489
|
this.idsCache
|
|
752
490
|
);
|
|
753
|
-
await this.
|
|
491
|
+
await this.store.append(this.currentSessionId, entry);
|
|
754
492
|
this.entriesCache.push(entry);
|
|
755
493
|
this.idsCache.add(entry.id);
|
|
756
494
|
this.entriesByIdCache.set(entry.id, entry);
|
|
@@ -773,7 +511,7 @@ var SessionManager = class {
|
|
|
773
511
|
this.entriesByIdCache.set(entry.id, entry);
|
|
774
512
|
parentId = entry.id;
|
|
775
513
|
}
|
|
776
|
-
await this.
|
|
514
|
+
await this.store.appendBatch(this.currentSessionId, entries);
|
|
777
515
|
this.entriesCache.push(...entries);
|
|
778
516
|
this.currentLeafId = entries[entries.length - 1].id;
|
|
779
517
|
return entries.map((entry) => entry.id);
|
|
@@ -811,7 +549,7 @@ var SessionManager = class {
|
|
|
811
549
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
812
550
|
...options
|
|
813
551
|
};
|
|
814
|
-
await this.
|
|
552
|
+
await this.store.append(this.currentSessionId, entry);
|
|
815
553
|
this.entriesCache.push(entry);
|
|
816
554
|
this.idsCache.add(entry.id);
|
|
817
555
|
this.entriesByIdCache.set(entry.id, entry);
|
|
@@ -837,15 +575,19 @@ var SessionManager = class {
|
|
|
837
575
|
id: compactionId,
|
|
838
576
|
parentId: this.currentLeafId,
|
|
839
577
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
578
|
+
...options.phase ? { phase: options.phase } : {},
|
|
579
|
+
...options.trigger ? { trigger: options.trigger } : {},
|
|
580
|
+
...options.reason ? { reason: options.reason } : {},
|
|
840
581
|
summary: options.summary,
|
|
841
582
|
...options.displaySummary === false ? { displaySummary: false } : {},
|
|
842
583
|
firstKeptEntryId: messageEntries[0]?.id ?? compactionId,
|
|
843
584
|
tokensBefore: options.tokensBefore,
|
|
844
585
|
tokensAfter: options.tokensAfter,
|
|
586
|
+
...options.cutReason ? { cutReason: options.cutReason } : {},
|
|
845
587
|
...options.readFiles ? { readFiles: options.readFiles } : {},
|
|
846
588
|
...options.modifiedFiles ? { modifiedFiles: options.modifiedFiles } : {}
|
|
847
589
|
};
|
|
848
|
-
await this.
|
|
590
|
+
await this.store.appendBatch(this.currentSessionId, [
|
|
849
591
|
compactionEntry,
|
|
850
592
|
...messageEntries
|
|
851
593
|
]);
|
|
@@ -872,7 +614,7 @@ var SessionManager = class {
|
|
|
872
614
|
branchFromId: fromEntryId,
|
|
873
615
|
summary
|
|
874
616
|
};
|
|
875
|
-
await this.
|
|
617
|
+
await this.store.append(this.currentSessionId, entry);
|
|
876
618
|
this.entriesCache.push(entry);
|
|
877
619
|
this.idsCache.add(entry.id);
|
|
878
620
|
this.entriesByIdCache.set(entry.id, entry);
|
|
@@ -894,7 +636,7 @@ var SessionManager = class {
|
|
|
894
636
|
this.currentLeafId,
|
|
895
637
|
this.idsCache
|
|
896
638
|
);
|
|
897
|
-
await this.
|
|
639
|
+
await this.store.append(this.currentSessionId, entry);
|
|
898
640
|
this.entriesCache.push(entry);
|
|
899
641
|
this.idsCache.add(entry.id);
|
|
900
642
|
this.entriesByIdCache.set(entry.id, entry);
|
|
@@ -933,10 +675,10 @@ var SessionManager = class {
|
|
|
933
675
|
return header?.type === "header" ? header : null;
|
|
934
676
|
}
|
|
935
677
|
async listSessions() {
|
|
936
|
-
return this.
|
|
678
|
+
return this.store.list();
|
|
937
679
|
}
|
|
938
680
|
async deleteSession(sessionId) {
|
|
939
|
-
const result = await this.
|
|
681
|
+
const result = await this.store.delete(sessionId);
|
|
940
682
|
if (sessionId === this.currentSessionId) {
|
|
941
683
|
this.currentSessionId = null;
|
|
942
684
|
this.currentLeafId = null;
|
|
@@ -947,14 +689,14 @@ var SessionManager = class {
|
|
|
947
689
|
return result;
|
|
948
690
|
}
|
|
949
691
|
async sessionExists(sessionId) {
|
|
950
|
-
return this.
|
|
692
|
+
return this.store.exists(sessionId);
|
|
951
693
|
}
|
|
952
|
-
|
|
953
|
-
return this.
|
|
694
|
+
getStore() {
|
|
695
|
+
return this.store;
|
|
954
696
|
}
|
|
955
697
|
};
|
|
956
698
|
|
|
957
|
-
// src/
|
|
699
|
+
// src/sessions/manager/default.ts
|
|
958
700
|
var defaultManager = null;
|
|
959
701
|
function getDefaultSessionManager() {
|
|
960
702
|
if (!defaultManager) {
|
|
@@ -962,13 +704,13 @@ function getDefaultSessionManager() {
|
|
|
962
704
|
}
|
|
963
705
|
return defaultManager;
|
|
964
706
|
}
|
|
965
|
-
function configureDefaultSessionManager(
|
|
966
|
-
defaultManager = new SessionManager(
|
|
707
|
+
function configureDefaultSessionManager(store) {
|
|
708
|
+
defaultManager = new SessionManager(store);
|
|
967
709
|
return defaultManager;
|
|
968
710
|
}
|
|
969
711
|
|
|
970
712
|
export {
|
|
971
|
-
|
|
713
|
+
SESSION_FORMAT_VERSION,
|
|
972
714
|
generateEntryId,
|
|
973
715
|
parseJSONL,
|
|
974
716
|
toJSONL,
|
|
@@ -983,14 +725,8 @@ export {
|
|
|
983
725
|
buildMessagesFromEntries,
|
|
984
726
|
buildRecentMessagesFromEntries,
|
|
985
727
|
buildRecentMessagesFromEntryMap,
|
|
986
|
-
|
|
987
|
-
FileStorage,
|
|
728
|
+
InMemorySessionStore,
|
|
988
729
|
LocalSessionTurnLock,
|
|
989
|
-
getDataDir,
|
|
990
|
-
getSessionsDir,
|
|
991
|
-
getGitRootHash,
|
|
992
|
-
getProjectId,
|
|
993
|
-
getProjectSessionsDir,
|
|
994
730
|
SessionManager,
|
|
995
731
|
getDefaultSessionManager,
|
|
996
732
|
configureDefaultSessionManager
|
|
@@ -221,6 +221,47 @@ var MiddlewareRunner = class {
|
|
|
221
221
|
return contextFragments;
|
|
222
222
|
}
|
|
223
223
|
// --------------------------------------------------------------------------
|
|
224
|
+
// context compaction commit lifecycle — before in array order, after in reverse order
|
|
225
|
+
// --------------------------------------------------------------------------
|
|
226
|
+
/**
|
|
227
|
+
* Run all `beforeContextCompactionCommit` hooks in order.
|
|
228
|
+
*
|
|
229
|
+
* Hooks are awaited because durability work, such as memory capture, must
|
|
230
|
+
* complete before old context is replaced. Errors are logged and do not abort
|
|
231
|
+
* compaction.
|
|
232
|
+
*/
|
|
233
|
+
async runBeforeContextCompactionCommit(ctx) {
|
|
234
|
+
for (const mw of this.stack) {
|
|
235
|
+
if (!mw.beforeContextCompactionCommit) continue;
|
|
236
|
+
try {
|
|
237
|
+
await mw.beforeContextCompactionCommit(ctx);
|
|
238
|
+
} catch (err) {
|
|
239
|
+
this.log.warn(
|
|
240
|
+
`"${mw.name}" beforeContextCompactionCommit error: ${err instanceof Error ? err.message : String(err)}`
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Run all `afterContextCompactionCommit` hooks in reverse order.
|
|
247
|
+
*
|
|
248
|
+
* This mirrors `afterToolCall` / `model.output` ordering. Errors are logged
|
|
249
|
+
* and do not abort the turn.
|
|
250
|
+
*/
|
|
251
|
+
async runAfterContextCompactionCommit(ctx) {
|
|
252
|
+
for (let i = this.stack.length - 1; i >= 0; i--) {
|
|
253
|
+
const mw = this.stack[i];
|
|
254
|
+
if (!mw.afterContextCompactionCommit) continue;
|
|
255
|
+
try {
|
|
256
|
+
await mw.afterContextCompactionCommit(ctx);
|
|
257
|
+
} catch (err) {
|
|
258
|
+
this.log.warn(
|
|
259
|
+
`"${mw.name}" afterContextCompactionCommit error: ${err instanceof Error ? err.message : String(err)}`
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// --------------------------------------------------------------------------
|
|
224
265
|
// onEvent — fire-and-forget, all run
|
|
225
266
|
// --------------------------------------------------------------------------
|
|
226
267
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
applyAgentContextFragmentsWithReport
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CGP6UNCQ.js";
|
|
4
4
|
|
|
5
5
|
// src/context/assembly/prepare.ts
|
|
6
6
|
var DEFAULT_CONTEXT_FRAGMENT_BUDGET_RATIO = 0.1;
|
|
@@ -54,10 +54,14 @@ async function assembleModelContext(options) {
|
|
|
54
54
|
configured: options.contextFragmentBudget,
|
|
55
55
|
windowBefore
|
|
56
56
|
});
|
|
57
|
+
const tokenEstimator = options.window?.getTokenEstimator?.();
|
|
57
58
|
const contextFragmentResult = applyAgentContextFragmentsWithReport(
|
|
58
59
|
baseMessages,
|
|
59
60
|
requestedContextFragments,
|
|
60
|
-
|
|
61
|
+
{
|
|
62
|
+
...contextFragmentBudget ? { budget: contextFragmentBudget } : {},
|
|
63
|
+
...tokenEstimator ? { tokenEstimator } : {}
|
|
64
|
+
}
|
|
61
65
|
);
|
|
62
66
|
const messages = contextFragmentResult.messages;
|
|
63
67
|
const windowAfter = options.window?.getStats(messages);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/context/assembly/prepare.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,2BAA2B,EAE3B,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AA+DpB;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,
|
|
1
|
+
{"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../../src/context/assembly/prepare.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,2BAA2B,EAE3B,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AA+DpB;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CAsCrC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { Message } from "../../types/messages.js";
|
|
2
|
-
import type { CompactionCutReason, CompactionEffectiveness } from "../../types/compaction.js";
|
|
2
|
+
import type { CompactionCutReason, CompactionEffectiveness, CompactionReason, CompactionTrigger } from "../../types/compaction.js";
|
|
3
3
|
import type { AgentContextFragmentApplyReport, AgentContextFragmentBuildContext, AgentContextFragmentBudgetOptions, AgentContextFragmentInput } from "../fragments/types.js";
|
|
4
4
|
import type { ContextCompactionDecision } from "../window/decision.js";
|
|
5
5
|
import type { ContextWindowStats } from "../window/manager.js";
|
|
6
|
-
|
|
6
|
+
import type { ContextTokenEstimator } from "../window/estimation.js";
|
|
7
|
+
export type ModelContextCompactionPhase = "pre-step" | "recovery" | "post-turn" | "manual";
|
|
7
8
|
export interface ContextFragmentCollector {
|
|
8
9
|
hasMiddleware?: boolean;
|
|
9
10
|
collectContextFragments(context: AgentContextFragmentBuildContext): Promise<AgentContextFragmentInput[]>;
|
|
@@ -22,12 +23,15 @@ export interface ModelContextAssemblyOptions {
|
|
|
22
23
|
contextFragmentBudget?: AgentContextFragmentBudgetOptions;
|
|
23
24
|
window?: {
|
|
24
25
|
getStats(messages: readonly Message[]): ContextWindowStats;
|
|
26
|
+
getTokenEstimator?(): ContextTokenEstimator | undefined;
|
|
25
27
|
};
|
|
26
28
|
compaction?: ModelContextCompactionReport;
|
|
27
29
|
}
|
|
28
30
|
export interface ModelContextCompactionReport {
|
|
29
31
|
applied: boolean;
|
|
30
32
|
phase: ModelContextCompactionPhase;
|
|
33
|
+
trigger?: CompactionTrigger;
|
|
34
|
+
reason?: CompactionReason;
|
|
31
35
|
inputTokens: number;
|
|
32
36
|
limit: number;
|
|
33
37
|
decision: ContextCompactionDecision;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/context/assembly/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/context/assembly/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,+BAA+B,EAC/B,gCAAgC,EAChC,iCAAiC,EACjC,yBAAyB,EAC1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAErE,MAAM,MAAM,2BAA2B,GACnC,UAAU,GACV,UAAU,GACV,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,WAAW,wBAAwB;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uBAAuB,CACrB,OAAO,EAAE,gCAAgC,GACxC,OAAO,CAAC,yBAAyB,EAAE,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,wBAAwB,CAAC,EAAE,wBAAwB,CAAC;IACpD,gBAAgB,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACxD,qBAAqB,CAAC,EAAE,iCAAiC,CAAC;IAC1D,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,kBAAkB,CAAC;QAC3D,iBAAiB,CAAC,IAAI,qBAAqB,GAAG,SAAS,CAAC;KACzD,CAAC;IACF,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,2BAA2B,CAAC;IACnC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,yBAAyB,CAAC;IACpC,aAAa,EAAE,uBAAuB,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,gBAAgB,EAAE,+BAA+B,CAAC;IAClD,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,kBAAkB,CAAC;QAC5B,KAAK,CAAC,EAAE,kBAAkB,CAAC;KAC5B,CAAC;IACF,UAAU,CAAC,EAAE,4BAA4B,CAAC;CAC3C;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,0BAA0B,CAAC;CACpC"}
|
package/dist/context/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ContextTokenEstimator } from "./window/index.js";
|
|
1
2
|
export interface AgentContextConfig {
|
|
2
3
|
/**
|
|
3
4
|
* Maximum estimated tokens allowed for transient context fragments injected
|
|
@@ -6,6 +7,14 @@ export interface AgentContextConfig {
|
|
|
6
7
|
* When omitted, the runtime uses a proportional cap based on the usable
|
|
7
8
|
* context window.
|
|
8
9
|
*/
|
|
9
|
-
|
|
10
|
+
maxFragmentTokens?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Optional estimator used by context-window planning.
|
|
13
|
+
*
|
|
14
|
+
* Agent-core still treats these numbers as estimates. Provider usage
|
|
15
|
+
* metadata remains a lower bound when available, and provider overflow
|
|
16
|
+
* recovery is still the final safety net.
|
|
17
|
+
*/
|
|
18
|
+
tokenEstimator?: ContextTokenEstimator;
|
|
10
19
|
}
|
|
11
20
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/context/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/context/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { Message } from "../../types/messages.js";
|
|
2
|
+
import { type ContextTokenEstimator } from "../window/estimation.js";
|
|
2
3
|
import type { AgentContextFragmentApplyResult, AgentContextFragmentBudgetOptions, AgentContextFragmentInput, AgentContextFragmentMessageMetadata } from "./types.js";
|
|
3
4
|
export declare function createAgentContextFragmentMessage(input: AgentContextFragmentInput): Message;
|
|
4
5
|
export declare function getAgentContextFragmentMetadata(message: Message): AgentContextFragmentMessageMetadata | undefined;
|
|
5
6
|
export declare function isAgentContextFragmentMessage(message: Message): boolean;
|
|
6
7
|
export declare function applyAgentContextFragmentsWithReport(messages: readonly Message[], contextFragments?: readonly AgentContextFragmentInput[], options?: {
|
|
7
8
|
budget?: AgentContextFragmentBudgetOptions;
|
|
9
|
+
tokenEstimator?: ContextTokenEstimator;
|
|
8
10
|
}): AgentContextFragmentApplyResult;
|
|
9
11
|
export declare function applyAgentContextFragments(messages: readonly Message[], contextFragments?: readonly AgentContextFragmentInput[]): Message[];
|
|
10
12
|
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/context/fragments/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/context/fragments/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAMjC,OAAO,KAAK,EAEV,+BAA+B,EAC/B,iCAAiC,EACjC,yBAAyB,EAEzB,mCAAmC,EAIpC,MAAM,YAAY,CAAC;AAapB,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAWT;AAED,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,OAAO,GACf,mCAAmC,GAAG,SAAS,CASjD;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAEvE;AA8GD,wBAAgB,oCAAoC,CAClD,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,gBAAgB,GAAE,SAAS,yBAAyB,EAAO,EAC3D,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,iCAAiC,CAAC;IAC3C,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACnC,GACL,+BAA+B,CAgHjC;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,gBAAgB,GAAE,SAAS,yBAAyB,EAAO,GAC1D,OAAO,EAAE,CAGX"}
|