@modelprofile.com/flexharness-agent 9.9.1 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,14 +1,16 @@
1
1
  export { runAgent } from './smartagent.classes.agent.js';
2
2
  export { AgentSession } from './smartagent.classes.session.js';
3
3
  export { buildModelMessages } from './smartagent.context.js';
4
- export { filterModelVisibleAgentEvents, getAgentGenerationTransactions, getOpenAgentGenerationTransactions, getUncertainToolExecutionIntents, isTransactionalGeneration, } from './smartagent.transactions.js';
4
+ export { filterModelVisibleAgentEvents, getAgentGenerationTransactions, getOpenAgentGenerationTransactions, getUncertainToolExecutionIntents, isGenerationInModelContext, isTransactionalGeneration, } from './smartagent.transactions.js';
5
5
  export { createAgentEvent, createAgentEventId, modelMessagesToAgentEvents, } from './smartagent.events.js';
6
+ export { AgentPendingInputQueue, AgentPendingInputRejectedError, } from './smartagent.pendinginput.js';
7
+ export type { IAgentAppliedInput, IAgentPendingInput, TAgentPendingInputRejection, } from './smartagent.pendinginput.js';
6
8
  export { ToolRegistry } from './smartagent.classes.toolregistry.js';
7
9
  export { AgentModelCallUsageRecorder } from './smartagent.usage.js';
8
10
  export type { IAgentModelCallUsageRecorderModel } from './smartagent.usage.js';
9
11
  export { AgentGenerationLeaseCleanupError, ContextOverflowError, } from './smartagent.interfaces.js';
10
12
  export { AgentEventStoreConflictError, InMemoryAgentEventStore, isAgentEventStoreV2, validateAgentEventArchiveV2, validateAgentEventSnapshotV2, } from './smartagent.persistence.js';
11
- export type { IAgentCacheOptions, IAgentContextOverflowInvocationOptions, IAgentContextBuildOptions, IAgentContextCompactionOptions, IAgentCompactOptions, IAgentEventRetentionOptions, IAgentBeginGenerationOptions, IAgentGenerateOptions, IAgentGenerateResult, IAgentGenerationHandle, IAgentGenerationLease, IAgentGenerationPreparationContext, IAgentRunOptions, IAgentRunResult, IAgentSession, IAgentSessionAbortOptions, IAgentSessionChange, IAgentSessionOptions, IAgentScheduleGenerateOptions, IAgentToolCallRecord, IAgentToolCallStartEvent, IAgentToolCallUpdateEvent, IAgentUsage, ProviderOptions, TAgentCacheRetention, TAgentCacheSetting, TAgentPrompt, TAgentContextBuilder, TAgentContextCompactor, TAgentGenerationPrepare, TAgentModelCallUnreportedReason, TAgentModelCallUsage, TAgentModelCallUsageEvent, TAgentModelCallUsageReporter, TAgentSessionChangeListener, TAgentToolCallFinishEvent, TAgentToolExecutionReconciliationOptions, } from './smartagent.interfaces.js';
13
+ export type { IAgentCacheOptions, IAgentContextOverflowInvocationOptions, IAgentContextBuildOptions, IAgentContextCompactionOptions, IAgentCompactOptions, IAgentEventRetentionOptions, IAgentBeginGenerationOptions, IAgentFinalizeGenerationOptions, IAgentGenerateOptions, IAgentGenerateResult, IAgentGenerationHandle, IAgentGenerationLease, IAgentGenerationPreparationContext, IAgentRunOptions, IAgentRunResult, IAgentSession, IAgentSessionAbortOptions, IAgentSessionChange, IAgentSessionOptions, IAgentScheduleGenerateOptions, IAgentToolCallRecord, IAgentToolCallStartEvent, IAgentToolCallUpdateEvent, IAgentUsage, ProviderOptions, TAgentCacheRetention, TAgentCacheSetting, TAgentPrompt, TAgentContextBuilder, TAgentContextCompactor, TAgentGenerationPrepare, TAgentModelCallUnreportedReason, TAgentModelCallUsage, TAgentModelCallUsageEvent, TAgentModelCallUsageReporter, TAgentSessionChangeListener, TAgentToolCallFinishEvent, TAgentToolExecutionReconciliationOptions, } from './smartagent.interfaces.js';
12
14
  export type { IAgentEventArchive, IAgentEventArchiveV2, IAgentEventSnapshot, IAgentEventSnapshotV2, IAgentEventStore, IAgentEventStoreV2, TAgentEventArchive, TAgentEventSnapshot, TAgentEventStore, } from './smartagent.persistence.js';
