@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.
Files changed (37) hide show
  1. package/dist/bots/bot-context-applicator.d.ts +14 -0
  2. package/dist/bots/bot-context-applicator.d.ts.map +1 -0
  3. package/dist/bots/bot-context-applicator.js +32 -0
  4. package/dist/bots/bot-context-applicator.js.map +1 -0
  5. package/dist/bots/bot-execution-context.d.ts +20 -0
  6. package/dist/bots/bot-execution-context.d.ts.map +1 -0
  7. package/dist/bots/bot-execution-context.js +82 -0
  8. package/dist/bots/bot-execution-context.js.map +1 -0
  9. package/dist/bots/bot-message-command.d.ts +6 -0
  10. package/dist/bots/bot-message-command.d.ts.map +1 -0
  11. package/dist/bots/bot-message-command.js +140 -0
  12. package/dist/bots/bot-message-command.js.map +1 -0
  13. package/dist/bots/bot-outbound-ipc.d.ts +12 -0
  14. package/dist/bots/bot-outbound-ipc.d.ts.map +1 -0
  15. package/dist/bots/bot-outbound-ipc.js +245 -0
  16. package/dist/bots/bot-outbound-ipc.js.map +1 -0
  17. package/dist/bots/local-bot-grant-store.d.ts +34 -0
  18. package/dist/bots/local-bot-grant-store.d.ts.map +1 -0
  19. package/dist/bots/local-bot-grant-store.js +263 -0
  20. package/dist/bots/local-bot-grant-store.js.map +1 -0
  21. package/dist/cli.js +1924 -209
  22. package/dist/cli.js.map +4 -4
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +1970 -264
  26. package/dist/index.js.map +4 -4
  27. package/dist/prompt-artifact-resolver.d.ts +8 -2
  28. package/dist/prompt-artifact-resolver.d.ts.map +1 -1
  29. package/dist/prompt-artifact-resolver.js.map +1 -1
  30. package/dist/relay-connection/session-event-outbox.d.ts +2 -1
  31. package/dist/relay-connection/session-event-outbox.d.ts.map +1 -1
  32. package/dist/relay-connection/session-event-outbox.js +39 -0
  33. package/dist/relay-connection/session-event-outbox.js.map +1 -1
  34. package/dist/run-daemon.d.ts.map +1 -1
  35. package/dist/run-daemon.js +246 -8
  36. package/dist/run-daemon.js.map +1 -1
  37. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import type { PromptImage, PromptResource, SessionPromptCommand } from "@moxt-ai/mobius-protocol";
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 declare function resolvePromptArtifacts(config: DaemonConfig, command: SessionPromptCommand, signal: AbortSignal): Promise<ResolvedPromptArtifacts>;
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,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGlG,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;AA+KD,wBAAsB,sBAAsB,CACxC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,EAAE,WAAW,GACpB,OAAO,CAAC,uBAAuB,CAAC,CAmDlC"}
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":"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"}
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,EAEnC,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,EA0BvB;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,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"}
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":"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"}
1
+ {"version":3,"file":"session-event-outbox.js","sourceRoot":"","sources":["../../src/relay-connection/session-event-outbox.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run-daemon.d.ts","sourceRoot":"","sources":["../src/run-daemon.ts"],"names":[],"mappings":"AAoGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAOhD,OAAO,EAA4B,KAAK,WAAW,EAAqB,MAAM,6BAA6B,CAAC;AAkuC5G,wBAAsB,SAAS,CAC3B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACnB,KAAK,GAAE,WAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CA0Gf"}
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"}
@@ -1,16 +1,21 @@
1
- import { basename } from "node:path";
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 sessions.close();
1243
+ await ipc.close();
1016
1244
  }
1017
1245
  finally {
1018
1246
  try {
1019
- sessionStore.close();
1247
+ await sessions.close();
1020
1248
  }
1021
1249
  finally {
1022
- outbox.close();
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
  }