@secondlayer/subgraphs 4.0.3 → 4.0.5

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.
@@ -11,7 +11,7 @@
11
11
  "import type { ColumnType, PrintField } from \"../types.ts\";\n\n/**\n * Runtime validation of a decoded print payload against a source's declared\n * `prints` schema.\n *\n * Declaring `prints` is the opt-in that makes strictness safe: the developer\n * has stated the shape, so a mismatch is a real defect (a contract upgrade,\n * or a hand-written declaration that never matched — the bns-names class of\n * bug, where a handler read flat `data.name` while BNS-V2 emitted a nested\n * tuple, and every event silently decoded to null for a whole deploy).\n *\n * Failure mode is SKIP + LOG, never throw: throwing would fail the block, and\n * a poisoned block that can never advance is incompatible with the\n * checkpoint model. One bad event is dropped and counted; the rest of the\n * block commits.\n */\n\nconst COLUMN_TYPES = new Set<string>([\n\t\"text\",\n\t\"uint\",\n\t\"int\",\n\t\"principal\",\n\t\"boolean\",\n\t\"timestamp\",\n\t\"jsonb\",\n]);\n\nfunction isColumnType(field: PrintField): field is ColumnType {\n\treturn typeof field === \"string\" && COLUMN_TYPES.has(field);\n}\n\n/** Does a decoded value match one declared field? */\nfunction matchesField(field: PrintField, value: unknown): boolean {\n\tif (isColumnType(field)) {\n\t\tswitch (field) {\n\t\t\tcase \"uint\":\n\t\t\tcase \"int\":\n\t\t\t\treturn typeof value === \"bigint\" || typeof value === \"number\";\n\t\t\tcase \"boolean\":\n\t\t\t\treturn typeof value === \"boolean\";\n\t\t\tcase \"text\":\n\t\t\tcase \"principal\":\n\t\t\tcase \"timestamp\":\n\t\t\t\t// Buffers decode to strings; principals too. Accept any scalar the\n\t\t\t\t// decoder can render, but reject objects/arrays.\n\t\t\t\treturn (\n\t\t\t\t\ttypeof value === \"string\" ||\n\t\t\t\t\ttypeof value === \"number\" ||\n\t\t\t\t\ttypeof value === \"bigint\"\n\t\t\t\t);\n\t\t\tcase \"jsonb\":\n\t\t\t\t// Deliberately permissive: `jsonb` is the \"shape unknown\" escape.\n\t\t\t\treturn value !== undefined;\n\t\t}\n\t}\n\tif (typeof field !== \"object\" || field === null) return false;\n\tif (\"optional\" in field) {\n\t\treturn (\n\t\t\tvalue === undefined || value === null || matchesField(field.type, value)\n\t\t);\n\t}\n\tif (\"tuple\" in field) {\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn matchesTopic(field.tuple, value as Record<string, unknown>).ok;\n\t}\n\tif (\"list\" in field) {\n\t\treturn (\n\t\t\tArray.isArray(value) &&\n\t\t\tvalue.every((item) => matchesField(field.list, item))\n\t\t);\n\t}\n\treturn false;\n}\n\nexport type PrintValidationResult =\n\t| { ok: true }\n\t| { ok: false; reason: string };\n\n/** Validate a decoded payload object against one topic's declared fields. */\nexport function matchesTopic(\n\tdeclared: Record<string, PrintField>,\n\tdata: Record<string, unknown>,\n): PrintValidationResult {\n\tfor (const [name, field] of Object.entries(declared)) {\n\t\tconst present = name in data;\n\t\tconst optional =\n\t\t\ttypeof field === \"object\" && field !== null && \"optional\" in field;\n\t\tif (!present) {\n\t\t\tif (optional) continue;\n\t\t\treturn { ok: false, reason: `missing declared field \"${name}\"` };\n\t\t}\n\t\tif (!matchesField(field, data[name])) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `field \"${name}\" does not match its declared type (got ${describe(data[name])})`,\n\t\t\t};\n\t\t}\n\t}\n\treturn { ok: true };\n}\n\nfunction describe(value: unknown): string {\n\tif (value === null) return \"null\";\n\tif (Array.isArray(value)) return \"array\";\n\treturn typeof value;\n}\n\n/**\n * Validate one decoded print event against a source's `prints` declaration.\n * Returns `{ ok: true }` when no declaration covers this topic (undeclared\n * topics are not the developer's stated contract, so they pass through).\n */\nexport function validatePrintPayload(\n\tprints: Record<string, Record<string, PrintField>> | undefined,\n\ttopic: string,\n\tdata: Record<string, unknown>,\n): PrintValidationResult {\n\tif (!prints) return { ok: true };\n\tconst declared = prints[topic];\n\tif (!declared) return { ok: true };\n\treturn matchesTopic(declared, data);\n}\n",
12
12
  "import type { SubgraphFilter } from \"../types.ts\";\n\nexport interface MatchedTx {\n\ttx: TxRecord;\n\tevents: EventRecord[];\n\t/** Source object key — used for handler dispatch */\n\tsourceName: string;\n}\n\nexport type TxRecord = {\n\ttx_id: string;\n\ttype: string;\n\tsender: string;\n\tstatus: string;\n\t/** Position within the block — the runner sorts dispatch into chain order. */\n\ttx_index?: number;\n\tcontract_id?: string | null;\n\tfunction_name?: string | null;\n\tfunction_args?: unknown | null;\n\traw_result?: string | null;\n};\n\nexport type EventRecord = {\n\tid: string;\n\ttx_id: string;\n\ttype: string;\n\tevent_index: number;\n\tdata: unknown;\n};\n\n// ── Wildcard matching (shared with v1) ──────────────────────────────\n\nconst patternCache = new Map<string, RegExp>();\n\n/** Match a value against one pattern, or ANY pattern in a set. */\nfunction matchAny(value: string, pattern: string | readonly string[]): boolean {\n\treturn Array.isArray(pattern)\n\t\t? pattern.some((p) => matchPattern(value, p))\n\t\t: matchPattern(value, pattern as string);\n}\n\nfunction matchPattern(value: string, pattern: string): boolean {\n\tif (!pattern.includes(\"*\")) return value === pattern;\n\tlet re = patternCache.get(pattern);\n\tif (!re) {\n\t\tconst regex = pattern\n\t\t\t.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\")\n\t\t\t.replace(/\\*/g, \".*\");\n\t\tre = new RegExp(`^${regex}$`);\n\t\tpatternCache.set(pattern, re);\n\t}\n\treturn re.test(value);\n}\n\n// Trait → set of conforming contract IDs, resolved per block by the caller\n// (block-processor) from the contract registry. Kept as injected data so this\n// module stays pure/sync/DB-less.\nexport type TraitContracts = Map<string, ReadonlySet<string>>;\nconst EMPTY_SET: ReadonlySet<string> = new Set();\n\n/**\n * True when a filter's optional `trait` admits this contract: no trait → always\n * allowed; trait set → the contract must be in the resolved conforming set.\n */\n/** Addresses discovered per source name (factory sets), resolved by the\n * caller as-of the block being processed. */\nexport type FactoryContracts = ReadonlyMap<string, ReadonlySet<string>>;\n\n/**\n * A factory-scoped source matches only contracts its factory has revealed.\n * Same shape as {@link traitAllows}: the set is injected, so this module\n * stays pure and sync.\n */\nfunction factoryAllows(\n\tfilter: { factory?: { from: string; field: string } },\n\tcontractId: string | undefined | null,\n\tfactoryContracts: FactoryContracts,\n): boolean {\n\tif (!filter.factory) return true;\n\tif (!contractId) return false;\n\treturn (factoryContracts.get(filter.factory.from) ?? EMPTY_SET).has(\n\t\tcontractId,\n\t);\n}\n\n/** Read a dotted path off a decoded payload (`\"data.pool\"`). */\nexport function readPath(payload: unknown, path: string): unknown {\n\tlet cur: unknown = payload;\n\tfor (const key of path.split(\".\")) {\n\t\tif (cur === null || typeof cur !== \"object\") return undefined;\n\t\tcur = (cur as Record<string, unknown>)[key];\n\t}\n\treturn cur;\n}\n\nfunction traitAllows(\n\tfilter: SubgraphFilter,\n\tcontractId: string | undefined | null,\n\ttraitContracts: TraitContracts,\n): boolean {\n\tconst trait = (filter as { trait?: string }).trait;\n\tif (!trait) return true;\n\tif (!contractId) return false;\n\treturn (traitContracts.get(trait) ?? EMPTY_SET).has(contractId);\n}\n\n/** Extract the contract id from an asset identifier (`<contract>::<token>`). */\nfunction assetContract(assetId: string | undefined): string | undefined {\n\treturn assetId?.split(\"::\")[0];\n}\n\n// ── Per-filter-type matchers ────────────────────────────────────────\n\nfunction matchFilter(\n\tfilter: SubgraphFilter,\n\ttransactions: TxRecord[],\n\teventsByTx: Map<string, EventRecord[]>,\n\ttraitContracts: TraitContracts,\n\tfactoryContracts: FactoryContracts = new Map(),\n): { tx: TxRecord; events: EventRecord[] }[] {\n\tconst results: { tx: TxRecord; events: EventRecord[] }[] = [];\n\n\tswitch (filter.type) {\n\t\t// ── STX events ──\n\t\tcase \"stx_transfer\":\n\t\tcase \"stx_mint\":\n\t\tcase \"stx_burn\":\n\t\tcase \"stx_lock\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => e.type === eventType);\n\t\t\t\tif (matched.length === 0) continue;\n\n\t\t\t\t// Apply address filters\n\t\t\t\tconst filtered = matched.filter((e) => {\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"lockedAddress\" in filter && filter.lockedAddress) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!matchPattern(data.locked_address as string, filter.lockedAddress)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Amount filters\n\t\t\t\t\tif (\"minAmount\" in filter && filter.minAmount !== undefined) {\n\t\t\t\t\t\tconst amount = BigInt(\n\t\t\t\t\t\t\t(data.amount ?? data.locked_amount ?? \"0\") as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (amount < filter.minAmount) return false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t\"maxAmount\" in filter &&\n\t\t\t\t\t\t(filter as { maxAmount?: bigint }).maxAmount !== undefined\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst amount = BigInt((data.amount ?? \"0\") as string);\n\t\t\t\t\t\tif (amount > (filter as { maxAmount: bigint }).maxAmount)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (filtered.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: filtered });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── FT events ──\n\t\tcase \"ft_transfer\":\n\t\tcase \"ft_mint\":\n\t\tcase \"ft_burn\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== eventType) return false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\n\t\t\t\t\t// Asset identifier filter\n\t\t\t\t\tif (filter.assetIdentifier) {\n\t\t\t\t\t\tconst assetId = data.asset_identifier as string | undefined;\n\t\t\t\t\t\tif (!assetId || !matchPattern(assetId, filter.assetIdentifier))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Trait scope — the asset's contract must conform.\n\t\t\t\t\tif (\n\t\t\t\t\t\t!traitAllows(\n\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\tassetContract(data.asset_identifier as string | undefined),\n\t\t\t\t\t\t\ttraitContracts,\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t// Address filters\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Amount filter\n\t\t\t\t\tif (filter.minAmount !== undefined) {\n\t\t\t\t\t\tconst amount = BigInt((data.amount ?? \"0\") as string);\n\t\t\t\t\t\tif (amount < filter.minAmount) return false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── NFT events ──\n\t\tcase \"nft_transfer\":\n\t\tcase \"nft_mint\":\n\t\tcase \"nft_burn\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== eventType) return false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\n\t\t\t\t\tif (filter.assetIdentifier) {\n\t\t\t\t\t\tconst assetId = data.asset_identifier as string | undefined;\n\t\t\t\t\t\tif (!assetId || !matchPattern(assetId, filter.assetIdentifier))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t!traitAllows(\n\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\tassetContract(data.asset_identifier as string | undefined),\n\t\t\t\t\t\t\ttraitContracts,\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Contract call ──\n\t\tcase \"contract_call\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tif (tx.type !== \"contract_call\") continue;\n\n\t\t\t\t// Contract filter\n\t\t\t\tif (filter.contractId) {\n\t\t\t\t\tif (!tx.contract_id || !matchAny(tx.contract_id, filter.contractId))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Factory scope: only contracts this source's factory revealed.\n\t\t\t\tif (!factoryAllows(filter, tx.contract_id, factoryContracts)) continue;\n\t\t\t\t// Function filter\n\t\t\t\tif (filter.functionName) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!tx.function_name ||\n\t\t\t\t\t\t!matchPattern(tx.function_name, filter.functionName)\n\t\t\t\t\t)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Caller filter\n\t\t\t\tif (filter.caller) {\n\t\t\t\t\tif (!matchPattern(tx.sender, filter.caller)) continue;\n\t\t\t\t}\n\t\t\t\t// Trait scope — the called contract must conform.\n\t\t\t\tif (!traitAllows(filter, tx.contract_id, traitContracts)) continue;\n\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tresults.push({ tx, events: txEvents });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Contract deploy ──\n\t\tcase \"contract_deploy\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tif (tx.type !== \"smart_contract\") continue;\n\n\t\t\t\tif (filter.deployer) {\n\t\t\t\t\tif (!matchPattern(tx.sender, filter.deployer)) continue;\n\t\t\t\t}\n\t\t\t\tif (filter.contractName) {\n\t\t\t\t\tconst name = tx.contract_id?.split(\".\")[1] ?? \"\";\n\t\t\t\t\tif (!matchPattern(name, filter.contractName)) continue;\n\t\t\t\t}\n\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tresults.push({ tx, events: txEvents });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Print event ──\n\t\tcase \"print_event\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== \"smart_contract_event\" && e.type !== \"contract_event\")\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\t\t\t\t\tif (data.topic !== \"print\") return false;\n\n\t\t\t\t\t// Contract filter — events store the contract under either\n\t\t\t\t\t// `contract_identifier` (legacy smart_contract_event payload)\n\t\t\t\t\t// or `contract_id` (current contract_event payload). Mirror\n\t\t\t\t\t// the streams query which checks both shapes.\n\t\t\t\t\tconst printContractId =\n\t\t\t\t\t\t(data.contract_identifier as string | undefined) ??\n\t\t\t\t\t\t(data.contract_id as string | undefined);\n\t\t\t\t\tif (filter.contractId) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!printContractId ||\n\t\t\t\t\t\t\t!matchAny(printContractId, filter.contractId)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (!traitAllows(filter, printContractId, traitContracts))\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tif (!factoryAllows(filter, printContractId, factoryContracts))\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t// Topic filter — check the decoded Clarity value's topic field\n\t\t\t\t\t// At this stage data.value is still raw hex; topic filtering happens\n\t\t\t\t\t// after decode in the runner. For now, skip topic filtering here.\n\t\t\t\t\t// The runner will filter by topic after decoding.\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn results;\n}\n\n/**\n * Match named filters against a block's transactions and events.\n * Returns matches with sourceName = the object key from sources.\n */\nexport function matchSources(\n\tsources: Record<string, SubgraphFilter>,\n\ttransactions: TxRecord[],\n\tevents: EventRecord[],\n\ttraitContracts: TraitContracts = new Map(),\n\tfactoryContracts: FactoryContracts = new Map(),\n): MatchedTx[] {\n\t// Index events by txId\n\tconst eventsByTx = new Map<string, EventRecord[]>();\n\tfor (const event of events) {\n\t\tconst list = eventsByTx.get(event.tx_id) ?? [];\n\t\tlist.push(event);\n\t\teventsByTx.set(event.tx_id, list);\n\t}\n\n\tconst seen = new Set<string>();\n\tconst results: MatchedTx[] = [];\n\n\tfor (const [sourceName, filter] of Object.entries(sources)) {\n\t\tconst matches = matchFilter(\n\t\t\tfilter,\n\t\t\ttransactions,\n\t\t\teventsByTx,\n\t\t\ttraitContracts,\n\t\t\tfactoryContracts,\n\t\t);\n\t\tfor (const match of matches) {\n\t\t\tconst dedupeKey = `${match.tx.tx_id}:${sourceName}`;\n\t\t\tif (!seen.has(dedupeKey)) {\n\t\t\t\tseen.add(dedupeKey);\n\t\t\t\tresults.push({ ...match, sourceName });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n}\n",