13
15
  export type { IAgentEventBase, IAgentRuntimeEventPayload, IArchivedAgentGenerationTransaction, IAssistantMessageEvent, IContextCompactionEvent, IGenerationBegunEvent, IGenerationExecutionCompletedEvent, IGenerationExecutionStartedEvent, IGenerationOutcomeEvent, IModelMessageEvent, IModelMessagesToEventsOptions, IModelMessageEventIdentityCoordinates, IRuntimeEvent, ISystemMessageEvent, IToolCallEvent, IToolExecutionIntentEvent, IToolExecutionReconciliationEvent, IToolResultEvent, IUserMessageEvent, TAgentAssistantMessage, TAgentConversationEvent, TAgentControlEvent, TAgentEvent, TAgentEventInput, TAgentSystemMessage, TAgentGenerationOutcome, TAgentToolCallPart, TAgentToolMessage, TAgentToolResultOutput, TAgentToolResultPart, TAgentUserMessage, TModelMessageEmittedEventKind, TModelMessageEventIdentityFactory, TToolExecutionReconciliation, } from './smartagent.events.js';
14
16
  export type { IAgentGenerationTransaction, TAgentGenerationTransactionState, } from './smartagent.transactions.js';
@@ -1,8 +1,9 @@
1
1
  export { runAgent } from './smartagent.classes.agent.js';
2
2
  export { AgentSession } from './smartagent.classes.session.js';
3
3
  export { buildModelMessages } from './smartagent.context.js';
4
- export { filterModelVisibleAgentEvents, getAgentGenerationTransactions, getOpenAgentGenerationTransactions, getUncertainToolExecutionIntents, isTransactionalGeneration, } from './smartagent.transactions.js';
4
+ export { filterModelVisibleAgentEvents, getAgentGenerationTransactions, getOpenAgentGenerationTransactions, getUncertainToolExecutionIntents, isGenerationInModelContext, isTransactionalGeneration, } from './smartagent.transactions.js';
5
5
  export { createAgentEvent, createAgentEventId, modelMessagesToAgentEvents, } from './smartagent.events.js';
6
+ export { AgentPendingInputQueue, AgentPendingInputRejectedError, } from './smartagent.pendinginput.js';
6
7
  export { ToolRegistry } from './smartagent.classes.toolregistry.js';
7
8
  export { AgentModelCallUsageRecorder } from './smartagent.usage.js';
8
9
  export { AgentGenerationLeaseCleanupError, ContextOverflowError, } from './smartagent.interfaces.js';
@@ -12,4 +13,4 @@ export * from './tool.persistence.js';
12
13
  export * from './tool.adapter.js';
13
14
  export { tool, jsonSchema, stepCountIs, z } from './plugins.js';
14
15
  export { FileAgentEventStore } from './persistence.file.js';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19hZ2VudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLGtDQUFrQyxFQUNsQyxnQ0FBZ0MsRUFDaEMseUJBQXlCLEdBQzFCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsMEJBQTBCLEdBQzNCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDaEMsb0JBQW9CLEdBQ3JCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLDJCQUEyQixFQUMzQiw0QkFBNEIsR0FDN0IsTUFBTSw2QkFBNkIsQ0FBQztBQTRGckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQW9DLE1BQU0sdUJBQXVCLENBQUMifQ==
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19hZ2VudC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzdELE9BQU8sRUFDTCw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLGtDQUFrQyxFQUNsQyxnQ0FBZ0MsRUFDaEMsMEJBQTBCLEVBQzFCLHlCQUF5QixHQUMxQixNQUFNLDhCQUE4QixDQUFDO0FBQ3RDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsa0JBQWtCLEVBQ2xCLDBCQUEwQixHQUMzQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsOEJBQThCLEdBQy9CLE1BQU0sOEJBQThCLENBQUM7QUFNdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXBFLE9BQU8sRUFDTCxnQ0FBZ0MsRUFDaEMsb0JBQW9CLEdBQ3JCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUNMLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLDJCQUEyQixFQUMzQiw0QkFBNEIsR0FDN0IsTUFBTSw2QkFBNkIsQ0FBQztBQTZGckMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQW9DLE1BQU0sdUJBQXVCLENBQUMifQ==
@@ -37,6 +37,8 @@ export interface IUserMessageEvent extends IAgentEventBase {
37
37
  type: 'user-message';
38
38
  content: TAgentUserMessage['content'];
39
39
  providerOptions?: TAgentUserMessage['providerOptions'];
40
+ /** Set when a running generation took the message in from its pending input. */
41
+ inputId?: string;
40
42
  }
