@moxt-ai/mobius 0.0.146 → 0.0.149

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 (42) hide show
  1. package/dist/agent-catalog/agent-diagnostics.d.ts +1 -1
  2. package/dist/agent-catalog/agent-diagnostics.d.ts.map +1 -1
  3. package/dist/agent-catalog/agent-diagnostics.js +31 -8
  4. package/dist/agent-catalog/agent-diagnostics.js.map +1 -1
  5. package/dist/agent-catalog/agent-discovery.d.ts +15 -1
  6. package/dist/agent-catalog/agent-discovery.d.ts.map +1 -1
  7. package/dist/agent-catalog/agent-discovery.js +34 -1
  8. package/dist/agent-catalog/agent-discovery.js.map +1 -1
  9. package/dist/agent-catalog/discover-agent.d.ts.map +1 -1
  10. package/dist/agent-catalog/discover-agent.js +3 -2
  11. package/dist/agent-catalog/discover-agent.js.map +1 -1
  12. package/dist/agent-catalog/discover-local-agents.d.ts +1 -0
  13. package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -1
  14. package/dist/agent-catalog/discover-local-agents.js +8 -3
  15. package/dist/agent-catalog/discover-local-agents.js.map +1 -1
  16. package/dist/cli.js +370 -177
  17. package/dist/cli.js.map +3 -3
  18. package/dist/daemon-active-turn.d.ts +15 -2
  19. package/dist/daemon-active-turn.d.ts.map +1 -1
  20. package/dist/daemon-active-turn.js +63 -25
  21. package/dist/daemon-active-turn.js.map +1 -1
  22. package/dist/daemon-command-handler.js +3 -3
  23. package/dist/daemon-history-commands.d.ts +4 -7
  24. package/dist/daemon-history-commands.d.ts.map +1 -1
  25. package/dist/daemon-history-commands.js.map +1 -1
  26. package/dist/daemon-prompt-executor.d.ts +1 -1
  27. package/dist/daemon-prompt-executor.d.ts.map +1 -1
  28. package/dist/daemon-prompt-executor.js +1 -3
  29. package/dist/daemon-prompt-executor.js.map +1 -1
  30. package/dist/daemon-turn-registry.d.ts +5 -43
  31. package/dist/daemon-turn-registry.d.ts.map +1 -1
  32. package/dist/daemon-turn-registry.js +40 -1
  33. package/dist/daemon-turn-registry.js.map +1 -1
  34. package/dist/index.js +325 -167
  35. package/dist/index.js.map +3 -3
  36. package/dist/native-sessions/live-history-page.d.ts +4 -7
  37. package/dist/native-sessions/live-history-page.d.ts.map +1 -1
  38. package/dist/native-sessions/live-history-page.js +163 -107
  39. package/dist/native-sessions/live-history-page.js.map +1 -1
  40. package/dist/runtime.js +325 -167
  41. package/dist/runtime.js.map +3 -3
  42. package/package.json +1 -1
@@ -1,8 +1,5 @@
1
- import { type NativeMessagePage, type NativeSessionHistory, type NativeSessionResult } from "@moxt-ai/mobius-protocol";
2
- type ActiveTurnSnapshot = Extract<NativeSessionResult, {
3
- readonly action: "active-turn";
4
- }>["turn"];
5
- export declare function paginateLiveSessionHistory(history: NativeSessionHistory, activeTurn: ActiveTurnSnapshot, sessionId: string, cursor: string | null, limit: number): NativeMessagePage;
6
- export declare function mergeLiveSessionHistory(history: NativeSessionHistory, activeTurn: ActiveTurnSnapshot, sessionId: string): NativeSessionHistory;
7
- export {};
1
+ import { type NativeMessagePage, type NativeSessionHistory } from "@moxt-ai/mobius-protocol";
2
+ import type { ActiveTurnRecovery } from "../daemon-active-turn.ts";
3
+ export declare function paginateLiveSessionHistory(history: NativeSessionHistory, activeTurn: ActiveTurnRecovery | null, sessionId: string, encodedCursor: string | null, limit: number): NativeMessagePage;
4
+ export declare function mergeLiveSessionHistory(history: NativeSessionHistory, activeTurn: ActiveTurnRecovery | null, sessionId: string): NativeSessionHistory;
8
5
  //# sourceMappingURL=live-history-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"live-history-page.d.ts","sourceRoot":"","sources":["../../src/native-sessions/live-history-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAE3B,MAAM,0BAA0B,CAAC;AAGlC,KAAK,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAsKnG,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,oBAAoB,EAC7B,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,EAAE,MAAM,GACd,iBAAiB,CA8FnB;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,oBAAoB,EAC7B,UAAU,EAAE,kBAAkB,EAC9B,SAAS,EAAE,MAAM,GAClB,oBAAoB,CAYtB"}
