@ixo/decision-oracle 0.2.28 → 0.2.29
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 +1 -1
- package/dist/db/schema.d.ts +17 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +10 -0
- package/dist/db/schema.js.map +1 -1
- package/dist/lib/api-lane/accept.d.ts.map +1 -1
- package/dist/lib/api-lane/accept.js +27 -10
- package/dist/lib/api-lane/accept.js.map +1 -1
- package/dist/lib/api-lane/notify.d.ts +9 -0
- package/dist/lib/api-lane/notify.d.ts.map +1 -1
- package/dist/lib/api-lane/notify.js +10 -3
- package/dist/lib/api-lane/notify.js.map +1 -1
- package/dist/lib/api-lane/record.d.ts.map +1 -1
- package/dist/lib/api-lane/record.js +6 -3
- package/dist/lib/api-lane/record.js.map +1 -1
- package/dist/lib/engine/client.d.ts +14 -2
- package/dist/lib/engine/client.d.ts.map +1 -1
- package/dist/lib/engine/client.js +90 -11
- package/dist/lib/engine/client.js.map +1 -1
- package/dist/lib/work-order/index.d.ts +4 -2
- package/dist/lib/work-order/index.d.ts.map +1 -1
- package/dist/lib/work-order/index.js +19 -4
- package/dist/lib/work-order/index.js.map +1 -1
- package/dist/middleware/api/keys.d.ts.map +1 -1
- package/dist/middleware/api/keys.js +10 -2
- package/dist/middleware/api/keys.js.map +1 -1
- package/dist/middleware/api/rate-limit.js +3 -4
- package/dist/middleware/api/rate-limit.js.map +1 -1
- package/dist/middleware/api/wait.d.ts +17 -2
- package/dist/middleware/api/wait.d.ts.map +1 -1
- package/dist/middleware/api/wait.js +80 -19
- package/dist/middleware/api/wait.js.map +1 -1
- package/dist/routes/v1/api/claims.d.ts +15 -3
- package/dist/routes/v1/api/claims.d.ts.map +1 -1
- package/dist/routes/v1/api/claims.js +85 -14
- package/dist/routes/v1/api/claims.js.map +1 -1
- package/dist/workflows/claim-ingest.d.ts +19 -125
- package/dist/workflows/claim-ingest.d.ts.map +1 -1
- package/dist/workflows/claim-ingest.js +49 -765
- package/dist/workflows/claim-ingest.js.map +1 -1
- package/dist/workflows/evaluate.d.ts +193 -0
- package/dist/workflows/evaluate.d.ts.map +1 -0
- package/dist/workflows/evaluate.js +980 -0
- package/dist/workflows/evaluate.js.map +1 -0
- package/docs/api.md +24 -4
- package/docs/guide.md +19 -1
- package/migrations/0029_inline_lease.sql +1 -0
- package/migrations/meta/0029_snapshot.json +3021 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/engine/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAM3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACL,KAAK,YAAY,EACjB,SAAS,EACT,iBAAiB,EACjB,gBAAgB,EAChB,aAAa,EACb,cAAc,EAId,KAAK,QAAQ,EAEb,KAAK,gBAAgB,EACrB,QAAQ,EACR,KAAK,cAAc,EAEnB,MAAM,EACN,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAkB,CAAC;AA0BrD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,mEAAmE;IACnE,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,gGAAgG;IAChG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,6FAA6F;IAC7F,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACpD;;;;;;OAMG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7D,+FAA+F;IAC/F,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACtD,mFAAmF;IACnF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrE,6CAA6C;IAC7C,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD;;;;OAIG;IACH,EAAE,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxB;;;;;OAKG;IACH,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC3F;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D;;;;;OAKG;IACH,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC9E
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/lib/engine/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ import { fetchClient, parseRetryAfter } from "../http/client.js";
|
|
|
34
34
|
import { assertOracleAddress } from "../ixo/chain.js";
|
|
35
35
|
import { resolveServiceDid } from "../ixo/did.js";
|
|
36
36
|
import { mintInvocation, oracleWebDid } from "../ixo/ucan.js";
|
|
37
|
-
import { currentMetrics, peerCode, readCache } from "../metrics.js";
|
|
37
|
+
import { countCache, currentMetrics, peerCode, readCache } from "../metrics.js";
|
|
38
38
|
import { TtlCache } from "../ttl-cache.js";
|
|
39
39
|
import { deriveOracleKey, signAdr36 } from "./adr36.js";
|
|
40
40
|
import { Agreement, CollectionCompany, CompanyLinkState, DecideRequest, DecideResponse, EngineError, ErrorEnvelope, isManifestUnusable, ManifestResponse, OracleMe, Report, ReviewRequest, } from "./types.js";
|
|
@@ -92,8 +92,44 @@ const TOKEN_REUSE_MARGIN_SEC = 30;
|
|
|
92
92
|
const REGISTERED_TTL_SEC = 30 * 86_400;
|
|
93
93
|
/** The engine's canonical counterparty form — lowercase bech32 with the `ixo` HRP. */
|
|
94
94
|
const IXO_BECH32_RE = /^ixo1[02-9ac-hj-np-z]{38,}$/;
|
|
95
|
-
/** How long a protocol's manifest is reused
|
|
95
|
+
/** How long a protocol's manifest is reused after it was last known to be the chain's (engine
|
|
96
|
+
* fetch, or a caller's anchor check); a re-anchored `#rub` invalidates it early. */
|
|
96
97
|
const MANIFEST_TTL_SEC = 5 * 60;
|
|
98
|
+
/**
|
|
99
|
+
* The longest a manifest is kept at all — reused past `MANIFEST_TTL_SEC` only by a caller that
|
|
100
|
+
* proved its anchors current (`getManifest`'s `anchors`), so the one thing a re-check cannot see,
|
|
101
|
+
* a change in the engine's own binder for the same two documents, is bounded by this.
|
|
102
|
+
*/
|
|
103
|
+
const MANIFEST_MAX_AGE_SEC = 60 * 60;
|
|
104
|
+
/**
|
|
105
|
+
* How long an isolate trusts its own copy before reading KV again. Short on purpose: an
|
|
106
|
+
* `invalidateManifest` (a re-anchored `#rub`) reaches only its own isolate and KV, so every other
|
|
107
|
+
* isolate's copy goes stale within this window rather than costing it a wasted build per claim.
|
|
108
|
+
*/
|
|
109
|
+
const MANIFEST_MEMO_MS = 30_000;
|
|
110
|
+
/**
|
|
111
|
+
* Manifests, shared by every client in the isolate (a client is built per request / step) that
|
|
112
|
+
* reads the same KV namespace — a memo in front of THAT cache, so a client over another namespace
|
|
113
|
+
* (the CLI's in-memory one per run) never sees it. Keyed like the KV entry plus the engine; held
|
|
114
|
+
* `MANIFEST_MEMO_MS` at most (never past the entry's max age); freshness is `checkedAt`'s.
|
|
115
|
+
*/
|
|
116
|
+
let manifestMemos = new WeakMap();
|
|
117
|
+
function manifestMemoOf(cache) {
|
|
118
|
+
let memo = manifestMemos.get(cache);
|
|
119
|
+
if (!memo) {
|
|
120
|
+
memo = new TtlCache(64);
|
|
121
|
+
manifestMemos.set(cache, memo);
|
|
122
|
+
}
|
|
123
|
+
return memo;
|
|
124
|
+
}
|
|
125
|
+
const isCachedManifest = (v) => {
|
|
126
|
+
const c = v;
|
|
127
|
+
return (!!c &&
|
|
128
|
+
typeof c.fetchedAt === "number" &&
|
|
129
|
+
typeof c.checkedAt === "number" &&
|
|
130
|
+
ManifestResponse.safeParse(c.manifest).success &&
|
|
131
|
+
!isManifestUnusable(c.manifest));
|
|
132
|
+
};
|
|
97
133
|
/**
|
|
98
134
|
* How long this isolate trusts a "registered" it has seen (KV's marker or its own register) before
|
|
99
135
|
* reading KV again. Stale is safe: an engine that forgot us answers `403 NOT_REGISTERED`, and the
|
|
@@ -109,10 +145,11 @@ const REGISTERED_MEMO_MS = 60 * 60 * 1000;
|
|
|
109
145
|
const engineTokens = new TtlCache(256);
|
|
110
146
|
/** The in-isolate "registered" memo, keyed like the KV marker. */
|
|
111
147
|
const registeredMemo = new TtlCache(64);
|
|
112
|
-
/** Tests only: forget the isolate's engine tokens
|
|
148
|
+
/** Tests only: forget the isolate's engine tokens, registered memos and manifests. */
|
|
113
149
|
export function resetEngineCachesForTests() {
|
|
114
150
|
engineTokens.clear();
|
|
115
151
|
registeredMemo.clear();
|
|
152
|
+
manifestMemos = new WeakMap();
|
|
116
153
|
}
|
|
117
154
|
export const registerMessage = (did, address) => `decision-engine:register:${did}:${address}`;
|
|
118
155
|
/** A local engine (`wrangler dev`): `localhost` / `127.0.0.1`, with or without a port. */
|
|
@@ -309,7 +346,21 @@ export function createEngineClient(deps) {
|
|
|
309
346
|
}
|
|
310
347
|
const claimPath = (claimId) => encodeURIComponent(claimId);
|
|
311
348
|
/** Per protocol; a pinned read (`&rubric=`) is its own entry, so it never shadows the live one. */
|
|
312
|
-
|
|
349
|
+
// `v2`: the entry carries its times beside the manifest; the old bare entries just expire.
|
|
350
|
+
const manifestKey = (protocolDid, rubric) => rubric ? `engine-manifest:v2:${protocolDid}:${rubric}` : `engine-manifest:v2:${protocolDid}`;
|
|
351
|
+
/** The isolate's memo is shared by every client over this KV: keyed by the engine too. */
|
|
352
|
+
const manifestMemo = manifestMemoOf(cache);
|
|
353
|
+
const memoKey = (key) => `${baseUrl}|${key}`;
|
|
354
|
+
/** Into the isolate and KV; KV keeps it until its max age, never past it. */
|
|
355
|
+
async function keepManifest(key, entry, now) {
|
|
356
|
+
const expiresAt = entry.fetchedAt + MANIFEST_MAX_AGE_SEC * 1000;
|
|
357
|
+
manifestMemo.set(memoKey(key), entry, Math.min(expiresAt, now + MANIFEST_MEMO_MS), now);
|
|
358
|
+
// KV's floor is 60 s; an entry with less to live than that is simply not written again.
|
|
359
|
+
const ttl = Math.floor((expiresAt - now) / 1000);
|
|
360
|
+
if (ttl >= 60) {
|
|
361
|
+
await cache.put(key, JSON.stringify(entry), { expirationTtl: ttl }).catch(() => { });
|
|
362
|
+
}
|
|
363
|
+
}
|
|
313
364
|
return {
|
|
314
365
|
register,
|
|
315
366
|
async decide(req) {
|
|
@@ -435,10 +486,38 @@ export function createEngineClient(deps) {
|
|
|
435
486
|
// The engine lowercases the pin on parse; the cache key must not split on case.
|
|
436
487
|
const rubric = opts.rubric?.toLowerCase();
|
|
437
488
|
const key = manifestKey(protocolDid, rubric);
|
|
489
|
+
// Looked at only for a stale entry; a failed chain read is just "no anchors" (below), and
|
|
490
|
+
// must not go unhandled when the entry is fresh.
|
|
491
|
+
opts.anchors?.catch(() => { });
|
|
492
|
+
const now = Date.now();
|
|
493
|
+
const memo = manifestMemo.get(memoKey(key), now);
|
|
494
|
+
countCache("engine-manifest-l1", memo !== undefined);
|
|
438
495
|
// A cached value that no longer parses (a deploy moved the schema) is a miss, never a throw.
|
|
439
|
-
const
|
|
440
|
-
|
|
441
|
-
|
|
496
|
+
const stored = memo ?? (await readCache("engine-manifest", () => cache.get(key, "json")));
|
|
497
|
+
// Never past its max age, whatever said it was current since (KV expires it then too).
|
|
498
|
+
const entry = isCachedManifest(stored) && now - stored.fetchedAt < MANIFEST_MAX_AGE_SEC * 1000
|
|
499
|
+
? stored
|
|
500
|
+
: null;
|
|
501
|
+
if (entry) {
|
|
502
|
+
if (now - entry.checkedAt < MANIFEST_TTL_SEC * 1000) {
|
|
503
|
+
if (!memo) {
|
|
504
|
+
const expiresAt = entry.fetchedAt + MANIFEST_MAX_AGE_SEC * 1000;
|
|
505
|
+
manifestMemo.set(memoKey(key), entry, Math.min(expiresAt, now + MANIFEST_MEMO_MS), now);
|
|
506
|
+
}
|
|
507
|
+
return entry.manifest;
|
|
508
|
+
}
|
|
509
|
+
// Stale: still the work order if the chain still anchors the same two documents. A pinned
|
|
510
|
+
// read is a historical pin's and never re-checked against the live anchors.
|
|
511
|
+
const anchors = !rubric && opts.anchors ? await opts.anchors.catch(() => null) : null;
|
|
512
|
+
const current = anchors !== null &&
|
|
513
|
+
anchors.rubric.toLowerCase() === entry.manifest.rubricId.toLowerCase() &&
|
|
514
|
+
anchors.form === entry.manifest.formProof.live;
|
|
515
|
+
countCache("engine-manifest-recheck", current);
|
|
516
|
+
if (current) {
|
|
517
|
+
await keepManifest(key, { ...entry, checkedAt: now }, now);
|
|
518
|
+
return entry.manifest;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
442
521
|
const query = `protocol=${encodeURIComponent(protocolDid)}${rubric ? `&rubric=${rubric}` : ""}`;
|
|
443
522
|
const res = await call("manifest", "GET", `/v1/rubrics/manifest?${query}`, { attempts: 3 });
|
|
444
523
|
if (!res.ok) {
|
|
@@ -452,9 +531,7 @@ export function createEngineClient(deps) {
|
|
|
452
531
|
logger.warn("engine.manifest-unusable", { protocolDid, issues: out.issues });
|
|
453
532
|
return out;
|
|
454
533
|
}
|
|
455
|
-
await
|
|
456
|
-
.put(key, JSON.stringify(out), { expirationTtl: MANIFEST_TTL_SEC })
|
|
457
|
-
.catch(() => { });
|
|
534
|
+
await keepManifest(key, { manifest: out, fetchedAt: now, checkedAt: now }, now);
|
|
458
535
|
logger.info("engine.manifest", {
|
|
459
536
|
protocolDid,
|
|
460
537
|
pinned: rubric ?? null,
|
|
@@ -466,7 +543,9 @@ export function createEngineClient(deps) {
|
|
|
466
543
|
return out;
|
|
467
544
|
},
|
|
468
545
|
async invalidateManifest(protocolDid) {
|
|
469
|
-
|
|
546
|
+
const key = manifestKey(protocolDid);
|
|
547
|
+
manifestMemo.delete(memoKey(key));
|
|
548
|
+
await cache.delete(key).catch(() => { });
|
|
470
549
|
},
|
|
471
550
|
};
|
|
472
551
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/engine/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/engine/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* the engine's manifest (the only reading of the rubric; an unusable one is answered before the form
|
|
4
4
|
* is fetched), then the form's bytes and the pure core (`form.ts`).
|
|
5
5
|
*
|
|
6
|
-
* The manifest is
|
|
7
|
-
*
|
|
6
|
+
* The manifest is cached (client.ts), and read beside the Blocksync resources, whose `#rub` / `#vct`
|
|
7
|
+
* proofs let a stale cached manifest be re-checked instead of re-fetched. When the chain's `#vct`
|
|
8
|
+
* proof is not the one it bound (`formProof.live`, the chain proof verbatim), the form was replaced
|
|
9
|
+
* since: the cached manifest is
|
|
8
10
|
* dropped and re-read once, so a work order never pairs a new form with an old binding.
|
|
9
11
|
*
|
|
10
12
|
* Every failure is transient (`AppError.unavailable`, the route's 503). A usable manifest means the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/work-order/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/work-order/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAWnE,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,eAAO,MAAM,cAAc,EAAE,gBAqD5B,CAAC"}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* the engine's manifest (the only reading of the rubric; an unusable one is answered before the form
|
|
4
4
|
* is fetched), then the form's bytes and the pure core (`form.ts`).
|
|
5
5
|
*
|
|
6
|
-
* The manifest is
|
|
7
|
-
*
|
|
6
|
+
* The manifest is cached (client.ts), and read beside the Blocksync resources, whose `#rub` / `#vct`
|
|
7
|
+
* proofs let a stale cached manifest be re-checked instead of re-fetched. When the chain's `#vct`
|
|
8
|
+
* proof is not the one it bound (`formProof.live`, the chain proof verbatim), the form was replaced
|
|
9
|
+
* since: the cached manifest is
|
|
8
10
|
* dropped and re-read once, so a work order never pairs a new form with an old binding.
|
|
9
11
|
*
|
|
10
12
|
* Every failure is transient (`AppError.unavailable`, the route's 503). A usable manifest means the
|
|
@@ -34,9 +36,22 @@ export const buildWorkOrder = async (env, protocolDid) => {
|
|
|
34
36
|
base: { component: "work-order", protocolDid },
|
|
35
37
|
});
|
|
36
38
|
const engine = createEngineClient({ config, logger, trace, cache: env.CACHE_KV });
|
|
37
|
-
|
|
39
|
+
// The chain's resources and the manifest are read together: the manifest's cache only needs
|
|
40
|
+
// the resources to re-check a stale entry against the protocol's CURRENT `#rub` / `#vct` proofs
|
|
41
|
+
// (client.ts `getManifest`), and a fresh one never waits for them.
|
|
42
|
+
const linked = getEntityLinkedResources({ config, trace }, protocolDid);
|
|
43
|
+
const anchors = linked.then((rs) => {
|
|
44
|
+
const proofOf = (suffix) => rs.find((r) => r.id?.endsWith(suffix))?.proof;
|
|
45
|
+
const rubric = proofOf("#rub");
|
|
46
|
+
const form = proofOf("#vct");
|
|
47
|
+
return rubric && form ? { rubric, form } : null;
|
|
48
|
+
});
|
|
49
|
+
const [resources, first] = await Promise.all([
|
|
50
|
+
linked,
|
|
51
|
+
engine.getManifest(protocolDid, { anchors }),
|
|
52
|
+
]);
|
|
38
53
|
const vct = resources.find((r) => r.id?.endsWith("#vct"));
|
|
39
|
-
let manifest =
|
|
54
|
+
let manifest = first;
|
|
40
55
|
if (!isManifestUnusable(manifest) && vct && vct.proof !== manifest.formProof.live) {
|
|
41
56
|
await engine.invalidateManifest(protocolDid);
|
|
42
57
|
manifest = await engine.getManifest(protocolDid);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/work-order/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/work-order/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/middleware/api/keys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQzC,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,OAAkC,CAAC;AAE5E,gGAAgG;AAChG,eAAO,MAAM,cAAc,WAAY,MAAM,KAAG,MAAM,GAAG,MACL,CAAC;AAIrD,wBAAsB,SAAS,CAC7B,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EACxC,GAAG,SAAa,GACf,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/middleware/api/keys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAQzC,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,OAAkC,CAAC;AAE5E,gGAAgG;AAChG,eAAO,MAAM,cAAc,WAAY,MAAM,KAAG,MAAM,GAAG,MACL,CAAC;AAIrD,wBAAsB,SAAS,CAC7B,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,EACxC,GAAG,SAAa,GACf,OAAO,CAAC,SAAS,CAAC,CA0CpB"}
|
|
@@ -28,9 +28,17 @@ export async function keyCaller(db, config, token, waitUntil, now = Date.now())
|
|
|
28
28
|
throw unauthorized();
|
|
29
29
|
refused.delete(hash);
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
// The key and its source in ONE read (a join, one D1 round trip on every keyed request); the
|
|
32
|
+
// source is looked at only once the hash proved the key.
|
|
33
|
+
const [found] = await db
|
|
34
|
+
.select({ key: apiKeys, source: apiSources })
|
|
35
|
+
.from(apiKeys)
|
|
36
|
+
.leftJoin(apiSources, eq(apiSources.sourceId, apiKeys.sourceId))
|
|
37
|
+
.where(eq(apiKeys.prefix, m[2]))
|
|
38
|
+
.limit(1);
|
|
39
|
+
const row = found?.key;
|
|
32
40
|
const live = row && timingSafeEqual(row.keyHash, hash) && isLive(row.revokedAt, now);
|
|
33
|
-
const source = live &&
|
|
41
|
+
const source = live && found?.source;
|
|
34
42
|
if (!row || !source) {
|
|
35
43
|
refused.set(hash, now + NEGATIVE_TTL_MS);
|
|
36
44
|
// Bounded: a spray of unique garbage keys must not grow the isolate's memory.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/middleware/api/keys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGlD,MAAM,GAAG,GAAG,mDAAmD,CAAC;AAChE,iGAAiG;AACjG,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,mGAAmG;AACnG,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAE5E,gGAAgG;AAChG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAmB,EAAE,CAChE,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AAErD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,EAAY,EACZ,MAAc,EACd,KAAa,EACb,SAAwC,EACxC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC;QAAE,MAAM,YAAY,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,IAAI,KAAK,GAAG,GAAG;YAAE,MAAM,YAAY,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/middleware/api/keys.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,10 +34,9 @@ export async function limitCaller(c, caller) {
|
|
|
34
34
|
const reset = Math.ceil((window + periodMs - now) / 1000);
|
|
35
35
|
let allowed = true;
|
|
36
36
|
try {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
37
|
+
// Both counted on every request (a refusal by one still spends the other), so asked together.
|
|
38
|
+
const outcomes = await Promise.all(keys.map((key) => limiter.limit({ key })));
|
|
39
|
+
allowed = outcomes.every((o) => o.success);
|
|
41
40
|
}
|
|
42
41
|
catch (err) {
|
|
43
42
|
// Fail OPEN, as the per-IP guard does: a limiter glitch must never take the API down.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/middleware/api/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,6EAA6E;AAC7E,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAW,CAAC;AAEpE,yFAAyF;AACzF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyC,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,CAAkB,EAAE,MAAoB;IACxE,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,+DAA+D;IAErF,MAAM,GAAG,GACP,MAAM,CAAC,IAAI,KAAK,KAAK;QACnB,CAAC,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;QAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO;YACvB,CAAC,CAAC,SAAS,MAAM,CAAC,OAAO,EAAE;YAC3B,CAAC,CAAC,UAAU,MAAM,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1D,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC;QACH,
|
|
1
|
+
{"version":3,"file":"rate-limit.js","sourceRoot":"","sources":["../../../src/middleware/api/rate-limit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sync and async are one path (go-prod spec §4.6): every submission starts a `ClaimIngest`
|
|
3
3
|
* instance, and a caller that asked to wait (`Prefer: wait=N` on submit, `?wait=N` on GET) polls
|
|
4
|
-
* the ledger —
|
|
4
|
+
* the ledger — 250 ms rising to 2 s — until the decision lands or the budget runs out. The workflow
|
|
5
5
|
* never knows anyone is waiting, so a client that hangs up orphans nothing.
|
|
6
6
|
*
|
|
7
|
+
* A submit that waits first runs the claim's `evaluate` itself (`evaluateInline`,
|
|
8
|
+
* workflows/evaluate.ts) — the workflow stays the durable fallback — and only polls if that run did
|
|
9
|
+
* not land the decision. The inline run holds a waiter slot like a poll does (`inlineSlot`).
|
|
10
|
+
*
|
|
7
11
|
* At most 20 waiters per source in this isolate; past that the answer is an immediate `202`. The
|
|
8
12
|
* cap protects what a waiter holds — this isolate's open requests and D1 reads — so it is counted
|
|
9
|
-
* where that cost is paid, not globally.
|
|
13
|
+
* where that cost is paid, not globally. Inline runs are capped per isolate too
|
|
14
|
+
* (`MAX_INLINE_RUNS`): one holds a claim's body, attachment bytes and handler work in memory every
|
|
15
|
+
* request of the isolate shares; past the cap the caller polls the workflow instead, as before.
|
|
16
|
+
* Every slot lapses by itself (the wait's end, the run's lease), so a run the runtime cancels
|
|
17
|
+
* before its `finally` cannot pin one for the isolate's life.
|
|
10
18
|
*/
|
|
11
19
|
import type { Database } from "../../db/client.js";
|
|
12
20
|
export declare const MAX_WAITERS_PER_SOURCE = 20;
|
|
21
|
+
/** Inline runs at once in this isolate (header) — well under the per-source waiter cap. */
|
|
22
|
+
export declare const MAX_INLINE_RUNS = 8;
|
|
23
|
+
/**
|
|
24
|
+
* A slot for one inline run until its lease (`until`): a source waiter slot AND one of the
|
|
25
|
+
* isolate's `MAX_INLINE_RUNS`. Both lapse at the lease even if the run is cancelled.
|
|
26
|
+
*/
|
|
27
|
+
export declare function inlineSlot(sourceId: string, until: number): (() => void) | null;
|
|
13
28
|
/** `Prefer: wait=N` (RFC 7240, one of possibly several comma-separated preferences) → seconds,
|
|
14
29
|
* capped at 90; absent or malformed ⇒ null (no wait). */
|
|
15
30
|
export declare function preferredWait(prefer: string | undefined): number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/middleware/api/wait.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../../src/middleware/api/wait.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIhD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,2FAA2F;AAC3F,eAAO,MAAM,eAAe,IAAI,CAAC;AAwCjC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAY/E;AAED;0DAC0D;AAC1D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAGvE;AAwBD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CA4BlB"}
|
|
@@ -1,25 +1,88 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Sync and async are one path (go-prod spec §4.6): every submission starts a `ClaimIngest`
|
|
3
3
|
* instance, and a caller that asked to wait (`Prefer: wait=N` on submit, `?wait=N` on GET) polls
|
|
4
|
-
* the ledger —
|
|
4
|
+
* the ledger — 250 ms rising to 2 s — until the decision lands or the budget runs out. The workflow
|
|
5
5
|
* never knows anyone is waiting, so a client that hangs up orphans nothing.
|
|
6
6
|
*
|
|
7
|
+
* A submit that waits first runs the claim's `evaluate` itself (`evaluateInline`,
|
|
8
|
+
* workflows/evaluate.ts) — the workflow stays the durable fallback — and only polls if that run did
|
|
9
|
+
* not land the decision. The inline run holds a waiter slot like a poll does (`inlineSlot`).
|
|
10
|
+
*
|
|
7
11
|
* At most 20 waiters per source in this isolate; past that the answer is an immediate `202`. The
|
|
8
12
|
* cap protects what a waiter holds — this isolate's open requests and D1 reads — so it is counted
|
|
9
|
-
* where that cost is paid, not globally.
|
|
13
|
+
* where that cost is paid, not globally. Inline runs are capped per isolate too
|
|
14
|
+
* (`MAX_INLINE_RUNS`): one holds a claim's body, attachment bytes and handler work in memory every
|
|
15
|
+
* request of the isolate shares; past the cap the caller polls the workflow instead, as before.
|
|
16
|
+
* Every slot lapses by itself (the wait's end, the run's lease), so a run the runtime cancels
|
|
17
|
+
* before its `finally` cannot pin one for the isolate's life.
|
|
10
18
|
*/
|
|
11
19
|
import * as Sentry from "@sentry/cloudflare";
|
|
12
20
|
import { eq } from "drizzle-orm";
|
|
13
21
|
import { MAX_WAIT_SECONDS } from "../../contracts/index.js";
|
|
14
22
|
import { claimIngests, decisions } from "../../db/schema.js";
|
|
23
|
+
import { decisionFailure } from "../../lib/api-lane/record.js";
|
|
15
24
|
export const MAX_WAITERS_PER_SOURCE = 20;
|
|
16
|
-
|
|
25
|
+
/** Inline runs at once in this isolate (header) — well under the per-source waiter cap. */
|
|
26
|
+
export const MAX_INLINE_RUNS = 8;
|
|
27
|
+
const FIRST_POLL_MS = 250;
|
|
17
28
|
const MAX_POLL_MS = 2000;
|
|
18
|
-
/** After the decision row lands, how long the ledger gets to catch up (the workflow's
|
|
19
|
-
* mark-processed
|
|
20
|
-
*
|
|
29
|
+
/** After the decision row lands, how long the ledger gets to catch up (the workflow's
|
|
30
|
+
* mark-processed step, which follows the decision directly — after the review event, for a
|
|
31
|
+
* `pending_review` — or the inline run's own mark)
|
|
32
|
+
* before the answer goes out anyway — so a sync 200 reads `processed` beside its decision, not a
|
|
33
|
+
* stale `processing` (S7, 2026-09-30). `decision` stays the truth. The wait ends the moment the
|
|
34
|
+
* ledger reads `processed`, so this bounds only a run that stalls between the two. */
|
|
21
35
|
const SETTLE_GRACE_MS = 3000;
|
|
22
|
-
|
|
36
|
+
/**
|
|
37
|
+
* Held slots per key, each with the time it lapses by itself: a holder releases its slot when it
|
|
38
|
+
* ends, but a run the runtime cancels (past `waitUntil`'s window) never reaches its `finally`, and
|
|
39
|
+
* its slot must not stay held for the isolate's life. Only unexpired slots count.
|
|
40
|
+
*/
|
|
41
|
+
class Slots {
|
|
42
|
+
max;
|
|
43
|
+
held = new Map();
|
|
44
|
+
seq = 0;
|
|
45
|
+
constructor(max) {
|
|
46
|
+
this.max = max;
|
|
47
|
+
}
|
|
48
|
+
/** A slot until `until` (epoch ms), or null when `max` live ones are held; release is idempotent. */
|
|
49
|
+
take(key, until, now = Date.now()) {
|
|
50
|
+
const live = this.held.get(key) ?? new Map();
|
|
51
|
+
for (const [id, exp] of live)
|
|
52
|
+
if (exp <= now)
|
|
53
|
+
live.delete(id);
|
|
54
|
+
if (live.size >= this.max)
|
|
55
|
+
return null;
|
|
56
|
+
const id = ++this.seq;
|
|
57
|
+
live.set(id, until);
|
|
58
|
+
this.held.set(key, live);
|
|
59
|
+
return () => {
|
|
60
|
+
live.delete(id);
|
|
61
|
+
if (live.size === 0 && this.held.get(key) === live)
|
|
62
|
+
this.held.delete(key);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const waiters = new Slots(MAX_WAITERS_PER_SOURCE);
|
|
67
|
+
const inlineRuns = new Slots(MAX_INLINE_RUNS);
|
|
68
|
+
/**
|
|
69
|
+
* A slot for one inline run until its lease (`until`): a source waiter slot AND one of the
|
|
70
|
+
* isolate's `MAX_INLINE_RUNS`. Both lapse at the lease even if the run is cancelled.
|
|
71
|
+
*/
|
|
72
|
+
export function inlineSlot(sourceId, until) {
|
|
73
|
+
const run = inlineRuns.take("isolate", until);
|
|
74
|
+
if (!run)
|
|
75
|
+
return null;
|
|
76
|
+
const waiter = waiters.take(sourceId, until);
|
|
77
|
+
if (!waiter) {
|
|
78
|
+
run();
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
return () => {
|
|
82
|
+
run();
|
|
83
|
+
waiter();
|
|
84
|
+
};
|
|
85
|
+
}
|
|
23
86
|
/** `Prefer: wait=N` (RFC 7240, one of possibly several comma-separated preferences) → seconds,
|
|
24
87
|
* capped at 90; absent or malformed ⇒ null (no wait). */
|
|
25
88
|
export function preferredWait(prefer) {
|
|
@@ -27,16 +90,18 @@ export function preferredWait(prefer) {
|
|
|
27
90
|
return m ? Math.min(Number(m[1]), MAX_WAIT_SECONDS) : null;
|
|
28
91
|
}
|
|
29
92
|
/** Where the claim is: `stopped` once the ledger is `processed` / `failed`; `decided` once a
|
|
30
|
-
* decision row exists (any status, a pending review included)
|
|
31
|
-
*
|
|
93
|
+
* decision row exists (any status, a pending review included) — but not a row that records a
|
|
94
|
+
* FAILURE (`invalid_facts`, a content refusal): that claim is about to read `failed`, never
|
|
95
|
+
* `processed`, so the settle grace below is not its to take. Untraced: a waiter repeats this one
|
|
96
|
+
* read every 0.25–2 s by design, which Sentry's N+1 detector would flag on every sync submit. */
|
|
32
97
|
async function progress(db, claimId) {
|
|
33
98
|
const [row] = await Sentry.suppressTracing(() => db
|
|
34
|
-
.select({ status: claimIngests.status,
|
|
99
|
+
.select({ status: claimIngests.status, decision: decisions.status })
|
|
35
100
|
.from(claimIngests)
|
|
36
101
|
.leftJoin(decisions, eq(decisions.claimId, claimIngests.claimId))
|
|
37
102
|
.where(eq(claimIngests.claimId, claimId)));
|
|
38
103
|
return {
|
|
39
|
-
decided: !!row && row.
|
|
104
|
+
decided: !!row && row.decision !== null && !decisionFailure(row.decision),
|
|
40
105
|
stopped: !!row && (row.status === "processed" || row.status === "failed"),
|
|
41
106
|
};
|
|
42
107
|
}
|
|
@@ -50,10 +115,10 @@ export async function awaitLanding(db, sourceId, claimId, seconds) {
|
|
|
50
115
|
return true;
|
|
51
116
|
if (seconds <= 0)
|
|
52
117
|
return first.decided;
|
|
53
|
-
|
|
54
|
-
|
|
118
|
+
// Held no longer than the wait itself plus a last poll's margin, however the wait ends.
|
|
119
|
+
const release = waiters.take(sourceId, Date.now() + seconds * 1000 + MAX_POLL_MS);
|
|
120
|
+
if (!release)
|
|
55
121
|
return false;
|
|
56
|
-
waiters.set(sourceId, inFlight + 1);
|
|
57
122
|
try {
|
|
58
123
|
let deadline = Date.now() + seconds * 1000;
|
|
59
124
|
let decided = first.decided;
|
|
@@ -75,11 +140,7 @@ export async function awaitLanding(db, sourceId, claimId, seconds) {
|
|
|
75
140
|
return decided;
|
|
76
141
|
}
|
|
77
142
|
finally {
|
|
78
|
-
|
|
79
|
-
if (n > 0)
|
|
80
|
-
waiters.set(sourceId, n);
|
|
81
|
-
else
|
|
82
|
-
waiters.delete(sourceId);
|
|
143
|
+
release();
|
|
83
144
|
}
|
|
84
145
|
}
|
|
85
146
|
//# sourceMappingURL=wait.js.map
|