@moxt-ai/mobius 0.0.4 → 0.0.6

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 (115) hide show
  1. package/dist/acp/native-session.d.ts +30 -0
  2. package/dist/acp/native-session.d.ts.map +1 -0
  3. package/dist/acp/native-session.js +25 -0
  4. package/dist/acp/native-session.js.map +1 -0
  5. package/dist/acp/session-history.d.ts +9 -0
  6. package/dist/acp/session-history.d.ts.map +1 -0
  7. package/dist/acp/session-history.js +69 -0
  8. package/dist/acp/session-history.js.map +1 -0
  9. package/dist/acp/session-manager.d.ts +16 -5
  10. package/dist/acp/session-manager.d.ts.map +1 -1
  11. package/dist/acp/session-manager.js +226 -41
  12. package/dist/acp/session-manager.js.map +1 -1
  13. package/dist/acp/session-store.d.ts +9 -0
  14. package/dist/acp/session-store.d.ts.map +1 -1
  15. package/dist/acp/session-store.js +43 -0
  16. package/dist/acp/session-store.js.map +1 -1
  17. package/dist/agent-catalog/agent-diagnostics.d.ts +3 -0
  18. package/dist/agent-catalog/agent-diagnostics.d.ts.map +1 -0
  19. package/dist/agent-catalog/agent-diagnostics.js +62 -0
  20. package/dist/agent-catalog/agent-diagnostics.js.map +1 -0
  21. package/dist/agent-catalog/discover-local-agents.d.ts +77 -0
  22. package/dist/agent-catalog/discover-local-agents.d.ts.map +1 -0
  23. package/dist/agent-catalog/discover-local-agents.js +467 -0
  24. package/dist/agent-catalog/discover-local-agents.js.map +1 -0
  25. package/dist/agent-catalog/local-agent.d.ts +38 -0
  26. package/dist/agent-catalog/local-agent.d.ts.map +1 -0
  27. package/dist/agent-catalog/local-agent.js +93 -0
  28. package/dist/agent-catalog/local-agent.js.map +1 -0
  29. package/dist/agent-catalog/publish-agent-catalog.d.ts +3 -0
  30. package/dist/agent-catalog/publish-agent-catalog.d.ts.map +1 -0
  31. package/dist/agent-catalog/publish-agent-catalog.js +58 -0
  32. package/dist/agent-catalog/publish-agent-catalog.js.map +1 -0
  33. package/dist/agent-installation/agent-installation-manager.d.ts +60 -0
  34. package/dist/agent-installation/agent-installation-manager.d.ts.map +1 -0
  35. package/dist/agent-installation/agent-installation-manager.js +242 -0
  36. package/dist/agent-installation/agent-installation-manager.js.map +1 -0
  37. package/dist/agent-installation/automatic-adapter-provisioner.d.ts +18 -0
  38. package/dist/agent-installation/automatic-adapter-provisioner.d.ts.map +1 -0
  39. package/dist/agent-installation/automatic-adapter-provisioner.js +116 -0
  40. package/dist/agent-installation/automatic-adapter-provisioner.js.map +1 -0
  41. package/dist/agent-installation/fixed-agent-install-recipes.d.ts +20 -0
  42. package/dist/agent-installation/fixed-agent-install-recipes.d.ts.map +1 -0
  43. package/dist/agent-installation/fixed-agent-install-recipes.js +163 -0
  44. package/dist/agent-installation/fixed-agent-install-recipes.js.map +1 -0
  45. package/dist/agent-installation/fixed-installation-executor.d.ts +20 -0
  46. package/dist/agent-installation/fixed-installation-executor.d.ts.map +1 -0
  47. package/dist/agent-installation/fixed-installation-executor.js +204 -0
  48. package/dist/agent-installation/fixed-installation-executor.js.map +1 -0
  49. package/dist/agent-installation/installation-grants.d.ts +2 -0
  50. package/dist/agent-installation/installation-grants.d.ts.map +1 -0
  51. package/dist/agent-installation/installation-grants.js +52 -0
  52. package/dist/agent-installation/installation-grants.js.map +1 -0
  53. package/dist/agent-installation/local-installation-authorizer.d.ts +7 -0
  54. package/dist/agent-installation/local-installation-authorizer.d.ts.map +1 -0
  55. package/dist/agent-installation/local-installation-authorizer.js +32 -0
  56. package/dist/agent-installation/local-installation-authorizer.js.map +1 -0
  57. package/dist/agent-installation/managed-adapter-installer.d.ts +20 -0
  58. package/dist/agent-installation/managed-adapter-installer.d.ts.map +1 -0
  59. package/dist/agent-installation/managed-adapter-installer.js +159 -0
  60. package/dist/agent-installation/managed-adapter-installer.js.map +1 -0
  61. package/dist/agent-installation/verified-download.d.ts +24 -0
  62. package/dist/agent-installation/verified-download.d.ts.map +1 -0
  63. package/dist/agent-installation/verified-download.js +158 -0
  64. package/dist/agent-installation/verified-download.js.map +1 -0
  65. package/dist/audit/audit-store.d.ts +1 -0
  66. package/dist/audit/audit-store.d.ts.map +1 -1
  67. package/dist/audit/audit-store.js +12 -4
  68. package/dist/audit/audit-store.js.map +1 -1
  69. package/dist/authorization/local-authorization-error.d.ts +5 -0
  70. package/dist/authorization/local-authorization-error.d.ts.map +1 -0
  71. package/dist/authorization/local-authorization-error.js +8 -0
  72. package/dist/authorization/local-authorization-error.js.map +1 -0
  73. package/dist/authorization/workspace-directory.d.ts +16 -5
  74. package/dist/authorization/workspace-directory.d.ts.map +1 -1
  75. package/dist/authorization/workspace-directory.js +109 -119
  76. package/dist/authorization/workspace-directory.js.map +1 -1
  77. package/dist/cli.js +6289 -2124
  78. package/dist/cli.js.map +4 -4
  79. package/dist/config.d.ts +8 -12
  80. package/dist/config.d.ts.map +1 -1
  81. package/dist/config.js +14 -55
  82. package/dist/config.js.map +1 -1
  83. package/dist/index.d.ts +1 -1
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +4894 -852
  86. package/dist/index.js.map +4 -4
  87. package/dist/native-sessions/codex-history.d.ts +11 -0
  88. package/dist/native-sessions/codex-history.d.ts.map +1 -0
  89. package/dist/native-sessions/codex-history.js +223 -0
  90. package/dist/native-sessions/codex-history.js.map +1 -0
  91. package/dist/native-sessions/service.d.ts +14 -0
  92. package/dist/native-sessions/service.d.ts.map +1 -0
  93. package/dist/native-sessions/service.js +249 -0
  94. package/dist/native-sessions/service.js.map +1 -0
  95. package/dist/pairing/pair-local-machine.d.ts +2 -2
  96. package/dist/pairing/pair-local-machine.d.ts.map +1 -1
  97. package/dist/pairing/pair-local-machine.js +65 -41
  98. package/dist/pairing/pair-local-machine.js.map +1 -1
  99. package/dist/process/executable.d.ts +40 -0
  100. package/dist/process/executable.d.ts.map +1 -0
  101. package/dist/process/executable.js +305 -0
  102. package/dist/process/executable.js.map +1 -0
  103. package/dist/run-daemon.d.ts +1 -1
  104. package/dist/run-daemon.d.ts.map +1 -1
  105. package/dist/run-daemon.js +431 -180
  106. package/dist/run-daemon.js.map +1 -1
  107. package/dist/storage/state-directory.d.ts +2 -0
  108. package/dist/storage/state-directory.d.ts.map +1 -0
  109. package/dist/storage/state-directory.js +10 -0
  110. package/dist/storage/state-directory.js.map +1 -0
  111. package/package.json +5 -6
  112. package/dist/authorization/authorize-binding.d.ts +0 -6
  113. package/dist/authorization/authorize-binding.d.ts.map +0 -1
  114. package/dist/authorization/authorize-binding.js +0 -30
  115. package/dist/authorization/authorize-binding.js.map +0 -1
