@moxt-ai/mobius 0.0.144 → 0.0.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +96 -28
- package/dist/cli.js.map +2 -2
- package/dist/daemon-active-turn.d.ts +1 -0
- package/dist/daemon-active-turn.d.ts.map +1 -1
- package/dist/daemon-active-turn.js +37 -8
- package/dist/daemon-active-turn.js.map +1 -1
- package/dist/daemon-command-handler.d.ts.map +1 -1
- package/dist/daemon-command-handler.js +1 -0
- package/dist/daemon-command-handler.js.map +1 -1
- package/dist/daemon-prompt-executor.d.ts +2 -1
- package/dist/daemon-prompt-executor.d.ts.map +1 -1
- package/dist/daemon-prompt-executor.js +8 -1
- package/dist/daemon-prompt-executor.js.map +1 -1
- package/dist/daemon-turn-registry.d.ts +13 -8
- package/dist/daemon-turn-registry.d.ts.map +1 -1
- package/dist/daemon-turn-registry.js +4 -0
- package/dist/daemon-turn-registry.js.map +1 -1
- package/dist/index.js +95 -27
- package/dist/index.js.map +2 -2
- package/dist/native-sessions/live-history-page.d.ts.map +1 -1
- package/dist/native-sessions/live-history-page.js +34 -17
- package/dist/native-sessions/live-history-page.js.map +1 -1
- package/dist/runtime.js +95 -27
- package/dist/runtime.js.map +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-history-page.d.ts","sourceRoot":"","sources":["../../src/native-sessions/live-history-page.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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"}
|
|
@@ -77,6 +77,16 @@ function boundedActiveMessages(messages, messageLimit, characterLimit) {
|
|
|
77
77
|
truncated: selected.length !== messages.length,
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
|
+
function nativeActiveMessage(message) {
|
|
81
|
+
return message.role === "user"
|
|
82
|
+
? { role: "user", text: message.text }
|
|
83
|
+
: {
|
|
84
|
+
activities: message.activities,
|
|
85
|
+
content: message.content,
|
|
86
|
+
role: "assistant",
|
|
87
|
+
text: message.text,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
80
90
|
function paginateAcpSessionHistory(history, sessionId, cursor, limit) {
|
|
81
91
|
if (history.status === "unavailable") {
|
|
82
92
|
if (cursor !== null) {
|
|
@@ -118,22 +128,29 @@ export function paginateLiveSessionHistory(history, activeTurn, sessionId, curso
|
|
|
118
128
|
return paginateAcpSessionHistory(history, sessionId, cursor, limit);
|
|
119
129
|
}
|
|
120
130
|
if (history.status === "unavailable") {
|
|
121
|
-
const bounded = boundedActiveMessages(activeTurn.messages
|
|
131
|
+
const bounded = boundedActiveMessages(activeTurn.messages.map(nativeActiveMessage), limit, SESSION_HISTORY_CHARACTER_LIMIT);
|
|
122
132
|
return {
|
|
123
133
|
coveredCommandIds: [],
|
|
124
134
|
coveredMessageIds: [],
|
|
125
|
-
messages:
|
|
135
|
+
messages: bounded.messages,
|
|
126
136
|
nextCursor: null,
|
|
127
137
|
status: "available",
|
|
128
138
|
truncated: activeTurn.truncated || bounded.truncated,
|
|
129
139
|
};
|
|
130
140
|
}
|
|
131
|
-
// Native turn identity
|
|
132
|
-
//
|
|
133
|
-
//
|
|
134
|
-
|
|
135
|
-
|
|
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))
|
|
136
149
|
: -1;
|
|
150
|
+
const activeUserIndex = matchingActiveUserIndex >= 0
|
|
151
|
+
? matchingActiveUserIndex
|
|
152
|
+
: (liveHistoryCoveredTurnRanges(history).find((range) => range.commandId === activeTurn.commandId)
|
|
153
|
+
?.userIndex ?? -1);
|
|
137
154
|
if (activeUserIndex >= 0) {
|
|
138
155
|
history = {
|
|
139
156
|
...history,
|
|
@@ -143,16 +160,16 @@ export function paginateLiveSessionHistory(history, activeTurn, sessionId, curso
|
|
|
143
160
|
};
|
|
144
161
|
}
|
|
145
162
|
const latestNativeMessage = history.messages.at(-1);
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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);
|
|
153
170
|
let historicalMessageCount = 0;
|
|
154
|
-
let remainingCharacters = SESSION_HISTORY_CHARACTER_LIMIT - bounded.characters
|
|
155
|
-
const historicalMessageLimit = Math.max(0, limit -
|
|
171
|
+
let remainingCharacters = SESSION_HISTORY_CHARACTER_LIMIT - bounded.characters;
|
|
172
|
+
const historicalMessageLimit = Math.max(0, limit - bounded.messages.length);
|
|
156
173
|
for (let index = history.messages.length - 1; index >= 0 && historicalMessageCount < historicalMessageLimit; index -= 1) {
|
|
157
174
|
const message = history.messages[index];
|
|
158
175
|
if (message === undefined) {
|
|
@@ -177,7 +194,7 @@ export function paginateLiveSessionHistory(history, activeTurn, sessionId, curso
|
|
|
177
194
|
: paginateAcpSessionHistory(history, sessionId, null, historicalMessageCount);
|
|
178
195
|
return {
|
|
179
196
|
...page,
|
|
180
|
-
messages: [...page.messages, ...
|
|
197
|
+
messages: [...page.messages, ...bounded.messages],
|
|
181
198
|
truncated: page.truncated || activeTurn.truncated || bounded.truncated,
|
|
182
199
|
};
|
|
183
200
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-history-page.js","sourceRoot":"","sources":["../../src/native-sessions/live-history-page.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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"}
|
package/dist/runtime.js
CHANGED
|
@@ -21000,6 +21000,23 @@ var activeTurnActivitySchema = external_exports.strictObject({
|
|
|
21000
21000
|
title: external_exports.string().max(500),
|
|
21001
21001
|
toolKind: external_exports.string().max(64)
|
|
21002
21002
|
}).readonly();
|
|
21003
|
+
var activeTurnUserMessageSchema = external_exports.strictObject({
|
|
21004
|
+
id: identifierStringSchema,
|
|
21005
|
+
images: external_exports.array(promptImageSchema).max(8).readonly().optional(),
|
|
21006
|
+
role: external_exports.literal("user"),
|
|
21007
|
+
text: external_exports.string().max(SESSION_HISTORY_CHARACTER_LIMIT)
|
|
21008
|
+
}).readonly();
|
|
21009
|
+
var activeTurnAssistantMessageSchema = external_exports.strictObject({
|
|
21010
|
+
activities: external_exports.array(activeTurnActivitySchema).max(100).readonly().default([]),
|
|
21011
|
+
content: external_exports.array(displayContentSchema).max(100).readonly().default([]),
|
|
21012
|
+
id: identifierStringSchema,
|
|
21013
|
+
role: external_exports.literal("assistant"),
|
|
21014
|
+
text: external_exports.string().max(SESSION_HISTORY_CHARACTER_LIMIT)
|
|
21015
|
+
}).readonly();
|
|
21016
|
+
var activeTurnMessageSchema = external_exports.discriminatedUnion("role", [
|
|
21017
|
+
activeTurnUserMessageSchema,
|
|
21018
|
+
activeTurnAssistantMessageSchema
|
|
21019
|
+
]);
|
|
21003
21020
|
var activeTurnSnapshotSchema = external_exports.strictObject({
|
|
21004
21021
|
activities: external_exports.array(activeTurnActivitySchema).readonly(),
|
|
21005
21022
|
commandId: identifierStringSchema,
|
|
@@ -21009,7 +21026,7 @@ var activeTurnSnapshotSchema = external_exports.strictObject({
|
|
|
21009
21026
|
truncated: external_exports.boolean(),
|
|
21010
21027
|
epoch: identifierStringSchema,
|
|
21011
21028
|
interaction: external_exports.discriminatedUnion("kind", [sessionPermissionRequestedEventSchema, sessionElicitationRequestedEventSchema]).nullable(),
|
|
21012
|
-
messages: external_exports.array(
|
|
21029
|
+
messages: external_exports.array(activeTurnMessageSchema).max(SESSION_HISTORY_MESSAGE_LIMIT).readonly(),
|
|
21013
21030
|
sequence: external_exports.number().int().nonnegative(),
|
|
21014
21031
|
state: external_exports.literal("running")
|
|
21015
21032
|
}).readonly();
|
|
@@ -37780,7 +37797,7 @@ var ActiveDaemonTurn = class {
|
|
|
37780
37797
|
#text = "";
|
|
37781
37798
|
#activities = /* @__PURE__ */ new Map();
|
|
37782
37799
|
#content = /* @__PURE__ */ new Map();
|
|
37783
|
-
#timeline
|
|
37800
|
+
#timeline;
|
|
37784
37801
|
#sequence = 0;
|
|
37785
37802
|
#interaction = null;
|
|
37786
37803
|
#epoch = decodeIdentifier(randomUUID());
|
|
@@ -37789,6 +37806,9 @@ var ActiveDaemonTurn = class {
|
|
|
37789
37806
|
this.command = command;
|
|
37790
37807
|
this.#controller = new AbortController();
|
|
37791
37808
|
this.#dispatch = { kind: "pending" };
|
|
37809
|
+
this.#timeline = [
|
|
37810
|
+
{ id: decodeIdentifier(command.commandId), images: command.images, kind: "user", text: command.prompt }
|
|
37811
|
+
];
|
|
37792
37812
|
}
|
|
37793
37813
|
enqueue = () => {
|
|
37794
37814
|
if (this.#dispatch.kind !== "pending") {
|
|
@@ -37832,7 +37852,10 @@ var ActiveDaemonTurn = class {
|
|
|
37832
37852
|
}
|
|
37833
37853
|
if (event.kind === AGENT_ACTIVITY_KIND) {
|
|
37834
37854
|
if (!this.#activities.has(event.activityId)) {
|
|
37835
|
-
this.#timeline = [
|
|
37855
|
+
this.#timeline = [
|
|
37856
|
+
...this.#timeline,
|
|
37857
|
+
{ activityId: event.activityId, id: decodeIdentifier(randomUUID()), kind: "activity" }
|
|
37858
|
+
];
|
|
37836
37859
|
}
|
|
37837
37860
|
this.#activities.set(event.activityId, {
|
|
37838
37861
|
activityId: event.activityId,
|
|
@@ -37850,7 +37873,10 @@ var ActiveDaemonTurn = class {
|
|
|
37850
37873
|
} else if (event.kind === AGENT_ACTIVITY_NARRATION_KIND) {
|
|
37851
37874
|
const previous = this.#activities.get(event.activityId);
|
|
37852
37875
|
if (previous === void 0) {
|
|
37853
|
-
this.#timeline = [
|
|
37876
|
+
this.#timeline = [
|
|
37877
|
+
...this.#timeline,
|
|
37878
|
+
{ activityId: event.activityId, id: decodeIdentifier(randomUUID()), kind: "activity" }
|
|
37879
|
+
];
|
|
37854
37880
|
}
|
|
37855
37881
|
this.#activities.set(event.activityId, {
|
|
37856
37882
|
activityId: event.activityId,
|
|
@@ -37868,15 +37894,16 @@ var ActiveDaemonTurn = class {
|
|
|
37868
37894
|
} else if (event.kind === AGENT_CONTENT_KIND) {
|
|
37869
37895
|
this.#content.set(event.contentId, event.content);
|
|
37870
37896
|
const target = this.#timeline.findLastIndex(
|
|
37871
|
-
(entry) => entry.kind === "message" && entry.
|
|
37897
|
+
(entry) => entry.kind === "message" && entry.sourceMessageId === event.messageId
|
|
37872
37898
|
);
|
|
37873
37899
|
if (target < 0) {
|
|
37874
37900
|
this.#timeline = [
|
|
37875
37901
|
...this.#timeline,
|
|
37876
37902
|
{
|
|
37877
37903
|
content: /* @__PURE__ */ new Map([[event.contentId, event.content]]),
|
|
37904
|
+
id: decodeIdentifier(randomUUID()),
|
|
37878
37905
|
kind: "message",
|
|
37879
|
-
|
|
37906
|
+
sourceMessageId: event.messageId,
|
|
37880
37907
|
text: ""
|
|
37881
37908
|
}
|
|
37882
37909
|
];
|
|
@@ -37899,7 +37926,7 @@ var ActiveDaemonTurn = class {
|
|
|
37899
37926
|
let remaining = text2;
|
|
37900
37927
|
while (remaining.length > 0) {
|
|
37901
37928
|
const latest = this.#timeline.at(-1);
|
|
37902
|
-
if (latest?.kind === "message" && latest.
|
|
37929
|
+
if (latest?.kind === "message" && latest.sourceMessageId === messageId) {
|
|
37903
37930
|
const available = SESSION_HISTORY_CHARACTER_LIMIT - latest.text.length;
|
|
37904
37931
|
if (available > 0) {
|
|
37905
37932
|
this.#timeline = [
|
|
@@ -37914,28 +37941,43 @@ var ActiveDaemonTurn = class {
|
|
|
37914
37941
|
...this.#timeline,
|
|
37915
37942
|
{
|
|
37916
37943
|
content: /* @__PURE__ */ new Map(),
|
|
37944
|
+
id: decodeIdentifier(randomUUID()),
|
|
37917
37945
|
kind: "message",
|
|
37918
|
-
messageId,
|
|
37946
|
+
sourceMessageId: messageId,
|
|
37919
37947
|
text: remaining.slice(0, SESSION_HISTORY_CHARACTER_LIMIT)
|
|
37920
37948
|
}
|
|
37921
37949
|
];
|
|
37922
37950
|
remaining = remaining.slice(SESSION_HISTORY_CHARACTER_LIMIT);
|
|
37923
37951
|
}
|
|
37924
37952
|
}
|
|
37953
|
+
recordSteeringPrompt = (command) => {
|
|
37954
|
+
if (this.#dispatch.kind !== "running" || command.sessionId !== this.command.sessionId || command.targetCommandId !== this.command.commandId) {
|
|
37955
|
+
return null;
|
|
37956
|
+
}
|
|
37957
|
+
this.#timeline = [
|
|
37958
|
+
...this.#timeline,
|
|
37959
|
+
{ id: decodeIdentifier(command.commandId), images: command.images, kind: "user", text: command.prompt }
|
|
37960
|
+
];
|
|
37961
|
+
return this.updated();
|
|
37962
|
+
};
|
|
37925
37963
|
timelineMessages() {
|
|
37926
37964
|
return this.#timeline.flatMap((entry) => {
|
|
37965
|
+
if (entry.kind === "user") {
|
|
37966
|
+
return [{ id: entry.id, images: entry.images, role: "user", text: entry.text }];
|
|
37967
|
+
}
|
|
37927
37968
|
if (entry.kind === "message") {
|
|
37928
37969
|
return [
|
|
37929
37970
|
{
|
|
37930
37971
|
activities: [],
|
|
37931
37972
|
content: [...entry.content.values()],
|
|
37973
|
+
id: entry.id,
|
|
37932
37974
|
role: "assistant",
|
|
37933
37975
|
text: entry.text
|
|
37934
37976
|
}
|
|
37935
37977
|
];
|
|
37936
37978
|
}
|
|
37937
37979
|
const activity2 = this.#activities.get(entry.activityId);
|
|
37938
|
-
return activity2 === void 0 ? [] : [{ activities: [activity2], content: [], role: "assistant", text: "" }];
|
|
37980
|
+
return activity2 === void 0 ? [] : [{ activities: [activity2], content: [], id: entry.id, role: "assistant", text: "" }];
|
|
37939
37981
|
});
|
|
37940
37982
|
}
|
|
37941
37983
|
updated = () => {
|
|
@@ -38045,6 +38087,10 @@ var DaemonTurnRegistry = class {
|
|
|
38045
38087
|
}
|
|
38046
38088
|
return event;
|
|
38047
38089
|
};
|
|
38090
|
+
recordSteeringPrompt = (command) => {
|
|
38091
|
+
const target = this.#turns.get(command.targetCommandId);
|
|
38092
|
+
return target?.recordSteeringPrompt(command) ?? null;
|
|
38093
|
+
};
|
|
38048
38094
|
executionSnapshot = async (matches) => {
|
|
38049
38095
|
const matching = [];
|
|
38050
38096
|
for (const turn of this.#turns.values()) {
|
|
@@ -40454,6 +40500,14 @@ function boundedActiveMessages(messages, messageLimit, characterLimit) {
|
|
|
40454
40500
|
truncated: selected.length !== messages.length
|
|
40455
40501
|
};
|
|
40456
40502
|
}
|
|
40503
|
+
function nativeActiveMessage(message) {
|
|
40504
|
+
return message.role === "user" ? { role: "user", text: message.text } : {
|
|
40505
|
+
activities: message.activities,
|
|
40506
|
+
content: message.content,
|
|
40507
|
+
role: "assistant",
|
|
40508
|
+
text: message.text
|
|
40509
|
+
};
|
|
40510
|
+
}
|
|
40457
40511
|
function paginateAcpSessionHistory(history, sessionId, cursor, limit) {
|
|
40458
40512
|
if (history.status === "unavailable") {
|
|
40459
40513
|
if (cursor !== null) {
|
|
@@ -40486,20 +40540,27 @@ function paginateLiveSessionHistory(history, activeTurn, sessionId, cursor, limi
|
|
|
40486
40540
|
}
|
|
40487
40541
|
if (history.status === "unavailable") {
|
|
40488
40542
|
const bounded3 = boundedActiveMessages(
|
|
40489
|
-
activeTurn.messages,
|
|
40490
|
-
|
|
40491
|
-
|
|
40543
|
+
activeTurn.messages.map(nativeActiveMessage),
|
|
40544
|
+
limit,
|
|
40545
|
+
SESSION_HISTORY_CHARACTER_LIMIT
|
|
40492
40546
|
);
|
|
40493
40547
|
return {
|
|
40494
40548
|
coveredCommandIds: [],
|
|
40495
40549
|
coveredMessageIds: [],
|
|
40496
|
-
messages:
|
|
40550
|
+
messages: bounded3.messages,
|
|
40497
40551
|
nextCursor: null,
|
|
40498
40552
|
status: "available",
|
|
40499
40553
|
truncated: activeTurn.truncated || bounded3.truncated
|
|
40500
40554
|
};
|
|
40501
40555
|
}
|
|
40502
|
-
const
|
|
40556
|
+
const activeRoot = activeTurn.messages.find(
|
|
40557
|
+
(message) => message.role === "user" && message.id === activeTurn.commandId
|
|
40558
|
+
);
|
|
40559
|
+
const coveredActiveRoot = history.coveredCommandIds.includes(activeTurn.commandId);
|
|
40560
|
+
const matchingActiveUserIndex = coveredActiveRoot ? history.messages.findLastIndex(
|
|
40561
|
+
(message) => message.role === "user" && message.text === (activeRoot?.text ?? activeTurn.prompt)
|
|
40562
|
+
) : -1;
|
|
40563
|
+
const activeUserIndex = matchingActiveUserIndex >= 0 ? matchingActiveUserIndex : liveHistoryCoveredTurnRanges(history).find((range) => range.commandId === activeTurn.commandId)?.userIndex ?? -1;
|
|
40503
40564
|
if (activeUserIndex >= 0) {
|
|
40504
40565
|
history = {
|
|
40505
40566
|
...history,
|
|
@@ -40511,19 +40572,13 @@ function paginateLiveSessionHistory(history, activeTurn, sessionId, cursor, limi
|
|
|
40511
40572
|
};
|
|
40512
40573
|
}
|
|
40513
40574
|
const latestNativeMessage = history.messages.at(-1);
|
|
40514
|
-
const
|
|
40515
|
-
const
|
|
40516
|
-
|
|
40517
|
-
|
|
40518
|
-
Math.max(0, SESSION_HISTORY_CHARACTER_LIMIT - (includeActivePrompt ? activeTurn.prompt.length : 0))
|
|
40519
|
-
);
|
|
40520
|
-
const activeMessages = [
|
|
40521
|
-
...includeActivePrompt ? [{ role: "user", text: activeTurn.prompt }] : [],
|
|
40522
|
-
...bounded2.messages
|
|
40523
|
-
];
|
|
40575
|
+
const firstActiveMessage = activeTurn.messages[0];
|
|
40576
|
+
const preserveNativeRoot = activeUserIndex >= 0 || firstActiveMessage?.role === "user" && latestNativeMessage?.role === "user" && latestNativeMessage.text === firstActiveMessage.text;
|
|
40577
|
+
const activeMessages = activeTurn.messages.slice(preserveNativeRoot ? 1 : 0).map(nativeActiveMessage);
|
|
40578
|
+
const bounded2 = boundedActiveMessages(activeMessages, limit, SESSION_HISTORY_CHARACTER_LIMIT);
|
|
40524
40579
|
let historicalMessageCount = 0;
|
|
40525
|
-
let remainingCharacters = SESSION_HISTORY_CHARACTER_LIMIT - bounded2.characters
|
|
40526
|
-
const historicalMessageLimit = Math.max(0, limit -
|
|
40580
|
+
let remainingCharacters = SESSION_HISTORY_CHARACTER_LIMIT - bounded2.characters;
|
|
40581
|
+
const historicalMessageLimit = Math.max(0, limit - bounded2.messages.length);
|
|
40527
40582
|
for (let index = history.messages.length - 1; index >= 0 && historicalMessageCount < historicalMessageLimit; index -= 1) {
|
|
40528
40583
|
const message = history.messages[index];
|
|
40529
40584
|
if (message === void 0) {
|
|
@@ -40546,7 +40601,7 @@ function paginateLiveSessionHistory(history, activeTurn, sessionId, cursor, limi
|
|
|
40546
40601
|
} : paginateAcpSessionHistory(history, sessionId, null, historicalMessageCount);
|
|
40547
40602
|
return {
|
|
40548
40603
|
...page,
|
|
40549
|
-
messages: [...page.messages, ...
|
|
40604
|
+
messages: [...page.messages, ...bounded2.messages],
|
|
40550
40605
|
truncated: page.truncated || activeTurn.truncated || bounded2.truncated
|
|
40551
40606
|
};
|
|
40552
40607
|
}
|
|
@@ -40997,6 +41052,7 @@ async function executePrompt({
|
|
|
40997
41052
|
timer,
|
|
40998
41053
|
signal,
|
|
40999
41054
|
recordLiveEvent,
|
|
41055
|
+
recordSteeringPrompt,
|
|
41000
41056
|
cancellationRequested
|
|
41001
41057
|
}) {
|
|
41002
41058
|
const events = new CoalescingAgentEventPublisher(timer, (event) => {
|
|
@@ -41077,6 +41133,17 @@ async function executePrompt({
|
|
|
41077
41133
|
sessionId: command.sessionId
|
|
41078
41134
|
});
|
|
41079
41135
|
operations.transitionExecution(command.commandId, "running");
|
|
41136
|
+
if (availability.disposition === SessionPromptDisposition.Steer) {
|
|
41137
|
+
const updated = recordSteeringPrompt();
|
|
41138
|
+
if (updated === null) {
|
|
41139
|
+
throw new AcpExecutionError(
|
|
41140
|
+
"The steering target is unavailable",
|
|
41141
|
+
{},
|
|
41142
|
+
"prompt_queue_target_unavailable"
|
|
41143
|
+
);
|
|
41144
|
+
}
|
|
41145
|
+
publisher.publish(command.sessionId, updated);
|
|
41146
|
+
}
|
|
41080
41147
|
const stream = activateAttempt();
|
|
41081
41148
|
publisher.publish(command.sessionId, {
|
|
41082
41149
|
commandId: command.commandId,
|
|
@@ -41696,6 +41763,7 @@ function createDaemonCommandHandler({
|
|
|
41696
41763
|
timer,
|
|
41697
41764
|
signal: turn.signal,
|
|
41698
41765
|
recordLiveEvent: turn.recordEvent,
|
|
41766
|
+
recordSteeringPrompt: () => activeTurns.recordSteeringPrompt(command),
|
|
41699
41767
|
cancellationRequested: turn.cancellationRequested
|
|
41700
41768
|
}).catch((error62) => {
|
|
41701
41769
|
console.error("Mobius daemon turn failed", error62);
|