13
13
  "import { type Database, getTargetDb } from \"@secondlayer/shared/db\";\nimport { resolveTraitContractIds } from \"@secondlayer/shared/db/queries/contracts\";\nimport { recordGapBatch } from \"@secondlayer/shared/db/queries/subgraph-gaps\";\nimport { advanceOperationCursor } from \"@secondlayer/shared/db/queries/subgraph-operations\";\nimport {\n\trecordLiveError,\n\trecordLiveProgress,\n\trecordSubgraphProcessed,\n\trewindLiveProgress,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { type Kysely, type Transaction, sql } from \"kysely\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { resolveBlockSource } from \"./block-source.ts\";\nimport {\n\ttype BlockMeta,\n\tJOURNAL_RETENTION_BLOCKS,\n\tSubgraphContext,\n\ttype TxMeta,\n} from \"./context.ts\";\nimport { emitSubscriptionOutbox } from \"./outbox-emit.ts\";\nimport { buildEventPayload, runHandlers } from \"./runner.ts\";\nimport { sandboxEnabled } from \"./sandbox/flag.ts\";\nimport { evictSandboxWorker, runHandlersSandboxed } from \"./sandbox/host.ts\";\nimport {\n\ttype EventRecord,\n\ttype TxRecord,\n\tmatchSources,\n\treadPath,\n} from \"./source-matcher.ts\";\nimport { matcher } from \"./subscription-state.ts\";\n\n/**\n * The data-plane route for a subgraph: which schema its tables live in and the\n * managed target DB the writes/reads land on. Cached per subgraph to avoid a\n * per-block lookup; invalidated on redeploy via\n * {@link invalidateSubgraphRoute}.\n *\n * Also carries the f071 Stage A sandbox-dispatch inputs\n * (`sandboxWorkers`/`handlerCode`/`version`) — cheap to keep alongside the\n * route since `resolveRoute` already selects the full `subgraphs` row; kept\n * in lockstep with the same cache invalidation edge (redeploys change\n * `handler_code`/`version` together).\n */\ninterface SubgraphRoute {\n\tschemaName: string;\n\tdataDb: Kysely<Database>;\n\t/** `subgraphs.sandbox_workers` — combined with the global env gate by\n\t * `sandboxEnabled()`. Default false for every row; nothing in committed\n\t * code sets it true (f071 Stage A stays dark). */\n\tsandboxWorkers: boolean;\n\thandlerCode: string | null;\n\tversion: string;\n}\nconst routeCache = new Map<string, SubgraphRoute>();\n\nasync function resolveRoute(\n\tsubgraphName: string,\n\ttargetDb: Kysely<Database>,\n): Promise<SubgraphRoute> {\n\tconst cached = routeCache.get(subgraphName);\n\tif (cached) return cached;\n\tconst row = await targetDb\n\t\t.selectFrom(\"subgraphs\")\n\t\t.selectAll()\n\t\t.where(\"name\", \"=\", subgraphName)\n\t\t.executeTakeFirst();\n\tconst route: SubgraphRoute = {\n\t\tschemaName: row?.schema_name ?? pgSchemaName(subgraphName),\n\t\tdataDb: targetDb,\n\t\tsandboxWorkers: row?.sandbox_workers === true,\n\t\thandlerCode: row?.handler_code ?? null,\n\t\tversion: row?.version ?? \"\",\n\t};\n\trouteCache.set(subgraphName, route);\n\t// f071 Stage A observability: state which handler-execution path this\n\t// subgraph resolved to, once per route-cache resolution (process start,\n\t// or the next block after a redeploy invalidates the cache) — never per\n\t// block, so this can't spam logs. Doesn't change dispatch: reads the same\n\t// `sandboxEnabled` inputs the ternary at the call site below uses.\n\tlogger.info(\"subgraph handler dispatch path resolved\", {\n\t\tsubgraph: subgraphName,\n\t\tpath: sandboxEnabled({ sandbox_workers: route.sandboxWorkers })\n\t\t\t? \"sandbox\"\n\t\t\t: \"in-process\",\n\t});\n\treturn route;\n}\n\n/** Drop a subgraph's cached route — call on redeploy/delete (conn may\n * change). Also evicts any warm sandbox subprocess for this subgraph\n * (f071 Stage A `host.ts`) on the same edge: a redeploy can change\n * `handler_code`/`version` together, and a stale warm\n * subprocess must not survive past this invalidation any more than the\n * cached route does. A no-op today since nothing sets `sandbox_workers`,\n * but keeps the pool's documented invalidation contract honest for when it\n * is. */\nexport function invalidateSubgraphRoute(subgraphName: string): void {\n\trouteCache.delete(subgraphName);\n\tevictSandboxWorker(subgraphName);\n}\n\n/**\n * Resolve each distinct trait used by a subgraph's sources to its conforming\n * contract-id set, as of `blockHeight`, from the contract registry. Empty map\n * when no source is trait-scoped (the common case → no DB work).\n */\n/**\n * Resolve each factory-scoped source's address set for this block.\n *\n * Two parts, and the ORDER is the guarantee:\n * 1. addresses persisted by earlier blocks (`block_height <= blockHeight`,\n * so a reindex sees exactly what the live walk saw), then\n * 2. addresses revealed by THIS block's events — computed before matching,\n * so a contract discovered in block N receives its own block-N events.\n * Without this pass the first event from every discovered contract is\n * silently lost.\n */\n/**\n * Exported as a test seam. Both guarantees this function carries — a contract\n * discovered in block N receiving its OWN block-N events, and the persisted set\n * being height-stamped so a reorg can roll it back — were asserted only by\n * comment until now.\n */\nexport async function resolveFactoryContracts(\n\tsubgraph: SubgraphDefinition,\n\tblockHeight: number,\n\tschemaName: string,\n\tdb: Kysely<Database>,\n\ttxs: TxRecord[],\n\tevts: EventRecord[],\n): Promise<{\n\tresolved: Map<string, ReadonlySet<string>>;\n\tdiscovered: Array<{ sourceName: string; address: string }>;\n}> {\n\t// Keyed by the DISCOVERING source (`factory.from`), not the consuming one:\n\t// several sources can share one factory, and this way the extraction runs\n\t// once per discovering source rather than once per consumer.\n\tconst factories = new Map<string, { from: string; field: string }>();\n\tfor (const source of Object.values(subgraph.sources)) {\n\t\tconst factory = (source as { factory?: { from: string; field: string } })\n\t\t\t.factory;\n\t\tif (factory) factories.set(factory.from, factory);\n\t}\n\tconst resolved = new Map<string, ReadonlySet<string>>();\n\tconst discovered: Array<{ sourceName: string; address: string }> = [];\n\tif (factories.size === 0) return { resolved, discovered };\n\n\tfor (const [discoveringSource, factory] of factories) {\n\t\tconst known = new Set<string>();\n\t\t// 1. Everything revealed at or below this height.\n\t\ttry {\n\t\t\tconst rows = await sql<{ address: string }>`\n\t\t\t\tSELECT address FROM ${sql.raw(`\"${schemaName}\".\"_factory_addresses\"`)}\n\t\t\t\tWHERE source_name = ${discoveringSource} AND block_height <= ${blockHeight}\n\t\t\t`.execute(db);\n\t\t\tfor (const row of rows.rows) known.add(row.address);\n\t\t} catch {\n\t\t\t// Table absent (first deploy before DDL, or a non-factory subgraph):\n\t\t\t// treat as an empty set rather than failing the block.\n\t\t}\n\n\t\t// 2. This block's own reveals — before matching, so same-block events\n\t\t// from a new contract are not dropped.\n\t\tconst discovering = subgraph.sources[factory.from];\n\t\tif (discovering) {\n\t\t\tconst matches = matchSources(\n\t\t\t\t{ [factory.from]: discovering },\n\t\t\t\ttxs,\n\t\t\t\tevts,\n\t\t\t\tnew Map(),\n\t\t\t\tnew Map(),\n\t\t\t);\n\t\t\tfor (const match of matches) {\n\t\t\t\tfor (const event of match.events ?? []) {\n\t\t\t\t\tconst payload = buildEventPayload(discovering, match.tx, event);\n\t\t\t\t\tconst value = readPath(payload, factory.field);\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value === \"string\" &&\n\t\t\t\t\t\tvalue.length > 0 &&\n\t\t\t\t\t\t!known.has(value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tknown.add(value);\n\t\t\t\t\t\tdiscovered.push({ sourceName: discoveringSource, address: value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tresolved.set(discoveringSource, known);\n\t}\n\treturn { resolved, discovered };\n}\n\n/** Persist this block's discoveries, stamped with the block that revealed\n * them so the reorg handler can roll them back. */\nasync function persistFactoryDiscoveries(\n\tschemaName: string,\n\tdb: Kysely<Database>,\n\tblockHeight: number,\n\tdiscovered: Array<{ sourceName: string; address: string }>,\n): Promise<void> {\n\tif (discovered.length === 0) return;\n\tfor (const { sourceName, address } of discovered) {\n\t\tawait sql`\n\t\t\tINSERT INTO ${sql.raw(`\"${schemaName}\".\"_factory_addresses\"`)}\n\t\t\t\t(source_name, address, block_height)\n\t\t\tVALUES (${sourceName}, ${address}, ${blockHeight})\n\t\t\tON CONFLICT (source_name, address) DO NOTHING\n\t\t`.execute(db);\n\t}\n}\n\nasync function resolveTraitContracts(\n\tsubgraph: SubgraphDefinition,\n\tblockHeight: number,\n\tdb: Kysely<Database>,\n): Promise<Map<string, ReadonlySet<string>>> {\n\tconst traits = new Set<string>();\n\tfor (const source of Object.values(subgraph.sources)) {\n\t\tconst trait = (source as { trait?: string }).trait;\n\t\tif (trait) traits.add(trait);\n\t}\n\tconst resolved = new Map<string, ReadonlySet<string>>();\n\tfor (const trait of traits) {\n\t\tconst ids = await resolveTraitContractIds(db, trait, blockHeight);\n\t\tresolved.set(trait, new Set(ids));\n\t}\n\treturn resolved;\n}\n\nexport interface ProcessBlockTiming {\n\ttotalMs: number;\n\thandlerMs: number;\n\tflushMs: number;\n}\n\nexport interface ProcessBlockResult {\n\tblockHeight: number;\n\tmatched: number;\n\tprocessed: number;\n\terrors: number;\n\tskipped: boolean;\n\ttiming?: ProcessBlockTiming;\n}\n\n/**\n * Process a single block through a single subgraph's pipeline.\n *\n * Flow:\n * 1. Load block + txs + events from DB\n * 2. Run source matcher\n * 3. Run handlers with SubgraphContext\n * 4. Flush context (commit writes atomically)\n * 5. Update subgraph.last_processed_block\n */\nexport interface PreloadedBlockData {\n\tblock: import(\"@secondlayer/shared/db\").Block;\n\ttxs: import(\"@secondlayer/shared/db\").Transaction[];\n\tevents: import(\"@secondlayer/shared/db\").Event[];\n}\n\nexport interface ProcessBlockOptions {\n\t/** Skip updating last_processed_block in DB (reindex batches this externally). */\n\tskipProgressUpdate?: boolean;\n\t/** Pre-loaded block data — skips DB reads when provided (used by batch catch-up). */\n\tpreloaded?: PreloadedBlockData;\n\t/**\n\t * Crash-safe sequential processing. Two checkpoint scopes:\n\t * - `{ status }` (reindex): a written block commits\n\t * `subgraphs.last_processed_block = blockHeight` in the SAME transaction\n\t * as its writes; replays skip at/below the cursor. Only for strictly\n\t * ascending walks over the subgraph's own cursor.\n\t * - `{ operationId }` (backfill): same guarantee against the OPERATION's\n\t * own `cursor_block` — backfills legitimately revisit heights below the\n\t * live cursor, so they must never checkpoint (or read) the subgraph\n\t * cursor. The advance is a CONDITIONAL monotonic UPDATE: concurrent\n\t * writers serialize on it, and the loser's whole block tx rolls back\n\t * (surfaced as `skipped`, never an error/gap).\n\t * Either way: a crash can never leave committed deltas ahead of the\n\t * relevant checkpoint.\n\t */\n\tatomicProgress?: { status: string } | { operationId: string };\n\t/**\n\t * Reorg rewind (f069): set exclusively by `reorg.ts`'s fork-block\n\t * reprocess. Bypasses the live-path replay guard (a fork block's height\n\t * is, by construction, at or below the current cursor — the guard would\n\t * otherwise skip it) and writes the checkpoint via\n\t * `rewindLiveProgress` (unconditional — a rewind's whole point is\n\t * moving the cursor *backward*, which the live path's conditional\n\t * advance would refuse). Safe only because the reorg path holds a\n\t * transaction-scoped advisory lock across its whole\n\t * delete+reprocess+rewind sequence, so nothing else can interleave a\n\t * forward write. Never set this outside `reorg.ts`.\n\t */\n\treorgRewind?: true;\n\t/** The subgraph row's uuid. Required to record a gap row when a block\n\t * processes with handler errors — `subgraph_gaps.subgraph_id` is NOT NULL.\n\t * Absent on paths that pass `skipProgressUpdate` (they record gaps\n\t * themselves, see reindex.ts). */\n\tsubgraphId?: string;\n}\n\n/** Thrown inside the block tx when a racing writer already covered this\n * height — rolls the tx back; processBlock converts it to `skipped`. The\n * winner committed the block, so this is success-shaped, never a gap. */\nclass CursorRaceLostError extends Error {\n\tconstructor(operationId: string, height: number) {\n\t\tsuper(`op ${operationId} lost cursor race at block ${height}`);\n\t\tthis.name = \"CursorRaceLostError\";\n\t}\n}\n\n/** Live-path sibling of {@link CursorRaceLostError}: thrown when the live\n * path's conditional `recordLiveProgress` advance loses to a racing\n * writer that already committed a higher (or equal) `last_processed_block`\n * for this subgraph. Same success-shaped handling — the winner's commit\n * stands, so this becomes `result.skipped = true`, never an error/gap. */\nclass LiveCursorRaceLostError extends Error {\n\tconstructor(subgraphName: string, height: number) {\n\t\tsuper(`live cursor race lost for ${subgraphName} at block ${height}`);\n\t\tthis.name = \"LiveCursorRaceLostError\";\n\t}\n}\n\nfunction opCursorMode(\n\topts?: ProcessBlockOptions,\n): { operationId: string } | undefined {\n\tconst ap = opts?.atomicProgress;\n\treturn ap && \"operationId\" in ap ? ap : undefined;\n}\n\n/** True only for the reorg fork-block reprocess — see `reorgRewind` on\n * {@link ProcessBlockOptions}. */\nfunction isReorgRewind(opts?: ProcessBlockOptions): boolean {\n\treturn opts?.reorgRewind === true;\n}\n\nfunction statusMode(\n\topts?: ProcessBlockOptions,\n): { status: string } | undefined {\n\tconst ap = opts?.atomicProgress;\n\treturn ap && \"status\" in ap ? ap : undefined;\n}\n\n/** Default per-block retry schedule before a failure counts as persistent. */\nexport const BLOCK_RETRY_DELAYS_MS: number[] = [500, 2_000, 5_000];\n\n/**\n * Journal pre-images on the live path only. Deep reindex/backfill heights\n * (skipProgressUpdate) are past finality — a reorg can't reach them, so\n * journaling would be pure churn for the pruner.\n */\nfunction journalEnabled(opts?: ProcessBlockOptions): boolean {\n\treturn !opts?.skipProgressUpdate;\n}\n\n/**\n * processBlock with bounded retries. Throws the last error once the schedule\n * is exhausted — callers decide whether that halts the walk (strict paths) or\n * records a gap (backfill). Never advances any cursor on failure.\n */\nexport async function processBlockWithRetry(\n\tsubgraph: SubgraphDefinition,\n\tsubgraphName: string,\n\tblockHeight: number,\n\topts?: ProcessBlockOptions,\n\tretryDelaysMs: number[] = BLOCK_RETRY_DELAYS_MS,\n): Promise<ProcessBlockResult> {\n\tlet lastError: unknown;\n\tfor (let attempt = 0; attempt <= retryDelaysMs.length; attempt++) {\n\t\ttry {\n\t\t\treturn await processBlock(subgraph, subgraphName, blockHeight, opts);\n\t\t} catch (err) {\n\t\t\tlastError = err;\n\t\t\tconst delay = retryDelaysMs[attempt];\n\t\t\tif (delay === undefined) break;\n\t\t\tlogger.warn(\"Block processing failed, retrying\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tblockHeight,\n\t\t\t\tattempt: attempt + 1,\n\t\t\t\tretryInMs: delay,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\tawait new Promise((r) => setTimeout(r, delay));\n\t\t}\n\t}\n\tthrow lastError;\n}\n\nexport async function processBlock(\n\tsubgraph: SubgraphDefinition,\n\tsubgraphName: string,\n\tblockHeight: number,\n\topts?: ProcessBlockOptions,\n): Promise<ProcessBlockResult> {\n\tconst targetDb = getTargetDb();\n\tconst blockStart = performance.now();\n\tconst result: ProcessBlockResult = {\n\t\tblockHeight,\n\t\tmatched: 0,\n\t\tprocessed: 0,\n\t\terrors: 0,\n\t\tskipped: false,\n\t};\n\n\t// 1. Load block from source DB (shared indexer) — use pre-loaded data if available\n\tlet block: PreloadedBlockData[\"block\"] | undefined;\n\tlet txs: PreloadedBlockData[\"txs\"];\n\tlet evts: PreloadedBlockData[\"events\"];\n\tif (opts?.preloaded) {\n\t\tblock = opts.preloaded.block;\n\t\ttxs = opts.preloaded.txs;\n\t\tevts = opts.preloaded.events;\n\t} else {\n\t\t// The block source returns canonical blocks only, so a missing entry\n\t\t// means the block is absent or non-canonical — skip either way.\n\t\tconst data = (\n\t\t\tawait resolveBlockSource(subgraph).loadBlockRange(\n\t\t\t\tblockHeight,\n\t\t\t\tblockHeight,\n\t\t\t)\n\t\t).get(blockHeight);\n\t\tif (!data) {\n\t\t\tlogger.debug(\"Block not found or non-canonical for subgraph processing\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tblockHeight,\n\t\t\t});\n\t\t\tresult.skipped = true;\n\t\t\treturn result;\n\t\t}\n\t\tblock = data.block;\n\t\ttxs = data.txs;\n\t\tevts = data.events;\n\t}\n\n\t// 3. Match source. Trait-scoped sources ({ trait: \"sip-010\" }) resolve to the\n\t// set of conforming contracts AS OF this block (deploy_height ≤ blockHeight),\n\t// so a reindex backfills a token's full history even if it was classified\n\t// after deploy. Resolution is done here (DB access) so the matcher stays pure.\n\t// Route first: the factory set lives in this subgraph's pg schema, and it\n\t// must resolve BEFORE matching. `resolveRoute` is cached per subgraph.\n\tconst route = await resolveRoute(subgraphName, targetDb);\n\tconst schemaName = route.schemaName;\n\n\tconst traitContracts = await resolveTraitContracts(\n\t\tsubgraph,\n\t\tblockHeight,\n\t\ttargetDb,\n\t);\n\t// Factory sets resolve BEFORE matching so a contract revealed in this\n\t// block receives its own block-N events (see resolveFactoryContracts).\n\tconst { resolved: factoryContracts, discovered } =\n\t\tawait resolveFactoryContracts(\n\t\t\tsubgraph,\n\t\t\tblockHeight,\n\t\t\tschemaName,\n\t\t\ttargetDb,\n\t\t\ttxs,\n\t\t\tevts,\n\t\t);\n\tconst matched = matchSources(\n\t\tsubgraph.sources,\n\t\ttxs,\n\t\tevts,\n\t\ttraitContracts,\n\t\tfactoryContracts,\n\t);\n\tresult.matched = matched.length;\n\n\tif (matched.length === 0) {\n\t\tif (!opts?.skipProgressUpdate) {\n\t\t\tif (isReorgRewind(opts)) {\n\t\t\t\t// Fork block itself may match nothing for this subgraph — the\n\t\t\t\t// rewind still must land (unconditional, may move backward).\n\t\t\t\tawait rewindLiveProgress(targetDb, subgraphName, blockHeight);\n\t\t\t} else {\n\t\t\t\t// Promote-but-never-unpark: unconditional \"active\" stamping let the\n\t\t\t\t// live walk overwrite \"reindexing\" set by a queued reindex op,\n\t\t\t\t// flapping the subgraph back into catch-up (and into collision with\n\t\t\t\t// the op's schema drop). Conditional advance (f069): a no-write\n\t\t\t\t// block can't race-lose in any way that matters (nothing was\n\t\t\t\t// written), so a `false` return here is a silent no-op — the\n\t\t\t\t// cursor simply stays at whatever a racing writer already set it\n\t\t\t\t// to.\n\t\t\t\tawait recordLiveProgress(targetDb, subgraphName, blockHeight);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t// 4. Data plane (managed target DB) — resolved above, since factory-set\n\t// resolution needs the schema name.\n\tconst blockMeta: BlockMeta = {\n\t\theight: block.height,\n\t\thash: block.hash,\n\t\ttimestamp: block.timestamp,\n\t\tburnBlockHeight: block.burn_block_height,\n\t\tindexBlockHash: block.index_block_hash,\n\t};\n\tconst initialTx: TxMeta = {\n\t\ttxId: \"\",\n\t\tsender: \"\",\n\t\ttype: \"\",\n\t\tstatus: \"\",\n\t};\n\n\tlet handlerMs = 0;\n\tlet flushMs = 0;\n\n\t// Progress + health writes — always on the managed DB, identical in both\n\t// modes (the subgraphs control-plane table lives in target). Only ever\n\t// reached with real work to do on the live catch-up path and the reorg\n\t// rewind path (both leave `skipProgressUpdate` unset); reindex/backfill\n\t// always pass `skipProgressUpdate: true` and return above.\n\tconst applyProgress = async (\n\t\ttx: Transaction<Database>,\n\t\trr: { processed: number; errors: number },\n\t\tflushedWrites: boolean,\n\t) => {\n\t\tif (opts?.skipProgressUpdate) return;\n\t\tconst rewind = isReorgRewind(opts);\n\t\tif (rr.errors > 0 && rr.processed === 0) {\n\t\t\tif (rewind) {\n\t\t\t\tawait updateSubgraphStatus(tx, subgraphName, \"error\", blockHeight);\n\t\t\t} else {\n\t\t\t\t// f069: conditional — see recordLiveError's docblock for why a lost\n\t\t\t\t// race here is always a silent no-op (an all-failed block never\n\t\t\t\t// flushes writes, so there's nothing to protect by throwing).\n\t\t\t\tawait recordLiveError(tx, subgraphName, blockHeight);\n\t\t\t}\n\t\t} else if (rewind) {\n\t\t\t// Unconditional, may move the cursor backward — see ProcessBlockOptions.\n\t\t\tawait rewindLiveProgress(tx, subgraphName, blockHeight);\n\t\t} else {\n\t\t\t// Promote-but-never-unpark (see matched-0 note). Conditional advance\n\t\t\t// (f069): a racing writer that already committed a higher cursor for\n\t\t\t// this height means OUR writes must not stand — abort the whole tx\n\t\t\t// so ctx.increment deltas already flushed above roll back with it.\n\t\t\tconst advanced = await recordLiveProgress(tx, subgraphName, blockHeight);\n\t\t\tif (!advanced && flushedWrites) {\n\t\t\t\tthrow new LiveCursorRaceLostError(subgraphName, blockHeight);\n\t\t\t}\n\t\t}\n\t\t// A handler that threw had its writes rolled back (runner.ts\n\t\t// ctx.rollbackTo) but the cursor still advances, so those events are\n\t\t// gone unless something records where. Gap rows are what `/gaps` and\n\t\t// backfill repair from — the reindex path has always written them\n\t\t// (reindex.ts), the live path never did.\n\t\tif (rr.errors > 0 && !rewind) {\n\t\t\tif (opts?.subgraphId) {\n\t\t\t\tawait recordGapBatch(tx, opts.subgraphId, subgraphName, [\n\t\t\t\t\t{ start: blockHeight, end: blockHeight, reason: \"processing_error\" },\n\t\t\t\t]);\n\t\t\t} else {\n\t\t\t\tlogger.warn(\"Block errors not recorded as a gap — no subgraphId\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\tblockHeight,\n\t\t\t\t\terrors: rr.errors,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (rr.processed > 0 || rr.errors > 0) {\n\t\t\tconst lastError =\n\t\t\t\trr.errors > 0\n\t\t\t\t\t? `${rr.errors} error(s) at block ${blockHeight}`\n\t\t\t\t\t: undefined;\n\t\t\tawait recordSubgraphProcessed(\n\t\t\t\ttx,\n\t\t\t\tsubgraphName,\n\t\t\t\trr.processed,\n\t\t\t\trr.errors,\n\t\t\t\tlastError,\n\t\t\t);\n\t\t}\n\t};\n\n\t// Managed: a single atomic transaction on the target DB.\n\ttry {\n\t\tawait targetDb.transaction().execute(async (tx: Transaction<Database>) => {\n\t\t\t// Replay guard (sequential walks only): committed writes always carry\n\t\t\t// their checkpoint (below), so a block at/below the cursor has already\n\t\t\t// been applied — running it again would double-apply deltas.\n\t\t\tconst opMode = opCursorMode(opts);\n\t\t\tconst sm = statusMode(opts);\n\t\t\tconst rewind = isReorgRewind(opts);\n\t\t\tif (sm) {\n\t\t\t\tconst row = await tx\n\t\t\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t\t\t.select(\"last_processed_block\")\n\t\t\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t\t\t.executeTakeFirst();\n\t\t\t\tif (row && Number(row.last_processed_block) >= blockHeight) {\n\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if (opMode) {\n\t\t\t\t// Fast path only — the conditional advance below is the guarantee.\n\t\t\t\tconst row = await tx\n\t\t\t\t\t.selectFrom(\"subgraph_operations\")\n\t\t\t\t\t.select(\"cursor_block\")\n\t\t\t\t\t.where(\"id\", \"=\", opMode.operationId)\n\t\t\t\t\t.executeTakeFirst();\n\t\t\t\tif (\n\t\t\t\t\trow?.cursor_block != null &&\n\t\t\t\t\tNumber(row.cursor_block) >= blockHeight\n\t\t\t\t) {\n\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if (!rewind) {\n\t\t\t\t// f069: the same fast-path guard, now armed on the live path.\n\t\t\t\t// Fast path only — the conditional `recordLiveProgress` advance\n\t\t\t\t// below (via applyProgress) is the actual guarantee; this SELECT,\n\t\t\t\t// taken before handlers run, cannot see a same-height race that\n\t\t\t\t// commits between here and there. Never checked when `rewind` is\n\t\t\t\t// set: a reorg's fork block is, by construction, at or below the\n\t\t\t\t// current cursor, and must run anyway.\n\t\t\t\tconst row = await tx\n\t\t\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t\t\t.select(\"last_processed_block\")\n\t\t\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t\t\t.executeTakeFirst();\n\t\t\t\tif (row && Number(row.last_processed_block) >= blockHeight) {\n\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst ctx = new SubgraphContext(\n\t\t\t\ttx,\n\t\t\t\tschemaName,\n\t\t\t\tsubgraph.schema,\n\t\t\t\tblockMeta,\n\t\t\t\tinitialTx,\n\t\t\t\tjournalEnabled(opts),\n\t\t\t);\n\n\t\t\t// f071 Stage A: dark, flag-gated dispatch. `sandboxEnabled` requires\n\t\t\t// BOTH the global env gate AND this subgraph's `sandbox_workers`\n\t\t\t// column — nothing in committed code sets that column, so this\n\t\t\t// branch is unreached in production today; `runHandlers` (below)\n\t\t\t// is what actually executes, byte-identical to before this plan.\n\t\t\t// When it IS reached: `runHandlersSandboxed` runs handlers in the\n\t\t\t// sandbox subprocess but replays their decided ops onto THIS same\n\t\t\t// `ctx`, bound to THIS same open transaction, before returning —\n\t\t\t// so the flush/manifest/outbox flow and the f069 guard placement\n\t\t\t// below are unaffected either way (see `host.ts`'s docblock).\n\t\t\tconst handlerStart = performance.now();\n\t\t\tconst runResult = sandboxEnabled({\n\t\t\t\tsandbox_workers: route.sandboxWorkers,\n\t\t\t})\n\t\t\t\t? await runHandlersSandboxed({\n\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\tversion: route.version,\n\t\t\t\t\t\thandlerCode: route.handlerCode,\n\t\t\t\t\t\thostCtx: ctx,\n\t\t\t\t\t\tblock: blockMeta,\n\t\t\t\t\t\tmatched,\n\t\t\t\t\t})\n\t\t\t\t: await runHandlers(subgraph, matched, ctx);\n\t\t\thandlerMs = performance.now() - handlerStart;\n\n\t\t\tresult.processed = runResult.processed;\n\t\t\tresult.errors = runResult.errors;\n\n\t\t\tlet flushedWrites = false;\n\t\t\tif (ctx.pendingOps > 0) {\n\t\t\t\tconst flushStart = performance.now();\n\t\t\t\tconst manifest = await ctx.flush();\n\t\t\t\tflushedWrites = manifest.count > 0;\n\t\t\t\tif (manifest.count > 0) {\n\t\t\t\t\tawait emitSubscriptionOutbox(\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\tmanifest,\n\t\t\t\t\t\tmatcher,\n\t\t\t\t\t\tblock.height,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tflushMs = performance.now() - flushStart;\n\t\t\t}\n\n\t\t\t// Checkpoint travels with the writes it covers — a crash can never\n\t\t\t// leave committed deltas ahead of the checkpoint (fix-f040 B3).\n\t\t\tif (sm && flushedWrites) {\n\t\t\t\tawait updateSubgraphStatus(tx, subgraphName, sm.status, blockHeight);\n\t\t\t} else if (opMode && flushedWrites) {\n\t\t\t\tconst advanced = await advanceOperationCursor(\n\t\t\t\t\ttx,\n\t\t\t\t\topMode.operationId,\n\t\t\t\t\tblockHeight,\n\t\t\t\t);\n\t\t\t\tif (!advanced) {\n\t\t\t\t\t// A racing writer (zombie/claimer) already covered this height —\n\t\t\t\t\t// abort OUR writes; the winner's commit stands.\n\t\t\t\t\tthrow new CursorRaceLostError(opMode.operationId, blockHeight);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait applyProgress(tx, runResult, flushedWrites);\n\t\t});\n\t} catch (err) {\n\t\tif (\n\t\t\terr instanceof CursorRaceLostError ||\n\t\t\terr instanceof LiveCursorRaceLostError\n\t\t) {\n\t\t\t// Success-shaped: the block IS committed (by the winner). Surfacing\n\t\t\t// this as an error would mint a false gap row and re-invite the\n\t\t\t// double-apply through gap repair.\n\t\t\tlogger.warn(\"cursor race lost — block already covered\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tblockHeight,\n\t\t\t\terror: err.message,\n\t\t\t});\n\t\t\tresult.skipped = true;\n\t\t\treturn result;\n\t\t}\n\t\tthrow err;\n\t}\n\n\t// Persist factory discoveries only after the block's writes commit, so a\n\t// failed block doesn't leave addresses claimed for a block that produced\n\t// nothing. Stamped with this height, so the reorg handler rolls them back\n\t// with everything else. Idempotent (ON CONFLICT DO NOTHING), so a\n\t// guard-skipped block replaying here is harmless.\n\tif (!result.skipped) {\n\t\tawait persistFactoryDiscoveries(\n\t\t\tschemaName,\n\t\t\troute.dataDb,\n\t\t\tblockHeight,\n\t\t\tdiscovered,\n\t\t);\n\t}\n\n\tconst totalMs = performance.now() - blockStart;\n\t// f069: a skipped block (guard fast-path, or a race-loss success-shaped\n\t// skip) never reaches here as a distinct branch — it falls through from\n\t// the transaction callback's early `return`. `blocks_processed` is now\n\t// load-bearing forensic evidence (f068's own re-derivation of it), so a\n\t// skip must not inflate it: only count blocks that actually ran handlers.\n\tif (!result.skipped) {\n\t\tresult.timing = {\n\t\t\ttotalMs: Math.round(totalMs),\n\t\t\thandlerMs: Math.round(handlerMs),\n\t\t\tflushMs: Math.round(flushMs),\n\t\t};\n\t}\n\n\t// 7. Row count warning — sample every 1000 blocks (uses pg_stat estimate, not COUNT(*))\n\tif (blockHeight % 1000 === 0) {\n\t\ttry {\n\t\t\tconst tables = Object.keys(subgraph.schema);\n\t\t\tfor (const table of tables) {\n\t\t\t\tconst { rows } = await sql\n\t\t\t\t\t.raw(\n\t\t\t\t\t\t`SELECT n_live_tup AS count FROM pg_stat_user_tables WHERE schemaname = '${schemaName}' AND relname = '${table}'`,\n\t\t\t\t\t)\n\t\t\t\t\t.execute(route.dataDb);\n\t\t\t\tconst count = Number((rows[0] as Record<string, unknown>)?.count ?? 0);\n\t\t\t\tif (count >= 10_000_000) {\n\t\t\t\t\tlogger.warn(\"Subgraph table exceeds 10M rows (estimate)\", {\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\tcount,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t// Expected: table may not exist yet (fresh subgraph, first few\n\t\t\t// blocks before DDL runs). Log at debug so real errors —\n\t\t\t// connection, permissions, query plan — aren't invisible.\n\t\t\tlogger.debug(\"Row count sample failed\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t}\n\n\t\t// Prune reorg-journal entries past finality (fix-f040 B2). Same cadence\n\t\t// as the row sample; retention is generous vs observed reorg depth.\n\t\tif (journalEnabled(opts)) {\n\t\t\tawait sql\n\t\t\t\t.raw(\n\t\t\t\t\t`DELETE FROM \"${schemaName}\".\"_journal\" WHERE \"block_height\" < ${blockHeight - JOURNAL_RETENTION_BLOCKS}`,\n\t\t\t\t)\n\t\t\t\t.execute(route.dataDb)\n\t\t\t\t.catch(() => {\n\t\t\t\t\t// Journal may not exist yet (pre-journal deploy, no writes since).\n\t\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n",
