veryfront 0.1.1014 → 0.1.1016

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.
Files changed (49) hide show
  1. package/esm/deno.js +2 -2
  2. package/esm/src/agent/child-run/invoke-agent-child-runs.d.ts +1 -12
  3. package/esm/src/agent/child-run/invoke-agent-child-runs.d.ts.map +1 -1
  4. package/esm/src/agent/child-run/invoke-agent-child-runs.js +5 -1
  5. package/esm/src/agent/conversation/delegation-policy.d.ts.map +1 -1
  6. package/esm/src/agent/conversation/delegation-policy.js +6 -2
  7. package/esm/src/agent/conversation/durable-contracts.d.ts +2 -0
  8. package/esm/src/agent/conversation/durable-contracts.d.ts.map +1 -1
  9. package/esm/src/agent/conversation/durable-contracts.js +16 -2
  10. package/esm/src/agent/conversation/durable.d.ts.map +1 -1
  11. package/esm/src/agent/conversation/durable.js +120 -99
  12. package/esm/src/agent/conversation/hosted-lifecycle.d.ts.map +1 -1
  13. package/esm/src/agent/conversation/hosted-lifecycle.js +79 -62
  14. package/esm/src/agent/conversation/hosted-terminal.d.ts.map +1 -1
  15. package/esm/src/agent/conversation/hosted-terminal.js +20 -12
  16. package/esm/src/agent/conversation/root-run-context.d.ts +1 -0
  17. package/esm/src/agent/conversation/root-run-context.d.ts.map +1 -1
  18. package/esm/src/agent/conversation/root-run-context.js +7 -1
  19. package/esm/src/agent/conversation/run-events.d.ts +1 -0
  20. package/esm/src/agent/conversation/run-events.d.ts.map +1 -1
  21. package/esm/src/agent/conversation/run-events.js +22 -7
  22. package/esm/src/agent/conversation/run-mirror.d.ts.map +1 -1
  23. package/esm/src/agent/conversation/run-mirror.js +38 -3
  24. package/esm/src/agent/hosted/chat-preparation.d.ts +3 -1
  25. package/esm/src/agent/hosted/chat-preparation.d.ts.map +1 -1
  26. package/esm/src/agent/hosted/chat-preparation.js +12 -0
  27. package/esm/src/agent/hosted/durable-chat-run-start.d.ts +11 -1
  28. package/esm/src/agent/hosted/durable-chat-run-start.d.ts.map +1 -1
  29. package/esm/src/agent/hosted/durable-chat-run-start.js +31 -19
  30. package/esm/src/agent/runtime/message-preparation.d.ts +2 -0
  31. package/esm/src/agent/runtime/message-preparation.d.ts.map +1 -1
  32. package/esm/src/agent/runtime/message-preparation.js +2 -1
  33. package/esm/src/chat/conversation.d.ts.map +1 -1
  34. package/esm/src/chat/conversation.js +2 -1
  35. package/esm/src/chat/message-prep.d.ts +51 -3
  36. package/esm/src/chat/message-prep.d.ts.map +1 -1
  37. package/esm/src/chat/message-prep.js +147 -51
  38. package/esm/src/eval/agent-service/durable-run-canaries/index.d.ts +1 -0
  39. package/esm/src/eval/agent-service/durable-run-canaries/index.d.ts.map +1 -1
  40. package/esm/src/eval/agent-service/durable-run-canaries/index.js +1 -0
  41. package/esm/src/eval/agent-service/durable-run-canaries/runner.d.ts +1 -0
  42. package/esm/src/eval/agent-service/durable-run-canaries/runner.d.ts.map +1 -1
  43. package/esm/src/eval/agent-service/durable-run-canaries/runner.js +53 -25
  44. package/esm/src/eval/agent-service/durable-run-canaries/token-growth.d.ts +12 -0
  45. package/esm/src/eval/agent-service/durable-run-canaries/token-growth.d.ts.map +1 -0
  46. package/esm/src/eval/agent-service/durable-run-canaries/token-growth.js +44 -0
  47. package/esm/src/utils/version-constant.d.ts +1 -1
  48. package/esm/src/utils/version-constant.js +1 -1
  49. package/package.json +3 -2
@@ -3,25 +3,35 @@ import { prepareConversationRunStreamEvents } from "./run-event-preparation.js";
3
3
  import { publishInvokeAgentChildRunProgress, } from "../child-run/invoke-agent-child-runs.js";