41
43
  export interface IAssistantMessageEvent extends IAgentEventBase {
42
44
  type: 'assistant-message';
@@ -97,6 +99,11 @@ export interface IGenerationOutcomeEvent extends IAgentEventBase {
97
99
  generationId: string;
98
100
  outcome: TAgentGenerationOutcome;
99
101
  reason?: string;
102
+ /**
103
+ * Set on an `interrupted` outcome whose owner stopped the generation: what its model produced
104
+ * stays in the model context.
105
+ */
106
+ stopped?: boolean;
100
107
  }
101
108
  export interface IToolExecutionIntentEvent extends IAgentEventBase {
102
109
  type: 'tool-execution-intent';
@@ -120,6 +127,8 @@ export interface IToolExecutionReconciliationEvent extends IAgentEventBase {
120
127
  export type TAgentConversationEvent = ISystemMessageEvent | IUserMessageEvent | IAssistantMessageEvent | IToolCallEvent | IToolResultEvent | IModelMessageEvent;
121
128
  export interface IContextCompactionEvent extends IAgentEventBase {
122
129
  type: 'context-compaction';
130
+ /** A proactive budget compaction whose settled source events may be archived automatically. */
131
+ automatic?: true;
123
132
  coveredEventIds: string[];
124
133
  replacementEvents: TAgentConversationEvent[];
125
134
  archivedTransactions?: IArchivedAgentGenerationTransaction[];
@@ -133,4 +133,4 @@ export function modelMessagesToAgentEvents(messages, options = {}) {
133
133
  }
134
134
  return events;
135
135
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC5ldmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19hZ2VudC9zbWFydGFnZW50LmV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQTJNeEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFVLEVBQUUsQ0FDN0QsR0FBRyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO0FBRWhELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBK0I7SUFFL0IsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDOUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtLQUNwQixDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBOEIsRUFBVyxFQUFFO0lBQ25FLElBQUksT0FBTyxJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQjtRQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3RCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLFFBQXlDLEVBQ3pDLFVBQXlDLEVBQUU7SUFFM0MsTUFBTSxNQUFNLEdBQThCLEVBQUUsQ0FBQztJQUM3QyxNQUFNLFlBQVksR0FBRztRQUNuQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7UUFDNUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1FBQ2hDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtRQUNs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
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC5ldmVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19hZ2VudC9zbWFydGFnZW50LmV2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQW9OeEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxNQUFNLEdBQUcsT0FBTyxFQUFVLEVBQUUsQ0FDN0QsR0FBRyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO0FBRWhELE1BQU0sVUFBVSxnQkFBZ0IsQ0FDOUIsS0FBK0I7SUFFL0IsT0FBTztRQUNMLEdBQUcsS0FBSztRQUNSLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxJQUFJLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDOUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtLQUNwQixDQUFDO0FBQ3pCLENBQUM7QUFFRCxNQUFNLGdCQUFnQixHQUFHLENBQUMsTUFBOEIsRUFBVyxFQUFFO0lBQ25FLElBQUksT0FBTyxJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDM0MsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGtCQUFrQjtRQUFFLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM3RCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsMEJBQTBCLENBQ3hDLFFBQXlDLEVBQ3pDLFVBQXlDLEVBQUU7SUFFM0MsTUFBTSxNQUFNLEdBQThCLEVBQUUsQ0FBQztJQUM3QyxNQUFNLFlBQVksR0FBRztRQUNuQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7UUFDNUIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxXQUFXO1FBQ2hDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtRQUNs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
@@ -1,6 +1,7 @@
1
1
  import type { ISmartAiCacheOptions, ToolSet, ModelMessage, TSmartAiLanguageModel, ProviderOptions, IToolExecutionContext, IToolJobState, TSmartAiCacheRetention, TSmartAiCacheSetting } from './plugins.js';
2
2
  import type { IAgentRuntimeEventPayload, IToolExecutionIntentEvent, TAgentEvent, TAgentGenerationOutcome, TAgentToolResultOutput } from './smartagent.events.js';
3
3
  import type { TAgentEventArchive, TAgentEventStore } from './smartagent.persistence.js';
4
+ import type { AgentPendingInputQueue, IAgentAppliedInput } from './smartagent.pendinginput.js';
4
5
  import type { IAgentRetryEvent } from './smartagent.retry.js';
5
6
  export type { ProviderOptions };
6
7
  export interface IAgentCacheOptions extends ISmartAiCacheOptions {
@@ -98,7 +99,7 @@ export interface IAgentContextBuildOptions {
98
99
  export type TAgentContextBuilder = (options: IAgentContextBuildOptions) => ModelMessage[];
99
100
  export interface IAgentContextCompactionOptions {
100
101
  abortSignal?: AbortSignal;
101
- reason: 'context-overflow' | 'retention' | 'manual';
102
+ reason: 'context-overflow' | 'context-budget' | 'retention' | 'manual';
102
103
  /**
103
104
  * Reports the usage of each model call the compactor makes, into the session's `onUsage` as
104
105
  * `source: 'compaction'`. The session always supplies it. Report every call before the returned
@@ -147,6 +148,11 @@ export interface IAgentSessionOptions {
147
148
  contextBuilder?: TAgentContextBuilder;
148
149
  /** Explicit context compactor used by manual and event-retention compaction. */
149
150
  contextCompactor?: TAgentContextCompactor;
151
+ /** Compact settled history before inference when model messages exceed this UTF-8 JSON byte budget.
152
+ * Defaults to 256 KiB when a compactor is supplied; false disables proactive compaction.
153
+ * The current unsettled generation is never summarized or archived.
154
+ */
155
+ contextCompactionBytes?: number | false;
150
156
  /** Optional bounded active-event policy. Requires contextCompactor and eventStore.archive. */
151
157
  eventRetention?: IAgentEventRetentionOptions;
152
158
  /** Maximum wait for each session change listener. Default: 30 seconds. */
@@ -224,6 +230,13 @@ export interface IAgentBeginGenerationOptions {
224
230
  /** Stable caller-owned identity used to make begin retries deterministic. */
225
231
  generationId?: string;
226
232
  }
233
+ export interface IAgentFinalizeGenerationOptions {
234
+ /**
235
+ * With outcome `interrupted`: the owner stopped the generation, so what its model produced
236
+ * stays in the model context.
237
+ */
238
+ stopped?: boolean;
239
+ }
227
240
  export interface IAgentGenerationPreparationContext {
228
241
  generationId: string;
229
242
  abortSignal: AbortSignal;
@@ -264,6 +277,13 @@ export interface IAgentGenerateOptions {
264
277
  maxSteps?: number;
265
278
  /** Cancels only this generation and its synchronous tool executions. */
266
279
  abort?: AbortSignal;
280
+ /**
281
+ * Stops a transactional generation the way a user stops a turn. It ends the generation like
282
+ * `abort`, but the interrupted outcome records the stop: the text the running model step
283
+ * streamed and the tool calls it issued are kept, and the generation stays in the model
284
+ * context once its model produced output. An aborted or failed generation is not kept.
285
+ */
286
+ stop?: AbortSignal;
267
287
  /** Opt-in transactional claim returned by beginGeneration(). */
268
288
  transaction?: IAgentGenerationHandle;
269
289
  /**
@@ -273,6 +293,14 @@ export interface IAgentGenerateOptions {
273
293
  * The callback owns cleanup of partial acquisition if it throws before returning a lease.
274
294
  */
275
295
  prepare?: TAgentGenerationPrepare;
296
+ /**
297
+ * User input the generation takes in at its step boundaries, recorded as user messages of
298
+ * the generation. The generation closes the queue when it ends; `close()` then returns the
299
+ * inputs it never took in.
300
+ */
301
+ pendingInput?: AgentPendingInputQueue;
302
+ /** Called once per input taken from `pendingInput`, after it is durable and before the next model call. */
303
+ onInputApplied?: (input: IAgentAppliedInput) => void | Promise<void>;
276
304
  }
277
305
  export interface IAgentScheduleGenerateOptions extends IAgentGenerateOptions {
278
306
  /** Coalescing identity for this scheduled generation. */
@@ -325,7 +353,7 @@ export interface IAgentSession {
325
353
  pushRuntimeEvent(event: IAgentRuntimeEventPayload): Promise<void>;
326
354
  beginGeneration(content: TAgentPrompt, options?: IAgentBeginGenerationOptions): Promise<IAgentGenerationHandle>;
327
355
  generate(options?: IAgentGenerateOptions): Promise<IAgentGenerateResult>;
328
- finalizeGeneration(transaction: IAgentGenerationHandle, outcome: TAgentGenerationOutcome): Promise<void>;
356
+ finalizeGeneration(transaction: IAgentGenerationHandle, outcome: TAgentGenerationOutcome, options?: IAgentFinalizeGenerationOptions): Promise<void>;
329
357
  listUncertainToolExecutions(): IToolExecutionIntentEvent[];
330
358
  reconcileToolExecution(intentId: string, reconciliation: TAgentToolExecutionReconciliationOptions): Promise<void>;
331
359
  scheduleGenerate(options: IAgentScheduleGenerateOptions): Promise<IAgentGenerateResult>;
@@ -21,4 +21,4 @@ export class ContextOverflowError extends Error {
21
21
  this.name = 'ContextOverflowError';
22
22
  }
23
23
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfYWdlbnQvc21hcnRhZ2VudC5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNTQSxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsS0FBSztJQUN6QyxLQUFLLENBQXdCO0lBQzdCLFlBQVksQ0FBVTtJQUNyQixvQkFBb0IsQ0FBc0I7SUFFM0QsWUFDRSxLQUE0QixFQUM1QixZQUFxQixFQUNyQixvQkFBeUM7UUFFekMsS0FBSyxDQUNILG9DQUFvQyxZQUFZLFlBQVksS0FBSztZQUMvRCxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU87WUFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxrQ0FBa0MsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDbkQsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFzSEQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLEtBQUs7SUFDN0MsWUFBWSxPQUFPLEdBQUcsdUVBQXVFO1FBQzNGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC5pbnRlcmZhY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfYWdlbnQvc21hcnRhZ2VudC5pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9UQSxNQUFNLE9BQU8sZ0NBQWlDLFNBQVEsS0FBSztJQUN6QyxLQUFLLENBQXdCO0lBQzdCLFlBQVksQ0FBVTtJQUNyQixvQkFBb0IsQ0FBc0I7SUFFM0QsWUFDRSxLQUE0QixFQUM1QixZQUFxQixFQUNyQixvQkFBeUM7UUFFekMsS0FBSyxDQUNILG9DQUFvQyxZQUFZLFlBQVksS0FBSztZQUMvRCxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU87WUFDdEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUMzQixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxrQ0FBa0MsQ0FBQztRQUMvQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDbkQsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFzSUQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLEtBQUs7SUFDN0MsWUFBWSxPQUFPLEdBQUcsdUVBQXVFO1FBQzNGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztDQUNGIn0=
@@ -0,0 +1,58 @@
1
+ import type { TAgentPrompt } from './smartagent.interfaces.js';
2
+ /** One user input that a running generation takes in at its next step boundary. */
3
+ export interface IAgentPendingInput {
4
+ /** Caller-chosen identity, unique within its queue. */
5
+ inputId: string;
6
+ content: TAgentPrompt;
7
+ }
8
+ /** A pending input the generation recorded as a user message of its own. */
9
+ export interface IAgentAppliedInput {
10
+ inputId: string;
11
+ /** The `user-message` event that carries the input. */
12
+ eventId: string;
13
+ generationId: string;
14
+ /** Model steps the generation had completed when it took the input in. */
15
+ completedSteps: number;
16
+ }
17
+ export type TAgentPendingInputRejection = 'duplicate' | 'closed';
18
+ /** The queue refused an input: its id was used before, or its generation has ended. */
19
+ export declare class AgentPendingInputRejectedError extends Error {
20
+ readonly reason: TAgentPendingInputRejection;
21
+ readonly inputId: string;
22
+ constructor(reason: TAgentPendingInputRejection, inputId: string);
23
+ }
24
+ /**
25
+ * The user input a generation takes in while it runs. A generation that receives the queue
26
+ * through `generate({ pendingInput })` drains it at every step boundary, after the tool results
27
+ * of its previous model step are recorded and before its next model call, and records each
28
+ * input as a user message of its own. A running tool call or permission wait is never
29
+ * interrupted: its input waits for the boundary that follows it.
30
+ *
31
+ * `close()` ends intake and returns the inputs the generation never took in: the ones still
32
+ * waiting, and the ones it drained but could not record durably, which it `restore()`s. An input
33
+ * added after it is refused with reason `closed`. The generation closes the queue when it ends,
34
+ * so every input is either applied or returned by `close()`. Once the generation has settled,
35
+ * `close()` returns the same inputs on every call; before that, a batch the generation `restore()`s
36
+ * after a failed save is added to what it returns.
37
+ */
38
+ export declare class AgentPendingInputQueue {
39
+ /** Inputs not taken in, in arrival order. */
40
+ private readonly waiting;
41
+ private readonly inputIds;
42
+ private isClosed;
43
+ /** True once `close()` ended intake. */
44
+ get closed(): boolean;
45
+ /** Inputs waiting for the next step boundary. */
46
+ get size(): number;
47
+ add(input: IAgentPendingInput): void;
48
+ /** Takes every waiting input in arrival order; a closed queue has none left to take. */
49
+ drain(): IAgentPendingInput[];
50
+ /**
51
+ * Gives back inputs a generation drained but could not record durably. They count as never
52
+ * taken in and go before the inputs that arrived after them; a closed queue returns them from
53
+ * `close()`, an open one hands them out again at the next `drain()`.
54
+ */
55
+ restore(inputs: readonly IAgentPendingInput[]): void;
56
+ /** Ends intake and returns the inputs that were never taken in, in arrival order. */
57
+ close(): readonly IAgentPendingInput[];
58
+ }
@@ -0,0 +1,92 @@
1
+ /** The queue refused an input: its id was used before, or its generation has ended. */
2
+ export class AgentPendingInputRejectedError extends Error {
3
+ reason;
4
+ inputId;
5
+ constructor(reason, inputId) {
6
+ super(reason === 'duplicate'
7
+ ? `Pending input "${inputId}" was already added.`
8
+ : `Pending input "${inputId}" arrived after its generation stopped taking input.`);
9
+ this.reason = reason;
10
+ this.inputId = inputId;
11
+ this.name = 'AgentPendingInputRejectedError';
12
+ }
13
+ }
14
+ const assertPrompt = (content) => {
15
+ if (typeof content === 'string') {
16
+ if (!content.trim())
17
+ throw new Error('Pending input content must not be empty.');
18
+ return;
19
+ }
20
+ if (!Array.isArray(content) || content.length === 0) {
21
+ throw new Error('Pending input content must be a non-empty string or part list.');
22
+ }
23
+ };
24
+ /**
25
+ * The user input a generation takes in while it runs. A generation that receives the queue
26
+ * through `generate({ pendingInput })` drains it at every step boundary, after the tool results
27
+ * of its previous model step are recorded and before its next model call, and records each
28
+ * input as a user message of its own. A running tool call or permission wait is never
29
+ * interrupted: its input waits for the boundary that follows it.
30
+ *
31
+ * `close()` ends intake and returns the inputs the generation never took in: the ones still
32
+ * waiting, and the ones it drained but could not record durably, which it `restore()`s. An input
33
+ * added after it is refused with reason `closed`. The generation closes the queue when it ends,
34
+ * so every input is either applied or returned by `close()`. Once the generation has settled,
35
+ * `close()` returns the same inputs on every call; before that, a batch the generation `restore()`s
36
+ * after a failed save is added to what it returns.
37
+ */
38
+ export class AgentPendingInputQueue {
39
+ /** Inputs not taken in, in arrival order. */
40
+ waiting = [];
41
+ inputIds = new Set();
42
+ isClosed = false;
43
+ /** True once `close()` ended intake. */
44
+ get closed() {
45
+ return this.isClosed;
46
+ }
47
+ /** Inputs waiting for the next step boundary. */
48
+ get size() {
49
+ return this.isClosed ? 0 : this.waiting.length;
50
+ }
51
+ add(input) {
52
+ if (typeof input.inputId !== 'string' || !input.inputId.trim()) {
53
+ throw new Error('Pending input id must be a non-empty string.');
54
+ }
55
+ assertPrompt(input.content);
56
+ if (this.inputIds.has(input.inputId)) {
57
+ throw new AgentPendingInputRejectedError('duplicate', input.inputId);
58
+ }
59
+ if (this.isClosed)
60
+ throw new AgentPendingInputRejectedError('closed', input.inputId);
61
+ this.inputIds.add(input.inputId);
62
+ this.waiting.push({ inputId: input.inputId, content: structuredClone(input.content) });
63
+ }
64
+ /** Takes every waiting input in arrival order; a closed queue has none left to take. */
65
+ drain() {
66
+ if (this.isClosed)
67
+ return [];
68
+ return this.waiting.splice(0, this.waiting.length);
69
+ }
70
+ /**
71
+ * Gives back inputs a generation drained but could not record durably. They count as never
72
+ * taken in and go before the inputs that arrived after them; a closed queue returns them from
73
+ * `close()`, an open one hands them out again at the next `drain()`.
74
+ */
75
+ restore(inputs) {
76
+ for (const input of inputs) {
77
+ if (!this.inputIds.has(input.inputId)) {
78
+ throw new Error(`Pending input "${input.inputId}" was never added to this queue.`);
79
+ }
80
+ if (this.waiting.some((waiting) => waiting.inputId === input.inputId)) {
81
+ throw new Error(`Pending input "${input.inputId}" is still waiting.`);
82
+ }
83
+ }
84
+ this.waiting.unshift(...inputs);
85
+ }
86
+ /** Ends intake and returns the inputs that were never taken in, in arrival order. */
87
+ close() {
88
+ this.isClosed = true;
89
+ return Object.freeze([...this.waiting]);
90
+ }
91
+ }
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC5wZW5kaW5naW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90c19hZ2VudC9zbWFydGFnZW50LnBlbmRpbmdpbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQkEsdUZBQXVGO0FBQ3ZGLE1BQU0sT0FBTyw4QkFBK0IsU0FBUSxLQUFLO0lBRXJDO0lBQ0E7SUFGbEIsWUFDa0IsTUFBbUMsRUFDbkMsT0FBZTtRQUUvQixLQUFLLENBQUMsTUFBTSxLQUFLLFdBQVc7WUFDMUIsQ0FBQyxDQUFDLGtCQUFrQixPQUFPLHNCQUFzQjtZQUNqRCxDQUFDLENBQUMsa0JBQWtCLE9BQU8sc0RBQXNELENBQUMsQ0FBQztRQUxyRSxXQUFNLEdBQU4sTUFBTSxDQUE2QjtRQUNuQyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBSy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsZ0NBQWdDLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFxQixFQUFRLEVBQUU7SUFDbkQsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUNqRixPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDcEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyw2Q0FBNkM7SUFDNUIsT0FBTyxHQUF5QixFQUFFLENBQUM7SUFDbkMsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7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
@@ -304,6 +304,9 @@ const validateAgentEvents = (value, path, conversationOnly = false) => {
304
304
  ? 'user'
305
305
  : 'assistant');
306
306
  assertProviderOptions(eventValue.providerOptions, `${eventPath}.providerOptions`);
307
+ if (eventValue.type === 'user-message' && eventValue.inputId !== undefined) {
308
+ assertNonEmptyString(eventValue.inputId, `${eventPath}.inputId`);
309
+ }
307
310
  break;
308
311
  case 'tool-call':
309
312
  assertNonEmptyString(eventValue.toolCallId, `${eventPath}.toolCallId`);
@@ -357,6 +360,8 @@ const validateAgentEvents = (value, path, conversationOnly = false) => {
357
360
  && eventValue.outcome !== 'interrupted')
358
361
  validationError(`${eventPath}.outcome`, 'is invalid.');
359
362
  assertOptionalString(eventValue.reason, `${eventPath}.reason`);
363
+ if (eventValue.stopped !== undefined && (eventValue.stopped !== true || eventValue.outcome !== 'interrupted'))
364
+ validationError(`${eventPath}.stopped`, 'is only valid as true on an interrupted outcome.');
360
365
  break;
361
366
  case 'tool-execution-intent':
362
367
  assertRequiredGenerationId(eventValue, eventPath);
@@ -380,6 +385,9 @@ const validateAgentEvents = (value, path, conversationOnly = false) => {
380
385
  }
381
386
  break;
382
387
  case 'context-compaction':
388
+ if (eventValue.automatic !== undefined && eventValue.automatic !== true) {
389
+ validationError(`${eventPath}.automatic`, 'must be true when present.');
390
+ }
383
391
  assertStringArray(eventValue.coveredEventIds, `${eventPath}.coveredEventIds`);
384
392
  validateAgentEvents(eventValue.replacementEvents, `${eventPath}.replacementEvents`, true);
385
393
  if (eventValue.archivedTransactions !== undefined) {
@@ -479,4 +487,4 @@ export class InMemoryAgentEventStore {
479
487
  return archive ? clone(archive) : undefined;
480
488
  }
481
489
  }
482
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC5wZXJzaXN0ZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX2FnZW50L3NtYXJ0YWdlbnQucGVyc2lzdGVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSx1QkFBdUIsR0FBRyxDQUFVLENBQUM7QUFDM0MsTUFBTSxzQkFBc0IsR0FBRyxDQUFVLENBQUM7QUFpRTFDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLEtBQW1DLEVBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLO09BQ3BDLG9CQUFvQixJQUFJLEtBQUs7T0FDN0IsS0FBSyxDQUFDLGtCQUFrQixLQUFLLENBQUMsQ0FBQztBQUlwQyxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFTO0lBQ3hDLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsbUJBQW1CO0lBQ25CLFdBQVc7SUFDWCxhQUFhO0lBQ2IsZUFBZTtJQUNmLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsOEJBQThCO0lBQzlCLGdDQUFnQztJQUNoQyxvQkFBb0I7SUFDcEIsdUJBQXVCO0lBQ3ZCLCtCQUErQjtJQUMvQixvQkFBb0I7Q0FDVyxDQUFDLENBQUM7QUFFbkMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLEdBQUcsQ0FBUztJQUNyRCxnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsYUFBYTtJQUNiLGVBQWU7Q0FDZ0IsQ0FBQyxDQUFDO0FBRW5DLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBcUIsRUFBRSxHQUFXLEVBQVcsRUFBRSxDQUM3RCxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRW5ELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBUyxFQUFFO0lBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksT0FB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
490
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhZ2VudC5wZXJzaXN0ZW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzX2FnZW50L3NtYXJ0YWdlbnQucGVyc2lzdGVuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSx1QkFBdUIsR0FBRyxDQUFVLENBQUM7QUFDM0MsTUFBTSxzQkFBc0IsR0FBRyxDQUFVLENBQUM7QUFpRTFDLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQ2pDLEtBQW1DLEVBQ04sRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLO09BQ3BDLG9CQUFvQixJQUFJLEtBQUs7T0FDN0IsS0FBSyxDQUFDLGtCQUFrQixLQUFLLENBQUMsQ0FBQztBQUlwQyxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFTO0lBQ3hDLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2QsbUJBQW1CO0lBQ25CLFdBQVc7SUFDWCxhQUFhO0lBQ2IsZUFBZTtJQUNmLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsOEJBQThCO0lBQzlCLGdDQUFnQztJQUNoQyxvQkFBb0I7SUFDcEIsdUJBQXVCO0lBQ3ZCLCtCQUErQjtJQUMvQixvQkFBb0I7Q0FDVyxDQUFDLENBQUM7QUFFbkMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLEdBQUcsQ0FBUztJQUNyRCxnQkFBZ0I7SUFDaEIsY0FBYztJQUNkLG1CQUFtQjtJQUNuQixXQUFXO0lBQ1gsYUFBYTtJQUNiLGVBQWU7Q0FDZ0IsQ0FBQyxDQUFDO0FBRW5DLE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBcUIsRUFBRSxHQUFXLEVBQVcsRUFBRSxDQUM3RCxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRW5ELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBUyxFQUFFO0lBQy9ELE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksT0FB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
@@ -10,6 +10,15 @@ export interface IAgentGenerationTransaction {
10
10
  }
11
11
  export declare const getAgentGenerationTransactions: (events: readonly TAgentEvent[]) => Map<string, IAgentGenerationTransaction>;
12
12
  export declare const isTransactionalGeneration: (events: readonly TAgentEvent[], generationId: string) => boolean;
13
+ /** The model output that closes a tool call its stopped generation left without a result. */
14
+ export declare const INTERRUPTED_TOOL_CALL_RESULT = "The tool call was interrupted before its result was recorded; its effect is unknown.";
15
+ /**
16
+ * Whether the transactional generation `generationId` is part of the model context of later
17
+ * generations, by the rule `filterModelVisibleAgentEvents` applies: it was accepted, is
18
+ * executing, or was stopped by its owner after its model produced output. False for a
19
+ * generation `events` holds no transaction of.
20
+ */
21
+ export declare const isGenerationInModelContext: (events: readonly TAgentEvent[], generationId: string) => boolean;
13
22
  export declare const filterModelVisibleAgentEvents: (events: readonly TAgentEvent[]) => TAgentEvent[];
14
23
  export declare const getOpenAgentGenerationTransactions: (events: readonly TAgentEvent[]) => IAgentGenerationTransaction[];
15
24
  export declare const getUncertainToolExecutionIntents: (events: readonly TAgentEvent[], generationId?: string) => IToolExecutionIntentEvent[];