@moxt-ai/mobius 0.0.1
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/acp/activity.d.ts +29 -0
- package/dist/acp/activity.d.ts.map +1 -0
- package/dist/acp/activity.js +253 -0
- package/dist/acp/activity.js.map +1 -0
- package/dist/acp/create-client.d.ts +3 -0
- package/dist/acp/create-client.d.ts.map +1 -0
- package/dist/acp/create-client.js +3 -0
- package/dist/acp/create-client.js.map +1 -0
- package/dist/acp/run-prompt.d.ts +15 -0
- package/dist/acp/run-prompt.d.ts.map +1 -0
- package/dist/acp/run-prompt.js +21 -0
- package/dist/acp/run-prompt.js.map +1 -0
- package/dist/acp/session-manager.d.ts +25 -0
- package/dist/acp/session-manager.d.ts.map +1 -0
- package/dist/acp/session-manager.js +301 -0
- package/dist/acp/session-manager.js.map +1 -0
- package/dist/audit/audit-store.d.ts +12 -0
- package/dist/audit/audit-store.d.ts.map +1 -0
- package/dist/audit/audit-store.js +35 -0
- package/dist/audit/audit-store.js.map +1 -0
- package/dist/authorization/authorize-binding.d.ts +6 -0
- package/dist/authorization/authorize-binding.d.ts.map +1 -0
- package/dist/authorization/authorize-binding.js +30 -0
- package/dist/authorization/authorize-binding.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1792 -0
- package/dist/cli.js.map +7 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +85 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1784 -0
- package/dist/index.js.map +7 -0
- package/dist/pairing/pair-local-machine.d.ts +13 -0
- package/dist/pairing/pair-local-machine.d.ts.map +1 -0
- package/dist/pairing/pair-local-machine.js +302 -0
- package/dist/pairing/pair-local-machine.js.map +1 -0
- package/dist/relay-connection/connect.d.ts +2 -0
- package/dist/relay-connection/connect.d.ts.map +1 -0
- package/dist/relay-connection/connect.js +61 -0
- package/dist/relay-connection/connect.js.map +1 -0
- package/dist/run-daemon.d.ts +4 -0
- package/dist/run-daemon.d.ts.map +1 -0
- package/dist/run-daemon.js +274 -0
- package/dist/run-daemon.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { once } from "node:events";
|
|
3
|
+
import { methods, ndJsonStream, PROTOCOL_VERSION, } from "@agentclientprotocol/sdk";
|
|
4
|
+
import { AcpActivityTracker, isProgressMessage, } from "./activity.js";
|
|
5
|
+
import { createAcpClient } from "./create-client.js";
|
|
6
|
+
const PROCESS_STOP_TIMEOUT_MILLISECONDS = 1_000;
|
|
7
|
+
export class AcpExecutionError extends Error {
|
|
8
|
+
code = "acp_execution_failed";
|
|
9
|
+
constructor(message, options = {}) {
|
|
10
|
+
super(message, options);
|
|
11
|
+
this.name = "AcpExecutionError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function readableWebStream(input) {
|
|
15
|
+
let streamOpen = true;
|
|
16
|
+
return new ReadableStream({
|
|
17
|
+
start(controller) {
|
|
18
|
+
input.on("data", (chunk) => {
|
|
19
|
+
if (!streamOpen) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (chunk instanceof Uint8Array) {
|
|
23
|
+
controller.enqueue(new Uint8Array(chunk));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
streamOpen = false;
|
|
27
|
+
controller.error(new Error("ACP process produced a non-binary chunk"));
|
|
28
|
+
});
|
|
29
|
+
input.once("end", () => {
|
|
30
|
+
if (!streamOpen) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
streamOpen = false;
|
|
34
|
+
controller.close();
|
|
35
|
+
});
|
|
36
|
+
input.once("error", (error) => {
|
|
37
|
+
if (!streamOpen) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
streamOpen = false;
|
|
41
|
+
controller.error(error);
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
cancel() {
|
|
45
|
+
streamOpen = false;
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function writableWebStream(output) {
|
|
50
|
+
return new WritableStream({
|
|
51
|
+
write(chunk) {
|
|
52
|
+
return new Promise((resolve, reject) => {
|
|
53
|
+
output.write(chunk, (error) => {
|
|
54
|
+
if (error) {
|
|
55
|
+
reject(error);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
resolve();
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
async function stopAgentProcess(child) {
|
|
65
|
+
child.stdin?.end();
|
|
66
|
+
if (child.exitCode !== null) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
child.kill("SIGTERM");
|
|
70
|
+
try {
|
|
71
|
+
await once(child, "exit", {
|
|
72
|
+
signal: AbortSignal.timeout(PROCESS_STOP_TIMEOUT_MILLISECONDS),
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
if (child.exitCode === null) {
|
|
77
|
+
child.kill("SIGKILL");
|
|
78
|
+
await once(child, "exit");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function rejectWhenAborted(signal) {
|
|
83
|
+
return new Promise((_resolve, reject) => {
|
|
84
|
+
const rejectAbort = () => {
|
|
85
|
+
reject(signal.reason ?? new Error("ACP request was cancelled"));
|
|
86
|
+
};
|
|
87
|
+
signal.addEventListener("abort", rejectAbort, { once: true });
|
|
88
|
+
if (signal.aborted) {
|
|
89
|
+
rejectAbort();
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
class AcpProcessSession {
|
|
94
|
+
#agentId;
|
|
95
|
+
#child;
|
|
96
|
+
#connection;
|
|
97
|
+
#processExit;
|
|
98
|
+
#session;
|
|
99
|
+
#turnRunning = false;
|
|
100
|
+
constructor(agentId, child, connection, session, processExit) {
|
|
101
|
+
this.#agentId = agentId;
|
|
102
|
+
this.#child = child;
|
|
103
|
+
this.#connection = connection;
|
|
104
|
+
this.#session = session;
|
|
105
|
+
this.#processExit = processExit;
|
|
106
|
+
}
|
|
107
|
+
static async start(agent, cwd, signal) {
|
|
108
|
+
signal.throwIfAborted();
|
|
109
|
+
const child = spawn(agent.command, [...agent.arguments], {
|
|
110
|
+
cwd,
|
|
111
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
112
|
+
});
|
|
113
|
+
child.stderr.setEncoding("utf8");
|
|
114
|
+
child.stderr.on("data", (chunk) => {
|
|
115
|
+
process.stderr.write(`[${agent.id}-acp] ${chunk}`);
|
|
116
|
+
});
|
|
117
|
+
const processExit = new Promise((resolve) => {
|
|
118
|
+
child.once("error", resolve);
|
|
119
|
+
child.once("exit", resolve);
|
|
120
|
+
});
|
|
121
|
+
const stream = ndJsonStream(writableWebStream(child.stdin), readableWebStream(child.stdout));
|
|
122
|
+
const connection = createAcpClient().connect(stream);
|
|
123
|
+
try {
|
|
124
|
+
await Promise.race([
|
|
125
|
+
connection.agent.request(methods.agent.initialize, {
|
|
126
|
+
clientCapabilities: {},
|
|
127
|
+
protocolVersion: PROTOCOL_VERSION,
|
|
128
|
+
}, { cancellationSignal: signal }),
|
|
129
|
+
processExit.then(() => {
|
|
130
|
+
throw new AcpExecutionError("ACP agent exited during initialization");
|
|
131
|
+
}),
|
|
132
|
+
rejectWhenAborted(signal),
|
|
133
|
+
]);
|
|
134
|
+
const session = await Promise.race([
|
|
135
|
+
connection.agent
|
|
136
|
+
.buildSession(cwd)
|
|
137
|
+
.start({ cancellationSignal: signal }),
|
|
138
|
+
processExit.then(() => {
|
|
139
|
+
throw new AcpExecutionError("ACP agent exited while starting a session");
|
|
140
|
+
}),
|
|
141
|
+
rejectWhenAborted(signal),
|
|
142
|
+
]);
|
|
143
|
+
return new AcpProcessSession(agent.id, child, connection, session, processExit);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
connection.close(error);
|
|
147
|
+
await stopAgentProcess(child);
|
|
148
|
+
throw new AcpExecutionError("ACP agent initialization failed", {
|
|
149
|
+
cause: error,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
belongsTo = (agentId) => this.#agentId === agentId;
|
|
154
|
+
cancel = async () => {
|
|
155
|
+
if (!this.#turnRunning) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
await this.#connection.agent.notify(methods.agent.session.cancel, {
|
|
159
|
+
sessionId: this.#session.sessionId,
|
|
160
|
+
});
|
|
161
|
+
};
|
|
162
|
+
prompt = async (prompt, onActivity, onText, signal) => {
|
|
163
|
+
if (this.#turnRunning) {
|
|
164
|
+
throw new AcpExecutionError("Another prompt is already running in this conversation");
|
|
165
|
+
}
|
|
166
|
+
this.#turnRunning = true;
|
|
167
|
+
const activities = new AcpActivityTracker(onActivity);
|
|
168
|
+
const runTurn = async () => {
|
|
169
|
+
const completion = this.#session.prompt(prompt, {
|
|
170
|
+
cancellationSignal: signal,
|
|
171
|
+
});
|
|
172
|
+
for (;;) {
|
|
173
|
+
const message = await this.#session.nextUpdate();
|
|
174
|
+
if (message.kind === "stop") {
|
|
175
|
+
await completion;
|
|
176
|
+
await activities.finish();
|
|
177
|
+
return { stopReason: message.stopReason };
|
|
178
|
+
}
|
|
179
|
+
const update = message.update;
|
|
180
|
+
if (update.sessionUpdate === "agent_message_chunk") {
|
|
181
|
+
if (update.content.type === "text") {
|
|
182
|
+
if (isProgressMessage(update)) {
|
|
183
|
+
await activities.recordNarrative("progress", update.messageId ?? "current", update.content.text);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
await activities.finishNarrative();
|
|
187
|
+
await onText(update.content.text);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
if (update.sessionUpdate === "agent_thought_chunk") {
|
|
193
|
+
if (update.content.type === "text") {
|
|
194
|
+
await activities.recordNarrative("reasoning", update.messageId ?? "current", update.content.text);
|
|
195
|
+
}
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
if (update.sessionUpdate === "tool_call") {
|
|
199
|
+
await activities.recordToolCall(update);
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
if (update.sessionUpdate === "tool_call_update") {
|
|
203
|
+
await activities.recordToolCallUpdate(update);
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
if (update.sessionUpdate === "plan") {
|
|
207
|
+
await activities.recordPlan(update);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (update.sessionUpdate === "plan_update") {
|
|
211
|
+
await activities.recordPlanUpdate(update);
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
if (update.sessionUpdate === "plan_removed") {
|
|
215
|
+
await activities.removePlan(update);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
};
|
|
219
|
+
try {
|
|
220
|
+
return await Promise.race([
|
|
221
|
+
runTurn(),
|
|
222
|
+
this.#processExit.then(() => {
|
|
223
|
+
throw new AcpExecutionError("ACP agent exited during a prompt");
|
|
224
|
+
}),
|
|
225
|
+
rejectWhenAborted(signal),
|
|
226
|
+
]);
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
await activities.finish();
|
|
230
|
+
throw new AcpExecutionError("ACP agent execution failed", {
|
|
231
|
+
cause: error,
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
finally {
|
|
235
|
+
this.#turnRunning = false;
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
close = async () => {
|
|
239
|
+
this.#session.dispose();
|
|
240
|
+
this.#connection.close();
|
|
241
|
+
await stopAgentProcess(this.#child);
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
export class AcpSessionManager {
|
|
245
|
+
#activeSessionIds = new Set();
|
|
246
|
+
#cancellationRequests = new Set();
|
|
247
|
+
#sessions = new Map();
|
|
248
|
+
cancelPrompt = async (sessionId) => {
|
|
249
|
+
this.#cancellationRequests.add(sessionId);
|
|
250
|
+
const runtime = this.#sessions.get(sessionId);
|
|
251
|
+
if (runtime !== undefined) {
|
|
252
|
+
await runtime.cancel();
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
runPrompt = async (options) => {
|
|
256
|
+
if (this.#activeSessionIds.has(options.sessionId)) {
|
|
257
|
+
throw new AcpExecutionError("Another prompt is already running in this conversation");
|
|
258
|
+
}
|
|
259
|
+
this.#activeSessionIds.add(options.sessionId);
|
|
260
|
+
let runtime = this.#sessions.get(options.sessionId);
|
|
261
|
+
if (runtime !== undefined && !runtime.belongsTo(options.agent.id)) {
|
|
262
|
+
this.#activeSessionIds.delete(options.sessionId);
|
|
263
|
+
throw new AcpExecutionError("The agent cannot change after a conversation has started");
|
|
264
|
+
}
|
|
265
|
+
try {
|
|
266
|
+
if (this.#cancellationRequests.has(options.sessionId)) {
|
|
267
|
+
return { stopReason: "cancelled" };
|
|
268
|
+
}
|
|
269
|
+
if (runtime === undefined) {
|
|
270
|
+
runtime = await AcpProcessSession.start(options.agent, options.cwd, options.signal);
|
|
271
|
+
this.#sessions.set(options.sessionId, runtime);
|
|
272
|
+
}
|
|
273
|
+
if (this.#cancellationRequests.has(options.sessionId)) {
|
|
274
|
+
return { stopReason: "cancelled" };
|
|
275
|
+
}
|
|
276
|
+
return await runtime.prompt(options.prompt, options.onActivity, options.onText, options.signal);
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
if (runtime !== undefined) {
|
|
280
|
+
this.#sessions.delete(options.sessionId);
|
|
281
|
+
await runtime.close();
|
|
282
|
+
}
|
|
283
|
+
if (error instanceof AcpExecutionError) {
|
|
284
|
+
throw error;
|
|
285
|
+
}
|
|
286
|
+
throw new AcpExecutionError("ACP agent execution failed", {
|
|
287
|
+
cause: error,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
finally {
|
|
291
|
+
this.#activeSessionIds.delete(options.sessionId);
|
|
292
|
+
this.#cancellationRequests.delete(options.sessionId);
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
close = async () => {
|
|
296
|
+
const sessions = [...this.#sessions.values()];
|
|
297
|
+
this.#sessions.clear();
|
|
298
|
+
await Promise.all(sessions.map(async (session) => await session.close()));
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/acp/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface AuditRecord {
|
|
2
|
+
readonly commandId: string;
|
|
3
|
+
readonly event: string;
|
|
4
|
+
readonly sessionId: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class AuditStore {
|
|
7
|
+
private readonly database;
|
|
8
|
+
constructor(path: string);
|
|
9
|
+
record(record: AuditRecord): void;
|
|
10
|
+
close(): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=audit-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-store.d.ts","sourceRoot":"","sources":["../../src/audit/audit-store.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IAExC,YAAY,IAAI,EAAE,MAAM,EAYvB;IAED,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAkBhC;IAED,KAAK,IAAI,IAAI,CAEZ;CACF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { mkdirSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { DatabaseSync } from "node:sqlite";
|
|
4
|
+
export class AuditStore {
|
|
5
|
+
database;
|
|
6
|
+
constructor(path) {
|
|
7
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
8
|
+
this.database = new DatabaseSync(path);
|
|
9
|
+
this.database.exec(`
|
|
10
|
+
CREATE TABLE IF NOT EXISTS audit_events (
|
|
11
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
12
|
+
recorded_at TEXT NOT NULL,
|
|
13
|
+
event TEXT NOT NULL,
|
|
14
|
+
command_id TEXT NOT NULL,
|
|
15
|
+
session_id TEXT NOT NULL
|
|
16
|
+
) STRICT
|
|
17
|
+
`);
|
|
18
|
+
}
|
|
19
|
+
record(record) {
|
|
20
|
+
this.database
|
|
21
|
+
.prepare(`
|
|
22
|
+
INSERT INTO audit_events (
|
|
23
|
+
recorded_at,
|
|
24
|
+
event,
|
|
25
|
+
command_id,
|
|
26
|
+
session_id
|
|
27
|
+
) VALUES (?, ?, ?, ?)
|
|
28
|
+
`)
|
|
29
|
+
.run(new Date().toISOString(), record.event, record.commandId, record.sessionId);
|
|
30
|
+
}
|
|
31
|
+
close() {
|
|
32
|
+
this.database.close();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=audit-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-store.js","sourceRoot":"","sources":["../../src/audit/audit-store.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;AAQ3C,MAAM,OAAO,UAAU;IACJ,QAAQ,CAAe;IAExC,YAAY,IAAY;QACtB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;;;;;;;;KAQlB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAmB;QACxB,IAAI,CAAC,QAAQ;aACV,OAAO,CACN;;;;;;;SAOC,CACF;aACA,GAAG,CACF,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACxB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,SAAS,CACjB,CAAC;IACN,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare class LocalAuthorizationError extends Error {
|
|
2
|
+
readonly code = "local_authorization_failed";
|
|
3
|
+
constructor(message: string, options?: ErrorOptions);
|
|
4
|
+
}
|
|
5
|
+
export declare function authorizeBinding(requestedBindingId: string, approvedBindingId: string, approvedRoot: string): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=authorize-binding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorize-binding.d.ts","sourceRoot":"","sources":["../../src/authorization/authorize-binding.ts"],"names":[],"mappings":"AAEA,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,gCAAgC;IAE7C,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,EAGtD;CACF;AAED,wBAAsB,gBAAgB,CACpC,kBAAkB,EAAE,MAAM,EAC1B,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { realpath, stat } from "node:fs/promises";
|
|
2
|
+
export class LocalAuthorizationError extends Error {
|
|
3
|
+
code = "local_authorization_failed";
|
|
4
|
+
constructor(message, options = {}) {
|
|
5
|
+
super(message, options);
|
|
6
|
+
this.name = "LocalAuthorizationError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export async function authorizeBinding(requestedBindingId, approvedBindingId, approvedRoot) {
|
|
10
|
+
if (requestedBindingId !== approvedBindingId) {
|
|
11
|
+
throw new LocalAuthorizationError("The runtime binding is not authorized");
|
|
12
|
+
}
|
|
13
|
+
try {
|
|
14
|
+
const resolvedRoot = await realpath(approvedRoot);
|
|
15
|
+
const metadata = await stat(resolvedRoot);
|
|
16
|
+
if (!metadata.isDirectory()) {
|
|
17
|
+
throw new LocalAuthorizationError("The approved root is not a directory");
|
|
18
|
+
}
|
|
19
|
+
return resolvedRoot;
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (error instanceof LocalAuthorizationError) {
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
throw new LocalAuthorizationError("The approved root cannot be resolved", {
|
|
26
|
+
cause: error,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=authorize-binding.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorize-binding.js","sourceRoot":"","sources":["../../src/authorization/authorize-binding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IACvC,IAAI,GAAG,4BAA4B,CAAC;IAE7C,YAAY,OAAe,EAAE,OAAO,GAAiB,EAAE;QACrD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,kBAA0B,EAC1B,iBAAyB,EACzB,YAAoB;IAEpB,IAAI,kBAAkB,KAAK,iBAAiB,EAAE,CAAC;QAC7C,MAAM,IAAI,uBAAuB,CAAC,uCAAuC,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,uBAAuB,CAAC,sCAAsC,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,uBAAuB,CAAC,sCAAsC,EAAE;YACxE,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|