@librechat/agents 3.7.0 → 3.7.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/cjs/agents/AgentContext.cjs +11 -2
- package/dist/cjs/agents/AgentContext.cjs.map +1 -1
- package/dist/cjs/eventActor/EventActorExecutor.cjs +797 -0
- package/dist/cjs/eventActor/EventActorExecutor.cjs.map +1 -0
- package/dist/cjs/eventActor/index.cjs +1 -0
- package/dist/cjs/graphs/Graph.cjs +7 -2
- package/dist/cjs/graphs/Graph.cjs.map +1 -1
- package/dist/cjs/llm/invoke.cjs +56 -9
- package/dist/cjs/llm/invoke.cjs.map +1 -1
- package/dist/cjs/main.cjs +15 -1
- package/dist/cjs/messages/content.cjs +8 -5
- package/dist/cjs/messages/content.cjs.map +1 -1
- package/dist/cjs/messages/format.cjs +15 -5
- package/dist/cjs/messages/format.cjs.map +1 -1
- package/dist/cjs/messages/index.cjs +2 -1
- package/dist/cjs/messages/projectionInvariant.cjs +74 -0
- package/dist/cjs/messages/projectionInvariant.cjs.map +1 -0
- package/dist/cjs/messages/provenance.cjs +30 -8
- package/dist/cjs/messages/provenance.cjs.map +1 -1
- package/dist/cjs/messages/recency.cjs +202 -7
- package/dist/cjs/messages/recency.cjs.map +1 -1
- package/dist/cjs/messages/toolResultTypes.cjs +1 -0
- package/dist/cjs/session/AgentSession.cjs +4 -23
- package/dist/cjs/session/AgentSession.cjs.map +1 -1
- package/dist/cjs/session/deriveMessages.cjs +25 -0
- package/dist/cjs/session/deriveMessages.cjs.map +1 -0
- package/dist/cjs/session/index.cjs +1 -0
- package/dist/cjs/summarization/node.cjs +13 -6
- package/dist/cjs/summarization/node.cjs.map +1 -1
- package/dist/cjs/tools/subagent/InMemorySubagentTaskStore.cjs +65 -8
- package/dist/cjs/tools/subagent/InMemorySubagentTaskStore.cjs.map +1 -1
- package/dist/esm/agents/AgentContext.mjs +11 -2
- package/dist/esm/agents/AgentContext.mjs.map +1 -1
- package/dist/esm/eventActor/EventActorExecutor.mjs +796 -0
- package/dist/esm/eventActor/EventActorExecutor.mjs.map +1 -0
- package/dist/esm/eventActor/index.mjs +2 -0
- package/dist/esm/graphs/Graph.mjs +8 -3
- package/dist/esm/graphs/Graph.mjs.map +1 -1
- package/dist/esm/llm/invoke.mjs +56 -9
- package/dist/esm/llm/invoke.mjs.map +1 -1
- package/dist/esm/main.mjs +8 -4
- package/dist/esm/messages/content.mjs +8 -6
- package/dist/esm/messages/content.mjs.map +1 -1
- package/dist/esm/messages/format.mjs +16 -6
- package/dist/esm/messages/format.mjs.map +1 -1
- package/dist/esm/messages/index.mjs +2 -1
- package/dist/esm/messages/projectionInvariant.mjs +72 -0
- package/dist/esm/messages/projectionInvariant.mjs.map +1 -0
- package/dist/esm/messages/provenance.mjs +30 -9
- package/dist/esm/messages/provenance.mjs.map +1 -1
- package/dist/esm/messages/recency.mjs +201 -8
- package/dist/esm/messages/recency.mjs.map +1 -1
- package/dist/esm/messages/toolResultTypes.mjs +1 -1
- package/dist/esm/session/AgentSession.mjs +4 -23
- package/dist/esm/session/AgentSession.mjs.map +1 -1
- package/dist/esm/session/deriveMessages.mjs +25 -0
- package/dist/esm/session/deriveMessages.mjs.map +1 -0
- package/dist/esm/session/index.mjs +1 -0
- package/dist/esm/summarization/node.mjs +14 -7
- package/dist/esm/summarization/node.mjs.map +1 -1
- package/dist/esm/tools/subagent/InMemorySubagentTaskStore.mjs +65 -8
- package/dist/esm/tools/subagent/InMemorySubagentTaskStore.mjs.map +1 -1
- package/dist/types/agents/AgentContext.d.ts +6 -1
- package/dist/types/eventActor/EventActorExecutor.d.ts +18 -0
- package/dist/types/eventActor/index.d.ts +2 -0
- package/dist/types/eventActor/types.d.ts +193 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/messages/content.d.ts +4 -1
- package/dist/types/messages/format.d.ts +6 -0
- package/dist/types/messages/index.d.ts +1 -0
- package/dist/types/messages/projectionInvariant.d.ts +25 -0
- package/dist/types/messages/provenance.d.ts +10 -0
- package/dist/types/messages/recency.d.ts +30 -18
- package/dist/types/session/deriveMessages.d.ts +11 -0
- package/dist/types/session/index.d.ts +2 -0
- package/dist/types/tools/subagent/InMemorySubagentTaskStore.d.ts +13 -1
- package/dist/types/types/graph.d.ts +1 -1
- package/dist/types/types/subagentTasks.d.ts +22 -0
- package/dist/types/types/summarize.d.ts +15 -13
- package/package.json +68 -77
- package/src/agents/AgentContext.ts +19 -5
- package/src/eventActor/EventActorExecutor.ts +1499 -0
- package/src/eventActor/index.ts +32 -0
- package/src/eventActor/types.ts +250 -0
- package/src/graphs/Graph.ts +9 -1
- package/src/index.ts +3 -0
- package/src/llm/invoke.ts +102 -23
- package/src/messages/content.ts +20 -10
- package/src/messages/format.ts +29 -5
- package/src/messages/index.ts +1 -0
- package/src/messages/projectionInvariant.ts +134 -0
- package/src/messages/provenance.ts +60 -18
- package/src/messages/recency.ts +429 -27
- package/src/session/AgentSession.ts +4 -30
- package/src/session/deriveMessages.ts +37 -0
- package/src/session/index.ts +2 -0
- package/src/summarization/node.ts +37 -15
- package/src/tools/subagent/InMemorySubagentTaskStore.ts +139 -6
- package/src/types/graph.ts +1 -0
- package/src/types/subagentTasks.ts +28 -0
- package/src/types/summarize.ts +15 -13
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { AgentSession, createAgentSession } from './AgentSession';
|
|
2
|
+
export { deriveMessages } from './deriveMessages';
|
|
2
3
|
export { JsonlSessionStore, SessionManager } from './JsonlSessionStore';
|
|
3
4
|
export { createRunHandlers } from './handlers';
|
|
4
5
|
export { serializeMessage, deserializeMessage, extractTextFromContent, } from './messageSerialization';
|
|
5
6
|
export type { AgentSessionConfig, AgentSessionCheckpointLookupOptions, AgentSessionCheckpointReference, AgentSessionCheckpointing, AgentSessionCheckpointingOptions, AgentSessionHandlersResult, AgentSessionInput, AgentSessionRunOptions, AgentSessionRunResult, AgentSessionStream, AgentSessionStreamEvent, AgentSessionUsage, CreateSessionFileOptions, JsonObject, JsonPrimitive, JsonValue, SerializedSessionMessage, SessionBranchOptions, SessionCompactOptions, SessionCheckpointEntry, SessionCompactionEntry, SessionEntry, SessionEntryBase, SessionEntryType, SessionForkOptions, SessionHeader, SessionLabelEntry, SessionListItem, SessionMessageEntry, SessionPosition, SessionRunEventEntry, SessionStateEntry, SessionSummaryEntry, SessionTreeNode, } from './types';
|
|
7
|
+
export type { DerivedSessionMessages } from './deriveMessages';
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { SubagentTaskClaim, SubagentTaskControlCommand, SubagentTaskControlResult, SubagentTaskSnapshot, SubagentTaskStartRequest, SubagentTaskStartResult, SubagentTaskStore } from '@/types';
|
|
1
|
+
import type { SubagentTaskClaim, SubagentTaskControlCommand, SubagentTaskControlReceipt, SubagentTaskControlResult, SubagentTaskSnapshot, SubagentTaskStartRequest, SubagentTaskStartResult, SubagentTaskStore } from '@/types';
|
|
2
2
|
export interface InMemorySubagentTaskStoreOptions {
|
|
3
3
|
completedTtlMs?: number;
|
|
4
4
|
maxControlMessageChars?: number;
|
|
5
5
|
maxControlsPerTask?: number;
|
|
6
|
+
maxControlReceiptsPerTask?: number;
|
|
6
7
|
maxErrorChars?: number;
|
|
7
8
|
maxResultChars?: number;
|
|
8
9
|
maxRunningPerScope?: number;
|
|
@@ -25,6 +26,14 @@ export declare class InMemorySubagentTaskStore implements SubagentTaskStore {
|
|
|
25
26
|
private runningTasks;
|
|
26
27
|
private totalTasks;
|
|
27
28
|
constructor(options?: InMemorySubagentTaskStoreOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Payload-free transition seam for hosts that durably project authoritative
|
|
31
|
+
* receipts. Implementations must return synchronously, must not reproduce
|
|
32
|
+
* task-store transition rules, and cannot veto task-store state transitions:
|
|
33
|
+
* hook failures are deliberately isolated by the caller.
|
|
34
|
+
*/
|
|
35
|
+
protected onControlReceipt(_scopeId: string, _taskId: string, _receipt: SubagentTaskControlReceipt): void;
|
|
36
|
+
private emitControlReceipt;
|
|
28
37
|
start(request: SubagentTaskStartRequest): SubagentTaskStartResult;
|
|
29
38
|
get(scopeId: string, taskId: string): SubagentTaskSnapshot | undefined;
|
|
30
39
|
list(scopeId: string): SubagentTaskSnapshot[];
|
|
@@ -37,6 +46,9 @@ export declare class InMemorySubagentTaskStore implements SubagentTaskStore {
|
|
|
37
46
|
private sweepBucket;
|
|
38
47
|
private removeTask;
|
|
39
48
|
private dropEmptyBucket;
|
|
49
|
+
private makeRoomForControlReceipt;
|
|
50
|
+
private transitionControl;
|
|
51
|
+
private failPendingControls;
|
|
40
52
|
private scheduleExpiry;
|
|
41
53
|
private clearTaskExpiry;
|
|
42
54
|
private clearTaskTimeout;
|
|
@@ -452,7 +452,7 @@ export type ExecutableSubagentConfig = ResolvedSubagentConfig | LazySingleAgentS
|
|
|
452
452
|
/** Graph-aware config accepted by the executor. Graph configs stay eager. */
|
|
453
453
|
export type ExecutableSubagentConfigEntry = ExecutableSubagentConfig | GraphSubagentConfig;
|
|
454
454
|
/** Lifecycle phase carried on {@link SubagentUpdateEvent}. */
|
|
455
|
-
export type SubagentUpdatePhase = 'start' | 'run_step' | 'run_step_delta' | 'run_step_completed' | 'run_step_closed' | 'message_delta' | 'reasoning_delta' | 'stop' | 'error';
|
|
455
|
+
export type SubagentUpdatePhase = 'start' | 'run_step' | 'run_step_delta' | 'run_step_completed' | 'run_step_closed' | 'message_delta' | 'reasoning_delta' | 'control' | 'stop' | 'error';
|
|
456
456
|
export interface SubagentAncestryEntry {
|
|
457
457
|
readonly subagentRunId: string;
|
|
458
458
|
readonly subagentType: string;
|
|
@@ -5,6 +5,22 @@ import type { InjectedMessage } from './tools';
|
|
|
5
5
|
export type SubagentTaskStatus = 'running' | 'completed' | 'error' | 'cancelled';
|
|
6
6
|
/** Where a pending parent message may enter the child run. */
|
|
7
7
|
export type SubagentTaskBoundary = 'preempt' | 'tool' | 'turn';
|
|
8
|
+
/**
|
|
9
|
+
* Lifecycle of one parent-to-child message after the task store accepts it.
|
|
10
|
+
* Hosts may render a transient `submitted` state before this authoritative
|
|
11
|
+
* receipt exists; that transport state is intentionally not persisted here.
|
|
12
|
+
*/
|
|
13
|
+
export type SubagentTaskControlReceiptStatus = 'accepted' | 'applied' | 'rejected' | 'failed';
|
|
14
|
+
/** Bounded authoritative receipt for one steer, queue, or interrupt command. */
|
|
15
|
+
export interface SubagentTaskControlReceipt {
|
|
16
|
+
controlId: string;
|
|
17
|
+
action: 'steer' | 'queue' | 'interrupt';
|
|
18
|
+
status: SubagentTaskControlReceiptStatus;
|
|
19
|
+
createdAt: number;
|
|
20
|
+
updatedAt: number;
|
|
21
|
+
boundary?: SubagentTaskBoundary;
|
|
22
|
+
reason?: 'withdrawn' | 'task_completed' | 'task_cancelled' | 'task_failed';
|
|
23
|
+
}
|
|
8
24
|
/** Parent-to-child control operations accepted while a task is running. */
|
|
9
25
|
export type SubagentTaskControlCommand = {
|
|
10
26
|
action: 'steer' | 'queue' | 'interrupt';
|
|
@@ -39,6 +55,12 @@ export interface SubagentTaskSnapshot {
|
|
|
39
55
|
resultAvailable: boolean;
|
|
40
56
|
resultClaimed: boolean;
|
|
41
57
|
pendingControls: number;
|
|
58
|
+
/**
|
|
59
|
+
* Bounded receipts emitted by stores that support authoritative control
|
|
60
|
+
* tracking. Optional so legacy and custom stores remain compatible during
|
|
61
|
+
* rolling upgrades.
|
|
62
|
+
*/
|
|
63
|
+
controlReceipts?: SubagentTaskControlReceipt[];
|
|
42
64
|
progress?: SubagentTaskProgress;
|
|
43
65
|
error?: string;
|
|
44
66
|
}
|
|
@@ -5,25 +5,27 @@ export type SummarizationTrigger = {
|
|
|
5
5
|
value: number;
|
|
6
6
|
};
|
|
7
7
|
/**
|
|
8
|
-
* Controls how
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
8
|
+
* Controls how much recent context is preserved verbatim during compaction.
|
|
9
|
+
* User-turn boundaries are preferred. Under context pressure, older closed
|
|
10
|
+
* tool units inside an otherwise indivisible turn may be summarized while a
|
|
11
|
+
* token-priced recent tail is retained. A lone user payload stays intact.
|
|
12
12
|
*/
|
|
13
13
|
export type RetainRecentConfig = {
|
|
14
14
|
/**
|
|
15
|
-
* Maximum number of recent user-led turns to keep in the tail.
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
15
|
+
* Maximum number of recent user-led turns to keep in the tail. A turn begins
|
|
16
|
+
* at a user-authored HumanMessage and includes every following AIMessage and
|
|
17
|
+
* tool result up to the next user-authored HumanMessage. Provider-native
|
|
18
|
+
* HumanMessages containing only tool results remain in the current turn.
|
|
19
|
+
* Set to `0` to disable the recency window (legacy behavior: summarize
|
|
20
|
+
* everything). Defaults to `2`.
|
|
21
21
|
*/
|
|
22
22
|
turns?: number;
|
|
23
23
|
/**
|
|
24
|
-
* Optional
|
|
25
|
-
*
|
|
26
|
-
*
|
|
24
|
+
* Optional retained-recent token budget. Older turns are added whole only
|
|
25
|
+
* while cumulative tokens stay below the cap. If a tool-heavy history has
|
|
26
|
+
* no compactable turn-level head, this is also the minimum recent tail kept
|
|
27
|
+
* behind a pairing-balanced intra-turn cut. When omitted, that fallback
|
|
28
|
+
* retains 16% of the configured context window.
|
|
27
29
|
*/
|
|
28
30
|
tokens?: number;
|
|
29
31
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@librechat/agents",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.2",
|
|
4
4
|
"reova": {
|
|
5
5
|
"enabled": true,
|
|
6
6
|
"endpoint": "https://telemetry.reo.dev/data"
|
|
@@ -197,80 +197,72 @@
|
|
|
197
197
|
"sort-imports:check": "node scripts/sort-imports.ts --check",
|
|
198
198
|
"start": "node dist/esm/main.js",
|
|
199
199
|
"clean": "node ./config/clean.js",
|
|
200
|
-
"script": "
|
|
200
|
+
"script": "tsx -r dotenv/config ./src/scripts/cli.ts",
|
|
201
201
|
"bun:cli": "bun -r dotenv/config ./src/scripts/cli.ts --provider 'bedrock' --name 'Jo' --location 'New York, NY'",
|
|
202
|
-
"start:cli": "
|
|
203
|
-
"content": "
|
|
204
|
-
"stream": "
|
|
205
|
-
"code_exec": "
|
|
206
|
-
"
|
|
207
|
-
"
|
|
208
|
-
"
|
|
209
|
-
"
|
|
210
|
-
"
|
|
211
|
-
"
|
|
212
|
-
"
|
|
213
|
-
"thinking": "
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"
|
|
217
|
-
"
|
|
218
|
-
"
|
|
219
|
-
"bench:
|
|
220
|
-
"bench:
|
|
221
|
-
"bench:provider-derivation": "
|
|
222
|
-
"bench:
|
|
223
|
-
"
|
|
224
|
-
"
|
|
225
|
-
"subagent
|
|
226
|
-
"subagent:
|
|
227
|
-
"
|
|
228
|
-
"
|
|
229
|
-
"
|
|
230
|
-
"local
|
|
231
|
-
"local:
|
|
232
|
-
"local:
|
|
233
|
-
"local:
|
|
234
|
-
"local:
|
|
235
|
-
"
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
"
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
"multi-agent-parallel
|
|
248
|
-
"
|
|
249
|
-
"
|
|
250
|
-
"multi-agent-
|
|
251
|
-
"multi-agent-
|
|
252
|
-
"multi-agent-
|
|
253
|
-
"multi-agent-
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"
|
|
257
|
-
"test-
|
|
258
|
-
"test-thinking-handoff
|
|
259
|
-
"test-thinking-
|
|
260
|
-
"
|
|
261
|
-
"
|
|
262
|
-
"test-
|
|
263
|
-
"
|
|
264
|
-
"
|
|
265
|
-
"
|
|
266
|
-
"script5": "node -r dotenv/config --loader ./tsconfig-paths-bootstrap.mjs --experimental-specifier-resolution=node ./src/scripts/cli5.ts --name 'Jo' --location 'New York, NY'",
|
|
267
|
-
"start:standard": "node --loader ./tsconfig-paths-bootstrap.mjs --experimental-specifier-resolution=node ./src/scripts/standard.ts",
|
|
268
|
-
"start:cg": "node --loader ./tsconfig-paths-bootstrap.mjs --experimental-specifier-resolution=node ./src/collab.ts",
|
|
269
|
-
"start:tasks": "node --loader ./tsconfig-paths-bootstrap.mjs --experimental-specifier-resolution=node ./src/scripts/tasks.ts",
|
|
270
|
-
"start:collab": "node --loader ./tsconfig-paths-bootstrap.mjs --experimental-specifier-resolution=node ./src/scripts/main.ts",
|
|
271
|
-
"start:collab5": "node --loader ./tsconfig-paths-bootstrap.mjs --experimental-specifier-resolution=node ./src/scripts/collab_design_v5.ts",
|
|
272
|
-
"start:dev": "node --loader ./tsconfig-paths-bootstrap.mjs --experimental-specifier-resolution=node ./src/main.ts",
|
|
273
|
-
"supervised": "node -r dotenv/config --loader ./tsconfig-paths-bootstrap.mjs --experimental-specifier-resolution=node ./src/scripts/supervised.ts --provider anthropic --name Jo --location \"New York, NY\"",
|
|
202
|
+
"start:cli": "tsx -r dotenv/config ./src/scripts/cli.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
203
|
+
"content": "tsx -r dotenv/config ./src/scripts/content.ts --provider 'anthropic' --name 'Jo' --location 'New York, NY'",
|
|
204
|
+
"stream": "tsx -r dotenv/config ./src/scripts/stream.ts --provider 'anthropic' --name 'Jo' --location 'New York, NY'",
|
|
205
|
+
"code_exec": "tsx -r dotenv/config ./src/scripts/code_exec.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
206
|
+
"code_exec_files": "tsx -r dotenv/config ./src/scripts/code_exec_files.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
207
|
+
"code_exec_session": "tsx -r dotenv/config ./src/scripts/code_exec_session.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
208
|
+
"code_exec_multi_session": "tsx -r dotenv/config ./src/scripts/code_exec_multi_session.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
209
|
+
"code_exec_simple": "tsx -r dotenv/config ./src/scripts/code_exec_simple.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
210
|
+
"simple": "tsx -r dotenv/config ./src/scripts/simple.ts --provider 'bedrock' --name 'Jo' --location 'New York, NY'",
|
|
211
|
+
"caching": "tsx -r dotenv/config ./src/scripts/caching.ts --name 'Jo' --location 'New York, NY'",
|
|
212
|
+
"thinking": "tsx -r dotenv/config ./src/scripts/thinking.ts --name 'Jo' --location 'New York, NY'",
|
|
213
|
+
"thinking:bedrock": "tsx -r dotenv/config ./src/scripts/thinking-bedrock.ts --name 'Jo' --location 'New York, NY'",
|
|
214
|
+
"memory": "tsx -r dotenv/config ./src/scripts/memory.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
215
|
+
"tool": "tsx --trace-warnings -r dotenv/config ./src/scripts/tools.ts --provider 'bedrock' --name 'Jo' --location 'New York, NY'",
|
|
216
|
+
"search": "tsx -r dotenv/config ./src/scripts/search.ts --provider 'bedrock' --name 'Jo' --location 'New York, NY'",
|
|
217
|
+
"tool_search": "tsx -r dotenv/config ./src/scripts/tool_search.ts",
|
|
218
|
+
"bench:cache": "tsx ./src/scripts/bench-prompt-cache.ts",
|
|
219
|
+
"bench:context-pressure": "tsx ./src/scripts/bench-context-pressure-cache.ts",
|
|
220
|
+
"bench:compaction-range": "tsx ./src/scripts/bench-compaction-range.ts",
|
|
221
|
+
"bench:provider-derivation": "tsx ./src/scripts/bench-provider-derivation.ts",
|
|
222
|
+
"bench:provider-projection": "tsx ./src/scripts/bench-provider-request-projection.ts",
|
|
223
|
+
"bench:execution-world": "tsx ./src/scripts/bench-execution-world.ts",
|
|
224
|
+
"probe:overflow": "tsx -r dotenv/config ./src/scripts/context-overflow-probe.ts",
|
|
225
|
+
"subagent": "tsx -r dotenv/config ./src/scripts/multi-agent-subagent.ts",
|
|
226
|
+
"subagent:events": "tsx -r dotenv/config ./src/scripts/subagent-event-driven-debug.ts",
|
|
227
|
+
"subagent:tools": "tsx -r dotenv/config ./src/scripts/subagent-tools-debug.ts",
|
|
228
|
+
"programmatic_exec": "tsx -r dotenv/config ./src/scripts/programmatic_exec.ts",
|
|
229
|
+
"code_exec_ptc": "tsx -r dotenv/config ./src/scripts/code_exec_ptc.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
230
|
+
"local": "tsx -r dotenv/config ./src/scripts/local_engine.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
231
|
+
"local:ptc": "tsx -r dotenv/config ./src/scripts/local_engine_ptc.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
232
|
+
"local:hooks": "tsx -r dotenv/config ./src/scripts/local_engine_hooks.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
233
|
+
"local:checkpointer": "tsx -r dotenv/config ./src/scripts/local_engine_checkpointer.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
234
|
+
"local:image": "tsx -r dotenv/config ./src/scripts/local_engine_image.ts --provider 'anthropic' --name 'Jo' --location 'New York, NY'",
|
|
235
|
+
"local:compile": "tsx -r dotenv/config ./src/scripts/local_engine_compile.ts --provider 'anthropic' --name 'Jo' --location 'New York, NY'",
|
|
236
|
+
"compare:pi": "tsx -r dotenv/config ./src/scripts/compare_pi_vs_ours.ts",
|
|
237
|
+
"session:live": "tsx -r dotenv/config ./src/scripts/session_live.ts",
|
|
238
|
+
"local:workspace": "tsx -r dotenv/config ./src/scripts/local_engine_workspace.ts --provider 'anthropic' --name 'Jo' --location 'New York, NY'",
|
|
239
|
+
"programmatic_exec_agent": "tsx -r dotenv/config ./src/scripts/programmatic_exec_agent.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
240
|
+
"ant_web_search": "tsx -r dotenv/config ./src/scripts/ant_web_search.ts --name 'Jo' --location 'New York, NY'",
|
|
241
|
+
"ant_web_search_edge_case": "tsx -r dotenv/config ./src/scripts/ant_web_search_edge_case.ts --name 'Jo' --location 'New York, NY'",
|
|
242
|
+
"ant_web_search_error_edge_case": "tsx -r dotenv/config ./src/scripts/ant_web_search_error_edge_case.ts --name 'Jo' --location 'New York, NY'",
|
|
243
|
+
"abort": "tsx -r dotenv/config ./src/scripts/abort.ts --provider 'openAI' --name 'Jo' --location 'New York, NY'",
|
|
244
|
+
"start:cli2": "tsx -r dotenv/config ./src/scripts/cli2.ts --provider 'anthropic' --name 'Jo' --location 'New York, NY'",
|
|
245
|
+
"multi-agent-test": "tsx -r dotenv/config ./src/scripts/multi-agent-test.ts",
|
|
246
|
+
"test-tools-before-handoff": "tsx -r dotenv/config ./src/scripts/test-tools-before-handoff.ts",
|
|
247
|
+
"multi-agent-parallel": "tsx -r dotenv/config ./src/scripts/multi-agent-parallel.ts",
|
|
248
|
+
"multi-agent-parallel-start": "tsx -r dotenv/config ./src/scripts/multi-agent-parallel-start.ts",
|
|
249
|
+
"single-agent-metadata-test": "tsx -r dotenv/config ./src/scripts/single-agent-metadata-test.ts",
|
|
250
|
+
"multi-agent-chain": "tsx -r dotenv/config ./src/scripts/multi-agent-chain.ts",
|
|
251
|
+
"multi-agent-sequence": "tsx -r dotenv/config ./src/scripts/multi-agent-sequence.ts",
|
|
252
|
+
"multi-agent-conditional": "tsx -r dotenv/config ./src/scripts/multi-agent-conditional.ts",
|
|
253
|
+
"multi-agent-subagent": "tsx -r dotenv/config ./src/scripts/multi-agent-subagent.ts",
|
|
254
|
+
"multi-agent-supervisor": "tsx -r dotenv/config ./src/scripts/multi-agent-supervisor.ts",
|
|
255
|
+
"test-handoff-preamble": "tsx -r dotenv/config ./src/scripts/test-handoff-preamble.ts",
|
|
256
|
+
"multi-agent-list-handoff": "tsx -r dotenv/config ./src/scripts/test-multi-agent-list-handoff.ts",
|
|
257
|
+
"test-parallel-agent-labeling": "tsx -r dotenv/config ./src/scripts/test-parallel-agent-labeling.ts",
|
|
258
|
+
"test-thinking-handoff": "tsx -r dotenv/config ./src/scripts/test-thinking-handoff.ts",
|
|
259
|
+
"test-thinking-handoff-bedrock": "tsx -r dotenv/config ./src/scripts/test-thinking-handoff-bedrock.ts",
|
|
260
|
+
"test-thinking-to-thinking-handoff-bedrock": "tsx -r dotenv/config ./src/scripts/test-thinking-to-thinking-handoff-bedrock.ts",
|
|
261
|
+
"multi-agent-hybrid-flow": "tsx -r dotenv/config ./src/scripts/multi-agent-hybrid-flow.ts",
|
|
262
|
+
"test-handoff-input": "tsx -r dotenv/config ./src/scripts/test-handoff-input.ts",
|
|
263
|
+
"test-custom-prompt-key": "tsx -r dotenv/config ./src/scripts/test-custom-prompt-key.ts",
|
|
264
|
+
"script4": "tsx -r dotenv/config ./src/scripts/cli4.ts --name 'Jo' --location 'New York, NY'",
|
|
265
|
+
"script5": "tsx -r dotenv/config ./src/scripts/cli5.ts --name 'Jo' --location 'New York, NY'",
|
|
274
266
|
"test": "NODE_OPTIONS='--experimental-vm-modules' jest",
|
|
275
267
|
"test:live:handoffs": "RUN_HANDOFF_LIVE_TESTS=1 NODE_OPTIONS='--experimental-vm-modules' jest src/specs/agent-handoffs.live.test.ts --runInBand",
|
|
276
268
|
"test:live:ask-user-questions": "RUN_ASK_USER_QUESTIONS_LIVE_TESTS=1 NODE_OPTIONS='--experimental-vm-modules' jest src/specs/ask-user-questions.live.test.ts --runInBand",
|
|
@@ -281,7 +273,7 @@
|
|
|
281
273
|
"lint": "eslint \"{,!(node_modules|venv)/**/}*.{js,jsx,ts,tsx}\" --fix",
|
|
282
274
|
"format": "prettier --write .",
|
|
283
275
|
"audit": "npm audit --omit=dev",
|
|
284
|
-
"label:eval": "
|
|
276
|
+
"label:eval": "tsx -r dotenv/config ./src/scripts/activity-labels/run.ts",
|
|
285
277
|
"label:rescore": "node ./src/scripts/activity-labels/rescore.cjs"
|
|
286
278
|
},
|
|
287
279
|
"overrides": {
|
|
@@ -365,11 +357,10 @@
|
|
|
365
357
|
"mongodb-memory-server-core": "^11.2.0",
|
|
366
358
|
"prettier": "^3.6.2",
|
|
367
359
|
"ts-jest": "^29.4.6",
|
|
368
|
-
"ts-node": "^10.9.2",
|
|
369
360
|
"tsc-alias": "^1.8.10",
|
|
370
|
-
"tsconfig-paths": "^4.2.0",
|
|
371
361
|
"tsdown": "^0.22.2",
|
|
372
362
|
"tslib": "^2.6.3",
|
|
363
|
+
"tsx": "^4.23.12",
|
|
373
364
|
"typescript": "^5.5.3",
|
|
374
365
|
"winston": "^3.17.0"
|
|
375
366
|
},
|
|
@@ -357,6 +357,8 @@ export class AgentContext {
|
|
|
357
357
|
* - `'none'`: no summary present
|
|
358
358
|
*/
|
|
359
359
|
private _summaryLocation: 'system_prompt' | 'user_message' | 'none' = 'none';
|
|
360
|
+
/** Whether a mid-run summary must appear before every retained message. */
|
|
361
|
+
private summaryPrecedesMessages: boolean = false;
|
|
360
362
|
/**
|
|
361
363
|
* Durable summary that survives reset() calls. Set from initialSummary
|
|
362
364
|
* during fromConfig() and updated by setSummary() so that the latest
|
|
@@ -365,6 +367,7 @@ export class AgentContext {
|
|
|
365
367
|
*/
|
|
366
368
|
private _durableSummaryText?: string;
|
|
367
369
|
private _durableSummaryTokenCount: number = 0;
|
|
370
|
+
private durableSummaryPrecedesMessages: boolean = false;
|
|
368
371
|
/** Number of summarization cycles that have occurred for this agent context */
|
|
369
372
|
private _summaryVersion: number = 0;
|
|
370
373
|
/**
|
|
@@ -989,10 +992,10 @@ export class AgentContext {
|
|
|
989
992
|
return messages;
|
|
990
993
|
}
|
|
991
994
|
|
|
992
|
-
const tailIndex =
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
995
|
+
const tailIndex =
|
|
996
|
+
this._summaryLocation === 'user_message' && this.summaryPrecedesMessages
|
|
997
|
+
? 0
|
|
998
|
+
: this.getPromptCacheDynamicTailIndex(messages, promptCacheProvider);
|
|
996
999
|
const stablePrefix = messages.slice(0, tailIndex);
|
|
997
1000
|
const trailingMessages = messages.slice(tailIndex);
|
|
998
1001
|
const cacheablePrefix = this.addStablePromptCacheMarkers(
|
|
@@ -1204,6 +1207,7 @@ export class AgentContext {
|
|
|
1204
1207
|
|
|
1205
1208
|
this.summaryText = this._durableSummaryText;
|
|
1206
1209
|
this.summaryTokenCount = this._durableSummaryTokenCount;
|
|
1210
|
+
this.summaryPrecedesMessages = this.durableSummaryPrecedesMessages;
|
|
1207
1211
|
this._lastSummarizationMsgCount = 0;
|
|
1208
1212
|
this.lastCallUsage = undefined;
|
|
1209
1213
|
this.totalTokensFresh = false;
|
|
@@ -1461,12 +1465,18 @@ export class AgentContext {
|
|
|
1461
1465
|
}
|
|
1462
1466
|
}
|
|
1463
1467
|
|
|
1464
|
-
setSummary(
|
|
1468
|
+
setSummary(
|
|
1469
|
+
text: string,
|
|
1470
|
+
tokenCount: number,
|
|
1471
|
+
options?: { precedesMessages?: boolean }
|
|
1472
|
+
): void {
|
|
1465
1473
|
this.summaryText = text;
|
|
1466
1474
|
this.summaryTokenCount = tokenCount;
|
|
1467
1475
|
this._summaryLocation = 'user_message';
|
|
1476
|
+
this.summaryPrecedesMessages = options?.precedesMessages === true;
|
|
1468
1477
|
this._durableSummaryText = text;
|
|
1469
1478
|
this._durableSummaryTokenCount = tokenCount;
|
|
1479
|
+
this.durableSummaryPrecedesMessages = this.summaryPrecedesMessages;
|
|
1470
1480
|
this._summaryVersion += 1;
|
|
1471
1481
|
this.systemRunnableStale = true;
|
|
1472
1482
|
this.pruneMessages = undefined;
|
|
@@ -1477,8 +1487,10 @@ export class AgentContext {
|
|
|
1477
1487
|
this.summaryText = text;
|
|
1478
1488
|
this.summaryTokenCount = tokenCount;
|
|
1479
1489
|
this._summaryLocation = 'system_prompt';
|
|
1490
|
+
this.summaryPrecedesMessages = false;
|
|
1480
1491
|
this._durableSummaryText = text;
|
|
1481
1492
|
this._durableSummaryTokenCount = tokenCount;
|
|
1493
|
+
this.durableSummaryPrecedesMessages = false;
|
|
1482
1494
|
this._summaryVersion += 1;
|
|
1483
1495
|
this.systemRunnableStale = true;
|
|
1484
1496
|
}
|
|
@@ -1683,6 +1695,8 @@ export class AgentContext {
|
|
|
1683
1695
|
this.summaryTokenCount = 0;
|
|
1684
1696
|
this._durableSummaryText = undefined;
|
|
1685
1697
|
this._durableSummaryTokenCount = 0;
|
|
1698
|
+
this.summaryPrecedesMessages = false;
|
|
1699
|
+
this.durableSummaryPrecedesMessages = false;
|
|
1686
1700
|
this._summaryLocation = 'none';
|
|
1687
1701
|
this.systemRunnableStale = true;
|
|
1688
1702
|
}
|