14
- "import { getSourceDb } from \"@secondlayer/shared/db\";\nimport type { Transaction } from \"@secondlayer/shared/db\";\nimport {\n\ttype IndexEventRow,\n\tIndexHttpClient,\n\ttype IndexTransactionRow,\n} from \"@secondlayer/shared/index-http\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport type { SubgraphDefinition, SubgraphFilter } from \"../types.ts\";\nimport { type BlockData, loadBlockRange } from \"./batch-loader.ts\";\nimport {\n\treconstructBlock,\n\treconstructEvent,\n\treconstructTransaction,\n\treconstructTxFromEventRow,\n} from \"./reconstruct.ts\";\n\n/**\n * Where the subgraph runtime reads canonical chain data. Today it taps the\n * indexer Postgres directly (`PostgresBlockSource`); the re-point adds a\n * `PublicApiBlockSource` that consumes the Streams clock + Index data over\n * HTTP. `matchSources` / handlers / flush / outbox are unchanged — only the\n * loader + tip swap behind this seam.\n */\nexport interface BlockSource {\n\t/** Highest canonical block height available to process. */\n\tgetTip(): Promise<number>;\n\t/** Canonical block data for [fromHeight, toHeight], keyed by height. */\n\tloadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>>;\n\t/** Sparse-scan probe: lowest height in (afterHeight, untilHeight] holding\n\t * an event this source's subgraph could match, or null when the rest of\n\t * the range is empty. Optional — only event-scoped sources support it. */\n\tnextDataHeight?(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null>;\n}\n\n/** A (decoded event type, optional contract scope) pair the sparse probe\n * checks. Contract scoping is what makes token-subgraph reindexes leap over\n * everything that isn't their token. */\nexport type SparseProbeTarget = { eventType: string; contractId?: string };\n\n/** Sparse scanning is sound only when EVERY source is an event-type filter —\n * a contract_call/contract_deploy source matches transactions, which the\n * event probe can't see. */\nexport function canSparseScan(subgraph: SubgraphDefinition): boolean {\n\tif (Array.isArray(subgraph.sources)) return false;\n\tconst filters = sourceFilters(subgraph);\n\tif (filters.length === 0) return false;\n\treturn filters.every((f) => Boolean(EVENT_FILTER_TO_INDEX_TYPE[f.type]));\n}\n\n/** Probe targets for a subgraph's filters: decoded type + contract scope when\n * the filter pins one (assetIdentifier \"SP….contract::asset\" or contractId). */\nexport function sparseProbeTargets(\n\tsubgraph: SubgraphDefinition,\n): SparseProbeTarget[] {\n\tconst targets = new Map<string, SparseProbeTarget>();\n\tfor (const f of sourceFilters(subgraph)) {\n\t\tconst eventType = EVENT_FILTER_TO_INDEX_TYPE[f.type];\n\t\tif (!eventType) continue;\n\t\tconst scoped = f as { assetIdentifier?: string; contractId?: string };\n\t\tconst contractId =\n\t\t\tscoped.contractId ?? scoped.assetIdentifier?.split(\"::\")[0];\n\t\tconst key = `${eventType}|${contractId ?? \"\"}`;\n\t\ttargets.set(key, { eventType, ...(contractId ? { contractId } : {}) });\n\t}\n\treturn [...targets.values()];\n}\n\n/** Reads directly from the shared indexer Postgres (the original behavior). */\nexport class PostgresBlockSource implements BlockSource {\n\tasync getTip(): Promise<number> {\n\t\tconst progress = await getSourceDb()\n\t\t\t.selectFrom(\"index_progress\")\n\t\t\t.selectAll()\n\t\t\t.where(\"network\", \"=\", process.env.NETWORK ?? \"mainnet\")\n\t\t\t.executeTakeFirst();\n\t\treturn progress ? Number(progress.highest_seen_block) : 0;\n\t}\n\n\tloadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\treturn loadBlockRange(getSourceDb(), fromHeight, toHeight);\n\t}\n}\n\n// Subgraph source filter types that map to a decoded Index event_type. The\n// `_event` suffix is the runtime's raw form; print is keyed `print_event`.\nconst EVENT_FILTER_TO_INDEX_TYPE: Record<string, string> = {\n\tstx_transfer: \"stx_transfer\",\n\tstx_mint: \"stx_mint\",\n\tstx_burn: \"stx_burn\",\n\tstx_lock: \"stx_lock\",\n\tft_transfer: \"ft_transfer\",\n\tft_mint: \"ft_mint\",\n\tft_burn: \"ft_burn\",\n\tnft_transfer: \"nft_transfer\",\n\tnft_mint: \"nft_mint\",\n\tnft_burn: \"nft_burn\",\n\tprint_event: \"print\",\n};\n\n// Tx-level source types — matched against /v1/index/transactions, not events.\nconst TX_SOURCE_TYPES = new Set([\"contract_call\", \"contract_deploy\"]);\nconst ALL_INDEX_EVENT_TYPES = [\n\t...new Set(Object.values(EVENT_FILTER_TO_INDEX_TYPE)),\n];\n\nfunction sourceFilters(subgraph: SubgraphDefinition): SubgraphFilter[] {\n\tconst sources = subgraph.sources;\n\treturn Array.isArray(sources)\n\t\t? (sources as SubgraphFilter[])\n\t\t: Object.values(sources as Record<string, SubgraphFilter>);\n}\n\n/**\n * True when any source matches transactions (contract_call / contract_deploy):\n * the handler receives the full tx, so the loader must fetch real transactions.\n * Event-only subgraphs skip walkTransactions and synthesize the tx from joined\n * event context instead (the ~37x reindex over-fetch; see indexing-speed plan).\n */\nexport function needsTransactionData(subgraph: SubgraphDefinition): boolean {\n\treturn sourceFilters(subgraph).some((f) => TX_SOURCE_TYPES.has(f.type));\n}\n\n/** Build the (few) event-bearing txs from joined event context, one per tx_id —\n * the event-only replacement for draining every transaction in the range. */\nfunction synthesizeTxsFromEvents(events: IndexEventRow[]): Transaction[] {\n\tconst byId = new Map<string, Transaction>();\n\tfor (const e of events) {\n\t\tif (!byId.has(e.tx_id)) byId.set(e.tx_id, reconstructTxFromEventRow(e));\n\t}\n\treturn [...byId.values()];\n}\n\n/**\n * The Index event_types the loader must fetch for a set of source filter types.\n * A contract_call/contract_deploy source matches a tx and hands its FULL event\n * set to the handler, so when one is present we fetch every event type (the\n * matched tx's events must be complete); otherwise just the referenced types.\n * Shared by the subgraph loader and the chain-trigger evaluator.\n */\nexport function indexEventTypesForFilterTypes(filterTypes: string[]): string[] {\n\tif (filterTypes.some((t) => TX_SOURCE_TYPES.has(t))) {\n\t\treturn ALL_INDEX_EVENT_TYPES;\n\t}\n\tconst types = new Set<string>();\n\tfor (const t of filterTypes) {\n\t\tconst indexType = EVENT_FILTER_TO_INDEX_TYPE[t];\n\t\tif (indexType) types.add(indexType);\n\t}\n\treturn [...types];\n}\n\nfunction referencedIndexEventTypes(subgraph: SubgraphDefinition): string[] {\n\treturn indexEventTypesForFilterTypes(\n\t\tsourceFilters(subgraph).map((f) => f.type),\n\t);\n}\n\n/**\n * streams-index eligibility: every source must be a known event-type or\n * contract_call/contract_deploy filter (no array-style sources, which leak the\n * unreconstructable `_eventId`). Trait scope IS allowed — trait resolution\n * reads the contract registry on the platform DB (`targetDb`), which the\n * processor always holds, so it's source-independent. Everything else stays on\n * the DB tap.\n */\nexport function isStreamsIndexEligible(subgraph: SubgraphDefinition): boolean {\n\tif (Array.isArray(subgraph.sources)) return false;\n\tconst filters = sourceFilters(subgraph);\n\tif (filters.length === 0) return false;\n\tfor (const f of filters) {\n\t\tconst known =\n\t\t\tEVENT_FILTER_TO_INDEX_TYPE[f.type] || TX_SOURCE_TYPES.has(f.type);\n\t\tif (!known) return false;\n\t}\n\treturn true;\n}\n\n/** Streams clock + Index data plane, reconstructed into raw BlockData rows. */\nexport class PublicApiBlockSource implements BlockSource {\n\tconstructor(\n\t\tprivate readonly http: IndexHttpClient,\n\t\tprivate readonly eventTypes: string[],\n\t\t/** When set, enables the sparse-scan probe (event-scoped subgraphs). */\n\t\tprivate readonly probeTargets?: SparseProbeTarget[],\n\t\t/** False for event-only subgraphs → skip walkTransactions, synthesize the\n\t\t * tx from joined event context. Defaults true (safe / unchanged). */\n\t\tprivate readonly needsTransactions = true,\n\t) {}\n\n\t/** Lowest height in (after, until] any probe target hits, or null. */\n\tasync nextDataHeight(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null> {\n\t\tif (!this.probeTargets?.length) return afterHeight + 1;\n\t\tconst hits = await Promise.all(\n\t\t\tthis.probeTargets.map((t) =>\n\t\t\t\tthis.http.firstEventHeight(\n\t\t\t\t\tt.eventType,\n\t\t\t\t\tafterHeight + 1,\n\t\t\t\t\tuntilHeight,\n\t\t\t\t\tt.contractId,\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t\tconst found = hits.filter((h): h is number => h !== null);\n\t\treturn found.length ? Math.min(...found) : null;\n\t}\n\n\tgetTip(): Promise<number> {\n\t\t// Bound advancement to what the Index data plane can serve — never\n\t\t// process past it even if the Streams clock is ahead.\n\t\treturn this.http.getIndexTip();\n\t}\n\n\tasync loadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\t// Event-only subgraphs join tx context onto events (withTx) and skip the\n\t\t// walkTransactions over-fetch entirely; tx-level sources fetch real txs.\n\t\tconst withTx = !this.needsTransactions;\n\t\tconst [blocks, txRows, eventLists] = await Promise.all([\n\t\t\tthis.http.walkBlocks(fromHeight, toHeight),\n\t\t\tthis.needsTransactions\n\t\t\t\t? this.http.walkTransactions(fromHeight, toHeight)\n\t\t\t\t: Promise.resolve<IndexTransactionRow[]>([]),\n\t\t\tPromise.all(\n\t\t\t\tthis.eventTypes.map((t) =>\n\t\t\t\t\tthis.http.walkEvents(t, fromHeight, toHeight, withTx),\n\t\t\t\t),\n\t\t\t),\n\t\t]);\n\n\t\tconst map = new Map<number, BlockData>();\n\t\t// Seed every canonical height (incl. empty blocks) so catch-up doesn't\n\t\t// file them as gaps.\n\t\tfor (const b of blocks) {\n\t\t\tmap.set(b.block_height, {\n\t\t\t\tblock: reconstructBlock(b),\n\t\t\t\ttxs: [],\n\t\t\t\tevents: [],\n\t\t\t});\n\t\t}\n\t\t// For event-only subgraphs, materialize only the event-bearing txs from\n\t\t// joined event context instead of every transaction in the range.\n\t\tconst txs = this.needsTransactions\n\t\t\t? txRows.map(reconstructTransaction)\n\t\t\t: synthesizeTxsFromEvents(eventLists.flat());\n\t\tfor (const t of txs) {\n\t\t\tmap.get(t.block_height)?.txs.push(t);\n\t\t}\n\t\tfor (const list of eventLists) {\n\t\t\tfor (const e of list) {\n\t\t\t\tmap.get(e.block_height)?.events.push(reconstructEvent(e));\n\t\t\t}\n\t\t}\n\t\t// Canonical ordering — multi-type event walks merge here.\n\t\tfor (const bd of map.values()) {\n\t\t\tbd.txs.sort((a, b) => a.tx_index - b.tx_index);\n\t\t\tbd.events.sort((a, b) => a.event_index - b.event_index);\n\t\t}\n\t\treturn map;\n\t}\n}\n\n/**\n * Wraps a primary source and falls back to a secondary, per call, when the\n * primary throws. Use it to make the HTTP (Streams+Index) plane a SOFT dependency:\n * if api is unavailable, the processor reads the Postgres tap and keeps advancing\n * instead of stalling. Safe to mix mid-stream — both taps read the same canonical\n * chain at the same heights and the cursor is forward-only. Stateless (no breaker)\n * so it's failover-safe across replicas; the primary is retried every call and\n * resumes transparently once healthy.\n */\nexport class FallbackBlockSource implements BlockSource {\n\tconstructor(\n\t\tprivate readonly primary: BlockSource,\n\t\tprivate readonly fallback: BlockSource,\n\t) {}\n\n\tasync getTip(): Promise<number> {\n\t\ttry {\n\t\t\treturn await this.primary.getTip();\n\t\t} catch (err) {\n\t\t\tlogger.warn(\"block source primary getTip failed — using DB tap\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\treturn this.fallback.getTip();\n\t\t}\n\t}\n\n\tasync loadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\ttry {\n\t\t\treturn await this.primary.loadBlockRange(fromHeight, toHeight);\n\t\t} catch (err) {\n\t\t\tlogger.warn(\"block source primary loadBlockRange failed — using DB tap\", {\n\t\t\t\tfrom: fromHeight,\n\t\t\t\tto: toHeight,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\treturn this.fallback.loadBlockRange(fromHeight, toHeight);\n\t\t}\n\t}\n\n\t/** Probe via the primary only; a probe failure just means \"no skip\" —\n\t * the caller falls back to plain batch advancement. */\n\tasync nextDataHeight(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null> {\n\t\tif (!this.primary.nextDataHeight) return afterHeight + 1;\n\t\ttry {\n\t\t\treturn await this.primary.nextDataHeight(afterHeight, untilHeight);\n\t\t} catch {\n\t\t\treturn afterHeight + 1;\n\t\t}\n\t}\n}\n\nconst postgresBlockSource = new PostgresBlockSource();\n\n/**\n * HTTP (Streams+Index) chain source for a set of decoded event types, wrapped so\n * it falls back to the Postgres tap when api is down. Used by the chain-trigger\n * evaluator (which isn't subgraph-scoped, so it can't go through resolveBlockSource).\n */\nexport function buildChainBlockSource(eventTypes: string[]): BlockSource {\n\treturn new FallbackBlockSource(\n\t\tnew PublicApiBlockSource(buildHttpClient(), eventTypes),\n\t\tpostgresBlockSource,\n\t);\n}\n\nexport function buildHttpClient(): IndexHttpClient {\n\tconst baseUrl =\n\t\tprocess.env.SUBGRAPH_INDEX_API_URL ??\n\t\tprocess.env.STREAMS_API_URL ??\n\t\t\"http://api:3800\";\n\treturn new IndexHttpClient({\n\t\tindexBaseUrl: baseUrl,\n\t\tstreamsBaseUrl: baseUrl,\n\t\tstreamsApiKey:\n\t\t\tprocess.env.STREAMS_INTERNAL_API_KEY ?? \"sk-sl_streams_decode_internal\",\n\t});\n}\n\n/**\n * Resolve the block source for a subgraph. `SUBGRAPH_SOURCE=streams-index`\n * opts eligible subgraphs onto the public Streams clock + Index data; everything\n * else (and the default) stays on the Postgres tap.\n */\nexport function resolveBlockSource(subgraph?: SubgraphDefinition): BlockSource {\n\tif (\n\t\tprocess.env.SUBGRAPH_SOURCE === \"streams-index\" &&\n\t\tsubgraph &&\n\t\tisStreamsIndexEligible(subgraph)\n\t) {\n\t\t// Soft-depend on api: fall back to the Postgres tap per-call if the HTTP\n\t\t// plane is down, so the processor keeps advancing instead of stalling.\n\t\treturn new FallbackBlockSource(\n\t\t\tnew PublicApiBlockSource(\n\t\t\t\tbuildHttpClient(),\n\t\t\t\treferencedIndexEventTypes(subgraph),\n\t\t\t\tcanSparseScan(subgraph) ? sparseProbeTargets(subgraph) : undefined,\n\t\t\t\tneedsTransactionData(subgraph),\n\t\t\t),\n\t\t\tpostgresBlockSource,\n\t\t);\n\t}\n\tif (process.env.SUBGRAPH_SOURCE === \"streams-index\" && subgraph) {\n\t\tlogger.debug(\"Subgraph not streams-index eligible, using DB tap\", {\n\t\t\tsubgraph: subgraph.name,\n\t\t});\n\t}\n\treturn postgresBlockSource;\n}\n",
14
+ "import { getSourceDb } from \"@secondlayer/shared/db\";\nimport type { Transaction } from \"@secondlayer/shared/db\";\nimport {\n\ttype IndexEventRow,\n\ttype IndexHttpClient,\n\ttype IndexTransactionRow,\n\tcreateInternalIndexHttpClient,\n} from \"@secondlayer/shared/index-http\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport type { SubgraphDefinition, SubgraphFilter } from \"../types.ts\";\nimport { type BlockData, loadBlockRange } from \"./batch-loader.ts\";\nimport {\n\treconstructBlock,\n\treconstructEvent,\n\treconstructTransaction,\n\treconstructTxFromEventRow,\n} from \"./reconstruct.ts\";\n\n/**\n * Where the subgraph runtime reads canonical chain data. Today it taps the\n * indexer Postgres directly (`PostgresBlockSource`); the re-point adds a\n * `PublicApiBlockSource` that consumes the Streams clock + Index data over\n * HTTP. `matchSources` / handlers / flush / outbox are unchanged — only the\n * loader + tip swap behind this seam.\n */\nexport interface BlockSource {\n\t/** Highest canonical block height available to process. */\n\tgetTip(): Promise<number>;\n\t/** Canonical block data for [fromHeight, toHeight], keyed by height. */\n\tloadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>>;\n\t/** Sparse-scan probe: lowest height in (afterHeight, untilHeight] holding\n\t * an event this source's subgraph could match, or null when the rest of\n\t * the range is empty. Optional — only event-scoped sources support it. */\n\tnextDataHeight?(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null>;\n}\n\n/** A (decoded event type, optional contract scope) pair the sparse probe\n * checks. Contract scoping is what makes token-subgraph reindexes leap over\n * everything that isn't their token. */\nexport type SparseProbeTarget = { eventType: string; contractId?: string };\n\n/** Sparse scanning is sound only when EVERY source is an event-type filter —\n * a contract_call/contract_deploy source matches transactions, which the\n * event probe can't see. */\nexport function canSparseScan(subgraph: SubgraphDefinition): boolean {\n\tif (Array.isArray(subgraph.sources)) return false;\n\tconst filters = sourceFilters(subgraph);\n\tif (filters.length === 0) return false;\n\treturn filters.every((f) => Boolean(EVENT_FILTER_TO_INDEX_TYPE[f.type]));\n}\n\n/** Probe targets for a subgraph's filters: decoded type + contract scope when\n * the filter pins one (assetIdentifier \"SP….contract::asset\" or contractId). */\nexport function sparseProbeTargets(\n\tsubgraph: SubgraphDefinition,\n): SparseProbeTarget[] {\n\tconst targets = new Map<string, SparseProbeTarget>();\n\tfor (const f of sourceFilters(subgraph)) {\n\t\tconst eventType = EVENT_FILTER_TO_INDEX_TYPE[f.type];\n\t\tif (!eventType) continue;\n\t\tconst scoped = f as { assetIdentifier?: string; contractId?: string };\n\t\tconst contractId =\n\t\t\tscoped.contractId ?? scoped.assetIdentifier?.split(\"::\")[0];\n\t\tconst key = `${eventType}|${contractId ?? \"\"}`;\n\t\ttargets.set(key, { eventType, ...(contractId ? { contractId } : {}) });\n\t}\n\treturn [...targets.values()];\n}\n\n/** Reads directly from the shared indexer Postgres (the original behavior). */\nexport class PostgresBlockSource implements BlockSource {\n\tasync getTip(): Promise<number> {\n\t\tconst progress = await getSourceDb()\n\t\t\t.selectFrom(\"index_progress\")\n\t\t\t.selectAll()\n\t\t\t.where(\"network\", \"=\", process.env.NETWORK ?? \"mainnet\")\n\t\t\t.executeTakeFirst();\n\t\treturn progress ? Number(progress.highest_seen_block) : 0;\n\t}\n\n\tloadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\treturn loadBlockRange(getSourceDb(), fromHeight, toHeight);\n\t}\n}\n\n// Subgraph source filter types that map to a decoded Index event_type. The\n// `_event` suffix is the runtime's raw form; print is keyed `print_event`.\nconst EVENT_FILTER_TO_INDEX_TYPE: Record<string, string> = {\n\tstx_transfer: \"stx_transfer\",\n\tstx_mint: \"stx_mint\",\n\tstx_burn: \"stx_burn\",\n\tstx_lock: \"stx_lock\",\n\tft_transfer: \"ft_transfer\",\n\tft_mint: \"ft_mint\",\n\tft_burn: \"ft_burn\",\n\tnft_transfer: \"nft_transfer\",\n\tnft_mint: \"nft_mint\",\n\tnft_burn: \"nft_burn\",\n\tprint_event: \"print\",\n};\n\n// Tx-level source types — matched against /v1/index/transactions, not events.\nconst TX_SOURCE_TYPES = new Set([\"contract_call\", \"contract_deploy\"]);\nconst ALL_INDEX_EVENT_TYPES = [\n\t...new Set(Object.values(EVENT_FILTER_TO_INDEX_TYPE)),\n];\n\nfunction sourceFilters(subgraph: SubgraphDefinition): SubgraphFilter[] {\n\tconst sources = subgraph.sources;\n\treturn Array.isArray(sources)\n\t\t? (sources as SubgraphFilter[])\n\t\t: Object.values(sources as Record<string, SubgraphFilter>);\n}\n\n/**\n * True when any source matches transactions (contract_call / contract_deploy):\n * the handler receives the full tx, so the loader must fetch real transactions.\n * Event-only subgraphs skip walkTransactions and synthesize the tx from joined\n * event context instead (the ~37x reindex over-fetch; see indexing-speed plan).\n */\nexport function needsTransactionData(subgraph: SubgraphDefinition): boolean {\n\treturn sourceFilters(subgraph).some((f) => TX_SOURCE_TYPES.has(f.type));\n}\n\n/** Build the (few) event-bearing txs from joined event context, one per tx_id —\n * the event-only replacement for draining every transaction in the range. */\nfunction synthesizeTxsFromEvents(events: IndexEventRow[]): Transaction[] {\n\tconst byId = new Map<string, Transaction>();\n\tfor (const e of events) {\n\t\tif (!byId.has(e.tx_id)) byId.set(e.tx_id, reconstructTxFromEventRow(e));\n\t}\n\treturn [...byId.values()];\n}\n\n/**\n * The Index event_types the loader must fetch for a set of source filter types.\n * A contract_call/contract_deploy source matches a tx and hands its FULL event\n * set to the handler, so when one is present we fetch every event type (the\n * matched tx's events must be complete); otherwise just the referenced types.\n * Shared by the subgraph loader and the chain-trigger evaluator.\n */\nexport function indexEventTypesForFilterTypes(filterTypes: string[]): string[] {\n\tif (filterTypes.some((t) => TX_SOURCE_TYPES.has(t))) {\n\t\treturn ALL_INDEX_EVENT_TYPES;\n\t}\n\tconst types = new Set<string>();\n\tfor (const t of filterTypes) {\n\t\tconst indexType = EVENT_FILTER_TO_INDEX_TYPE[t];\n\t\tif (indexType) types.add(indexType);\n\t}\n\treturn [...types];\n}\n\nfunction referencedIndexEventTypes(subgraph: SubgraphDefinition): string[] {\n\treturn indexEventTypesForFilterTypes(\n\t\tsourceFilters(subgraph).map((f) => f.type),\n\t);\n}\n\n/**\n * streams-index eligibility: every source must be a known event-type or\n * contract_call/contract_deploy filter (no array-style sources, which leak the\n * unreconstructable `_eventId`). Trait scope IS allowed — trait resolution\n * reads the contract registry on the platform DB (`targetDb`), which the\n * processor always holds, so it's source-independent. Everything else stays on\n * the DB tap.\n */\nexport function isStreamsIndexEligible(subgraph: SubgraphDefinition): boolean {\n\tif (Array.isArray(subgraph.sources)) return false;\n\tconst filters = sourceFilters(subgraph);\n\tif (filters.length === 0) return false;\n\tfor (const f of filters) {\n\t\tconst known =\n\t\t\tEVENT_FILTER_TO_INDEX_TYPE[f.type] || TX_SOURCE_TYPES.has(f.type);\n\t\tif (!known) return false;\n\t}\n\treturn true;\n}\n\n/** Streams clock + Index data plane, reconstructed into raw BlockData rows. */\nexport class PublicApiBlockSource implements BlockSource {\n\tconstructor(\n\t\tprivate readonly http: IndexHttpClient,\n\t\tprivate readonly eventTypes: string[],\n\t\t/** When set, enables the sparse-scan probe (event-scoped subgraphs). */\n\t\tprivate readonly probeTargets?: SparseProbeTarget[],\n\t\t/** False for event-only subgraphs → skip walkTransactions, synthesize the\n\t\t * tx from joined event context. Defaults true (safe / unchanged). */\n\t\tprivate readonly needsTransactions = true,\n\t) {}\n\n\t/** Lowest height in (after, until] any probe target hits, or null. */\n\tasync nextDataHeight(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null> {\n\t\tif (!this.probeTargets?.length) return afterHeight + 1;\n\t\tconst hits = await Promise.all(\n\t\t\tthis.probeTargets.map((t) =>\n\t\t\t\tthis.http.firstEventHeight(\n\t\t\t\t\tt.eventType,\n\t\t\t\t\tafterHeight + 1,\n\t\t\t\t\tuntilHeight,\n\t\t\t\t\tt.contractId,\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t\tconst found = hits.filter((h): h is number => h !== null);\n\t\treturn found.length ? Math.min(...found) : null;\n\t}\n\n\tgetTip(): Promise<number> {\n\t\t// Bound advancement to what the Index data plane can serve — never\n\t\t// process past it even if the Streams clock is ahead.\n\t\treturn this.http.getIndexTip();\n\t}\n\n\tasync loadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\t// Event-only subgraphs join tx context onto events (withTx) and skip the\n\t\t// walkTransactions over-fetch entirely; tx-level sources fetch real txs.\n\t\tconst withTx = !this.needsTransactions;\n\t\tconst [blocks, txRows, eventLists] = await Promise.all([\n\t\t\tthis.http.walkBlocks(fromHeight, toHeight),\n\t\t\tthis.needsTransactions\n\t\t\t\t? this.http.walkTransactions(fromHeight, toHeight)\n\t\t\t\t: Promise.resolve<IndexTransactionRow[]>([]),\n\t\t\tPromise.all(\n\t\t\t\tthis.eventTypes.map((t) =>\n\t\t\t\t\tthis.http.walkEvents(t, fromHeight, toHeight, withTx),\n\t\t\t\t),\n\t\t\t),\n\t\t]);\n\n\t\tconst map = new Map<number, BlockData>();\n\t\t// Seed every canonical height (incl. empty blocks) so catch-up doesn't\n\t\t// file them as gaps.\n\t\tfor (const b of blocks) {\n\t\t\tmap.set(b.block_height, {\n\t\t\t\tblock: reconstructBlock(b),\n\t\t\t\ttxs: [],\n\t\t\t\tevents: [],\n\t\t\t});\n\t\t}\n\t\t// For event-only subgraphs, materialize only the event-bearing txs from\n\t\t// joined event context instead of every transaction in the range.\n\t\tconst txs = this.needsTransactions\n\t\t\t? txRows.map(reconstructTransaction)\n\t\t\t: synthesizeTxsFromEvents(eventLists.flat());\n\t\tfor (const t of txs) {\n\t\t\tmap.get(t.block_height)?.txs.push(t);\n\t\t}\n\t\tfor (const list of eventLists) {\n\t\t\tfor (const e of list) {\n\t\t\t\tmap.get(e.block_height)?.events.push(reconstructEvent(e));\n\t\t\t}\n\t\t}\n\t\t// Canonical ordering — multi-type event walks merge here.\n\t\tfor (const bd of map.values()) {\n\t\t\tbd.txs.sort((a, b) => a.tx_index - b.tx_index);\n\t\t\tbd.events.sort((a, b) => a.event_index - b.event_index);\n\t\t}\n\t\treturn map;\n\t}\n}\n\n/**\n * Wraps a primary source and falls back to a secondary, per call, when the\n * primary throws. Use it to make the HTTP (Streams+Index) plane a SOFT dependency:\n * if api is unavailable, the processor reads the Postgres tap and keeps advancing\n * instead of stalling. Safe to mix mid-stream — both taps read the same canonical\n * chain at the same heights and the cursor is forward-only. Stateless (no breaker)\n * so it's failover-safe across replicas; the primary is retried every call and\n * resumes transparently once healthy.\n */\nexport class FallbackBlockSource implements BlockSource {\n\tconstructor(\n\t\tprivate readonly primary: BlockSource,\n\t\tprivate readonly fallback: BlockSource,\n\t) {}\n\n\tasync getTip(): Promise<number> {\n\t\ttry {\n\t\t\treturn await this.primary.getTip();\n\t\t} catch (err) {\n\t\t\tlogger.warn(\"block source primary getTip failed — using DB tap\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\treturn this.fallback.getTip();\n\t\t}\n\t}\n\n\tasync loadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\ttry {\n\t\t\treturn await this.primary.loadBlockRange(fromHeight, toHeight);\n\t\t} catch (err) {\n\t\t\tlogger.warn(\"block source primary loadBlockRange failed — using DB tap\", {\n\t\t\t\tfrom: fromHeight,\n\t\t\t\tto: toHeight,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\treturn this.fallback.loadBlockRange(fromHeight, toHeight);\n\t\t}\n\t}\n\n\t/** Probe via the primary only; a probe failure just means \"no skip\" —\n\t * the caller falls back to plain batch advancement. */\n\tasync nextDataHeight(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null> {\n\t\tif (!this.primary.nextDataHeight) return afterHeight + 1;\n\t\ttry {\n\t\t\treturn await this.primary.nextDataHeight(afterHeight, untilHeight);\n\t\t} catch {\n\t\t\treturn afterHeight + 1;\n\t\t}\n\t}\n}\n\nconst postgresBlockSource = new PostgresBlockSource();\n\n/**\n * HTTP (Streams+Index) chain source for a set of decoded event types, wrapped so\n * it falls back to the Postgres tap when api is down. Used by the chain-trigger\n * evaluator (which isn't subgraph-scoped, so it can't go through resolveBlockSource).\n */\nexport function buildChainBlockSource(eventTypes: string[]): BlockSource {\n\treturn new FallbackBlockSource(\n\t\tnew PublicApiBlockSource(buildHttpClient(), eventTypes),\n\t\tpostgresBlockSource,\n\t);\n}\n\nexport function buildHttpClient(): IndexHttpClient {\n\treturn createInternalIndexHttpClient();\n}\n\n/**\n * Resolve the block source for a subgraph. `SUBGRAPH_SOURCE=streams-index`\n * opts eligible subgraphs onto the public Streams clock + Index data; everything\n * else (and the default) stays on the Postgres tap.\n */\nexport function resolveBlockSource(subgraph?: SubgraphDefinition): BlockSource {\n\tif (\n\t\tprocess.env.SUBGRAPH_SOURCE === \"streams-index\" &&\n\t\tsubgraph &&\n\t\tisStreamsIndexEligible(subgraph)\n\t) {\n\t\t// Soft-depend on api: fall back to the Postgres tap per-call if the HTTP\n\t\t// plane is down, so the processor keeps advancing instead of stalling.\n\t\treturn new FallbackBlockSource(\n\t\t\tnew PublicApiBlockSource(\n\t\t\t\tbuildHttpClient(),\n\t\t\t\treferencedIndexEventTypes(subgraph),\n\t\t\t\tcanSparseScan(subgraph) ? sparseProbeTargets(subgraph) : undefined,\n\t\t\t\tneedsTransactionData(subgraph),\n\t\t\t),\n\t\t\tpostgresBlockSource,\n\t\t);\n\t}\n\tif (process.env.SUBGRAPH_SOURCE === \"streams-index\" && subgraph) {\n\t\tlogger.debug(\"Subgraph not streams-index eligible, using DB tap\", {\n\t\t\tsubgraph: subgraph.name,\n\t\t});\n\t}\n\treturn postgresBlockSource;\n}\n",
15
15
  "import type {\n\tBlock,\n\tDatabase,\n\tEvent,\n\tTransaction,\n} from \"@secondlayer/shared/db\";\nimport type { Kysely } from \"kysely\";\n\nexport interface BlockData {\n\tblock: Block;\n\ttxs: Transaction[];\n\tevents: Event[];\n}\n\n/**\n * Load a range of blocks with their transactions and events in 3 parallel queries.\n * Returns a Map keyed by block height. Non-canonical blocks are excluded.\n */\nexport async function loadBlockRange(\n\tdb: Kysely<Database>,\n\tfromHeight: number,\n\ttoHeight: number,\n): Promise<Map<number, BlockData>> {\n\tconst [blocks, txs, events] = await Promise.all([\n\t\tdb\n\t\t\t.selectFrom(\"blocks\")\n\t\t\t.selectAll()\n\t\t\t.where(\"height\", \">=\", fromHeight)\n\t\t\t.where(\"height\", \"<=\", toHeight)\n\t\t\t.where(\"canonical\", \"=\", true)\n\t\t\t.execute(),\n\t\tdb\n\t\t\t.selectFrom(\"transactions\")\n\t\t\t.selectAll()\n\t\t\t.where(\"block_height\", \">=\", fromHeight)\n\t\t\t.where(\"block_height\", \"<=\", toHeight)\n\t\t\t.execute(),\n\t\tdb\n\t\t\t.selectFrom(\"events\")\n\t\t\t.selectAll()\n\t\t\t.where(\"block_height\", \">=\", fromHeight)\n\t\t\t.where(\"block_height\", \"<=\", toHeight)\n\t\t\t.execute(),\n\t]);\n\n\t// Index by block height (coerce to number — bigint columns may return as string or number)\n\tconst txsByHeight = new Map<number, Transaction[]>();\n\tfor (const tx of txs) {\n\t\tconst h = Number(tx.block_height);\n\t\tconst list = txsByHeight.get(h) ?? [];\n\t\tlist.push(tx);\n\t\ttxsByHeight.set(h, list);\n\t}\n\n\tconst eventsByHeight = new Map<number, Event[]>();\n\tfor (const evt of events) {\n\t\tconst h = Number(evt.block_height);\n\t\tconst list = eventsByHeight.get(h) ?? [];\n\t\tlist.push(evt);\n\t\teventsByHeight.set(h, list);\n\t}\n\n\tconst result = new Map<number, BlockData>();\n\tfor (const block of blocks) {\n\t\tconst h = Number(block.height);\n\t\tresult.set(h, {\n\t\t\tblock,\n\t\t\ttxs: txsByHeight.get(h) ?? [],\n\t\t\tevents: eventsByHeight.get(h) ?? [],\n\t\t});\n\t}\n\n\treturn result;\n}\n\n/**\n * Compute average events per block from a loaded batch.\n * Used for adaptive batch sizing.\n */\nexport function avgEventsPerBlock(batch: Map<number, BlockData>): number {\n\tif (batch.size === 0) return 0;\n\tlet totalEvents = 0;\n\tfor (const data of batch.values()) {\n\t\ttotalEvents += data.events.length;\n\t}\n\treturn totalEvents / batch.size;\n}\n",
