@myagentroam/agent 0.10.59 → 0.10.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-core/runtime/compaction/history.d.ts +1 -1
- package/dist/agent-core/runtime/compaction/retained-context.d.ts +1 -1
- package/dist/agent-core/runtime/compaction/retained-context.js +1 -1
- package/dist/agent-core/runtime/compaction/smart.d.ts +1 -1
- package/dist/agent-core/runtime/compaction/smart.js +1 -1
- package/dist/agent-core/runtime/context/gc-runtime.d.ts +1 -1
- package/dist/agent-core/runtime/context/gc-runtime.js +20 -14
- package/dist/agent-core/runtime/context/gc.d.ts +1 -1
- package/dist/agent-core/runtime/context/gc.js +4 -10
- package/dist/agent-core/runtime/context/projection.d.ts +1 -1
- package/dist/agent-core/runtime/context/projection.js +3 -5
- package/dist/agent-core/runtime/context/restore.d.ts +4 -4
- package/dist/agent-core/runtime/context/restore.js +1 -1
- package/dist/agent-core/runtime/context/usage.d.ts +2 -2
- package/dist/agent-core/runtime/context/usage.js +1 -1
- package/dist/agent-core/runtime/context/world-state.d.ts +2 -2
- package/dist/agent-core/runtime/context/world-state.js +1 -1
- package/dist/agent-core/sdk/agent.js +2 -2
- package/dist/agent-core/sdk/extension-agents.js +5 -1
- package/dist/agent-core/sdk/native-steer.d.ts +1 -1
- package/dist/agent-core/sdk/session.d.ts +19 -13
- package/dist/agent-core/sdk/session.js +35 -40
- package/dist/agent-core/sdk/subagent-backend.d.ts +1 -1
- package/dist/agent-core/sdk/subagent-backend.js +20 -17
- package/dist/agent-core/session/catalog.js +1 -1
- package/dist/agent-core/session/context-gc-checkpoint.d.ts +4 -8
- package/dist/agent-core/session/context-gc-checkpoint.js +82 -137
- package/dist/agent-core/session/context-gc-observations.d.ts +1 -1
- package/dist/agent-core/session/context-gc-replacements.d.ts +4 -7
- package/dist/agent-core/session/context-gc-replacements.js +25 -59
- package/dist/agent-core/session/context-gc-subagent.d.ts +0 -3
- package/dist/agent-core/session/context-gc-subagent.js +2 -16
- package/dist/agent-core/session/deferred-input.d.ts +1 -1
- package/dist/agent-core/session/store/current-state.d.ts +17 -0
- package/dist/agent-core/session/store/current-state.js +53 -0
- package/dist/agent-core/session/store/directory-index.d.ts +18 -0
- package/dist/agent-core/session/store/directory-index.js +169 -0
- package/dist/agent-core/session/store/execution-state.d.ts +18 -0
- package/dist/agent-core/session/store/execution-state.js +187 -0
- package/dist/agent-core/session/store/history.d.ts +25 -0
- package/dist/agent-core/session/store/history.js +157 -0
- package/dist/agent-core/session/store/images.d.ts +21 -0
- package/dist/agent-core/session/store/images.js +248 -0
- package/dist/agent-core/session/store/index.d.ts +4 -0
- package/dist/agent-core/session/store/index.js +2 -0
- package/dist/agent-core/session/{jsonl-store.d.ts → store/jsonl-store.d.ts} +14 -94
- package/dist/agent-core/session/{jsonl-store.js → store/jsonl-store.js} +323 -1269
- package/dist/agent-core/session/store/records.d.ts +23 -0
- package/dist/agent-core/session/store/records.js +249 -0
- package/dist/agent-core/session/store/types.d.ts +84 -0
- package/dist/agent-core/session/store/types.js +1 -0
- package/dist/agent-core/session/tool-result-resources.d.ts +1 -1
- package/dist/agent-core/subagent/scheduler.js +1 -1
- package/dist/agent-core/subagent/session-controller.d.ts +5 -2
- package/dist/agent-core/subagent/session-controller.js +99 -15
- package/dist/agent-core/tools/code-mode/state.d.ts +1 -1
- package/dist/agent-core/tools/code-mode/state.js +2 -2
- package/package.json +1 -1
|
@@ -45,7 +45,7 @@ import { AGENT_EXECUTION_POLICY } from '../runtime/execution-policy.js';
|
|
|
45
45
|
import { loadAgentInstructions, renderAgentInstructions } from '../runtime/context/instructions.js';
|
|
46
46
|
import { normalizeMessagesForModel } from '../runtime/context/normalize.js';
|
|
47
47
|
import { latestSmartContextTokens, projectSmartCompactionMessage, requestSmartCompaction } from '../runtime/compaction/smart.js';
|
|
48
|
-
import { compactSummaryFromCheckpoint, inputMetadataFromRecord } from '../session/
|
|
48
|
+
import { compactSummaryFromCheckpoint, inputMetadataFromRecord } from '../session/store/index.js';
|
|
49
49
|
import { SubagentSessionController } from '../subagent/session-controller.js';
|
|
50
50
|
import { agentStartToolDefinitionWithModels } from '../tools/agent/agent-start.js';
|
|
51
51
|
import { allowsDirectTool, allowsToolCaller, toolCallers } from '../tools/callers.js';
|
|
@@ -123,7 +123,6 @@ export function createSessionOpener(services) {
|
|
|
123
123
|
text: sessionSource.type === 'subagent' ? childSubagentInstruction || null : null
|
|
124
124
|
}
|
|
125
125
|
]);
|
|
126
|
-
let promptDefaults;
|
|
127
126
|
const sessionAdapter = (modelId, configuredModels) => {
|
|
128
127
|
let selected = sessionRuntime.adapters.get(modelId);
|
|
129
128
|
if (selected === undefined) {
|
|
@@ -187,7 +186,7 @@ export function createSessionOpener(services) {
|
|
|
187
186
|
};
|
|
188
187
|
recordSessionInputCommit(entry, result);
|
|
189
188
|
if (message)
|
|
190
|
-
sessionRuntime.appendedMessages?.append(record.recordId, message);
|
|
189
|
+
sessionRuntime.execution?.appendedMessages?.append(record.recordId, message);
|
|
191
190
|
return result;
|
|
192
191
|
});
|
|
193
192
|
}
|
|
@@ -208,7 +207,6 @@ export function createSessionOpener(services) {
|
|
|
208
207
|
const messageSources = new WeakMap();
|
|
209
208
|
let liveModelMessages = [];
|
|
210
209
|
const compactRequests = new CompactRequests(executionId, () => compactCoordinator.assertNotReentrant());
|
|
211
|
-
sessionRuntime.compactRequests = compactRequests;
|
|
212
210
|
const permissionPolicy = new ExecutionToolPermissions(mode === 'compact' ? 'full-access' : resolvePermissionMode(input.permissionMode), { sessionId, executionId }, host.requestToolApproval
|
|
213
211
|
? {
|
|
214
212
|
request: (request, signal) => host.requestToolApproval(request, signal),
|
|
@@ -225,13 +223,15 @@ export function createSessionOpener(services) {
|
|
|
225
223
|
...currentLocalTimeContext()
|
|
226
224
|
};
|
|
227
225
|
const executionSystemInstruction = settings.systemInstruction;
|
|
228
|
-
|
|
226
|
+
const executionContext = {
|
|
229
227
|
executionId,
|
|
230
228
|
modelId: input.modelId ?? executionDefaultModelId,
|
|
231
229
|
mode: mode === 'compact' ? 'run' : mode,
|
|
232
230
|
models: executionModels,
|
|
233
|
-
instruction: executionSystemInstruction
|
|
231
|
+
instruction: executionSystemInstruction,
|
|
232
|
+
compactRequests
|
|
234
233
|
};
|
|
234
|
+
sessionRuntime.execution = executionContext;
|
|
235
235
|
const manualCompactionId = mode === 'compact' ? randomUUID() : undefined;
|
|
236
236
|
active.set(`${sessionId}:${executionId}`, controller);
|
|
237
237
|
const inputs = sessionInputs();
|
|
@@ -369,8 +369,7 @@ export function createSessionOpener(services) {
|
|
|
369
369
|
await inputs.idle();
|
|
370
370
|
let immediateTarget;
|
|
371
371
|
const pendingAppends = [];
|
|
372
|
-
|
|
373
|
-
executionId,
|
|
372
|
+
executionContext.appendedMessages = {
|
|
374
373
|
append(recordId, message) {
|
|
375
374
|
pendingAppends.push({
|
|
376
375
|
recordId,
|
|
@@ -755,7 +754,7 @@ export function createSessionOpener(services) {
|
|
|
755
754
|
const coreExtensions = await services.extensions.prepare(sessionId, controller.signal, sourceBindings, sessionSource.type === 'user' &&
|
|
756
755
|
(mode === 'run' || mode === 'plan') &&
|
|
757
756
|
!internal.automaticInput);
|
|
758
|
-
|
|
757
|
+
executionContext.toolSources = sources;
|
|
759
758
|
const operation = (run) => services.extensions.operations.run({
|
|
760
759
|
sessionId,
|
|
761
760
|
sessionEpoch: coreExtensions.epoch,
|
|
@@ -863,6 +862,7 @@ export function createSessionOpener(services) {
|
|
|
863
862
|
executionTools = mcpRegistry.project(baseTools());
|
|
864
863
|
};
|
|
865
864
|
const loadRetainedSessionResources = async () => {
|
|
865
|
+
await subagents?.prepareSessionResources(controller.signal);
|
|
866
866
|
const hostResources = (await host.listSessionResources?.(sessionId)) ?? {
|
|
867
867
|
processes: []
|
|
868
868
|
};
|
|
@@ -1128,8 +1128,7 @@ export function createSessionOpener(services) {
|
|
|
1128
1128
|
sources.bind(captureRoundToolScope().toolScope);
|
|
1129
1129
|
let preparingRequestMessages;
|
|
1130
1130
|
let preparingRequestBaseLength = 0;
|
|
1131
|
-
|
|
1132
|
-
executionId,
|
|
1131
|
+
executionContext.requestMessages = {
|
|
1133
1132
|
read: () => preparingRequestMessages !== undefined
|
|
1134
1133
|
? normalizeMessagesForModel([...preparingRequestMessages, ...messages.slice(preparingRequestBaseLength)], { supportsImages: selectedModel.inputCapabilities.includes('IMAGE') })
|
|
1135
1134
|
: projectSessionRequestMessages(messages.map((message, index) => index === currentExecutionUserIndex && modelInputImages?.length
|
|
@@ -1192,7 +1191,7 @@ export function createSessionOpener(services) {
|
|
|
1192
1191
|
return { executionId, status: 'completed', finalAnswer: '', inputHandled: true };
|
|
1193
1192
|
}
|
|
1194
1193
|
acceptsSteer = true;
|
|
1195
|
-
|
|
1194
|
+
executionContext.steer = createNativeSteer({
|
|
1196
1195
|
executionId,
|
|
1197
1196
|
inputs,
|
|
1198
1197
|
signal: controller.signal,
|
|
@@ -1885,12 +1884,12 @@ export function createSessionOpener(services) {
|
|
|
1885
1884
|
finalAnswer = executionLoop?.finalAnswer ?? finalAnswer;
|
|
1886
1885
|
acceptsMailbox = false;
|
|
1887
1886
|
acceptsSteer = false;
|
|
1888
|
-
delete
|
|
1887
|
+
delete executionContext.steer;
|
|
1889
1888
|
await sessionRuntime.recordProjection?.catch(() => undefined);
|
|
1890
1889
|
await compactCoordinator.close(error);
|
|
1891
1890
|
compactRequests.close(new MarAgentError('MAR_AGENT_CANCELLED', 'Execution ended.'));
|
|
1892
|
-
if (
|
|
1893
|
-
delete
|
|
1891
|
+
if (executionContext.compactRequests === compactRequests)
|
|
1892
|
+
delete executionContext.compactRequests;
|
|
1894
1893
|
if (controller.signal.aborted) {
|
|
1895
1894
|
subagents?.endParentExecution(executionId);
|
|
1896
1895
|
await emit({ type: 'execution.cancelled' });
|
|
@@ -1912,19 +1911,16 @@ export function createSessionOpener(services) {
|
|
|
1912
1911
|
};
|
|
1913
1912
|
}
|
|
1914
1913
|
finally {
|
|
1915
|
-
|
|
1916
|
-
delete sessionRuntime.requestMessages;
|
|
1914
|
+
delete executionContext.requestMessages;
|
|
1917
1915
|
compactRequests.close(new MarAgentError('MAR_AGENT_CANCELLED', 'Execution ended.'));
|
|
1918
|
-
if (
|
|
1919
|
-
delete
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
if (promptDefaults?.executionId === executionId)
|
|
1923
|
-
promptDefaults = undefined;
|
|
1916
|
+
if (executionContext.compactRequests === compactRequests)
|
|
1917
|
+
delete executionContext.compactRequests;
|
|
1918
|
+
delete executionContext.appendedMessages;
|
|
1919
|
+
delete executionContext.steer;
|
|
1924
1920
|
acceptsMailbox = false;
|
|
1925
1921
|
executionToolSources?.close();
|
|
1926
|
-
if (
|
|
1927
|
-
delete
|
|
1922
|
+
if (executionContext.toolSources === executionToolSources)
|
|
1923
|
+
delete executionContext.toolSources;
|
|
1928
1924
|
internal.signal?.removeEventListener('abort', abortSource);
|
|
1929
1925
|
await compactCoordinator.close(controller.signal.reason ?? new MarAgentError('MAR_AGENT_CANCELLED', 'Execution ended.'));
|
|
1930
1926
|
await selectedTurn?.close().catch(() => undefined);
|
|
@@ -1940,6 +1936,8 @@ export function createSessionOpener(services) {
|
|
|
1940
1936
|
}
|
|
1941
1937
|
subagents?.endParentExecution(executionId);
|
|
1942
1938
|
await releaseSession?.();
|
|
1939
|
+
if (sessionRuntime.execution === executionContext)
|
|
1940
|
+
delete sessionRuntime.execution;
|
|
1943
1941
|
active.delete(`${sessionId}:${executionId}`);
|
|
1944
1942
|
sessionRuntime.sessionBackend?.kick();
|
|
1945
1943
|
queue.close();
|
|
@@ -1974,20 +1972,15 @@ export function createSessionOpener(services) {
|
|
|
1974
1972
|
sessionRuntime.sessionBackend ??= createExtensionSessionBackend({
|
|
1975
1973
|
describe: async (call) => {
|
|
1976
1974
|
call.signal.throwIfAborted();
|
|
1975
|
+
const defaults = sessionRuntime.execution;
|
|
1976
|
+
const state = defaults ?? services.modelState();
|
|
1977
|
+
const modelId = defaults?.modelId ?? services.modelState().defaultModelId;
|
|
1977
1978
|
const current = await store.getSession(sessionId);
|
|
1978
|
-
const
|
|
1979
|
+
const userTurns = await store.userTurnCount(sessionId);
|
|
1979
1980
|
call.signal.throwIfAborted();
|
|
1980
|
-
const state = promptDefaults ?? services.modelState();
|
|
1981
|
-
const modelId = promptDefaults?.modelId ?? services.modelState().defaultModelId;
|
|
1982
1981
|
const model = state.models.get(modelId);
|
|
1983
1982
|
if (!model)
|
|
1984
1983
|
throw new MarAgentError('MAR_AGENT_MODEL_DISABLED', 'Selected model is unavailable.');
|
|
1985
|
-
const userTurns = records.filter((record) => {
|
|
1986
|
-
if (record.type !== 'turn.user')
|
|
1987
|
-
return false;
|
|
1988
|
-
const payload = record.payload;
|
|
1989
|
-
return payload.inputSource === undefined;
|
|
1990
|
-
}).length;
|
|
1991
1984
|
return {
|
|
1992
1985
|
sessionId,
|
|
1993
1986
|
...(logicalWorkspace ? { cwd: logicalWorkspace, root: logicalWorkspace } : {}),
|
|
@@ -2000,9 +1993,10 @@ export function createSessionOpener(services) {
|
|
|
2000
1993
|
},
|
|
2001
1994
|
composePrompt: async (facts, call) => {
|
|
2002
1995
|
call.signal.throwIfAborted();
|
|
2003
|
-
const defaults =
|
|
1996
|
+
const defaults = sessionRuntime.execution;
|
|
2004
1997
|
const state = defaults ?? services.modelState();
|
|
2005
1998
|
const modelId = facts.modelId ?? defaults?.modelId ?? services.modelState().defaultModelId;
|
|
1999
|
+
const instruction = defaults ? defaults.instruction : settings.systemInstruction;
|
|
2006
2000
|
const model = state.models.get(modelId);
|
|
2007
2001
|
if (!model)
|
|
2008
2002
|
throw new MarAgentError('MAR_AGENT_MODEL_DISABLED', 'Selected model is unavailable.');
|
|
@@ -2047,7 +2041,7 @@ export function createSessionOpener(services) {
|
|
|
2047
2041
|
});
|
|
2048
2042
|
call.signal.throwIfAborted();
|
|
2049
2043
|
return {
|
|
2050
|
-
sections: buildSessionPromptSections(tools, mode, model,
|
|
2044
|
+
sections: buildSessionPromptSections(tools, mode, model, instruction, instructions?.skillCatalog),
|
|
2051
2045
|
facts: { modelId, mode, tools: tools.map((tool) => tool.name) }
|
|
2052
2046
|
};
|
|
2053
2047
|
},
|
|
@@ -2075,8 +2069,9 @@ export function createSessionOpener(services) {
|
|
|
2075
2069
|
}
|
|
2076
2070
|
call.signal.throwIfAborted();
|
|
2077
2071
|
const targetRuntime = sessionRuntimes.get(target);
|
|
2078
|
-
|
|
2079
|
-
|
|
2072
|
+
const requestMessages = targetRuntime?.execution?.requestMessages;
|
|
2073
|
+
if (selection.view === 'request' && requestMessages)
|
|
2074
|
+
return sessionMessagesPage(requestMessages.read(), selection);
|
|
2080
2075
|
const modelState = services.modelState();
|
|
2081
2076
|
const requestModel = selection.view === 'request'
|
|
2082
2077
|
? modelState.models.get(targetModelId ?? modelState.defaultModelId)
|
|
@@ -2215,8 +2210,8 @@ export function createSessionOpener(services) {
|
|
|
2215
2210
|
id: sessionId,
|
|
2216
2211
|
run: (input) => execution('run', input),
|
|
2217
2212
|
plan: (input) => execution('plan', input),
|
|
2218
|
-
steer: (input) => sessionRuntime.steer?.(input) ?? Promise.resolve({ status: 'notAccepted' }),
|
|
2219
|
-
compact: (input = {}) => sessionRuntime.compactRequests?.request(input) ??
|
|
2213
|
+
steer: (input) => sessionRuntime.execution?.steer?.(input) ?? Promise.resolve({ status: 'notAccepted' }),
|
|
2214
|
+
compact: (input = {}) => sessionRuntime.execution?.compactRequests?.request(input) ??
|
|
2220
2215
|
execution('compact', {
|
|
2221
2216
|
prompt: input.prompt ?? DEFAULT_COMPACTION_FOCUS,
|
|
2222
2217
|
...input
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { JsonlSessionStore } from '../session/
|
|
1
|
+
import type { JsonlSessionStore } from '../session/store/index.js';
|
|
2
2
|
import type { SubagentSessionControllerBackend } from '../subagent/session-controller.js';
|
|
3
3
|
export declare function createSubagentBackend(store: JsonlSessionStore, workspace: string): SubagentSessionControllerBackend;
|
|
@@ -14,33 +14,36 @@ export function createSubagentBackend(store, workspace) {
|
|
|
14
14
|
},
|
|
15
15
|
listChildren: async (parentSessionId) => {
|
|
16
16
|
const sessions = await store.listSubagentChildren(parentSessionId);
|
|
17
|
-
return
|
|
17
|
+
return sessions.map((session) => ({
|
|
18
18
|
id: session.id,
|
|
19
19
|
createdAt: session.createdAt,
|
|
20
20
|
lastActivityAt: session.lastActivityAt,
|
|
21
|
-
source: session.source
|
|
22
|
-
|
|
23
|
-
})));
|
|
21
|
+
source: session.source
|
|
22
|
+
}));
|
|
24
23
|
},
|
|
25
24
|
loadChild: async (parentSessionId, childSessionId) => {
|
|
26
|
-
let session;
|
|
27
25
|
try {
|
|
28
|
-
session = await store.getSession(childSessionId);
|
|
26
|
+
const session = await store.getSession(childSessionId);
|
|
27
|
+
if (session.source.type !== 'subagent' ||
|
|
28
|
+
session.source.parentSessionId !== parentSessionId)
|
|
29
|
+
return undefined;
|
|
30
|
+
return {
|
|
31
|
+
id: session.id,
|
|
32
|
+
createdAt: session.createdAt,
|
|
33
|
+
lastActivityAt: session.lastActivityAt,
|
|
34
|
+
source: session.source,
|
|
35
|
+
records: await store.read(session.id)
|
|
36
|
+
};
|
|
29
37
|
}
|
|
30
38
|
catch (error) {
|
|
31
|
-
if (error instanceof MarAgentError && error.code === 'MAR_AGENT_SESSION_NOT_FOUND')
|
|
32
|
-
|
|
39
|
+
if (error instanceof MarAgentError && error.code === 'MAR_AGENT_SESSION_NOT_FOUND') {
|
|
40
|
+
// A history read failure is not proof that the child was deleted.
|
|
41
|
+
const children = await store.listSubagentChildren(parentSessionId);
|
|
42
|
+
if (!children.some((child) => child.id === childSessionId))
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
33
45
|
throw error;
|
|
34
46
|
}
|
|
35
|
-
if (session.source.type !== 'subagent' || session.source.parentSessionId !== parentSessionId)
|
|
36
|
-
return undefined;
|
|
37
|
-
return {
|
|
38
|
-
id: session.id,
|
|
39
|
-
createdAt: session.createdAt,
|
|
40
|
-
lastActivityAt: session.lastActivityAt,
|
|
41
|
-
source: session.source,
|
|
42
|
-
records: await store.read(session.id)
|
|
43
|
-
};
|
|
44
47
|
}
|
|
45
48
|
};
|
|
46
49
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MarAgentError } from '../error.js';
|
|
2
2
|
import { publicHostedToolEvents } from '../runtime/event-projection.js';
|
|
3
|
-
import { JsonlSessionStore } from './
|
|
3
|
+
import { JsonlSessionStore } from './store/index.js';
|
|
4
4
|
const MAX_INPUT_IMAGE_BYTES = 5 * 1024 * 1024;
|
|
5
5
|
const INPUT_IMAGE_MIME_TYPES = new Set(['image/png', 'image/jpeg', 'image/gif', 'image/webp']);
|
|
6
6
|
export async function openMarAgentSessionCatalog(input) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ContextGcWebToolName } from './context-gc-replacements.js';
|
|
2
2
|
import { type ContextGcSubagentToolName } from './context-gc-subagent.js';
|
|
3
|
-
import type { SessionRecord } from './
|
|
3
|
+
import type { SessionRecord } from './store/index.js';
|
|
4
4
|
export declare const CONTEXT_GC_CHECKPOINT_VERSION: 1;
|
|
5
5
|
export declare const CONTEXT_GC_MAX_TARGETS = 4096;
|
|
6
6
|
export type ContextGcPlatform = 'linux' | 'darwin' | 'win32';
|
|
@@ -35,7 +35,6 @@ export interface ContextGcTarget {
|
|
|
35
35
|
readonly role: 'tool_call' | 'tool' | 'provider';
|
|
36
36
|
readonly callId?: string;
|
|
37
37
|
readonly toolName?: string;
|
|
38
|
-
readonly sourceHash: string;
|
|
39
38
|
}
|
|
40
39
|
export interface ContextGcReadItemReplacement {
|
|
41
40
|
readonly supersededByCallId?: string;
|
|
@@ -125,7 +124,6 @@ export interface ContextGcCheckpointDraft {
|
|
|
125
124
|
readonly version: 1;
|
|
126
125
|
readonly base: ContextGcBase;
|
|
127
126
|
readonly boundarySequence: number;
|
|
128
|
-
sourceProjectionHash: string;
|
|
129
127
|
readonly replacements: readonly ContextGcReplacement[];
|
|
130
128
|
readonly trigger: {
|
|
131
129
|
readonly usageSequence: number;
|
|
@@ -145,20 +143,18 @@ export interface ContextGcCheckpointPayload extends ContextGcCheckpointDraft {
|
|
|
145
143
|
/** Disposable memoization for one evaluation's immutable record snapshot. */
|
|
146
144
|
export declare class ContextGcCheckpointCache {
|
|
147
145
|
#private;
|
|
148
|
-
read(records: readonly SessionRecord[], boundarySequence?: number, workspace?: string
|
|
146
|
+
read(records: readonly SessionRecord[], boundarySequence?: number, workspace?: string): ReturnType<typeof latestValidContextGcCheckpoint>;
|
|
149
147
|
}
|
|
150
148
|
export declare function contextGcMinimumUsageGrowth(contextWindowTokens: number): number;
|
|
151
|
-
export declare function contextGcRecordSourceHash(record: Pick<SessionRecord, 'payload'>): string;
|
|
152
149
|
export declare function contextGcLogicalPathKey(path: string, workspace: string, platform?: ContextGcPlatform): string | undefined;
|
|
153
150
|
export declare function contextGcTargetKey(target: ContextGcTarget): string;
|
|
154
151
|
export declare function contextGcReplacementKey(replacement: ContextGcReplacement): string;
|
|
155
152
|
export declare function contextGcBaseFromRecords(records: readonly SessionRecord[], boundarySequence?: number): ContextGcBase | undefined;
|
|
156
153
|
export declare function contextGcBaseSequence(base: ContextGcBase): number;
|
|
157
|
-
export declare function contextGcSourceProjectionHash(records: readonly SessionRecord[], boundarySequence: number, base?: ContextGcBase | undefined): string | undefined;
|
|
158
154
|
export declare function normalizeContextGcReplacements(replacements: readonly ContextGcReplacement[]): ContextGcReplacement[] | undefined;
|
|
159
155
|
export declare function parseContextGcCheckpoint(record: SessionRecord | undefined): ContextGcCheckpointPayload | undefined;
|
|
160
|
-
export declare function validateContextGcCheckpoint(records: readonly SessionRecord[], record: SessionRecord, workspace?: string | undefined): ContextGcCheckpointPayload | undefined;
|
|
161
|
-
export declare function latestValidContextGcCheckpoint(records: readonly SessionRecord[], boundarySequence?: number,
|
|
156
|
+
export declare function validateContextGcCheckpoint(records: readonly SessionRecord[], record: SessionRecord, workspace?: string | undefined, committedReplacements?: readonly ContextGcReplacement[]): ContextGcCheckpointPayload | undefined;
|
|
157
|
+
export declare function latestValidContextGcCheckpoint(records: readonly SessionRecord[], boundarySequence?: number, _workspace?: string): {
|
|
162
158
|
readonly record: SessionRecord;
|
|
163
159
|
readonly payload: ContextGcCheckpointPayload;
|
|
164
160
|
} | undefined;
|