orbitx 0.3.6 → 0.3.7
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/core/base-agent.d.ts +3 -1
- package/dist/core/base-agent.d.ts.map +1 -1
- package/dist/core/base-agent.js +96 -9
- package/dist/core/base-agent.js.map +1 -1
- package/dist/tests/core/base-agent-compact.test.d.ts +2 -0
- package/dist/tests/core/base-agent-compact.test.d.ts.map +1 -0
- package/dist/tests/core/base-agent-compact.test.js +95 -0
- package/dist/tests/core/base-agent-compact.test.js.map +1 -0
- package/dist/tests/index.d.ts +1 -0
- package/dist/tests/index.d.ts.map +1 -1
- package/dist/tests/index.js +1 -0
- package/dist/tests/index.js.map +1 -1
- package/docs/agents.md +13 -4
- package/package.json +1 -1
|
@@ -27,6 +27,8 @@ export interface BaseAgentProps {
|
|
|
27
27
|
aiProvider: AgentProvidersInput;
|
|
28
28
|
mcpClient: MCPClient;
|
|
29
29
|
skills?: Skill[];
|
|
30
|
+
/** What a `compact_memory` note must also keep in this application (e.g. "the todo list's state"). Added to the compaction rules in the system prompt. */
|
|
31
|
+
compactInstructions?: string;
|
|
30
32
|
/** If omitted, derived from the main provider's reported context window (via getCapabilities()) instead of a hardcoded constant, so the memory-compaction trigger point scales with whatever model is actually in use. */
|
|
31
33
|
maxMemorizeToken?: number;
|
|
32
34
|
initData?: {
|
|
@@ -44,7 +46,7 @@ export interface BaseAgentProps {
|
|
|
44
46
|
}
|
|
45
47
|
export declare class BaseAgent {
|
|
46
48
|
#private;
|
|
47
|
-
constructor({ safetyPolicies, instruction, allowedTools, aiProvider, mcpClient, initData, skills, maxMemorizeToken, features: { executeProviderFromMCPTool } }: BaseAgentProps);
|
|
49
|
+
constructor({ safetyPolicies, instruction, allowedTools, aiProvider, mcpClient, initData, skills, compactInstructions, maxMemorizeToken, features: { executeProviderFromMCPTool } }: BaseAgentProps);
|
|
48
50
|
/**
|
|
49
51
|
* Whether `toolCallId` names a tool call this agent is running right now —
|
|
50
52
|
* i.e. one whose usage bucket is open, so usage can still be attributed to it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-agent.d.ts","sourceRoot":"","sources":["../../src/core/base-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,cAAc,EAA6C,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnJ,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAyB,KAAK,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AAE9G,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAEhD,MAAM,WAAW,UAAU;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,EAAE,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"base-agent.d.ts","sourceRoot":"","sources":["../../src/core/base-agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,cAAc,EAA6C,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnJ,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAyB,KAAK,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AAE9G,MAAM,WAAW,cAAc;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,MAAM,gBAAgB,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAEhD,MAAM,WAAW,UAAU;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,EAAE,CAAC;CAC9B;AAyFD,MAAM,WAAW,cAAc;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,OAAO,EAAE,CAAC;IACxB,UAAU,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IACjB,0JAA0J;IAC1J,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0NAA0N;IAC1N,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,gQAAgQ;QAChQ,eAAe,EAAE,OAAO,EAAE,CAAC;QAC3B,yEAAyE;QACzE,eAAe,EAAE,OAAO,EAAE,CAAC;KAC9B,CAAC;IACF,4GAA4G;IAC5G,QAAQ,CAAC,EAAE;QACP,2VAA2V;QAC3V,0BAA0B,CAAC,EAAE,OAAO,CAAC;KACxC,CAAC;CACL;AAED,qBAAa,SAAS;;gBAyCN,EACR,cAAmB,EACnB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,SAAS,EACT,QAIC,EACD,MAAW,EACX,mBAAwB,EACxB,gBAAgB,EAChB,QAAQ,EAAE,EACN,0BAAkC,EAGrC,EACJ,EAAE,cAAc;IAyLjB;;;OAGG;IACH,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAI9C;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO;IAiCjE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB/B,aAAa,IAAI,IAAI;IAKf,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAsL5E,qBAAqB,IAAI,UAAU;IAQnC,qBAAqB,CAAC,IAAI,EAAE,YAAY;;;;;;IAKxC,iBAAiB,CAAC,IAAI,EAAE,YAAY;;;;;;IAKpC,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;IAI/C,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM;CAG/C;AAED,eAAe,SAAS,CAAC"}
|
package/dist/core/base-agent.js
CHANGED
|
@@ -2,16 +2,30 @@ import { resolveAgentProviders } from "./agent-providers.js";
|
|
|
2
2
|
/** Built-in tool, always available alongside whatever MCP tools are allowed — lets the model trigger memory compaction itself instead of only having it happen as a hidden side-effect. */
|
|
3
3
|
const COMPACT_MEMORY_TOOL_NAME = "compact_memory";
|
|
4
4
|
const COMPACT_CONFIRMATION_MESSAGE = "Memory compacted. Continue where you left off, using MEMORY above for context.";
|
|
5
|
+
/** The user's latest message is carried across a compaction verbatim up to this many characters; past it, the head and tail are kept. */
|
|
6
|
+
const CARRIED_USER_MESSAGE_CHARS = 6000;
|
|
5
7
|
const COMPACT_MEMORY_TOOL = {
|
|
6
8
|
name: COMPACT_MEMORY_TOOL_NAME,
|
|
7
|
-
description: "Compact the conversation so far into a persistent memory note and reset the active working context.
|
|
9
|
+
description: "Compact the conversation so far into a persistent memory note and reset the active working context. The note is shown in every future system prompt's MEMORY section and the user's latest message is carried over verbatim, but everything else in the working context (tool results, file contents, your own replies) is dropped — write the note so you can carry on from it alone. Call this proactively when the conversation has grown long, or whenever asked to free up context.",
|
|
8
10
|
inputs: [
|
|
9
11
|
{
|
|
10
12
|
name: "new_memory",
|
|
11
13
|
type: "string",
|
|
12
|
-
description: "
|
|
14
|
+
description: "The note that replaces the current MEMORY, written as a hand-over to yourself: (1) the user's goal and every request they made, with their exact constraints and preferences; (2) what is done so far, with concrete names (files, commands, ids, results); (3) decisions made and why; (4) what is in progress and the exact next steps; (5) open questions and anything the user is waiting for. Refer to files by path instead of copying their contents — list the ones to read again in files_to_reread. Complete about state, brief about prose.",
|
|
13
15
|
required: true,
|
|
14
16
|
},
|
|
17
|
+
{
|
|
18
|
+
name: "language",
|
|
19
|
+
type: "string",
|
|
20
|
+
description: "The language the user writes in and you reply in (e.g. \"Persian\", \"English\"). You keep replying in it after the compaction.",
|
|
21
|
+
required: false,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: "files_to_reread",
|
|
25
|
+
type: "array",
|
|
26
|
+
description: "Files you need to read again to carry on, as {path: string, reason: string}[] — e.g. the file you were editing, a spec or plan the user gave. Cheaper than copying their contents into new_memory. Omit when none.",
|
|
27
|
+
required: false,
|
|
28
|
+
},
|
|
15
29
|
{
|
|
16
30
|
name: "continue_iterating",
|
|
17
31
|
type: "boolean",
|
|
@@ -21,16 +35,52 @@ const COMPACT_MEMORY_TOOL = {
|
|
|
21
35
|
},
|
|
22
36
|
],
|
|
23
37
|
};
|
|
38
|
+
/** files_to_reread as the model sent it: objects, or bare paths. */
|
|
39
|
+
function rereadFiles(value) {
|
|
40
|
+
const files = [];
|
|
41
|
+
for (const entry of Array.isArray(value) ? value : []) {
|
|
42
|
+
if (typeof entry === "string") {
|
|
43
|
+
if (entry.trim())
|
|
44
|
+
files.push({ path: entry.trim() });
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
const path = typeof entry?.path === "string" ? entry.path.trim() : "";
|
|
48
|
+
const reason = typeof entry?.reason === "string" ? entry.reason.trim() : "";
|
|
49
|
+
if (path)
|
|
50
|
+
files.push({ path, ...(reason ? { reason } : {}) });
|
|
51
|
+
}
|
|
52
|
+
return files.slice(0, 30);
|
|
53
|
+
}
|
|
54
|
+
/** The memory note as stored: the model's note, then the language and the files to read again, so both survive with it (and with a restore from AgentState). */
|
|
55
|
+
function composeMemory(note, language, files) {
|
|
56
|
+
const parts = [note.trim()];
|
|
57
|
+
if (language)
|
|
58
|
+
parts.push(`Conversation language: ${language} — keep replying to the user in ${language}.`);
|
|
59
|
+
if (files.length) {
|
|
60
|
+
parts.push(["Files to read again before continuing (their contents were not kept):", ...files.map((file) => `- ${file.path}${file.reason ? ` — ${file.reason}` : ""}`)].join("\n"));
|
|
61
|
+
}
|
|
62
|
+
return parts.join("\n\n");
|
|
63
|
+
}
|
|
64
|
+
function clip(text, max) {
|
|
65
|
+
if (text.length <= max)
|
|
66
|
+
return text;
|
|
67
|
+
const half = Math.floor((max - 40) / 2);
|
|
68
|
+
return `${text.slice(0, half)}\n[… ${text.length - 2 * half} characters left out …]\n${text.slice(-half)}`;
|
|
69
|
+
}
|
|
24
70
|
;
|
|
25
71
|
export class BaseAgent {
|
|
26
72
|
#maxMemorizeToken;
|
|
27
73
|
#safetyPolicies = "";
|
|
28
74
|
#instruction = "";
|
|
75
|
+
#compactInstructions = "";
|
|
29
76
|
#allSkills = [];
|
|
30
77
|
#allowedTools = [];
|
|
31
78
|
/** Built once, lazily, from all skills/tools — never changes after that, so it's identical (and cache-friendly) across every turn and every iteration of the run loop. */
|
|
32
79
|
#systemPrompt;
|
|
33
80
|
#compactMemory = "";
|
|
81
|
+
/** From the latest `compact_memory` call, for the message the model reads right after it. */
|
|
82
|
+
#compactLanguage = "";
|
|
83
|
+
#compactFiles = [];
|
|
34
84
|
/** Retired messages only — whatever a `compact_memory` call has already folded out of #messagesCompact. Disjoint from #messagesCompact, not a superset of it: a message lives in exactly one of the two at any time. The complete history is the concatenation of this and #messagesCompact, not this array alone. */
|
|
35
85
|
#retiredMessages = [];
|
|
36
86
|
#runningProcess = false;
|
|
@@ -51,11 +101,12 @@ export class BaseAgent {
|
|
|
51
101
|
compactMemory: "",
|
|
52
102
|
retiredMessages: [],
|
|
53
103
|
messagesCompact: [],
|
|
54
|
-
}, skills = [], maxMemorizeToken, features: { executeProviderFromMCPTool = false } = {
|
|
104
|
+
}, skills = [], compactInstructions = "", maxMemorizeToken, features: { executeProviderFromMCPTool = false } = {
|
|
55
105
|
executeProviderFromMCPTool: false
|
|
56
106
|
} }) {
|
|
57
107
|
this.#safetyPolicies = safetyPolicies;
|
|
58
108
|
this.#instruction = instruction;
|
|
109
|
+
this.#compactInstructions = compactInstructions;
|
|
59
110
|
this.#allowedTools = allowedTools;
|
|
60
111
|
this.#mcpClient = mcpClient;
|
|
61
112
|
this.#compactMemory = initData.compactMemory;
|
|
@@ -106,8 +157,17 @@ export class BaseAgent {
|
|
|
106
157
|
return Math.floor(caps.contextWindow * ratio);
|
|
107
158
|
}
|
|
108
159
|
async #getAllToolSchemas() {
|
|
160
|
+
const allowed = new Map(this.#allowedTools.map(t => [t.getOptions().name, t.getOptions()]));
|
|
109
161
|
const mcpTools = (await this.#mcpClient.getTools())
|
|
110
|
-
.filter(t =>
|
|
162
|
+
.filter(t => allowed.has(t.name))
|
|
163
|
+
// A remote tool that publishes no inputs (a bare proxy that only forwards calls) takes the
|
|
164
|
+
// schema this agent was given for it, so the model still sees its parameters.
|
|
165
|
+
.map(t => {
|
|
166
|
+
const own = allowed.get(t.name);
|
|
167
|
+
return (!t.inputs || t.inputs.length === 0) && own.inputs?.length
|
|
168
|
+
? { name: t.name, description: own.description || t.description, inputs: own.inputs }
|
|
169
|
+
: t;
|
|
170
|
+
});
|
|
111
171
|
return [...mcpTools, COMPACT_MEMORY_TOOL];
|
|
112
172
|
}
|
|
113
173
|
#buildSkillsAndMemoryBlock(skills) {
|
|
@@ -121,6 +181,9 @@ ${skill.getSkill().instructions}
|
|
|
121
181
|
COMPACT SESSION MEMORY:
|
|
122
182
|
${this.#compactMemory || "(empty)"}
|
|
123
183
|
|
|
184
|
+
COMPACTION RULES:
|
|
185
|
+
When you call ${COMPACT_MEMORY_TOOL_NAME}, only your note, the language, the files to read again and the user's latest message survive; every tool result and file content is dropped. Keep the user's requests and constraints, what is done, the decisions, and the exact next steps; name files by path and list the ones you'll need in files_to_reread instead of copying them. After a compaction, read those files first, then carry on with the next step without asking the user to repeat themselves, and keep replying in the user's language.${this.#compactInstructions ? `\n${this.#compactInstructions}` : ""}
|
|
186
|
+
|
|
124
187
|
INSTRUCTIONS:
|
|
125
188
|
${this.#instruction}
|
|
126
189
|
`;
|
|
@@ -139,13 +202,35 @@ ${this.#buildSkillsAndMemoryBlock(skills)}`;
|
|
|
139
202
|
}
|
|
140
203
|
/** Injected as a normal user turn once the running context crosses `#maxMemorizeToken`, so the model calls `compact_memory` itself on its next turn instead of the reset happening as a hidden side-effect. Explicitly tells the model how to set `continue_iterating` on that call: `run()` trusts whatever the model decides here — including `true`, if the model still has unfinished work from before this nudge fired (e.g. mid-way through a multi-step task) — it doesn't force `continue_iterating` to `false` just because this is a response to a nudge rather than the user. */
|
|
141
204
|
#buildForceCompactPrompt() {
|
|
142
|
-
return `You're nearing the safe context limit for this conversation. Before doing anything else, call the "${COMPACT_MEMORY_TOOL_NAME}" tool with a "new_memory"
|
|
205
|
+
return `You're nearing the safe context limit for this conversation. Before doing anything else, call the "${COMPACT_MEMORY_TOOL_NAME}" tool with a "new_memory" hand-over note (the user's requests and constraints, what's done, decisions, the exact next steps), the user's "language", and "files_to_reread" for the files you'll need again (paths and why — don't copy their contents). This is routine housekeeping, not a new request from the user — set "continue_iterating" to true only if you still have unfinished work left from their last message (e.g. more steps of a task they asked for), false if you'd already given them everything they needed before this nudge fired.`;
|
|
143
206
|
}
|
|
144
207
|
/** Stores the new running summary from a successful `compact_memory` call and invalidates the cached system prompt, so the very next turn's system prompt is rebuilt with it rather than replaying the stale one. Deliberately does not touch `messagesCompact` — see #archiveWorkingContext(), which run() calls separately once the whole turn's tool calls have all been dispatched. */
|
|
145
|
-
#applyCompactMemory(newMemory) {
|
|
146
|
-
this.#compactMemory = newMemory;
|
|
208
|
+
#applyCompactMemory(newMemory, language, files) {
|
|
209
|
+
this.#compactMemory = composeMemory(newMemory, language, files);
|
|
210
|
+
this.#compactLanguage = language;
|
|
211
|
+
this.#compactFiles = files;
|
|
147
212
|
this.#systemPrompt = undefined;
|
|
148
213
|
}
|
|
214
|
+
/** The newest message the user wrote (not one this agent injected), carried across a compaction. */
|
|
215
|
+
#latestUserMessage() {
|
|
216
|
+
for (let i = this.#messagesCompact.length - 1; i >= 0; i--) {
|
|
217
|
+
const message = this.#messagesCompact[i];
|
|
218
|
+
if (message.role === "user" && !message.hidden && typeof message.content === "string" && message.content.trim())
|
|
219
|
+
return message.content;
|
|
220
|
+
}
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
/** What the model reads right after a compaction: the user's latest message verbatim, the files to read again, and the language to answer in. */
|
|
224
|
+
#buildCompactConfirmation(latestUserMessage) {
|
|
225
|
+
const parts = [COMPACT_CONFIRMATION_MESSAGE];
|
|
226
|
+
if (latestUserMessage)
|
|
227
|
+
parts.push(`The user's latest message, verbatim:\n<<<\n${clip(latestUserMessage, CARRIED_USER_MESSAGE_CHARS)}\n>>>`);
|
|
228
|
+
if (this.#compactFiles.length)
|
|
229
|
+
parts.push(`Before the next step, read again: ${this.#compactFiles.map((file) => file.path).join(", ")}.`);
|
|
230
|
+
if (this.#compactLanguage)
|
|
231
|
+
parts.push(`Reply to the user in ${this.#compactLanguage}.`);
|
|
232
|
+
return parts.join("\n\n");
|
|
233
|
+
}
|
|
149
234
|
#archiveWorkingContext() {
|
|
150
235
|
this.#retiredMessages.push(...this.#messagesCompact);
|
|
151
236
|
this.#messagesCompact = [];
|
|
@@ -213,7 +298,8 @@ ${this.#buildSkillsAndMemoryBlock(skills)}`;
|
|
|
213
298
|
async #dispatchTool(id, toolName, inputs) {
|
|
214
299
|
if (toolName === COMPACT_MEMORY_TOOL_NAME) {
|
|
215
300
|
if (typeof inputs?.new_memory === "string") {
|
|
216
|
-
|
|
301
|
+
const language = typeof inputs?.language === "string" ? inputs.language.trim().slice(0, 60) : "";
|
|
302
|
+
this.#applyCompactMemory(inputs.new_memory, language, rereadFiles(inputs?.files_to_reread));
|
|
217
303
|
const continueAfterCompact = typeof inputs?.continue_iterating === "boolean" ? inputs.continue_iterating : true;
|
|
218
304
|
return { id, name: toolName, resultText: COMPACT_CONFIRMATION_MESSAGE, compacted: true, continueAfterCompact };
|
|
219
305
|
}
|
|
@@ -358,9 +444,10 @@ ${this.#buildSkillsAndMemoryBlock(skills)}`;
|
|
|
358
444
|
}
|
|
359
445
|
const compactKeepsGoing = compactedThisTurn && compactRequestsContinue;
|
|
360
446
|
if (compactedThisTurn) {
|
|
447
|
+
const latestUserMessage = this.#latestUserMessage();
|
|
361
448
|
this.#archiveWorkingContext();
|
|
362
449
|
if (compactKeepsGoing || calledAnyNonCompactTool) {
|
|
363
|
-
const compactedMessage = { role: "user", content:
|
|
450
|
+
const compactedMessage = { role: "user", content: this.#buildCompactConfirmation(latestUserMessage), timestamp: Date.now(), hidden: true };
|
|
364
451
|
this.#messagesCompact.push(compactedMessage);
|
|
365
452
|
await streamCallback?.({ role: "user", content: compactedMessage.content, done: true, hidden: true });
|
|
366
453
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-agent.js","sourceRoot":"","sources":["../../src/core/base-agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"base-agent.js","sourceRoot":"","sources":["../../src/core/base-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-agent-compact.test.d.ts","sourceRoot":"","sources":["../../../src/tests/core/base-agent-compact.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { test, describe } from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { BaseAgent, MCPClient, MCPConnection, MCPServer, MCPTool } from "../../index.js";
|
|
4
|
+
import { ScriptedProvider } from "./scripted-provider.js";
|
|
5
|
+
function agentWith(provider, compactInstructions = "") {
|
|
6
|
+
const connection = new MCPConnection();
|
|
7
|
+
new MCPServer(connection);
|
|
8
|
+
const mcpClient = new MCPClient("compact-test", connection);
|
|
9
|
+
return new BaseAgent({ instruction: "test", allowedTools: [], aiProvider: provider, mcpClient, compactInstructions });
|
|
10
|
+
}
|
|
11
|
+
const systemPrompt = (messages) => messages.filter((message) => message.role === "system").map((message) => message.content).join("\n");
|
|
12
|
+
describe("core/base-agent compaction", () => {
|
|
13
|
+
test("keeps the language, the files to read again and the user's latest message", async () => {
|
|
14
|
+
const seen = [];
|
|
15
|
+
const provider = new ScriptedProvider("compact", [
|
|
16
|
+
({ messages }) => {
|
|
17
|
+
seen.push(messages);
|
|
18
|
+
return {
|
|
19
|
+
toolCalls: [{
|
|
20
|
+
name: "compact_memory",
|
|
21
|
+
inputs: {
|
|
22
|
+
new_memory: "Building a landing page; hero done, footer next.",
|
|
23
|
+
language: "Persian",
|
|
24
|
+
files_to_reread: [{ path: "src/App.tsx", reason: "the page being edited" }, "PLAN.md"],
|
|
25
|
+
continue_iterating: true,
|
|
26
|
+
},
|
|
27
|
+
}],
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
({ messages }) => {
|
|
31
|
+
seen.push(messages);
|
|
32
|
+
return { content: "ادامه میدهم." };
|
|
33
|
+
},
|
|
34
|
+
]);
|
|
35
|
+
const agent = agentWith(provider, "Keep the todo list's state.");
|
|
36
|
+
await agent.run("یک صفحه فرود بساز");
|
|
37
|
+
const after = seen[1];
|
|
38
|
+
const carried = after.filter((message) => message.role !== "system");
|
|
39
|
+
assert.equal(carried[0].role, "user");
|
|
40
|
+
assert.equal(carried[0].hidden, true);
|
|
41
|
+
assert.match(carried[0].content, /یک صفحه فرود بساز/);
|
|
42
|
+
assert.match(carried[0].content, /src\/App\.tsx, PLAN\.md/);
|
|
43
|
+
assert.match(carried[0].content, /Reply to the user in Persian/);
|
|
44
|
+
const prompt = systemPrompt(after);
|
|
45
|
+
assert.match(prompt, /Building a landing page/);
|
|
46
|
+
assert.match(prompt, /Conversation language: Persian/);
|
|
47
|
+
assert.match(prompt, /- src\/App\.tsx — the page being edited/);
|
|
48
|
+
assert.match(prompt, /Keep the todo list's state\./);
|
|
49
|
+
const state = agent.getCurrentAgentStates();
|
|
50
|
+
assert.match(state.compactMemory, /Files to read again/);
|
|
51
|
+
assert.equal(state.messagesCompact.length, 2);
|
|
52
|
+
});
|
|
53
|
+
test("a note with only new_memory still works and carries the user's message", async () => {
|
|
54
|
+
const seen = [];
|
|
55
|
+
const provider = new ScriptedProvider("plain", [
|
|
56
|
+
() => ({ toolCalls: [{ name: "compact_memory", inputs: { new_memory: "note" } }] }),
|
|
57
|
+
({ messages }) => {
|
|
58
|
+
seen.push(messages);
|
|
59
|
+
return { content: "ok" };
|
|
60
|
+
},
|
|
61
|
+
]);
|
|
62
|
+
const agent = agentWith(provider);
|
|
63
|
+
await agent.run("hello there");
|
|
64
|
+
const first = seen[0].find((message) => message.role === "user");
|
|
65
|
+
assert.match(first.content, /^Memory compacted\./);
|
|
66
|
+
assert.match(first.content, /hello there/);
|
|
67
|
+
assert.doesNotMatch(first.content, /Reply to the user in/);
|
|
68
|
+
assert.equal(agent.getCurrentAgentStates().compactMemory, "note");
|
|
69
|
+
});
|
|
70
|
+
test("a remote tool that publishes no inputs takes the agent's own schema", async () => {
|
|
71
|
+
const connection = new MCPConnection();
|
|
72
|
+
const server = new MCPServer(connection);
|
|
73
|
+
const execute = async () => ({ ok: true });
|
|
74
|
+
server.registerTool(new MCPTool({ name: "proxy-tool", description: "forwards", inputs: [], execute }));
|
|
75
|
+
server.registerTool(new MCPTool({ name: "own-tool", description: "remote", inputs: [{ name: "a", type: "string", description: "remote a" }], execute }));
|
|
76
|
+
const allowed = [
|
|
77
|
+
new MCPTool({ name: "proxy-tool", description: "Opens a page.", inputs: [{ name: "url", type: "string", description: "the address", required: true }], execute }),
|
|
78
|
+
new MCPTool({ name: "own-tool", description: "local", inputs: [{ name: "b", type: "string", description: "local b" }], execute }),
|
|
79
|
+
];
|
|
80
|
+
let sent = [];
|
|
81
|
+
const provider = new ScriptedProvider("schemas", [() => ({ content: "done" })]);
|
|
82
|
+
const chat = provider.chat.bind(provider);
|
|
83
|
+
provider.chat = (messages, stream, tools, signal) => {
|
|
84
|
+
sent = tools ?? [];
|
|
85
|
+
return chat(messages, stream, tools, signal);
|
|
86
|
+
};
|
|
87
|
+
const agent = new BaseAgent({ instruction: "test", allowedTools: allowed, aiProvider: provider, mcpClient: new MCPClient("schema-test", connection) });
|
|
88
|
+
await agent.run("go");
|
|
89
|
+
const proxy = sent.find((tool) => tool.name === "proxy-tool");
|
|
90
|
+
assert.equal(proxy.description, "Opens a page.");
|
|
91
|
+
assert.deepEqual(proxy.inputs.map((input) => input.name), ["url"]);
|
|
92
|
+
assert.deepEqual(sent.find((tool) => tool.name === "own-tool").inputs.map((input) => input.name), ["a"]);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=base-agent-compact.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-agent-compact.test.js","sourceRoot":"","sources":["../../../src/tests/core/base-agent-compact.test.ts"],"names":[],"mappings":"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"}
|
package/dist/tests/index.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ import "./tools/agent/agent-tools.test.js";
|
|
|
37
37
|
import "./core/agent-definition.test.js";
|
|
38
38
|
import "./core/swarm-base.test.js";
|
|
39
39
|
import "./core/stateless-agent.test.js";
|
|
40
|
+
import "./core/base-agent-compact.test.js";
|
|
40
41
|
import "./core/ai-ask.test.js";
|
|
41
42
|
import "./core/mcp-auto-execution-policy.test.js";
|
|
42
43
|
import "./agents/default-agents.test.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,qCAAqC,CAAC;AAG7C,OAAO,6BAA6B,CAAC;AACrC,OAAO,wCAAwC,CAAC;AAChD,OAAO,kCAAkC,CAAC;AAE1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AACxC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC;AAEzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAE1C,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AAExC,OAAO,iDAAiD,CAAC;AAEzD,OAAO,uCAAuC,CAAC;AAE/C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AACxC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,0CAA0C,CAAC;AAElD,OAAO,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,qCAAqC,CAAC;AAG7C,OAAO,6BAA6B,CAAC;AACrC,OAAO,wCAAwC,CAAC;AAChD,OAAO,kCAAkC,CAAC;AAE1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AACxC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC;AAEzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAE1C,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AAExC,OAAO,iDAAiD,CAAC;AAEzD,OAAO,uCAAuC,CAAC;AAE/C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AACxC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,uBAAuB,CAAC;AAC/B,OAAO,0CAA0C,CAAC;AAElD,OAAO,iCAAiC,CAAC"}
|
package/dist/tests/index.js
CHANGED
|
@@ -37,6 +37,7 @@ import "./tools/agent/agent-tools.test.js";
|
|
|
37
37
|
import "./core/agent-definition.test.js";
|
|
38
38
|
import "./core/swarm-base.test.js";
|
|
39
39
|
import "./core/stateless-agent.test.js";
|
|
40
|
+
import "./core/base-agent-compact.test.js";
|
|
40
41
|
import "./core/ai-ask.test.js";
|
|
41
42
|
import "./core/mcp-auto-execution-policy.test.js";
|
|
42
43
|
import "./agents/default-agents.test.js";
|
package/dist/tests/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,qCAAqC,CAAC;AAG7C,OAAO,6BAA6B,CAAC;AACrC,OAAO,wCAAwC,CAAC;AAChD,OAAO,kCAAkC,CAAC;AAE1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AACxC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC;AAEzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAE1C,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AAExC,OAAO,iDAAiD,CAAC;AAEzD,OAAO,uCAAuC,CAAC;AAE/C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AACxC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,0CAA0C,CAAC;AAElD,OAAO,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tests/index.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,qCAAqC,CAAC;AAG7C,OAAO,6BAA6B,CAAC;AACrC,OAAO,wCAAwC,CAAC;AAChD,OAAO,kCAAkC,CAAC;AAE1C,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AACvC,OAAO,8BAA8B,CAAC;AACtC,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,2BAA2B,CAAC;AACnC,OAAO,yBAAyB,CAAC;AACjC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AACxC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,kCAAkC,CAAC;AAC1C,OAAO,iCAAiC,CAAC;AAEzC,OAAO,6BAA6B,CAAC;AACrC,OAAO,+BAA+B,CAAC;AACvC,OAAO,kCAAkC,CAAC;AAE1C,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,kCAAkC,CAAC;AAC1C,OAAO,gCAAgC,CAAC;AAExC,OAAO,iDAAiD,CAAC;AAEzD,OAAO,uCAAuC,CAAC;AAE/C,OAAO,mCAAmC,CAAC;AAE3C,OAAO,iCAAiC,CAAC;AACzC,OAAO,2BAA2B,CAAC;AACnC,OAAO,gCAAgC,CAAC;AACxC,OAAO,mCAAmC,CAAC;AAC3C,OAAO,uBAAuB,CAAC;AAC/B,OAAO,0CAA0C,CAAC;AAElD,OAAO,iCAAiC,CAAC"}
|
package/docs/agents.md
CHANGED
|
@@ -17,6 +17,7 @@ new BaseAgent({
|
|
|
17
17
|
aiProvider: AIProvider | AgentProviderEntry[]; // see Providers doc
|
|
18
18
|
mcpClient: MCPClient;
|
|
19
19
|
skills?: Skill[];
|
|
20
|
+
compactInstructions?: string; // what a compact_memory note must also keep in this app (see Memory compaction)
|
|
20
21
|
maxMemorizeToken?: number; // default: derived from the main provider's contextWindow * safeUsageRatio
|
|
21
22
|
initData?: {
|
|
22
23
|
compactMemory: string;
|
|
@@ -99,13 +100,17 @@ For a **streaming** call, an abort doesn't throw the turn away: `chat()` resolve
|
|
|
99
100
|
|
|
100
101
|
## Memory compaction
|
|
101
102
|
|
|
102
|
-
OrbitX never truncates or deletes conversation history. Compaction happens through a real, always-available native tool — `compact_memory({ new_memory: string, continue_iterating?: boolean })` — that `BaseAgent` appends to every tool schema list alongside whatever MCP tools you allowed. This means the model can compact its own context whenever *it* judges the conversation has grown long, not only when forced to.
|
|
103
|
+
OrbitX never truncates or deletes conversation history. Compaction happens through a real, always-available native tool — `compact_memory({ new_memory: string, language?: string, files_to_reread?: {path, reason}[], continue_iterating?: boolean })` — that `BaseAgent` appends to every tool schema list alongside whatever MCP tools you allowed. This means the model can compact its own context whenever *it* judges the conversation has grown long, not only when forced to.
|
|
103
104
|
|
|
104
105
|
Calling `compact_memory`:
|
|
105
106
|
|
|
106
|
-
1. Replaces the running `compactMemory` string with `new_memory
|
|
107
|
+
1. Replaces the running `compactMemory` string with `new_memory` — followed by a `Conversation language: …` line when `language` is given and a `Files to read again …` list from `files_to_reread` (so both survive a restore from `AgentState` without a new field) — which is injected into every future system prompt (`MEMORY:` section). The cached system prompt is invalidated at the same time, so the very next turn's system prompt is rebuilt with the new summary rather than replaying the stale one.
|
|
107
108
|
2. Once every tool call in that turn has been dispatched and had its normal tool-response message appended to `messagesCompact` — `compact_memory`'s own response included — the *entire* turn's `messagesCompact` (the assistant message, every tool-response message, all of it) is moved into `retiredMessages` and `messagesCompact` is cleared. Nothing is lost, it's just retired from what gets replayed to the model every turn. Nothing needs to be separately "rolled into a lifetime total" — every message already carries its own `usage`, so `getFullTotalToken()` (see [Token accounting](#token-accounting)) just sums `retiredMessages` + `messagesCompact` directly.
|
|
108
|
-
3. A single hidden `role: "user"` message — `"Memory compacted. Continue where you left off, using MEMORY above for context."
|
|
109
|
+
3. A single hidden `role: "user"` message — `"Memory compacted. Continue where you left off, using MEMORY above for context."`, followed by the user's latest real (non-hidden) message verbatim (clipped to its head and tail past 6 000 characters), the files to read again, and the language to reply in — is pushed onto the now-empty `messagesCompact`, but *only if `run()` is actually about to take another turn right now* (see `continue_iterating` below for when it isn't). With nothing left to respond to it this turn, an unconditional push would just leave it sitting in `messagesCompact` as a stray, unanswered `"user"` entry until some later, unrelated user message showed up after it. When it is added, the model's next turn already has the new summary via the system prompt's MEMORY section, so nothing about the compacted turn — including the `compact_memory` call/response pair itself — needs to stay in the replayed working context; the message is just the nudge to keep going.
|
|
110
|
+
|
|
111
|
+
### What a note keeps
|
|
112
|
+
|
|
113
|
+
Only the note, the language, the files to read again and the user's latest message cross a compaction; every tool result and file content in the working context is dropped. The tool's own descriptions and a `COMPACTION RULES:` block in the system prompt tell the model to write the note as a hand-over — the user's requests and constraints, what's done, decisions, the exact next steps, open questions — and to name files by path in `files_to_reread` instead of copying their contents (a re-read costs less than carrying them in every later system prompt). Carrying the user's own words over is what keeps the model answering in their language and on their request after a compaction. An application adds its own must-keep items with the `compactInstructions` constructor option (appended to those rules).
|
|
109
114
|
|
|
110
115
|
Archiving is deliberately deferred until the whole turn is dispatched, rather than happening the instant `compact_memory` itself resolves: providers reject a `"tool"`-role message that isn't preceded, in the same request, by the assistant message carrying the `tool_calls` it's answering, so archiving mid-turn would strand the response of any *other* tool call made alongside `compact_memory` in the same turn. Doing it once, after every call in the turn already has its response in `messagesCompact`, avoids that regardless of how many other tools were called or in what order.
|
|
111
116
|
|
|
@@ -161,9 +166,13 @@ Every other `type` entry comes from a tool calling `mcp.executeProvider(toolCall
|
|
|
161
166
|
- `getCompactTotalTokens(type: ProviderType)` / `getFullTotalToken(type: ProviderType)` — return `{ total, inputHit, inputMiss, output }`, summing `unit: "tokens"` entries matching `type` over `messagesCompact` only, or `retiredMessages` + `messagesCompact` (this agent's whole lifetime), respectively.
|
|
162
167
|
- `getCompactTotalCost(type: ProviderType)` / `getFullTotalCost(type: ProviderType)` — return a plain `number`, summing `unit: "cost"` entries matching `type` over the same two scopes.
|
|
163
168
|
|
|
169
|
+
## Tool schemas
|
|
170
|
+
|
|
171
|
+
Each run sends the model the tools `mcpClient.getTools()` reports, filtered to `allowedTools`, plus `compact_memory`. A remote tool that reports no inputs at all (a bare proxy that only forwards calls, e.g. a desktop app relaying a browser extension's tools) takes the description and inputs of the `allowedTools` entry with the same name, so the model still sees its parameters; a remote tool that publishes its own inputs is sent as published.
|
|
172
|
+
|
|
164
173
|
## Instructions, skills, and memory in the system prompt
|
|
165
174
|
|
|
166
|
-
The system prompt is built lazily on first use and cached — a stable prefix between compactions, which matters for provider-side prompt caching. It's assembled from: a fixed "you have tools" preamble, each skill's name/description/instructions (see [Skills](./skills.md)), the current `MEMORY:` block (sourced from `compactMemory`), and your `instruction` string, in that order. Each `compact_memory` call invalidates the cache (see [Memory compaction](#memory-compaction)), so the next turn's system prompt is rebuilt with the fresh `MEMORY:` block instead of the one that was current when the prompt was first built.
|
|
175
|
+
The system prompt is built lazily on first use and cached — a stable prefix between compactions, which matters for provider-side prompt caching. It's assembled from: a fixed "you have tools" preamble, each skill's name/description/instructions (see [Skills](./skills.md)), the current `MEMORY:` block (sourced from `compactMemory`) followed by the `COMPACTION RULES:` block (plus `compactInstructions`), and your `instruction` string, in that order. Each `compact_memory` call invalidates the cache (see [Memory compaction](#memory-compaction)), so the next turn's system prompt is rebuilt with the fresh `MEMORY:` block instead of the one that was current when the prompt was first built.
|
|
167
176
|
|
|
168
177
|
## `StatelessAgent`
|
|
169
178
|
|