16
16
  "import type { Block, Event, Transaction } from \"@secondlayer/shared/db\";\nimport type {\n\tIndexBlockRow,\n\tIndexEventRow,\n\tIndexTransactionRow,\n} from \"@secondlayer/shared/index-http\";\n\nexport type {\n\tIndexBlockRow,\n\tIndexEventRow,\n\tIndexTransactionRow,\n} from \"@secondlayer/shared/index-http\";\n\n/**\n * Reconstruct the raw `blocks`/`events` row shapes the subgraph runtime expects\n * (the shapes `matchSources` + the handler runner read) from the decoded,\n * flattened rows the public Index API serves. This is what lets\n * `PublicApiBlockSource` feed the EXISTING pipeline byte-identically to the\n * Postgres tap.\n *\n * Two shape gaps the Index API can't avoid, handled here:\n * - Index event rows are flat (`event_type: \"ft_transfer\"`, columns\n * `sender`/`amount`/…); the runtime expects the node's nested `data` keyed by\n * a suffixed `type` (`ft_transfer_event`), with print under `contract_event`.\n * - nft/print Clarity values: the runtime decodes from the canonical hex\n * (`raw_value`), so we place the Index hex there. (The node's verbose\n * serde-tagged `value`, e.g. `{UInt:223}`, is not reproducible from hex and\n * is no longer read — see the nft tokenId normalization in runner.ts.)\n */\n\n/** ISO `block_time` (or null) → unix-seconds integer the runtime expects. */\nfunction isoToUnixSeconds(iso: string | null): number {\n\tif (!iso) return 0;\n\treturn Math.floor(new Date(iso).getTime() / 1000);\n}\n\nexport function reconstructBlock(b: IndexBlockRow): Block {\n\treturn {\n\t\theight: b.block_height,\n\t\thash: b.block_hash,\n\t\tparent_hash: b.parent_hash,\n\t\tburn_block_height: b.burn_block_height,\n\t\tburn_block_hash: b.burn_block_hash,\n\t\t// Present since the blocks endpoint started serving it; older API\n\t\t// deployments omit it, and a null propagates to a clean refusal in\n\t\t// `ctx.client.readOnly` rather than an unpinned tip read.\n\t\tindex_block_hash: b.index_block_hash ?? null,\n\t\ttimestamp: isoToUnixSeconds(b.block_time),\n\t\t// Index serves canonical rows only.\n\t\tcanonical: true,\n\t\tcreated_at: new Date(0),\n\t} as Block;\n}\n\nexport function reconstructTransaction(t: IndexTransactionRow): Transaction {\n\treturn {\n\t\ttx_id: t.tx_id,\n\t\tblock_height: t.block_height,\n\t\ttx_index: t.tx_index,\n\t\ttype: t.tx_type,\n\t\tsender: t.sender,\n\t\tstatus: t.status,\n\t\tcontract_id:\n\t\t\tt.contract_call?.contract_id ?? t.smart_contract?.contract_id ?? null,\n\t\tfunction_name: t.contract_call?.function_name ?? null,\n\t\t// Raw hex ClarityValues — the runner decodes them via its own deserializeCV\n\t\t// path, identical to the DB tap.\n\t\tfunction_args: t.contract_call?.function_args_hex ?? [],\n\t\traw_result: t.contract_call?.result_hex ?? null,\n\t\traw_tx: \"\",\n\t\tcreated_at: new Date(0),\n\t} as Transaction;\n}\n\n/**\n * Build a minimal canonical Transaction from an event row's joined tx context\n * (`tx_context=true` on /v1/index/events). For event-only subgraphs this lets\n * the loader materialize only the txs that actually carry a matched event,\n * instead of draining every transaction in the range (the ~37x reindex\n * over-fetch — see docs/sprints/indexing-speed/plan.md). `function_args` /\n * `raw_result` are empty: an event source never reads them (contract_call-only).\n */\nexport function reconstructTxFromEventRow(e: IndexEventRow): Transaction {\n\treturn {\n\t\ttx_id: e.tx_id,\n\t\tblock_height: e.block_height,\n\t\ttx_index: e.tx_index ?? 0,\n\t\ttype: e.tx_type ?? \"\",\n\t\tsender: e.tx_sender ?? \"\",\n\t\tstatus: e.tx_status ?? \"success\",\n\t\tcontract_id: e.tx_contract_id ?? null,\n\t\tfunction_name: e.tx_function_name ?? null,\n\t\tfunction_args: [],\n\t\traw_result: null,\n\t\traw_tx: \"\",\n\t\tcreated_at: new Date(0),\n\t} as Transaction;\n}\n\nexport function reconstructEvent(e: IndexEventRow): Event {\n\tconst base = {\n\t\t// Synthetic, deterministic id. The runtime only reads `id` for error logs\n\t\t// and the `*`-wildcard payload (which is streams-index-ineligible).\n\t\tid: `${e.tx_id}#${e.event_index}`,\n\t\ttx_id: e.tx_id,\n\t\tblock_height: e.block_height,\n\t\tevent_index: e.event_index,\n\t\tcreated_at: new Date(0),\n\t};\n\n\tswitch (e.event_type) {\n\t\tcase \"ft_transfer\":\n\t\tcase \"ft_mint\":\n\t\tcase \"ft_burn\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: `${e.event_type}_event`,\n\t\t\t\tdata: {\n\t\t\t\t\tasset_identifier: e.asset_identifier,\n\t\t\t\t\tsender: e.sender,\n\t\t\t\t\trecipient: e.recipient,\n\t\t\t\t\tamount: e.amount,\n\t\t\t\t},\n\t\t\t} as Event;\n\n\t\tcase \"nft_transfer\":\n\t\tcase \"nft_mint\":\n\t\tcase \"nft_burn\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: `${e.event_type}_event`,\n\t\t\t\tdata: {\n\t\t\t\t\tasset_identifier: e.asset_identifier,\n\t\t\t\t\tsender: e.sender,\n\t\t\t\t\trecipient: e.recipient,\n\t\t\t\t\t// Canonical hex → runner decodes tokenId from raw_value.\n\t\t\t\t\traw_value: e.value,\n\t\t\t\t},\n\t\t\t} as Event;\n\n\t\tcase \"stx_transfer\":\n\t\tcase \"stx_mint\":\n\t\tcase \"stx_burn\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: `${e.event_type}_event`,\n\t\t\t\tdata: {\n\t\t\t\t\tsender: e.sender,\n\t\t\t\t\trecipient: e.recipient,\n\t\t\t\t\tamount: e.amount,\n\t\t\t\t\t// Raw stx_transfer always carries memo (\"\" when empty); Index\n\t\t\t\t\t// returns null for empty — default to \"\" to match the DB tap.\n\t\t\t\t\t...(e.event_type === \"stx_transfer\" ? { memo: e.memo ?? \"\" } : {}),\n\t\t\t\t},\n\t\t\t} as Event;\n\n\t\tcase \"stx_lock\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: \"stx_lock_event\",\n\t\t\t\tdata: {\n\t\t\t\t\tlocked_address: e.sender,\n\t\t\t\t\tlocked_amount: e.amount,\n\t\t\t\t\tunlock_height: e.payload.unlock_height,\n\t\t\t\t},\n\t\t\t} as Event;\n\n\t\tcase \"print\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: \"contract_event\",\n\t\t\t\tdata: {\n\t\t\t\t\ttopic: e.payload.topic,\n\t\t\t\t\t// Matcher + runner read `contract_identifier` (the raw node field).\n\t\t\t\t\tcontract_identifier: e.contract_id,\n\t\t\t\t\tvalue: e.payload.value,\n\t\t\t\t\traw_value: e.payload.raw_value,\n\t\t\t\t},\n\t\t\t} as Event;\n\t}\n}\n",
