@moxt-ai/mobius 0.0.408 → 0.0.410
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/{chunk-EEGF33EL.js → chunk-2S33N4G2.js} +107 -52
- package/dist/{chunk-EEGF33EL.js.map → chunk-2S33N4G2.js.map} +2 -2
- package/dist/{chunk-ZPDX3V6A.js → chunk-M4L66DBW.js} +2 -2
- package/dist/{chunk-ZPDX3V6A.js.map → chunk-M4L66DBW.js.map} +1 -1
- package/dist/{cli-KWYXFEYZ.js → cli-VDA77LWX.js} +3 -3
- package/dist/cli.js +2 -2
- package/dist/engine/session/turn/execution-receipts.d.ts +4 -1
- package/dist/engine/session/turn/execution-receipts.d.ts.map +1 -1
- package/dist/engine/session/turn/execution-receipts.js +10 -3
- package/dist/engine/session/turn/execution-receipts.js.map +1 -1
- package/dist/engine.js +2 -2
- package/package.json +1 -1
- /package/dist/{cli-KWYXFEYZ.js.map → cli-VDA77LWX.js.map} +0 -0
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
__export,
|
|
4
4
|
__using,
|
|
5
5
|
package_default
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-M4L66DBW.js";
|
|
7
7
|
|
|
8
8
|
// src/engine/runtime/relay/runtime-revocation.ts
|
|
9
9
|
var runtimeRevocationCloseCode = 1008;
|
|
@@ -63747,7 +63747,11 @@ var ClaudeAcpAgent = class {
|
|
|
63747
63747
|
return;
|
|
63748
63748
|
}
|
|
63749
63749
|
this.logger.error(`Session ${params.sessionId}: SDK emitted a terminal assistant message (stop_reason=${capturedReason}) but never followed with result or idle; settling the turn via watchdog after ${RESULT_WATCHDOG_TIMEOUT_MS}ms`);
|
|
63750
|
+
const wasHeld = isHeldOpen(turn);
|
|
63750
63751
|
settleOrDefer(turnOutcome(session, capturedReason));
|
|
63752
|
+
if (turn.settled && !wasHeld) {
|
|
63753
|
+
this.trackResultOwedBySettledTurn(session, turn);
|
|
63754
|
+
}
|
|
63751
63755
|
}, RESULT_WATCHDOG_TIMEOUT_MS);
|
|
63752
63756
|
};
|
|
63753
63757
|
const sendUpdate = async (notification) => {
|
|
@@ -63801,18 +63805,36 @@ var ClaudeAcpAgent = class {
|
|
|
63801
63805
|
resetTurnScratch();
|
|
63802
63806
|
};
|
|
63803
63807
|
const ensureActiveTurn = (resultUserMessageUuid) => {
|
|
63808
|
+
if (resultUserMessageUuid !== void 0) {
|
|
63809
|
+
const named = findUnsettledTurn(resultUserMessageUuid);
|
|
63810
|
+
if (named !== void 0) {
|
|
63811
|
+
if (named !== session.activeTurn) {
|
|
63812
|
+
handOffActive();
|
|
63813
|
+
activateTurn(named);
|
|
63814
|
+
}
|
|
63815
|
+
return "active";
|
|
63816
|
+
}
|
|
63817
|
+
if (session.orphanCommands?.has(resultUserMessageUuid)) {
|
|
63818
|
+
for (const [uuid3, state] of session.orphanCommands) {
|
|
63819
|
+
if (state === "started" || state === "zombie") {
|
|
63820
|
+
session.orphanCommands.delete(uuid3);
|
|
63821
|
+
}
|
|
63822
|
+
}
|
|
63823
|
+
session.orphanCommands.delete(resultUserMessageUuid);
|
|
63824
|
+
return "owed";
|
|
63825
|
+
}
|
|
63826
|
+
}
|
|
63804
63827
|
if (session.activeTurn) {
|
|
63805
63828
|
if (!isHeldOpen(session.activeTurn)) {
|
|
63806
|
-
return;
|
|
63829
|
+
return "active";
|
|
63807
63830
|
}
|
|
63808
|
-
|
|
63831
|
+
handOffActive();
|
|
63809
63832
|
}
|
|
63810
63833
|
if ((session.pendingOrphanResults ?? 0) > 0) {
|
|
63811
63834
|
session.pendingOrphanResults = (session.pendingOrphanResults ?? 1) - 1;
|
|
63812
|
-
return;
|
|
63835
|
+
return "owed";
|
|
63813
63836
|
}
|
|
63814
63837
|
if (session.orphanCommands?.size) {
|
|
63815
|
-
const stampedOrphan = resultUserMessageUuid !== void 0 && session.orphanCommands.has(resultUserMessageUuid);
|
|
63816
63838
|
let consumedOrphanResult = false;
|
|
63817
63839
|
let oldestPending;
|
|
63818
63840
|
for (const [uuid3, state] of session.orphanCommands) {
|
|
@@ -63823,26 +63845,22 @@ var ClaudeAcpAgent = class {
|
|
|
63823
63845
|
oldestPending ??= uuid3;
|
|
63824
63846
|
}
|
|
63825
63847
|
}
|
|
63826
|
-
if (stampedOrphan && resultUserMessageUuid !== void 0) {
|
|
63827
|
-
session.orphanCommands.delete(resultUserMessageUuid);
|
|
63828
|
-
return;
|
|
63829
|
-
}
|
|
63830
63848
|
if (resultUserMessageUuid !== void 0) {
|
|
63831
63849
|
} else {
|
|
63832
63850
|
if (consumedOrphanResult) {
|
|
63833
|
-
return;
|
|
63851
|
+
return "owed";
|
|
63834
63852
|
}
|
|
63835
63853
|
if (oldestPending !== void 0) {
|
|
63836
63854
|
session.orphanCommands.delete(oldestPending);
|
|
63837
|
-
return;
|
|
63855
|
+
return "owed";
|
|
63838
63856
|
}
|
|
63839
63857
|
}
|
|
63840
63858
|
}
|
|
63841
63859
|
const head = firstUnsettledQueuedTurn();
|
|
63842
|
-
if (
|
|
63843
|
-
|
|
63860
|
+
if (head) {
|
|
63861
|
+
activateTurn(head);
|
|
63844
63862
|
}
|
|
63845
|
-
|
|
63863
|
+
return "active";
|
|
63846
63864
|
};
|
|
63847
63865
|
const recordResultForOrphanCommands = () => {
|
|
63848
63866
|
for (const turn of session.turnQueue ?? []) {
|
|
@@ -63920,6 +63938,35 @@ var ClaudeAcpAgent = class {
|
|
|
63920
63938
|
session.emittedAssistantText = false;
|
|
63921
63939
|
turn.reject(error62);
|
|
63922
63940
|
};
|
|
63941
|
+
const failActiveBeforeResult = (error62) => {
|
|
63942
|
+
const turn = session.activeTurn;
|
|
63943
|
+
if (turn && !turn.settled && !isHeldOpen(turn)) {
|
|
63944
|
+
this.trackResultOwedBySettledTurn(session, turn);
|
|
63945
|
+
}
|
|
63946
|
+
failActive(error62);
|
|
63947
|
+
};
|
|
63948
|
+
const handOffActive = () => {
|
|
63949
|
+
if (!session.activeTurn) {
|
|
63950
|
+
return;
|
|
63951
|
+
}
|
|
63952
|
+
if (session.cancelled) {
|
|
63953
|
+
session.idleBoundary = {
|
|
63954
|
+
kind: "accounted",
|
|
63955
|
+
turn: session.activeTurn ?? null
|
|
63956
|
+
};
|
|
63957
|
+
settleActive(turnOutcome(session, "cancelled"));
|
|
63958
|
+
} else if (isHeldOpen(session.activeTurn)) {
|
|
63959
|
+
settleActive(session.activeTurn.deferredSettle);
|
|
63960
|
+
} else if (isSteering(session.activeTurn) && session.activeTurn.steeredSettle !== void 0) {
|
|
63961
|
+
session.idleBoundary = {
|
|
63962
|
+
kind: "accounted",
|
|
63963
|
+
turn: session.activeTurn ?? null
|
|
63964
|
+
};
|
|
63965
|
+
settleActive(session.activeTurn.steeredSettle);
|
|
63966
|
+
} else {
|
|
63967
|
+
settleActive(turnOutcome(session, "end_turn"));
|
|
63968
|
+
}
|
|
63969
|
+
};
|
|
63923
63970
|
const failAllTurns = (error62) => {
|
|
63924
63971
|
disarmForceCancel(session);
|
|
63925
63972
|
const turns = session.activeTurn ? [session.activeTurn, ...(session.turnQueue ?? []).filter((t) => t !== session.activeTurn)] : [...session.turnQueue ?? []];
|
|
@@ -63956,16 +64003,7 @@ var ClaudeAcpAgent = class {
|
|
|
63956
64003
|
cancelController.signal.removeEventListener("abort", onAbort);
|
|
63957
64004
|
if (raced === "abort") {
|
|
63958
64005
|
if (session.activeTurn && !session.activeTurn.settled) {
|
|
63959
|
-
|
|
63960
|
-
if (active.commandFinished === "completed" || active.commandFinished === "discarded" || active.commandFinished === "refused") {
|
|
63961
|
-
} else if (active.commandFinished === "cancelled") {
|
|
63962
|
-
if (!active.commandResultSeen) {
|
|
63963
|
-
this.trackOrphanCommand(session, active.promptUuid, "zombie");
|
|
63964
|
-
}
|
|
63965
|
-
} else if (active.commandResultSeen) {
|
|
63966
|
-
} else {
|
|
63967
|
-
this.trackOrphanCommand(session, active.promptUuid, "started");
|
|
63968
|
-
}
|
|
64006
|
+
this.trackResultOwedBySettledTurn(session, session.activeTurn);
|
|
63969
64007
|
}
|
|
63970
64008
|
settleActive(turnOutcome(session, "cancelled"));
|
|
63971
64009
|
session.emittedAssistantText = false;
|
|
@@ -64419,9 +64457,10 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64419
64457
|
if (!isAutonomousResult) {
|
|
64420
64458
|
await this.syncFastModeState(params.sessionId, session, message.fast_mode_state, message.fast_mode_disabled_reason);
|
|
64421
64459
|
}
|
|
64460
|
+
let isOwedResult = false;
|
|
64422
64461
|
if (!isAutonomousResult) {
|
|
64462
|
+
isOwedResult = ensureActiveTurn(message.user_message_uuid) === "owed";
|
|
64423
64463
|
recordResultForOrphanCommands();
|
|
64424
|
-
ensureActiveTurn(message.user_message_uuid);
|
|
64425
64464
|
if (session.pendingGoalUpdate?.started) {
|
|
64426
64465
|
const pendingGoalUpdate = session.pendingGoalUpdate;
|
|
64427
64466
|
session.pendingGoalUpdate = void 0;
|
|
@@ -64435,7 +64474,7 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64435
64474
|
if (isAutonomousResult || !session.cancelled || !session.activeTurn) {
|
|
64436
64475
|
session.idleBoundary = { kind: "accounted", turn: session.activeTurn ?? null };
|
|
64437
64476
|
}
|
|
64438
|
-
if (!isAutonomousResult) {
|
|
64477
|
+
if (!isAutonomousResult && !isOwedResult) {
|
|
64439
64478
|
session.accumulatedUsage.inputTokens += message.usage.input_tokens;
|
|
64440
64479
|
session.accumulatedUsage.outputTokens += message.usage.output_tokens;
|
|
64441
64480
|
session.accumulatedUsage.cachedReadTokens += message.usage.cache_read_input_tokens;
|
|
@@ -64444,7 +64483,7 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64444
64483
|
const modelUsageReading = normalizeModelUsage(message.modelUsage);
|
|
64445
64484
|
const resultModelUsage = modelUsageIncrement(modelUsageReading, session.lastModelUsageReading ?? {});
|
|
64446
64485
|
session.lastModelUsageReading = modelUsageReading;
|
|
64447
|
-
if (!isAutonomousResult) {
|
|
64486
|
+
if (!isAutonomousResult && !isOwedResult) {
|
|
64448
64487
|
session.accumulatedModelUsage = addModelUsage(session.accumulatedModelUsage ?? {}, resultModelUsage);
|
|
64449
64488
|
}
|
|
64450
64489
|
const matchingModelUsage = lastAssistantModel ? getMatchingModelUsage(message.modelUsage, lastAssistantModel) : null;
|
|
@@ -64488,6 +64527,11 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64488
64527
|
}
|
|
64489
64528
|
break;
|
|
64490
64529
|
}
|
|
64530
|
+
if (isOwedResult) {
|
|
64531
|
+
session.pendingExitPlanModeInterruption = void 0;
|
|
64532
|
+
session.pendingExitPlanContextReset = void 0;
|
|
64533
|
+
break;
|
|
64534
|
+
}
|
|
64491
64535
|
const diagnostic = executionDiagnostic(message);
|
|
64492
64536
|
if (pendingExitPlanModeInterruption?.toolResultSeen && message.is_error && diagnostic && /(?:^|\s)result_type=user(?:\s|$)/.test(diagnostic) && /(?:^|\s)stop_reason=tool_use(?:\s|$)/.test(diagnostic)) {
|
|
64493
64537
|
session.pendingExitPlanModeInterruption = void 0;
|
|
@@ -64714,25 +64758,7 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64714
64758
|
}));
|
|
64715
64759
|
}
|
|
64716
64760
|
if (session.activeTurn !== queued) {
|
|
64717
|
-
|
|
64718
|
-
if (session.cancelled) {
|
|
64719
|
-
session.idleBoundary = {
|
|
64720
|
-
kind: "accounted",
|
|
64721
|
-
turn: session.activeTurn ?? null
|
|
64722
|
-
};
|
|
64723
|
-
settleActive(turnOutcome(session, "cancelled"));
|
|
64724
|
-
} else if (isHeldOpen(session.activeTurn)) {
|
|
64725
|
-
settleActive(session.activeTurn.deferredSettle);
|
|
64726
|
-
} else if (isSteering(session.activeTurn) && session.activeTurn.steeredSettle !== void 0) {
|
|
64727
|
-
session.idleBoundary = {
|
|
64728
|
-
kind: "accounted",
|
|
64729
|
-
turn: session.activeTurn ?? null
|
|
64730
|
-
};
|
|
64731
|
-
settleActive(session.activeTurn.steeredSettle);
|
|
64732
|
-
} else {
|
|
64733
|
-
settleActive(turnOutcome(session, "end_turn"));
|
|
64734
|
-
}
|
|
64735
|
-
}
|
|
64761
|
+
handOffActive();
|
|
64736
64762
|
activateTurn(queued);
|
|
64737
64763
|
}
|
|
64738
64764
|
break;
|
|
@@ -64793,11 +64819,11 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64793
64819
|
break;
|
|
64794
64820
|
}
|
|
64795
64821
|
if (message.type === "assistant" && message.error === "authentication_failed") {
|
|
64796
|
-
|
|
64822
|
+
failActiveBeforeResult(RequestError5.authRequired(errorKindData(message.error)));
|
|
64797
64823
|
break;
|
|
64798
64824
|
}
|
|
64799
64825
|
if (message.type === "assistant" && message.parent_tool_use_id === null && message.error === "model_not_found") {
|
|
64800
|
-
|
|
64826
|
+
failActiveBeforeResult(RequestError5.internalError(errorKindData(message.error), "The selected model is unavailable"));
|
|
64801
64827
|
break;
|
|
64802
64828
|
}
|
|
64803
64829
|
let content;
|
|
@@ -64955,6 +64981,30 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64955
64981
|
session.pendingOrphanResults = (session.pendingOrphanResults ?? 0) + 1;
|
|
64956
64982
|
}
|
|
64957
64983
|
}
|
|
64984
|
+
/** Record that a dispatched turn the adapter is settling BEFORE its result
|
|
64985
|
+
* (force-cancel backstop, result watchdog, an assistant-level failure)
|
|
64986
|
+
* still owes that result. Its late result is then consumed as this turn's
|
|
64987
|
+
* trailer — by its `user_message_uuid` when stamped, positionally otherwise
|
|
64988
|
+
* — instead of settling the next prompt (see ensureActiveTurn). Every
|
|
64989
|
+
* settle-before-result lane must record through here so the debt has one
|
|
64990
|
+
* representation: the orphan-accounting lanes.
|
|
64991
|
+
*
|
|
64992
|
+
* Seeded by what the frames already told us, mirroring cancel()'s
|
|
64993
|
+
* queued-turn sweep — the consumer may have drained the turn's result
|
|
64994
|
+
* and/or terminal frame already, and an entry seeded for a result or frame
|
|
64995
|
+
* that is already spent would never drain (it would swallow an unrelated
|
|
64996
|
+
* later echo-less result instead). */
|
|
64997
|
+
trackResultOwedBySettledTurn(session, turn) {
|
|
64998
|
+
if (turn.commandFinished === "completed" || turn.commandFinished === "discarded" || turn.commandFinished === "refused") {
|
|
64999
|
+
} else if (turn.commandFinished === "cancelled") {
|
|
65000
|
+
if (!turn.commandResultSeen) {
|
|
65001
|
+
this.trackOrphanCommand(session, turn.promptUuid, "zombie");
|
|
65002
|
+
}
|
|
65003
|
+
} else if (turn.commandResultSeen) {
|
|
65004
|
+
} else {
|
|
65005
|
+
this.trackOrphanCommand(session, turn.promptUuid, "started");
|
|
65006
|
+
}
|
|
65007
|
+
}
|
|
64958
65008
|
async cancel(params) {
|
|
64959
65009
|
for (const submission of this.pendingSubmissions.get(params.sessionId) ?? []) {
|
|
64960
65010
|
submission.abort();
|
|
@@ -88903,7 +88953,10 @@ var ExecutionReceipts = class {
|
|
|
88903
88953
|
/**
|
|
88904
88954
|
* How the Session's most recently admitted turn ended. Admission order survives updates and
|
|
88905
88955
|
* restarts. Commands that never started (queued, or reserved for cancellation) are not turns,
|
|
88906
|
-
* unless they failed before starting.
|
|
88956
|
+
* unless they failed before starting. A steering command that completed as `steered` joined the
|
|
88957
|
+
* turn it steered, which reports for both; a steer not known to have joined (it failed, or a
|
|
88958
|
+
* restart interrupted it) keeps its own outcome. Undefined while the latest turn runs or none is
|
|
88959
|
+
* retained.
|
|
88907
88960
|
*/
|
|
88908
88961
|
lastTurn = (sessionId) => {
|
|
88909
88962
|
let last;
|
|
@@ -88913,8 +88966,10 @@ var ExecutionReceipts = class {
|
|
|
88913
88966
|
continue;
|
|
88914
88967
|
}
|
|
88915
88968
|
const outcome2 = this.outcome(commandId);
|
|
88916
|
-
const
|
|
88917
|
-
|
|
88969
|
+
const payload = outcome2?.type === "lifecycle-metadata" ? outcome2.payload : void 0;
|
|
88970
|
+
const failedBeforeStart = payload?.kind === "prompt.failed-before-start";
|
|
88971
|
+
const steered = payload?.kind === "prompt.completed" && promptCompletion(payload).kind === "steered";
|
|
88972
|
+
if ((executionStarted(receipt.state) || failedBeforeStart) && !steered && receipt.admissionOrder > latestOrder) {
|
|
88918
88973
|
last = commandId;
|
|
88919
88974
|
latestOrder = receipt.admissionOrder;
|
|
88920
88975
|
}
|
|
@@ -93945,4 +94000,4 @@ export {
|
|
|
93945
94000
|
* MIT Licensed
|
|
93946
94001
|
*)
|
|
93947
94002
|
*/
|
|
93948
|
-
//# sourceMappingURL=chunk-
|
|
94003
|
+
//# sourceMappingURL=chunk-2S33N4G2.js.map
|