@ixo/decision-oracle 0.2.16 → 0.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +2 -1
  2. package/dist/config.d.ts +7 -0
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +6 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/cron/collection.d.ts +16 -3
  7. package/dist/cron/collection.d.ts.map +1 -1
  8. package/dist/cron/collection.js +22 -12
  9. package/dist/cron/collection.js.map +1 -1
  10. package/dist/cron/feed.d.ts +49 -0
  11. package/dist/cron/feed.d.ts.map +1 -0
  12. package/dist/cron/feed.js +159 -0
  13. package/dist/cron/feed.js.map +1 -0
  14. package/dist/cron/scan.d.ts.map +1 -1
  15. package/dist/cron/scan.js +21 -1
  16. package/dist/cron/scan.js.map +1 -1
  17. package/dist/db/schema.d.ts +51 -0
  18. package/dist/db/schema.d.ts.map +1 -1
  19. package/dist/db/schema.js +10 -0
  20. package/dist/db/schema.js.map +1 -1
  21. package/dist/env.d.ts +1 -0
  22. package/dist/env.d.ts.map +1 -1
  23. package/dist/lib/facts/stock/ai-check.d.ts +10 -1
  24. package/dist/lib/facts/stock/ai-check.d.ts.map +1 -1
  25. package/dist/lib/facts/stock/ai-check.js +12 -4
  26. package/dist/lib/facts/stock/ai-check.js.map +1 -1
  27. package/dist/lib/facts/stock/ai-provider.d.ts.map +1 -1
  28. package/dist/lib/facts/stock/ai-provider.js +2 -3
  29. package/dist/lib/facts/stock/ai-provider.js.map +1 -1
  30. package/dist/lib/ixo/blocksync/index.d.ts +12 -2
  31. package/dist/lib/ixo/blocksync/index.d.ts.map +1 -1
  32. package/dist/lib/ixo/blocksync/index.js +17 -2
  33. package/dist/lib/ixo/blocksync/index.js.map +1 -1
  34. package/dist/lib/ixo/blocksync/queries.d.ts +1 -0
  35. package/dist/lib/ixo/blocksync/queries.d.ts.map +1 -1
  36. package/dist/lib/ixo/blocksync/queries.js +16 -0
  37. package/dist/lib/ixo/blocksync/queries.js.map +1 -1
  38. package/dist/lib/ixo/blocksync/types.d.ts +8 -0
  39. package/dist/lib/ixo/blocksync/types.d.ts.map +1 -1
  40. package/dist/lib/ixo/blocksync/types.js +2 -0
  41. package/dist/lib/ixo/blocksync/types.js.map +1 -1
  42. package/dist/lib/openhands/routes.d.ts +6 -5
  43. package/dist/lib/openhands/routes.d.ts.map +1 -1
  44. package/dist/lib/openhands/routes.js +26 -13
  45. package/dist/lib/openhands/routes.js.map +1 -1
  46. package/dist/lib/openhands/store.d.ts +12 -1
  47. package/dist/lib/openhands/store.d.ts.map +1 -1
  48. package/dist/lib/openhands/store.js +20 -1
  49. package/dist/lib/openhands/store.js.map +1 -1
  50. package/docs/api.md +23 -8
  51. package/docs/guide.md +13 -1
  52. package/migrations/0027_cron_state.sql +4 -0
  53. package/migrations/meta/0027_snapshot.json +3007 -0
  54. package/migrations/meta/_journal.json +7 -0
  55. package/package.json +1 -1
  56. package/templates/project/.dev.vars.example +1 -0
  57. package/templates/project/wrangler.jsonc +4 -0