@@ -0,0 +1,11 @@
1
+ import { type NativeSessionHistory } from "@moxt-ai/mobius-protocol";
2
+ import type { LocalAgentDefinition } from "../agent-catalog/local-agent.ts";
3
+ interface CodexHistorySnapshot {
4
+ readonly nativeSessionId: string;
5
+ readonly cwd: string;
6
+ readonly history: NativeSessionHistory;
7
+ }
8
+ /** Metadata and paginated display history do not acquire the source writer. */
9
+ export declare function readCodexHistory(agent: LocalAgentDefinition, cwd: string, nativeSessionId: string, signal: AbortSignal): Promise<CodexHistorySnapshot>;
10
+ export {};
11
+ //# sourceMappingURL=codex-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-history.d.ts","sourceRoot":"","sources":["../../src/native-sessions/codex-history.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,oBAAoB,EAK1B,MAAM,0BAA0B,CAAC;AAIlC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAsC5E,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;CACxC;AA8ED,+EAA+E;AAC/E,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,oBAAoB,EAC3B,GAAG,EAAE,MAAM,EACX,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,CAkK/B"}
@@ -0,0 +1,223 @@
1
+ import { spawn } from "node:child_process";
2
+ import { parseNativeHistoryText, SESSION_HISTORY_CHARACTER_LIMIT, SESSION_HISTORY_IMAGE_CHARACTER_LIMIT, SESSION_HISTORY_PREVIEW_MESSAGE_LIMIT, } from "@moxt-ai/mobius-protocol";
3
+ import { z } from "zod";
4
+ import { nativeSessionIdSchema } from "../acp/native-session.js";
5
+ import { AcpExecutionError } from "../acp/session-manager.js";
6
+ import { revalidateExecutable, stopProcessTree, } from "../process/executable.js";
7
+ const responseSchema = z.union([
8
+ z.object({
9
+ id: z.number(),
10
+ error: z.object({ code: z.number(), message: z.string() }),
11
+ }),
12
+ z.object({ id: z.number(), result: z.unknown() }),
13
+ z.object({ method: z.string() }),
14
+ ]);
15
+ const threadSchema = z.object({
16
+ thread: z.object({
17
+ id: nativeSessionIdSchema,
18
+ cwd: z
19
+ .string()
20
+ .min(1)
21
+ .max(2_048)
22
+ .refine((path) => !path.includes("\0")),
23
+ }),
24
+ });
25
+ const turnsSchema = z.object({
26
+ data: z
27
+ .array(z.object({ items: z.array(z.unknown()).max(100_000) }))
28
+ .max(SESSION_HISTORY_PREVIEW_MESSAGE_LIMIT),
29
+ nextCursor: z.string().nullish(),
30
+ });
31
+ const itemTypeSchema = z.object({ type: z.string().min(1).max(80) });
32
+ const userMessageSchema = z.object({
33
+ content: z.array(z.unknown()).max(10_000),
34
+ });
35
+ const textSchema = z.object({ text: z.string() });
36
+ const imageSchema = z.object({ url: z.string() });
37
+ const agentMessageSchema = textSchema.extend({ phase: z.string().nullish() });
38
+ function decodeHistory(thread, value) {
39
+ const page = turnsSchema.parse(value);
40
+ const messages = [];
41
+ let characters = 0;
42
+ let imageCharacters = 0;
43
+ let truncated = page.nextCursor != null;
44
+ for (const turn of page.data.toReversed()) {
45
+ for (const item of turn.items) {
46
+ const { type } = itemTypeSchema.parse(item);
47
+ let message;
48
+ if (type === "userMessage") {
49
+ const { content } = userMessageSchema.parse(item);
50
+ const parsed = parseNativeHistoryText(content
51
+ .map((block) => {
52
+ const { type } = itemTypeSchema.parse(block);
53
+ if (type === "text")
54
+ return textSchema.parse(block).text;
55
+ if (type === "image")
56
+ return `[@image](${imageSchema.parse(block).url})`;
57
+ return "[Attachment]";
58
+ })
59
+ .join(""));
60
+ message = {
61
+ role: "user",
62
+ text: parsed.text,
63
+ ...(parsed.images.length > 0 ? { images: parsed.images } : {}),
64
+ };
65
+ }
66
+ else if (type === "agentMessage") {
67
+ const agent = agentMessageSchema.parse(item);
68
+ if (agent.phase === "commentary")
69
+ continue;
70
+ message = { role: "assistant", text: agent.text };
71
+ }
72
+ else {
73
+ continue;
74
+ }
75
+ const text = message.text.slice(-SESSION_HISTORY_CHARACTER_LIMIT);
76
+ if (text.length === 0 && (message.images?.length ?? 0) === 0)
77
+ continue;
78
+ truncated ||= text.length < message.text.length;
79
+ messages.push({ ...message, text });
80
+ characters += text.length;
81
+ imageCharacters += (message.images ?? []).reduce((size, image) => size + image.data.length, 0);
82
+ while (messages.length > SESSION_HISTORY_PREVIEW_MESSAGE_LIMIT ||
83
+ characters > SESSION_HISTORY_CHARACTER_LIMIT ||
84
+ imageCharacters > SESSION_HISTORY_IMAGE_CHARACTER_LIMIT) {
85
+ const removed = messages.shift();
86
+ if (removed !== undefined) {
87
+ characters -= removed.text.length;
88
+ imageCharacters -= (removed.images ?? []).reduce((size, image) => size + image.data.length, 0);
89
+ }
90
+ truncated = true;
91
+ }
92
+ }
93
+ }
94
+ return {
95
+ nativeSessionId: thread.id,
96
+ cwd: thread.cwd,
97
+ history: {
98
+ status: "available",
99
+ messages,
100
+ truncated,
101
+ coveredCommandIds: [],
102
+ },
103
+ };
104
+ }
105
+ /** Metadata and paginated display history do not acquire the source writer. */
106
+ export async function readCodexHistory(agent, cwd, nativeSessionId, signal) {
107
+ signal.throwIfAborted();
108
+ nativeSessionIdSchema.parse(nativeSessionId);
109
+ if (agent.id !== "codex" ||
110
+ !(await revalidateExecutable(agent.agentIdentity)))
111
+ throw new AcpExecutionError("The local Codex executable changed. Restart Mobius to discover it again.", {}, "agent_executable_changed");
112
+ signal.throwIfAborted();
113
+ const child = spawn(agent.agentIdentity.realPath, ["app-server"], {
114
+ cwd,
115
+ env: { ...process.env, ...agent.environment },
116
+ detached: process.platform !== "win32",
117
+ shell: false,
118
+ stdio: ["pipe", "pipe", "ignore"],
119
+ });
120
+ const response = Promise.withResolvers();
121
+ let state = { kind: "initializing", requestId: 1 };
122
+ let pending = "";
123
+ let receivedBytes = 0;
124
+ const fail = (cause) => response.reject(cause instanceof AcpExecutionError
125
+ ? cause
126
+ : new AcpExecutionError("Saved Codex history could not be read.", { cause }, "native_history_unavailable"));
127
+ const send = (message) => {
128
+ child.stdin.write(`${JSON.stringify(message)}\n`);
129
+ };
130
+ const onData = (chunk) => {
131
+ try {
132
+ receivedBytes += Buffer.byteLength(chunk);
133
+ if (receivedBytes > 32 * 1_024 * 1_024)
134
+ throw new AcpExecutionError("This saved conversation is too large to preview.", {}, "native_history_too_large");
135
+ pending += chunk;
136
+ let newline = pending.indexOf("\n");
137
+ while (newline >= 0) {
138
+ const line = pending.slice(0, newline);
139
+ pending = pending.slice(newline + 1);
140
+ newline = pending.indexOf("\n");
141
+ if (line.trim().length === 0)
142
+ continue;
143
+ const value = JSON.parse(line);
144
+ const message = responseSchema.parse(value);
145
+ if (!("id" in message))
146
+ continue;
147
+ if (message.id !== state.requestId)
148
+ throw new AcpExecutionError("Codex returned an invalid history response.", {}, "invalid_native_session_response");
149
+ if ("error" in message) {
150
+ fail(new AcpExecutionError("Saved Codex history could not be read.", { cause: message.error }, "native_history_unavailable"));
151
+ return;
152
+ }
153
+ switch (state.kind) {
154
+ case "initializing":
155
+ state = { kind: "metadata", requestId: 2 };
156
+ send({ method: "initialized", params: {} });
157
+ send({
158
+ id: state.requestId,
159
+ method: "thread/read",
160
+ params: { threadId: nativeSessionId, includeTurns: false },
161
+ });
162
+ break;
163
+ case "metadata": {
164
+ const { thread } = threadSchema.parse(message.result);
165
+ state = { kind: "turns", requestId: 3, thread };
166
+ send({
167
+ id: state.requestId,
168
+ method: "thread/turns/list",
169
+ params: {
170
+ threadId: nativeSessionId,
171
+ limit: SESSION_HISTORY_PREVIEW_MESSAGE_LIMIT,
172
+ sortDirection: "desc",
173
+ itemsView: "summary",
174
+ },
175
+ });
176
+ break;
177
+ }
178
+ case "turns":
179
+ response.resolve(decodeHistory(state.thread, message.result));
180
+ return;
181
+ default: {
182
+ const unhandled = state;
183
+ throw new Error(`Unknown history read state: ${String(unhandled)}`);
184
+ }
185
+ }
186
+ }
187
+ }
188
+ catch (cause) {
189
+ fail(cause);
190
+ }
191
+ };
192
+ const abort = () => response.reject(signal.reason);
193
+ const onExit = () => fail(new AcpExecutionError("Codex stopped before its saved history was available.", {}, "native_history_unavailable"));
194
+ const timeout = setTimeout(() => fail(new AcpExecutionError("Reading saved Codex history timed out.", {}, "native_history_timeout")), 15_000);
195
+ child.stdout.setEncoding("utf8");
196
+ child.stdout.on("data", onData);
197
+ child.stdin.on("error", fail);
198
+ child.on("error", fail);
199
+ child.on("exit", onExit);
200
+ signal.addEventListener("abort", abort, { once: true });
201
+ try {
202
+ if (signal.aborted)
203
+ abort();
204
+ else
205
+ send({
206
+ id: 1,
207
+ method: "initialize",
208
+ params: { clientInfo: { name: "mobius_history", version: "1.0.0" } },
209
+ });
210
+ return await response.promise;
211
+ }
212
+ finally {
213
+ clearTimeout(timeout);
214
+ signal.removeEventListener("abort", abort);
215
+ child.stdout.removeListener("data", onData);
216
+ if (child.pid !== undefined)
217
+ await stopProcessTree(child);
218
+ child.stdin.removeListener("error", fail);
219
+ child.removeListener("error", fail);
220
+ child.removeListener("exit", onExit);
221
+ }
222
+ }
223
+ //# sourceMappingURL=codex-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-history.js","sourceRoot":"","sources":["../../src/native-sessions/codex-history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { NativeSessionCommand, NativeSessionResult } from "@moxt-ai/mobius-protocol";
2
+ import { type AcpSessionManager } from "../acp/session-manager.ts";
3
+ import type { AuditStore } from "../audit/audit-store.ts";
4
+ import type { WorkspaceDirectoryService } from "../authorization/workspace-directory.ts";
5
+ import type { DaemonConfig } from "../config.ts";
6
+ export declare class NativeSessionService {
7
+ #private;
8
+ constructor(config: DaemonConfig, directories: WorkspaceDirectoryService, sessions: AcpSessionManager, audit: AuditStore);
9
+ readonly execute: (command: NativeSessionCommand, signal: AbortSignal) => Promise<NativeSessionResult>;
10
+ private readonly authorizeEntry;
11
+ private readonly resolveTarget;
12
+ private readonly record;
13
+ }
14
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/native-sessions/service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EAEpB,mBAAmB,EAGpB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAsBjD,qBAAa,oBAAoB;;IAQ/B,YACE,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,yBAAyB,EACtC,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,UAAU,EAMlB;IAED,QAAQ,CAAC,OAAO,YACL,oBAAoB,UACrB,WAAW,KAClB,OAAO,CAAC,mBAAmB,CAAC,CA2O7B;IAEF,OAAO,CAAC,QAAQ,CAAC,cAAc,CA4C7B;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAgD5B;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAUrB;CACH"}
@@ -0,0 +1,249 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { AcpExecutionError, } from "../acp/session-manager.js";
3
+ import { LocalAuthorizationError } from "../authorization/local-authorization-error.js";
4
+ import { readCodexHistory } from "./codex-history.js";
5
+ export class NativeSessionService {
6
+ #entries = new Map();
7
+ #cursors = new Map();
8
+ #config;
9
+ #directories;
10
+ #sessions;
11
+ #audit;
12
+ constructor(config, directories, sessions, audit) {
13
+ this.#config = config;
14
+ this.#directories = directories;
15
+ this.#sessions = sessions;
16
+ this.#audit = audit;
17
+ }
18
+ execute = async (command, signal) => {
19
+ signal.throwIfAborted();
20
+ const cwd = await this.#directories.resolve(command.bindingId, command.directoryId, signal);
21
+ const additionalDirectories = await this.#directories.resolveMany(command.bindingId, command.additionalDirectoryIds, signal);
22
+ signal.throwIfAborted();
23
+ const options = {
24
+ additionalDirectories,
25
+ agent: this.#config.catalog.find(command.agentId),
26
+ cwd,
27
+ sessionId: command.sessionId,
28
+ signal,
29
+ };
30
+ const prepared = await this.#sessions.prepareSession(options);
31
+ if (!prepared.capabilities.listSessions)
32
+ throw new AcpExecutionError("This Agent does not support native session listing", {}, "native_session_unsupported");
33
+ const scope = JSON.stringify([
34
+ command.agentId,
35
+ command.bindingId,
36
+ command.sessionId,
37
+ cwd,
38
+ ]);
39
+ const envelope = {
40
+ kind: "native.session.result",
41
+ protocolVersion: 1,
42
+ requestId: command.requestId,
43
+ sessionId: command.sessionId,
44
+ };
45
+ if (command.action === "list") {
46
+ let cursor = null;
47
+ if (command.cursor !== null) {
48
+ const known = this.#cursors.get(command.cursor);
49
+ if (known?.scope !== scope)
50
+ throw new AcpExecutionError("Refresh the native session list before continuing", {}, "native_session_cursor_expired");
51
+ cursor = known.cursor;
52
+ }
53
+ const page = await this.#sessions.listNativeSessions(options, cursor);
54
+ const entries = [];
55
+ for (const info of page.sessions) {
56
+ const authorized = await this.authorizeEntry(command, options, info);
57
+ if (authorized === null)
58
+ continue;
59
+ const entryId = randomUUID();
60
+ if (this.#entries.size >= 5_000)
61
+ this.#entries.clear();
62
+ this.#entries.set(entryId, {
63
+ scope,
64
+ nativeSessionId: info.sessionId,
65
+ cwd: authorized.cwd,
66
+ additionalDirectories: authorized.additionalDirectories,
67
+ });
68
+ entries.push({
69
+ entryId,
70
+ title: info.title ?? "Untitled session",
71
+ directoryId: authorized.directoryId,
72
+ directoryLabel: authorized.directoryLabel,
73
+ updatedAt: info.updatedAt ?? null,
74
+ additionalDirectories: authorized.additionalEntries,
75
+ });
76
+ }
77
+ let nextCursor = null;
78
+ if (page.nextCursor != null) {
79
+ if (page.nextCursor === cursor)
80
+ throw new AcpExecutionError("The Agent returned a repeated session cursor", {}, "invalid_native_session_response");
81
+ nextCursor = randomUUID();
82
+ if (this.#cursors.size >= 500)
83
+ this.#cursors.clear();
84
+ this.#cursors.set(nextCursor, { scope, cursor: page.nextCursor });
85
+ }
86
+ this.record(command, "native_sessions_listed");
87
+ return {
88
+ ...envelope,
89
+ action: "list",
90
+ capabilities: prepared.capabilities,
91
+ entries,
92
+ nextCursor,
93
+ };
94
+ }
95
+ const selected = this.#entries.get(command.entryId);
96
+ if (selected?.scope !== scope)
97
+ throw new AcpExecutionError("Select a session from a fresh native session list", {}, "native_session_not_found");
98
+ const target = await this.resolveTarget(command, options, selected);
99
+ if (command.action === "delete") {
100
+ if (!prepared.capabilities.deleteSession)
101
+ throw new AcpExecutionError("This Agent does not support native session deletion", {}, "native_session_unsupported");
102
+ signal.throwIfAborted();
103
+ this.record(command, "native_session_delete_authorized");
104
+ const deletedSessionIds = await this.#sessions.deleteNativeSession(options, target.info.sessionId);
105
+ this.record(command, "native_session_deleted");
106
+ return {
107
+ ...envelope,
108
+ action: "delete",
109
+ entryId: command.entryId,
110
+ deletedSessionIds,
111
+ };
112
+ }
113
+ if (command.action === "import" &&
114
+ !prepared.capabilities.loadSession &&
115
+ !prepared.capabilities.resumeSession)
116
+ throw new AcpExecutionError("This Agent cannot import native sessions", {}, "native_session_unsupported");
117
+ if (command.action === "fork" && !prepared.capabilities.unstableForkSession)
118
+ throw new AcpExecutionError("This Agent does not support session forking", {}, "native_session_unsupported");
119
+ if (target.additionalDirectories.length > 0 &&
120
+ !prepared.capabilities.additionalDirectories)
121
+ throw new AcpExecutionError("This Agent cannot restore additional working directories", {}, "native_session_unsupported");
122
+ const opening = this.#sessions.openNativeSession({
123
+ ...options,
124
+ cwd: target.cwd,
125
+ sessionId: command.targetSessionId,
126
+ additionalDirectories: target.additionalDirectories,
127
+ }, { kind: command.action, nativeSessionId: target.info.sessionId });
128
+ const opened = await opening.catch(async (cause) => {
129
+ signal.throwIfAborted();
130
+ if (command.action !== "import" ||
131
+ options.agent.id !== "codex" ||
132
+ !(cause instanceof AcpExecutionError) ||
133
+ cause.code !== "acp_execution_failed")
134
+ throw cause;
135
+ const snapshot = await readCodexHistory(options.agent, target.cwd, target.info.sessionId, signal);
136
+ const resolved = await this.#directories.identify(command.bindingId, snapshot.cwd, signal);
137
+ if (snapshot.nativeSessionId !== target.info.sessionId ||
138
+ resolved.path !== target.cwd)
139
+ throw new AcpExecutionError("Codex returned history for a different session or workspace.", { cause }, "invalid_native_session_response");
140
+ signal.throwIfAborted();
141
+ this.record(command, "native_session_previewed");
142
+ return { kind: "preview", history: snapshot.history };
143
+ });
144
+ if ("kind" in opened)
145
+ return {
146
+ ...envelope,
147
+ action: "preview",
148
+ entryId: command.entryId,
149
+ reason: "continuation_unavailable",
150
+ title: target.info.title ?? "Untitled session",
151
+ history: opened.history,
152
+ };
153
+ signal.throwIfAborted();
154
+ const ready = {
155
+ additionalDirectories: target.additionalEntries,
156
+ agentId: command.agentId,
157
+ agentName: opened.prepared.agentName,
158
+ agentVersion: opened.prepared.agentVersion,
159
+ capabilities: opened.prepared.capabilities,
160
+ commands: opened.prepared.commands,
161
+ configOptions: opened.prepared.configOptions,
162
+ directoryId: target.directoryId,
163
+ directoryLabel: target.directoryLabel,
164
+ kind: "session.ready",
165
+ protocolVersion: 1,
166
+ requestId: command.requestId,
167
+ restored: true,
168
+ sessionId: opened.sessionId,
169
+ };
170
+ this.record(command, command.action === "fork"
171
+ ? "native_session_forked"
172
+ : "native_session_imported");
173
+ return {
174
+ ...envelope,
175
+ action: command.action,
176
+ ready,
177
+ title: target.info.title ?? "Untitled session",
178
+ history: opened.history,
179
+ };
180
+ };
181
+ authorizeEntry = async (command, options, info) => {
182
+ try {
183
+ const primary = await this.#directories.identify(command.bindingId, info.cwd, options.signal);
184
+ const additionalDirectories = [];
185
+ const additionalEntries = [];
186
+ const paths = new Set([primary.path]);
187
+ for (const path of info.additionalDirectories) {
188
+ const directory = await this.#directories.identify(command.bindingId, path, options.signal);
189
+ if (paths.has(directory.path))
190
+ throw new LocalAuthorizationError("Native session roots must be distinct");
191
+ paths.add(directory.path);
192
+ additionalDirectories.push(directory.path);
193
+ additionalEntries.push({
194
+ directoryId: directory.directoryId,
195
+ name: directory.name,
196
+ });
197
+ }
198
+ return {
199
+ info,
200
+ cwd: primary.path,
201
+ directoryId: primary.directoryId,
202
+ directoryLabel: primary.label,
203
+ additionalDirectories,
204
+ additionalEntries,
205
+ };
206
+ }
207
+ catch (error) {
208
+ options.signal.throwIfAborted();
209
+ if (error instanceof LocalAuthorizationError)
210
+ return null;
211
+ throw error;
212
+ }
213
+ };
214
+ resolveTarget = async (command, options, selected) => {
215
+ let cursor = null;
216
+ const visited = new Set();
217
+ for (let index = 0; index < 100; index += 1) {
218
+ const page = await this.#sessions.listNativeSessions(options, cursor);
219
+ const info = page.sessions.find((entry) => entry.sessionId === selected.nativeSessionId);
220
+ if (info !== undefined) {
221
+ const target = await this.authorizeEntry(command, options, info);
222
+ if (target === null)
223
+ throw new LocalAuthorizationError("The selected native session is not authorized");
224
+ if (target.cwd !== selected.cwd ||
225
+ target.additionalDirectories.length !==
226
+ selected.additionalDirectories.length ||
227
+ target.additionalDirectories.some((path, index) => path !== selected.additionalDirectories[index]))
228
+ throw new AcpExecutionError("This session's directory changed. Refresh the list before continuing.", {}, "native_session_target_changed");
229
+ return target;
230
+ }
231
+ cursor = page.nextCursor ?? null;
232
+ if (cursor === null)
233
+ break;
234
+ if (visited.has(cursor))
235
+ throw new AcpExecutionError("The Agent returned a repeated session cursor", {}, "invalid_native_session_response");
236
+ visited.add(cursor);
237
+ }
238
+ throw new AcpExecutionError("The selected native session no longer exists. Refresh the list.", {}, "native_session_not_found");
239
+ };
240
+ record = (command, event) => {
241
+ this.#audit.record({
242
+ commandId: command.requestId,
243
+ sessionId: command.sessionId,
244
+ event,
245
+ details: { agentId: command.agentId },
246
+ });
247
+ };
248
+ }
249
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/native-sessions/service.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,6 @@ export declare class PairingClientError extends Error {
8
8
  readonly code: string;
9
9
  constructor(code: string, message: string, options?: ErrorOptions);
10
10
  }