1
+ {"version":3,"file":"live-history-page.d.ts","sourceRoot":"","sources":["../../src/native-sessions/live-history-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAE5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AA+UnE,wBAAgB,0BAA0B,CACtC,OAAO,EAAE,oBAAoB,EAC7B,UAAU,EAAE,kBAAkB,GAAG,IAAI,EACrC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,KAAK,EAAE,MAAM,GACd,iBAAiB,CAkBnB;AAED,wBAAgB,uBAAuB,CACnC,OAAO,EAAE,oBAAoB,EAC7B,UAAU,EAAE,kBAAkB,GAAG,IAAI,EACrC,SAAS,EAAE,MAAM,GAClB,oBAAoB,CAYtB"}
@@ -1,9 +1,9 @@
1
1
  import { SESSION_HISTORY_CHARACTER_LIMIT, } from "@moxt-ai/mobius-protocol";
2
2
  import { AcpExecutionError } from "../acp/agent-runtime-manager.js";
3
- function liveHistoryCursor(sessionId, endIndex) {
4
- return Buffer.from(JSON.stringify({ endIndex, sessionId }), "utf8").toString("base64url");
3
+ function encodeLiveHistoryCursor(cursor) {
4
+ return Buffer.from(JSON.stringify(cursor), "utf8").toString("base64url");
5
5
  }
6
- function liveHistoryEndIndex(cursor, sessionId) {
6
+ function decodeLiveHistoryCursor(cursor, sessionId) {
7
7
  try {
8
8
  if (!/^[A-Za-z0-9_-]{1,512}$/u.test(cursor)) {
9
9
  throw new Error("Invalid cursor alphabet");
@@ -13,19 +13,38 @@ function liveHistoryEndIndex(cursor, sessionId) {
13
13
  throw new Error("Invalid cursor shape");
14
14
  }
15
15
  const record = Object.fromEntries(Object.entries(value));
16
- if (Object.keys(record).sort().join(",") !== "endIndex,sessionId" ||
16
+ const keys = Object.keys(record).sort().join(",");
17
+ const legacyNative = keys === "endIndex,sessionId";
18
+ const kind = legacyNative ? "native" : record["kind"];
19
+ if ((keys !== "endIndex,kind,sessionId" && keys !== "endIndex,epoch,kind,sessionId" && !legacyNative) ||
17
20
  record["sessionId"] !== sessionId ||
21
+ (kind !== "active" && kind !== "native") ||
18
22
  typeof record["endIndex"] !== "number" ||
19
23
  !Number.isSafeInteger(record["endIndex"]) ||
20
24
  record["endIndex"] < 0) {
21
25
  throw new Error("Invalid cursor target");
22
26
  }
23
- return record["endIndex"];
27
+ if (kind === "active") {
28
+ if (keys !== "endIndex,epoch,kind,sessionId" || typeof record["epoch"] !== "string") {
29
+ throw new Error("Invalid active cursor target");
30
+ }
31
+ return { endIndex: record["endIndex"], epoch: record["epoch"], kind, sessionId };
32
+ }
33
+ if (keys !== "endIndex,kind,sessionId" && !legacyNative) {
34
+ throw new Error("Invalid native cursor target");
35
+ }
36
+ return { endIndex: record["endIndex"], kind, sessionId };
24
37
  }
25
38
  catch (cause) {
26
39
  throw new AcpExecutionError("The native Session history cursor is invalid", { cause }, "invalid_cursor");
27
40
  }
28
41
  }
42
+ function activeHistoryCursor(sessionId, epoch, endIndex) {
43
+ return encodeLiveHistoryCursor({ endIndex, epoch, kind: "active", sessionId });
44
+ }
45
+ function nativeHistoryCursor(sessionId, endIndex) {
46
+ return encodeLiveHistoryCursor({ endIndex, kind: "native", sessionId });
47
+ }
29
48
  function liveHistoryCoveredTurnRanges(history) {
30
49
  const ranges = [];
31
50
  let historyIndex = history.messages.length;
@@ -49,155 +68,192 @@ function historyMessageCharacters(message) {
49
68
  ? JSON.stringify(message.activities).length + JSON.stringify(message.content).length
50
69
  : 0));
51
70
  }
52
- function boundedActiveMessages(messages, messageLimit, characterLimit) {
71
+ function isNativeHistoryImageMimeType(mimeType) {
72
+ return (mimeType === "image/png" || mimeType === "image/jpeg" || mimeType === "image/gif" || mimeType === "image/webp");
73
+ }
74
+ function selectMessagesBefore(messages, endIndex, messageLimit, characterLimit) {
53
75
  const selected = [];
54
76
  let remainingCharacters = characterLimit;
55
- for (let index = messages.length - 1; index >= 0 && selected.length < messageLimit; index -= 1) {
77
+ let startIndex = endIndex;
78
+ for (let index = endIndex - 1; index >= 0 && selected.length < messageLimit; index -= 1) {
56
79
  const message = messages[index];
57
80
  if (message === undefined) {
58
81
  break;
59
82
  }
60
83
  const characters = historyMessageCharacters(message);
61
- if (characters <= remainingCharacters) {
62
- selected.unshift(message);
63
- remainingCharacters -= characters;
64
- continue;
65
- }
66
- const structuredCharacters = characters - message.text.length;
67
- if (selected.length === 0 && structuredCharacters <= remainingCharacters) {
68
- const textCharacters = remainingCharacters - structuredCharacters;
69
- selected.unshift({ ...message, text: textCharacters === 0 ? "" : message.text.slice(-textCharacters) });
70
- remainingCharacters = 0;
84
+ if (characters > remainingCharacters) {
85
+ break;
71
86
  }
72
- break;
87
+ selected.unshift(message);
88
+ remainingCharacters -= characters;
89
+ startIndex = index;
73
90
  }
74
- return {
75
- characters: characterLimit - remainingCharacters,
76
- messages: selected,
77
- truncated: selected.length !== messages.length,
78
- };
91
+ if (selected.length === 0 && endIndex > 0) {
92
+ throw new AcpExecutionError("A native Session history item exceeds the page budget", {}, "history_item_too_large");
93
+ }
94
+ return { characters: characterLimit - remainingCharacters, messages: selected, startIndex };
79
95
  }
80
96
  function nativeActiveMessage(message) {
81
- return message.role === "user"
82
- ? { role: "user", text: message.text }
83
- : {
97
+ if (message.role === "assistant") {
98
+ return {
84
99
  activities: message.activities,
85
100
  content: message.content,
86
101
  role: "assistant",
87
102
  text: message.text,
88
103
  };
104
+ }
105
+ const images = (message.images ?? []).flatMap((image) => {
106
+ if (image.data.length < 4 ||
107
+ image.data.length % 4 !== 0 ||
108
+ !/^[A-Za-z0-9+/]*={0,2}$/u.test(image.data) ||
109
+ !isNativeHistoryImageMimeType(image.mimeType)) {
110
+ return [];
111
+ }
112
+ return [{ data: image.data, mimeType: image.mimeType, name: image.name }];
113
+ });
114
+ return { ...(images.length === 0 ? {} : { images }), role: "user", text: message.text };
115
+ }
116
+ function nativeHistoryCoversCompletedRecovery(history, recovery) {
117
+ const root = recovery.messages.find((message) => message.role === "user" && message.id === recovery.commandId);
118
+ if (root === undefined) {
119
+ return false;
120
+ }
121
+ const rootIndex = history.messages.findLastIndex((message) => message.role === "user" && message.text === root.text);
122
+ if (rootIndex < 0) {
123
+ return false;
124
+ }
125
+ const nativeAssistant = history.messages.slice(rootIndex + 1).filter((message) => message.role === "assistant");
126
+ if (nativeAssistant.length === 0) {
127
+ return false;
128
+ }
129
+ const recoveryAssistant = recovery.messages.filter((message) => message.role === "assistant");
130
+ const recoveryText = recoveryAssistant.map((message) => message.text).join("");
131
+ const nativeText = nativeAssistant.map((message) => message.text).join("");
132
+ if (recoveryText.length > 0 && !nativeText.includes(recoveryText)) {
133
+ return false;
134
+ }
135
+ const nativeContent = new Set(nativeAssistant.flatMap((message) => message.content).map((content) => JSON.stringify(content)));
136
+ return recoveryAssistant
137
+ .flatMap((message) => message.content)
138
+ .every((content) => nativeContent.has(JSON.stringify(content)));
89
139
  }
90
- function paginateAcpSessionHistory(history, sessionId, cursor, limit) {
140
+ function historyBeforeActiveTurn(history, activeTurn) {
91
141
  if (history.status === "unavailable") {
92
- if (cursor !== null) {
93
- throw new AcpExecutionError("Unavailable native Session history has no cursor", {}, "invalid_cursor");
94
- }
95
- return { cause: history.cause, nextCursor: null, status: "unavailable" };
142
+ return history;
96
143
  }
97
- const endIndex = cursor === null ? history.messages.length : liveHistoryEndIndex(cursor, sessionId);
144
+ const activeRoot = activeTurn.messages.find((message) => message.role === "user" && message.id === activeTurn.commandId);
145
+ const matchingActiveUserIndex = activeRoot === undefined
146
+ ? -1
147
+ : activeTurn.state === "completed" ||
148
+ (history.messages.at(-1)?.role === "user" && history.messages.at(-1)?.text === activeRoot.text) ||
149
+ history.coveredCommandIds.includes(activeTurn.commandId)
150
+ ? history.messages.findLastIndex((message) => message.role === "user" && message.text === activeRoot.text)
151
+ : -1;
152
+ const activeUserIndex = matchingActiveUserIndex >= 0
153
+ ? matchingActiveUserIndex
154
+ : (liveHistoryCoveredTurnRanges(history).find((range) => range.commandId === activeTurn.commandId)
155
+ ?.userIndex ?? -1);
156
+ if (activeUserIndex < 0) {
157
+ return history;
158
+ }
159
+ return {
160
+ ...history,
161
+ coveredCommandIds: history.coveredCommandIds.filter((id) => id !== activeTurn.commandId),
162
+ coveredMessageIds: history.coveredMessageIds.filter((id) => id !== `${activeTurn.commandId}:user` && id !== `${activeTurn.commandId}:agent`),
163
+ messages: history.messages.slice(0, activeUserIndex),
164
+ };
165
+ }
166
+ function paginateAvailableNativeHistory(history, sessionId, endIndex, limit, characterLimit) {
98
167
  if (endIndex > history.messages.length) {
99
168
  throw new AcpExecutionError("The native Session history cursor is invalid", {}, "invalid_cursor");
100
169
  }
101
- const startIndex = Math.max(0, endIndex - limit);
170
+ const selected = selectMessagesBefore(history.messages, endIndex, limit, characterLimit);
102
171
  const coveredMessageIds = new Set(history.coveredMessageIds);
103
172
  const ranges = liveHistoryCoveredTurnRanges(history);
104
173
  return {
105
174
  coveredCommandIds: ranges
106
- .filter((range) => range.userIndex >= startIndex && range.assistantEndIndex <= endIndex)
175
+ .filter((range) => range.userIndex >= selected.startIndex && range.assistantEndIndex <= endIndex)
107
176
  .map((range) => range.commandId),
108
177
  coveredMessageIds: ranges.flatMap((range) => [
109
- ...(range.userIndex >= startIndex &&
178
+ ...(range.userIndex >= selected.startIndex &&
110
179
  range.userIndex < endIndex &&
111
180
  coveredMessageIds.has(`${range.commandId}:user`)
112
181
  ? [`${range.commandId}:user`]
113
182
  : []),
114
- ...(range.assistantStartIndex >= startIndex &&
183
+ ...(range.assistantStartIndex >= selected.startIndex &&
115
184
  range.assistantEndIndex <= endIndex &&
116
185
  coveredMessageIds.has(`${range.commandId}:agent`)
117
186
  ? [`${range.commandId}:agent`]
118
187
  : []),
119
188
  ]),
120
- messages: history.messages.slice(startIndex, endIndex),
121
- nextCursor: startIndex > 0 ? liveHistoryCursor(sessionId, startIndex) : null,
189
+ messages: selected.messages,
190
+ nextCursor: selected.startIndex > 0 ? nativeHistoryCursor(sessionId, selected.startIndex) : null,
122
191
  status: "available",
123
192
  truncated: history.truncated,
124
193
  };
125
194
  }
126
- export function paginateLiveSessionHistory(history, activeTurn, sessionId, cursor, limit) {
127
- if (activeTurn === null || cursor !== null) {
128
- return paginateAcpSessionHistory(history, sessionId, cursor, limit);
195
+ function paginateNativeHistory(history, sessionId, cursor, limit) {
196
+ if (cursor?.kind === "active") {
197
+ throw new AcpExecutionError("The native Session history cursor is invalid", {}, "invalid_cursor");
129
198
  }
130
199
  if (history.status === "unavailable") {
131
- const bounded = boundedActiveMessages(activeTurn.messages.map(nativeActiveMessage), limit, SESSION_HISTORY_CHARACTER_LIMIT);
132
- return {
133
- coveredCommandIds: [],
134
- coveredMessageIds: [],
135
- messages: bounded.messages,
136
- nextCursor: null,
137
- status: "available",
138
- truncated: activeTurn.truncated || bounded.truncated,
139
- };
140
- }
141
- // Native turn identity tells us whether the source contains this turn. The
142
- // native format has no message IDs, so its root prompt locates the boundary
143
- // before any steering prompts. Keep that root (including attachments), then
144
- // replace the rest with the authoritative in-memory timeline.
145
- const activeRoot = activeTurn.messages.find((message) => message.role === "user" && message.id === activeTurn.commandId);
146
- const coveredActiveRoot = history.coveredCommandIds.includes(activeTurn.commandId);
147
- const matchingActiveUserIndex = coveredActiveRoot
148
- ? history.messages.findLastIndex((message) => message.role === "user" && message.text === (activeRoot?.text ?? activeTurn.prompt))
149
- : -1;
150
- const activeUserIndex = matchingActiveUserIndex >= 0
151
- ? matchingActiveUserIndex
152
- : (liveHistoryCoveredTurnRanges(history).find((range) => range.commandId === activeTurn.commandId)
153
- ?.userIndex ?? -1);
154
- if (activeUserIndex >= 0) {
155
- history = {
156
- ...history,
157
- coveredCommandIds: history.coveredCommandIds.filter((id) => id !== activeTurn.commandId),
158
- coveredMessageIds: history.coveredMessageIds.filter((id) => id !== `${activeTurn.commandId}:user` && id !== `${activeTurn.commandId}:agent`),
159
- messages: history.messages.slice(0, activeUserIndex + 1),
160
- };
161
- }
162
- const latestNativeMessage = history.messages.at(-1);
163
- const firstActiveMessage = activeTurn.messages[0];
164
- const preserveNativeRoot = activeUserIndex >= 0 ||
165
- (firstActiveMessage?.role === "user" &&
166
- latestNativeMessage?.role === "user" &&
167
- latestNativeMessage.text === firstActiveMessage.text);
168
- const activeMessages = activeTurn.messages.slice(preserveNativeRoot ? 1 : 0).map(nativeActiveMessage);
169
- const bounded = boundedActiveMessages(activeMessages, limit, SESSION_HISTORY_CHARACTER_LIMIT);
170
- let historicalMessageCount = 0;
171
- let remainingCharacters = SESSION_HISTORY_CHARACTER_LIMIT - bounded.characters;
172
- const historicalMessageLimit = Math.max(0, limit - bounded.messages.length);
173
- for (let index = history.messages.length - 1; index >= 0 && historicalMessageCount < historicalMessageLimit; index -= 1) {
174
- const message = history.messages[index];
175
- if (message === undefined) {
176
- break;
177
- }
178
- const characters = historyMessageCharacters(message);
179
- if (characters > remainingCharacters) {
180
- break;
200
+ if (cursor !== null) {
201
+ throw new AcpExecutionError("Unavailable native Session history has no cursor", {}, "invalid_cursor");
181
202
  }
182
- historicalMessageCount += 1;
183
- remainingCharacters -= characters;
203
+ return { cause: history.cause, nextCursor: null, status: "unavailable" };
184
204
  }
185
- const page = historicalMessageCount === 0
186
- ? {
187
- coveredCommandIds: [],
188
- coveredMessageIds: [],
189
- messages: [],
190
- nextCursor: history.messages.length === 0 ? null : liveHistoryCursor(sessionId, history.messages.length),
191
- status: "available",
192
- truncated: history.truncated,
193
- }
194
- : paginateAcpSessionHistory(history, sessionId, null, historicalMessageCount);
205
+ return paginateAvailableNativeHistory(history, sessionId, cursor?.endIndex ?? history.messages.length, limit, SESSION_HISTORY_CHARACTER_LIMIT);
206
+ }
207
+ function paginateActiveTurn(history, activeTurn, sessionId, endIndex, limit) {
208
+ if (endIndex > activeTurn.messages.length) {
209
+ throw new AcpExecutionError("The native Session history cursor is invalid", {}, "invalid_cursor");
210
+ }
211
+ const activeMessages = activeTurn.messages.map(nativeActiveMessage);
212
+ const active = selectMessagesBefore(activeMessages, endIndex, limit, SESSION_HISTORY_CHARACTER_LIMIT);
213
+ const historicalLimit = limit - active.messages.length;
214
+ const historicalCharacterLimit = SESSION_HISTORY_CHARACTER_LIMIT - active.characters;
215
+ const pendingHistoricalCursor = history.status === "available" && history.messages.length > 0
216
+ ? nativeHistoryCursor(sessionId, history.messages.length)
217
+ : null;
218
+ const latestHistoricalMessage = history.status === "available" ? history.messages.at(-1) : undefined;
219
+ const historicalPageFits = latestHistoricalMessage === undefined ||
220
+ historyMessageCharacters(latestHistoricalMessage) <= historicalCharacterLimit;
221
+ const historical = active.startIndex === 0 && history.status === "available" && historicalLimit > 0 && historicalPageFits
222
+ ? paginateAvailableNativeHistory(history, sessionId, history.messages.length, historicalLimit, historicalCharacterLimit)
223
+ : null;
195
224
  return {
196
- ...page,
197
- messages: [...page.messages, ...bounded.messages],
198
- truncated: page.truncated || activeTurn.truncated || bounded.truncated,
225
+ coveredCommandIds: historical?.coveredCommandIds ?? [],
226
+ coveredMessageIds: [
227
+ ...(historical?.coveredMessageIds ?? []),
228
+ ...(active.startIndex === 0 ? [`${activeTurn.commandId}:user`, `${activeTurn.commandId}:agent`] : []),
229
+ ],
230
+ messages: [...(historical?.messages ?? []), ...active.messages],
231
+ nextCursor: active.startIndex > 0
232
+ ? activeHistoryCursor(sessionId, activeTurn.epoch, active.startIndex)
233
+ : historical === null
234
+ ? pendingHistoricalCursor
235
+ : historical.nextCursor,
236
+ status: "available",
237
+ truncated: activeTurn.truncated || (historical?.truncated ?? false),
199
238
  };
200
239
  }
240
+ export function paginateLiveSessionHistory(history, activeTurn, sessionId, encodedCursor, limit) {
241
+ const cursor = encodedCursor === null ? null : decodeLiveHistoryCursor(encodedCursor, sessionId);
242
+ if (activeTurn === null ||
243
+ (activeTurn.state === "completed" &&
244
+ history.status === "available" &&
245
+ nativeHistoryCoversCompletedRecovery(history, activeTurn))) {
246
+ return paginateNativeHistory(history, sessionId, cursor, limit);
247
+ }
248
+ const historical = historyBeforeActiveTurn(history, activeTurn);
249
+ if (cursor?.kind === "native") {
250
+ return paginateNativeHistory(historical, sessionId, cursor, limit);
251
+ }
252
+ if (cursor !== null && cursor.epoch !== activeTurn.epoch) {
253
+ throw new AcpExecutionError("The active Turn history cursor is stale", {}, "stale_cursor");
254
+ }
255
+ return paginateActiveTurn(historical, activeTurn, sessionId, cursor?.endIndex ?? activeTurn.messages.length, limit);
256
+ }
201
257
  export function mergeLiveSessionHistory(history, activeTurn, sessionId) {
202
258
  const page = paginateLiveSessionHistory(history, activeTurn, sessionId, null, 1_000);
203
259
  if (page.status === "unavailable") {
@@ -208,7 +264,7 @@ export function mergeLiveSessionHistory(history, activeTurn, sessionId) {
208
264
  coveredMessageIds: page.coveredMessageIds,
209
265
  messages: page.messages,
210
266
  status: "available",
211
- truncated: page.truncated,
267
+ truncated: page.truncated || page.nextCursor !== null,
212
268
  };
213
269
  }
214
270
  //# sourceMappingURL=live-history-page.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"live-history-page.js","sourceRoot":"","sources":["../../src/native-sessions/live-history-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,+BAA+B,GAClC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAcpE,SAAS,iBAAiB,CAAC,SAAiB,EAAE,QAAgB;IAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,SAAiB;IAC1D,IAAI,CAAC;QACD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,IACI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,oBAAoB;YAC7D,MAAM,CAAC,WAAW,CAAC,KAAK,SAAS;YACjC,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,QAAQ;YACtC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACzC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EACxB,CAAC;YACC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,iBAAiB,CAAC,8CAA8C,EAAE,EAAE,KAAK,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC7G,CAAC;AACL,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAsC;IACxE,MAAM,MAAM,GAAkC,EAAE,CAAC;IACjD,IAAI,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC3C,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAChD,IAAI,mBAAmB,GAAG,YAAY,CAAC;QACvC,OAAO,mBAAmB,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,GAAG,CAAC,CAAC,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YAChG,mBAAmB,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,SAAS,GAAG,mBAAmB,GAAG,CAAC,CAAC;QAC1C,IAAI,mBAAmB,KAAK,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACvF,MAAM;QACV,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5F,YAAY,GAAG,SAAS,CAAC;IAC7B,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,wBAAwB,CAAC,OAA0D;IACxF,OAAO,CACH,OAAO,CAAC,IAAI,CAAC,MAAM;QACnB,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW;YACzB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM;YACpF,CAAC,CAAC,CAAC,CAAC,CACX,CAAC;AACN,CAAC;AAED,SAAS,qBAAqB,CAC1B,QAAyC,EACzC,YAAoB,EACpB,cAAsB;IAEtB,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,IAAI,mBAAmB,GAAG,cAAc,CAAC;IACzC,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7F,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM;QACV,CAAC;QACD,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,UAAU,IAAI,mBAAmB,EAAE,CAAC;YACpC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1B,mBAAmB,IAAI,UAAU,CAAC;YAClC,SAAS;QACb,CAAC;QACD,MAAM,oBAAoB,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,IAAI,mBAAmB,EAAE,CAAC;YACvE,MAAM,cAAc,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;YAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACxG,mBAAmB,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM;IACV,CAAC;IACD,OAAO;QACH,UAAU,EAAE,cAAc,GAAG,mBAAmB;QAChD,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;KACjD,CAAC;AACN,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA0B;IACnD,OAAO,OAAO,CAAC,IAAI,KAAK,MAAM;QAC1B,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;QACtC,CAAC,CAAC;YACI,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,OAAO,CAAC,IAAI;SACrB,CAAC;AACZ,CAAC;AAcD,SAAS,yBAAyB,CAC9B,OAA6B,EAC7B,SAAiB,EACjB,MAAqB,EACrB,KAAa;IAEb,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,iBAAiB,CAAC,kDAAkD,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC1G,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAC7E,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpG,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrC,MAAM,IAAI,iBAAiB,CAAC,8CAA8C,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACtG,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC;IACjD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO;QACH,iBAAiB,EAAE,MAAM;aACpB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU,IAAI,KAAK,CAAC,iBAAiB,IAAI,QAAQ,CAAC;aACvF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;QACpC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACzC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,UAAU;gBACjC,KAAK,CAAC,SAAS,GAAG,QAAQ;gBAC1B,iBAAiB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,OAAO,CAAC;gBAC5C,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,OAAO,CAAC;gBAC7B,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,UAAU;gBAC3C,KAAK,CAAC,iBAAiB,IAAI,QAAQ;gBACnC,iBAAiB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC7C,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC;gBAC9B,CAAC,CAAC,EAAE,CAAC;SACZ,CAAC;QACF,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;QACtD,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;QAC5E,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,OAAO,CAAC,SAAS;KAC/B,CAAC;AACN,CAAC;AAED,MAAM,UAAU,0BAA0B,CACtC,OAA6B,EAC7B,UAA8B,EAC9B,SAAiB,EACjB,MAAqB,EACrB,KAAa;IAEb,IAAI,UAAU,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACzC,OAAO,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,qBAAqB,CACjC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAC5C,KAAK,EACL,+BAA+B,CAClC,CAAC;QACF,OAAO;YACH,iBAAiB,EAAE,EAAE;YACrB,iBAAiB,EAAE,EAAE;YACrB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,UAAU,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;SACvD,CAAC;IACN,CAAC;IACD,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,8DAA8D;IAC9D,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CACvC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,CAC9E,CAAC;IACF,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IACnF,MAAM,uBAAuB,GAAG,iBAAiB;QAC7C,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAC1B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,CACnG;QACH,CAAC,CAAC,CAAC,CAAC,CAAC;IACT,MAAM,eAAe,GACjB,uBAAuB,IAAI,CAAC;QACxB,CAAC,CAAC,uBAAuB;QACzB,CAAC,CAAC,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,CAAC;YAC5F,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG;YACN,GAAG,OAAO;YACV,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,UAAU,CAAC,SAAS,CAAC;YACxF,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAC/C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,SAAS,OAAO,IAAI,EAAE,KAAK,GAAG,UAAU,CAAC,SAAS,QAAQ,CAC1F;YACD,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC;SAC3D,CAAC;IACN,CAAC;IACD,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,kBAAkB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,kBAAkB,GACpB,eAAe,IAAI,CAAC;QACpB,CAAC,kBAAkB,EAAE,IAAI,KAAK,MAAM;YAChC,mBAAmB,EAAE,IAAI,KAAK,MAAM;YACpC,mBAAmB,CAAC,IAAI,KAAK,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACtG,MAAM,OAAO,GAAG,qBAAqB,CAAC,cAAc,EAAE,KAAK,EAAE,+BAA+B,CAAC,CAAC;IAE9F,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,IAAI,mBAAmB,GAAG,+BAA+B,GAAG,OAAO,CAAC,UAAU,CAAC;IAC/E,MAAM,sBAAsB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5E,KACI,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EACvC,KAAK,IAAI,CAAC,IAAI,sBAAsB,GAAG,sBAAsB,EAC7D,KAAK,IAAI,CAAC,EACZ,CAAC;QACC,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM;QACV,CAAC;QACD,MAAM,UAAU,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,UAAU,GAAG,mBAAmB,EAAE,CAAC;YACnC,MAAM;QACV,CAAC;QACD,sBAAsB,IAAI,CAAC,CAAC;QAC5B,mBAAmB,IAAI,UAAU,CAAC;IACtC,CAAC;IACD,MAAM,IAAI,GACN,sBAAsB,KAAK,CAAC;QACxB,CAAC,CAAC;YACI,iBAAiB,EAAE,EAAE;YACrB,iBAAiB,EAAE,EAAE;YACrB,QAAQ,EAAE,EAAE;YACZ,UAAU,EACN,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChG,MAAM,EAAE,WAAoB;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B;QACH,CAAC,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACtF,OAAO;QACH,GAAG,IAAI;QACP,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjD,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;KACzE,CAAC;AACN,CAAC;AAED,MAAM,UAAU,uBAAuB,CACnC,OAA6B,EAC7B,UAA8B,EAC9B,SAAiB;IAEjB,MAAM,IAAI,GAAG,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACrF,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QAChC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACxD,CAAC;IACD,OAAO;QACH,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;KAC5B,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"live-history-page.js","sourceRoot":"","sources":["../../src/native-sessions/live-history-page.ts"],"names":[],"mappings":"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"}