@namzu/sdk 56.1.0 → 56.2.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/CHANGELOG.md +17 -0
- package/dist/compaction/context-breakdown.d.ts +1 -1
- package/dist/compaction/context-breakdown.d.ts.map +1 -1
- package/dist/compaction/context-breakdown.js +9 -2
- package/dist/compaction/context-breakdown.js.map +1 -1
- package/dist/compaction/verifier.d.ts.map +1 -1
- package/dist/compaction/verifier.js +3 -1
- package/dist/compaction/verifier.js.map +1 -1
- package/dist/public-runtime.d.ts +1 -1
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +1 -1
- package/dist/public-runtime.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +8 -1
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +10 -2
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/file-evidence-context.d.ts +21 -4
- package/dist/runtime/query/file-evidence-context.d.ts.map +1 -1
- package/dist/runtime/query/file-evidence-context.js +70 -8
- package/dist/runtime/query/file-evidence-context.js.map +1 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +2 -11
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +1 -2
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +30 -19
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/recorded-context.d.ts +18 -0
- package/dist/runtime/query/iteration/recorded-context.d.ts.map +1 -0
- package/dist/runtime/query/iteration/recorded-context.js +37 -0
- package/dist/runtime/query/iteration/recorded-context.js.map +1 -0
- package/dist/runtime/query/iteration/step-context.d.ts +15 -51
- package/dist/runtime/query/iteration/step-context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/step-context.js +24 -134
- package/dist/runtime/query/iteration/step-context.js.map +1 -1
- package/dist/runtime/query/iteration/step-shaping.d.ts +20 -8
- package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
- package/dist/runtime/query/iteration/step-shaping.js +52 -26
- package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
- package/dist/scheduler/completion-inbox.d.ts +27 -0
- package/dist/scheduler/completion-inbox.d.ts.map +1 -1
- package/dist/scheduler/completion-inbox.js +88 -21
- package/dist/scheduler/completion-inbox.js.map +1 -1
- package/dist/store/session-index/fts.d.ts.map +1 -1
- package/dist/store/session-index/fts.js +6 -0
- package/dist/store/session-index/fts.js.map +1 -1
- package/dist/test-support/file-evidence-held.d.ts +11 -0
- package/dist/test-support/file-evidence-held.d.ts.map +1 -0
- package/dist/test-support/file-evidence-held.js +28 -0
- package/dist/test-support/file-evidence-held.js.map +1 -0
- package/dist/test-support/request-only.d.ts +10 -0
- package/dist/test-support/request-only.d.ts.map +1 -0
- package/dist/test-support/request-only.js +15 -0
- package/dist/test-support/request-only.js.map +1 -0
- package/dist/tools/untrusted-envelope.d.ts +7 -0
- package/dist/tools/untrusted-envelope.d.ts.map +1 -1
- package/dist/tools/untrusted-envelope.js +3 -1
- package/dist/tools/untrusted-envelope.js.map +1 -1
- package/dist/turn/evidence-recall.d.ts +19 -8
- package/dist/turn/evidence-recall.d.ts.map +1 -1
- package/dist/turn/evidence-recall.js +134 -53
- package/dist/turn/evidence-recall.js.map +1 -1
- package/dist/turn/memory-recall.d.ts +18 -0
- package/dist/turn/memory-recall.d.ts.map +1 -1
- package/dist/turn/memory-recall.js +43 -4
- package/dist/turn/memory-recall.js.map +1 -1
- package/dist/types/message/index.d.ts +46 -1
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +78 -1
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/session/prepare-step.d.ts +24 -0
- package/dist/types/session/prepare-step.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/compaction/context-breakdown.ts +11 -3
- package/src/compaction/verifier.ts +3 -1
- package/src/public-runtime.ts +7 -0
- package/src/runtime/query/executor.ts +20 -2
- package/src/runtime/query/file-evidence-context.ts +79 -11
- package/src/runtime/query/index.ts +2 -10
- package/src/runtime/query/iteration/index.ts +32 -26
- package/src/runtime/query/iteration/recorded-context.ts +48 -0
- package/src/runtime/query/iteration/step-context.ts +27 -155
- package/src/runtime/query/iteration/step-shaping.ts +64 -40
- package/src/scheduler/completion-inbox.ts +87 -20
- package/src/store/session-index/fts.ts +5 -0
- package/src/test-support/file-evidence-held.ts +27 -0
- package/src/test-support/request-only.ts +19 -0
- package/src/tools/untrusted-envelope.ts +10 -1
- package/src/turn/evidence-recall.ts +189 -58
- package/src/turn/memory-recall.ts +59 -5
- package/src/types/message/index.ts +108 -1
- package/src/types/session/prepare-step.ts +26 -0
|
@@ -335,7 +335,7 @@ export interface ProjectInstructionMessageSource {
|
|
|
335
335
|
* transcript, export, or previous-prompt editor from presenting kernel context
|
|
336
336
|
* as something the operator typed.
|
|
337
337
|
*/
|
|
338
|
-
export declare const RUNTIME_CONTEXT_MESSAGE_KINDS: readonly ["advisory", "answer-review", "auto-continuation", "channel-message", "hook-feedback", "host-observation", "job-exit", "limit-finalization", "peer-message", "peer-notice", "reminder", "repeat-call", "steering", "step-context", "structured-output", "task-completion"];
|
|
338
|
+
export declare const RUNTIME_CONTEXT_MESSAGE_KINDS: readonly ["advisory", "answer-review", "auto-continuation", "channel-message", "hook-feedback", "host-observation", "job-exit", "limit-finalization", "peer-message", "peer-notice", "reminder", "repeat-call", "steering", "step-context", "structured-output", "task-completion", "turn-context"];
|
|
339
339
|
export type RuntimeContextMessageKind = (typeof RUNTIME_CONTEXT_MESSAGE_KINDS)[number];
|
|
340
340
|
/** Host-generated context carried in the provider's required user role. */
|
|
341
341
|
export interface RuntimeContextMessageSource {
|
|
@@ -343,7 +343,14 @@ export interface RuntimeContextMessageSource {
|
|
|
343
343
|
readonly kind: RuntimeContextMessageKind;
|
|
344
344
|
/** Optional durable host delivery identity; it never grants operator authority. */
|
|
345
345
|
readonly deliveryRef?: InboundDeliveryRef;
|
|
346
|
+
/**
|
|
347
|
+
* What a `turn-context` entry reports (for example `repository`). A later
|
|
348
|
+
* entry with the same key adds to or replaces what an earlier one said.
|
|
349
|
+
*/
|
|
350
|
+
readonly key?: string;
|
|
346
351
|
}
|
|
352
|
+
/** The longest key a recorded context entry may carry. */
|
|
353
|
+
export declare const MAX_TURN_CONTEXT_KEY_LENGTH = 64;
|
|
347
354
|
export type UserMessageSource = GoalRoundMessageSource | ProjectInstructionMessageSource | RuntimeContextMessageSource;
|
|
348
355
|
/** A bounded source list keeps untrusted persisted metadata cheap to validate. */
|
|
349
356
|
export declare const MAX_PROJECT_INSTRUCTION_SOURCE_FILES = 256;
|
|
@@ -501,6 +508,44 @@ export declare function createSystemMessage(content: string, cacheHint?: CacheHi
|
|
|
501
508
|
export declare function createUserMessage(content: string, attachments?: readonly MessageAttachment[], source?: UserMessageSource): UserMessage;
|
|
502
509
|
/** Build provider-visible context that no operator authored. */
|
|
503
510
|
export declare function createRuntimeContextMessage(content: string, kind: RuntimeContextMessageKind): UserMessage;
|
|
511
|
+
/** Whether `value` is a name a recorded context entry may be filed under. */
|
|
512
|
+
export declare function isTurnContextKey(value: unknown): value is string;
|
|
513
|
+
/**
|
|
514
|
+
* Build a recorded context entry: text a step learned for this turn that
|
|
515
|
+
* stays in the conversation, after whatever came before it, so later requests
|
|
516
|
+
* keep beginning with it. The header is written into the content once and the
|
|
517
|
+
* entry is never edited afterwards; a later entry under the same key says what
|
|
518
|
+
* changed. It is not an operator message and carries no authority.
|
|
519
|
+
*
|
|
520
|
+
* The first entry under a key says that a later one adds to or replaces it;
|
|
521
|
+
* with `later` set, for an entry that follows another under the same key, the
|
|
522
|
+
* header leaves that sentence out, since the conversation already holds it.
|
|
523
|
+
*/
|
|
524
|
+
export declare function createTurnContextEntry(key: string, text: string, at?: Date, options?: {
|
|
525
|
+
readonly later?: boolean;
|
|
526
|
+
}): UserMessage;
|
|
527
|
+
/** The key a recorded context entry is filed under, or undefined for any other message. */
|
|
528
|
+
export declare function turnContextKey(message: {
|
|
529
|
+
readonly role: string;
|
|
530
|
+
readonly source?: unknown;
|
|
531
|
+
}): string | undefined;
|
|
532
|
+
/** Whether `message` is a recorded context entry. */
|
|
533
|
+
export declare function isTurnContextEntry(message: {
|
|
534
|
+
readonly role: string;
|
|
535
|
+
readonly source?: unknown;
|
|
536
|
+
}): boolean;
|
|
537
|
+
/**
|
|
538
|
+
* What a step recorded under `key`, oldest first, without each entry's header.
|
|
539
|
+
* A history that was compacted holds only the entries the compaction kept, so
|
|
540
|
+
* an empty list means the step may say everything again.
|
|
541
|
+
*/
|
|
542
|
+
export declare function turnContextEntries(messages: readonly Message[], key: string): readonly string[];
|
|
543
|
+
/**
|
|
544
|
+
* The text of the newest user-role message with plain text, skipping recorded
|
|
545
|
+
* context entries: a history that ends in one (a resumed session) must not
|
|
546
|
+
* take the host's own recalled text for the question.
|
|
547
|
+
*/
|
|
548
|
+
export declare function lastPromptText(messages: readonly Message[]): string;
|
|
504
549
|
/** Build the retained user-context message that carries live project policy. */
|
|
505
550
|
export declare function createProjectInstructionMessage(content: string, files: readonly string[]): UserMessage;
|
|
506
551
|
export declare function createAssistantMessage(content: string | null, toolCalls?: ToolCall[], reasoning?: readonly ReasoningBlock[], citations?: readonly Citation[], source?: AssistantMessageSource, textParts?: readonly AssistantTextPart[]): AssistantMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/message/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/message/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,11 @@ export const RUNTIME_CONTEXT_MESSAGE_KINDS = [
|
|
|
36
36
|
'step-context',
|
|
37
37
|
'structured-output',
|
|
38
38
|
'task-completion',
|
|
39
|
+
'turn-context',
|
|
39
40
|
];
|
|
41
|
+
/** The longest key a recorded context entry may carry. */
|
|
42
|
+
export const MAX_TURN_CONTEXT_KEY_LENGTH = 64;
|
|
43
|
+
const TURN_CONTEXT_KEY = /^[a-z][a-z0-9-]*$/;
|
|
40
44
|
/** A bounded source list keeps untrusted persisted metadata cheap to validate. */
|
|
41
45
|
export const MAX_PROJECT_INSTRUCTION_SOURCE_FILES = 256;
|
|
42
46
|
/** Runtime validation for persisted or JavaScript-authored instruction provenance. */
|
|
@@ -78,7 +82,8 @@ export function isRuntimeContextMessageSource(value) {
|
|
|
78
82
|
return (candidate.type === 'runtime-context' &&
|
|
79
83
|
typeof candidate.kind === 'string' &&
|
|
80
84
|
RUNTIME_CONTEXT_MESSAGE_KINDS.includes(candidate.kind) &&
|
|
81
|
-
(candidate.deliveryRef === undefined || isInboundDeliveryRef(candidate.deliveryRef))
|
|
85
|
+
(candidate.deliveryRef === undefined || isInboundDeliveryRef(candidate.deliveryRef)) &&
|
|
86
|
+
(candidate.key === undefined || isTurnContextKey(candidate.key)));
|
|
82
87
|
}
|
|
83
88
|
/** Select explicit final answers, retaining unphased behavior when none is identified. */
|
|
84
89
|
export function selectAssistantText(parts) {
|
|
@@ -109,6 +114,78 @@ export function createRuntimeContextMessage(content, kind) {
|
|
|
109
114
|
kind,
|
|
110
115
|
});
|
|
111
116
|
}
|
|
117
|
+
/** Whether `value` is a name a recorded context entry may be filed under. */
|
|
118
|
+
export function isTurnContextKey(value) {
|
|
119
|
+
return (typeof value === 'string' &&
|
|
120
|
+
value.length <= MAX_TURN_CONTEXT_KEY_LENGTH &&
|
|
121
|
+
TURN_CONTEXT_KEY.test(value));
|
|
122
|
+
}
|
|
123
|
+
function localTime(at) {
|
|
124
|
+
const pad = (n) => String(n).padStart(2, '0');
|
|
125
|
+
return `${at.getFullYear()}-${pad(at.getMonth() + 1)}-${pad(at.getDate())} ${pad(at.getHours())}:${pad(at.getMinutes())}`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Build a recorded context entry: text a step learned for this turn that
|
|
129
|
+
* stays in the conversation, after whatever came before it, so later requests
|
|
130
|
+
* keep beginning with it. The header is written into the content once and the
|
|
131
|
+
* entry is never edited afterwards; a later entry under the same key says what
|
|
132
|
+
* changed. It is not an operator message and carries no authority.
|
|
133
|
+
*
|
|
134
|
+
* The first entry under a key says that a later one adds to or replaces it;
|
|
135
|
+
* with `later` set, for an entry that follows another under the same key, the
|
|
136
|
+
* header leaves that sentence out, since the conversation already holds it.
|
|
137
|
+
*/
|
|
138
|
+
export function createTurnContextEntry(key, text, at = new Date(), options = {}) {
|
|
139
|
+
if (!isTurnContextKey(key))
|
|
140
|
+
throw new TypeError('A recorded context key is lowercase words joined by hyphens.');
|
|
141
|
+
const label = `Recorded context (runtime-generated; not a new user request) - ${key}, as of ${localTime(at)}`;
|
|
142
|
+
return createUserMessage(`${label}${options.later ? ':' : '. A later entry with this key adds to or replaces what it says:'}\n${text}`, undefined, { type: 'runtime-context', kind: 'turn-context', key });
|
|
143
|
+
}
|
|
144
|
+
/** The key a recorded context entry is filed under, or undefined for any other message. */
|
|
145
|
+
export function turnContextKey(message) {
|
|
146
|
+
if (message.role !== 'user')
|
|
147
|
+
return undefined;
|
|
148
|
+
const source = message.source;
|
|
149
|
+
return source?.type === 'runtime-context' && source.kind === 'turn-context'
|
|
150
|
+
? source.key
|
|
151
|
+
: undefined;
|
|
152
|
+
}
|
|
153
|
+
/** Whether `message` is a recorded context entry. */
|
|
154
|
+
export function isTurnContextEntry(message) {
|
|
155
|
+
if (message.role !== 'user')
|
|
156
|
+
return false;
|
|
157
|
+
const source = message.source;
|
|
158
|
+
return source?.type === 'runtime-context' && source.kind === 'turn-context';
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* What a step recorded under `key`, oldest first, without each entry's header.
|
|
162
|
+
* A history that was compacted holds only the entries the compaction kept, so
|
|
163
|
+
* an empty list means the step may say everything again.
|
|
164
|
+
*/
|
|
165
|
+
export function turnContextEntries(messages, key) {
|
|
166
|
+
const bodies = [];
|
|
167
|
+
for (const message of messages) {
|
|
168
|
+
if (turnContextKey(message) !== key || typeof message.content !== 'string')
|
|
169
|
+
continue;
|
|
170
|
+
bodies.push(message.content.slice(message.content.indexOf('\n') + 1));
|
|
171
|
+
}
|
|
172
|
+
return bodies;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* The text of the newest user-role message with plain text, skipping recorded
|
|
176
|
+
* context entries: a history that ends in one (a resumed session) must not
|
|
177
|
+
* take the host's own recalled text for the question.
|
|
178
|
+
*/
|
|
179
|
+
export function lastPromptText(messages) {
|
|
180
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
181
|
+
const message = messages[i];
|
|
182
|
+
if (message?.role === 'user' &&
|
|
183
|
+
typeof message.content === 'string' &&
|
|
184
|
+
!isTurnContextEntry(message))
|
|
185
|
+
return message.content;
|
|
186
|
+
}
|
|
187
|
+
return '';
|
|
188
|
+
}
|
|
112
189
|
/** Build the retained user-context message that carries live project policy. */
|
|
113
190
|
export function createProjectInstructionMessage(content, files) {
|
|
114
191
|
const source = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/message/index.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAWrD,gEAAgE;AAChE,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACpD,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAE,KAAuC,CAAC,MAAM,KAAK,mBAAmB;YACtE,KAAuC,CAAC,MAAM,KAAK,eAAe,CAAC,CACrE,CAAA;AACF,CAAC;AA6GD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CACnC,UAA6B,EACM,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAA;AAqNrE;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC5C,UAAU;IACV,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,eAAe;IACf,kBAAkB;IAClB,UAAU;IACV,oBAAoB;IACpB,cAAc;IACd,aAAa;IACb,UAAU;IACV,aAAa;IACb,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,iBAAiB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/message/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -213,9 +213,33 @@ export interface PrepareStepResult {
|
|
|
213
213
|
* empty string clears it. The next step starts without it.
|
|
214
214
|
*/
|
|
215
215
|
readonly context?: string;
|
|
216
|
+
/**
|
|
217
|
+
* Text to keep in the conversation from this step on, filed under a key.
|
|
218
|
+
*
|
|
219
|
+
* Where `context` is gone after the request, an item here becomes a
|
|
220
|
+
* recorded entry appended after whatever the history ends with, so every
|
|
221
|
+
* later request (of this turn and of the next turns) begins with it and a
|
|
222
|
+
* caching provider keeps reading the same prefix. Entries are never edited
|
|
223
|
+
* or moved; a step that has something new says only that, under the same
|
|
224
|
+
* key, and reads what it said before with `turnContextEntries`. An item
|
|
225
|
+
* whose text is empty, or equal to the last entry under its key, adds
|
|
226
|
+
* nothing. Entries are ordinary history to compaction, which drops them
|
|
227
|
+
* with the messages around them, after which a step sees none and may say
|
|
228
|
+
* everything again.
|
|
229
|
+
*
|
|
230
|
+
* The model reads an entry as recorded context the host generated, not as
|
|
231
|
+
* something the operator said, and a person is never shown one.
|
|
232
|
+
*/
|
|
233
|
+
readonly recordedContext?: readonly RecordedContextItem[];
|
|
216
234
|
readonly temperature?: number;
|
|
217
235
|
readonly maxResponseTokens?: number;
|
|
218
236
|
}
|
|
237
|
+
/** One piece of text a step asks to have recorded, under what it reports. */
|
|
238
|
+
export interface RecordedContextItem {
|
|
239
|
+
/** Lowercase words joined by hyphens (for example `repository`). */
|
|
240
|
+
readonly key: string;
|
|
241
|
+
readonly text: string;
|
|
242
|
+
}
|
|
219
243
|
/**
|
|
220
244
|
* Called before each model call, with everything the turn has produced so
|
|
221
245
|
* far.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-step.d.ts","sourceRoot":"","sources":["../../../src/types/session/prepare-step.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prepare-step.d.ts","sourceRoot":"","sources":["../../../src/types/session/prepare-step.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namzu/sdk",
|
|
3
|
-
"version": "56.
|
|
3
|
+
"version": "56.2.0",
|
|
4
4
|
"description": "Open-source AI kernel for TypeScript: runs an agent the way an operating system runs a process, with an identity and a budget, scheduled tool calls and checkpointed turns.",
|
|
5
5
|
"license": "FSL-1.1-MIT",
|
|
6
6
|
"engines": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { CHARS_PER_TOKEN } from '../constants/limits.js'
|
|
15
|
-
import type
|
|
15
|
+
import { type Message, isTurnContextEntry } from '../types/message/index.js'
|
|
16
16
|
import type { LLMToolSchema } from '../types/tool/index.js'
|
|
17
17
|
import { TRIGGER_BUFFER_TOKENS, TRIGGER_OUTPUT_RESERVE_CAP_TOKENS } from './context-window.js'
|
|
18
18
|
import { estimateMessageTokens, estimateTextTokens } from './token-estimate.js'
|
|
@@ -166,6 +166,9 @@ function breakdownMessages(messages: readonly Message[]): ContextMessageBreakdow
|
|
|
166
166
|
const name = nameOfCall.get(message.toolCallId) ?? 'unknown'
|
|
167
167
|
toolResultsByType[name] = (toolResultsByType[name] ?? 0) + tokensOfContent(message)
|
|
168
168
|
} else if (message.role === 'user') {
|
|
169
|
+
// Recorded context is what the host recalled for the model, not
|
|
170
|
+
// something the operator said, so it is counted under memory.
|
|
171
|
+
if (isTurnContextEntry(message)) continue
|
|
169
172
|
userTokens += tokensOfContent(message)
|
|
170
173
|
}
|
|
171
174
|
}
|
|
@@ -175,13 +178,15 @@ function breakdownMessages(messages: readonly Message[]): ContextMessageBreakdow
|
|
|
175
178
|
/** Split a window into the parts that fill it. */
|
|
176
179
|
export function analyzeContextUsage(input: ContextUsageInput): ContextBreakdown {
|
|
177
180
|
const windowTokens = Math.max(0, Math.round(input.windowTokens))
|
|
181
|
+
const recorded = (input.messages ?? []).filter(isTurnContextEntry)
|
|
182
|
+
const recordedTokens = recorded.reduce((sum, message) => sum + tokensOfContent(message), 0)
|
|
178
183
|
const fixed: Record<(typeof CONTEXT_CATEGORY_ORDER)[number], number> = {
|
|
179
184
|
'system-prompt': nonNegative(input.systemPromptTokens),
|
|
180
185
|
'system-tools': nonNegative(input.systemToolTokens),
|
|
181
186
|
'mcp-tools': nonNegative(input.mcpToolTokens),
|
|
182
187
|
'mcp-instructions': nonNegative(input.mcpInstructionTokens),
|
|
183
188
|
agents: nonNegative(input.agentTokens),
|
|
184
|
-
memory: nonNegative(input.memoryTokens),
|
|
189
|
+
memory: nonNegative(input.memoryTokens) + recordedTokens,
|
|
185
190
|
skills: nonNegative(input.skillTokens),
|
|
186
191
|
messages: 0,
|
|
187
192
|
}
|
|
@@ -195,7 +200,10 @@ export function analyzeContextUsage(input: ContextUsageInput): ContextBreakdown
|
|
|
195
200
|
const rawMessages =
|
|
196
201
|
measured > 0
|
|
197
202
|
? Math.max(0, measured - fixedTotal)
|
|
198
|
-
: messages.reduce(
|
|
203
|
+
: messages.reduce(
|
|
204
|
+
(sum, message) => (isTurnContextEntry(message) ? sum : sum + tokensOfContent(message)),
|
|
205
|
+
0,
|
|
206
|
+
)
|
|
199
207
|
fixed.messages = Math.min(rawMessages, Math.max(0, windowTokens - fixedTotal - bufferTokens))
|
|
200
208
|
|
|
201
209
|
const totalTokens = measured > 0 ? Math.max(measured, fixedTotal) : fixedTotal + rawMessages
|
|
@@ -55,7 +55,9 @@ function isStandingContext(message: Message): boolean {
|
|
|
55
55
|
return (
|
|
56
56
|
source?.type === 'project-instructions' ||
|
|
57
57
|
(source?.type === 'runtime-context' &&
|
|
58
|
-
(source.kind === 'step-context' ||
|
|
58
|
+
(source.kind === 'step-context' ||
|
|
59
|
+
source.kind === 'reminder' ||
|
|
60
|
+
source.kind === 'turn-context'))
|
|
59
61
|
)
|
|
60
62
|
}
|
|
61
63
|
|
package/src/public-runtime.ts
CHANGED
|
@@ -1227,6 +1227,13 @@ export {
|
|
|
1227
1227
|
selectAssistantText,
|
|
1228
1228
|
createProjectInstructionMessage,
|
|
1229
1229
|
createRuntimeContextMessage,
|
|
1230
|
+
createTurnContextEntry,
|
|
1231
|
+
isTurnContextEntry,
|
|
1232
|
+
lastPromptText,
|
|
1233
|
+
turnContextEntries,
|
|
1234
|
+
isTurnContextKey,
|
|
1235
|
+
turnContextKey,
|
|
1236
|
+
MAX_TURN_CONTEXT_KEY_LENGTH,
|
|
1230
1237
|
createSystemMessage,
|
|
1231
1238
|
createToolMessage,
|
|
1232
1239
|
hasNonTextBlocks,
|
|
@@ -72,7 +72,11 @@ import {
|
|
|
72
72
|
runPreToolHook,
|
|
73
73
|
unknownToolMessage,
|
|
74
74
|
} from './executor/tool-call-admission.js'
|
|
75
|
-
import {
|
|
75
|
+
import {
|
|
76
|
+
type FileEvidence,
|
|
77
|
+
describeVisibleFileEvidence,
|
|
78
|
+
visibleFileEvidence,
|
|
79
|
+
} from './file-evidence-context.js'
|
|
76
80
|
import { seedObservationLedger } from './file-evidence-seed.js'
|
|
77
81
|
import { DEFAULT_TOOL_RESULT_GUARDRAILS } from './guardrail-presets.js'
|
|
78
82
|
import { declaredWriteEscalation, shellEscalations } from './path-escalation.js'
|
|
@@ -845,7 +849,21 @@ export class ToolExecutor {
|
|
|
845
849
|
})
|
|
846
850
|
}
|
|
847
851
|
|
|
848
|
-
/**
|
|
852
|
+
/**
|
|
853
|
+
* The entries that hold now, from the same ledger used by mutation
|
|
854
|
+
* admission. No filesystem I/O. The loop records the difference from what
|
|
855
|
+
* the conversation already says.
|
|
856
|
+
*/
|
|
857
|
+
fileEvidenceEntries(messages: readonly Message[]): FileEvidence[] {
|
|
858
|
+
return visibleFileEvidence(
|
|
859
|
+
messages,
|
|
860
|
+
this.fileReadTracker,
|
|
861
|
+
this.config.workingDirectory,
|
|
862
|
+
this.sandboxed,
|
|
863
|
+
)
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
/** The whole of the evidence as one text, from the same ledger. No filesystem I/O. */
|
|
849
867
|
describeFileEvidence(messages: readonly Message[]): string | undefined {
|
|
850
868
|
return describeVisibleFileEvidence(
|
|
851
869
|
messages,
|
|
@@ -29,14 +29,13 @@ import {
|
|
|
29
29
|
*/
|
|
30
30
|
const MAX_RECEIPT_UNITS = 32_000
|
|
31
31
|
|
|
32
|
-
/** The
|
|
33
|
-
export const FILE_EVIDENCE_HEADING =
|
|
34
|
-
'Visible file evidence (as of this step; a later block with this heading replaces this one)'
|
|
32
|
+
/** The words every file-evidence entry opens with. */
|
|
33
|
+
export const FILE_EVIDENCE_HEADING = 'Visible file evidence'
|
|
35
34
|
|
|
36
|
-
/**
|
|
37
|
-
|
|
35
|
+
/** Starts the line of an entry that names the paths whose earlier entries no longer hold. */
|
|
36
|
+
const NO_LONGER_HOLDS = 'No longer holds: '
|
|
38
37
|
|
|
39
|
-
interface FileEvidence {
|
|
38
|
+
export interface FileEvidence {
|
|
40
39
|
readonly path: string
|
|
41
40
|
/** Absent on the write-rooted entries; `'read'` on a body that is a receipt. */
|
|
42
41
|
readonly kind?: 'read'
|
|
@@ -46,14 +45,14 @@ interface FileEvidence {
|
|
|
46
45
|
}
|
|
47
46
|
|
|
48
47
|
/** Join visible call bodies, successful receipts and this executor's observation ledger. */
|
|
49
|
-
export function
|
|
48
|
+
export function visibleFileEvidence(
|
|
50
49
|
messages: readonly Message[],
|
|
51
50
|
tracker: FileReadTracker,
|
|
52
51
|
workingDirectory: string,
|
|
53
52
|
sandboxed: boolean,
|
|
54
|
-
):
|
|
53
|
+
): FileEvidence[] {
|
|
55
54
|
// Execution-owned witnesses survive transparent wrappers; a name alone proves nothing.
|
|
56
|
-
if (!tracker.writeCallId || !tracker.fingerprint) return
|
|
55
|
+
if (!tracker.writeCallId || !tracker.fingerprint) return []
|
|
57
56
|
// Lexical, as this projection has always looked entries up: a spelling that
|
|
58
57
|
// does not resolve to the tool's canonical key finds nothing and the path is
|
|
59
58
|
// simply not admitted. Writing the ledger is the side that has to key the
|
|
@@ -85,8 +84,77 @@ export function describeVisibleFileEvidence(
|
|
|
85
84
|
// Malformed retained inputs or a custom tracker cannot establish evidence.
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
return [...files.values()]
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const FILE_EVIDENCE_GUIDANCE = `each entry names a file (path), the successful write call that holds its complete current body (bodyInCall, that call's id), the edit calls to apply to that body in order (editsInCalls, when present), and a short code for the file as this runtime last observed it (observedFingerprint, which changes when the content does). An entry marked kind:"read" instead names a successful read call whose own receipt shows the whole file, every line behind its own N<tab> prefix; that receipt is the body, and such an entry never carries edit calls. The runtime did that reconstruction and checked it against its own file observation. Reuse the body for a targeted edit; a read only to recall it is unnecessary. This is not a fresh disk check, and after a resume the observation behind an entry may have been rebuilt from this conversation's earlier calls rather than made while this process ran. The built-in edit and write tools still compare the disk body when they run and refuse on drift; on refusal, inspect the current file and replan. Missing entries establish nothing. An entry for a path replaces every earlier entry for that path, and a path listed under "No longer holds" has no entry any more.`
|
|
91
|
+
|
|
92
|
+
/** The whole of what holds now: every entry, with the guidance for reading them. */
|
|
93
|
+
export function describeVisibleFileEvidence(
|
|
94
|
+
messages: readonly Message[],
|
|
95
|
+
tracker: FileReadTracker,
|
|
96
|
+
workingDirectory: string,
|
|
97
|
+
sandboxed: boolean,
|
|
98
|
+
): string | undefined {
|
|
99
|
+
const entries = visibleFileEvidence(messages, tracker, workingDirectory, sandboxed)
|
|
100
|
+
if (entries.length === 0) return
|
|
101
|
+
return `${FILE_EVIDENCE_HEADING}: ${FILE_EVIDENCE_GUIDANCE}\n${JSON.stringify(entries)}`
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* The entries an earlier record still holds, by path, as the JSON each was
|
|
106
|
+
* written with. Read from the record's text, in order, so a later entry for a
|
|
107
|
+
* path replaces an earlier one and a retracted path is gone.
|
|
108
|
+
*/
|
|
109
|
+
function heldFileEvidence(recorded: readonly string[]): Map<string, string> {
|
|
110
|
+
const held = new Map<string, string>()
|
|
111
|
+
for (const text of recorded) {
|
|
112
|
+
for (const line of text.split('\n')) {
|
|
113
|
+
try {
|
|
114
|
+
if (line.startsWith(NO_LONGER_HOLDS)) {
|
|
115
|
+
const paths: unknown = JSON.parse(line.slice(NO_LONGER_HOLDS.length))
|
|
116
|
+
if (Array.isArray(paths))
|
|
117
|
+
for (const path of paths) if (typeof path === 'string') held.delete(path)
|
|
118
|
+
} else if (line.startsWith('[')) {
|
|
119
|
+
const entries: unknown = JSON.parse(line)
|
|
120
|
+
if (Array.isArray(entries))
|
|
121
|
+
for (const entry of entries)
|
|
122
|
+
if (typeof entry?.path === 'string') held.set(entry.path, JSON.stringify(entry))
|
|
123
|
+
}
|
|
124
|
+
} catch {
|
|
125
|
+
// a line of the record that is not an entry list
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return held
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* What to record now about the files, given what holds (`current`) and what
|
|
134
|
+
* the entries already in the conversation say (`recorded`, oldest first):
|
|
135
|
+
* only the entries that are new or changed, and the paths whose earlier entry
|
|
136
|
+
* no longer holds. An earlier entry is never edited; this says what replaces
|
|
137
|
+
* it. The first record of a conversation carries the guidance for reading
|
|
138
|
+
* entries, later ones do not repeat it. Nothing to say returns undefined.
|
|
139
|
+
*/
|
|
140
|
+
export function recordFileEvidence(
|
|
141
|
+
current: readonly FileEvidence[],
|
|
142
|
+
recorded: readonly string[],
|
|
143
|
+
): string | undefined {
|
|
144
|
+
const held = heldFileEvidence(recorded)
|
|
145
|
+
const changed = current.filter((entry) => held.get(entry.path) !== JSON.stringify(entry))
|
|
146
|
+
const now = new Set(current.map((entry) => entry.path))
|
|
147
|
+
const gone = [...held.keys()].filter((path) => !now.has(path))
|
|
148
|
+
if (changed.length === 0 && gone.length === 0) return
|
|
149
|
+
const lead =
|
|
150
|
+
recorded.length === 0
|
|
151
|
+
? `${FILE_EVIDENCE_HEADING}: ${FILE_EVIDENCE_GUIDANCE}`
|
|
152
|
+
: `${FILE_EVIDENCE_HEADING}, changed since the last entry. An entry for a path replaces the earlier entries for that path.`
|
|
153
|
+
return [
|
|
154
|
+
lead,
|
|
155
|
+
...(gone.length > 0 ? [`${NO_LONGER_HOLDS}${JSON.stringify(gone)}`] : []),
|
|
156
|
+
...(changed.length > 0 ? [JSON.stringify(changed)] : []),
|
|
157
|
+
].join('\n')
|
|
90
158
|
}
|
|
91
159
|
|
|
92
160
|
/** A full body that arrived whole in one call and is still the file's body. */
|
|
@@ -64,6 +64,7 @@ import {
|
|
|
64
64
|
type AssistantMessage,
|
|
65
65
|
type Message,
|
|
66
66
|
createSystemMessage,
|
|
67
|
+
lastPromptText,
|
|
67
68
|
} from '../../types/message/index.js'
|
|
68
69
|
import type { AgentPersona } from '../../types/persona/index.js'
|
|
69
70
|
import type { LLMProvider } from '../../types/provider/index.js'
|
|
@@ -2028,7 +2029,7 @@ export async function* query(params: QueryParams): AsyncGenerator<SessionEvent,
|
|
|
2028
2029
|
{
|
|
2029
2030
|
turnId: ctx.turnId,
|
|
2030
2031
|
sessionId: params.sessionId,
|
|
2031
|
-
prompt:
|
|
2032
|
+
prompt: lastPromptText(initialMessages),
|
|
2032
2033
|
signal: ctx.abortController.signal,
|
|
2033
2034
|
},
|
|
2034
2035
|
eventTranslator.emitEvent,
|
|
@@ -2893,15 +2894,6 @@ async function settleAbandonedTurn(
|
|
|
2893
2894
|
}
|
|
2894
2895
|
}
|
|
2895
2896
|
|
|
2896
|
-
/** The text of the newest user turn, which is what a prompt hook is asked about. */
|
|
2897
|
-
function lastUserPrompt(messages: readonly Message[]): string {
|
|
2898
|
-
for (let i = messages.length - 1; i >= 0; i--) {
|
|
2899
|
-
const m = messages[i]
|
|
2900
|
-
if (m?.role === 'user' && typeof m.content === 'string') return m.content
|
|
2901
|
-
}
|
|
2902
|
-
return ''
|
|
2903
|
-
}
|
|
2904
|
-
|
|
2905
2897
|
type DrainQueryParams = Omit<QueryParams, 'resumeHandler'> & {
|
|
2906
2898
|
resumeHandler?: ResumeHandler
|
|
2907
2899
|
}
|