17
17
  "import { createHash } from \"node:crypto\";\nimport type { Database } from \"@secondlayer/shared/db\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport type { Transaction } from \"kysely\";\nimport type { FlushManifest } from \"./context.ts\";\nimport type { SubscriptionMatcher } from \"./emitter-matcher.ts\";\n\n/**\n * Emit subscription outbox rows for every flushed write that matches an\n * active subscription. Inserted inside the caller's transaction — the\n * outbox write commits (or rolls back) atomically with the subgraph row\n * writes. Zero outbox inserts if no subs match or the kill-switch is set.\n *\n * Set `SECONDLAYER_EMIT_OUTBOX=false` to bypass entirely — useful during\n * backfills or when a receiver is known-down and operators want to drain\n * tenant writes without producing dead outbox.\n */\n\nlet loggedKillSwitch = false;\n\n/** Flush op → event-type verb. A subscriber tracking a mutable row sees the\n * full lifecycle (created → updated → deleted), not just the initial insert. */\nconst OP_VERB = {\n\tinsert: \"created\",\n\tupdate: \"updated\",\n\tdelete: \"deleted\",\n} as const;\n\nexport function isEmitOutboxEnabled(): boolean {\n\treturn process.env.SECONDLAYER_EMIT_OUTBOX !== \"false\";\n}\n\nfunction dedupKey(\n\tsubgraphName: string,\n\ttableName: string,\n\tblockHeight: number,\n\ttxId: string,\n\trowIndex: number,\n\trow: Record<string, unknown>,\n): string {\n\t// Hash of row content + position → stable across replays of the same\n\t// block (unique constraint on (subscription_id, dedup_key) catches\n\t// duplicate emits if the block is reprocessed).\n\tconst canonical = `${subgraphName}:${tableName}:${blockHeight}:${txId}:${rowIndex}:${stableStringify(row)}`;\n\treturn createHash(\"sha256\").update(canonical).digest(\"hex\").slice(0, 32);\n}\n\nfunction stableStringify(obj: Record<string, unknown>): string {\n\tconst keys = Object.keys(obj).sort();\n\treturn JSON.stringify(\n\t\tkeys.reduce<Record<string, unknown>>((acc, k) => {\n\t\t\tacc[k] = obj[k];\n\t\t\treturn acc;\n\t\t}, {}),\n\t);\n}\n\nexport async function emitSubscriptionOutbox(\n\ttx: Transaction<Database>,\n\tsubgraphName: string,\n\tmanifest: FlushManifest,\n\tmatcher: SubscriptionMatcher,\n\tblockHeight: number,\n): Promise<number> {\n\tif (!isEmitOutboxEnabled()) {\n\t\tif (!loggedKillSwitch) {\n\t\t\tlogger.warn(\"SECONDLAYER_EMIT_OUTBOX=false — outbox emission bypassed\");\n\t\t\tloggedKillSwitch = true;\n\t\t}\n\t\treturn 0;\n\t}\n\tloggedKillSwitch = false;\n\n\tif (manifest.count === 0 || matcher.size() === 0) return 0;\n\n\ttype OutboxInsert = {\n\t\tsubscription_id: string;\n\t\tsubgraph_name: string;\n\t\ttable_name: string;\n\t\tblock_height: number;\n\t\ttx_id: string | null;\n\t\trow_pk: Record<string, unknown>;\n\t\tevent_type: string;\n\t\tpayload: Record<string, unknown>;\n\t\tdedup_key: string;\n\t};\n\n\tconst rows: OutboxInsert[] = [];\n\tfor (const write of manifest.writes) {\n\t\tconst subs = matcher.match(subgraphName, write.table, write.row);\n\t\tif (subs.length === 0) continue;\n\n\t\tconst eventType = `${subgraphName}.${write.table}.${OP_VERB[write.op]}`;\n\t\tfor (const s of subs) {\n\t\t\trows.push({\n\t\t\t\tsubscription_id: s.id,\n\t\t\t\tsubgraph_name: subgraphName,\n\t\t\t\ttable_name: write.table,\n\t\t\t\tblock_height: blockHeight,\n\t\t\t\t// Nullish-only — an empty-string txId is still a value (block-level\n\t\t\t\t// write with no specific tx), not \"no tx\".\n\t\t\t\ttx_id: write.pk.txId ?? null,\n\t\t\t\trow_pk: write.pk,\n\t\t\t\tevent_type: eventType,\n\t\t\t\tpayload: write.row,\n\t\t\t\tdedup_key: dedupKey(\n\t\t\t\t\tsubgraphName,\n\t\t\t\t\twrite.table,\n\t\t\t\t\twrite.pk.blockHeight,\n\t\t\t\t\twrite.pk.txId,\n\t\t\t\t\twrite.pk.rowIndex,\n\t\t\t\t\twrite.row,\n\t\t\t\t),\n\t\t\t});\n\t\t}\n\t}\n\n\tif (rows.length === 0) return 0;\n\n\t// Bulk INSERT with ON CONFLICT DO NOTHING on (subscription_id, dedup_key)\n\t// so a replayed block is a no-op instead of an error.\n\tawait tx\n\t\t.insertInto(\"subscription_outbox\")\n\t\t.values(rows)\n\t\t.onConflict((oc) =>\n\t\t\toc.columns([\"subscription_id\", \"dedup_key\"]).doNothing(),\n\t\t)\n\t\t.execute();\n\n\treturn rows.length;\n}\n",
