@moxt-ai/mobius 0.0.20 → 0.0.22
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/bots/bot-context-applicator.d.ts +14 -0
- package/dist/bots/bot-context-applicator.d.ts.map +1 -0
- package/dist/bots/bot-context-applicator.js +32 -0
- package/dist/bots/bot-context-applicator.js.map +1 -0
- package/dist/bots/bot-execution-context.d.ts +20 -0
- package/dist/bots/bot-execution-context.d.ts.map +1 -0
- package/dist/bots/bot-execution-context.js +82 -0
- package/dist/bots/bot-execution-context.js.map +1 -0
- package/dist/bots/bot-message-command.d.ts +6 -0
- package/dist/bots/bot-message-command.d.ts.map +1 -0
- package/dist/bots/bot-message-command.js +140 -0
- package/dist/bots/bot-message-command.js.map +1 -0
- package/dist/bots/bot-outbound-ipc.d.ts +12 -0
- package/dist/bots/bot-outbound-ipc.d.ts.map +1 -0
- package/dist/bots/bot-outbound-ipc.js +245 -0
- package/dist/bots/bot-outbound-ipc.js.map +1 -0
- package/dist/bots/local-bot-grant-store.d.ts +34 -0
- package/dist/bots/local-bot-grant-store.d.ts.map +1 -0
- package/dist/bots/local-bot-grant-store.js +263 -0
- package/dist/bots/local-bot-grant-store.js.map +1 -0
- package/dist/cli.js +1924 -209
- package/dist/cli.js.map +4 -4
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1970 -264
- package/dist/index.js.map +4 -4
- package/dist/prompt-artifact-resolver.d.ts +8 -2
- package/dist/prompt-artifact-resolver.d.ts.map +1 -1
- package/dist/prompt-artifact-resolver.js.map +1 -1
- package/dist/relay-connection/session-event-outbox.d.ts +2 -1
- package/dist/relay-connection/session-event-outbox.d.ts.map +1 -1
- package/dist/relay-connection/session-event-outbox.js +39 -0
- package/dist/relay-connection/session-event-outbox.js.map +1 -1
- package/dist/run-daemon.d.ts.map +1 -1
- package/dist/run-daemon.js +246 -8
- package/dist/run-daemon.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PromptImage, PromptResource
|
|
1
|
+
import type { PromptImage, PromptResource } from "@moxt-ai/mobius-protocol";
|
|
2
2
|
import type { DaemonConfig } from "./config.ts";
|
|
3
3
|
export declare class PromptArtifactError extends Error {
|
|
4
4
|
readonly code: string;
|
|
@@ -9,5 +9,11 @@ export declare class ResolvedPromptArtifacts {
|
|
|
9
9
|
readonly resources: readonly PromptResource[];
|
|
10
10
|
constructor(images: readonly PromptImage[], resources: readonly PromptResource[]);
|
|
11
11
|
}
|
|
12
|
-
export
|
|
12
|
+
export interface ArtifactPromptCommand {
|
|
13
|
+
readonly commandId: string;
|
|
14
|
+
readonly images: readonly PromptImage[];
|
|
15
|
+
readonly resources: readonly PromptResource[];
|
|
16
|
+
readonly sessionId: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function resolvePromptArtifacts(config: DaemonConfig, command: ArtifactPromptCommand, signal: AbortSignal): Promise<ResolvedPromptArtifacts>;
|
|
13
19
|
//# sourceMappingURL=prompt-artifact-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-artifact-resolver.d.ts","sourceRoot":"","sources":["../src/prompt-artifact-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"prompt-artifact-resolver.d.ts","sourceRoot":"","sources":["../src/prompt-artifact-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAShD,qBAAa,mBAAoB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAIpE;CACJ;AAED,qBAAa,uBAAuB;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAE9C,YAAY,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,SAAS,EAAE,SAAS,cAAc,EAAE,EAG/E;CACJ;AAED,MAAM,WAAW,qBAAqB;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC9B;AA+KD,wBAAsB,sBAAsB,CACxC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,uBAAuB,CAAC,CAmDlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-artifact-resolver.js","sourceRoot":"","sources":["../src/prompt-artifact-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG/B,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,MAAM,eAAe,GAAG,kBAAkB,CAAC;AAC3C,MAAM,sCAAsC,GAAG,MAAM,CAAC;AACtD,MAAM,6BAA6B,GAAG,SAAS,CAAC;AAChD,MAAM,8BAA8B,GAAG,SAAS,CAAC;AACjD,MAAM,kBAAkB,GAAG,qCAAqC,CAAC;AAEjE,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACjC,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,OAAe,EAAE,OAAO,GAAiB,EAAE;QACjE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACtC,CAAC;CACJ;AAED,MAAM,OAAO,uBAAuB;IACvB,MAAM,CAAyB;IAC/B,SAAS,CAA4B;IAE9C,YAAY,MAA8B,EAAE,SAAoC;QAC5E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"prompt-artifact-resolver.js","sourceRoot":"","sources":["../src/prompt-artifact-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SessionEventAcknowledgement } from "@moxt-ai/mobius-protocol";
|
|
1
|
+
import { type SessionEventAcknowledgement, type SessionEventRejection } from "@moxt-ai/mobius-protocol";
|
|
2
2
|
export type DaemonExecutionState = "cancelled" | "dispatching" | "failed" | "running" | "succeeded";
|
|
3
3
|
export type DaemonExecutionReceipt = Readonly<{
|
|
4
4
|
attemptId: string;
|
|
@@ -12,6 +12,7 @@ export declare class SessionEventOutbox {
|
|
|
12
12
|
readonly claimExecution: (commandId: string, sessionId: string, commandJson: string) => DaemonExecutionReceipt;
|
|
13
13
|
readonly transitionExecution: (commandId: string, state: DaemonExecutionState) => void;
|
|
14
14
|
readonly acknowledge: (acknowledgement: SessionEventAcknowledgement) => void;
|
|
15
|
+
readonly quarantine: (rejection: SessionEventRejection) => boolean;
|
|
15
16
|
readonly close: () => void;
|
|
16
17
|
readonly enqueue: (sessionId: string, payload: string, attemptId?: string | null) => string;
|
|
17
18
|
readonly pending: () => readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-event-outbox.d.ts","sourceRoot":"","sources":["../../src/relay-connection/session-event-outbox.ts"],"names":[],"mappings":"AAIA,OAAO,EAGH,KAAK,2BAA2B,
|
|
1
|
+
{"version":3,"file":"session-event-outbox.d.ts","sourceRoot":"","sources":["../../src/relay-connection/session-event-outbox.ts"],"names":[],"mappings":"AAIA,OAAO,EAGH,KAAK,2BAA2B,EAEhC,KAAK,qBAAqB,EAC7B,MAAM,0BAA0B,CAAC;AAalC,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAEpG,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,WAAW,CAAC;IAC/B,KAAK,EAAE,oBAAoB,CAAC;CAC/B,CAAC,CAAC;AAEH,qBAAa,kBAAkB;;IAG3B,YAAY,IAAI,EAAE,MAAM,EAmCvB;IAED,QAAQ,CAAC,cAAc,cAAe,MAAM,aAAa,MAAM,eAAe,MAAM,KAAG,sBAAsB,CA4C3G;IAEF,QAAQ,CAAC,mBAAmB,cAAe,MAAM,SAAS,oBAAoB,KAAG,IAAI,CAgBnF;IAEF,QAAQ,CAAC,WAAW,oBAAqB,2BAA2B,KAAG,IAAI,CAOzE;IAEF,QAAQ,CAAC,UAAU,cAAe,qBAAqB,KAAG,OAAO,CAgC/D;IAEF,QAAQ,CAAC,KAAK,QAAO,IAAI,CAEvB;IAEF,QAAQ,CAAC,OAAO,cAAe,MAAM,WAAW,MAAM,cAAa,MAAM,GAAG,IAAI,KAAU,MAAM,CAqD9F;IAEF,QAAQ,CAAC,OAAO,QAAO,SAAS,MAAM,EAAE,CAQN;CACrC"}
|
|
@@ -26,6 +26,15 @@ export class SessionEventOutbox {
|
|
|
26
26
|
) STRICT;
|
|
27
27
|
CREATE INDEX IF NOT EXISTS relay_session_event_outbox_order
|
|
28
28
|
ON relay_session_event_outbox(ordinal);
|
|
29
|
+
CREATE TABLE IF NOT EXISTS relay_session_event_dead_letters (
|
|
30
|
+
ordinal INTEGER PRIMARY KEY,
|
|
31
|
+
event_id TEXT NOT NULL UNIQUE,
|
|
32
|
+
session_id TEXT NOT NULL,
|
|
33
|
+
envelope_json TEXT NOT NULL,
|
|
34
|
+
rejection_code TEXT NOT NULL CHECK (
|
|
35
|
+
rejection_code IN ('session_deleted', 'session_not_found')
|
|
36
|
+
)
|
|
37
|
+
) STRICT;
|
|
29
38
|
CREATE TABLE IF NOT EXISTS relay_session_event_sources (
|
|
30
39
|
source_key TEXT PRIMARY KEY,
|
|
31
40
|
next_source_seq INTEGER NOT NULL
|
|
@@ -103,6 +112,36 @@ export class SessionEventOutbox {
|
|
|
103
112
|
WHERE event_id = ? AND session_id = ?`)
|
|
104
113
|
.run(acknowledgement.eventId, acknowledgement.sessionId);
|
|
105
114
|
};
|
|
115
|
+
quarantine = (rejection) => {
|
|
116
|
+
this.#database.exec("BEGIN IMMEDIATE");
|
|
117
|
+
try {
|
|
118
|
+
const insertion = this.#database
|
|
119
|
+
.prepare(`INSERT INTO relay_session_event_dead_letters (
|
|
120
|
+
ordinal, event_id, session_id, envelope_json, rejection_code
|
|
121
|
+
)
|
|
122
|
+
SELECT ordinal, event_id, session_id, envelope_json, ?
|
|
123
|
+
FROM relay_session_event_outbox
|
|
124
|
+
WHERE event_id = ? AND session_id = ?`)
|
|
125
|
+
.run(rejection.code, rejection.eventId, rejection.sessionId);
|
|
126
|
+
if (insertion.changes !== 1) {
|
|
127
|
+
this.#database.exec("COMMIT");
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
const deletion = this.#database
|
|
131
|
+
.prepare(`DELETE FROM relay_session_event_outbox
|
|
132
|
+
WHERE event_id = ? AND session_id = ?`)
|
|
133
|
+
.run(rejection.eventId, rejection.sessionId);
|
|
134
|
+
if (deletion.changes !== 1) {
|
|
135
|
+
throw new Error("The rejected session event could not be removed from the durable outbox");
|
|
136
|
+
}
|
|
137
|
+
this.#database.exec("COMMIT");
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
this.#database.exec("ROLLBACK");
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
};
|
|
106
145
|
close = () => {
|
|
107
146
|
this.#database.close();
|
|
108
147
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-event-outbox.js","sourceRoot":"","sources":["../../src/relay-connection/session-event-outbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACH,0BAA0B,EAC1B,kBAAkB,
|
|
1
|
+
{"version":3,"file":"session-event-outbox.js","sourceRoot":"","sources":["../../src/relay-connection/session-event-outbox.ts"],"names":[],"mappings":"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"}
|
package/dist/run-daemon.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-daemon.d.ts","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run-daemon.d.ts","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"AA+GA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,OAAO,EAA4B,KAAK,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AA2iD5G,wBAAsB,SAAS,CAC3B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,GAAE,WAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CA2Hf"}
|
package/dist/run-daemon.js
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { basename, join } from "node:path";
|
|
2
3
|
import { styleText } from "node:util";
|
|
3
|
-
import { AGENT_ACTIVITY_KIND, AGENT_INSTALL_CANCEL_KIND, AGENT_INSTALL_CANCELLED_KIND, AGENT_INSTALL_COMPLETED_KIND, AGENT_INSTALL_FAILED_KIND, AGENT_INSTALL_PROGRESS_KIND, AGENT_INSTALL_REQUEST_KIND, AGENT_INSTALL_STARTED_KIND, AGENT_MESSAGE_DELTA_KIND, decodeAgentInstallCancelCommand, decodeAgentInstallRequestCommand, decodeMessageKind, decodeNativeSessionCancel, decodeNativeSessionCommand, decodeRuntimeHeartbeatAckEvent, decodeRuntimeLivenessReadyEvent, decodeSessionCancelCommand, decodeSessionConfigureCommand, decodeSessionElicitationRespondCommand, decodeSessionEventAcknowledgement, decodeSessionPermissionRespondCommand, decodeSessionPrepareCommand, decodeSessionPromptCommand, decodeWorkspaceListCommand, encodeAgentActivityEvent, encodeAgentContentEvent, encodeAgentInstallCancelledEvent, encodeAgentInstallCompletedEvent, encodeAgentInstallFailedEvent, encodeAgentInstallProgressEvent, encodeAgentInstallStartedEvent, encodeAgentMessageDeltaEvent, encodeNativeSessionResult, encodeSessionCommandsUpdatedEvent, encodeSessionCompletedEvent, encodeSessionConfigUpdatedEvent, encodeSessionElicitationRequestedEvent, encodeSessionElicitationResolvedEvent, encodeSessionFailedEvent, encodeSessionInfoUpdatedEvent, encodeSessionOperationFailedEvent, encodeSessionPermissionRequestedEvent, encodeSessionPermissionResolvedEvent, encodeSessionReadyEvent, encodeSessionStartedEvent, encodeSessionUsageUpdatedEvent, encodeWorkspaceEntriesEvent, NATIVE_SESSION_CANCEL_KIND, NATIVE_SESSION_REQUEST_KIND, RUNTIME_HEARTBEAT_ACK_KIND, RUNTIME_LIVENESS_READY_KIND, SESSION_CANCEL_KIND, SESSION_COMPLETED_KIND, SESSION_CONFIGURE_KIND, SESSION_ELICITATION_RESPOND_KIND, SESSION_EVENT_ACK_KIND, SESSION_FAILED_KIND, SESSION_PERMISSION_RESPOND_KIND, SESSION_PREPARE_KIND, SESSION_PROMPT_KIND, SESSION_STARTED_KIND, WORKSPACE_LIST_KIND, } from "@moxt-ai/mobius-protocol";
|
|
4
|
+
import { AGENT_ACTIVITY_KIND, AGENT_INSTALL_CANCEL_KIND, AGENT_INSTALL_CANCELLED_KIND, AGENT_INSTALL_COMPLETED_KIND, AGENT_INSTALL_FAILED_KIND, AGENT_INSTALL_PROGRESS_KIND, AGENT_INSTALL_REQUEST_KIND, AGENT_INSTALL_STARTED_KIND, AGENT_MESSAGE_DELTA_KIND, BOT_BINDING_APPROVAL_REQUEST_KIND, BOT_SESSION_PROMPT_KIND, BotExecutionBindingUnavailableEvent, decodeAgentInstallCancelCommand, decodeAgentInstallRequestCommand, decodeBotExecutionBindingApprovalRequest, decodeBotSessionPromptCommand, decodeMessageKind, decodeNativeSessionCancel, decodeNativeSessionCommand, decodeRuntimeHeartbeatAckEvent, decodeRuntimeLivenessReadyEvent, decodeSessionCancelCommand, decodeSessionConfigureCommand, decodeSessionElicitationRespondCommand, decodeSessionEventAcknowledgement, decodeSessionEventRejection, decodeSessionPermissionRespondCommand, decodeSessionPrepareCommand, decodeSessionPromptCommand, decodeWorkspaceListCommand, encodeAgentActivityEvent, encodeAgentContentEvent, encodeAgentInstallCancelledEvent, encodeAgentInstallCompletedEvent, encodeAgentInstallFailedEvent, encodeAgentInstallProgressEvent, encodeAgentInstallStartedEvent, encodeAgentMessageDeltaEvent, encodeBotExecutionBindingApprovedEvent, encodeBotExecutionBindingUnavailableEvent, encodeNativeSessionResult, encodeSessionCommandsUpdatedEvent, encodeSessionCompletedEvent, encodeSessionConfigUpdatedEvent, encodeSessionElicitationRequestedEvent, encodeSessionElicitationResolvedEvent, encodeSessionFailedEvent, encodeSessionInfoUpdatedEvent, encodeSessionOperationFailedEvent, encodeSessionPermissionRequestedEvent, encodeSessionPermissionResolvedEvent, encodeSessionReadyEvent, encodeSessionStartedEvent, encodeSessionUsageUpdatedEvent, encodeWorkspaceEntriesEvent, NATIVE_SESSION_CANCEL_KIND, NATIVE_SESSION_REQUEST_KIND, RUNTIME_HEARTBEAT_ACK_KIND, RUNTIME_LIVENESS_READY_KIND, SESSION_CANCEL_KIND, SESSION_COMPLETED_KIND, SESSION_CONFIGURE_KIND, SESSION_ELICITATION_RESPOND_KIND, SESSION_EVENT_ACK_KIND, SESSION_EVENT_REJECTED_KIND, SESSION_FAILED_KIND, SESSION_PERMISSION_RESPOND_KIND, SESSION_PREPARE_KIND, SESSION_PROMPT_KIND, SESSION_STARTED_KIND, WORKSPACE_LIST_KIND, } from "@moxt-ai/mobius-protocol";
|
|
4
5
|
import { fetch, WebSocket } from "undici";
|
|
5
6
|
import { AcpExecutionError, AcpSessionManager } from "./acp/session-manager.js";
|
|
6
7
|
import { SqliteAcpSessionStore } from "./acp/session-store.js";
|
|
7
8
|
import { supportedLocalAgentSpecifications } from "./agent-catalog/discover-local-agents.js";
|
|
8
|
-
import { LocalAgentCatalogError } from "./agent-catalog/local-agent.js";
|
|
9
|
+
import { LocalAgentCatalogError, LocalAgentDefinition } from "./agent-catalog/local-agent.js";
|
|
9
10
|
import { publishAgentCatalog } from "./agent-catalog/publish-agent-catalog.js";
|
|
10
11
|
import { AgentInstallationManager, CancelledInstallation, FailedInstallation, RequestedInstallation, RunningInstallation, SucceededInstallation, } from "./agent-installation/agent-installation-manager.js";
|
|
11
12
|
import { FixedInstallationExecutor } from "./agent-installation/fixed-installation-executor.js";
|
|
12
13
|
import { LocalAuthorizationError } from "./authorization/local-authorization-error.js";
|
|
13
14
|
import { WorkspaceDirectoryService } from "./authorization/workspace-directory.js";
|
|
15
|
+
import { EmbeddedBotContextApplicator } from "./bots/bot-context-applicator.js";
|
|
16
|
+
import { BotExecutionContextRegistry } from "./bots/bot-execution-context.js";
|
|
17
|
+
import { BotOutboundIpcServer } from "./bots/bot-outbound-ipc.js";
|
|
18
|
+
import { LocalBotAuthorizationError, LocalBotGrantStore } from "./bots/local-bot-grant-store.js";
|
|
14
19
|
import { NativeSessionService } from "./native-sessions/service.js";
|
|
15
20
|
import { environmentProxyDispatcher } from "./network/environment-proxy.js";
|
|
16
21
|
import { PromptArtifactError, resolvePromptArtifacts } from "./prompt-artifact-resolver.js";
|
|
@@ -23,6 +28,12 @@ const RELAY_RECONNECT_DELAY_MILLISECONDS = 500;
|
|
|
23
28
|
const RELAY_CONNECTION_REFRESH_MILLISECONDS = 20 * 60 * 1_000;
|
|
24
29
|
const ACTIVE_TURN_RECONCILIATION_TIMEOUT_MILLISECONDS = 20_000;
|
|
25
30
|
const ACTIVE_TURN_RECONCILIATION_CLOSE_CODE = 4009;
|
|
31
|
+
function botIpcSocketPath() {
|
|
32
|
+
if (process.platform === "win32") {
|
|
33
|
+
return `\\\\.\\pipe\\mobius-bot-${randomUUID()}`;
|
|
34
|
+
}
|
|
35
|
+
return join("/tmp", `mobius-bot-${randomUUID()}.sock`);
|
|
36
|
+
}
|
|
26
37
|
class RelayConnectionRefreshState {
|
|
27
38
|
}
|
|
28
39
|
class ScheduledRelayConnectionRefreshState extends RelayConnectionRefreshState {
|
|
@@ -372,6 +383,7 @@ function operationErrorCode(error) {
|
|
|
372
383
|
if (error instanceof AcpExecutionError ||
|
|
373
384
|
error instanceof LocalAuthorizationError ||
|
|
374
385
|
error instanceof LocalAgentCatalogError ||
|
|
386
|
+
error instanceof LocalBotAuthorizationError ||
|
|
375
387
|
error instanceof PromptArtifactError) {
|
|
376
388
|
return error.code;
|
|
377
389
|
}
|
|
@@ -381,6 +393,7 @@ function operationErrorMessage(error) {
|
|
|
381
393
|
if (error instanceof AcpExecutionError ||
|
|
382
394
|
error instanceof LocalAuthorizationError ||
|
|
383
395
|
error instanceof LocalAgentCatalogError ||
|
|
396
|
+
error instanceof LocalBotAuthorizationError ||
|
|
384
397
|
error instanceof PromptArtifactError) {
|
|
385
398
|
return error.message;
|
|
386
399
|
}
|
|
@@ -600,6 +613,134 @@ async function executePrompt(outbox, publisher, command, config, directories, au
|
|
|
600
613
|
console.error("Mobius daemon command failed", error);
|
|
601
614
|
}
|
|
602
615
|
}
|
|
616
|
+
function botExecutionAgent(agent, contextHandle, socketPath) {
|
|
617
|
+
return new LocalAgentDefinition(agent.id, agent.label, agent.command, agent.arguments, {
|
|
618
|
+
...agent.environment,
|
|
619
|
+
MOBIUS_BOT_CONTEXT: contextHandle,
|
|
620
|
+
MOBIUS_BOT_SOCKET: socketPath,
|
|
621
|
+
MOBIUS_RELAY_TOKEN: "",
|
|
622
|
+
MOBIUS_RELAY_URL: "",
|
|
623
|
+
}, agent.adapterVersion, agent.agentVersion, agent.adapterIdentity, agent.agentIdentity, agent.promptTimeoutMilliseconds, agent.capabilities);
|
|
624
|
+
}
|
|
625
|
+
async function executeBotPrompt(outbox, publisher, command, config, directories, audit, sessions, grants, contexts, applicator, ipc, attemptId, signal) {
|
|
626
|
+
try {
|
|
627
|
+
if (command.additionalDirectoryIds.length > 0) {
|
|
628
|
+
throw new LocalBotAuthorizationError("binding_not_approved", "The Bot execution requested unapproved additional directories");
|
|
629
|
+
}
|
|
630
|
+
const deadline = Date.parse(command.executionDeadlineAt);
|
|
631
|
+
const remaining = deadline - Date.now();
|
|
632
|
+
if (!Number.isSafeInteger(deadline) || remaining <= 0) {
|
|
633
|
+
throw new LocalBotAuthorizationError("turn_expired", "The Bot execution deadline has expired");
|
|
634
|
+
}
|
|
635
|
+
const grant = await grants.resolveExecution(command, config.catalog, directories, config.bindingId, Date.now(), signal);
|
|
636
|
+
const attachments = await resolvePromptArtifacts(config, command, signal);
|
|
637
|
+
const applied = await applicator.apply(command, grant, attachments.resources, signal);
|
|
638
|
+
const lease = contexts.activate(command);
|
|
639
|
+
try {
|
|
640
|
+
const deadlineSignal = AbortSignal.timeout(remaining);
|
|
641
|
+
const executionSignal = AbortSignal.any([signal, deadlineSignal]);
|
|
642
|
+
const agent = botExecutionAgent(grant.agent, lease.context.contextHandle, ipc.socketPath);
|
|
643
|
+
audit.record({
|
|
644
|
+
commandId: command.commandId,
|
|
645
|
+
details: {
|
|
646
|
+
behaviorRevisionId: command.behaviorRevisionId,
|
|
647
|
+
bindingId: command.bindingId,
|
|
648
|
+
botId: command.botId,
|
|
649
|
+
executionId: command.executionId,
|
|
650
|
+
localGrantId: command.localGrantId,
|
|
651
|
+
},
|
|
652
|
+
event: "bot_session_authorized",
|
|
653
|
+
sessionId: command.sessionId,
|
|
654
|
+
});
|
|
655
|
+
outbox.transitionExecution(command.commandId, "running");
|
|
656
|
+
publisher.recordAttempt(command.sessionId, encodeSessionStartedEvent({
|
|
657
|
+
attemptId,
|
|
658
|
+
commandId: command.commandId,
|
|
659
|
+
kind: SESSION_STARTED_KIND,
|
|
660
|
+
sessionId: command.sessionId,
|
|
661
|
+
}), attemptId);
|
|
662
|
+
const result = await sessions.runPrompt({
|
|
663
|
+
additionalDirectories: [],
|
|
664
|
+
agent,
|
|
665
|
+
commandId: command.commandId,
|
|
666
|
+
cwd: grant.workspacePath,
|
|
667
|
+
images: attachments.images,
|
|
668
|
+
onActivity: (activity) => {
|
|
669
|
+
publisher.recordAttempt(command.sessionId, encodeAgentActivityEvent({
|
|
670
|
+
activityId: activity.activityId,
|
|
671
|
+
activityType: activity.activityType,
|
|
672
|
+
commandId: command.commandId,
|
|
673
|
+
content: activity.content,
|
|
674
|
+
detail: activity.detail,
|
|
675
|
+
input: activity.input,
|
|
676
|
+
kind: AGENT_ACTIVITY_KIND,
|
|
677
|
+
locations: activity.locations,
|
|
678
|
+
name: activity.name,
|
|
679
|
+
output: activity.output,
|
|
680
|
+
sequence: activity.sequence,
|
|
681
|
+
sessionId: command.sessionId,
|
|
682
|
+
status: activity.status,
|
|
683
|
+
title: activity.title,
|
|
684
|
+
toolKind: activity.toolKind,
|
|
685
|
+
}), attemptId);
|
|
686
|
+
return Promise.resolve();
|
|
687
|
+
},
|
|
688
|
+
onText: (text) => {
|
|
689
|
+
publisher.recordAttempt(command.sessionId, encodeAgentMessageDeltaEvent({
|
|
690
|
+
commandId: command.commandId,
|
|
691
|
+
kind: AGENT_MESSAGE_DELTA_KIND,
|
|
692
|
+
sessionId: command.sessionId,
|
|
693
|
+
text,
|
|
694
|
+
}), attemptId);
|
|
695
|
+
return Promise.resolve();
|
|
696
|
+
},
|
|
697
|
+
prompt: command.prompt,
|
|
698
|
+
resources: applied.resources,
|
|
699
|
+
sessionId: command.sessionId,
|
|
700
|
+
signal: executionSignal,
|
|
701
|
+
});
|
|
702
|
+
publisher.recordAttempt(command.sessionId, encodeSessionCompletedEvent({
|
|
703
|
+
commandId: command.commandId,
|
|
704
|
+
kind: SESSION_COMPLETED_KIND,
|
|
705
|
+
sessionId: command.sessionId,
|
|
706
|
+
stopReason: result.stopReason,
|
|
707
|
+
}), attemptId);
|
|
708
|
+
outbox.transitionExecution(command.commandId, result.stopReason === "cancelled" ? "cancelled" : "succeeded");
|
|
709
|
+
audit.record({
|
|
710
|
+
commandId: command.commandId,
|
|
711
|
+
details: { botId: command.botId, executionId: command.executionId },
|
|
712
|
+
event: result.stopReason === "cancelled" ? "bot_session_cancelled" : "bot_session_completed",
|
|
713
|
+
sessionId: command.sessionId,
|
|
714
|
+
});
|
|
715
|
+
}
|
|
716
|
+
finally {
|
|
717
|
+
lease.release();
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
catch (error) {
|
|
721
|
+
const failure = Date.parse(command.executionDeadlineAt) <= Date.now()
|
|
722
|
+
? new LocalBotAuthorizationError("turn_expired", "The Bot execution deadline has expired", {
|
|
723
|
+
cause: error,
|
|
724
|
+
})
|
|
725
|
+
: error;
|
|
726
|
+
audit.record({
|
|
727
|
+
commandId: command.commandId,
|
|
728
|
+
details: {
|
|
729
|
+
botId: command.botId,
|
|
730
|
+
code: operationErrorCode(failure),
|
|
731
|
+
executionId: command.executionId,
|
|
732
|
+
},
|
|
733
|
+
event: "bot_session_failed",
|
|
734
|
+
sessionId: command.sessionId,
|
|
735
|
+
});
|
|
736
|
+
const code = operationErrorCode(failure);
|
|
737
|
+
reportFailure(publisher, command, code === "session_operation_failed" ? "agent_execution_failed" : code, code === "session_operation_failed"
|
|
738
|
+
? "The local agent could not complete the Bot request"
|
|
739
|
+
: operationErrorMessage(failure), attemptId);
|
|
740
|
+
outbox.transitionExecution(command.commandId, "failed");
|
|
741
|
+
console.error("Mobius daemon Bot command failed", failure);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
603
744
|
function waitForRelayRetry(signal, timer) {
|
|
604
745
|
if (signal.aborted) {
|
|
605
746
|
return Promise.resolve();
|
|
@@ -638,7 +779,7 @@ async function publishAgentCatalogUntilAvailable(config, signal, timer) {
|
|
|
638
779
|
}
|
|
639
780
|
}
|
|
640
781
|
}
|
|
641
|
-
async function runRelayConnection(config, directories, audit, sessions, installations, installationObserver, nativeSessions, outbox, publisher, activeTurns, activeAttemptIds, onConnected, signal, timer) {
|
|
782
|
+
async function runRelayConnection(config, directories, audit, sessions, installations, installationObserver, nativeSessions, outbox, publisher, grants, contexts, applicator, ipc, activeTurns, activeAttemptIds, onConnected, signal, timer) {
|
|
642
783
|
const relayUrl = new URL(config.relayUrl);
|
|
643
784
|
relayUrl.searchParams.set("liveness", "1");
|
|
644
785
|
const socket = await connectRelay(relayUrl, signal);
|
|
@@ -717,6 +858,62 @@ async function runRelayConnection(config, directories, audit, sessions, installa
|
|
|
717
858
|
outbox.acknowledge(decodeSessionEventAcknowledgement(encoded));
|
|
718
859
|
return;
|
|
719
860
|
}
|
|
861
|
+
if (kind === SESSION_EVENT_REJECTED_KIND) {
|
|
862
|
+
const rejection = decodeSessionEventRejection(encoded);
|
|
863
|
+
if (outbox.quarantine(rejection)) {
|
|
864
|
+
audit.record({
|
|
865
|
+
commandId: rejection.eventId,
|
|
866
|
+
details: { code: rejection.code },
|
|
867
|
+
event: "session_event_rejected",
|
|
868
|
+
sessionId: rejection.sessionId,
|
|
869
|
+
});
|
|
870
|
+
}
|
|
871
|
+
else {
|
|
872
|
+
console.warn("Mobius daemon ignored a rejection for an unknown session event");
|
|
873
|
+
}
|
|
874
|
+
return;
|
|
875
|
+
}
|
|
876
|
+
if (kind === BOT_BINDING_APPROVAL_REQUEST_KIND) {
|
|
877
|
+
const request = decodeBotExecutionBindingApprovalRequest(encoded);
|
|
878
|
+
void grants
|
|
879
|
+
.approve(request, config.catalog, directories, config.bindingId, Date.now(), connectionController.signal)
|
|
880
|
+
.then((approved) => {
|
|
881
|
+
audit.record({
|
|
882
|
+
commandId: request.requestId,
|
|
883
|
+
details: {
|
|
884
|
+
behaviorRevisionId: request.behaviorRevisionId,
|
|
885
|
+
bindingId: request.bindingId,
|
|
886
|
+
botId: request.botId,
|
|
887
|
+
localGrantId: approved.localGrantId,
|
|
888
|
+
},
|
|
889
|
+
event: "bot_binding_approved",
|
|
890
|
+
sessionId: `bot-binding:${request.bindingId}`,
|
|
891
|
+
});
|
|
892
|
+
if (socket.readyState === WebSocket.OPEN) {
|
|
893
|
+
send(socket, encodeBotExecutionBindingApprovedEvent(approved));
|
|
894
|
+
}
|
|
895
|
+
})
|
|
896
|
+
.catch((error) => {
|
|
897
|
+
if (connectionController.signal.aborted) {
|
|
898
|
+
return;
|
|
899
|
+
}
|
|
900
|
+
const code = error instanceof LocalBotAuthorizationError ? error.code : "binding_incompatible";
|
|
901
|
+
const message = error instanceof LocalBotAuthorizationError
|
|
902
|
+
? error.message
|
|
903
|
+
: "The local execution target is incompatible";
|
|
904
|
+
grants.recordUnavailable(request, code, message, Date.now());
|
|
905
|
+
audit.record({
|
|
906
|
+
commandId: request.requestId,
|
|
907
|
+
details: { bindingId: request.bindingId, botId: request.botId, code },
|
|
908
|
+
event: "bot_binding_unavailable",
|
|
909
|
+
sessionId: `bot-binding:${request.bindingId}`,
|
|
910
|
+
});
|
|
911
|
+
if (socket.readyState === WebSocket.OPEN) {
|
|
912
|
+
send(socket, encodeBotExecutionBindingUnavailableEvent(new BotExecutionBindingUnavailableEvent(request.requestId, request.botId, request.behaviorRevisionId, request.bindingId, request.bindingRevision, code, message)));
|
|
913
|
+
}
|
|
914
|
+
});
|
|
915
|
+
return;
|
|
916
|
+
}
|
|
720
917
|
if (kind === NATIVE_SESSION_CANCEL_KIND) {
|
|
721
918
|
const command = decodeNativeSessionCancel(encoded);
|
|
722
919
|
const pending = nativeRequests.get(command.requestId);
|
|
@@ -877,6 +1074,32 @@ async function runRelayConnection(config, directories, audit, sessions, installa
|
|
|
877
1074
|
});
|
|
878
1075
|
return;
|
|
879
1076
|
}
|
|
1077
|
+
if (kind === BOT_SESSION_PROMPT_KIND) {
|
|
1078
|
+
const command = decodeBotSessionPromptCommand(encoded);
|
|
1079
|
+
if (activeTurns.has(command.commandId)) {
|
|
1080
|
+
return;
|
|
1081
|
+
}
|
|
1082
|
+
const receipt = outbox.claimExecution(command.commandId, command.sessionId, encoded);
|
|
1083
|
+
if (receipt.kind === "duplicate") {
|
|
1084
|
+
return;
|
|
1085
|
+
}
|
|
1086
|
+
const turn = new ActiveDaemonTurn(command, receipt.attemptId);
|
|
1087
|
+
activeTurns.set(command.commandId, turn);
|
|
1088
|
+
activeAttemptIds.set(command.sessionId, receipt.attemptId);
|
|
1089
|
+
void executeBotPrompt(outbox, publisher, command, config, directories, audit, sessions, grants, contexts, applicator, ipc, receipt.attemptId, turn.signal)
|
|
1090
|
+
.catch((error) => {
|
|
1091
|
+
console.error("Mobius daemon Bot turn failed", error);
|
|
1092
|
+
})
|
|
1093
|
+
.finally(() => {
|
|
1094
|
+
activeTurns.delete(command.commandId);
|
|
1095
|
+
if (activeAttemptIds.get(command.sessionId) === receipt.attemptId) {
|
|
1096
|
+
activeAttemptIds.delete(command.sessionId);
|
|
1097
|
+
}
|
|
1098
|
+
turn.finish();
|
|
1099
|
+
connectionRefresh.afterTurnFinished();
|
|
1100
|
+
});
|
|
1101
|
+
return;
|
|
1102
|
+
}
|
|
880
1103
|
if (kind !== SESSION_PROMPT_KIND) {
|
|
881
1104
|
throw new Error("Unsupported protocol message");
|
|
882
1105
|
}
|
|
@@ -952,6 +1175,10 @@ export async function runDaemon(config, audit, signal, timer = systemDaemonTimer
|
|
|
952
1175
|
const sessionStore = new SqliteAcpSessionStore(config.auditDatabasePath);
|
|
953
1176
|
const outbox = new SessionEventOutbox(config.auditDatabasePath);
|
|
954
1177
|
const publisher = new DaemonSessionEventPublisher(outbox);
|
|
1178
|
+
const grants = new LocalBotGrantStore(config.auditDatabasePath);
|
|
1179
|
+
const contexts = new BotExecutionContextRegistry();
|
|
1180
|
+
const applicator = new EmbeddedBotContextApplicator();
|
|
1181
|
+
const ipc = new BotOutboundIpcServer(botIpcSocketPath(), config.relayUrl, contexts);
|
|
955
1182
|
const activeTurns = new Map();
|
|
956
1183
|
const activeAttemptIds = new Map();
|
|
957
1184
|
const recordSessionEvent = (sessionId, payload) => {
|
|
@@ -980,9 +1207,10 @@ export async function runDaemon(config, audit, signal, timer = systemDaemonTimer
|
|
|
980
1207
|
};
|
|
981
1208
|
const catalogPublication = publishAgentCatalogUntilAvailable(config, signal, timer);
|
|
982
1209
|
try {
|
|
1210
|
+
await ipc.listen(signal);
|
|
983
1211
|
while (!signal.aborted) {
|
|
984
1212
|
try {
|
|
985
|
-
await runRelayConnection(config, directories, audit, sessions, installations, installationObserver, nativeSessions, outbox, publisher, activeTurns, activeAttemptIds, announceConnection, signal, timer);
|
|
1213
|
+
await runRelayConnection(config, directories, audit, sessions, installations, installationObserver, nativeSessions, outbox, publisher, grants, contexts, applicator, ipc, activeTurns, activeAttemptIds, announceConnection, signal, timer);
|
|
986
1214
|
retryAnnounced = false;
|
|
987
1215
|
}
|
|
988
1216
|
catch {
|
|
@@ -1012,14 +1240,24 @@ export async function runDaemon(config, audit, signal, timer = systemDaemonTimer
|
|
|
1012
1240
|
}
|
|
1013
1241
|
finally {
|
|
1014
1242
|
try {
|
|
1015
|
-
await
|
|
1243
|
+
await ipc.close();
|
|
1016
1244
|
}
|
|
1017
1245
|
finally {
|
|
1018
1246
|
try {
|
|
1019
|
-
|
|
1247
|
+
await sessions.close();
|
|
1020
1248
|
}
|
|
1021
1249
|
finally {
|
|
1022
|
-
|
|
1250
|
+
try {
|
|
1251
|
+
sessionStore.close();
|
|
1252
|
+
}
|
|
1253
|
+
finally {
|
|
1254
|
+
try {
|
|
1255
|
+
grants.close();
|
|
1256
|
+
}
|
|
1257
|
+
finally {
|
|
1258
|
+
outbox.close();
|
|
1259
|
+
}
|
|
1260
|
+
}
|
|
1023
1261
|
}
|
|
1024
1262
|
}
|
|
1025
1263
|
}
|