package/README.md CHANGED
@@ -502,6 +502,7 @@ Two places, and the split is the rule: **public config in `wrangler.jsonc` `vars
502
502
  | `AI_GATEWAY_ID` | the AI Gateway the `cloudflare` provider routes through; its per-call USD lands in the `ai_calls` table within ~5 minutes |
503
503
  | `AI_AUDIO_VIDEO` | optional, default off: audio/video attachments are sent to the model only when on — **OpenRouter only** (the worker refuses to start otherwise); off, they reach the model as a "content not sent" descriptor |
504
504
  | `AI_IMAGE_DETAIL` | optional: `low` / `high` / `auto`, default `high` — the detail images are sent to the model at. `high` is what lets it see a photographed screen or a generated image; it costs more image tokens per check |
505
+ | `AI_REASONING_EFFORT` | optional: `low` / `medium` / `high`, default `low` — the judge's reasoning effort on every AI call. Higher thinks more: slower and more output tokens |
505
506
  | `C2PA_IMAGE_CHECK` | the image-provenance gate — a verified AI-generated manifest fails an AI check outright |
506
507
  | `EVAL_ENGINE_HOSTNAME` | optional override of the network's engine host (a local engine, a tunnel) |
507
508
  | `EVALUATION_DENOM`, `EVALUATION_MIN_AMOUNT` | the per-network evaluation fee: when set (both or neither) they replace `pricing.evaluation` at register and on `/v1/info`. **Required on mainnet** (the worker refuses to start without them) — real USDC there; the template sets a `uixo` stand-in on devnet/testnet |
@@ -781,6 +782,6 @@ symlinks are not packed). CI diffs them — change one, copy it to the other.
781
782
 
782
783
  ## Status
783
784
 
784
- Published on npm: `@ixo/decision-oracle` 0.2.16 and `@ixo/decision-oracle-client` 0.1.1.
785
+ Published on npm: `@ixo/decision-oracle` 0.2.18 and `@ixo/decision-oracle-client` 0.1.1.
785
786
 
786
787
  Apache License 2.0: `LICENSE` at the repo root and in each package.
package/dist/config.d.ts CHANGED
@@ -55,6 +55,11 @@ declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
55
55
  cloudflare: "cloudflare";
56
56
  openrouter: "openrouter";
57
57
  }>>;
58
+ AI_REASONING_EFFORT: z.ZodDefault<z.ZodEnum<{
59
+ high: "high";
60
+ low: "low";
61
+ medium: "medium";
62
+ }>>;
58
63
  AI_GATEWAY_ID: z.ZodOptional<z.ZodString>;
59
64
  AI_AUDIO_VIDEO: z.ZodDefault<z.ZodCodec<z.ZodString, z.ZodBoolean>>;
60
65
  AI_CHECK_MIN_CONFIDENCE: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
@@ -114,6 +119,7 @@ declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
114
119
  EVALUATION_MIN_AMOUNT?: string | undefined;
115
120
  AI_CHECK_MODEL: string;
116
121
  AI_PROVIDER: "cloudflare" | "openrouter";
122
+ AI_REASONING_EFFORT: "high" | "low" | "medium";
117
123
  AI_GATEWAY_ID?: string | undefined;
118
124
  AI_AUDIO_VIDEO: boolean;
119
125
  AI_CHECK_MIN_CONFIDENCE: number;
@@ -180,6 +186,7 @@ declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
180
186
  EVALUATION_MIN_AMOUNT?: string | undefined;
181
187
  AI_CHECK_MODEL: string;
182
188
  AI_PROVIDER: "cloudflare" | "openrouter";
189
+ AI_REASONING_EFFORT: "high" | "low" | "medium";
183
190
  AI_GATEWAY_ID?: string | undefined;
184
191
  AI_AUDIO_VIDEO: boolean;
185
192
  AI_CHECK_MIN_CONFIDENCE: number;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwZd,CAAC;AAIL,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAKlD;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAGlC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;IAFzB,YACE,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,MAAM,EAAE,EAIxB;CACF;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAejD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,EAAE,CAO1D;AAED,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,OAA8C,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASvC,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8Zd,CAAC;AAIL,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAKlD;;;;GAIG;AACH,qBAAa,WAAY,SAAQ,KAAK;IAGlC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;IAFzB,YACE,OAAO,EAAE,MAAM,EACN,IAAI,EAAE,MAAM,EAAE,EAIxB;CACF;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAejD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,MAAM,EAAE,CAO1D;AAED,eAAO,MAAM,YAAY,WAAY,MAAM,KAAG,OAA8C,CAAC"}
package/dist/config.js CHANGED
@@ -134,6 +134,12 @@ const ConfigSchema = z
134
134
  * fact needs none of them.
135
135
  */
136
136
  AI_PROVIDER: z.enum(["cloudflare", "openrouter"]).default("cloudflare"),
137
+ /**
138
+ * The judge's reasoning effort, sent on every AI call of either provider. "low": a little
139
+ * thinking beats none for rule-by-rule judgment, and "none" measurably costs quality. "medium"
140
+ * / "high" think more — slower, more output tokens: measure latency and cost before raising it.
141
+ */
142
+ AI_REASONING_EFFORT: z.enum(["low", "medium", "high"]).default("low"),
137
143
  /** The AI Gateway the `cloudflare` provider routes through — its name in the dashboard. */
138
144
  AI_GATEWAY_ID: z.string().min(1).optional(),
139
145
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Processing ONE watched collection per cron tick (README "How a claim flows" step 2):
3
3
  *
4
- * fetchNewClaims → filterUnseen → startInstances → advanceCursor → stampScanned
4
+ * fetchNewClaims → filterUnseen → startInstances → advanceCursor → stampScanned (rotation only)
5
5
  *
6
6
  * The cron only DISCOVERS claims and STARTS workflow instances — the workflow owns its own
7
7
  * `claim_ingests` row for its whole lifecycle (see workflows/claim-ingest.ts), so there is no
@@ -27,7 +27,7 @@
27
27
  */
28
28
  import type { Database } from "../db/client.js";
29
29
  import type { OracleEnv } from "../env.js";
30
- import { type BlocksyncDeps } from "../lib/ixo/blocksync/index.js";
30
+ import { type BlocksyncDeps, type ScannedClaim } from "../lib/ixo/blocksync/index.js";
31
31
  import type { Logger } from "../lib/logger.js";
32
32
  import type { Metrics } from "../lib/metrics.js";
33
33
  /**
@@ -42,9 +42,22 @@ export interface CronCtx {
42
42
  logger: Logger;
43
43
  metrics: Metrics;
44
44
  }
45
- /** Discover new claims in one collection and start their ingest workflows. Returns the count. */
45
+ /**
46
+ * Discover new claims in one collection and start their ingest workflows. Returns the count.
47
+ * `stamp` is the rotation's alone: a webhook or nudge scan that stamped `lastScannedAt` would send
48
+ * the collection to the back of the rotation exactly when a claim is about to land (an early scan
49
+ * finds nothing because Blocksync has not indexed it yet).
50
+ */
46
51
  export declare function processCollection(ctx: CronCtx, collection: {
47
52
  collectionId: string;
48
53
  cursor: string | null;
54
+ }, { stamp }?: {
55
+ stamp?: boolean;
49
56
  }): Promise<number>;
57
+ /** Drop claims that already have a ledger row — their workflow has already started (or finished). */
58
+ export declare function filterUnseen<T extends ScannedClaim>(db: Database, claims: T[]): Promise<T[]>;
59
+ /** One createBatch call for the page (idempotent — existing instance ids are skipped). */
60
+ export declare function startInstances(ctx: CronCtx, collectionId: string, claims: ScannedClaim[]): Promise<void>;
61
+ /** Forward-only, in SQL: a slower writer (a tick, the feed, a webhook) never rewinds a faster one. */
62
+ export declare function moveCursor(db: Database, collectionId: string, to: string): Promise<void>;
50
63
  //# sourceMappingURL=collection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/cron/collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,KAAK,aAAa,EAAqC,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;GAGG;AACH,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,QAAQ,CAAC;IACb,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,iGAAiG;AACjG,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC1D,OAAO,CAAC,MAAM,CAAC,CAgBjB"}
1
+ {"version":3,"file":"collection.d.ts","sourceRoot":"","sources":["../../src/cron/collection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,KAAK,aAAa,EAAkB,KAAK,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;GAGG;AACH,eAAO,MAAM,UAAU,MAAM,CAAC;AAE9B,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,QAAQ,CAAC;IACb,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC3D,EAAE,KAAa,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,qGAAqG;AACrG,wBAAsB,YAAY,CAAC,CAAC,SAAS,YAAY,EACvD,EAAE,EAAE,QAAQ,EACZ,MAAM,EAAE,CAAC,EAAE,GACV,OAAO,CAAC,CAAC,EAAE,CAAC,CAYd;AAED,0FAA0F;AAC1F,wBAAsB,cAAc,CAClC,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,YAAY,EAAE,GACrB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAwBD,sGAAsG;AACtG,wBAAsB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9F"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Processing ONE watched collection per cron tick (README "How a claim flows" step 2):
3
3
  *
4
- * fetchNewClaims → filterUnseen → startInstances → advanceCursor → stampScanned
4
+ * fetchNewClaims → filterUnseen → startInstances → advanceCursor → stampScanned (rotation only)
5
5
  *
6
6
  * The cron only DISCOVERS claims and STARTS workflow instances — the workflow owns its own
7
7
  * `claim_ingests` row for its whole lifecycle (see workflows/claim-ingest.ts), so there is no
@@ -35,8 +35,13 @@ import { toTraceparent } from "../lib/tracing.js";
35
35
  * bound parameters per statement (100), which `filterUnseen`'s `IN (…)` spends one per claim.
36
36
  */
37
37
  export const SCAN_LIMIT = 100;
38
- /** Discover new claims in one collection and start their ingest workflows. Returns the count. */
39
- export async function processCollection(ctx, collection) {
38
+ /**
39
+ * Discover new claims in one collection and start their ingest workflows. Returns the count.
40
+ * `stamp` is the rotation's alone: a webhook or nudge scan that stamped `lastScannedAt` would send
41
+ * the collection to the back of the rotation exactly when a claim is about to land (an early scan
42
+ * finds nothing because Blocksync has not indexed it yet).
43
+ */
44
+ export async function processCollection(ctx, collection, { stamp = false } = {}) {
40
45
  const { collectionId, cursor } = collection;
41
46
  try {
42
47
  const claims = await getClaimsSince(ctx.deps, collectionId, cursor, SCAN_LIMIT);
@@ -49,13 +54,14 @@ export async function processCollection(ctx, collection) {
49
54
  return unseen.length;
50
55
  }
51
56
  finally {
52
- // Rotation clock: stamped on every visit — found claims, found nothing, or failed — so a busy
53
- // or broken collection rotates to the back of the queue instead of starving the rest.
54
- await stampScanned(ctx.db, collectionId).catch(() => { });
57
+ // Rotation clock: stamped on every rotation visit — found claims, found nothing, or failed — so
58
+ // a busy or broken collection rotates to the back of the queue instead of starving the rest.
59
+ if (stamp)
60
+ await stampScanned(ctx.db, collectionId).catch(() => { });
55
61
  }
56
62
  }
57
63
  /** Drop claims that already have a ledger row — their workflow has already started (or finished). */
58
- async function filterUnseen(db, claims) {
64
+ export async function filterUnseen(db, claims) {
59
65
  const seen = await db
60
66
  .select({ claimId: claimIngests.claimId })
61
67
  .from(claimIngests)
@@ -64,7 +70,7 @@ async function filterUnseen(db, claims) {
64
70
  return claims.filter((c) => !seenIds.has(c.claimId));
65
71
  }
66
72
  /** One createBatch call for the page (idempotent — existing instance ids are skipped). */
67
- async function startInstances(ctx, collectionId, claims) {
73
+ export async function startInstances(ctx, collectionId, claims) {
68
74
  const batch = await Promise.all(claims.map(async (c) => ({
69
75
  id: await instanceIdFor(c.claimId),
70
76
  // The tick's trace, so the claim's run logs under the scan that found it.
@@ -97,10 +103,7 @@ async function advanceCursor(ctx, collectionId, cursor, claims, started) {
97
103
  // Newest non-NULL submissionDate (NULLs sort last in ASC and must not park the cursor).
98
104
  const advanceTo = claims.filter((c) => c.submissionDate).at(-1)?.submissionDate ?? null;
99
105
  if (advanceTo && advanceTo !== cursor) {
100
- await ctx.db
101
- .update(watchedCollections)
102
- .set({ cursor: advanceTo })
103
- .where(and(eq(watchedCollections.collectionId, collectionId), or(isNull(watchedCollections.cursor), lt(watchedCollections.cursor, advanceTo))));
106
+ await moveCursor(ctx.db, collectionId, advanceTo);
104
107
  return;
105
108
  }
106
109
  // Full page, nothing new, watermark can't move: a same-timestamp tie wider than SCAN_LIMIT.
@@ -108,6 +111,13 @@ async function advanceCursor(ctx, collectionId, cursor, claims, started) {
108
111
  ctx.logger.warn("cron.cursor.stuck", { collectionId, cursor, tie: claims.length });
109
112
  }
110
113
  }
114
+ /** Forward-only, in SQL: a slower writer (a tick, the feed, a webhook) never rewinds a faster one. */
115
+ export async function moveCursor(db, collectionId, to) {
116
+ await db
117
+ .update(watchedCollections)
118
+ .set({ cursor: to })
119
+ .where(and(eq(watchedCollections.collectionId, collectionId), or(isNull(watchedCollections.cursor), lt(watchedCollections.cursor, to))));
120
+ }
111
121
  /** Stamp the rotation clock (see schema `lastScannedAt`). */
112
122
  async function stampScanned(db, collectionId) {
113
123
  await db
@@ -1 +1 @@
1
- {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/cron/collection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/cron/collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * The global claims feed (oracle speed plan D4): ONE Blocksync read per minute for every claim on
3
+ * the chain since the last one, matched to this oracle's active watched collections in D1 —
4
+ * discovery cost grows with new claims, not with watched collections (the rotation in scan.ts is
5
+ * one read per collection per visit).
6
+ *
7
+ * read position → page the feed (≤ FEED_PAGES_PER_TICK) → keep watched claims → filterUnseen →
8
+ * startInstances → move the position (and the collections' own cursors)
9
+ *
10
+ * The same rules as the per-collection lane (collection.ts), on a chain-wide window:
11
+ * - A 2-minute OVERLAP: Blocksync writes each block in one ordered transaction, but a claim
12
+ * indexed a moment after the read that passed its timestamp is re-read on the next tick;
13
+ * `filterUnseen` + idempotent instance ids make re-reading free.
14
+ * - The position moves only AFTER the page's instances started, so a failure re-reads the page.
15
+ * - A tick that stops at its page cap keeps Blocksync's keyset cursor (`after`), so the next tick
16
+ * continues mid-window instead of re-reading the overlap of a burst.
17
+ * - First run: the position starts at now − overlap. No backfill — a collection's own first sweep
18
+ * (cursor NULL, processCollection) reads its history.
19
+ *
20
+ * The daily replay (`runClaimsReplay`, the hour tier) is the reconcile for a claim indexed later
21
+ * than the overlap: it re-reads the feed 24 h behind, one hourly slice at a time, so every claim is
22
+ * read a second time a day after it was submitted.
23
+ *
24
+ * Per-collection cursors stay consistent: the feed moves a collection's cursor (forward-only) only
25
+ * when that cursor already lies inside the window the feed has read — so everything between it and
26
+ * the new value was seen. A NULL cursor is never moved: the first sweep still owns that history.
27
+ */
28
+ import type { Database } from "../db/client.js";
29
+ import { type CronCtx } from "./collection.js";
30
+ export declare const FEED_STATE = "claims-feed";
31
+ export declare const REPLAY_STATE = "claims-feed-replay";
32
+ export declare const FEED_OVERLAP_MS: number;
33
+ export declare const REPLAY_LAG_MS: number;
34
+ export declare const FEED_PAGES_PER_TICK = 10;
35
+ export declare const REPLAY_PAGES_PER_TICK = 50;
36
+ /** `at`: the last submissionDate fully started. `after`: the keyset cursor of a capped pass. */
37
+ export interface FeedPosition {
38
+ at: string;
39
+ after?: string;
40
+ }
41
+ export declare function readPosition(db: Database, name: string): Promise<FeedPosition | null>;
42
+ /** The minute job. Returns the number of instances started. */
43
+ export declare function runClaimsFeed(ctx: CronCtx, now?: Date): Promise<number>;
44
+ /**
45
+ * The replay (hour tier): the slice of the feed between its last end and now − 24 h, so each
46
+ * claim is read once more a day later. It never reaches before the feed's own first run.
47
+ */
48
+ export declare function runClaimsReplay(ctx: CronCtx, now?: Date): Promise<number>;
49
+ //# sourceMappingURL=feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../src/cron/feed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAE,KAAK,OAAO,EAAwD,MAAM,cAAc,CAAC;AAElG,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,eAAO,MAAM,eAAe,QAAa,CAAC;AAC1C,eAAO,MAAM,aAAa,QAAmB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAMxC,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,wBAAsB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAK3F;AAoBD,+DAA+D;AAC/D,wBAAsB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBnF;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,OAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAYrF"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * The global claims feed (oracle speed plan D4): ONE Blocksync read per minute for every claim on
3
+ * the chain since the last one, matched to this oracle's active watched collections in D1 —
4
+ * discovery cost grows with new claims, not with watched collections (the rotation in scan.ts is
5
+ * one read per collection per visit).
6
+ *
7
+ * read position → page the feed (≤ FEED_PAGES_PER_TICK) → keep watched claims → filterUnseen →
8
+ * startInstances → move the position (and the collections' own cursors)
9
+ *
10
+ * The same rules as the per-collection lane (collection.ts), on a chain-wide window:
11
+ * - A 2-minute OVERLAP: Blocksync writes each block in one ordered transaction, but a claim
12
+ * indexed a moment after the read that passed its timestamp is re-read on the next tick;
13
+ * `filterUnseen` + idempotent instance ids make re-reading free.
14
+ * - The position moves only AFTER the page's instances started, so a failure re-reads the page.
15
+ * - A tick that stops at its page cap keeps Blocksync's keyset cursor (`after`), so the next tick
16
+ * continues mid-window instead of re-reading the overlap of a burst.
17
+ * - First run: the position starts at now − overlap. No backfill — a collection's own first sweep
18
+ * (cursor NULL, processCollection) reads its history.
19
+ *
20
+ * The daily replay (`runClaimsReplay`, the hour tier) is the reconcile for a claim indexed later
21
+ * than the overlap: it re-reads the feed 24 h behind, one hourly slice at a time, so every claim is
22
+ * read a second time a day after it was submitted.
23
+ *
24
+ * Per-collection cursors stay consistent: the feed moves a collection's cursor (forward-only) only
25
+ * when that cursor already lies inside the window the feed has read — so everything between it and
26
+ * the new value was seen. A NULL cursor is never moved: the first sweep still owns that history.
27
+ */
28
+ import { and, eq, inArray } from "drizzle-orm";
29
+ import { cronState, watchedCollections } from "../db/schema.js";
30
+ import { getClaimsFeedPage } from "../lib/ixo/blocksync/index.js";
31
+ import { filterUnseen, moveCursor, SCAN_LIMIT, startInstances } from "./collection.js";
32
+ export const FEED_STATE = "claims-feed";
33
+ export const REPLAY_STATE = "claims-feed-replay";
34
+ export const FEED_OVERLAP_MS = 2 * 60_000;
35
+ export const REPLAY_LAG_MS = 24 * 60 * 60_000;
36
+ export const FEED_PAGES_PER_TICK = 10;
37
+ export const REPLAY_PAGES_PER_TICK = 50;
38
+ /** Collection ids per `IN (…)` — under D1's 100 bound parameters, with room for the status. */
39
+ const IN_CHUNK = 90;
40
+ /** The feed's open end: any claim the chain has, whatever a block's clock said. */
41
+ const FEED_HORIZON_MS = 24 * 60 * 60_000;
42
+ const iso = (ms) => new Date(ms).toISOString();
43
+ export async function readPosition(db, name) {
44
+ const row = await db.query.cronState.findFirst({ where: eq(cronState.name, name) });
45
+ if (!row)
46
+ return null;
47
+ const value = JSON.parse(row.value);
48
+ return typeof value.at === "string" ? value : null;
49
+ }
50
+ async function writePosition(db, name, position) {
51
+ const value = JSON.stringify(position);
52
+ await db
53
+ .insert(cronState)
54
+ .values({ name, value })
55
+ .onConflictDoUpdate({ target: cronState.name, set: { value } });
56
+ }
57
+ /** No active chain-lane collection ⇒ nothing to match, so no read at all. */
58
+ async function anyActive(db) {
59
+ const row = await db
60
+ .select({ id: watchedCollections.collectionId })
61
+ .from(watchedCollections)
62
+ .where(eq(watchedCollections.status, "active"))
63
+ .limit(1);
64
+ return row.length > 0;
65
+ }
66
+ /** The minute job. Returns the number of instances started. */
67
+ export async function runClaimsFeed(ctx, now = new Date()) {
68
+ if (!(await anyActive(ctx.db)))
69
+ return 0;
70
+ const stored = await readPosition(ctx.db, FEED_STATE);
71
+ if (!stored) {
72
+ const start = { at: iso(now.getTime() - FEED_OVERLAP_MS) };
73
+ await writePosition(ctx.db, REPLAY_STATE, start);
74
+ await writePosition(ctx.db, FEED_STATE, start);
75
+ ctx.logger.info("cron.feed.initialised", { at: start.at });
76
+ return 0;
77
+ }
78
+ const since = stored.after ? stored.at : iso(Date.parse(stored.at) - FEED_OVERLAP_MS);
79
+ return follow(ctx, FEED_STATE, {
80
+ window: { since, until: iso(now.getTime() + FEED_HORIZON_MS) },
81
+ after: stored.after ?? null,
82
+ pages: FEED_PAGES_PER_TICK,
83
+ });
84
+ }
85
+ /**
86
+ * The replay (hour tier): the slice of the feed between its last end and now − 24 h, so each
87
+ * claim is read once more a day later. It never reaches before the feed's own first run.
88
+ */
89
+ export async function runClaimsReplay(ctx, now = new Date()) {
90
+ if (!(await anyActive(ctx.db)))
91
+ return 0;
92
+ const stored = await readPosition(ctx.db, REPLAY_STATE);
93
+ const until = iso(now.getTime() - REPLAY_LAG_MS);
94
+ if (!stored || (!stored.after && Date.parse(stored.at) >= Date.parse(until)))
95
+ return 0;
96
+ return follow(ctx, REPLAY_STATE, {
97
+ window: { since: stored.at, until },
98
+ after: stored.after ?? null,
99
+ pages: REPLAY_PAGES_PER_TICK,
100
+ // A finished slice ends at its bound, so the next one starts exactly there.
101
+ end: until,
102
+ });
103
+ }
104
+ async function follow(ctx, name, pass) {
105
+ const { window } = pass;
106
+ let after = pass.after;
107
+ let at = null;
108
+ let started = 0;
109
+ for (let page = 0; page < pass.pages; page++) {
110
+ const { claims, next } = await getClaimsFeedPage(ctx.deps, window, after, SCAN_LIMIT);
111
+ started += await startWatched(ctx, claims, window.since);
112
+ at = claims.filter((c) => c.submissionDate).at(-1)?.submissionDate ?? at;
113
+ if (!next) {
114
+ const end = pass.end ?? at;
115
+ if (end)
116
+ await writePosition(ctx.db, name, { at: end });
117
+ return started;
118
+ }
119
+ after = next;
120
+ await writePosition(ctx.db, name, { at: at ?? window.since, after });
121
+ }
122
+ ctx.logger.warn("cron.feed.capped", { name, pages: pass.pages, at });
123
+ return started;
124
+ }
125
+ /** Start this page's claims that belong to an active watched collection. */
126
+ async function startWatched(ctx, claims, coveredFrom) {
127
+ if (claims.length === 0)
128
+ return 0;
129
+ const ids = [...new Set(claims.map((c) => c.collectionId))];
130
+ const cursors = new Map();
131
+ for (let i = 0; i < ids.length; i += IN_CHUNK) {
132
+ const rows = await ctx.db
133
+ .select({ id: watchedCollections.collectionId, cursor: watchedCollections.cursor })
134
+ .from(watchedCollections)
135
+ .where(and(eq(watchedCollections.status, "active"), inArray(watchedCollections.collectionId, ids.slice(i, i + IN_CHUNK))));
136
+ for (const row of rows)
137
+ cursors.set(row.id, row.cursor);
138
+ }
139
+ const mine = claims.filter((c) => cursors.has(c.collectionId));
140
+ if (mine.length === 0)
141
+ return 0;
142
+ const unseen = await filterUnseen(ctx.db, mine);
143
+ const byCollection = new Map();
144
+ for (const c of unseen) {
145
+ byCollection.set(c.collectionId, [...(byCollection.get(c.collectionId) ?? []), c]);
146
+ }
147
+ for (const [collectionId, group] of byCollection) {
148
+ await startInstances(ctx, collectionId, group);
149
+ }
150
+ for (const [collectionId, cursor] of cursors) {
151
+ if (cursor === null || Date.parse(cursor) < Date.parse(coveredFrom))
152
+ continue;
153
+ const last = mine.filter((c) => c.collectionId === collectionId && c.submissionDate).at(-1);
154
+ if (last?.submissionDate)
155
+ await moveCursor(ctx.db, collectionId, last.submissionDate);
156
+ }
157
+ return unseen.length;
158
+ }
159
+ //# sourceMappingURL=feed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.js","sourceRoot":"","sources":["../../src/cron/feed.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/cron/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAUxC,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,cAAc,CAAC;AAO/D;;;;GAIG;AACH,eAAO,MAAM,UAAU;aACrB,WAAW,EAAE,QAAQ;aACrB,aAAa,EAAE,MAAM;aACrB,WAAW,EAAE,MAAM;CACX,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAepE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAgBnD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7E"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/cron/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAUxC,OAAO,EAAE,KAAK,OAAO,EAAqB,MAAM,cAAc,CAAC;AAQ/D;;;;GAIG;AACH,eAAO,MAAM,UAAU;aACrB,WAAW,EAAE,QAAQ;aACrB,aAAa,EAAE,MAAM;aACrB,WAAW,EAAE,MAAM;CACX,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAepE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAgBnD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB7E"}
package/dist/cron/scan.js CHANGED
@@ -28,6 +28,7 @@ import { runApiLaneTick } from "./api-lane.js";
28
28
  import { chainBacklog } from "./backlog.js";
29
29
  import { resumeEngineCredits } from "./billing.js";
30
30
  import { processCollection } from "./collection.js";
31
+ import { runClaimsFeed, runClaimsReplay } from "./feed.js";
31
32
  import { resumeAdminFunds } from "./funding.js";
32
33
  import { openhandsTick } from "./openhands.js";
33
34
  /** Collections processed concurrently within a tick. */
@@ -161,6 +162,15 @@ async function minute(ctx, env) {
161
162
  await openhandsTick(ctx, env, "minute");
162
163
  // Before the scan, whose failure is the one that escapes the tick; it never throws itself.
163
164
  await chainBacklog(ctx);
165
+ // The fast path (cron/feed.ts): one chain-wide read for every watched collection. Contained —
166
+ // the rotation below still discovers everything if the feed is down.
167
+ try {
168
+ await timeCronJob(metrics, "claims-feed", () => Sentry.withMonitor("oracle-claims-feed", () => runClaimsFeed(ctx), MONITOR));
169
+ }
170
+ catch (err) {
171
+ logger.error("cron.feed.failed", { detail: err instanceof Error ? err.message : String(err) });
172
+ reportError(err, { lane: "cron", step: "claims-feed" });
173
+ }
164
174
  await timeCronJob(metrics, "scan", () => Sentry.withMonitor("oracle-scan", () => scanDue(ctx, config), MONITOR));
165
175
  }
166
176
  async function five(ctx, env) {
@@ -183,6 +193,16 @@ async function five(ctx, env) {
183
193
  async function hour(ctx, env) {
184
194
  const { logger, metrics } = ctx;
185
195
  const config = loadConfig(env);
196
+ // The feed's reconcile: re-read the slice that turned 24 h old (cron/feed.ts).
197
+ try {
198
+ await timeCronJob(metrics, "claims-replay", () => runClaimsReplay(ctx));
199
+ }
200
+ catch (err) {
201
+ logger.error("cron.replay.failed", {
202
+ detail: err instanceof Error ? err.message : String(err),
203
+ });
204
+ reportError(err, { lane: "cron", step: "claims-replay" });
205
+ }
186
206
  // The chain review rooms follow their reviewer grants (lib/matrix/deliver.ts): hourly, whoever's
187
207
  // grant expired is kicked and a failed invite retried — a revoke kicks at once already.
188
208
  try {
@@ -225,7 +245,7 @@ async function scanDue(ctx, config) {
225
245
  let failed = 0;
226
246
  for (let i = 0; i < due.length; i += CHUNK_SIZE) {
227
247
  const chunk = due.slice(i, i + CHUNK_SIZE);
228
- const results = await Promise.allSettled(chunk.map((c) => processCollection(ctx, c)));
248
+ const results = await Promise.allSettled(chunk.map((c) => processCollection(ctx, c, { stamp: true })));
229
249
  for (const [j, result] of results.entries()) {
230
250
  if (result.status === "fulfilled") {
231
251
  started += result.value;
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/cron/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/cron/scan.ts"],"names":[],"mappings":"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"}