@@ -27,9 +27,9 @@
27
27
  "import { getErrorMessage } from \"@secondlayer/shared\";\nimport type { Database } from \"@secondlayer/shared/db\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport type { Kysely } from \"kysely\";\n\n/**\n * Email an account when their subgraph's reindex/backfill finishes — the\n * counterpart to the CLI/dashboard ETA (they still had to leave a terminal or\n * tab open to see either). Fire-and-forget: a failed send only logs a\n * warning, never fails or retries against the reindex itself.\n *\n * Mirrors the Resend pattern in\n * `packages/worker/src/jobs/spend-cap-alert.ts` (`sendCapAlert`) — same env\n * vars, same \"log and skip\" behavior when unconfigured.\n */\nexport async function notifyReindexComplete(\n\tdb: Kysely<Database>,\n\tsubgraphName: string,\n\tstats: { blocks: number; events: number; errors: number },\n): Promise<void> {\n\ttry {\n\t\tconst subgraph = await db\n\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t.select([\"account_id\"])\n\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t.executeTakeFirst();\n\t\tif (!subgraph) return;\n\n\t\tconst account = await db\n\t\t\t.selectFrom(\"accounts\")\n\t\t\t.select([\"email\", \"notify_reindex_complete\"])\n\t\t\t.where(\"id\", \"=\", subgraph.account_id)\n\t\t\t.executeTakeFirst();\n\t\tif (!account?.email || !account.notify_reindex_complete) return;\n\n\t\tconst resendKey = process.env.RESEND_API_KEY;\n\t\tif (!resendKey) {\n\t\t\tlogger.warn(\"RESEND_API_KEY unset — skipping reindex-complete email\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tconst from =\n\t\t\tprocess.env.EMAIL_FROM ?? \"Secondlayer <noreply@secondlayer.tools>\";\n\t\tconst body =\n\t\t\tstats.errors > 0\n\t\t\t\t? `Your subgraph \"${subgraphName}\" finished reindexing — ${stats.blocks.toLocaleString()} blocks, ${stats.events.toLocaleString()} events, ${stats.errors.toLocaleString()} errors. Check the dashboard for details.`\n\t\t\t\t: `Your subgraph \"${subgraphName}\" finished reindexing — ${stats.blocks.toLocaleString()} blocks, ${stats.events.toLocaleString()} events processed, no errors. It's live now.`;\n\n\t\tconst res = await fetch(\"https://api.resend.com/emails\", {\n\t\t\tmethod: \"POST\",\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${resendKey}`,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t},\n\t\t\tbody: JSON.stringify({\n\t\t\t\tfrom,\n\t\t\t\tto: [account.email],\n\t\t\t\tsubject: `Reindex complete: ${subgraphName}`,\n\t\t\t\ttext: body,\n\t\t\t}),\n\t\t});\n\t\tif (!res.ok) {\n\t\t\tconst text = await res.text().catch(() => \"\");\n\t\t\tlogger.warn(\"reindex-complete email failed\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tstatus: res.status,\n\t\t\t\tbody: text.slice(0, 200),\n\t\t\t});\n\t\t}\n\t} catch (err) {\n\t\t// Never let a notification failure affect the reindex result.\n\t\tlogger.warn(\"reindex-complete email threw\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t}\n}\n",
28
28
  "import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getRawClient, getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph } from \"@secondlayer/shared/db\";\nimport { listSubgraphs } from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { sql } from \"kysely\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition, SubgraphSchema } from \"../types.ts\";\nimport { processBlock } from \"./block-processor.ts\";\nimport { bumpReorgEpoch, withSubgraphBlockLock } from \"./catchup.ts\";\n\n/**\n * Handle a chain reorg for all active subgraphs.\n *\n * `blockHeight` is the **shallowest** height where the chain diverged. The\n * indexer's `handleReorg` has already marked every block ≥ `blockHeight`\n * as non-canonical (a Stacks reorg can span many blocks). We mirror that\n * here: delete rows where `_block_height >= blockHeight` from every\n * subgraph table, then reprocess `blockHeight` (subsequent heights will\n * be reprocessed as the indexer ingests new-chain blocks).\n *\n * Subscription receivers that already consumed the now-reverted events\n * need to know about the rollback. We emit one `<table>.reverted` event\n * per affected table per subscription. The receiver is expected to\n * reverse any side-effects keyed on the rolled-back rows; if they ignore\n * revert events, at least we provided the signal.\n */\nexport async function handleSubgraphReorg(\n\tblockHeight: number,\n\tloadSubgraphDef: (sg: Subgraph) => Promise<SubgraphDefinition>,\n): Promise<void> {\n\t// The subgraphs registry + revert-event outbox and every subgraph's data\n\t// plane live on the managed target DB.\n\tconst targetDb = getTargetDb();\n\tconst activeSubgraphs = (await listSubgraphs(targetDb)).filter(\n\t\t(v: Subgraph) => v.status === \"active\",\n\t);\n\n\tif (activeSubgraphs.length === 0) return;\n\n\tlogger.info(\"Propagating reorg to subgraphs\", {\n\t\tblockHeight,\n\t\tsubgraphCount: activeSubgraphs.length,\n\t});\n\n\tfor (const sg of activeSubgraphs) {\n\t\ttry {\n\t\t\tconst schema = sg.definition.schema as SubgraphSchema | undefined;\n\t\t\tif (!schema) continue;\n\n\t\t\t// f057: bump this subgraph's reorg epoch BEFORE taking the block lock\n\t\t\t// (visible immediately, however long the lock wait takes), then hold\n\t\t\t// the lock for the whole delete+reprocess+rewind sequence below. A\n\t\t\t// catch-up walk in flight either (a) is between blocks and about to\n\t\t\t// acquire the lock — it will see the bumped epoch and abort without\n\t\t\t// writing, or (b) already holds the lock for one in-flight block —\n\t\t\t// we wait for it to finish, then proceed; its NEXT block sees the\n\t\t\t// bumped epoch and aborts. Either way our rewind write below is never\n\t\t\t// clobbered by a catch-up write that doesn't know the cursor moved.\n\t\t\t// See the guard comment near `subgraphBlockLockHeld` in catchup.ts.\n\t\t\tbumpReorgEpoch(sg.name);\n\t\t\tawait withSubgraphBlockLock(sg.name, async () => {\n\t\t\t\t// f069: the in-process block lock above only excludes a same-process\n\t\t\t\t// catch-up walk (f057) — `handleSubgraphReorg` itself runs on EVERY\n\t\t\t\t// process (NOTIFY fan-out from processor.ts), so two processes could\n\t\t\t\t// otherwise run this exact revert+reprocess sequence for the same\n\t\t\t\t// subgraph concurrently, double-applying the fork block or racing\n\t\t\t\t// each other's journal restore. A Postgres advisory lock scoped to\n\t\t\t\t// a wrapping transaction on the managed (target) DB closes that:\n\t\t\t\t// held for the WHOLE delete+reprocess+rewind sequence below, since\n\t\t\t\t// `pg_advisory_xact_lock` releases only when this transaction\n\t\t\t\t// commits/rolls back — regardless of how long the callback runs or\n\t\t\t\t// what other connections (the subgraph's own data-plane client,\n\t\t\t\t// `processBlock`'s own separate managed-DB transaction) it awaits\n\t\t\t\t// in the meantime. Transaction-scoped (not session-scoped): nothing\n\t\t\t\t// here needs the lock to outlive this one call, and an xact lock\n\t\t\t\t// can never leak past a crash the way a session lock without a\n\t\t\t\t// matching `finally` unlock could.\n\t\t\t\tawait getTargetDb()\n\t\t\t\t\t.transaction()\n\t\t\t\t\t.execute(async (lockTx) => {\n\t\t\t\t\t\tawait sql`SELECT pg_advisory_xact_lock(hashtext(${`subgraph-reorg:${sg.name}`}))`.execute(\n\t\t\t\t\t\t\tlockTx,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tawait reorgOneSubgraph(sg, schema, blockHeight, loadSubgraphDef);\n\t\t\t\t\t});\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Subgraph reorg handling failed\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t}\n}\n\n/** The per-subgraph revert+reprocess sequence, run while holding both the\n * in-process block lock (f057) and the cross-process advisory lock (f069,\n * see the call site in {@link handleSubgraphReorg}). */\nasync function reorgOneSubgraph(\n\tsg: Subgraph,\n\tschema: SubgraphSchema,\n\tblockHeight: number,\n\tloadSubgraphDef: (sg: Subgraph) => Promise<SubgraphDefinition>,\n): Promise<void> {\n\tconst targetDb = getTargetDb();\n\tconst schemaName = sg.schema_name ?? pgSchemaName(sg.name);\n\t// Rows live on the managed target DB.\n\tconst client = getRawClient(\"target\");\n\n\t// Snapshot affected rows BEFORE deletion so we can surface them\n\t// to subscription receivers as revert events. Cap at 1k rows\n\t// per (table, reorg) to bound memory; deeper reverts are rare\n\t// and at-volume the receiver should be reading from the table\n\t// directly anyway.\n\tconst tableNames = Object.keys(schema);\n\tconst revertedByTable: Record<string, unknown[]> = {};\n\tfor (const tableName of tableNames) {\n\t\tconst rows = await client.unsafe<unknown[]>(\n\t\t\t`SELECT * FROM \"${schemaName}\".\"${tableName}\" WHERE \"_block_height\" >= $1 LIMIT 1000`,\n\t\t\t[blockHeight],\n\t\t);\n\t\tif (rows.length > 0) revertedByTable[tableName] = rows;\n\t}\n\n\t// Revert table state. With a journal: restore each touched row to its\n\t// pre-fork state (accumulators keep their history — fix-f040 B2), then\n\t// sweep append-only rows created at/after the fork. Without one\n\t// (pre-journal deploy), fall back to the height sweep alone — correct\n\t// only for append-only tables.\n\tconst hasJournal = (\n\t\tawait client.unsafe<{ r: unknown }[]>(\n\t\t\t`SELECT to_regclass('\"${schemaName}\".\"_journal\"') AS r`,\n\t\t)\n\t)[0]?.r;\n\tif (hasJournal) {\n\t\tawait client.begin(async (tx) => {\n\t\t\tfor (const tableName of tableNames) {\n\t\t\t\t// Pre-fork state per row = prev_row of the EARLIEST journal\n\t\t\t\t// entry at/after the fork (pre-images compose: the first one\n\t\t\t\t// captured is the state before any fork-era op touched it).\n\t\t\t\t// prev_row NULL = the row was created in the fork era.\n\t\t\t\tconst earliest = `\n\t\t\t\t\tSELECT DISTINCT ON (row_key) row_key, prev_row\n\t\t\t\t\tFROM \"${schemaName}\".\"_journal\"\n\t\t\t\t\tWHERE block_height >= $1 AND table_name = $2\n\t\t\t\t\tORDER BY row_key, _jid ASC`;\n\t\t\t\t// 1. Drop the current (orphaned) versions of journaled rows.\n\t\t\t\tawait tx.unsafe(\n\t\t\t\t\t`DELETE FROM \"${schemaName}\".\"${tableName}\" t USING (${earliest}) e WHERE to_jsonb(t.*) @> e.row_key`,\n\t\t\t\t\t[blockHeight, tableName],\n\t\t\t\t);\n\t\t\t\t// 2. Sweep append-only rows born at/after the fork.\n\t\t\t\tawait tx.unsafe(\n\t\t\t\t\t`DELETE FROM \"${schemaName}\".\"${tableName}\" WHERE \"_block_height\" >= $1`,\n\t\t\t\t\t[blockHeight],\n\t\t\t\t);\n\t\t\t\t// 3. Restore pre-fork row states (pure SQL — NUMERIC precision\n\t\t\t\t// never round-trips through JS). Restored rows were created\n\t\t\t\t// pre-fork, so step 2 cannot have matched them.\n\t\t\t\tawait tx.unsafe(\n\t\t\t\t\t`INSERT INTO \"${schemaName}\".\"${tableName}\"\n\t\t\t\t\t SELECT r.* FROM (${earliest}) e\n\t\t\t\t\t CROSS JOIN LATERAL jsonb_populate_record(NULL::\"${schemaName}\".\"${tableName}\", e.prev_row) r\n\t\t\t\t\t WHERE e.prev_row IS NOT NULL`,\n\t\t\t\t\t[blockHeight, tableName],\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait tx.unsafe(\n\t\t\t\t`DELETE FROM \"${schemaName}\".\"_journal\" WHERE block_height >= $1`,\n\t\t\t\t[blockHeight],\n\t\t\t);\n\t\t});\n\t} else {\n\t\tlogger.warn(\n\t\t\t\"Subgraph has no revert journal — falling back to height delete (accumulator rows may lose history)\",\n\t\t\t{ subgraph: sg.name, blockHeight },\n\t\t);\n\t\tfor (const tableName of tableNames) {\n\t\t\tawait client.unsafe(\n\t\t\t\t`DELETE FROM \"${schemaName}\".\"${tableName}\" WHERE \"_block_height\" >= $1`,\n\t\t\t\t[blockHeight],\n\t\t\t);\n\t\t}\n\t}\n\n\t// Factory-discovered addresses are chain-derived state like any\n\t// row: an address revealed on the orphaned fork must not keep\n\t// matching forever. `IF EXISTS` because the table is only\n\t// created for subgraphs that actually use a factory.\n\tawait client.unsafe(\n\t\t`DO $$ BEGIN\n\t\t\tIF to_regclass('\"${schemaName}\".\"_factory_addresses\"') IS NOT NULL THEN\n\t\t\t\tDELETE FROM \"${schemaName}\".\"_factory_addresses\" WHERE block_height >= ${Number(blockHeight)};\n\t\t\tEND IF;\n\t\tEND $$`,\n\t);\n\n\t// Emit revert events to dependent subscriptions so receivers\n\t// know to roll back. Insert into subscription_outbox with a\n\t// stable dedup_key keyed on (subscription, table, height,\n\t// \"revert\") so a duplicate reorg notification is a no-op.\n\tfor (const [tableName, rows] of Object.entries(revertedByTable)) {\n\t\tif (rows.length === 0) continue;\n\t\tawait targetDb\n\t\t\t.insertInto(\"subscription_outbox\")\n\t\t\t.columns([\n\t\t\t\t\"subscription_id\",\n\t\t\t\t\"subgraph_name\",\n\t\t\t\t\"table_name\",\n\t\t\t\t\"block_height\",\n\t\t\t\t\"event_type\",\n\t\t\t\t\"payload\",\n\t\t\t\t\"dedup_key\",\n\t\t\t\t\"row_pk\",\n\t\t\t\t\"status\",\n\t\t\t])\n\t\t\t.expression((eb) =>\n\t\t\t\teb\n\t\t\t\t\t.selectFrom(\"subscriptions\")\n\t\t\t\t\t.select((eb2) => [\n\t\t\t\t\t\t\"id as subscription_id\",\n\t\t\t\t\t\teb2.val(sg.name).as(\"subgraph_name\"),\n\t\t\t\t\t\teb2.val(tableName).as(\"table_name\"),\n\t\t\t\t\t\teb2.val(blockHeight).as(\"block_height\"),\n\t\t\t\t\t\teb2.val(`${sg.name}.${tableName}.reverted`).as(\"event_type\"),\n\t\t\t\t\t\teb2\n\t\t\t\t\t\t\t.val(\n\t\t\t\t\t\t\t\tJSON.stringify({\n\t\t\t\t\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\t\t\t\t\ttable: tableName,\n\t\t\t\t\t\t\t\t\treorgFromHeight: blockHeight,\n\t\t\t\t\t\t\t\t\trows,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.as(\"payload\"),\n\t\t\t\t\t\teb2\n\t\t\t\t\t\t\t.val(`reorg:${sg.name}:${tableName}:${blockHeight}`)\n\t\t\t\t\t\t\t.as(\"dedup_key\"),\n\t\t\t\t\t\teb2\n\t\t\t\t\t\t\t.val({\n\t\t\t\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\t\t\t\ttable: tableName,\n\t\t\t\t\t\t\t\treorgRoot: blockHeight,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.as(\"row_pk\"),\n\t\t\t\t\t\teb2.val(\"pending\").as(\"status\"),\n\t\t\t\t\t])\n\t\t\t\t\t.where(\"subgraph_name\", \"=\", sg.name)\n\t\t\t\t\t.where(\"table_name\", \"=\", tableName)\n\t\t\t\t\t.where(\"status\", \"=\", \"active\"),\n\t\t\t)\n\t\t\t.onConflict((oc) =>\n\t\t\t\toc.columns([\"subscription_id\", \"dedup_key\"]).doNothing(),\n\t\t\t)\n\t\t\t.execute()\n\t\t\t.catch((err) => {\n\t\t\t\t// Don't fail the reorg cleanup if the revert event\n\t\t\t\t// emission errors — subscriptions can't be more\n\t\t\t\t// broken than they were pre-reorg.\n\t\t\t\tlogger.error(\"Failed to emit revert event for subscriptions\", {\n\t\t\t\t\tevent: \"reorg_revert_emit_dropped\",\n\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\ttable: tableName,\n\t\t\t\t\tblockHeight,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tlogger.info(\"Subgraph reorg cleanup done\", {\n\t\tsubgraph: sg.name,\n\t\tblockHeight,\n\t\ttablesAffected: Object.keys(revertedByTable).length,\n\t});\n\n\t// Reprocess the new canonical block. Subsequent blocks above\n\t// `blockHeight` will be reprocessed as the indexer ingests\n\t// them — they're already marked non-canonical by handleReorg.\n\t// f069: reorgRewind bypasses the live-path replay guard (this height is,\n\t// by construction, at or below the current cursor) and writes the\n\t// checkpoint unconditionally via rewindLiveProgress, moving it backward\n\t// to the fork height instead of skipping as \"already applied.\"\n\tconst def = await loadSubgraphDef(sg);\n\tawait processBlock(def, sg.name, blockHeight, { reorgRewind: true });\n\n\tlogger.info(\"Subgraph reorg reprocessed\", {\n\t\tsubgraph: sg.name,\n\t\tblockHeight,\n\t});\n}\n",
