@moxt-ai/mobius 0.0.292 → 0.0.293
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 +109 -10
- package/dist/cli.js.map +4 -4
- package/dist/daemon/lifecycle/worker.d.ts.map +1 -1
- package/dist/daemon/lifecycle/worker.js +4 -1
- package/dist/daemon/lifecycle/worker.js.map +1 -1
- package/dist/daemon/upgrades/upgrade.d.ts +2 -1
- package/dist/daemon/upgrades/upgrade.d.ts.map +1 -1
- package/dist/daemon/upgrades/upgrade.js +101 -10
- package/dist/daemon/upgrades/upgrade.js.map +1 -1
- package/dist/runtime/command/registry/prompt.d.ts.map +1 -1
- package/dist/runtime/command/registry/prompt.js +10 -0
- package/dist/runtime/command/registry/prompt.js.map +1 -1
- package/dist/runtime/engine.d.ts +2 -0
- package/dist/runtime/engine.d.ts.map +1 -1
- package/dist/runtime/engine.js +1 -0
- package/dist/runtime/engine.js.map +1 -1
- package/dist/runtime/relay/run-relay-connection.d.ts.map +1 -1
- package/dist/runtime/relay/run-relay-connection.js +2 -0
- package/dist/runtime/relay/run-relay-connection.js.map +1 -1
- package/dist/runtime/relay/session-event-publisher.d.ts +1 -0
- package/dist/runtime/relay/session-event-publisher.d.ts.map +1 -1
- package/dist/runtime/relay/session-event-publisher.js +5 -0
- package/dist/runtime/relay/session-event-publisher.js.map +1 -1
- package/dist/runtime/run.d.ts +2 -0
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +1 -0
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime.js +74 -4
- package/dist/runtime.js.map +4 -4
- package/dist/session/api/session-layer.d.ts +2 -0
- package/dist/session/api/session-layer.d.ts.map +1 -1
- package/dist/session/api/session-layer.js +1 -1
- package/dist/session/api/session-layer.js.map +1 -1
- package/dist/session/turn/runtime-turn-activity.d.ts +11 -0
- package/dist/session/turn/runtime-turn-activity.d.ts.map +1 -0
- package/dist/session/turn/runtime-turn-activity.js +45 -0
- package/dist/session/turn/runtime-turn-activity.js.map +1 -0
- package/dist/session/turn/session-turns.d.ts +3 -1
- package/dist/session/turn/session-turns.d.ts.map +1 -1
- package/dist/session/turn/session-turns.js +11 -2
- package/dist/session/turn/session-turns.js.map +1 -1
- package/package.json +1 -1
package/dist/runtime.js
CHANGED
|
@@ -22572,7 +22572,7 @@ import { fetch as fetch3 } from "undici";
|
|
|
22572
22572
|
// package.json
|
|
22573
22573
|
var package_default = {
|
|
22574
22574
|
name: "@moxt-ai/mobius",
|
|
22575
|
-
version: "0.0.
|
|
22575
|
+
version: "0.0.293",
|
|
22576
22576
|
description: "Mobius CLI for pairing and running local AI agent services.",
|
|
22577
22577
|
type: "module",
|
|
22578
22578
|
bin: {
|
|
@@ -86536,6 +86536,50 @@ var ExecutionReceipts = class {
|
|
|
86536
86536
|
};
|
|
86537
86537
|
};
|
|
86538
86538
|
|
|
86539
|
+
// src/session/turn/runtime-turn-activity.ts
|
|
86540
|
+
var RuntimeTurnActivity = class {
|
|
86541
|
+
#turns = /* @__PURE__ */ new Set();
|
|
86542
|
+
#admission = { kind: "open" };
|
|
86543
|
+
acceptsPrompts = () => this.#admission.kind !== "reserved";
|
|
86544
|
+
count = () => this.#turns.size;
|
|
86545
|
+
start = (turn) => {
|
|
86546
|
+
this.#turns.add(turn);
|
|
86547
|
+
};
|
|
86548
|
+
finish = (turn) => {
|
|
86549
|
+
this.#turns.delete(turn);
|
|
86550
|
+
if (this.#turns.size === 0 && this.#admission.kind === "waiting") {
|
|
86551
|
+
this.#admission.reserve();
|
|
86552
|
+
}
|
|
86553
|
+
};
|
|
86554
|
+
reserveWhenIdle = (signal) => {
|
|
86555
|
+
signal.throwIfAborted();
|
|
86556
|
+
if (this.#admission.kind !== "open") {
|
|
86557
|
+
throw new Error("A daemon upgrade already owns admission");
|
|
86558
|
+
}
|
|
86559
|
+
return new Promise((resolve18, reject2) => {
|
|
86560
|
+
const abort = () => {
|
|
86561
|
+
this.#admission = { kind: "open" };
|
|
86562
|
+
signal.removeEventListener("abort", abort);
|
|
86563
|
+
reject2(signal.reason);
|
|
86564
|
+
};
|
|
86565
|
+
const reserve = () => {
|
|
86566
|
+
this.#admission = { kind: "reserved" };
|
|
86567
|
+
signal.removeEventListener("abort", abort);
|
|
86568
|
+
resolve18({
|
|
86569
|
+
[Symbol.dispose]: () => {
|
|
86570
|
+
this.#admission = { kind: "open" };
|
|
86571
|
+
}
|
|
86572
|
+
});
|
|
86573
|
+
};
|
|
86574
|
+
this.#admission = { kind: "waiting", reserve };
|
|
86575
|
+
signal.addEventListener("abort", abort, { once: true });
|
|
86576
|
+
if (this.#turns.size === 0) {
|
|
86577
|
+
reserve();
|
|
86578
|
+
}
|
|
86579
|
+
});
|
|
86580
|
+
};
|
|
86581
|
+
};
|
|
86582
|
+
|
|
86539
86583
|
// src/session/turn/active-turn.ts
|
|
86540
86584
|
import { randomUUID as randomUUID14 } from "node:crypto";
|
|
86541
86585
|
var ActiveRuntimeTurn = class {
|
|
@@ -86752,9 +86796,12 @@ var SessionExecutionState = class {
|
|
|
86752
86796
|
var SessionTurns = class {
|
|
86753
86797
|
#bySessionId = /* @__PURE__ */ new Map();
|
|
86754
86798
|
#operations;
|
|
86755
|
-
|
|
86799
|
+
#activity;
|
|
86800
|
+
constructor(operations, activity2 = new RuntimeTurnActivity()) {
|
|
86756
86801
|
this.#operations = operations;
|
|
86802
|
+
this.#activity = activity2;
|
|
86757
86803
|
}
|
|
86804
|
+
acceptsPrompts = () => this.#activity.acceptsPrompts();
|
|
86758
86805
|
session = (sessionId) => {
|
|
86759
86806
|
let session = this.#bySessionId.get(sessionId);
|
|
86760
86807
|
if (session === void 0) {
|
|
@@ -86764,10 +86811,15 @@ var SessionTurns = class {
|
|
|
86764
86811
|
return session;
|
|
86765
86812
|
};
|
|
86766
86813
|
get = (commandId, sessionId) => this.#bySessionId.get(sessionId)?.get(commandId);
|
|
86767
|
-
start = (command, attemptId) =>
|
|
86814
|
+
start = (command, attemptId) => {
|
|
86815
|
+
const turn = this.session(command.sessionId).start(command, attemptId);
|
|
86816
|
+
this.#activity.start(turn);
|
|
86817
|
+
return turn;
|
|
86818
|
+
};
|
|
86768
86819
|
finish = (turn) => {
|
|
86769
86820
|
this.#bySessionId.get(turn.command.sessionId)?.finish(turn);
|
|
86770
86821
|
this.sweep();
|
|
86822
|
+
this.#activity.finish(turn);
|
|
86771
86823
|
};
|
|
86772
86824
|
recordEvent = (event) => "sessionId" in event ? this.#bySessionId.get(event.sessionId)?.recordEvent(event) ?? event : event;
|
|
86773
86825
|
recordSessionEvent = (event) => {
|
|
@@ -87009,7 +87061,7 @@ function buildSessionLayer(options) {
|
|
|
87009
87061
|
const sessionStore = new SqliteSessionStore(new AcpSessionTable(sessionDatabase), events);
|
|
87010
87062
|
const externalContent = new LocalExternalContentStore(stateDirectory);
|
|
87011
87063
|
const operations = new ExecutionReceipts();
|
|
87012
|
-
const activeSessions = new SessionTurns(operations);
|
|
87064
|
+
const activeSessions = new SessionTurns(operations, options.turnActivity);
|
|
87013
87065
|
const directories = new WorkspaceDirectoryService(bindingId, defaultWorkspace);
|
|
87014
87066
|
const manager = new SessionManager2({
|
|
87015
87067
|
observer: new SessionLayerObserver((event) => eventProjection.record(event), sink.publishInfo),
|
|
@@ -89070,6 +89122,16 @@ var sessionPromptCommand = {
|
|
|
89070
89122
|
if (message.kind !== SESSION_PROMPT_KIND) {
|
|
89071
89123
|
throw new Error("Command kind mismatch");
|
|
89072
89124
|
}
|
|
89125
|
+
if (!context.sessionTurns.acceptsPrompts()) {
|
|
89126
|
+
send(context.socket, {
|
|
89127
|
+
code: "runtime_upgrading",
|
|
89128
|
+
requestId: message.commandId,
|
|
89129
|
+
kind: "session.operation.failed",
|
|
89130
|
+
message: "The Runtime is upgrading. Retry after it reconnects.",
|
|
89131
|
+
sessionId: message.sessionId
|
|
89132
|
+
});
|
|
89133
|
+
return;
|
|
89134
|
+
}
|
|
89073
89135
|
const receipt = context.operations.claimExecution(
|
|
89074
89136
|
message.commandId,
|
|
89075
89137
|
message.sessionId,
|
|
@@ -89875,6 +89937,7 @@ async function runRelayConnection({
|
|
|
89875
89937
|
reject2(failure2);
|
|
89876
89938
|
};
|
|
89877
89939
|
const stop = () => {
|
|
89940
|
+
publisher.flush();
|
|
89878
89941
|
diagnostics.connectionClosed(connectionEpoch, 1e3, "Daemon stopped", "daemon_stop");
|
|
89879
89942
|
closeRelaySocket(socket, 1e3, "Daemon stopped");
|
|
89880
89943
|
resolveConnection();
|
|
@@ -90030,6 +90093,11 @@ var RuntimeSessionEventPublisher = class {
|
|
|
90030
90093
|
this.#socket = null;
|
|
90031
90094
|
this.dropPendingEvents();
|
|
90032
90095
|
};
|
|
90096
|
+
flush = () => {
|
|
90097
|
+
if (this.#socket !== null) {
|
|
90098
|
+
this.flushEvents(this.#socket);
|
|
90099
|
+
}
|
|
90100
|
+
};
|
|
90033
90101
|
publishOperationFailure = (sessionId, requestId, code, message) => {
|
|
90034
90102
|
this.#send({ kind: "session.operation.failed", sessionId, requestId, code, message });
|
|
90035
90103
|
};
|
|
@@ -90163,6 +90231,7 @@ async function runRuntime(config2, parentSignal, timer = systemTimer, options =
|
|
|
90163
90231
|
);
|
|
90164
90232
|
const publisher = new RuntimeSessionEventPublisher(timer);
|
|
90165
90233
|
const layer = buildSessionLayer({
|
|
90234
|
+
...options.turnActivity === void 0 ? {} : { turnActivity: options.turnActivity },
|
|
90166
90235
|
bindingId: config2.bindingId,
|
|
90167
90236
|
channelId: config2.channelId,
|
|
90168
90237
|
defaultWorkspace: config2.defaultWorkspace,
|
|
@@ -90406,6 +90475,7 @@ var MobiusRuntimeEngine = class {
|
|
|
90406
90475
|
this.#state = new RunningMobiusRuntimeState();
|
|
90407
90476
|
try {
|
|
90408
90477
|
await runRuntime(this.#config, signal, void 0, {
|
|
90478
|
+
...this.#options.turnActivity === void 0 ? {} : { turnActivity: this.#options.turnActivity },
|
|
90409
90479
|
...this.#options.onConnectionStatus === void 0 ? {} : { onConnectionStatus: this.#options.onConnectionStatus },
|
|
90410
90480
|
...this.#options.reportUpgradeAvailability === void 0 ? {} : { reportUpgradeAvailability: this.#options.reportUpgradeAvailability },
|
|
90411
90481
|
...this.#options.processLogsDirectory === void 0 ? {} : { processLogsDirectory: this.#options.processLogsDirectory }
|