@nacre.work/api 0.26.7 → 0.28.0
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/adapters.d.ts +6 -0
- package/dist/adapters.d.ts.map +1 -1
- package/dist/adapters.js +8 -0
- package/dist/adapters.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -1
- package/dist/server.d.ts +22 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +384 -118
- package/dist/server.js.map +1 -1
- package/dist/uploads.d.ts +99 -0
- package/dist/uploads.d.ts.map +1 -0
- package/dist/uploads.js +103 -0
- package/dist/uploads.js.map +1 -0
- package/package.json +2 -2
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -3,11 +3,12 @@ import { createHash, randomUUID, timingSafeEqual } from 'node:crypto';
|
|
|
3
3
|
// Imported rather than taken from the global scope: `lib` is ES2023 with no
|
|
4
4
|
// DOM, so the global URL is not typed here.
|
|
5
5
|
import { URL } from 'node:url';
|
|
6
|
-
import { logger, MetadataError, MultipartError, multipartBoundary, parseMultipart, queryAudit, parseFilters, parseMetadata, PROTECTED_RESOURCE_PATH, JWKS_PATH, AUTHORIZATION_SERVER_PATH, AUTHORIZE_PATH, CODE_TTL_MS, allowedRequestHeaders, corsHeaders, isPreflight, preflightHeaders, REGISTER_PATH, TOKEN_PATH, authorizationServerMetadata, consentRedirect, generateClientId, generateCode, redirectAllowed, verifierMatches, ADMIN_PREFIX, adminRoutes, withAuditSinks, TooBusy, } from '@nacre.work/core';
|
|
6
|
+
import { logger, BINARY_FORMATS, binaryFormat, MetadataError, MultipartError, multipartBoundary, SIGNATURE_NAMES, signatureFamily, parseMultipart, queryAudit, parseFilters, parseMetadata, PROTECTED_RESOURCE_PATH, JWKS_PATH, AUTHORIZATION_SERVER_PATH, AUTHORIZE_PATH, CODE_TTL_MS, allowedRequestHeaders, corsHeaders, isPreflight, preflightHeaders, REGISTER_PATH, TOKEN_PATH, authorizationServerMetadata, consentRedirect, generateClientId, generateCode, redirectAllowed, verifierMatches, ADMIN_PREFIX, adminRoutes, withAuditSinks, TooBusy, } from '@nacre.work/core';
|
|
7
7
|
import { administers, administersTenants, authenticate, rejectTenantOverride, } from './auth.js';
|
|
8
8
|
import { badRequest, internal, notAdministeredHere, notFound, Problem, tooBusy } from './errors.js';
|
|
9
9
|
import { passwordChangedMessage, secondFactorMessage } from './messages.js';
|
|
10
10
|
import { isConflict, isReplay } from './idempotency.js';
|
|
11
|
+
import { TICKET_SHAPE, TICKET_TTL_SECONDS, uploadDescriptor } from './uploads.js';
|
|
11
12
|
import { limitHeaders } from './limits.js';
|
|
12
13
|
import { MIN_PASSWORD_LENGTH } from './recovery.js';
|
|
13
14
|
import { looksLikeEmail } from './principals.js';
|
|
@@ -445,6 +446,11 @@ function resourceFor(method, instance) {
|
|
|
445
446
|
return 'search';
|
|
446
447
|
if (method === 'POST' && instance === '/v1/documents')
|
|
447
448
|
return 'ingest';
|
|
449
|
+
// Minting a ticket is the promise of an ingest, counted like one — or a
|
|
450
|
+
// caller out of budget mints a thousand tickets and redeems them from
|
|
451
|
+
// elsewhere, where the redeem counts again anyway.
|
|
452
|
+
if (method === 'POST' && instance === '/v1/uploads')
|
|
453
|
+
return 'ingest';
|
|
448
454
|
return undefined;
|
|
449
455
|
}
|
|
450
456
|
/**
|
|
@@ -474,7 +480,7 @@ function resourceFor(method, instance) {
|
|
|
474
480
|
* from what one caller in particular may read, it does not go in a store with a
|
|
475
481
|
* 24-hour TTL and no access control of its own.
|
|
476
482
|
*/
|
|
477
|
-
const NEVER_CACHED = ['/v1/service-accounts', '/v1/documents', '/v1/search'];
|
|
483
|
+
const NEVER_CACHED = ['/v1/service-accounts', '/v1/documents', '/v1/search', '/v1/uploads'];
|
|
478
484
|
/** Prefix rather than exact match, so `/v1/service-accounts/{id}` is covered too. */
|
|
479
485
|
const neverCached = (instance) => NEVER_CACHED.some((path) => instance === path || instance.startsWith(`${path}/`));
|
|
480
486
|
/**
|
|
@@ -1367,6 +1373,342 @@ export function createApi(options) {
|
|
|
1367
1373
|
});
|
|
1368
1374
|
});
|
|
1369
1375
|
}
|
|
1376
|
+
/**
|
|
1377
|
+
* What the edge decides about a file's bytes before anything is queued, for
|
|
1378
|
+
* the multipart file part and for an upload ticket alike — one function,
|
|
1379
|
+
* because the second door arrived and a second copy of these rules is how the
|
|
1380
|
+
* two doors stop agreeing about what a document is.
|
|
1381
|
+
*
|
|
1382
|
+
* Both signals must agree: the caller declares a type in the table AND the
|
|
1383
|
+
* bytes carry that family's signature. Either alone is a refusal that names
|
|
1384
|
+
* the other — a declared type the bytes contradict is exactly the disagreement
|
|
1385
|
+
* the multipart parser's strictness doctrine exists to refuse, and sniffing
|
|
1386
|
+
* alone would turn the declared type into decoration. The table is
|
|
1387
|
+
* `BINARY_FORMATS` in the core, which the worker and the sidecar read too; a
|
|
1388
|
+
* new format is a row there, and nothing falls through to a guess.
|
|
1389
|
+
*
|
|
1390
|
+
* A signature names a family and not a format — every Office and OpenDocument
|
|
1391
|
+
* file is a ZIP archive — so what the edge can hold is "a ZIP-based document
|
|
1392
|
+
* declared as one". Which one is the sidecar's half.
|
|
1393
|
+
*
|
|
1394
|
+
* Binary requires object storage, at the edge: the bytes' only home is the
|
|
1395
|
+
* bucket, so a deployment without one learns on the request, naming the
|
|
1396
|
+
* variables, not from a `failed` row minutes later. Anything else is decoded
|
|
1397
|
+
* as UTF-8 and refused here if it is not — until this check existed the
|
|
1398
|
+
* sidecar decoded with `errors="replace"`, so a binary file became a string of
|
|
1399
|
+
* replacement characters that was chunked, embedded, stored as the document
|
|
1400
|
+
* body and reported as indexed.
|
|
1401
|
+
*/
|
|
1402
|
+
function admitBytes(bytes, declaredType, objectStorage) {
|
|
1403
|
+
const declared = declaredType.split(';')[0]?.trim().toLowerCase() ?? '';
|
|
1404
|
+
const format = binaryFormat(declared);
|
|
1405
|
+
const family = signatureFamily(bytes);
|
|
1406
|
+
if (format !== undefined && family !== format.family) {
|
|
1407
|
+
return {
|
|
1408
|
+
refusal: `The file declares '${format.contentType}' but the bytes do not begin with the ${SIGNATURE_NAMES[format.family]}. ` +
|
|
1409
|
+
'Both must agree; a declared type the bytes contradict is refused rather than trusted.',
|
|
1410
|
+
};
|
|
1411
|
+
}
|
|
1412
|
+
if (format === undefined && family !== undefined) {
|
|
1413
|
+
return {
|
|
1414
|
+
refusal: `The bytes begin with the ${SIGNATURE_NAMES[family]} but the file declares '${declared || 'nothing'}'. ` +
|
|
1415
|
+
"Both must agree; declare the document's type rather than relying on sniffing. " +
|
|
1416
|
+
`Accepted: ${BINARY_FORMATS.map((f) => f.contentType).join(', ')}.`,
|
|
1417
|
+
};
|
|
1418
|
+
}
|
|
1419
|
+
if (format !== undefined) {
|
|
1420
|
+
if (!objectStorage) {
|
|
1421
|
+
return {
|
|
1422
|
+
refusal: `A ${format.format} upload needs object storage, and this deployment has none configured. ` +
|
|
1423
|
+
'Set NACRE_S3_* (endpoint, bucket, access key, secret key) to enable binary ingest.',
|
|
1424
|
+
};
|
|
1425
|
+
}
|
|
1426
|
+
return { binary: { bytes, contentType: format.contentType } };
|
|
1427
|
+
}
|
|
1428
|
+
try {
|
|
1429
|
+
return { content: new TextDecoder('utf-8', { fatal: true }).decode(bytes) };
|
|
1430
|
+
}
|
|
1431
|
+
catch {
|
|
1432
|
+
return {
|
|
1433
|
+
refusal: 'The uploaded file is not UTF-8 text and declares no binary format this installation extracts. ' +
|
|
1434
|
+
`Accepted, each declared on the file: ${BINARY_FORMATS.map((f) => f.contentType).join(', ')}. ` +
|
|
1435
|
+
'An image, an archive or a legacy .doc needs an extractor the parser deliberately does not carry.',
|
|
1436
|
+
};
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
/**
|
|
1440
|
+
* The answer to a queue outcome, for both doors into ingest: the audit event
|
|
1441
|
+
* and the status. One function, so a ticket upload leaves the same journal
|
|
1442
|
+
* entry a multipart or a JSON ingest leaves.
|
|
1443
|
+
*/
|
|
1444
|
+
async function answerIngest(res, instance, requestId, auth, layer, outcome, options) {
|
|
1445
|
+
if (outcome === undefined) {
|
|
1446
|
+
options.observe?.aclDenials.inc({ reason: 'ingest_layer' });
|
|
1447
|
+
// Not 403. A caller without write access must not learn which layers
|
|
1448
|
+
// exist by seeing which ones refuse differently from which ones are
|
|
1449
|
+
// absent.
|
|
1450
|
+
await options.audit.write({
|
|
1451
|
+
orgId: auth.orgId,
|
|
1452
|
+
actor: `${auth.principal.type}:${auth.principal.id}`,
|
|
1453
|
+
action: 'ingest',
|
|
1454
|
+
result: 'deny',
|
|
1455
|
+
target: { layer },
|
|
1456
|
+
detail: { layer },
|
|
1457
|
+
requestId,
|
|
1458
|
+
});
|
|
1459
|
+
const problem = notFound(instance, requestId);
|
|
1460
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1461
|
+
return;
|
|
1462
|
+
}
|
|
1463
|
+
if ('refused' in outcome) {
|
|
1464
|
+
// A module's ingest gate declined a document the caller may write — a
|
|
1465
|
+
// quota, a suspension. Not a 404: the layer is not being hidden, the
|
|
1466
|
+
// caller was allowed to write against it. Recorded as a denial so an
|
|
1467
|
+
// operator can see quota-refused ingests; the gate's reason is the
|
|
1468
|
+
// detail, and the gate chose the status.
|
|
1469
|
+
await options.audit.write({
|
|
1470
|
+
orgId: auth.orgId,
|
|
1471
|
+
actor: `${auth.principal.type}:${auth.principal.id}`,
|
|
1472
|
+
action: 'ingest',
|
|
1473
|
+
result: 'deny',
|
|
1474
|
+
target: { layer },
|
|
1475
|
+
detail: { layer, reason: outcome.reason },
|
|
1476
|
+
requestId,
|
|
1477
|
+
});
|
|
1478
|
+
const problem = new Problem({
|
|
1479
|
+
type: 'https://nacre.work/errors/ingest-refused',
|
|
1480
|
+
title: outcome.status === 429 ? 'Too many requests' : 'Forbidden',
|
|
1481
|
+
status: outcome.status,
|
|
1482
|
+
detail: outcome.reason,
|
|
1483
|
+
instance,
|
|
1484
|
+
requestId,
|
|
1485
|
+
});
|
|
1486
|
+
send(res, outcome.status, problem.toJSON(), requestId);
|
|
1487
|
+
return;
|
|
1488
|
+
}
|
|
1489
|
+
await options.audit.write({
|
|
1490
|
+
orgId: auth.orgId,
|
|
1491
|
+
actor: `${auth.principal.type}:${auth.principal.id}`,
|
|
1492
|
+
action: 'ingest',
|
|
1493
|
+
result: 'allow',
|
|
1494
|
+
target: { layer, document_id: outcome.documentId },
|
|
1495
|
+
detail: { document_id: outcome.documentId, unchanged: outcome.unchanged },
|
|
1496
|
+
requestId,
|
|
1497
|
+
});
|
|
1498
|
+
// 200 for an idempotent repeat, 202 for work actually queued. The
|
|
1499
|
+
// difference is what lets a client tell "already indexed" from "wait for
|
|
1500
|
+
// the job" without polling to find out.
|
|
1501
|
+
send(res, outcome.unchanged ? 200 : 202, { document_id: outcome.documentId, job_id: outcome.jobId, status: outcome.unchanged ? 'indexed' : 'queued' }, requestId);
|
|
1502
|
+
}
|
|
1503
|
+
/** The origin this request arrived on, when the deployment named none for tickets. */
|
|
1504
|
+
function reachedOrigin(req) {
|
|
1505
|
+
const host = req.headers.host;
|
|
1506
|
+
if (typeof host !== 'string' || host === '')
|
|
1507
|
+
return undefined;
|
|
1508
|
+
const forwarded = req.headers['x-forwarded-proto'];
|
|
1509
|
+
const first = (Array.isArray(forwarded) ? forwarded[0] : forwarded)?.split(',')[0]?.trim();
|
|
1510
|
+
return `${first === 'https' ? 'https' : 'http'}://${host}`;
|
|
1511
|
+
}
|
|
1512
|
+
/** The store did not answer. Closed, by name — see uploads.ts. */
|
|
1513
|
+
function ticketsUnavailable(instance, requestId) {
|
|
1514
|
+
return new Problem({
|
|
1515
|
+
type: 'https://nacre.work/errors/unavailable',
|
|
1516
|
+
title: 'Service unavailable',
|
|
1517
|
+
status: 503,
|
|
1518
|
+
detail: 'Upload tickets cannot be checked right now. Try again shortly.',
|
|
1519
|
+
instance,
|
|
1520
|
+
requestId,
|
|
1521
|
+
});
|
|
1522
|
+
}
|
|
1523
|
+
/**
|
|
1524
|
+
* `POST /v1/uploads`: a ticket for a document the caller will send later,
|
|
1525
|
+
* from wherever the bytes are.
|
|
1526
|
+
*
|
|
1527
|
+
* Minted on `write` to the layer and nothing else, with the same answer for
|
|
1528
|
+
* a layer the caller may not write to and one that does not exist — a ticket
|
|
1529
|
+
* endpoint that said "not writable" would be the cheapest layer-name oracle
|
|
1530
|
+
* in the system. The document is queued as this caller when the bytes
|
|
1531
|
+
* arrive, and the write is checked again then.
|
|
1532
|
+
*/
|
|
1533
|
+
async function mintTicket(req, res, instance, requestId, auth, body, options) {
|
|
1534
|
+
// Absent store or absent check: the surface does not exist here, and says
|
|
1535
|
+
// so the way every absent surface does.
|
|
1536
|
+
if (options.uploads === undefined || options.ingest.writable === undefined) {
|
|
1537
|
+
const problem = notFound(instance, requestId);
|
|
1538
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1539
|
+
return;
|
|
1540
|
+
}
|
|
1541
|
+
const body_ = (body ?? {});
|
|
1542
|
+
const layer = body_.layer;
|
|
1543
|
+
if (typeof layer !== 'string' || layer === '') {
|
|
1544
|
+
const problem = badRequest(instance, requestId, "'layer' is required.");
|
|
1545
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1546
|
+
return;
|
|
1547
|
+
}
|
|
1548
|
+
for (const field of ['external_id', 'title']) {
|
|
1549
|
+
if (body_[field] !== undefined && typeof body_[field] !== 'string') {
|
|
1550
|
+
const problem = badRequest(instance, requestId, `'${field}' must be a string.`);
|
|
1551
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1552
|
+
return;
|
|
1553
|
+
}
|
|
1554
|
+
}
|
|
1555
|
+
// Validated now, so a ticket never carries tags the upload would refuse
|
|
1556
|
+
// minutes later with nobody there to read the refusal.
|
|
1557
|
+
let metadata;
|
|
1558
|
+
try {
|
|
1559
|
+
metadata = parseMetadata(body_.metadata);
|
|
1560
|
+
}
|
|
1561
|
+
catch (error) {
|
|
1562
|
+
const problem = badRequest(instance, requestId, error instanceof MetadataError ? error.message : "'metadata' is not usable.");
|
|
1563
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1564
|
+
return;
|
|
1565
|
+
}
|
|
1566
|
+
if (!(await options.ingest.writable(auth, layer))) {
|
|
1567
|
+
options.observe?.aclDenials.inc({ reason: 'ingest_layer' });
|
|
1568
|
+
await options.audit.write({
|
|
1569
|
+
orgId: auth.orgId,
|
|
1570
|
+
actor: `${auth.principal.type}:${auth.principal.id}`,
|
|
1571
|
+
action: 'ingest',
|
|
1572
|
+
result: 'deny',
|
|
1573
|
+
target: { layer },
|
|
1574
|
+
detail: { layer, ticket: 'refused' },
|
|
1575
|
+
requestId,
|
|
1576
|
+
});
|
|
1577
|
+
const problem = notFound(instance, requestId);
|
|
1578
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1579
|
+
return;
|
|
1580
|
+
}
|
|
1581
|
+
const expiresAt = Math.floor(Date.now() / 1000) + TICKET_TTL_SECONDS;
|
|
1582
|
+
let ticket;
|
|
1583
|
+
try {
|
|
1584
|
+
ticket = await options.uploads.mint({
|
|
1585
|
+
auth,
|
|
1586
|
+
layer,
|
|
1587
|
+
...(typeof body_.external_id === 'string' ? { externalId: body_.external_id } : {}),
|
|
1588
|
+
...(typeof body_.title === 'string' ? { title: body_.title } : {}),
|
|
1589
|
+
metadata,
|
|
1590
|
+
expiresAt,
|
|
1591
|
+
});
|
|
1592
|
+
}
|
|
1593
|
+
catch {
|
|
1594
|
+
const problem = ticketsUnavailable(instance, requestId);
|
|
1595
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1596
|
+
return;
|
|
1597
|
+
}
|
|
1598
|
+
const base = options.uploadBaseUrl ?? reachedOrigin(req) ?? 'http://localhost';
|
|
1599
|
+
send(res, 201, uploadDescriptor(ticket, expiresAt, base, options.maxBodyBytes ?? MAX_BODY_BYTES), requestId, { 'cache-control': 'no-store' });
|
|
1600
|
+
}
|
|
1601
|
+
/** The headers the ticket door answers with, to every origin. */
|
|
1602
|
+
const OPEN_CORS = {
|
|
1603
|
+
'access-control-allow-origin': '*',
|
|
1604
|
+
'access-control-expose-headers': 'RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, Retry-After',
|
|
1605
|
+
};
|
|
1606
|
+
/**
|
|
1607
|
+
* `POST /v1/uploads/{ticket}`: the bytes, from whoever holds them.
|
|
1608
|
+
*
|
|
1609
|
+
* No credential, because the ticket is one: single-use, five minutes, minted
|
|
1610
|
+
* by a caller holding `write`. An unknown, spent or expired ticket is the one
|
|
1611
|
+
* `404` for all three. The body is the file as it is on disk, under its own
|
|
1612
|
+
* media type — the same admission a multipart file part gets, through the
|
|
1613
|
+
* same function — and the document is queued as the caller who minted the
|
|
1614
|
+
* ticket, with their write checked again now.
|
|
1615
|
+
*/
|
|
1616
|
+
async function redeemTicket(req, res, instance, requestId, ticketId, options) {
|
|
1617
|
+
for (const [name, value] of Object.entries(OPEN_CORS))
|
|
1618
|
+
res.setHeader(name, value);
|
|
1619
|
+
if (req.method === 'OPTIONS') {
|
|
1620
|
+
res.writeHead(204, {
|
|
1621
|
+
'access-control-allow-methods': 'POST, OPTIONS',
|
|
1622
|
+
'access-control-allow-headers': 'content-type',
|
|
1623
|
+
'access-control-max-age': '600',
|
|
1624
|
+
});
|
|
1625
|
+
res.end();
|
|
1626
|
+
return;
|
|
1627
|
+
}
|
|
1628
|
+
// The shape first, so a path that is not a ticket never reaches the store.
|
|
1629
|
+
if (options.uploads === undefined || !TICKET_SHAPE.test(ticketId)) {
|
|
1630
|
+
const problem = notFound(instance, requestId);
|
|
1631
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1632
|
+
return;
|
|
1633
|
+
}
|
|
1634
|
+
let ticket;
|
|
1635
|
+
try {
|
|
1636
|
+
ticket = await options.uploads.redeem(ticketId);
|
|
1637
|
+
}
|
|
1638
|
+
catch {
|
|
1639
|
+
const problem = ticketsUnavailable(instance, requestId);
|
|
1640
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1641
|
+
return;
|
|
1642
|
+
}
|
|
1643
|
+
if (ticket === undefined) {
|
|
1644
|
+
const problem = notFound(instance, requestId);
|
|
1645
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1646
|
+
return;
|
|
1647
|
+
}
|
|
1648
|
+
// The ticket is spent whatever happens below. A refusal is the caller's to
|
|
1649
|
+
// read and a fresh ticket is one request away; a ticket that survived its
|
|
1650
|
+
// own refusal would be a capability that outlives the check that used it.
|
|
1651
|
+
const limit = options.maxBodyBytes ?? MAX_BODY_BYTES;
|
|
1652
|
+
let bytes;
|
|
1653
|
+
try {
|
|
1654
|
+
bytes = await readRaw(req, limit);
|
|
1655
|
+
}
|
|
1656
|
+
catch (error) {
|
|
1657
|
+
const problem = error instanceof BodyTooLarge
|
|
1658
|
+
? new Problem({
|
|
1659
|
+
type: 'https://nacre.work/errors/payload-too-large',
|
|
1660
|
+
title: 'Payload too large',
|
|
1661
|
+
status: 413,
|
|
1662
|
+
detail: `The request body is over the ${limit} byte limit set by NACRE_MAX_DOCUMENT_BYTES.`,
|
|
1663
|
+
instance,
|
|
1664
|
+
requestId,
|
|
1665
|
+
})
|
|
1666
|
+
: badRequest(instance, requestId, 'The request body could not be read.');
|
|
1667
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1668
|
+
return;
|
|
1669
|
+
}
|
|
1670
|
+
if (bytes.length === 0) {
|
|
1671
|
+
const problem = badRequest(instance, requestId, 'The request body is empty; send the file as the body.');
|
|
1672
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1673
|
+
return;
|
|
1674
|
+
}
|
|
1675
|
+
const admitted = admitBytes(bytes, req.headers['content-type'] ?? '', options.objectStorage === true);
|
|
1676
|
+
if ('refusal' in admitted) {
|
|
1677
|
+
const problem = badRequest(instance, requestId, admitted.refusal);
|
|
1678
|
+
send(res, problem.status, problem.toJSON(), requestId);
|
|
1679
|
+
return;
|
|
1680
|
+
}
|
|
1681
|
+
// The same bucket the minting spent from, counted again: the mint was the
|
|
1682
|
+
// promise and this is the ingest.
|
|
1683
|
+
if (options.limits !== undefined && options.limitPolicies !== undefined) {
|
|
1684
|
+
const decision = await options.limits.check(ticket.auth.orgId, 'ingest');
|
|
1685
|
+
if (!decision.allowed) {
|
|
1686
|
+
const problem = new Problem({
|
|
1687
|
+
type: 'https://nacre.work/errors/rate-limited',
|
|
1688
|
+
title: 'Too many requests',
|
|
1689
|
+
status: 429,
|
|
1690
|
+
detail: `Rate limit exceeded for ingest. Try again in ${decision.reset} seconds.`,
|
|
1691
|
+
instance,
|
|
1692
|
+
requestId,
|
|
1693
|
+
});
|
|
1694
|
+
send(res, 429, problem.toJSON(), requestId, limitHeaders(decision, options.limitPolicies.ingest, 'ingest'));
|
|
1695
|
+
return;
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1698
|
+
// The name the document gets: what the ticket said, or what the sender
|
|
1699
|
+
// says now, or nothing anybody chose. Query rather than header, so a
|
|
1700
|
+
// `curl` line can carry it without a second flag.
|
|
1701
|
+
const filename = new URL(req.url ?? '/', 'http://localhost').searchParams.get('filename');
|
|
1702
|
+
const externalId = ticket.externalId ?? (filename !== null && filename !== '' ? filename : randomUUID());
|
|
1703
|
+
const outcome = await options.ingest.queue(ticket.auth, {
|
|
1704
|
+
layer: ticket.layer,
|
|
1705
|
+
externalId,
|
|
1706
|
+
...(ticket.title === undefined ? {} : { title: ticket.title }),
|
|
1707
|
+
...('binary' in admitted ? { bytes: admitted.binary.bytes, contentType: admitted.binary.contentType } : { content: admitted.content }),
|
|
1708
|
+
metadata: parseMetadata(ticket.metadata),
|
|
1709
|
+
});
|
|
1710
|
+
await answerIngest(res, instance, requestId, ticket.auth, ticket.layer, outcome, options);
|
|
1711
|
+
}
|
|
1370
1712
|
async function handle(req, res, options) {
|
|
1371
1713
|
const requestId = randomUUID();
|
|
1372
1714
|
const url = new URL(req.url ?? '/', 'http://localhost');
|
|
@@ -1380,6 +1722,19 @@ async function handle(req, res, options) {
|
|
|
1380
1722
|
//
|
|
1381
1723
|
// Empty is the default: no header is emitted and a preflight is a `404` like
|
|
1382
1724
|
// any other unrouted method, which is exactly what this API did before.
|
|
1725
|
+
// The one door that admits every origin. A ticket's URL is redeemed by
|
|
1726
|
+
// whoever holds the bytes — an MCP App's file input in a host's sandboxed
|
|
1727
|
+
// iframe is the case that matters, and its `Origin` is `null` or the host's,
|
|
1728
|
+
// neither of which a deployment can put on an allow-list. Admitting `*`
|
|
1729
|
+
// here adds nothing to what the allow-list guards: the request carries no
|
|
1730
|
+
// cookie and no `Authorization`, the capability is the ticket itself, and a
|
|
1731
|
+
// page that does not hold one gets the `404` a stranger gets. Everything
|
|
1732
|
+
// else on this API stays on exact match. uploads.ts has the argument.
|
|
1733
|
+
const ticketMatch = pathMatch(/^\/v1\/uploads\/([^/]+)$/, instance);
|
|
1734
|
+
if (ticketMatch !== null && (req.method === 'POST' || req.method === 'OPTIONS')) {
|
|
1735
|
+
await redeemTicket(req, res, instance, requestId, ticketMatch[1], options);
|
|
1736
|
+
return;
|
|
1737
|
+
}
|
|
1383
1738
|
const allowedOrigins = options.allowedOrigins ?? [];
|
|
1384
1739
|
const cors = corsHeaders(req.headers.origin, allowedOrigins);
|
|
1385
1740
|
for (const [name, value] of Object.entries(cors))
|
|
@@ -2176,6 +2531,10 @@ async function handle(req, res, options) {
|
|
|
2176
2531
|
send(res, 200, { items: results }, requestId);
|
|
2177
2532
|
return;
|
|
2178
2533
|
}
|
|
2534
|
+
if (req.method === 'POST' && instance === '/v1/uploads') {
|
|
2535
|
+
await mintTicket(req, res, instance, requestId, auth, body, options);
|
|
2536
|
+
return;
|
|
2537
|
+
}
|
|
2179
2538
|
if (req.method === 'POST' && instance === '/v1/documents') {
|
|
2180
2539
|
const body_ = (body ?? {});
|
|
2181
2540
|
const layer = body_.layer;
|
|
@@ -2198,67 +2557,30 @@ async function handle(req, res, options) {
|
|
|
2198
2557
|
send(res, problem.status, problem.toJSON(), requestId);
|
|
2199
2558
|
return;
|
|
2200
2559
|
}
|
|
2201
|
-
//
|
|
2202
|
-
//
|
|
2203
|
-
//
|
|
2204
|
-
//
|
|
2205
|
-
//
|
|
2206
|
-
//
|
|
2207
|
-
//
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
|
|
2211
|
-
|
|
2212
|
-
|
|
2213
|
-
|
|
2214
|
-
|
|
2215
|
-
|
|
2216
|
-
|
|
2217
|
-
|
|
2218
|
-
const problem = badRequest(instance, requestId, "The bytes begin with the %PDF- magic but the file part does not declare 'application/pdf'. " +
|
|
2219
|
-
'Both must agree; declare the type rather than relying on sniffing.');
|
|
2560
|
+
// Both signals must agree: the part declares a type in the table AND
|
|
2561
|
+
// the bytes carry that family's signature. Either alone is a refusal
|
|
2562
|
+
// that names the other — a declared type the bytes contradict is
|
|
2563
|
+
// exactly the disagreement the multipart parser's strictness doctrine
|
|
2564
|
+
// exists to refuse, and sniffing alone would turn the declared type
|
|
2565
|
+
// into decoration. The table is `BINARY_FORMATS` in the core, which
|
|
2566
|
+
// the worker and the sidecar read too; a new format is a row there,
|
|
2567
|
+
// and nothing falls through to a guess.
|
|
2568
|
+
//
|
|
2569
|
+
// A signature names a family and not a format — every Office and
|
|
2570
|
+
// OpenDocument file is a ZIP archive — so what the edge can hold is
|
|
2571
|
+
// "a ZIP-based document declared as one". Which one is the sidecar's
|
|
2572
|
+
// half: it names the declared format to the extractor and refuses an
|
|
2573
|
+
// archive whose parts say otherwise.
|
|
2574
|
+
const admitted = admitBytes(uploaded.bytes, uploaded.contentType ?? '', options.objectStorage === true);
|
|
2575
|
+
if ('refusal' in admitted) {
|
|
2576
|
+
const problem = badRequest(instance, requestId, admitted.refusal);
|
|
2220
2577
|
send(res, problem.status, problem.toJSON(), requestId);
|
|
2221
2578
|
return;
|
|
2222
2579
|
}
|
|
2223
|
-
if (
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
// variables, not from a `failed` row minutes later.
|
|
2228
|
-
if (options.objectStorage !== true) {
|
|
2229
|
-
const problem = badRequest(instance, requestId, 'A PDF upload needs object storage, and this deployment has none configured. ' +
|
|
2230
|
-
'Set NACRE_S3_* (endpoint, bucket, access key, secret key) to enable binary ingest.');
|
|
2231
|
-
send(res, problem.status, problem.toJSON(), requestId);
|
|
2232
|
-
return;
|
|
2233
|
-
}
|
|
2234
|
-
binary = { bytes: uploaded.bytes, contentType: 'application/pdf' };
|
|
2235
|
-
}
|
|
2236
|
-
else {
|
|
2237
|
-
// Decoded here, and refused here, rather than queued and failed
|
|
2238
|
-
// later.
|
|
2239
|
-
//
|
|
2240
|
-
// The parser extracts exactly the formats in the table above — it
|
|
2241
|
-
// took its first dependency for PDF and nothing else. Until this
|
|
2242
|
-
// check existed the sidecar decoded with `errors="replace"`, so a
|
|
2243
|
-
// binary file became a string of replacement characters that was
|
|
2244
|
-
// chunked, embedded, stored as the document body and reported as
|
|
2245
|
-
// indexed.
|
|
2246
|
-
//
|
|
2247
|
-
// At the edge the caller learns immediately and nothing is queued.
|
|
2248
|
-
// Deep in the worker they would have learned from a `failed` row
|
|
2249
|
-
// minutes later, if they looked.
|
|
2250
|
-
const decoder = new TextDecoder('utf-8', { fatal: true });
|
|
2251
|
-
try {
|
|
2252
|
-
content = decoder.decode(uploaded.bytes);
|
|
2253
|
-
}
|
|
2254
|
-
catch {
|
|
2255
|
-
const problem = badRequest(instance, requestId, 'The uploaded file is not UTF-8 text. This installation extracts PDF and nothing else — ' +
|
|
2256
|
-
'a Word file or an image needs an extractor the parser deliberately does not carry, ' +
|
|
2257
|
-
'and a PDF must declare application/pdf on the file part.');
|
|
2258
|
-
send(res, problem.status, problem.toJSON(), requestId);
|
|
2259
|
-
return;
|
|
2260
|
-
}
|
|
2261
|
-
}
|
|
2580
|
+
if ('binary' in admitted)
|
|
2581
|
+
binary = admitted.binary;
|
|
2582
|
+
else
|
|
2583
|
+
content = admitted.content;
|
|
2262
2584
|
}
|
|
2263
2585
|
const url_ = body_.url;
|
|
2264
2586
|
if (typeof layer !== 'string' || typeof externalId !== 'string') {
|
|
@@ -2266,7 +2588,7 @@ async function handle(req, res, options) {
|
|
|
2266
2588
|
send(res, problem.status, problem.toJSON(), requestId);
|
|
2267
2589
|
return;
|
|
2268
2590
|
}
|
|
2269
|
-
// A
|
|
2591
|
+
// A binary file part is the third source and already excludes the other
|
|
2270
2592
|
// two: `content` and `url` beside a file were refused above, before the
|
|
2271
2593
|
// bytes were even looked at.
|
|
2272
2594
|
if (binary === undefined && (typeof content === 'string') === (typeof url_ === 'string')) {
|
|
@@ -2325,63 +2647,7 @@ async function handle(req, res, options) {
|
|
|
2325
2647
|
options.observe?.ingestDuration.observe(Number(process.hrtime.bigint() - queuedAt) / 1e9, {
|
|
2326
2648
|
stage: 'accept',
|
|
2327
2649
|
});
|
|
2328
|
-
|
|
2329
|
-
options.observe?.aclDenials.inc({ reason: 'ingest_layer' });
|
|
2330
|
-
// Not 403. A caller without write access must not learn which layers
|
|
2331
|
-
// exist by seeing which ones refuse differently from which ones are
|
|
2332
|
-
// absent.
|
|
2333
|
-
await options.audit.write({
|
|
2334
|
-
orgId: auth.orgId,
|
|
2335
|
-
actor: `${auth.principal.type}:${auth.principal.id}`,
|
|
2336
|
-
action: 'ingest',
|
|
2337
|
-
result: 'deny',
|
|
2338
|
-
target: { layer },
|
|
2339
|
-
detail: { layer },
|
|
2340
|
-
requestId,
|
|
2341
|
-
});
|
|
2342
|
-
const problem = notFound(instance, requestId);
|
|
2343
|
-
send(res, problem.status, problem.toJSON(), requestId);
|
|
2344
|
-
return;
|
|
2345
|
-
}
|
|
2346
|
-
if ('refused' in outcome) {
|
|
2347
|
-
// A module's ingest gate declined a document the caller may write — a
|
|
2348
|
-
// quota, a suspension. Not a 404: the layer is not being hidden, the
|
|
2349
|
-
// caller was allowed to write against it. Recorded as a denial so an
|
|
2350
|
-
// operator can see quota-refused ingests; the gate's reason is the
|
|
2351
|
-
// detail, and the gate chose the status.
|
|
2352
|
-
await options.audit.write({
|
|
2353
|
-
orgId: auth.orgId,
|
|
2354
|
-
actor: `${auth.principal.type}:${auth.principal.id}`,
|
|
2355
|
-
action: 'ingest',
|
|
2356
|
-
result: 'deny',
|
|
2357
|
-
target: { layer },
|
|
2358
|
-
detail: { layer, reason: outcome.reason },
|
|
2359
|
-
requestId,
|
|
2360
|
-
});
|
|
2361
|
-
const problem = new Problem({
|
|
2362
|
-
type: 'https://nacre.work/errors/ingest-refused',
|
|
2363
|
-
title: outcome.status === 429 ? 'Too many requests' : 'Forbidden',
|
|
2364
|
-
status: outcome.status,
|
|
2365
|
-
detail: outcome.reason,
|
|
2366
|
-
instance,
|
|
2367
|
-
requestId,
|
|
2368
|
-
});
|
|
2369
|
-
send(res, outcome.status, problem.toJSON(), requestId);
|
|
2370
|
-
return;
|
|
2371
|
-
}
|
|
2372
|
-
await options.audit.write({
|
|
2373
|
-
orgId: auth.orgId,
|
|
2374
|
-
actor: `${auth.principal.type}:${auth.principal.id}`,
|
|
2375
|
-
action: 'ingest',
|
|
2376
|
-
result: 'allow',
|
|
2377
|
-
target: { layer, document_id: outcome.documentId },
|
|
2378
|
-
detail: { document_id: outcome.documentId, unchanged: outcome.unchanged },
|
|
2379
|
-
requestId,
|
|
2380
|
-
});
|
|
2381
|
-
// 200 for an idempotent repeat, 202 for work actually queued. The
|
|
2382
|
-
// difference is what lets a client tell "already indexed" from "wait for
|
|
2383
|
-
// the job" without polling to find out.
|
|
2384
|
-
send(res, outcome.unchanged ? 200 : 202, { document_id: outcome.documentId, job_id: outcome.jobId, status: outcome.unchanged ? 'indexed' : 'queued' }, requestId);
|
|
2650
|
+
await answerIngest(res, instance, requestId, auth, layer, outcome, options);
|
|
2385
2651
|
return;
|
|
2386
2652
|
}
|
|
2387
2653
|
const documentMatch = pathMatch(/^\/v1\/documents\/([^/]+)$/, instance);
|