29
29
  "import { randomUUID } from \"node:crypto\";\nimport { hostname } from \"node:os\";\nimport { resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { getErrorMessage } from \"@secondlayer/shared\";\nimport { getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph, SubgraphOperation } from \"@secondlayer/shared/db\";\nimport {\n\tcancelSubgraphOperation,\n\tclaimSubgraphOperation,\n\tcompleteSubgraphOperation,\n\tcreateSubgraphOperation,\n\tfailSubgraphOperation,\n\tfindActiveSubgraphOperation,\n\tgetSubgraphOperation,\n\theartbeatSubgraphOperation,\n\tisActiveSubgraphOperationConflict,\n} from \"@secondlayer/shared/db/queries/subgraph-operations\";\nimport {\n\tlistSubgraphs,\n\tpgSchemaName,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport {\n\tlisten,\n\tsourceListenerUrl,\n\ttargetListenerUrl,\n} from \"@secondlayer/shared/queue/listener\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { invalidateSubgraphRoute } from \"./block-processor.ts\";\nimport { isCatchUpLeader, startCatchUpLeader } from \"./catchup-leader.ts\";\nimport { catchUpSubgraph } from \"./catchup.ts\";\nimport { backfillSubgraph, reindexSubgraph, resumeReindex } from \"./reindex.ts\";\nimport { handleSubgraphReorg } from \"./reorg.ts\";\nimport { startStreamsReorgPoll } from \"./streams-reorg-poll.ts\";\n\nconst CHANNEL_NEW_BLOCK = \"indexer:new_block\";\nconst CHANNEL_SUBGRAPH_OPERATIONS = \"subgraph_operations:new\";\nconst DEFAULT_CONCURRENCY = 5;\nconst DEFAULT_OPERATION_CONCURRENCY = 1;\nconst POLL_INTERVAL_MS = 5_000;\nconst HEARTBEAT_INTERVAL_MS = 15_000;\nconst CANCEL_POLL_INTERVAL_MS = 1_000;\n\n/**\n * Fan-out catch-up across multiple subgraphs with a bounded concurrency pool.\n * Each subgraph's catchUpSubgraph() call is independent — different target\n * schemas, read-only source access. The catchingUp set in catchup.ts guards\n * per-subgraph re-entrancy so concurrent calls for the same name are safe.\n */\nasync function catchUpAll(\n\tsubgraphs: Subgraph[],\n\tdb: ReturnType<typeof getTargetDb>,\n\tconcurrency: number,\n): Promise<void> {\n\tconst queue = [...subgraphs];\n\tconst workers = Array.from(\n\t\t{ length: Math.min(concurrency, queue.length) },\n\t\tasync () => {\n\t\t\twhile (queue.length > 0) {\n\t\t\t\tconst sg = queue.shift();\n\t\t\t\tif (!sg) break;\n\t\t\t\ttry {\n\t\t\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconst msg = getErrorMessage(err);\n\t\t\t\t\tif (isHandlerNotFoundError(err)) {\n\t\t\t\t\t\tawait updateSubgraphStatus(db, sg.name, \"error\");\n\t\t\t\t\t}\n\t\t\t\t\tlogger.error(\"Subgraph catch-up failed\", {\n\t\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\t\terror: msg,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t);\n\tawait Promise.allSettled(workers);\n}\n\nfunction handlerImportUrl(handlerPath: string, cacheBust = Date.now()) {\n\treturn `${pathToFileURL(resolve(handlerPath)).href}?t=${cacheBust}`;\n}\n\nfunction isHandlerNotFoundError(err: unknown): boolean {\n\tif (!(err instanceof Error)) return false;\n\tconst code = (err as NodeJS.ErrnoException).code;\n\tif (\n\t\tcode === \"MODULE_NOT_FOUND\" ||\n\t\tcode === \"ERR_MODULE_NOT_FOUND\" ||\n\t\tcode === \"ENOENT\"\n\t)\n\t\treturn true;\n\t// fallback: Bun may not always set code on dynamic import failures\n\treturn (\n\t\terr.message.includes(\"Cannot find module\") || err.message.includes(\"ENOENT\")\n\t);\n}\n\n// Caches for hot-reload detection — only re-import when version changes\nconst knownVersions = new Map<string, string>();\nconst definitionCache = new Map<string, SubgraphDefinition>();\n\n/**\n * Load a SubgraphDefinition, reusing the cache unless the version changed.\n * On version change, writes latest handler_code from DB to disk and\n * cache-busts the dynamic import.\n */\nasync function loadSubgraphDefinition(\n\tsg: Subgraph,\n): Promise<SubgraphDefinition> {\n\tconst cached = definitionCache.get(sg.name);\n\tif (cached && knownVersions.get(sg.name) === sg.version) {\n\t\treturn cached;\n\t}\n\n\t// Write latest handler code from DB to disk before importing\n\tif (sg.handler_code) {\n\t\tconst { mkdirSync, writeFileSync } = await import(\"node:fs\");\n\t\tconst { dirname } = await import(\"node:path\");\n\t\tmkdirSync(dirname(sg.handler_path), { recursive: true });\n\t\twriteFileSync(sg.handler_path, sg.handler_code);\n\t}\n\n\tconst mod = await import(handlerImportUrl(sg.handler_path));\n\tconst def = mod.default ?? mod;\n\n\tconst prevVersion = knownVersions.get(sg.name);\n\tknownVersions.set(sg.name, sg.version);\n\tdefinitionCache.set(sg.name, def);\n\n\tif (prevVersion && prevVersion !== sg.version) {\n\t\t// A redeploy changes handler code/version, so drop the cached route\n\t\t// alongside the handler def.\n\t\tinvalidateSubgraphRoute(sg.name);\n\t\tlogger.info(\"Subgraph handler reloaded\", {\n\t\t\tsubgraph: sg.name,\n\t\t\tfrom: prevVersion,\n\t\t\tto: sg.version,\n\t\t});\n\t}\n\n\treturn def;\n}\n\n/** Remove cached entries for subgraphs that no longer exist. */\nfunction cleanupCaches(active: Subgraph[]): void {\n\tconst names = new Set(active.map((sg) => sg.name));\n\tfor (const name of knownVersions.keys()) {\n\t\tif (!names.has(name)) {\n\t\t\tknownVersions.delete(name);\n\t\t\tdefinitionCache.delete(name);\n\t\t\tinvalidateSubgraphRoute(name);\n\t\t}\n\t}\n}\n\nasync function synthesizeLegacyReindexOperations(): Promise<void> {\n\tconst db = getTargetDb();\n\tconst stale = (await listSubgraphs(db)).filter(\n\t\t(sg) => sg.status === \"reindexing\",\n\t);\n\n\tfor (const sg of stale) {\n\t\tconst active = await findActiveSubgraphOperation(db, sg.id);\n\t\tif (active) continue;\n\n\t\ttry {\n\t\t\tawait createSubgraphOperation(db, {\n\t\t\t\tsubgraphId: sg.id,\n\t\t\t\tsubgraphName: sg.name,\n\t\t\t\taccountId: sg.account_id,\n\t\t\t\tkind: \"reindex\",\n\t\t\t\tfromBlock:\n\t\t\t\t\tsg.reindex_from_block == null\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: Number(sg.reindex_from_block),\n\t\t\t\ttoBlock:\n\t\t\t\t\tsg.reindex_to_block == null ? undefined : Number(sg.reindex_to_block),\n\t\t\t});\n\t\t\tlogger.info(\"Queued legacy reindex resume operation\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (isActiveSubgraphOperationConflict(err)) continue;\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nasync function runSubgraphOperation(\n\toperation: SubgraphOperation,\n\tsignal: AbortSignal,\n): Promise<number> {\n\tif (operation.cancel_requested) {\n\t\treturn 0;\n\t}\n\n\tconst db = getTargetDb();\n\tconst subgraph = await db\n\t\t.selectFrom(\"subgraphs\")\n\t\t.selectAll()\n\t\t.where(\"id\", \"=\", operation.subgraph_id)\n\t\t.executeTakeFirst();\n\tif (!subgraph)\n\t\tthrow new Error(`Subgraph not found: ${operation.subgraph_id}`);\n\n\tconst def = await loadSubgraphDefinition(subgraph);\n\tconst schemaName = subgraph.schema_name ?? pgSchemaName(subgraph.name);\n\n\tif (operation.kind === \"backfill\") {\n\t\tif (operation.from_block == null || operation.to_block == null) {\n\t\t\tthrow new Error(\"Backfill operation is missing from_block or to_block\");\n\t\t}\n\t\t// Resume from the op's own checkpoint: committed blocks never replay.\n\t\tconst resumeFrom =\n\t\t\toperation.cursor_block != null\n\t\t\t\t? Math.max(\n\t\t\t\t\t\tNumber(operation.from_block),\n\t\t\t\t\t\tNumber(operation.cursor_block) + 1,\n\t\t\t\t\t)\n\t\t\t\t: Number(operation.from_block);\n\t\tconst result = await backfillSubgraph(def, {\n\t\t\tfromBlock: resumeFrom,\n\t\t\ttoBlock: Number(operation.to_block),\n\t\t\tschemaName,\n\t\t\toperationId: operation.id,\n\t\t\tsignal,\n\t\t});\n\t\treturn result.processed;\n\t}\n\n\tconst hasResumeMetadata =\n\t\tsubgraph.status === \"reindexing\" &&\n\t\tsubgraph.reindex_from_block != null &&\n\t\tsubgraph.reindex_to_block != null;\n\n\tif (hasResumeMetadata) {\n\t\tconst result = await resumeReindex(def, {\n\t\t\tschemaName,\n\t\t\toperationId: operation.id,\n\t\t\tsignal,\n\t\t});\n\t\treturn result.processed;\n\t}\n\n\tconst result = await reindexSubgraph(def, {\n\t\t// Policy floor only — a reindex always rebuilds [start_block, chain tip].\n\t\t// `operation.to_block` is progress/resume metadata, never a walk bound:\n\t\t// bounding the walk while the drop stays unconditional is what destroyed\n\t\t// sbtc-flows' history (f079).\n\t\tstartBlockFloor:\n\t\t\toperation.from_block == null ? undefined : Number(operation.from_block),\n\t\tschemaName,\n\t\toperationId: operation.id,\n\t\tsignal,\n\t});\n\treturn result.processed;\n}\n\nexport async function startSubgraphOperationRunner(opts?: {\n\tconcurrency?: number;\n}): Promise<() => Promise<void>> {\n\tconst concurrency = opts?.concurrency ?? DEFAULT_OPERATION_CONCURRENCY;\n\tconst db = getTargetDb();\n\tconst lockedBy = `${hostname()}:${process.pid}:${randomUUID()}`;\n\tconst active = new Map<string, AbortController>();\n\tconst activeRuns = new Map<string, Promise<void>>();\n\tlet running = true;\n\tlet draining = false;\n\n\tlogger.info(\"Starting subgraph operation runner\", { concurrency, lockedBy });\n\n\t// Boot-time resume sweep: a processor restart strands any reindex that was\n\t// started inline (deploy-time genesis) or whose op died with the old\n\t// instance — the subgraph sits at status='reindexing' with resume metadata\n\t// and nothing ever picks it up. Re-enqueue a reindex op for each; the\n\t// run path sees the metadata and resumes from last_processed_block + 1.\n\t// The active-op partial-unique constraint makes double-enqueue a no-op.\n\ttry {\n\t\tconst stranded = await db\n\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t.select([\"id\", \"name\", \"account_id\"])\n\t\t\t.where(\"status\", \"=\", \"reindexing\")\n\t\t\t.where(\"reindex_from_block\", \"is not\", null)\n\t\t\t.where(\"reindex_to_block\", \"is not\", null)\n\t\t\t.where(({ not, exists, selectFrom }) =>\n\t\t\t\tnot(\n\t\t\t\t\texists(\n\t\t\t\t\t\tselectFrom(\"subgraph_operations\")\n\t\t\t\t\t\t\t.select(\"id\")\n\t\t\t\t\t\t\t.whereRef(\"subgraph_id\", \"=\", \"subgraphs.id\")\n\t\t\t\t\t\t\t.where(\"status\", \"in\", [\"queued\", \"running\"]),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t)\n\t\t\t.execute();\n\t\tfor (const row of stranded) {\n\t\t\ttry {\n\t\t\t\tawait createSubgraphOperation(db, {\n\t\t\t\t\tsubgraphId: row.id,\n\t\t\t\t\tsubgraphName: row.name,\n\t\t\t\t\taccountId: row.account_id,\n\t\t\t\t\tkind: \"reindex\",\n\t\t\t\t});\n\t\t\t\tlogger.info(\"Re-enqueued stranded reindex\", { subgraph: row.name });\n\t\t\t} catch (err) {\n\t\t\t\tif (!isActiveSubgraphOperationConflict(err)) throw err;\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\t// The sweep is best-effort — a failure must not stop the runner.\n\t\tlogger.warn(\"Stranded-reindex sweep failed\", {\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t}\n\n\tconst startOperation = (operation: SubgraphOperation) => {\n\t\tconst controller = new AbortController();\n\t\tactive.set(operation.id, controller);\n\n\t\tconst heartbeat = setInterval(() => {\n\t\t\tif (!running) return;\n\t\t\theartbeatSubgraphOperation(db, operation.id, lockedBy).catch((err) => {\n\t\t\t\tlogger.warn(\"Subgraph operation heartbeat failed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t});\n\t\t}, HEARTBEAT_INTERVAL_MS);\n\n\t\tconst cancelPoll = setInterval(() => {\n\t\t\tgetSubgraphOperation(db, operation.id)\n\t\t\t\t.then((row) => {\n\t\t\t\t\tif ((!row || row.cancel_requested) && !controller.signal.aborted) {\n\t\t\t\t\t\tcontroller.abort(\"user-cancelled\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tlogger.warn(\"Subgraph operation cancel poll failed\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}, CANCEL_POLL_INTERVAL_MS);\n\n\t\tconst run = (async () => {\n\t\t\tlet processed = 0;\n\t\t\ttry {\n\t\t\t\tif (operation.cancel_requested) {\n\t\t\t\t\tcontroller.abort(\"user-cancelled\");\n\t\t\t\t} else {\n\t\t\t\t\tprocessed = await runSubgraphOperation(operation, controller.signal);\n\t\t\t\t}\n\n\t\t\t\tconst reason = String(controller.signal.reason ?? \"\");\n\t\t\t\tif (controller.signal.aborted && reason === \"user-cancelled\") {\n\t\t\t\t\tawait cancelSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\t\tlogger.info(\"Subgraph operation cancelled\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (controller.signal.aborted) {\n\t\t\t\t\tlogger.info(\"Subgraph operation interrupted\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t\treason,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait completeSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\tlogger.info(\"Subgraph operation completed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\tprocessed,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconst reason = String(controller.signal.reason ?? \"\");\n\t\t\t\tif (controller.signal.aborted && reason === \"shutdown\") {\n\t\t\t\t\tlogger.info(\"Subgraph operation interrupted by shutdown\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (controller.signal.aborted && reason === \"user-cancelled\") {\n\t\t\t\t\tawait cancelSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait failSubgraphOperation(\n\t\t\t\t\tdb,\n\t\t\t\t\toperation.id,\n\t\t\t\t\tlockedBy,\n\t\t\t\t\tgetErrorMessage(err),\n\t\t\t\t\tprocessed,\n\t\t\t\t);\n\t\t\t\tlogger.error(\"Subgraph operation failed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tclearInterval(heartbeat);\n\t\t\t\tclearInterval(cancelPoll);\n\t\t\t\tactive.delete(operation.id);\n\t\t\t\tactiveRuns.delete(operation.id);\n\t\t\t\tif (running) void drain();\n\t\t\t}\n\t\t})();\n\n\t\tactiveRuns.set(operation.id, run);\n\t};\n\n\tconst drain = async () => {\n\t\tif (!running || draining) return;\n\t\tdraining = true;\n\t\ttry {\n\t\t\twhile (running && active.size < concurrency) {\n\t\t\t\tconst operation = await claimSubgraphOperation(db, lockedBy);\n\t\t\t\tif (!operation) break;\n\t\t\t\tstartOperation(operation);\n\t\t\t}\n\t\t} finally {\n\t\t\tdraining = false;\n\t\t}\n\t};\n\n\tawait synthesizeLegacyReindexOperations();\n\tawait drain();\n\n\tconst stopListening = await listen(\n\t\tCHANNEL_SUBGRAPH_OPERATIONS,\n\t\t() => {\n\t\t\tvoid drain();\n\t\t},\n\t\t{ connectionString: targetListenerUrl() },\n\t);\n\n\tconst pollInterval = setInterval(() => {\n\t\tvoid drain();\n\t}, POLL_INTERVAL_MS);\n\n\treturn async () => {\n\t\trunning = false;\n\t\tclearInterval(pollInterval);\n\t\tawait stopListening();\n\t\tfor (const controller of active.values()) {\n\t\t\tcontroller.abort(\"shutdown\");\n\t\t}\n\t\tawait Promise.allSettled(activeRuns.values());\n\t\tlogger.info(\"Subgraph operation runner stopped\");\n\t};\n}\n\n/**\n * Start the subgraph processor service.\n * Listens for new blocks via NOTIFY and processes them through all active subgraphs.\n */\nexport async function startSubgraphProcessor(opts?: {\n\tconcurrency?: number;\n}): Promise<() => Promise<void>> {\n\tconst concurrency = opts?.concurrency ?? DEFAULT_CONCURRENCY;\n\tlet running = true;\n\n\tlogger.info(\"Starting subgraph processor\", { concurrency });\n\n\tconst stopOperations = await startSubgraphOperationRunner({\n\t\tconcurrency: Number.parseInt(\n\t\t\tprocess.env.SUBGRAPH_OPERATION_CONCURRENCY ??\n\t\t\t\tString(DEFAULT_OPERATION_CONCURRENCY),\n\t\t),\n\t});\n\n\t// One catch-up pass over all active subgraphs (subgraphs table lives in the\n\t// target DB). Gated on the catch-up leader: only one process across the fleet\n\t// drives catch-up, so scale-out adds capacity instead of double-processing\n\t// every block. The in-process Set in catchup.ts still guards within a process.\n\tconst runCatchUp = async (): Promise<void> => {\n\t\tif (!running || !isCatchUpLeader()) return;\n\t\tconst db = getTargetDb();\n\t\tconst subgraphs = (await listSubgraphs(db)).filter(\n\t\t\t(v: Subgraph) => v.status === \"active\",\n\t\t);\n\t\tcleanupCaches(subgraphs);\n\t\tawait catchUpAll(subgraphs, db, concurrency);\n\t};\n\n\t// Elect a single catch-up leader; the new leader runs an immediate pass so it\n\t// doesn't wait a poll interval. NOTIFY/poll below are no-ops on non-leaders.\n\tconst stopCatchUpLeader = startCatchUpLeader({ onAcquire: runCatchUp });\n\n\t// Listen for new blocks — NOTIFY is fired from the indexer on the source DB\n\tconst stopListening = await listen(\n\t\tCHANNEL_NEW_BLOCK,\n\t\tasync () => {\n\t\t\t// The NOTIFY payload doesn't include block height — we rely on each\n\t\t\t// subgraph's last_processed_block to determine what to process.\n\t\t\tawait runCatchUp();\n\t\t},\n\t\t{ connectionString: sourceListenerUrl() },\n\t);\n\n\t// Listen for reorgs — also fired from the indexer on the source DB\n\tconst stopReorgListening = await listen(\n\t\t\"subgraph_reorg\",\n\t\tasync (payload: string | undefined) => {\n\t\t\tif (!running) return;\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(payload ?? \"{}\");\n\t\t\t\tconst blockHeight = data.blockHeight;\n\t\t\t\tif (typeof blockHeight === \"number\") {\n\t\t\t\t\tawait handleSubgraphReorg(blockHeight, loadSubgraphDefinition);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"Subgraph reorg handling failed\", {\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t{ connectionString: sourceListenerUrl() },\n\t);\n\n\t// Poll as backup (reads subgraphs table — target DB)\n\tconst pollInterval = setInterval(() => {\n\t\tvoid runCatchUp();\n\t}, POLL_INTERVAL_MS);\n\n\t// Streams is the reorg authority for streams-index subgraphs (the public\n\t// API path has no Postgres NOTIFY). Runs alongside the LISTEN above; both\n\t// drive the idempotent subgraph-reorg handler. The chain-subscription reorg\n\t// rewind runs on its own poll inside the subscription plane below.\n\tconst stopStreamsReorgPoll =\n\t\tprocess.env.SUBGRAPH_SOURCE === \"streams-index\"\n\t\t\t? startStreamsReorgPoll((forkHeight) =>\n\t\t\t\t\thandleSubgraphReorg(forkHeight, loadSubgraphDefinition),\n\t\t\t\t)\n\t\t\t: undefined;\n\n\t// The real-time subscription delivery plane (evaluator + emitter + chain-reorg)\n\t// now runs in the dedicated subscription-processor service, isolated from\n\t// subgraph indexing. This process handles subgraph ops + catch-up + the\n\t// subgraph-reorg rewind only.\n\n\tlogger.info(\"Subgraph processor ready\");\n\n\t// Return shutdown function\n\treturn async () => {\n\t\trunning = false;\n\t\tclearInterval(pollInterval);\n\t\tawait stopCatchUpLeader();\n\t\tawait stopListening();\n\t\tawait stopReorgListening();\n\t\tstopStreamsReorgPoll?.();\n\t\tawait stopOperations();\n\t\tlogger.info(\"Subgraph processor stopped\");\n\t};\n}\n",