4
4
  /** Create conversation hosted lifecycle adapter. */
5
5
  export function createConversationHostedLifecycleAdapter(options) {
6
+ // Appends read run.latestEventId as the expected cursor and write it back,
7
+ // so overlapping calls would race the read-modify-write and trip the
8
+ // server-side cursor check. Chain them so each append sees the previous
9
+ // cursor update.
10
+ let appendChain = Promise.resolve();
11
+ const appendChunkEvents = async (run, chunk) => {
12
+ const events = [...await options.mapChunkToEvents(chunk, run)];
13
+ if (events.length === 0) {
14
+ return;
15
+ }
16
+ const appended = await appendConversationRunEvents({
17
+ authToken: options.authToken,
18
+ apiUrl: options.apiUrl,
19
+ conversationId: run.conversationId,
20
+ runId: run.runId,
21
+ expectedPreviousEventId: run.latestEventId,
22
+ expectedPreviousExternalEventSequence: run.latestExternalEventSequence,
23
+ events,
24
+ });
25
+ run.latestEventId = appended.latestEventId;
26
+ run.latestExternalEventSequence = appended.latestExternalEventSequence;
27
+ };
6
28
  return {
7
29
  startRun: options.startRun,
8
30
  appendEvents: options.mapChunkToEvents
9
- ? async (run, chunk) => {
10
- const events = [...await options.mapChunkToEvents(chunk, run)];
11
- if (events.length === 0) {
12
- return;
13
- }
14
- const appended = await appendConversationRunEvents({
15
- authToken: options.authToken,
16
- apiUrl: options.apiUrl,
17
- conversationId: run.conversationId,
18
- runId: run.runId,
19
- expectedPreviousEventId: run.latestEventId,
20
- expectedPreviousExternalEventSequence: run.latestExternalEventSequence,
21
- events,
22
- });
23
- run.latestEventId = appended.latestEventId;
24
- run.latestExternalEventSequence = appended.latestExternalEventSequence;
31
+ ? (run, chunk) => {
32
+ const result = appendChain.then(() => appendChunkEvents(run, chunk));
33
+ appendChain = result.catch(() => { });
34
+ return result;
25
35
  }
26
36
  : undefined,
27
37
  finalizeRun: async (run, terminalState) => {
@@ -81,61 +91,68 @@ async function publishConversationChildProgress(ctx, status) {
81
91
  apiUrl: ctx.apiUrl,
82
92
  conversationId: ctx.parentConversationId,
83
93
  runId: ctx.parentRunId,
84
- ...(ctx.projectId !== undefined ? { projectId: ctx.projectId } : {}),
85
94
  ...ctx.progress,
86
95
  status,
87
96
  ...(ctx.publishParentRunEvents ? { publishParentRunEvents: ctx.publishParentRunEvents } : {}),
88
97
  });
89
98
  }
99
+ async function finalizeChildRunThenPublish(ctx, status, finalize) {
100
+ let failed = false;
101
+ let finalizeError;
102
+ try {
103
+ await finalize();
104
+ }
105
+ catch (error) {
106
+ failed = true;
107
+ finalizeError = error;
108
+ }
109
+ // The parent must learn the terminal status even when finalization fails;
110
+ // otherwise its projection shows the child as running forever.
111
+ await publishConversationChildProgress(ctx, status);
112
+ if (failed) {
113
+ throw finalizeError;
114
+ }
115
+ }
90
116
  /** Create conversation child lifecycle adapter. */
91
117
  export function createConversationChildLifecycleAdapter(ctx) {
92
118
  return {
93
119
  pending: () => publishConversationChildProgress(ctx, "pending"),
94
120
  running: () => publishConversationChildProgress(ctx, "running"),
95
- completed: async (terminalState) => {
96
- await finalizeConversationAgentRun({
97
- authToken: ctx.authToken,
98
- apiUrl: ctx.apiUrl,
99
- conversationId: ctx.progress.childConversationId,
100
- runId: ctx.progress.childRunId,
101
- status: "completed",
102
- model: ctx.model,
103
- provider: ctx.provider,
104
- usage: toConversationChildUsage(terminalState.usage),
105
- terminalErrorCode: null,
106
- terminalErrorMessage: null,
107
- });
108
- await publishConversationChildProgress(ctx, "completed");
109
- },
110
- failed: async (terminalState) => {
111
- await finalizeConversationAgentRun({
112
- authToken: ctx.authToken,
113
- apiUrl: ctx.apiUrl,
114
- conversationId: ctx.progress.childConversationId,
115
- runId: ctx.progress.childRunId,
116
- status: "failed",
117
- model: ctx.model,
118
- provider: ctx.provider,
119
- usage: toConversationChildUsage(terminalState.usage),
120
- terminalErrorCode: terminalState.terminalErrorCode ?? "FAILED",
121
- terminalErrorMessage: terminalState.terminalErrorMessage ?? "Unknown error",
122
- });
123
- await publishConversationChildProgress(ctx, "failed");
124
- },
125
- cancelled: async (terminalState) => {
126
- await finalizeConversationAgentRun({
127
- authToken: ctx.authToken,
128
- apiUrl: ctx.apiUrl,
129
- conversationId: ctx.progress.childConversationId,
130
- runId: ctx.progress.childRunId,
131
- status: "cancelled",
132
- model: ctx.model,
133
- provider: ctx.provider,
134
- usage: toConversationChildUsage(terminalState.usage),
135
- terminalErrorCode: terminalState.terminalErrorCode ?? "CANCELLED",
136
- terminalErrorMessage: terminalState.terminalErrorMessage ?? "Child run cancelled",
137
- });
138
- await publishConversationChildProgress(ctx, "cancelled");
139
- },
121
+ completed: (terminalState) => finalizeChildRunThenPublish(ctx, "completed", () => finalizeConversationAgentRun({
122
+ authToken: ctx.authToken,
123
+ apiUrl: ctx.apiUrl,
124
+ conversationId: ctx.progress.childConversationId,
125
+ runId: ctx.progress.childRunId,
126
+ status: "completed",
127
+ model: ctx.model,
128
+ provider: ctx.provider,
129
+ usage: toConversationChildUsage(terminalState.usage),
130
+ terminalErrorCode: null,
131
+ terminalErrorMessage: null,
132
+ })),
133
+ failed: (terminalState) => finalizeChildRunThenPublish(ctx, "failed", () => finalizeConversationAgentRun({
134
+ authToken: ctx.authToken,
135
+ apiUrl: ctx.apiUrl,
136
+ conversationId: ctx.progress.childConversationId,
137
+ runId: ctx.progress.childRunId,
138
+ status: "failed",
139
+ model: ctx.model,
140
+ provider: ctx.provider,
141
+ usage: toConversationChildUsage(terminalState.usage),
142
+ terminalErrorCode: terminalState.terminalErrorCode ?? "FAILED",
143
+ terminalErrorMessage: terminalState.terminalErrorMessage ?? "Unknown error",
144
+ })),
145
+ cancelled: (terminalState) => finalizeChildRunThenPublish(ctx, "cancelled", () => finalizeConversationAgentRun({
146
+ authToken: ctx.authToken,
147
+ apiUrl: ctx.apiUrl,
148
+ conversationId: ctx.progress.childConversationId,
149
+ runId: ctx.progress.childRunId,
150
+ status: "cancelled",
151
+ model: ctx.model,
152
+ provider: ctx.provider,
153
+ usage: toConversationChildUsage(terminalState.usage),
154
+ terminalErrorCode: terminalState.terminalErrorCode ?? "CANCELLED",
155
+ terminalErrorMessage: terminalState.terminalErrorMessage ?? "Child run cancelled",
156
+ })),
140
157
  };
141
158
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-terminal.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/hosted-terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosted-terminal.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/hosted-terminal.ts"],"names":[],"mappings":"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"}
@@ -106,18 +106,26 @@ export function createConversationHostedTerminalAdapter(options) {
106
106
  }
107
107
  durableRunFinalized = true;
108
108
  const modelId = terminalState.metadata?.modelId ?? options.fallbackModelId;
109
- await finalizeConversationAgentRun({
110
- authToken: options.authToken,
111
- apiUrl: options.apiUrl,
112
- conversationId: options.run.conversationId,
113
- runId: options.run.runId,
114
- status,
115
- model: modelId,
116
- provider: options.resolveProvider(modelId),
117
- usage: buildConversationAgentRunUsage(terminalState.metadata?.usage),
118
- terminalErrorCode: terminalState.terminalErrorCode,
119
- terminalErrorMessage: terminalState.terminalErrorMessage,
120
- });
109
+ try {
110
+ await finalizeConversationAgentRun({
111
+ authToken: options.authToken,
112
+ apiUrl: options.apiUrl,
113
+ conversationId: options.run.conversationId,
114
+ runId: options.run.runId,
115
+ status,
116
+ model: modelId,
117
+ provider: options.resolveProvider(modelId),
118
+ usage: buildConversationAgentRunUsage(terminalState.metadata?.usage),
119
+ terminalErrorCode: terminalState.terminalErrorCode,
120
+ terminalErrorMessage: terminalState.terminalErrorMessage,
121
+ });
122
+ }
123
+ catch (error) {
124
+ // Allow a later dispatch to retry; keeping the flag set on failure would
125
+ // leave the durable run active forever with no way to complete it.
126
+ durableRunFinalized = false;
127
+ throw error;
128
+ }
121
129
  };
122
130
  return {
123
131
  toTerminalState: (state) => toConversationHostedTerminalState({
@@ -30,6 +30,7 @@ export declare function startConversationRootRun(input: {
30
30
  agentId: string;
31
31
  implementationKind?: string | null;
32
32
  providedRun?: ConversationRootRunDescriptor;
33
+ abortSignal?: AbortSignal;
33
34
  }): Promise<ConversationRunProjection | null>;
34
35
  /** Create conversation root run start adapter. */
35
36
  export declare function createConversationRootRunStartAdapter(input: {
@@ -1 +1 @@
1
- {"version":3,"file":"root-run-context.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/root-run-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"root-run-context.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/root-run-context.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import { createConversationAgentRun } from "./durable.js";
2
2
  function normalizeProvidedRun(input) {
3
+ // The descriptor carries no status, so assume "running"/appendable without a
4
+ // round-trip. If the server-side run is actually terminal or waiting, the
5
+ // first append is rejected and the mirror's resync path lands on
6
+ // non_appendable and disables itself.
3
7
  return {
4
8
  runId: input.providedRun.runId,
5
9
  conversationId: input.conversationId,
@@ -45,11 +49,12 @@ export async function startConversationRootRun(input) {
45
49
  branchId: input.branchId,
46
50
  agentId: input.agentId,
47
51
  implementationKind: input.implementationKind,
52
+ abortSignal: input.abortSignal,
48
53
  });
49
54
  }
50
55
  /** Create conversation root run start adapter. */
51
56
  export function createConversationRootRunStartAdapter(input) {
52
- return async () => ({
57
+ return async ({ abortSignal }) => ({
53
58
  run: await startConversationRootRun({
54
59
  authToken: input.authToken,
55
60
  apiUrl: input.apiUrl,
@@ -59,6 +64,7 @@ export function createConversationRootRunStartAdapter(input) {
59
64
  agentId: input.agentId,
60
65
  implementationKind: input.implementationKind,
61
66
  providedRun: input.providedRun,
67
+ abortSignal,
62
68
  }),
63
69
  });
64
70
  }
@@ -34,6 +34,7 @@ export declare class ConversationRunEventEncoder {
34
34
  private textContentIndex;
35
35
  private getToolResultMessageId;
36
36
  private getTextMessagePayload;
37
+ private releaseToolCallState;
37
38
  private serializeToolResultContent;
38
39
  encode(chunk: ChatStreamEvent): ConversationRunEvent[];
39
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/run-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,iDAAiD;AACjD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;CAY5B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;iCAIzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;iCAA4C,CAAC;AAEpF,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAC5B,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,GAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAyB5B,gDAAgD;AAChD,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,0BAA0B;IAYlC,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,oBAAoB,EAAE;CAwJvD;AAED,6CAA6C;AAC7C,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB;AAED,kDAAkD;AAClD,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB"}
1
+ {"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/run-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,iDAAiD;AACjD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;CAY5B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;iCAIzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;iCAA4C,CAAC;AAEpF,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAC5B,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,GAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAyB5B,gDAAgD;AAChD,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,0BAA0B;IAYlC,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,oBAAoB,EAAE;CAiKvD;AAED,6CAA6C;AAC7C,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB;AAED,kDAAkD;AAClD,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB"}
@@ -69,6 +69,12 @@ export class ConversationRunEventEncoder {
69
69
  contentId,
70
70
  };
71
71
  }
72
+ // Tool call state is only needed until the call resolves; keeping it for the
73
+ // whole run would grow unbounded over long agent sessions.
74
+ releaseToolCallState(toolCallId) {
75
+ this.toolInputs.delete(toolCallId);
76
+ this.streamedToolInputs.delete(toolCallId);
77
+ }
72
78
  serializeToolResultContent(value) {
73
79
  if (typeof value === "string") {
74
80
  return value;
@@ -164,11 +170,11 @@ export class ConversationRunEventEncoder {
164
170
  : {}),
165
171
  isError: true,
166
172
  });
167
- this.toolInputs.delete(chunk.toolCallId);
173
+ this.releaseToolCallState(chunk.toolCallId);
168
174
  return events;
169
175
  }
170
- case "tool-output-available":
171
- return [{
176
+ case "tool-output-available": {
177
+ const events = [{
172
178
  type: conversationRunEventTypes.toolCallResult,
173
179
  messageId: this.getToolResultMessageId(chunk.toolCallId),
174
180
  toolCallId: chunk.toolCallId,
@@ -178,8 +184,11 @@ export class ConversationRunEventEncoder {
178
184
  ? { input: this.toolInputs.get(chunk.toolCallId) }
179
185
  : {}),
180
186
  }];
181
- case "tool-output-error":
182
- return [{
187
+ this.releaseToolCallState(chunk.toolCallId);
188
+ return events;
189
+ }
190
+ case "tool-output-error": {
191
+ const events = [{
183
192
  type: conversationRunEventTypes.toolCallResult,
184
193
  messageId: this.getToolResultMessageId(chunk.toolCallId),
185
194
  toolCallId: chunk.toolCallId,
@@ -190,8 +199,11 @@ export class ConversationRunEventEncoder {
190
199
  : {}),
191
200
  isError: true,
192
201
  }];
193
- case "tool-output-denied":
194
- return [{
202
+ this.releaseToolCallState(chunk.toolCallId);
203
+ return events;
204
+ }
205
+ case "tool-output-denied": {
206
+ const events = [{
195
207
  type: conversationRunEventTypes.toolCallResult,
196
208
  messageId: this.getToolResultMessageId(chunk.toolCallId),
197
209
  toolCallId: chunk.toolCallId,
@@ -202,6 +214,9 @@ export class ConversationRunEventEncoder {
202
214
  : {}),
203
215
  isError: true,
204
216
  }];
217
+ this.releaseToolCallState(chunk.toolCallId);
218
+ return events;
219
+ }
205
220
  case "error":
206
221
  case "finish":
207
222
  case "abort":
@@ -1 +1 @@
1
- {"version":3,"file":"run-mirror.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/run-mirror.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,cAAc,CAAC;AAExE,gEAAgE;AAChE,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,iDAAiD;AACjD,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,CAAC,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EACV,0BAA0B,GAC1B,gBAAgB,GAChB,4BAA4B,GAC5B,mBAAmB,CAAC;CACzB;AAED,yDAAyD;AACzD,MAAM,WAAW,wCAAwC;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qCAAqC;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,KAAK,IAAI,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAChD,WAAW,IAAI,6BAA6B,CAAC;IAC7C,OAAO,IAAI,IAAI,CAAC;CACjB;AAyBD,sCAAsC;AACtC,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,eAAe,EAAE,mCAAmC,CAAC;IACrD,wBAAwB,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,qCAAqC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvF,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,wCAAwC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7F,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,iCAAiC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChF,GAAG,qBAAqB,CA8LxB"}
1
+ {"version":3,"file":"run-mirror.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/run-mirror.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mCAAmC,EAAE,MAAM,cAAc,CAAC;AAExE,gEAAgE;AAChE,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,iDAAiD;AACjD,MAAM,WAAW,iCAAiC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,CAAC,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,IAAI,CAAC;IACf,aAAa,CAAC,EACV,0BAA0B,GAC1B,gBAAgB,GAChB,4BAA4B,GAC5B,mBAAmB,CAAC;CACzB;AAED,yDAAyD;AACzD,MAAM,WAAW,wCAAwC;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qCAAqC;IACpD,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjC,KAAK,IAAI,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAChD,WAAW,IAAI,6BAA6B,CAAC;IAC7C,OAAO,IAAI,IAAI,CAAC;CACjB;AAyBD,sCAAsC;AACtC,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,eAAe,EAAE,mCAAmC,CAAC;IACrD,wBAAwB,EAAE,MAAM,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,qCAAqC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvF,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,wCAAwC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7F,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,iCAAiC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAChF,GAAG,qBAAqB,CAqOxB"}
@@ -22,6 +22,12 @@ export function createConversationRunMirror(input) {
22
22
  let flushTimer = null;
23
23
  let retryTimer = null;
24
24
  let inFlightFlush = null;
25
+ // Failures that escaped the queue controller (which only counts append
26
+ // failures it recovered itself) still need to back off exponentially, and
27
+ // explicit flush() calls must surface them so callers do not finalize a run
28
+ // while its last events are still queued.
29
+ let escapedFlushFailures = 0;
30
+ let escapedFlushError = null;
25
31
  function getSnapshot() {
26
32
  const snapshot = input.queueController.getSnapshot();
27
33
  return {
@@ -83,7 +89,7 @@ export function createConversationRunMirror(input) {
83
89
  if (snapshot.disabled || snapshot.pendingEventCount === 0) {
84
90
  return;
85
91
  }
86
- const retryDelayMs = getRetryDelayMs(snapshot.consecutiveFailures);
92
+ const retryDelayMs = getRetryDelayMs(Math.max(snapshot.consecutiveFailures, escapedFlushFailures));
87
93
  clearRetryTimer();
88
94
  retryTimer = scheduleMirrorTimer({
89
95
  delayMs: retryDelayMs,
@@ -96,6 +102,8 @@ export function createConversationRunMirror(input) {
96
102
  async function runFlushLoop() {
97
103
  emitHighBacklogIfNeeded();
98
104
  const flushed = await input.queueController.flush();
105
+ escapedFlushFailures = 0;
106
+ escapedFlushError = null;
99
107
  if (flushed.outcome === "idle" || flushed.outcome === "flushed") {
100
108
  return;
101
109
  }
@@ -119,7 +127,18 @@ export function createConversationRunMirror(input) {
119
127
  if (!shouldStartFlushLoop()) {
120
128
  return;
121
129
  }
122
- inFlightFlush = runFlushLoop().finally(() => {
130
+ inFlightFlush = runFlushLoop()
131
+ .catch((error) => {
132
+ // The queue controller re-queues its events before rethrowing, so an
133
+ // error escaping here (unexpected controller failure or a throwing
134
+ // observability callback) must not become an unhandled rejection from
135
+ // a timer-triggered loop — back off and retry instead. Explicit
136
+ // flush() rethrows it from the recorded value.
137
+ escapedFlushFailures += 1;
138
+ escapedFlushError = { error };
139
+ scheduleRetry();
140
+ })
141
+ .finally(() => {
123
142
  inFlightFlush = null;
124
143
  if (shouldContinueFlushLoop()) {
125
144
  startFlushLoop();
@@ -166,8 +185,24 @@ export function createConversationRunMirror(input) {
166
185
  if (snapshot.disabled || (snapshot.pendingEventCount === 0 && !snapshot.inFlight)) {
167
186
  return snapshot;
168
187
  }
188
+ // An already-in-flight loop may have snapshotted the queue before the
189
+ // caller's events were enqueued, and its completion can chain another
190
+ // loop; keep draining until the queue is empty or a retry backoff or
191
+ // stop takes over.
169
192
  startFlushLoop();
170
- await inFlightFlush;
193
+ while (inFlightFlush !== null) {
194
+ await inFlightFlush;
195
+ const drained = getSnapshot();
196
+ if (!drained.disabled && drained.pendingEventCount > 0 && !drained.hasRetryTimer) {
197
+ startFlushLoop();
198
+ }
199
+ }
200
+ if (escapedFlushError !== null) {
201
+ // Callers like hosted finalization treat a resolved flush() as "safe
202
+ // to complete the run"; a flush error that escaped the controller
203
+ // must reject here instead of silently leaving events queued.
204
+ throw escapedFlushError.error;
205
+ }
171
206
  return getSnapshot();
172
207
  },
173
208
  getSnapshot,
@@ -1,4 +1,5 @@
1
1
  import type { ChatRequestContext, ChatSystemMessage, ChatUiMessage } from "../../chat/types.js";
2
+ import type { HistoricalToolInputCompactionDiagnostic } from "../../chat/message-prep.js";
2
3
  import type { AgentRuntimeMessage } from "../runtime/message-adapter.js";
3
4
  import type { ConversationRunEvent } from "../conversation/run-events.js";
4
5
  import type { HostedChatRuntimeCreationOptions, HostedChatRuntimeCreationResult } from "./chat-runtime-contract.js";
@@ -16,7 +17,7 @@ export type NormalizedHostedChatRequest = {
16
17
  parentMessageId: string | undefined;
17
18
  };
18
19
  /** Options accepted by prepare hosted chat runtime messages. */
19
- export type PrepareHostedChatRuntimeMessagesOptions = Pick<PrepareAgentRuntimeMessagesFromUiMessagesOptions, "emptyConversationPrompt" | "providerOwnedToolNames" | "abortSignal" | "fileContentFetchTimeoutMs"> & {
20
+ export type PrepareHostedChatRuntimeMessagesOptions = Pick<PrepareAgentRuntimeMessagesFromUiMessagesOptions, "emptyConversationPrompt" | "providerOwnedToolNames" | "abortSignal" | "fileContentFetchTimeoutMs" | "historicalToolInputRetention"> & {
20
21
  authToken?: string;
21
22
  apiUrl?: string | URL;
22
23
  projectId?: string | null;
@@ -118,6 +119,7 @@ export type HostedChatExecutionPreparationResult<TRuntimeAgentDefinition, TRunti
118
119
  runtime: TRuntimeResult;
119
120
  finalMessages: AgentRuntimeMessage[];
120
121
  contextBudgetDiagnostics?: ContextBudgetDiagnostics;
122
+ historicalToolInputCompactions?: HistoricalToolInputCompactionDiagnostic[];
121
123
  steering: HostedChatRuntimeCreationPreparationResult<TRuntimeAgentDefinition>["steering"];
122
124
  runtimeConfig: ResolvedHostedRuntimeRequestConfig;
123
125
  };
@@ -1 +1 @@
1
- {"version":3,"file":"chat-preparation.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/chat-preparation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-preparation.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/chat-preparation.ts"],"names":[],"mappings":"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"}
@@ -162,13 +162,22 @@ export async function prepareHostedChatExecution(input) {
162
162
  buildInstructions: input.buildInstructions,
163
163
  });
164
164
  const submittedFormInputResult = findSubmittedFormInputResult(normalized.effectiveMessages);
165
+ const historicalToolInputCompactions = [];
165
166
  const finalMessages = await prepareHostedChatRuntimeMessages(normalized.effectiveMessages, {
166
167
  authToken: input.request.authToken,
167
168
  apiUrl: input.apiUrl,
168
169
  projectId: input.request.projectId,
169
170
  providerOwnedToolNames: getProviderToolNames(input.agentConfig),
170
171
  abortSignal: input.abortSignal,
172
+ historicalToolInputRetention: {
173
+ diagnostics: historicalToolInputCompactions,
174
+ },
171
175
  });
176
+ if (historicalToolInputCompactions.length > 0) {
177
+ input.contextBudget?.logger?.debug?.("Hosted chat historical tool inputs compacted", {
178
+ toolInputCompactions: historicalToolInputCompactions,
179
+ });
180
+ }
172
181
  let budgetedContext;
173
182
  if (input.contextBudget) {
174
183
  try {
@@ -203,6 +212,7 @@ export async function prepareHostedChatExecution(input) {
203
212
  runtime,
204
213
  finalMessages: budgetedContext?.messages ?? finalMessages,
205
214
  contextBudgetDiagnostics: budgetedContext?.diagnostics,
215
+ ...(historicalToolInputCompactions.length > 0 ? { historicalToolInputCompactions } : {}),
206
216
  steering: runtimePreparation.steering,
207
217
  runtimeConfig: runtimePreparation.runtimeConfig,
208
218
  };
@@ -216,6 +226,7 @@ export async function prepareHostedChatRuntimeMessages(messages, options = {}) {
216
226
  providerOwnedToolNames: options.providerOwnedToolNames,
217
227
  abortSignal: options.abortSignal,
218
228
  fileContentFetchTimeoutMs: options.fileContentFetchTimeoutMs,
229
+ historicalToolInputRetention: options.historicalToolInputRetention,
219
230
  });
220
231
  }
221
232
  const authToken = options.authToken;
@@ -226,6 +237,7 @@ export async function prepareHostedChatRuntimeMessages(messages, options = {}) {
226
237
  providerOwnedToolNames: options.providerOwnedToolNames,
227
238
  abortSignal: options.abortSignal,
228
239
  fileContentFetchTimeoutMs: options.fileContentFetchTimeoutMs,
240
+ historicalToolInputRetention: options.historicalToolInputRetention,
229
241
  resolveFileUrl: ({ uploadId }) => getRuntimeUploadUrl({
230
242
  apiUrl,
231
243
  authToken,
@@ -1,3 +1,4 @@
1
+ import { type HistoricalToolInputRetentionOptions } from "../../chat/message-prep.js";
1
2
  import type { ChatUiMessage } from "../../chat/types.js";
2
3
  import type { AgUiResumeValue } from "../ag-ui/tool-shared.js";
3
4
  import type { DetachedRunTracker } from "../service/detached-run-tracker.js";
@@ -17,6 +18,7 @@ export type HostedDurableRunAuthErrorResponse = {
17
18
  };
18
19
  /** Public API contract for hosted durable run logger. */
19
20
  export type HostedDurableRunLogger = {
21
+ debug?: (message: string, metadata?: Record<string, unknown>) => void;
20
22
  error(message: string, metadata?: Record<string, unknown>): void;
21
23
  };
22
24
  /** Input payload for hosted durable run start execution. */
@@ -51,8 +53,16 @@ export declare function resolveHostedDurableRunSetupErrorResponse(input: {
51
53
  errorCode: string;
52
54
  statusCode: HostedDurableRunSetupErrorStatusCode;
53
55
  };
56
+ declare function parseAcceptedDetachedStartResponse(response: Response): Promise<HostedDurableRunAccepted>;
54
57
  /** Prepare durable detached-start messages without carrying completed large historical tool inputs. */
55
- export declare function prepareDetachedStartMessages(messages: ChatUiMessage[]): ChatUiMessage[];
58
+ export declare function prepareDetachedStartMessages(messages: ChatUiMessage[], options?: {
59
+ historicalToolInputRetention?: HistoricalToolInputRetentionOptions;
60
+ }): ChatUiMessage[];
61
+ /** Test-only internals for durable chat run start behavior. */
62
+ export declare const durableChatRunStartInternals: {
63
+ parseAcceptedDetachedStartResponse: typeof parseAcceptedDetachedStartResponse;
64
+ };
56
65
  /** Execute hosted durable chat run. */
57
66
  export declare function executeHostedDurableChatRun<TExecution>(input: ExecuteHostedDurableChatRunInput<TExecution>): Promise<Response>;
67
+ export {};
58
68
  //# sourceMappingURL=durable-chat-run-start.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"durable-chat-run-start.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/durable-chat-run-start.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,0EAA0E;AAC1E,MAAM,MAAM,oCAAoC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErF,2DAA2D;AAC3D,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,iCAAiC,GAAG;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAClE,CAAC;AAEF,4DAA4D;AAC5D,MAAM,MAAM,mCAAmC,CAAC,UAAU,IAAI;IAC5D,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,iCAAiC,CAAC,UAAU,IAAI;IAC1D,SAAS,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,gCAAgC,CAAC,UAAU,IAAI;IACzD,GAAG,EAAE,uBAAuB,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IACxE,sBAAsB,EAAE,CACtB,KAAK,EAAE,mCAAmC,CAAC,UAAU,CAAC,KACnD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,iCAAiC,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3F,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,iCAAiC,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5F,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC,CAAC;AA0BF,mEAAmE;AACnE,wBAAgB,yCAAyC,CAAC,KAAK,EAAE;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;CACxB,GAAG;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,oCAAoC,CAAC;CAClD,CAiBA;AAyBD,uGAAuG;AACvG,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAEvF;AA8DD,uCAAuC;AACvC,wBAAsB,2BAA2B,CAAC,UAAU,EAC1D,KAAK,EAAE,gCAAgC,CAAC,UAAU,CAAC,GAClD,OAAO,CAAC,QAAQ,CAAC,CA0DnB"}
1
+ {"version":3,"file":"durable-chat-run-start.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/hosted/durable-chat-run-start.ts"],"names":[],"mappings":"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"}