@moxt-ai/mobius 0.0.409 → 0.0.411
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-PAJOMX6L.js → chunk-6BQX2L5A.js} +111 -51
- package/dist/{chunk-PAJOMX6L.js.map → chunk-6BQX2L5A.js.map} +2 -2
- package/dist/{chunk-SEIA72PR.js → chunk-EX66DFKM.js} +2 -2
- package/dist/{chunk-SEIA72PR.js.map → chunk-EX66DFKM.js.map} +1 -1
- package/dist/{cli-4IAWYEUO.js → cli-4QU22MGP.js} +3 -3
- package/dist/cli.js +2 -2
- package/dist/engine/runtime/command/agent-settings-discovery.d.ts.map +1 -1
- package/dist/engine/runtime/command/agent-settings-discovery.js +6 -1
- package/dist/engine/runtime/command/agent-settings-discovery.js.map +1 -1
- package/dist/engine/session/settings/discover-agent-settings.d.ts.map +1 -1
- package/dist/engine/session/settings/discover-agent-settings.js +5 -1
- package/dist/engine/session/settings/discover-agent-settings.js.map +1 -1
- package/dist/engine.js +2 -2
- package/package.json +2 -2
- /package/dist/{cli-4IAWYEUO.js.map → cli-4QU22MGP.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-EX66DFKM.js";
|
|
7
7
|
|
|
8
8
|
// src/engine/runtime/relay/runtime-revocation.ts
|
|
9
9
|
var runtimeRevocationCloseCode = 1008;
|
|
@@ -20159,6 +20159,9 @@ var agentModelEffortSchema = external_exports.object({
|
|
|
20159
20159
|
}).readonly();
|
|
20160
20160
|
var agentSettingsDiscoverCommandSchema = external_exports.object({
|
|
20161
20161
|
agentId: identifierStringSchema,
|
|
20162
|
+
// The directory a Session would start in, whose project settings the Agent reads. Omitted, the Runtime's
|
|
20163
|
+
// default directory. A Runtime that predates this field ignores it; see the discovered event's `directoryId`.
|
|
20164
|
+
directoryId: DIRECTORY_IDENTIFIER.optional(),
|
|
20162
20165
|
kind: external_exports.literal(AGENT_SETTINGS_DISCOVER_KIND),
|
|
20163
20166
|
model: external_exports.string().min(1).max(500).optional(),
|
|
20164
20167
|
requestId: identifierStringSchema
|
|
@@ -20167,6 +20170,9 @@ var agentSettingsDiscoveredEventSchema = external_exports.object({
|
|
|
20167
20170
|
agentId: identifierStringSchema,
|
|
20168
20171
|
agentName: external_exports.string().max(255),
|
|
20169
20172
|
agentVersion: external_exports.string().max(128),
|
|
20173
|
+
// The directory the settings were discovered in. Absent from older Runtimes, which always discover in the
|
|
20174
|
+
// Runtime's default directory whatever the command named.
|
|
20175
|
+
directoryId: DIRECTORY_IDENTIFIER.optional(),
|
|
20170
20176
|
kind: external_exports.literal(AGENT_SETTINGS_DISCOVERED_KIND),
|
|
20171
20177
|
modelEffort: agentModelEffortSchema,
|
|
20172
20178
|
requestId: identifierStringSchema,
|
|
@@ -63747,7 +63753,11 @@ var ClaudeAcpAgent = class {
|
|
|
63747
63753
|
return;
|
|
63748
63754
|
}
|
|
63749
63755
|
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`);
|
|
63756
|
+
const wasHeld = isHeldOpen(turn);
|
|
63750
63757
|
settleOrDefer(turnOutcome(session, capturedReason));
|
|
63758
|
+
if (turn.settled && !wasHeld) {
|
|
63759
|
+
this.trackResultOwedBySettledTurn(session, turn);
|
|
63760
|
+
}
|
|
63751
63761
|
}, RESULT_WATCHDOG_TIMEOUT_MS);
|
|
63752
63762
|
};
|
|
63753
63763
|
const sendUpdate = async (notification) => {
|
|
@@ -63801,18 +63811,36 @@ var ClaudeAcpAgent = class {
|
|
|
63801
63811
|
resetTurnScratch();
|
|
63802
63812
|
};
|
|
63803
63813
|
const ensureActiveTurn = (resultUserMessageUuid) => {
|
|
63814
|
+
if (resultUserMessageUuid !== void 0) {
|
|
63815
|
+
const named = findUnsettledTurn(resultUserMessageUuid);
|
|
63816
|
+
if (named !== void 0) {
|
|
63817
|
+
if (named !== session.activeTurn) {
|
|
63818
|
+
handOffActive();
|
|
63819
|
+
activateTurn(named);
|
|
63820
|
+
}
|
|
63821
|
+
return "active";
|
|
63822
|
+
}
|
|
63823
|
+
if (session.orphanCommands?.has(resultUserMessageUuid)) {
|
|
63824
|
+
for (const [uuid3, state] of session.orphanCommands) {
|
|
63825
|
+
if (state === "started" || state === "zombie") {
|
|
63826
|
+
session.orphanCommands.delete(uuid3);
|
|
63827
|
+
}
|
|
63828
|
+
}
|
|
63829
|
+
session.orphanCommands.delete(resultUserMessageUuid);
|
|
63830
|
+
return "owed";
|
|
63831
|
+
}
|
|
63832
|
+
}
|
|
63804
63833
|
if (session.activeTurn) {
|
|
63805
63834
|
if (!isHeldOpen(session.activeTurn)) {
|
|
63806
|
-
return;
|
|
63835
|
+
return "active";
|
|
63807
63836
|
}
|
|
63808
|
-
|
|
63837
|
+
handOffActive();
|
|
63809
63838
|
}
|
|
63810
63839
|
if ((session.pendingOrphanResults ?? 0) > 0) {
|
|
63811
63840
|
session.pendingOrphanResults = (session.pendingOrphanResults ?? 1) - 1;
|
|
63812
|
-
return;
|
|
63841
|
+
return "owed";
|
|
63813
63842
|
}
|
|
63814
63843
|
if (session.orphanCommands?.size) {
|
|
63815
|
-
const stampedOrphan = resultUserMessageUuid !== void 0 && session.orphanCommands.has(resultUserMessageUuid);
|
|
63816
63844
|
let consumedOrphanResult = false;
|
|
63817
63845
|
let oldestPending;
|
|
63818
63846
|
for (const [uuid3, state] of session.orphanCommands) {
|
|
@@ -63823,26 +63851,22 @@ var ClaudeAcpAgent = class {
|
|
|
63823
63851
|
oldestPending ??= uuid3;
|
|
63824
63852
|
}
|
|
63825
63853
|
}
|
|
63826
|
-
if (stampedOrphan && resultUserMessageUuid !== void 0) {
|
|
63827
|
-
session.orphanCommands.delete(resultUserMessageUuid);
|
|
63828
|
-
return;
|
|
63829
|
-
}
|
|
63830
63854
|
if (resultUserMessageUuid !== void 0) {
|
|
63831
63855
|
} else {
|
|
63832
63856
|
if (consumedOrphanResult) {
|
|
63833
|
-
return;
|
|
63857
|
+
return "owed";
|
|
63834
63858
|
}
|
|
63835
63859
|
if (oldestPending !== void 0) {
|
|
63836
63860
|
session.orphanCommands.delete(oldestPending);
|
|
63837
|
-
return;
|
|
63861
|
+
return "owed";
|
|
63838
63862
|
}
|
|
63839
63863
|
}
|
|
63840
63864
|
}
|
|
63841
63865
|
const head = firstUnsettledQueuedTurn();
|
|
63842
|
-
if (
|
|
63843
|
-
|
|
63866
|
+
if (head) {
|
|
63867
|
+
activateTurn(head);
|
|
63844
63868
|
}
|
|
63845
|
-
|
|
63869
|
+
return "active";
|
|
63846
63870
|
};
|
|
63847
63871
|
const recordResultForOrphanCommands = () => {
|
|
63848
63872
|
for (const turn of session.turnQueue ?? []) {
|
|
@@ -63920,6 +63944,35 @@ var ClaudeAcpAgent = class {
|
|
|
63920
63944
|
session.emittedAssistantText = false;
|
|
63921
63945
|
turn.reject(error62);
|
|
63922
63946
|
};
|
|
63947
|
+
const failActiveBeforeResult = (error62) => {
|
|
63948
|
+
const turn = session.activeTurn;
|
|
63949
|
+
if (turn && !turn.settled && !isHeldOpen(turn)) {
|
|
63950
|
+
this.trackResultOwedBySettledTurn(session, turn);
|
|
63951
|
+
}
|
|
63952
|
+
failActive(error62);
|
|
63953
|
+
};
|
|
63954
|
+
const handOffActive = () => {
|
|
63955
|
+
if (!session.activeTurn) {
|
|
63956
|
+
return;
|
|
63957
|
+
}
|
|
63958
|
+
if (session.cancelled) {
|
|
63959
|
+
session.idleBoundary = {
|
|
63960
|
+
kind: "accounted",
|
|
63961
|
+
turn: session.activeTurn ?? null
|
|
63962
|
+
};
|
|
63963
|
+
settleActive(turnOutcome(session, "cancelled"));
|
|
63964
|
+
} else if (isHeldOpen(session.activeTurn)) {
|
|
63965
|
+
settleActive(session.activeTurn.deferredSettle);
|
|
63966
|
+
} else if (isSteering(session.activeTurn) && session.activeTurn.steeredSettle !== void 0) {
|
|
63967
|
+
session.idleBoundary = {
|
|
63968
|
+
kind: "accounted",
|
|
63969
|
+
turn: session.activeTurn ?? null
|
|
63970
|
+
};
|
|
63971
|
+
settleActive(session.activeTurn.steeredSettle);
|
|
63972
|
+
} else {
|
|
63973
|
+
settleActive(turnOutcome(session, "end_turn"));
|
|
63974
|
+
}
|
|
63975
|
+
};
|
|
63923
63976
|
const failAllTurns = (error62) => {
|
|
63924
63977
|
disarmForceCancel(session);
|
|
63925
63978
|
const turns = session.activeTurn ? [session.activeTurn, ...(session.turnQueue ?? []).filter((t) => t !== session.activeTurn)] : [...session.turnQueue ?? []];
|
|
@@ -63956,16 +64009,7 @@ var ClaudeAcpAgent = class {
|
|
|
63956
64009
|
cancelController.signal.removeEventListener("abort", onAbort);
|
|
63957
64010
|
if (raced === "abort") {
|
|
63958
64011
|
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
|
-
}
|
|
64012
|
+
this.trackResultOwedBySettledTurn(session, session.activeTurn);
|
|
63969
64013
|
}
|
|
63970
64014
|
settleActive(turnOutcome(session, "cancelled"));
|
|
63971
64015
|
session.emittedAssistantText = false;
|
|
@@ -64419,9 +64463,10 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64419
64463
|
if (!isAutonomousResult) {
|
|
64420
64464
|
await this.syncFastModeState(params.sessionId, session, message.fast_mode_state, message.fast_mode_disabled_reason);
|
|
64421
64465
|
}
|
|
64466
|
+
let isOwedResult = false;
|
|
64422
64467
|
if (!isAutonomousResult) {
|
|
64468
|
+
isOwedResult = ensureActiveTurn(message.user_message_uuid) === "owed";
|
|
64423
64469
|
recordResultForOrphanCommands();
|
|
64424
|
-
ensureActiveTurn(message.user_message_uuid);
|
|
64425
64470
|
if (session.pendingGoalUpdate?.started) {
|
|
64426
64471
|
const pendingGoalUpdate = session.pendingGoalUpdate;
|
|
64427
64472
|
session.pendingGoalUpdate = void 0;
|
|
@@ -64435,7 +64480,7 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64435
64480
|
if (isAutonomousResult || !session.cancelled || !session.activeTurn) {
|
|
64436
64481
|
session.idleBoundary = { kind: "accounted", turn: session.activeTurn ?? null };
|
|
64437
64482
|
}
|
|
64438
|
-
if (!isAutonomousResult) {
|
|
64483
|
+
if (!isAutonomousResult && !isOwedResult) {
|
|
64439
64484
|
session.accumulatedUsage.inputTokens += message.usage.input_tokens;
|
|
64440
64485
|
session.accumulatedUsage.outputTokens += message.usage.output_tokens;
|
|
64441
64486
|
session.accumulatedUsage.cachedReadTokens += message.usage.cache_read_input_tokens;
|
|
@@ -64444,7 +64489,7 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64444
64489
|
const modelUsageReading = normalizeModelUsage(message.modelUsage);
|
|
64445
64490
|
const resultModelUsage = modelUsageIncrement(modelUsageReading, session.lastModelUsageReading ?? {});
|
|
64446
64491
|
session.lastModelUsageReading = modelUsageReading;
|
|
64447
|
-
if (!isAutonomousResult) {
|
|
64492
|
+
if (!isAutonomousResult && !isOwedResult) {
|
|
64448
64493
|
session.accumulatedModelUsage = addModelUsage(session.accumulatedModelUsage ?? {}, resultModelUsage);
|
|
64449
64494
|
}
|
|
64450
64495
|
const matchingModelUsage = lastAssistantModel ? getMatchingModelUsage(message.modelUsage, lastAssistantModel) : null;
|
|
@@ -64488,6 +64533,11 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64488
64533
|
}
|
|
64489
64534
|
break;
|
|
64490
64535
|
}
|
|
64536
|
+
if (isOwedResult) {
|
|
64537
|
+
session.pendingExitPlanModeInterruption = void 0;
|
|
64538
|
+
session.pendingExitPlanContextReset = void 0;
|
|
64539
|
+
break;
|
|
64540
|
+
}
|
|
64491
64541
|
const diagnostic = executionDiagnostic(message);
|
|
64492
64542
|
if (pendingExitPlanModeInterruption?.toolResultSeen && message.is_error && diagnostic && /(?:^|\s)result_type=user(?:\s|$)/.test(diagnostic) && /(?:^|\s)stop_reason=tool_use(?:\s|$)/.test(diagnostic)) {
|
|
64493
64543
|
session.pendingExitPlanModeInterruption = void 0;
|
|
@@ -64714,25 +64764,7 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64714
64764
|
}));
|
|
64715
64765
|
}
|
|
64716
64766
|
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
|
-
}
|
|
64767
|
+
handOffActive();
|
|
64736
64768
|
activateTurn(queued);
|
|
64737
64769
|
}
|
|
64738
64770
|
break;
|
|
@@ -64793,11 +64825,11 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64793
64825
|
break;
|
|
64794
64826
|
}
|
|
64795
64827
|
if (message.type === "assistant" && message.error === "authentication_failed") {
|
|
64796
|
-
|
|
64828
|
+
failActiveBeforeResult(RequestError5.authRequired(errorKindData(message.error)));
|
|
64797
64829
|
break;
|
|
64798
64830
|
}
|
|
64799
64831
|
if (message.type === "assistant" && message.parent_tool_use_id === null && message.error === "model_not_found") {
|
|
64800
|
-
|
|
64832
|
+
failActiveBeforeResult(RequestError5.internalError(errorKindData(message.error), "The selected model is unavailable"));
|
|
64801
64833
|
break;
|
|
64802
64834
|
}
|
|
64803
64835
|
let content;
|
|
@@ -64955,6 +64987,30 @@ ${message.api_refusal_explanation}` : "";
|
|
|
64955
64987
|
session.pendingOrphanResults = (session.pendingOrphanResults ?? 0) + 1;
|
|
64956
64988
|
}
|
|
64957
64989
|
}
|
|
64990
|
+
/** Record that a dispatched turn the adapter is settling BEFORE its result
|
|
64991
|
+
* (force-cancel backstop, result watchdog, an assistant-level failure)
|
|
64992
|
+
* still owes that result. Its late result is then consumed as this turn's
|
|
64993
|
+
* trailer — by its `user_message_uuid` when stamped, positionally otherwise
|
|
64994
|
+
* — instead of settling the next prompt (see ensureActiveTurn). Every
|
|
64995
|
+
* settle-before-result lane must record through here so the debt has one
|
|
64996
|
+
* representation: the orphan-accounting lanes.
|
|
64997
|
+
*
|
|
64998
|
+
* Seeded by what the frames already told us, mirroring cancel()'s
|
|
64999
|
+
* queued-turn sweep — the consumer may have drained the turn's result
|
|
65000
|
+
* and/or terminal frame already, and an entry seeded for a result or frame
|
|
65001
|
+
* that is already spent would never drain (it would swallow an unrelated
|
|
65002
|
+
* later echo-less result instead). */
|
|
65003
|
+
trackResultOwedBySettledTurn(session, turn) {
|
|
65004
|
+
if (turn.commandFinished === "completed" || turn.commandFinished === "discarded" || turn.commandFinished === "refused") {
|
|
65005
|
+
} else if (turn.commandFinished === "cancelled") {
|
|
65006
|
+
if (!turn.commandResultSeen) {
|
|
65007
|
+
this.trackOrphanCommand(session, turn.promptUuid, "zombie");
|
|
65008
|
+
}
|
|
65009
|
+
} else if (turn.commandResultSeen) {
|
|
65010
|
+
} else {
|
|
65011
|
+
this.trackOrphanCommand(session, turn.promptUuid, "started");
|
|
65012
|
+
}
|
|
65013
|
+
}
|
|
64958
65014
|
async cancel(params) {
|
|
64959
65015
|
for (const submission of this.pendingSubmissions.get(params.sessionId) ?? []) {
|
|
64960
65016
|
submission.abort();
|
|
@@ -90755,7 +90811,8 @@ function unsupportedModelIds(unsupportedModels) {
|
|
|
90755
90811
|
}
|
|
90756
90812
|
async function discoverAgentSettings(command, resolveAgent, bindingId, directories, sessions, signal) {
|
|
90757
90813
|
const { agent, adapter: harnessAdapter } = await resolveAgent(command.agentId, signal);
|
|
90758
|
-
const
|
|
90814
|
+
const directoryId = command.directoryId ?? "default";
|
|
90815
|
+
const cwd = await directories.resolve(bindingId, directoryId, signal);
|
|
90759
90816
|
const inspectedBaseSnapshot = await sessions.inspectAgentSettings({
|
|
90760
90817
|
adapter: harnessAdapter,
|
|
90761
90818
|
additionalDirectories: [],
|
|
@@ -90829,6 +90886,7 @@ async function discoverAgentSettings(command, resolveAgent, bindingId, directori
|
|
|
90829
90886
|
agentId: command.agentId,
|
|
90830
90887
|
agentName: selectedSnapshot.agentName,
|
|
90831
90888
|
agentVersion: selectedSnapshot.agentVersion,
|
|
90889
|
+
directoryId,
|
|
90832
90890
|
kind: AGENT_SETTINGS_DISCOVERED_KIND,
|
|
90833
90891
|
modelEffort,
|
|
90834
90892
|
requestId: command.requestId,
|
|
@@ -91018,8 +91076,9 @@ function createAgentSettingsDiscoveryHandler(dependencies) {
|
|
|
91018
91076
|
const { config: config2, directories, sessions, diagnostics, socket, signal, timer } = dependencies;
|
|
91019
91077
|
const agentSettingsDiscoveries = /* @__PURE__ */ new Map();
|
|
91020
91078
|
const handle = (command) => {
|
|
91079
|
+
const directoryId = command.directoryId ?? "default";
|
|
91021
91080
|
const existing = [...agentSettingsDiscoveries.values()].find(
|
|
91022
|
-
(request) => request.agentId === command.agentId && !request.controller.signal.aborted
|
|
91081
|
+
(request) => request.agentId === command.agentId && request.directoryId === directoryId && !request.controller.signal.aborted
|
|
91023
91082
|
);
|
|
91024
91083
|
if ([...agentSettingsDiscoveries.values()].some((request) => request.requestIds.has(command.requestId))) {
|
|
91025
91084
|
if (socket.readyState === WebSocket4.OPEN) {
|
|
@@ -91117,6 +91176,7 @@ function createAgentSettingsDiscoveryHandler(dependencies) {
|
|
|
91117
91176
|
})();
|
|
91118
91177
|
agentSettingsDiscoveries.set(command.requestId, {
|
|
91119
91178
|
agentId: command.agentId,
|
|
91179
|
+
directoryId,
|
|
91120
91180
|
model: command.model,
|
|
91121
91181
|
requestIds,
|
|
91122
91182
|
completion,
|
|
@@ -93950,4 +94010,4 @@ export {
|
|
|
93950
94010
|
* MIT Licensed
|
|
93951
94011
|
*)
|
|
93952
94012
|
*/
|
|
93953
|
-
//# sourceMappingURL=chunk-
|
|
94013
|
+
//# sourceMappingURL=chunk-6BQX2L5A.js.map
|