30
- "import { getErrorMessage } from \"@secondlayer/shared\";\nimport { IndexHttpClient } from \"@secondlayer/shared/index-http\";\nimport { logger } from \"@secondlayer/shared/logger\";\n\nconst POLL_MS = Number(process.env.SUBGRAPH_REORG_POLL_MS) || 15_000;\n// On boot, re-scan recent reorgs. Reorg handlers are idempotent, so re-applying\n// a recent reorg is safe and covers any missed during downtime.\nconst STARTUP_MARGIN_MS = 60 * 60 * 1000;\n\ntype ReorgLister = Pick<IndexHttpClient, \"listReorgs\">;\n\n/** Per-fork handler. Each plane (subgraph rewind, chain-subscription rewind)\n * runs its own poll with its own handler, so they can live in separate\n * processes once the subscription plane is extracted. */\nexport type OnReorg = (forkHeight: number) => Promise<void>;\n\n/**\n * Fetch reorgs since `cursor` and invoke `onReorg` at each fork point (lowest\n * first), returning the next cursor. Extracted for testing.\n *\n * `handled` dedupes by reorg id across polls: a re-delivered reorg (cursor\n * bug, server restart, startup margin re-scan) must be a no-op, because the\n * rewind handler — while idempotent in outcome — aborts any in-flight catch-up\n * and resets subgraph cursors to the fork point. Re-delivery every poll would\n * pin subgraphs at the fork point forever (the 2026-07-19 prod incident).\n */\nexport async function pollReorgsOnce(\n\thttp: ReorgLister,\n\tcursor: string,\n\tonReorg: OnReorg,\n\thandled?: Set<string>,\n): Promise<string> {\n\tconst { reorgs, next_since } = await http.listReorgs(cursor);\n\tconst sorted = [...reorgs].sort(\n\t\t(a, b) => a.fork_point_height - b.fork_point_height,\n\t);\n\tfor (const r of sorted) {\n\t\tif (handled && r.id && handled.has(r.id)) {\n\t\t\tlogger.info(\"Streams reorg already handled — skipping\", {\n\t\t\t\tforkPointHeight: r.fork_point_height,\n\t\t\t\treorgId: r.id,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tlogger.info(\"Streams reorg — rewinding\", {\n\t\t\tforkPointHeight: r.fork_point_height,\n\t\t});\n\t\tawait onReorg(r.fork_point_height);\n\t\t// Only after a successful rewind — a throw must leave the reorg\n\t\t// eligible for retry on the next poll.\n\t\tif (handled && r.id) handled.add(r.id);\n\t}\n\treturn next_since ?? cursor;\n}\n\n/**\n * Streams as the reorg authority for `SUBGRAPH_SOURCE=streams-index`: poll\n * `/v1/streams/reorgs` and invoke `onReorg` at each fork point. Runs alongside\n * the Postgres `subgraph_reorg` LISTEN (which serves db-tap subgraphs); both\n * drive the same idempotent handler, so overlap is harmless.\n */\nexport function startStreamsReorgPoll(onReorg: OnReorg): () => void {\n\tconst baseUrl =\n\t\tprocess.env.SUBGRAPH_INDEX_API_URL ??\n\t\tprocess.env.STREAMS_API_URL ??\n\t\t\"http://api:3800\";\n\tconst http = new IndexHttpClient({\n\t\tindexBaseUrl: baseUrl,\n\t\tstreamsBaseUrl: baseUrl,\n\t\tstreamsApiKey:\n\t\t\tprocess.env.STREAMS_INTERNAL_API_KEY ?? \"sk-sl_streams_decode_internal\",\n\t});\n\n\tlet since = new Date(Date.now() - STARTUP_MARGIN_MS).toISOString();\n\tlet running = true;\n\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t// Reorg ids already applied this process. Reorgs are rare (~1/day), so an\n\t// unbounded-in-theory set stays tiny in practice; cap it anyway.\n\tconst handled = new Set<string>();\n\n\tconst tick = async (): Promise<void> => {\n\t\tif (!running) return;\n\t\tif (handled.size > 10_000) handled.clear();\n\t\ttry {\n\t\t\tsince = await pollReorgsOnce(http, since, onReorg, handled);\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Streams reorg poll failed\", {\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t\tif (running) timer = setTimeout(tick, POLL_MS);\n\t};\n\n\ttimer = setTimeout(tick, POLL_MS);\n\tlogger.info(\"Streams reorg poll started\", { pollMs: POLL_MS });\n\treturn () => {\n\t\trunning = false;\n\t\tif (timer) clearTimeout(timer);\n\t};\n}\n"
30
+ "import { getErrorMessage } from \"@secondlayer/shared\";\nimport {\n\ttype IndexHttpClient,\n\tcreateInternalIndexHttpClient,\n} from \"@secondlayer/shared/index-http\";\nimport { logger } from \"@secondlayer/shared/logger\";\n\nconst POLL_MS = Number(process.env.SUBGRAPH_REORG_POLL_MS) || 15_000;\n// On boot, re-scan recent reorgs. Reorg handlers are idempotent, so re-applying\n// a recent reorg is safe and covers any missed during downtime.\nconst STARTUP_MARGIN_MS = 60 * 60 * 1000;\n\ntype ReorgLister = Pick<IndexHttpClient, \"listReorgs\">;\n\n/** Per-fork handler. Each plane (subgraph rewind, chain-subscription rewind)\n * runs its own poll with its own handler, so they can live in separate\n * processes once the subscription plane is extracted. */\nexport type OnReorg = (forkHeight: number) => Promise<void>;\n\n/**\n * Fetch reorgs since `cursor` and invoke `onReorg` at each fork point (lowest\n * first), returning the next cursor. Extracted for testing.\n *\n * `handled` dedupes by reorg id across polls: a re-delivered reorg (cursor\n * bug, server restart, startup margin re-scan) must be a no-op, because the\n * rewind handler — while idempotent in outcome — aborts any in-flight catch-up\n * and resets subgraph cursors to the fork point. Re-delivery every poll would\n * pin subgraphs at the fork point forever (the 2026-07-19 prod incident).\n */\nexport async function pollReorgsOnce(\n\thttp: ReorgLister,\n\tcursor: string,\n\tonReorg: OnReorg,\n\thandled?: Set<string>,\n): Promise<string> {\n\tconst { reorgs, next_since } = await http.listReorgs(cursor);\n\tconst sorted = [...reorgs].sort(\n\t\t(a, b) => a.fork_point_height - b.fork_point_height,\n\t);\n\tfor (const r of sorted) {\n\t\tif (handled && r.id && handled.has(r.id)) {\n\t\t\tlogger.info(\"Streams reorg already handled — skipping\", {\n\t\t\t\tforkPointHeight: r.fork_point_height,\n\t\t\t\treorgId: r.id,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tlogger.info(\"Streams reorg — rewinding\", {\n\t\t\tforkPointHeight: r.fork_point_height,\n\t\t});\n\t\tawait onReorg(r.fork_point_height);\n\t\t// Only after a successful rewind — a throw must leave the reorg\n\t\t// eligible for retry on the next poll.\n\t\tif (handled && r.id) handled.add(r.id);\n\t}\n\treturn next_since ?? cursor;\n}\n\n/**\n * Streams as the reorg authority for `SUBGRAPH_SOURCE=streams-index`: poll\n * `/v1/streams/reorgs` and invoke `onReorg` at each fork point. Runs alongside\n * the Postgres `subgraph_reorg` LISTEN (which serves db-tap subgraphs); both\n * drive the same idempotent handler, so overlap is harmless.\n */\nexport function startStreamsReorgPoll(onReorg: OnReorg): () => void {\n\tconst http = createInternalIndexHttpClient();\n\n\tlet since = new Date(Date.now() - STARTUP_MARGIN_MS).toISOString();\n\tlet running = true;\n\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t// Reorg ids already applied this process. Reorgs are rare (~1/day), so an\n\t// unbounded-in-theory set stays tiny in practice; cap it anyway.\n\tconst handled = new Set<string>();\n\n\tconst tick = async (): Promise<void> => {\n\t\tif (!running) return;\n\t\tif (handled.size > 10_000) handled.clear();\n\t\ttry {\n\t\t\tsince = await pollReorgsOnce(http, since, onReorg, handled);\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Streams reorg poll failed\", {\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t\tif (running) timer = setTimeout(tick, POLL_MS);\n\t};\n\n\ttimer = setTimeout(tick, POLL_MS);\n\tlogger.info(\"Streams reorg poll started\", { pollMs: POLL_MS });\n\treturn () => {\n\t\trunning = false;\n\t\tif (timer) clearTimeout(timer);\n\t};\n}\n"
31
31
  ],
32
- "mappings": "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",
33
- "debugId": "861951DF1312D9D664756E2164756E21",
32
+ "mappings": "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",
33
+ "debugId": "175795E59F84AF1D64756E2164756E21",
34
34
  "names": []
35
35
  }