borgmcp-server 0.1.1 → 0.1.4
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/README.md +69 -22
- package/dist/cli.js +62 -11
- package/dist/cli.js.map +1 -1
- package/dist/coordination-api.d.ts +2 -1
- package/dist/coordination-api.js +232 -18
- package/dist/coordination-api.js.map +1 -1
- package/dist/credentials.d.ts +10 -2
- package/dist/credentials.js +44 -6
- package/dist/credentials.js.map +1 -1
- package/dist/debug-log.d.ts +77 -0
- package/dist/debug-log.js +125 -0
- package/dist/debug-log.js.map +1 -0
- package/dist/https-server.d.ts +3 -0
- package/dist/https-server.js +80 -4
- package/dist/https-server.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/migrations.d.ts +4 -0
- package/dist/migrations.js +71 -0
- package/dist/migrations.js.map +1 -1
- package/dist/operator-error.d.ts +2 -1
- package/dist/operator-error.js +23 -5
- package/dist/operator-error.js.map +1 -1
- package/dist/role-section.d.ts +14 -0
- package/dist/role-section.js +87 -0
- package/dist/role-section.js.map +1 -0
- package/dist/service.d.ts +10 -3
- package/dist/service.js +218 -15
- package/dist/service.js.map +1 -1
- package/dist/start-options.d.ts +5 -1
- package/dist/start-options.js +17 -3
- package/dist/start-options.js.map +1 -1
- package/dist/store.d.ts +65 -1
- package/dist/store.js +398 -26
- package/dist/store.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/src/cli.ts +61 -11
- package/src/coordination-api.ts +236 -14
- package/src/credentials.ts +71 -5
- package/src/debug-log.ts +165 -0
- package/src/https-server.ts +75 -2
- package/src/index.ts +1 -1
- package/src/migrations.ts +74 -0
- package/src/operator-error.ts +40 -6
- package/src/role-section.ts +108 -0
- package/src/service.ts +239 -18
- package/src/start-options.ts +21 -4
- package/src/store.ts +462 -28
package/dist/coordination-api.js
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
1
2
|
import { assertServerDerivedPrincipal } from "./principal.js";
|
|
2
|
-
import {
|
|
3
|
+
import { disabledDebugLogger } from "./debug-log.js";
|
|
4
|
+
import { CursorExpiredError, AttachConflictError, AccessDeniedError, CreateCubeConflictError, DefaultRoleRequiredError, RoleConflictError, RoleSectionConflictError, ScopedStoreError, StorageCapacityError, } from "./store.js";
|
|
3
5
|
export class CoordinationApi {
|
|
4
6
|
#runtime;
|
|
5
7
|
#authority;
|
|
8
|
+
#debugLogger;
|
|
6
9
|
#replayBarrier;
|
|
7
|
-
constructor(runtime, authority) {
|
|
10
|
+
constructor(runtime, authority, debugLogger = disabledDebugLogger) {
|
|
8
11
|
this.#runtime = runtime;
|
|
9
12
|
this.#authority = authority;
|
|
13
|
+
this.#debugLogger = debugLogger;
|
|
10
14
|
}
|
|
11
15
|
armReplayTransition() {
|
|
12
16
|
let markReached;
|
|
@@ -46,6 +50,7 @@ export class CoordinationApi {
|
|
|
46
50
|
token: attachment.credential,
|
|
47
51
|
expires_at: attachment.expiresAt,
|
|
48
52
|
generation: attachment.generation,
|
|
53
|
+
posture: attachment.posture,
|
|
49
54
|
},
|
|
50
55
|
reattached: attachment.reattached,
|
|
51
56
|
});
|
|
@@ -113,15 +118,20 @@ export class CoordinationApi {
|
|
|
113
118
|
throw error;
|
|
114
119
|
}
|
|
115
120
|
}
|
|
121
|
+
const roleMatch = /^\/api\/cubes\/([0-9a-f-]{36})\/roles\/([0-9a-f-]{36})(\/section-patch)?$/u
|
|
122
|
+
.exec(request.path);
|
|
116
123
|
const match = /^\/api\/cubes\/([0-9a-f-]{36})(?:\/(roles|drones|logs|acks|decisions|stream))?$/u
|
|
117
124
|
.exec(request.path);
|
|
118
|
-
if (match === null)
|
|
125
|
+
if (match === null && roleMatch === null) {
|
|
119
126
|
return failure(404, "NOT_FOUND", "The requested resource was not found.");
|
|
120
|
-
|
|
121
|
-
|
|
127
|
+
}
|
|
128
|
+
const cubeId = (roleMatch?.[1] ?? match?.[1]);
|
|
129
|
+
const roleId = roleMatch?.[2];
|
|
130
|
+
if (!uuidPattern.test(cubeId) || (roleId !== undefined && !uuidPattern.test(roleId))) {
|
|
122
131
|
return failure(404, "NOT_FOUND", "The requested resource was not found.");
|
|
123
132
|
}
|
|
124
|
-
const resource = match[2];
|
|
133
|
+
const resource = roleMatch === null ? match?.[2] : "role";
|
|
134
|
+
const sectionPatch = roleMatch?.[3] !== undefined;
|
|
125
135
|
const store = this.#runtime.forPrincipal(authentication);
|
|
126
136
|
try {
|
|
127
137
|
if (resource === undefined && request.method === "GET") {
|
|
@@ -142,6 +152,98 @@ export class CoordinationApi {
|
|
|
142
152
|
if (resource === "roles" && request.method === "GET") {
|
|
143
153
|
return success(200, "roles-read", { roles: store.listRoles(cubeId) });
|
|
144
154
|
}
|
|
155
|
+
if (resource === "roles" && request.method === "POST") {
|
|
156
|
+
const envelope = decodeEnvelope(request.body);
|
|
157
|
+
exactKeys(envelope.payload, ["name"], [
|
|
158
|
+
"short_description",
|
|
159
|
+
"detailed_description",
|
|
160
|
+
"is_default",
|
|
161
|
+
"is_mandatory",
|
|
162
|
+
"is_human_seat",
|
|
163
|
+
"can_broadcast",
|
|
164
|
+
"receives_all_direct",
|
|
165
|
+
]);
|
|
166
|
+
const role = store.createRole(cubeId, {
|
|
167
|
+
name: requiredRoleName(envelope.payload, "name"),
|
|
168
|
+
shortDescription: optionalText(envelope.payload, "short_description", 1_024) ?? "",
|
|
169
|
+
detailedDescription: optionalText(envelope.payload, "detailed_description", 51_200) ?? "",
|
|
170
|
+
isDefault: optionalBoolean(envelope.payload["is_default"]),
|
|
171
|
+
isMandatory: optionalBoolean(envelope.payload["is_mandatory"]),
|
|
172
|
+
isHumanSeat: optionalBoolean(envelope.payload["is_human_seat"]),
|
|
173
|
+
canBroadcast: optionalBoolean(envelope.payload["can_broadcast"]),
|
|
174
|
+
receivesAllDirect: optionalBoolean(envelope.payload["receives_all_direct"]),
|
|
175
|
+
});
|
|
176
|
+
return success(201, envelope.requestId, { role });
|
|
177
|
+
}
|
|
178
|
+
if (resource === "role" && !sectionPatch && request.method === "PATCH") {
|
|
179
|
+
const envelope = decodeEnvelope(request.body);
|
|
180
|
+
exactKeys(envelope.payload, [], [
|
|
181
|
+
"name",
|
|
182
|
+
"short_description",
|
|
183
|
+
"detailed_description",
|
|
184
|
+
"is_default",
|
|
185
|
+
"is_mandatory",
|
|
186
|
+
"is_human_seat",
|
|
187
|
+
"can_broadcast",
|
|
188
|
+
"receives_all_direct",
|
|
189
|
+
]);
|
|
190
|
+
if (Object.keys(envelope.payload).length === 0)
|
|
191
|
+
throw new InputError();
|
|
192
|
+
const name = envelope.payload["name"] === undefined
|
|
193
|
+
? undefined
|
|
194
|
+
: requiredRoleName(envelope.payload, "name");
|
|
195
|
+
const shortDescription = optionalText(envelope.payload, "short_description", 1_024);
|
|
196
|
+
const detailedDescription = optionalText(envelope.payload, "detailed_description", 51_200);
|
|
197
|
+
const isDefault = optionalBooleanValue(envelope.payload["is_default"]);
|
|
198
|
+
const isMandatory = optionalBooleanValue(envelope.payload["is_mandatory"]);
|
|
199
|
+
const isHumanSeat = optionalBooleanValue(envelope.payload["is_human_seat"]);
|
|
200
|
+
const canBroadcast = optionalBooleanValue(envelope.payload["can_broadcast"]);
|
|
201
|
+
const receivesAllDirect = optionalBooleanValue(envelope.payload["receives_all_direct"]);
|
|
202
|
+
const role = store.updateRole(cubeId, roleId, {
|
|
203
|
+
...(name === undefined ? {} : { name }),
|
|
204
|
+
...(shortDescription === undefined ? {} : { shortDescription }),
|
|
205
|
+
...(detailedDescription === undefined ? {} : { detailedDescription }),
|
|
206
|
+
...(isDefault === undefined ? {} : { isDefault }),
|
|
207
|
+
...(isMandatory === undefined ? {} : { isMandatory }),
|
|
208
|
+
...(isHumanSeat === undefined ? {} : { isHumanSeat }),
|
|
209
|
+
...(canBroadcast === undefined ? {} : { canBroadcast }),
|
|
210
|
+
...(receivesAllDirect === undefined ? {} : { receivesAllDirect }),
|
|
211
|
+
});
|
|
212
|
+
return success(200, envelope.requestId, { role });
|
|
213
|
+
}
|
|
214
|
+
if (resource === "role" && sectionPatch && request.method === "POST") {
|
|
215
|
+
const envelope = decodeEnvelope(request.body);
|
|
216
|
+
const action = envelope.payload["action"];
|
|
217
|
+
if (action === "delete") {
|
|
218
|
+
exactKeys(envelope.payload, ["action", "heading"]);
|
|
219
|
+
const role = store.patchRoleSection(cubeId, roleId, {
|
|
220
|
+
action,
|
|
221
|
+
heading: requiredSectionHeading(envelope.payload, "heading"),
|
|
222
|
+
});
|
|
223
|
+
return success(200, envelope.requestId, { role });
|
|
224
|
+
}
|
|
225
|
+
if (action !== "replace" && action !== "insert")
|
|
226
|
+
throw new InputError();
|
|
227
|
+
exactKeys(envelope.payload, ["action", "heading", "body"], action === "insert" ? ["after"] : []);
|
|
228
|
+
const body = optionalText(envelope.payload, "body", 51_200);
|
|
229
|
+
if (body === undefined)
|
|
230
|
+
throw new InputError();
|
|
231
|
+
const heading = requiredSectionHeading(envelope.payload, "heading");
|
|
232
|
+
if (action === "replace") {
|
|
233
|
+
return success(200, envelope.requestId, {
|
|
234
|
+
role: store.patchRoleSection(cubeId, roleId, { action, heading, body }),
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
const after = optionalNullableSectionHeading(envelope.payload["after"]);
|
|
238
|
+
return success(200, envelope.requestId, {
|
|
239
|
+
role: store.patchRoleSection(cubeId, roleId, {
|
|
240
|
+
action,
|
|
241
|
+
heading,
|
|
242
|
+
body,
|
|
243
|
+
...(after === undefined ? {} : { after }),
|
|
244
|
+
}),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
145
247
|
if (resource === "drones" && request.method === "GET") {
|
|
146
248
|
return success(200, "drones-read", { drones: store.listDrones(cubeId) });
|
|
147
249
|
}
|
|
@@ -160,6 +262,15 @@ export class CoordinationApi {
|
|
|
160
262
|
...(visibility === undefined ? {} : { visibility }),
|
|
161
263
|
...(recipientDroneIds === undefined ? {} : { recipientDroneIds }),
|
|
162
264
|
});
|
|
265
|
+
this.#debugLogger.emit({
|
|
266
|
+
event: "activity_append",
|
|
267
|
+
cubeId,
|
|
268
|
+
entryId: entry.id,
|
|
269
|
+
principal: authentication,
|
|
270
|
+
droneId: entry.drone_id,
|
|
271
|
+
visibility: entry.visibility,
|
|
272
|
+
recipientDroneIds: entry.recipient_drone_ids,
|
|
273
|
+
});
|
|
163
274
|
return success(201, envelope.requestId, { entry });
|
|
164
275
|
}
|
|
165
276
|
if (resource === "logs" && request.method === "PUT") {
|
|
@@ -167,7 +278,17 @@ export class CoordinationApi {
|
|
|
167
278
|
exactKeys(envelope.payload, ["cursor"], ["limit"]);
|
|
168
279
|
const cursor = decodeCursor(envelope.payload["cursor"]);
|
|
169
280
|
const limit = optionalLimit(envelope.payload["limit"]);
|
|
170
|
-
|
|
281
|
+
const page = store.readLog(cubeId, cursor, limit);
|
|
282
|
+
this.#debugLogger.emit({
|
|
283
|
+
event: "cursor_replay",
|
|
284
|
+
mode: "page",
|
|
285
|
+
cubeId,
|
|
286
|
+
cursorId: cursor?.id ?? null,
|
|
287
|
+
returnedCount: page.entries.length,
|
|
288
|
+
behindBy: page.behind_by,
|
|
289
|
+
truncated: page.has_more,
|
|
290
|
+
});
|
|
291
|
+
return success(200, envelope.requestId, page);
|
|
171
292
|
}
|
|
172
293
|
if (resource === "acks" && request.method === "POST") {
|
|
173
294
|
const envelope = decodeEnvelope(request.body);
|
|
@@ -177,6 +298,7 @@ export class CoordinationApi {
|
|
|
177
298
|
throw new InputError();
|
|
178
299
|
exactKeys(envelope.payload, ["entry_id", "kind"]);
|
|
179
300
|
store.acknowledge(cubeId, entryId, kind);
|
|
301
|
+
this.#debugLogger.emit({ event: "ack_write", cubeId, entryId, kind, principal: authentication });
|
|
180
302
|
return { status: 204 };
|
|
181
303
|
}
|
|
182
304
|
if (resource === "decisions" && request.method === "POST") {
|
|
@@ -185,13 +307,18 @@ export class CoordinationApi {
|
|
|
185
307
|
const topic = requiredString(envelope.payload, "topic", 120);
|
|
186
308
|
const decision = requiredString(envelope.payload, "decision", 100_000);
|
|
187
309
|
const rationale = optionalString(envelope.payload, "rationale", 100_000);
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
310
|
+
const decisionRecord = store.recordDecision(cubeId, {
|
|
311
|
+
topic,
|
|
312
|
+
decision,
|
|
313
|
+
...(rationale === undefined ? {} : { rationale }),
|
|
314
|
+
});
|
|
315
|
+
this.#debugLogger.emit({
|
|
316
|
+
event: "decision_write",
|
|
317
|
+
cubeId,
|
|
318
|
+
decisionId: decisionRecord.id,
|
|
319
|
+
principal: authentication,
|
|
194
320
|
});
|
|
321
|
+
return success(201, envelope.requestId, { decision: decisionRecord });
|
|
195
322
|
}
|
|
196
323
|
if (resource === "decisions" && request.method === "PUT") {
|
|
197
324
|
const envelope = decodeEnvelope(request.body);
|
|
@@ -210,6 +337,15 @@ export class CoordinationApi {
|
|
|
210
337
|
if (error instanceof ScopedStoreError) {
|
|
211
338
|
return failure(404, "NOT_FOUND", error.message);
|
|
212
339
|
}
|
|
340
|
+
if (error instanceof RoleConflictError) {
|
|
341
|
+
return failure(409, error.code, error.message, safeRequestId(request.body));
|
|
342
|
+
}
|
|
343
|
+
if (error instanceof DefaultRoleRequiredError) {
|
|
344
|
+
return failure(409, error.code, error.message, safeRequestId(request.body));
|
|
345
|
+
}
|
|
346
|
+
if (error instanceof RoleSectionConflictError) {
|
|
347
|
+
return failure(409, error.code, error.message, safeRequestId(request.body));
|
|
348
|
+
}
|
|
213
349
|
if (error instanceof StorageCapacityError) {
|
|
214
350
|
return failure(507, "CAPACITY_EXCEEDED", error.message, safeRequestId(request.body));
|
|
215
351
|
}
|
|
@@ -221,13 +357,25 @@ export class CoordinationApi {
|
|
|
221
357
|
}
|
|
222
358
|
async #openStream(principal, cubeId, cursor, requestSignal) {
|
|
223
359
|
const store = this.#runtime.forPrincipal(principal);
|
|
360
|
+
const connectionId = randomUUID();
|
|
224
361
|
const session = this.#authority.registerLiveSession(principal);
|
|
225
362
|
const signal = AbortSignal.any([requestSignal, session.signal]);
|
|
226
363
|
let unsubscribe = () => undefined;
|
|
364
|
+
let subscribed = false;
|
|
365
|
+
let deliveryCount = 0;
|
|
227
366
|
const queue = new AsyncStringQueue(() => {
|
|
228
367
|
unsubscribe();
|
|
229
368
|
session.release();
|
|
230
|
-
|
|
369
|
+
if (subscribed) {
|
|
370
|
+
this.#debugLogger.emit({
|
|
371
|
+
event: "sse_unsubscribe",
|
|
372
|
+
connectionId,
|
|
373
|
+
cubeId,
|
|
374
|
+
principal,
|
|
375
|
+
deliveryCount,
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
}, () => { deliveryCount += 1; });
|
|
231
379
|
const pending = [];
|
|
232
380
|
let live = false;
|
|
233
381
|
try {
|
|
@@ -244,7 +392,17 @@ export class CoordinationApi {
|
|
|
244
392
|
pending.push(entry);
|
|
245
393
|
});
|
|
246
394
|
signal.addEventListener("abort", () => queue.close(), { once: true });
|
|
247
|
-
const
|
|
395
|
+
const replayPage = store.readLog(cubeId, cursor, 200);
|
|
396
|
+
const replay = replayPage.entries;
|
|
397
|
+
this.#debugLogger.emit({
|
|
398
|
+
event: "cursor_replay",
|
|
399
|
+
mode: "sse",
|
|
400
|
+
cubeId,
|
|
401
|
+
cursorId: cursor?.id ?? null,
|
|
402
|
+
returnedCount: replay.length,
|
|
403
|
+
behindBy: replayPage.behind_by,
|
|
404
|
+
truncated: replayPage.has_more,
|
|
405
|
+
});
|
|
248
406
|
const barrier = this.#replayBarrier;
|
|
249
407
|
this.#replayBarrier = undefined;
|
|
250
408
|
if (barrier !== undefined) {
|
|
@@ -266,6 +424,15 @@ export class CoordinationApi {
|
|
|
266
424
|
replay_complete: true,
|
|
267
425
|
})}\n\n`);
|
|
268
426
|
live = true;
|
|
427
|
+
subscribed = true;
|
|
428
|
+
this.#debugLogger.emit({
|
|
429
|
+
event: "sse_subscribe",
|
|
430
|
+
connectionId,
|
|
431
|
+
cubeId,
|
|
432
|
+
principal,
|
|
433
|
+
replayCount: replay.length,
|
|
434
|
+
truncated: replayPage.has_more,
|
|
435
|
+
});
|
|
269
436
|
return { status: 200, stream: queue };
|
|
270
437
|
}
|
|
271
438
|
catch (error) {
|
|
@@ -284,9 +451,11 @@ class AsyncStringQueue {
|
|
|
284
451
|
#values = [];
|
|
285
452
|
#waiters = [];
|
|
286
453
|
#cleanup;
|
|
454
|
+
#onDelivered;
|
|
287
455
|
#closed = false;
|
|
288
|
-
constructor(cleanup) {
|
|
456
|
+
constructor(cleanup, onDelivered = () => undefined) {
|
|
289
457
|
this.#cleanup = cleanup;
|
|
458
|
+
this.#onDelivered = onDelivered;
|
|
290
459
|
}
|
|
291
460
|
push(value) {
|
|
292
461
|
if (this.#closed)
|
|
@@ -298,8 +467,10 @@ class AsyncStringQueue {
|
|
|
298
467
|
const waiter = this.#waiters.shift();
|
|
299
468
|
if (waiter === undefined)
|
|
300
469
|
this.#values.push(value);
|
|
301
|
-
else
|
|
470
|
+
else {
|
|
471
|
+
this.#onDelivered();
|
|
302
472
|
waiter({ value, done: false });
|
|
473
|
+
}
|
|
303
474
|
}
|
|
304
475
|
close() {
|
|
305
476
|
if (this.#closed)
|
|
@@ -313,8 +484,10 @@ class AsyncStringQueue {
|
|
|
313
484
|
return {
|
|
314
485
|
next: async () => {
|
|
315
486
|
const value = this.#values.shift();
|
|
316
|
-
if (value !== undefined)
|
|
487
|
+
if (value !== undefined) {
|
|
488
|
+
this.#onDelivered();
|
|
317
489
|
return { value, done: false };
|
|
490
|
+
}
|
|
318
491
|
if (this.#closed)
|
|
319
492
|
return { value: undefined, done: true };
|
|
320
493
|
return new Promise((resolve) => this.#waiters.push(resolve));
|
|
@@ -361,12 +534,53 @@ function requiredPresentationName(record, key) {
|
|
|
361
534
|
throw new InputError();
|
|
362
535
|
return value;
|
|
363
536
|
}
|
|
537
|
+
function requiredRoleName(record, key) {
|
|
538
|
+
const value = record[key];
|
|
539
|
+
if (typeof value !== "string" || value.length < 1 || value.length > 64)
|
|
540
|
+
throw new InputError();
|
|
541
|
+
return value;
|
|
542
|
+
}
|
|
364
543
|
function optionalString(record, key, maxBytes) {
|
|
365
544
|
const value = record[key];
|
|
366
545
|
if (value === undefined)
|
|
367
546
|
return undefined;
|
|
368
547
|
return requiredString(record, key, maxBytes);
|
|
369
548
|
}
|
|
549
|
+
function optionalText(record, key, maxCharacters) {
|
|
550
|
+
const value = record[key];
|
|
551
|
+
if (value === undefined)
|
|
552
|
+
return undefined;
|
|
553
|
+
if (typeof value !== "string" || value.length > maxCharacters)
|
|
554
|
+
throw new InputError();
|
|
555
|
+
return value;
|
|
556
|
+
}
|
|
557
|
+
function optionalBoolean(value) {
|
|
558
|
+
if (value === undefined)
|
|
559
|
+
return false;
|
|
560
|
+
if (typeof value !== "boolean")
|
|
561
|
+
throw new InputError();
|
|
562
|
+
return value;
|
|
563
|
+
}
|
|
564
|
+
function optionalBooleanValue(value) {
|
|
565
|
+
if (value === undefined)
|
|
566
|
+
return undefined;
|
|
567
|
+
if (typeof value !== "boolean")
|
|
568
|
+
throw new InputError();
|
|
569
|
+
return value;
|
|
570
|
+
}
|
|
571
|
+
function requiredSectionHeading(record, key) {
|
|
572
|
+
const value = requiredString(record, key, 60);
|
|
573
|
+
const heading = value.trim();
|
|
574
|
+
if (heading.length === 0 || /^\s/u.test(value) || /[:\n\r]/u.test(heading) ||
|
|
575
|
+
/^[*\-#>`]/u.test(heading))
|
|
576
|
+
throw new InputError();
|
|
577
|
+
return heading;
|
|
578
|
+
}
|
|
579
|
+
function optionalNullableSectionHeading(value) {
|
|
580
|
+
if (value === undefined || value === null)
|
|
581
|
+
return value;
|
|
582
|
+
return requiredSectionHeading({ value }, "value");
|
|
583
|
+
}
|
|
370
584
|
function requiredUuid(record, key) {
|
|
371
585
|
const value = record[key];
|
|
372
586
|
if (typeof value !== "string" || !uuidPattern.test(value))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination-api.js","sourceRoot":"","sources":["../src/coordination-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coordination-api.js","sourceRoot":"","sources":["../src/coordination-api.ts"],"names":[],"mappings":"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"}
|
package/dist/credentials.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Principal } from "./principal.js";
|
|
2
|
-
import type { CredentialStore, DigestPair, ScopedStore, SeatAttachRecord } from "./store.js";
|
|
2
|
+
import type { CredentialStore, DigestPair, InvitationCubeScope, ScopedStore, SeatAttachRecord } from "./store.js";
|
|
3
|
+
import { type DebugLogger } from "./debug-log.js";
|
|
3
4
|
type CredentialPurpose = "recovery" | "invitation" | "client" | "drone-session";
|
|
4
5
|
export interface EnrollmentRequest {
|
|
5
6
|
readonly invitation: string;
|
|
@@ -12,6 +13,9 @@ export interface EnrollmentResponse {
|
|
|
12
13
|
readonly clientId: string;
|
|
13
14
|
readonly serverCapabilities: readonly [] | readonly ["create_cube"];
|
|
14
15
|
}
|
|
16
|
+
export interface CubeInvitationResult extends InvitationCubeScope {
|
|
17
|
+
readonly invitation: string;
|
|
18
|
+
}
|
|
15
19
|
export interface SeatAttachResponse extends SeatAttachRecord {
|
|
16
20
|
readonly credential: string;
|
|
17
21
|
}
|
|
@@ -33,10 +37,14 @@ export declare class LiveCredentialRegistry {
|
|
|
33
37
|
}
|
|
34
38
|
export declare class CredentialAuthority {
|
|
35
39
|
#private;
|
|
36
|
-
constructor(store: CredentialStore, digester: CredentialDigester, clock?: () => Date, registry?: LiveCredentialRegistry);
|
|
40
|
+
constructor(store: CredentialStore, digester: CredentialDigester, clock?: () => Date, registry?: LiveCredentialRegistry, debugLogger?: DebugLogger);
|
|
37
41
|
createRecoveryCredential(): string;
|
|
38
42
|
createBootstrapInvitation(ttlMs: number): string;
|
|
39
43
|
createInvitation(recoveryCredential: string, ttlMs: number): string | null;
|
|
44
|
+
createCubeInvitation(recoveryCredential: string, cubeSelector: {
|
|
45
|
+
readonly kind: "id" | "name";
|
|
46
|
+
readonly value: string;
|
|
47
|
+
}, access: "read" | "write" | "manage", ttlMs: number): CubeInvitationResult | null;
|
|
40
48
|
replaceOwnerInvitation(recoveryCredential: string, ttlMs: number): string | null;
|
|
41
49
|
exchangeInvitation(request: EnrollmentRequest): EnrollmentResponse | null;
|
|
42
50
|
authenticate(authorization: string | undefined): Principal | null;
|
package/dist/credentials.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHmac, randomBytes, randomUUID, timingSafeEqual, } from "node:crypto";
|
|
2
2
|
import { clientPrincipal, droneSessionPrincipal, } from "./principal.js";
|
|
3
3
|
import { operatorErrors } from "./operator-error.js";
|
|
4
|
+
import { disabledDebugLogger } from "./debug-log.js";
|
|
4
5
|
const tokenPattern = /^[A-Za-z0-9_-]{43,1024}$/u;
|
|
5
6
|
const dummyVerifier = Buffer.alloc(32);
|
|
6
7
|
export class CredentialDigester {
|
|
@@ -88,11 +89,13 @@ export class CredentialAuthority {
|
|
|
88
89
|
#digester;
|
|
89
90
|
#clock;
|
|
90
91
|
#registry;
|
|
91
|
-
|
|
92
|
+
#debugLogger;
|
|
93
|
+
constructor(store, digester, clock = () => new Date(), registry = new LiveCredentialRegistry(), debugLogger = disabledDebugLogger) {
|
|
92
94
|
this.#store = store;
|
|
93
95
|
this.#digester = digester;
|
|
94
96
|
this.#clock = clock;
|
|
95
97
|
this.#registry = registry;
|
|
98
|
+
this.#debugLogger = debugLogger;
|
|
96
99
|
}
|
|
97
100
|
createRecoveryCredential() {
|
|
98
101
|
const secret = generateSecret();
|
|
@@ -109,6 +112,13 @@ export class CredentialAuthority {
|
|
|
109
112
|
return null;
|
|
110
113
|
return this.#createInvitation("client", ttlMs);
|
|
111
114
|
}
|
|
115
|
+
createCubeInvitation(recoveryCredential, cubeSelector, access, ttlMs) {
|
|
116
|
+
const digest = safeDigest(this.#digester, recoveryCredential, "recovery");
|
|
117
|
+
const stored = this.#store.findRecoveryCredential(digest.lookup);
|
|
118
|
+
if (!this.#digester.verify(recoveryCredential, "recovery", stored?.verifier))
|
|
119
|
+
return null;
|
|
120
|
+
return this.#createInvitation("client", ttlMs, { cubeSelector, access });
|
|
121
|
+
}
|
|
112
122
|
replaceOwnerInvitation(recoveryCredential, ttlMs) {
|
|
113
123
|
const digest = safeDigest(this.#digester, recoveryCredential, "recovery");
|
|
114
124
|
const stored = this.#store.findRecoveryCredential(digest.lookup);
|
|
@@ -116,18 +126,25 @@ export class CredentialAuthority {
|
|
|
116
126
|
return null;
|
|
117
127
|
return this.#createInvitation("owner", ttlMs);
|
|
118
128
|
}
|
|
119
|
-
#createInvitation(purpose, ttlMs) {
|
|
129
|
+
#createInvitation(purpose, ttlMs, scoped) {
|
|
120
130
|
if (!Number.isSafeInteger(ttlMs) || ttlMs < 1_000 || ttlMs > 86_400_000) {
|
|
121
131
|
throw new Error("Invitation TTL must be an integer from 1000 to 86400000 milliseconds.");
|
|
122
132
|
}
|
|
123
133
|
const secret = generateSecret();
|
|
124
|
-
this.#store.createInvitation({
|
|
134
|
+
const scope = this.#store.createInvitation({
|
|
125
135
|
id: randomUUID(),
|
|
126
136
|
digest: this.#digester.digest(secret, "invitation"),
|
|
127
137
|
expiresAt: new Date(this.#clock().getTime() + ttlMs).toISOString(),
|
|
128
138
|
purpose,
|
|
139
|
+
...(scoped === undefined ? {} : scoped),
|
|
129
140
|
});
|
|
130
|
-
|
|
141
|
+
this.#debugLogger.emit({
|
|
142
|
+
event: "credential",
|
|
143
|
+
action: "invitation_created",
|
|
144
|
+
purpose,
|
|
145
|
+
...(scope === null ? {} : { cubeId: scope.cubeId }),
|
|
146
|
+
});
|
|
147
|
+
return scope === null ? secret : { invitation: secret, ...scope };
|
|
131
148
|
}
|
|
132
149
|
exchangeInvitation(request) {
|
|
133
150
|
const invitationDigest = safeDigest(this.#digester, request.invitation, "invitation");
|
|
@@ -142,11 +159,20 @@ export class CredentialAuthority {
|
|
|
142
159
|
credentialId: randomUUID(),
|
|
143
160
|
credentialDigest: safeDigest(this.#digester, request.clientCredential, "client"),
|
|
144
161
|
});
|
|
145
|
-
|
|
162
|
+
const result = !verified || stored?.expiresAt === undefined || claimed === null ? null : {
|
|
146
163
|
purpose: claimed.purpose,
|
|
147
164
|
clientId: claimed.clientId,
|
|
148
165
|
serverCapabilities: claimed.serverCapabilities,
|
|
149
166
|
};
|
|
167
|
+
this.#debugLogger.emit(result === null
|
|
168
|
+
? { event: "credential", action: "enrollment_rejected" }
|
|
169
|
+
: {
|
|
170
|
+
event: "credential",
|
|
171
|
+
action: "enrollment_accepted",
|
|
172
|
+
purpose: result.purpose,
|
|
173
|
+
clientId: result.clientId,
|
|
174
|
+
});
|
|
175
|
+
return result;
|
|
150
176
|
}
|
|
151
177
|
authenticate(authorization) {
|
|
152
178
|
const result = this.authenticateStatus(authorization);
|
|
@@ -192,8 +218,18 @@ export class CredentialAuthority {
|
|
|
192
218
|
credentialDigest: this.#digester.digest(credential, "drone-session"),
|
|
193
219
|
expiresAt: new Date(this.#clock().getTime() + 86_400_000).toISOString(),
|
|
194
220
|
});
|
|
195
|
-
for (const sessionId of record.revokedSessionIds)
|
|
221
|
+
for (const sessionId of record.revokedSessionIds) {
|
|
196
222
|
this.#registry.invalidate(sessionId);
|
|
223
|
+
this.#debugLogger.emit({ event: "credential", action: "session_revoked", sessionId });
|
|
224
|
+
}
|
|
225
|
+
this.#debugLogger.emit({
|
|
226
|
+
event: "credential",
|
|
227
|
+
action: "session_created",
|
|
228
|
+
sessionId: record.sessionId,
|
|
229
|
+
cubeId: record.cube.id,
|
|
230
|
+
droneId: record.drone.id,
|
|
231
|
+
generation: record.generation,
|
|
232
|
+
});
|
|
197
233
|
return { ...record, credential };
|
|
198
234
|
}
|
|
199
235
|
rotateClient(clientId) {
|
|
@@ -208,6 +244,7 @@ export class CredentialAuthority {
|
|
|
208
244
|
if (!rotated)
|
|
209
245
|
throw operatorErrors.CLIENT_NOT_FOUND;
|
|
210
246
|
this.#registry.invalidate(clientId);
|
|
247
|
+
this.#debugLogger.emit({ event: "credential", action: "client_rotated", clientId });
|
|
211
248
|
return secret;
|
|
212
249
|
}
|
|
213
250
|
revokeClient(clientId) {
|
|
@@ -215,6 +252,7 @@ export class CredentialAuthority {
|
|
|
215
252
|
throw operatorErrors.CLIENT_NOT_FOUND;
|
|
216
253
|
this.#store.revokeClientCredentials(clientId);
|
|
217
254
|
this.#registry.invalidate(clientId);
|
|
255
|
+
this.#debugLogger.emit({ event: "credential", action: "client_revoked", clientId });
|
|
218
256
|
}
|
|
219
257
|
registerLiveSession(principal) {
|
|
220
258
|
if (typeof principal === "string")
|