11
- export declare function pairLocalMachine(arguments_: readonly string[]): Promise<PairedDaemon>;
12
- export declare function resumeLocalMachine(arguments_: readonly string[]): Promise<PairedDaemon>;
11
+ export declare function pairLocalMachine(arguments_: readonly string[], signal?: AbortSignal): Promise<PairedDaemon>;
12
+ export declare function resumeLocalMachine(arguments_: readonly string[], signal?: AbortSignal): Promise<PairedDaemon>;
13
13
  //# sourceMappingURL=pair-local-machine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pair-local-machine.d.ts","sourceRoot":"","sources":["../../src/pairing/pair-local-machine.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,cAAc,CAAC;AAkCtB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAIpE;CACF;AAmZD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAAC,YAAY,CAAC,CAmBvB;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,OAAO,CAAC,YAAY,CAAC,CAWvB"}
1
+ {"version":3,"file":"pair-local-machine.d.ts","sourceRoot":"","sources":["../../src/pairing/pair-local-machine.ts"],"names":[],"mappings":"AAkBA,OAAO,EAEL,KAAK,YAAY,EAGlB,MAAM,cAAc,CAAC;AAmCtB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,YAAY,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAIpE;CACF;AAyaD,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,MAAM,GAAE,WAA0C,GACjD,OAAO,CAAC,YAAY,CAAC,CAiCvB;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,MAAM,GAAE,WAA0C,GACjD,OAAO,CAAC,YAAY,CAAC,CAcvB"}