@secondlayer/shared 13.9.0 → 13.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/index.d.ts +16 -0
- package/dist/src/index.js +12 -1
- package/dist/src/index.js.map +3 -3
- package/dist/src/insights/index.d.ts +23 -1
- package/dist/src/insights/index.js +18 -1
- package/dist/src/insights/index.js.map +4 -4
- package/dist/src/insights/thresholds.d.ts +7 -1
- package/dist/src/insights/thresholds.js +7 -1
- package/dist/src/insights/thresholds.js.map +3 -3
- package/dist/src/schemas/index.d.ts +16 -0
- package/dist/src/schemas/index.js +12 -1
- package/dist/src/schemas/index.js.map +3 -3
- package/dist/src/schemas/insights.d.ts +16 -0
- package/dist/src/schemas/insights.js +12 -1
- package/dist/src/schemas/insights.js.map +3 -3
- package/package.json +1 -1
|
@@ -286,6 +286,22 @@ type InsightEvidence = {
|
|
|
286
286
|
note?: string
|
|
287
287
|
failed: boolean
|
|
288
288
|
}[]
|
|
289
|
+
} | {
|
|
290
|
+
/** One cell per minute, oldest first; `true` = calls failed that minute. */
|
|
291
|
+
kind: "minutes"
|
|
292
|
+
title: string
|
|
293
|
+
failed: boolean[]
|
|
294
|
+
/** Labels under the first and last cell, e.g. ["17:42", "18:41 now"]. */
|
|
295
|
+
labels: [string, string]
|
|
296
|
+
} | {
|
|
297
|
+
/** Places in the dashboard this insight also concerns, with a count each. */
|
|
298
|
+
kind: "links"
|
|
299
|
+
title: string
|
|
300
|
+
links: {
|
|
301
|
+
label: string
|
|
302
|
+
href: string
|
|
303
|
+
count: number
|
|
304
|
+
}[]
|
|
289
305
|
};
|
|
290
306
|
interface Insight {
|
|
291
307
|
id: string;
|
|
@@ -62,6 +62,17 @@ var InsightEvidenceSchema = z2.discriminatedUnion("kind", [
|
|
|
62
62
|
note: z2.string().optional(),
|
|
63
63
|
failed: z2.boolean()
|
|
64
64
|
}))
|
|
65
|
+
}),
|
|
66
|
+
z2.object({
|
|
67
|
+
kind: z2.literal("minutes"),
|
|
68
|
+
title: z2.string(),
|
|
69
|
+
failed: z2.array(z2.boolean()),
|
|
70
|
+
labels: z2.tuple([z2.string(), z2.string()])
|
|
71
|
+
}),
|
|
72
|
+
z2.object({
|
|
73
|
+
kind: z2.literal("links"),
|
|
74
|
+
title: z2.string(),
|
|
75
|
+
links: z2.array(z2.object({ label: z2.string(), href: z2.string(), count: z2.number() }))
|
|
65
76
|
})
|
|
66
77
|
]);
|
|
67
78
|
var InsightSchema = z2.object({
|
|
@@ -564,5 +575,5 @@ export {
|
|
|
564
575
|
formatWebhookSchemaErrors
|
|
565
576
|
};
|
|
566
577
|
|
|
567
|
-
//# debugId=
|
|
578
|
+
//# debugId=9389F7CB7CA1823C64756E2164756E21
|
|
568
579
|
//# sourceMappingURL=index.js.map
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
"sources": ["../src/schemas/subgraphs.ts", "../src/schemas/insights.ts", "../src/schemas/webhooks.ts", "../src/schemas/chain-triggers.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import { z } from \"zod\";\n\n// ── Deploy Subgraph Request ─────────────────────────────────────────────────\n\n/** The body for deploying a subgraph: sources, schema, and handler code. */\nexport interface DeploySubgraphRequest {\n\tname: string;\n\tdescription?: string;\n\tsources: Record<string, Record<string, unknown>>;\n\tschema: Record<string, unknown>;\n\thandlerCode: string;\n\t/** Override the definition's startBlock for this deploy only. */\n\tstartBlock?: number;\n\t/** Original TypeScript source, persisted so chat can read/diff/edit later. */\n\tsourceCode?: string;\n\t/** Validate the definition + print the DDL plan without deploying. */\n\tdryRun?: boolean;\n}\n\nexport const DeploySubgraphRequestSchema: z.ZodType<DeploySubgraphRequest> =\n\tz.object({\n\t\tname: z\n\t\t\t.string()\n\t\t\t.regex(/^[a-z0-9-]+$/, \"lowercase alphanumeric + hyphens only\")\n\t\t\t.max(63),\n\t\tdescription: z.string().optional(),\n\t\tsources: z\n\t\t\t.record(z.string(), z.record(z.string(), z.unknown()))\n\t\t\t.refine(\n\t\t\t\t(s) => Object.keys(s).length > 0,\n\t\t\t\t\"Must have at least one source\",\n\t\t\t),\n\t\tschema: z.record(z.string(), z.unknown()),\n\t\thandlerCode: z.string().max(1_048_576, \"handler code exceeds 1MB limit\"),\n\t\tstartBlock: z.number().int().nonnegative().optional(),\n\t\tsourceCode: z\n\t\t\t.string()\n\t\t\t.max(1_048_576, \"source code exceeds 1MB limit\")\n\t\t\t.optional(),\n\t\tdryRun: z.boolean().optional(),\n\t});\n\n/**\n * How far a subgraph's rows can be checked without trusting the server,\n * derived from its sources and a scan of its handler. Never configured.\n *\n * - `state`: every input is a named state write, provable from block headers.\n * Handlers run in the deterministic realm. A deployed `state` subgraph is\n * verifiable: one with any reason is refused at deploy.\n * - `events`: an input (events, prints, tx results, `ctx.client`) needs\n * re-execution proofs, which are not served yet.\n * - `none`: a source can never be proven as written (trait scope, tip-first\n * backfill).\n */\nexport interface SubgraphVerification {\n\tlevel: \"state\" | \"events\" | \"none\";\n\t/** What stands between the subgraph and checkable rows, e.g.\n\t * `print_event source \"swaps\" needs event proofs` or\n\t * `subgraph.ts:41:12 Date: wall-clock time differs per run`. */\n\treasons: string[];\n\t/** What stays unproven even at this level, e.g. tx attribution of writes. */\n\tunproven: string[];\n}\n\n/** What a deploy did, the version, and where indexing starts. */\nexport interface DeploySubgraphResponse {\n\taction: \"created\" | \"unchanged\" | \"handler_updated\" | \"updated\" | \"reindexed\";\n\tsubgraphId: string;\n\tversion: string;\n\tmessage: string;\n\t/** Effective indexing start height. */\n\tstart_block?: number;\n\toperationId?: string;\n\treindexStarted?: boolean;\n\t/** Bounded candidate-event denominator for the reindex just started, when the\n\t * op was classifiable as sparse/light. Absent for heavy ops (no upfront estimate\n\t * possible) — check `sl subgraphs status` after ~30s for a rate-based ETA instead. */\n\testimatedEvents?: number;\n\t/** Non-blocking deploy lints (e.g. handler reads a print field never observed on-chain). */\n\twarnings?: string[];\n\t/** sha256 identity of what was deployed; absent on unbundled deploys. */\n\tpin?: string;\n\tverification?: SubgraphVerification;\n\tdiff?: {\n\t\taddedTables: string[];\n\t\tremovedTables: string[];\n\t\taddedColumns: Record<string, string[]>;\n\t\tbreakingChanges: string[];\n\t};\n}\n\n// Subgraph API response types\n\n/** Prefix of the `last_error` a billing-paused subgraph carries, e.g.\n * `billing_paused: spend_cap_reached`. Stable: the processor writes it and\n * the watchdog and CLI key off it. */\nexport const BILLING_PAUSED_PREFIX = \"billing_paused: \";\n\n/** The billing code in a subgraph's `last_error`, or `null` when it isn't a\n * billing pause. */\nexport function billingPausedCode(\n\tlastError: string | null | undefined,\n): string | null {\n\treturn lastError?.startsWith(BILLING_PAUSED_PREFIX)\n\t\t? lastError.slice(BILLING_PAUSED_PREFIX.length)\n\t\t: null;\n}\n\n/** A subgraph's name, status, and indexing progress. */\nexport interface SubgraphSummary {\n\tname: string;\n\tversion: string;\n\tstatus: string;\n\tlastProcessedBlock: number;\n\ttotalProcessed: number;\n\ttotalRows?: number;\n\ttotalErrors: number;\n\ttables: string[];\n\tchainTip: number;\n\tsourceChainTip?: number;\n\ttargetBlock?: number;\n\tprogress: number;\n\tblocksRemaining?: number;\n\tsyncMode?: \"sync\" | \"reindex\";\n\tgapCount: number;\n\t/** history_filling = expected gaps while a tip-first backfill op runs. */\n\tintegrity: \"complete\" | \"gaps_detected\" | \"history_filling\";\n\t/** Most recent indexing error reason + when it occurred, if any. */\n\tlastError?: string | null;\n\tlastErrorAt?: string | null;\n\t/** Last row mutation timestamp; powers per-card freshness. */\n\tupdatedAt?: string | null;\n\tcreatedAt: string;\n}\n\nexport interface SubgraphGapRange {\n\tstart: number;\n\tend: number;\n\tsize: number;\n\treason: string;\n}\n\nexport interface SubgraphSyncInfo {\n\tstatus: \"synced\" | \"catching_up\" | \"reindexing\" | \"error\";\n\tmode?: \"sync\" | \"reindex\";\n\tstartBlock: number;\n\tlastProcessedBlock: number;\n\t/**\n\t * Backward-compatible denominator for progress displays. During reindexing,\n\t * this is the reindex target block rather than the live source chain tip.\n\t */\n\tchainTip: number;\n\tsourceChainTip?: number;\n\ttargetBlock?: number;\n\tblocksRemaining: number;\n\tprocessedBlocks?: number;\n\ttotalBlocks?: number;\n\tprogress: number;\n\t/** Present while the populating operation is queued: approximate claim\n\t * position + honest event denominator + naive start estimate. */\n\tqueue?: {\n\t\tposition: number | null;\n\t\testimatedEvents: number | null;\n\t\testimatedStartSeconds: number | null;\n\t};\n\t/** Event-based progress for sparse syncs (block pct is meaningless when\n\t * most heights are skipped). */\n\testimatedEvents?: number;\n\tprocessedEvents?: number;\n\tetaSeconds?: number | null;\n\tgaps: {\n\t\tcount: number;\n\t\ttotalMissingBlocks: number;\n\t\tranges: SubgraphGapRange[];\n\t};\n\t/** history_filling = expected gaps while a tip-first backfill op runs. */\n\tintegrity: \"complete\" | \"gaps_detected\" | \"history_filling\";\n}\n\n/** A subgraph's version, pin, status, tables, and sources. */\nexport interface SubgraphDetail {\n\tname: string;\n\tversion: string;\n\tschemaHash?: string;\n\t/** sha256 over schema, handler bundle, startBlock, network and runtime.\n\t * Null for subgraphs deployed before pins existed. */\n\tpin?: string | null;\n\t/** Null for subgraphs deployed before levels were derived. */\n\tverification?: SubgraphVerification | null;\n\tstatus: string;\n\tlastProcessedBlock: number;\n\tdescription?: string;\n\tsources?: Record<string, unknown>;\n\tdefinition?: Record<string, unknown>;\n\thealth: {\n\t\ttotalProcessed: number;\n\t\ttotalErrors: number;\n\t\terrorRate: number;\n\t\tlastError: string | null;\n\t\tlastErrorAt: string | null;\n\t\t/** True after the processor matched work but user tables still have 0 rows. */\n\t\temptyMapping: boolean;\n\t};\n\tsync: SubgraphSyncInfo;\n\ttables: Record<\n\t\tstring,\n\t\t{\n\t\t\tendpoint: string;\n\t\t\tcolumns: Record<\n\t\t\t\tstring,\n\t\t\t\t{\n\t\t\t\t\ttype: string;\n\t\t\t\t\tnullable?: boolean;\n\t\t\t\t\tindexed?: boolean;\n\t\t\t\t\tsearchable?: boolean;\n\t\t\t\t\tdefault?: string | number | boolean;\n\t\t\t\t}\n\t\t\t>;\n\t\t\trowCount: number;\n\t\t\texample: string;\n\t\t\tindexes?: readonly (readonly string[])[];\n\t\t\tuniqueKeys?: readonly (readonly string[])[];\n\t\t}\n\t>;\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\nexport interface SubgraphGapEntry {\n\tstart: number;\n\tend: number;\n\tsize: number;\n\treason: string;\n\tdetectedAt: string;\n\tresolvedAt: string | null;\n}\n\n/** Missing block ranges in a subgraph, with totals. */\nexport interface SubgraphGapsResponse {\n\tdata: SubgraphGapEntry[];\n\tmeta: {\n\t\ttotal: number;\n\t\ttotalMissingBlocks: number;\n\t\tlimit: number;\n\t\toffset: number;\n\t};\n}\n\n/** A queued reindex and the block range it covers. */\nexport interface ReindexResponse {\n\tmessage: string;\n\tfromBlock: number;\n\ttoBlock: number | string;\n\toperationId?: string;\n\tstatus?: \"queued\" | \"running\" | \"cancel_requested\";\n}\n\nexport interface SubgraphQueryParams {\n\tsort?: string;\n\torder?: string;\n\tlimit?: number;\n\toffset?: number;\n\tfields?: string;\n\tfilters?: Record<string, string>;\n}\n\n/**\n * Request shape for `GET /v1/subgraphs/:subgraphName/:tableName/aggregate`.\n * `filters` reuses the list/count where-surface; the rest name the columns to\n * aggregate. SUM/MIN/MAX columns must be numeric (uint/int, plus `_block_height`).\n */\nexport interface SubgraphAggregateParams {\n\tfilters?: Record<string, string>;\n\tcount?: boolean;\n\tcountDistinct?: string[];\n\tsum?: string[];\n\tmin?: string[];\n\tmax?: string[];\n}\n\n/**\n * Aggregate response. Keys are present only for requested aggregates.\n * `count`/`countDistinct` are JSON numbers (counts << 2^53); `sum`/`min`/`max`\n * are lossless strings (NUMERIC `::text`). `sum` of an empty set is `\"0\"`;\n * `min`/`max` are `null` when the filtered set is empty or all-null.\n */\nexport interface SubgraphAggregateResponse {\n\tcount?: number;\n\tcountDistinct?: Record<string, number>;\n\tsum?: Record<string, string>;\n\tmin?: Record<string, string | null>;\n\tmax?: Record<string, string | null>;\n}\n",
|
|
6
|
-
"import { z } from \"zod\";\n\n/**\n * The insight contract. The tenant (`/api/insights`) and platform\n * (`/api/accounts/insights`) routes serve `Insight` verbatim. The web app keeps\n * a field-for-field copy in `apps/web/src/lib/insights.ts`; change both\n * together.\n *\n * The types are written out and the schemas annotated with them, rather than\n * inferred: the bundled `.d.ts` loses inferred zod types (they come out as\n * `unknown`), the same reason `schemas/webhooks.ts` annotates its schemas.\n */\n\nexport const INSIGHT_SEVERITIES = [\n\t\"losing\",\n\t\"will_fail\",\n\t\"costs\",\n\t\"recovered\",\n] as const;\n\nexport type InsightSeverity = (typeof INSIGHT_SEVERITIES)[number];\n\nexport type InsightResourceKind = \"webhook\" | \"subgraph\" | \"account\";\n\nexport type InsightEvidence =\n\t| {\n\t\t\tkind: \"series\";\n\t\t\ttitle: string;\n\t\t\tseries: {\n\t\t\t\tname: string;\n\t\t\t\trole: \"a\" | \"context\" | \"mark\";\n\t\t\t\tpoints: number[];\n\t\t\t}[];\n\t\t\tlabels: [number, string][];\n\t\t\tunit?: string;\n\t }\n\t| {\n\t\t\tkind: \"table\";\n\t\t\ttitle: string;\n\t\t\tcolumns: string[];\n\t\t\trows: (string | number)[][];\n\t\t\tmarkRow?: number;\n\t }\n\t| {\n\t\t\tkind: \"shapes\";\n\t\t\ttitle: string;\n\t\t\tshapes: { code: string; body: string; count: number; isNew: boolean }[];\n\t }\n\t| {\n\t\t\tkind: \"timeline\";\n\t\t\ttitle: string;\n\t\t\tsteps: { what: string; at: string; note?: string; failed: boolean }[];\n\t };\n\nexport interface Insight {\n\tid: string;\n\trule: string;\n\tseverity: InsightSeverity;\n\timpact: number;\n\tresource: {\n\t\tkind: InsightResourceKind;\n\t\tid: string;\n\t\tname: string;\n\t};\n\tline: string;\n\tmeta?: string;\n\tlead: string;\n\tbody: string;\n\tevidence: InsightEvidence[];\n\thandoff: { prompt: string; commands: string[] };\n\thow: {\n\t\tdetector: string;\n\t\tfacts: [string, string][];\n\t\tlabel?: { cause: string; confidence: number };\n\t};\n\tcreatedAt: string;\n\tresolvedAt?: string | null;\n}\n\nexport interface InsightListResponse {\n\tdata: Insight[];\n}\n\nexport const InsightSeveritySchema: z.ZodType<InsightSeverity> =\n\tz.enum(INSIGHT_SEVERITIES);\n\nexport const InsightResourceKindSchema: z.ZodType<InsightResourceKind> = z.enum(\n\t[\"webhook\", \"subgraph\", \"account\"],\n);\n\nexport const InsightEvidenceSchema: z.ZodType<InsightEvidence> =\n\tz.discriminatedUnion(\"kind\", [\n\t\tz.object({\n\t\t\tkind: z.literal(\"series\"),\n\t\t\ttitle: z.string(),\n\t\t\tseries: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tname: z.string(),\n\t\t\t\t\trole: z.enum([\"a\", \"context\", \"mark\"]),\n\t\t\t\t\tpoints: z.array(z.number()),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tlabels: z.array(z.tuple([z.number(), z.string()])),\n\t\t\tunit: z.string().optional(),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"table\"),\n\t\t\ttitle: z.string(),\n\t\t\tcolumns: z.array(z.string()),\n\t\t\trows: z.array(z.array(z.union([z.string(), z.number()]))),\n\t\t\tmarkRow: z.number().optional(),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"shapes\"),\n\t\t\ttitle: z.string(),\n\t\t\tshapes: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tcode: z.string(),\n\t\t\t\t\tbody: z.string(),\n\t\t\t\t\tcount: z.number(),\n\t\t\t\t\tisNew: z.boolean(),\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"timeline\"),\n\t\t\ttitle: z.string(),\n\t\t\tsteps: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\twhat: z.string(),\n\t\t\t\t\tat: z.string(),\n\t\t\t\t\tnote: z.string().optional(),\n\t\t\t\t\tfailed: z.boolean(),\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t]);\n\nexport const InsightSchema: z.ZodType<Insight> = z.object({\n\tid: z.string(),\n\trule: z.string(),\n\tseverity: InsightSeveritySchema,\n\timpact: z.number(),\n\tresource: z.object({\n\t\tkind: InsightResourceKindSchema,\n\t\tid: z.string(),\n\t\tname: z.string(),\n\t}),\n\tline: z.string(),\n\tmeta: z.string().optional(),\n\tlead: z.string(),\n\tbody: z.string(),\n\tevidence: z.array(InsightEvidenceSchema),\n\thandoff: z.object({\n\t\tprompt: z.string(),\n\t\tcommands: z.array(z.string()),\n\t}),\n\thow: z.object({\n\t\tdetector: z.string(),\n\t\tfacts: z.array(z.tuple([z.string(), z.string()])),\n\t\tlabel: z.object({ cause: z.string(), confidence: z.number() }).optional(),\n\t}),\n\tcreatedAt: z.string(),\n\tresolvedAt: z.string().nullable().optional(),\n});\n\nexport const InsightListResponseSchema: z.ZodType<InsightListResponse> =\n\tz.object({\n\t\tdata: z.array(InsightSchema),\n\t});\n\nexport const SEVERITY_ORDER: Record<InsightSeverity, number> = {\n\tlosing: 0,\n\twill_fail: 1,\n\tcosts: 2,\n\trecovered: 3,\n};\n",
|
|
6
|
+
"import { z } from \"zod\";\n\n/**\n * The insight contract. The tenant (`/api/insights`) and platform\n * (`/api/accounts/insights`) routes serve `Insight` verbatim. The web app keeps\n * a field-for-field copy in `apps/web/src/lib/insights.ts`; change both\n * together.\n *\n * The types are written out and the schemas annotated with them, rather than\n * inferred: the bundled `.d.ts` loses inferred zod types (they come out as\n * `unknown`), the same reason `schemas/webhooks.ts` annotates its schemas.\n */\n\nexport const INSIGHT_SEVERITIES = [\n\t\"losing\",\n\t\"will_fail\",\n\t\"costs\",\n\t\"recovered\",\n] as const;\n\nexport type InsightSeverity = (typeof INSIGHT_SEVERITIES)[number];\n\nexport type InsightResourceKind = \"webhook\" | \"subgraph\" | \"account\";\n\nexport type InsightEvidence =\n\t| {\n\t\t\tkind: \"series\";\n\t\t\ttitle: string;\n\t\t\tseries: {\n\t\t\t\tname: string;\n\t\t\t\trole: \"a\" | \"context\" | \"mark\";\n\t\t\t\tpoints: number[];\n\t\t\t}[];\n\t\t\tlabels: [number, string][];\n\t\t\tunit?: string;\n\t }\n\t| {\n\t\t\tkind: \"table\";\n\t\t\ttitle: string;\n\t\t\tcolumns: string[];\n\t\t\trows: (string | number)[][];\n\t\t\tmarkRow?: number;\n\t }\n\t| {\n\t\t\tkind: \"shapes\";\n\t\t\ttitle: string;\n\t\t\tshapes: { code: string; body: string; count: number; isNew: boolean }[];\n\t }\n\t| {\n\t\t\tkind: \"timeline\";\n\t\t\ttitle: string;\n\t\t\tsteps: { what: string; at: string; note?: string; failed: boolean }[];\n\t }\n\t| {\n\t\t\t/** One cell per minute, oldest first; `true` = calls failed that minute. */\n\t\t\tkind: \"minutes\";\n\t\t\ttitle: string;\n\t\t\tfailed: boolean[];\n\t\t\t/** Labels under the first and last cell, e.g. [\"17:42\", \"18:41 now\"]. */\n\t\t\tlabels: [string, string];\n\t }\n\t| {\n\t\t\t/** Places in the dashboard this insight also concerns, with a count each. */\n\t\t\tkind: \"links\";\n\t\t\ttitle: string;\n\t\t\tlinks: { label: string; href: string; count: number }[];\n\t };\n\nexport interface Insight {\n\tid: string;\n\trule: string;\n\tseverity: InsightSeverity;\n\timpact: number;\n\tresource: {\n\t\tkind: InsightResourceKind;\n\t\tid: string;\n\t\tname: string;\n\t};\n\tline: string;\n\tmeta?: string;\n\tlead: string;\n\tbody: string;\n\tevidence: InsightEvidence[];\n\thandoff: { prompt: string; commands: string[] };\n\thow: {\n\t\tdetector: string;\n\t\tfacts: [string, string][];\n\t\tlabel?: { cause: string; confidence: number };\n\t};\n\tcreatedAt: string;\n\tresolvedAt?: string | null;\n}\n\nexport interface InsightListResponse {\n\tdata: Insight[];\n}\n\nexport const InsightSeveritySchema: z.ZodType<InsightSeverity> =\n\tz.enum(INSIGHT_SEVERITIES);\n\nexport const InsightResourceKindSchema: z.ZodType<InsightResourceKind> = z.enum(\n\t[\"webhook\", \"subgraph\", \"account\"],\n);\n\nexport const InsightEvidenceSchema: z.ZodType<InsightEvidence> =\n\tz.discriminatedUnion(\"kind\", [\n\t\tz.object({\n\t\t\tkind: z.literal(\"series\"),\n\t\t\ttitle: z.string(),\n\t\t\tseries: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tname: z.string(),\n\t\t\t\t\trole: z.enum([\"a\", \"context\", \"mark\"]),\n\t\t\t\t\tpoints: z.array(z.number()),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tlabels: z.array(z.tuple([z.number(), z.string()])),\n\t\t\tunit: z.string().optional(),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"table\"),\n\t\t\ttitle: z.string(),\n\t\t\tcolumns: z.array(z.string()),\n\t\t\trows: z.array(z.array(z.union([z.string(), z.number()]))),\n\t\t\tmarkRow: z.number().optional(),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"shapes\"),\n\t\t\ttitle: z.string(),\n\t\t\tshapes: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tcode: z.string(),\n\t\t\t\t\tbody: z.string(),\n\t\t\t\t\tcount: z.number(),\n\t\t\t\t\tisNew: z.boolean(),\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"timeline\"),\n\t\t\ttitle: z.string(),\n\t\t\tsteps: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\twhat: z.string(),\n\t\t\t\t\tat: z.string(),\n\t\t\t\t\tnote: z.string().optional(),\n\t\t\t\t\tfailed: z.boolean(),\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"minutes\"),\n\t\t\ttitle: z.string(),\n\t\t\tfailed: z.array(z.boolean()),\n\t\t\tlabels: z.tuple([z.string(), z.string()]),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"links\"),\n\t\t\ttitle: z.string(),\n\t\t\tlinks: z.array(\n\t\t\t\tz.object({ label: z.string(), href: z.string(), count: z.number() }),\n\t\t\t),\n\t\t}),\n\t]);\n\nexport const InsightSchema: z.ZodType<Insight> = z.object({\n\tid: z.string(),\n\trule: z.string(),\n\tseverity: InsightSeveritySchema,\n\timpact: z.number(),\n\tresource: z.object({\n\t\tkind: InsightResourceKindSchema,\n\t\tid: z.string(),\n\t\tname: z.string(),\n\t}),\n\tline: z.string(),\n\tmeta: z.string().optional(),\n\tlead: z.string(),\n\tbody: z.string(),\n\tevidence: z.array(InsightEvidenceSchema),\n\thandoff: z.object({\n\t\tprompt: z.string(),\n\t\tcommands: z.array(z.string()),\n\t}),\n\thow: z.object({\n\t\tdetector: z.string(),\n\t\tfacts: z.array(z.tuple([z.string(), z.string()])),\n\t\tlabel: z.object({ cause: z.string(), confidence: z.number() }).optional(),\n\t}),\n\tcreatedAt: z.string(),\n\tresolvedAt: z.string().nullable().optional(),\n});\n\nexport const InsightListResponseSchema: z.ZodType<InsightListResponse> =\n\tz.object({\n\t\tdata: z.array(InsightSchema),\n\t});\n\nexport const SEVERITY_ORDER: Record<InsightSeverity, number> = {\n\tlosing: 0,\n\twill_fail: 1,\n\tcosts: 2,\n\trecovered: 3,\n};\n",
|
|
7
7
|
"import { z } from \"zod\";\n\nexport {\n\tCHAIN_TRIGGER_FIELDS,\n\tCHAIN_TRIGGER_TYPES,\n} from \"./chain-triggers\";\nexport type { ChainTriggerType } from \"./chain-triggers\";\n\nexport const WEBHOOK_FORMATS = [\n\t\"standard-webhooks\",\n\t\"inngest\",\n\t\"trigger\",\n\t\"cloudflare\",\n\t\"cloudevents\",\n\t\"raw\",\n] as const;\n\nexport const WEBHOOK_STATUSES = [\"active\", \"paused\", \"error\"] as const;\n\n/**\n * Delivery-cap ceilings. Self-host defaults keep today's hardcoded limits\n * (100 retries, 300s timeout); an operator raises or lowers them per env.\n * Read live (not baked in at import) so a changed env var takes effect on\n * the next request without a process restart, and so tests can override\n * per-case.\n */\nexport const WEBHOOK_MAX_RETRIES_CEILING_DEFAULT = 100;\nexport const WEBHOOK_TIMEOUT_MS_CEILING_DEFAULT = 300_000;\n\nfunction ceilingFromEnv(envVar: string, fallback: number): number {\n\tconst raw = process.env[envVar];\n\tif (raw === undefined) return fallback;\n\tconst parsed = Number.parseInt(raw, 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;\n}\n\nexport function webhookMaxRetriesCeiling(): number {\n\treturn ceilingFromEnv(\n\t\t\"WEBHOOK_MAX_RETRIES_CEILING\",\n\t\tWEBHOOK_MAX_RETRIES_CEILING_DEFAULT,\n\t);\n}\n\nexport function webhookTimeoutMsCeiling(): number {\n\treturn ceilingFromEnv(\n\t\t\"WEBHOOK_TIMEOUT_MS_CEILING\",\n\t\tWEBHOOK_TIMEOUT_MS_CEILING_DEFAULT,\n\t);\n}\n\nfunction maxRetriesField() {\n\treturn z\n\t\t.number()\n\t\t.int()\n\t\t.min(0)\n\t\t.optional()\n\t\t.superRefine((v, ctx) => {\n\t\t\tif (v === undefined) return;\n\t\t\tconst ceiling = webhookMaxRetriesCeiling();\n\t\t\tif (v > ceiling) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\tmessage: `maxRetries exceeds ceiling (${ceiling})`,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n}\n\nfunction timeoutMsField() {\n\treturn z\n\t\t.number()\n\t\t.int()\n\t\t.min(100)\n\t\t.optional()\n\t\t.superRefine((v, ctx) => {\n\t\t\tif (v === undefined) return;\n\t\t\tconst ceiling = webhookTimeoutMsCeiling();\n\t\t\tif (v > ceiling) {\n\t\t\t\tctx.addIssue({\n\t\t\t\t\tcode: \"custom\",\n\t\t\t\t\tmessage: `timeoutMs exceeds ceiling (${ceiling})`,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n}\n\nconst webhookUrl = z\n\t.string()\n\t.trim()\n\t.min(1)\n\t.refine(\n\t\t(value) => value.startsWith(\"http://\") || value.startsWith(\"https://\"),\n\t\t\"must be an http(s) URL\",\n\t);\n\nconst name = z.string().trim().min(1).max(128);\n\n/** Webhook names another first-party product owns and looks up by name.\n * Renaming one breaks that product's reconcile, so the API refuses it and\n * the dashboard shows the owner instead of Rename. Prefix -> display name. */\nexport const MANAGED_NAME_PREFIXES: Readonly<Record<string, string>> = {\n\t\"sentinel:\": \"Sentinel\",\n};\n\nexport function managedByForName(name: string): string | null {\n\tfor (const [prefix, owner] of Object.entries(MANAGED_NAME_PREFIXES)) {\n\t\tif (name.startsWith(prefix)) return owner;\n\t}\n\treturn null;\n}\n\nexport const WebhookStatusSchema: z.ZodType<WebhookStatus> =\n\tz.enum(WEBHOOK_STATUSES);\nexport const WebhookFormatSchema: z.ZodType<WebhookFormat> =\n\tz.enum(WEBHOOK_FORMATS);\n\n// --- Chain triggers (direct chain-level webhooks) -----------------------\n// A chain webhook reacts to raw chain events matched directly off the\n// Index/Streams clock (no subgraph). `triggers` is an array of these filters —\n// the JSON mirror of the subgraph runtime's `SubgraphFilter` union. Defined\n// here (not imported from @secondlayer/subgraphs) to avoid a shared→subgraphs\n// cycle; the evaluator maps these to `SubgraphFilter` at match time. Amounts are\n// non-negative integer strings (uint128 can exceed JS safe-int) or numbers.\n\n/** Runes trigger types (plan 060) — matched off `chain=bitcoin` Streams events\n * (plan 059), not the Stacks Index clock. `rune` is a RuneRef (an id like\n * `840000:3` or a name like `DOG•GO•TO•THE•MOON`); the API resolves and\n * normalizes it to its canonical id at create time (see `../../routes/webhooks.ts`),\n * rejecting an unresolvable one with 400 when Bitcoin data is configured. */\nconst runeRef = z.string().trim().min(1);\n\nconst triggerAmount = z.union([\n\tz.string().trim().regex(/^\\d+$/, \"must be a non-negative integer string\"),\n\tz.number().int().nonnegative(),\n]);\n/** Principal/identifier/name patterns — `*` wildcards allowed (matched by the\n * evaluator). */\nconst triggerPattern = z.string().trim().min(1);\nconst trait = z.string().trim().min(1);\n\n/**\n * `print_event` `where`: equality on top-level keys of the decoded print\n * tuple, spelled as the contract prints them. An array is any-of; multiple\n * keys AND. Values compare against the field's JSON-normalized form.\n */\nconst printWhereValue = z.string().min(1).max(256);\nexport const PrintWhereSchema: z.ZodType<Record<string, string | string[]>> = z\n\t.record(\n\t\tz.string().trim().min(1).max(64),\n\t\tz.union([printWhereValue, z.array(printWhereValue).min(1).max(20)]),\n\t)\n\t.refine((o) => {\n\t\tconst n = Object.keys(o).length;\n\t\treturn n >= 1 && n <= 10;\n\t}, \"where takes 1 to 10 keys\");\n\nexport const ChainTriggerSchema: z.ZodType<ChainTrigger> = z.discriminatedUnion(\n\t\"type\",\n\t[\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"stx_transfer\"),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\trecipient: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t\tmaxAmount: triggerAmount.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"stx_mint\"),\n\t\t\t\trecipient: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"stx_burn\"),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"stx_lock\"),\n\t\t\t\tlockedAddress: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"ft_transfer\"),\n\t\t\t\tassetIdentifier: triggerPattern.optional(),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\trecipient: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"ft_mint\"),\n\t\t\t\tassetIdentifier: triggerPattern.optional(),\n\t\t\t\trecipient: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"ft_burn\"),\n\t\t\t\tassetIdentifier: triggerPattern.optional(),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"nft_transfer\"),\n\t\t\t\tassetIdentifier: triggerPattern.optional(),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\trecipient: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"nft_mint\"),\n\t\t\t\tassetIdentifier: triggerPattern.optional(),\n\t\t\t\trecipient: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"nft_burn\"),\n\t\t\t\tassetIdentifier: triggerPattern.optional(),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"contract_call\"),\n\t\t\t\tcontractId: triggerPattern.optional(),\n\t\t\t\tfunctionName: triggerPattern.optional(),\n\t\t\t\tcaller: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"contract_deploy\"),\n\t\t\t\tdeployer: triggerPattern.optional(),\n\t\t\t\tcontractName: triggerPattern.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"print_event\"),\n\t\t\t\tcontractId: triggerPattern.optional(),\n\t\t\t\ttopic: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t\twhere: PrintWhereSchema.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"nested_contract_call\"),\n\t\t\t\tcontractId: triggerPattern.optional(),\n\t\t\t\tfunctionName: triggerPattern.optional(),\n\t\t\t\tcaller: triggerPattern.optional(),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"var_set\"),\n\t\t\t\tcontractId: triggerPattern.optional(),\n\t\t\t\tvarName: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"map_set\"),\n\t\t\t\tcontractId: triggerPattern.optional(),\n\t\t\t\tmap: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"map_insert\"),\n\t\t\t\tcontractId: triggerPattern.optional(),\n\t\t\t\tmap: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"map_delete\"),\n\t\t\t\tcontractId: triggerPattern.optional(),\n\t\t\t\tmap: triggerPattern.optional(),\n\t\t\t\ttrait: trait.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"sbtc_deposit\"),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t\tmaxAmount: triggerAmount.optional(),\n\t\t\t\tbitcoinTxid: triggerPattern.optional(),\n\t\t\t\trequestId: z.number().int().nonnegative().optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"sbtc_withdrawal_create\"),\n\t\t\t\tsender: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t\tmaxAmount: triggerAmount.optional(),\n\t\t\t\trequestId: z.number().int().nonnegative().optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"sbtc_withdrawal_accept\"),\n\t\t\t\trequestId: z.number().int().nonnegative().optional(),\n\t\t\t\tsweepTxid: triggerPattern.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"sbtc_withdrawal_reject\"),\n\t\t\t\trequestId: z.number().int().nonnegative().optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"sbtc_withdrawal_swept_confirmed\"),\n\t\t\t\trequestId: z.number().int().nonnegative().optional(),\n\t\t\t\tsweepTxid: triggerPattern.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"rune_etch\"),\n\t\t\t\trune: runeRef.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"rune_mint\"),\n\t\t\t\trune: runeRef.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"rune_transfer\"),\n\t\t\t\trune: runeRef.optional(),\n\t\t\t\taddress: triggerPattern.optional(),\n\t\t\t\tminAmount: triggerAmount.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t\tz\n\t\t\t.object({\n\t\t\t\ttype: z.literal(\"rune_burn\"),\n\t\t\t\trune: runeRef.optional(),\n\t\t\t})\n\t\t\t.strict(),\n\t],\n);\n\nexport const ChainTriggersSchema: z.ZodType<ChainTrigger[]> = z\n\t.array(ChainTriggerSchema)\n\t.min(1)\n\t.max(50);\n\nexport const CreateWebhookRequestSchema: z.ZodType<ParsedCreateWebhookRequest> =\n\tz.object({\n\t\tname,\n\t\ttriggers: ChainTriggersSchema,\n\t\turl: webhookUrl,\n\t\tformat: WebhookFormatSchema.default(\"standard-webhooks\"),\n\t\tauthConfig: z.record(z.string(), z.unknown()).optional(),\n\t\tmaxRetries: maxRetriesField(),\n\t\ttimeoutMs: timeoutMsField(),\n\t\tconcurrency: z.number().int().min(1).max(100).optional(),\n\t});\n\nexport const UpdateWebhookRequestSchema: z.ZodType<UpdateWebhookRequest> = z\n\t.object({\n\t\tname: name.optional(),\n\t\turl: webhookUrl.optional(),\n\t\tformat: WebhookFormatSchema.optional(),\n\t\tauthConfig: z.record(z.string(), z.unknown()).optional(),\n\t\tmaxRetries: maxRetriesField(),\n\t\ttimeoutMs: timeoutMsField(),\n\t\tconcurrency: z.number().int().min(1).max(100).optional(),\n\t})\n\t.refine((value) => Object.keys(value).length > 0, {\n\t\tmessage: \"At least one field must be provided\",\n\t});\n\nexport const ReplayWebhookRequestSchema: z.ZodType<ReplayWebhookRequest> = z\n\t.object({\n\t\tfromBlock: z.number().int().nonnegative(),\n\t\ttoBlock: z.number().int().nonnegative(),\n\t\tforce: z.string().trim().min(1).max(64).optional(),\n\t})\n\t.refine((value) => value.fromBlock <= value.toBlock, {\n\t\tmessage: \"fromBlock must be less than or equal to toBlock\",\n\t\tpath: [\"toBlock\"],\n\t});\n\nexport type WebhookStatus = (typeof WEBHOOK_STATUSES)[number];\n/** Webhook kind (mirrors db/types `WebhookKind`). Chain events only. */\nexport type WebhookKind = \"chain\";\nexport type WebhookFormat = (typeof WEBHOOK_FORMATS)[number];\n\n/** Non-negative integer amount over JSON (string for uint128 safety, or number). */\nexport type ChainTriggerAmount = string | number;\n\ninterface TraitScoped {\n\ttrait?: string;\n}\n\n/** JSON mirror of the subgraph runtime's `SubgraphFilter` union. */\nexport type ChainTrigger =\n\t| {\n\t\t\ttype: \"stx_transfer\";\n\t\t\tsender?: string;\n\t\t\trecipient?: string;\n\t\t\tminAmount?: ChainTriggerAmount;\n\t\t\tmaxAmount?: ChainTriggerAmount;\n\t }\n\t| { type: \"stx_mint\"; recipient?: string; minAmount?: ChainTriggerAmount }\n\t| { type: \"stx_burn\"; sender?: string; minAmount?: ChainTriggerAmount }\n\t| {\n\t\t\ttype: \"stx_lock\";\n\t\t\tlockedAddress?: string;\n\t\t\tminAmount?: ChainTriggerAmount;\n\t }\n\t| ({\n\t\t\ttype: \"ft_transfer\";\n\t\t\tassetIdentifier?: string;\n\t\t\tsender?: string;\n\t\t\trecipient?: string;\n\t\t\tminAmount?: ChainTriggerAmount;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"ft_mint\";\n\t\t\tassetIdentifier?: string;\n\t\t\trecipient?: string;\n\t\t\tminAmount?: ChainTriggerAmount;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"ft_burn\";\n\t\t\tassetIdentifier?: string;\n\t\t\tsender?: string;\n\t\t\tminAmount?: ChainTriggerAmount;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"nft_transfer\";\n\t\t\tassetIdentifier?: string;\n\t\t\tsender?: string;\n\t\t\trecipient?: string;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"nft_mint\";\n\t\t\tassetIdentifier?: string;\n\t\t\trecipient?: string;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"nft_burn\";\n\t\t\tassetIdentifier?: string;\n\t\t\tsender?: string;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"contract_call\";\n\t\t\tcontractId?: string;\n\t\t\tfunctionName?: string;\n\t\t\tcaller?: string;\n\t } & TraitScoped)\n\t| { type: \"contract_deploy\"; deployer?: string; contractName?: string }\n\t| ({\n\t\t\ttype: \"print_event\";\n\t\t\tcontractId?: string;\n\t\t\ttopic?: string;\n\t\t\t/** Equality on top-level keys of the decoded print tuple; array = any-of, keys AND. */\n\t\t\twhere?: Record<string, string | readonly string[]>;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"nested_contract_call\";\n\t\t\tcontractId?: string;\n\t\t\tfunctionName?: string;\n\t\t\tcaller?: string;\n\t\t\tsender?: string;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"var_set\";\n\t\t\tcontractId?: string;\n\t\t\tvarName?: string;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"map_set\";\n\t\t\tcontractId?: string;\n\t\t\tmap?: string;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"map_insert\";\n\t\t\tcontractId?: string;\n\t\t\tmap?: string;\n\t } & TraitScoped)\n\t| ({\n\t\t\ttype: \"map_delete\";\n\t\t\tcontractId?: string;\n\t\t\tmap?: string;\n\t } & TraitScoped)\n\t| {\n\t\t\ttype: \"sbtc_deposit\";\n\t\t\tsender?: string;\n\t\t\tminAmount?: ChainTriggerAmount;\n\t\t\tmaxAmount?: ChainTriggerAmount;\n\t\t\tbitcoinTxid?: string;\n\t\t\trequestId?: number;\n\t }\n\t| {\n\t\t\ttype: \"sbtc_withdrawal_create\";\n\t\t\tsender?: string;\n\t\t\tminAmount?: ChainTriggerAmount;\n\t\t\tmaxAmount?: ChainTriggerAmount;\n\t\t\trequestId?: number;\n\t }\n\t| {\n\t\t\ttype: \"sbtc_withdrawal_accept\";\n\t\t\trequestId?: number;\n\t\t\tsweepTxid?: string;\n\t }\n\t| { type: \"sbtc_withdrawal_reject\"; requestId?: number }\n\t| {\n\t\t\ttype: \"sbtc_withdrawal_swept_confirmed\";\n\t\t\trequestId?: number;\n\t\t\tsweepTxid?: string;\n\t }\n\t| { type: \"rune_etch\"; rune?: string }\n\t| { type: \"rune_mint\"; rune?: string }\n\t| {\n\t\t\ttype: \"rune_transfer\";\n\t\t\trune?: string;\n\t\t\taddress?: string;\n\t\t\tminAmount?: ChainTriggerAmount;\n\t }\n\t| { type: \"rune_burn\"; rune?: string };\n\n/** Args for a chain-trigger builder — every field of a variant except `type`. */\ntype TriggerArgs<T extends ChainTrigger[\"type\"]> = Omit<\n\tExtract<ChainTrigger, { type: T }>,\n\t\"type\"\n>;\n\n/**\n * Ergonomic chain-trigger constructors for `webhooks.create({ triggers })`.\n * Each returns a bare `ChainTrigger` (the wire shape the API expects):\n *\n * ```ts\n * client.webhooks.create({\n * url: \"https://my.app/webhook\",\n * triggers: [trigger.contractCall({ contractId: \"SP....amm\", functionName: \"swap-*\" })],\n * });\n * ```\n */\nexport const trigger = {\n\tstxTransfer: (f: TriggerArgs<\"stx_transfer\"> = {}): ChainTrigger => ({\n\t\ttype: \"stx_transfer\",\n\t\t...f,\n\t}),\n\tstxMint: (f: TriggerArgs<\"stx_mint\"> = {}): ChainTrigger => ({\n\t\ttype: \"stx_mint\",\n\t\t...f,\n\t}),\n\tstxBurn: (f: TriggerArgs<\"stx_burn\"> = {}): ChainTrigger => ({\n\t\ttype: \"stx_burn\",\n\t\t...f,\n\t}),\n\tstxLock: (f: TriggerArgs<\"stx_lock\"> = {}): ChainTrigger => ({\n\t\ttype: \"stx_lock\",\n\t\t...f,\n\t}),\n\tftTransfer: (f: TriggerArgs<\"ft_transfer\"> = {}): ChainTrigger => ({\n\t\ttype: \"ft_transfer\",\n\t\t...f,\n\t}),\n\tftMint: (f: TriggerArgs<\"ft_mint\"> = {}): ChainTrigger => ({\n\t\ttype: \"ft_mint\",\n\t\t...f,\n\t}),\n\tftBurn: (f: TriggerArgs<\"ft_burn\"> = {}): ChainTrigger => ({\n\t\ttype: \"ft_burn\",\n\t\t...f,\n\t}),\n\tnftTransfer: (f: TriggerArgs<\"nft_transfer\"> = {}): ChainTrigger => ({\n\t\ttype: \"nft_transfer\",\n\t\t...f,\n\t}),\n\tnftMint: (f: TriggerArgs<\"nft_mint\"> = {}): ChainTrigger => ({\n\t\ttype: \"nft_mint\",\n\t\t...f,\n\t}),\n\tnftBurn: (f: TriggerArgs<\"nft_burn\"> = {}): ChainTrigger => ({\n\t\ttype: \"nft_burn\",\n\t\t...f,\n\t}),\n\tcontractCall: (f: TriggerArgs<\"contract_call\"> = {}): ChainTrigger => ({\n\t\ttype: \"contract_call\",\n\t\t...f,\n\t}),\n\tcontractDeploy: (f: TriggerArgs<\"contract_deploy\"> = {}): ChainTrigger => ({\n\t\ttype: \"contract_deploy\",\n\t\t...f,\n\t}),\n\tprintEvent: (f: TriggerArgs<\"print_event\"> = {}): ChainTrigger => ({\n\t\ttype: \"print_event\",\n\t\t...f,\n\t}),\n\tsbtcDeposit: (f: TriggerArgs<\"sbtc_deposit\"> = {}): ChainTrigger => ({\n\t\ttype: \"sbtc_deposit\",\n\t\t...f,\n\t}),\n\tsbtcWithdrawalCreate: (\n\t\tf: TriggerArgs<\"sbtc_withdrawal_create\"> = {},\n\t): ChainTrigger => ({\n\t\ttype: \"sbtc_withdrawal_create\",\n\t\t...f,\n\t}),\n\tsbtcWithdrawalAccept: (\n\t\tf: TriggerArgs<\"sbtc_withdrawal_accept\"> = {},\n\t): ChainTrigger => ({\n\t\ttype: \"sbtc_withdrawal_accept\",\n\t\t...f,\n\t}),\n\tsbtcWithdrawalReject: (\n\t\tf: TriggerArgs<\"sbtc_withdrawal_reject\"> = {},\n\t): ChainTrigger => ({\n\t\ttype: \"sbtc_withdrawal_reject\",\n\t\t...f,\n\t}),\n\tsbtcWithdrawalSweptConfirmed: (\n\t\tf: TriggerArgs<\"sbtc_withdrawal_swept_confirmed\"> = {},\n\t): ChainTrigger => ({\n\t\ttype: \"sbtc_withdrawal_swept_confirmed\",\n\t\t...f,\n\t}),\n\truneEtch: (f: TriggerArgs<\"rune_etch\"> = {}): ChainTrigger => ({\n\t\ttype: \"rune_etch\",\n\t\t...f,\n\t}),\n\truneMint: (f: TriggerArgs<\"rune_mint\"> = {}): ChainTrigger => ({\n\t\ttype: \"rune_mint\",\n\t\t...f,\n\t}),\n\truneTransfer: (f: TriggerArgs<\"rune_transfer\"> = {}): ChainTrigger => ({\n\t\ttype: \"rune_transfer\",\n\t\t...f,\n\t}),\n\truneBurn: (f: TriggerArgs<\"rune_burn\"> = {}): ChainTrigger => ({\n\t\ttype: \"rune_burn\",\n\t\t...f,\n\t}),\n} as const;\n\n/** The body for creating a webhook: name, triggers, URL, delivery options. */\nexport interface CreateWebhookRequest {\n\tname: string;\n\ttriggers: ChainTrigger[];\n\turl: string;\n\tformat?: WebhookFormat;\n\tauthConfig?: Record<string, unknown>;\n\tmaxRetries?: number;\n\ttimeoutMs?: number;\n\tconcurrency?: number;\n}\n\nexport interface ParsedCreateWebhookRequest\n\textends Omit<CreateWebhookRequest, \"format\"> {\n\tformat: WebhookFormat;\n}\n\n/** The fields of a webhook you can change. */\nexport interface UpdateWebhookRequest {\n\tname?: string;\n\turl?: string;\n\tformat?: WebhookFormat;\n\tauthConfig?: Record<string, unknown>;\n\tmaxRetries?: number;\n\ttimeoutMs?: number;\n\tconcurrency?: number;\n}\n\nexport type ParsedUpdateWebhookRequest = UpdateWebhookRequest;\n\nexport interface ReplayWebhookRequest {\n\tfromBlock: number;\n\ttoBlock: number;\n\tforce?: string;\n}\n\nexport type ParsedReplayWebhookRequest = ReplayWebhookRequest;\n\n/** A webhook's name, status, format, and URL. */\nexport interface WebhookSummary {\n\tid: string;\n\tname: string;\n\tstatus: WebhookStatus;\n\tkind: WebhookKind;\n\tformat: WebhookFormat;\n\turl: string;\n\tlastDeliveryAt: string | null;\n\tlastSuccessAt: string | null;\n\t/** When the circuit breaker paused this webhook (20 straight failures);\n\t * cleared on resume. Present on the list summary (not detail-only) so a\n\t * numbers-only insight can be shown per row without a per-row fetch. */\n\tcircuitOpenedAt: string | null;\n\t/** Consecutive failed deliveries (reset to 0 on a success). On the\n\t * summary so the list can show a failing receiver per row without a\n\t * per-row fetch. */\n\tcircuitFailures: number;\n\t/** Owning product, derived from the name prefix (`MANAGED_NAME_PREFIXES`).\n\t * When non-null the API refuses to rename the webhook. */\n\tmanagedBy: string | null;\n\tcreatedAt: string;\n\tupdatedAt: string;\n}\n\n/** What a webhook's receiver credentials look like once redacted for a\n * response — never the bearer token, basic-auth string, or header values\n * themselves, only enough to show what's set. `authConfig` on create/update\n * is unaffected (write-only: the API still accepts it, just never echoes\n * it back). */\nexport interface WebhookAuth {\n\ttype: \"bearer\" | \"basic\" | \"none\";\n\t/** Keys of any extra headers the receiver expects — never their values. */\n\theaderNames: string[];\n\t/** True when a bearer token or basic-auth string is set, whatever it is. */\n\thasSecret: boolean;\n}\n\n/** A webhook with its triggers, auth, retry, and timeout settings. */\nexport interface WebhookDetail extends WebhookSummary {\n\t/** Chain-trigger filters. */\n\ttriggers: ChainTrigger[];\n\tauth: WebhookAuth;\n\tmaxRetries: number;\n\ttimeoutMs: number;\n\tconcurrency: number;\n\tlastError: string | null;\n\t/** When the receiver's TLS certificate expires, from the periodic probe.\n\t * Null for http receivers, refused or unreachable hosts, and webhooks not\n\t * probed yet. */\n\treceiverCertExpiresAt: string | null;\n\t/** Set when this instance's chain-trigger\n\t * evaluator isn't running (`SUBGRAPH_SOURCE` != `streams-index`) — the\n\t * webhook will never fire until that's fixed. Null otherwise. Surfaced\n\t * on create (so it's seen immediately) and on every read (so `secondlayer\n\t * webhooks doctor` reports it for a webhook created before the mismatch,\n\t * or on an instance whose config changed since). */\n\twarning: string | null;\n}\n\n/** The new webhook and its signing secret, shown once. */\nexport interface CreateWebhookResponse {\n\twebhook: WebhookDetail;\n\t/** Plaintext signing secret — surfaced ONCE. Store it server-side. */\n\tsigningSecret: string;\n}\n\n/** The webhook and its new signing secret. */\nexport interface RotateSecretResponse {\n\twebhook: WebhookDetail;\n\tsigningSecret: string;\n}\n\n/** One delivery attempt: status code, error, duration, and response. */\nexport interface DeliveryRow {\n\tid: string;\n\tattempt: number;\n\tstatusCode: number | null;\n\terrorMessage: string | null;\n\tdurationMs: number | null;\n\tresponseBody: string | null;\n\tdispatchedAt: string;\n\t/** Null for test deliveries and events already compacted out of the\n\t * outbox. */\n\tblockHeight: number | null;\n\t/** ISO timestamp of the delivered event's block. `null` for test\n\t * deliveries, events already compacted out of the outbox, and rows\n\t * written before this column existed. */\n\tblockTime: string | null;\n\t/** Null for test deliveries and events already compacted out of the\n\t * outbox. */\n\ttxId: string | null;\n\t/** The row's position within its block/tx, from the outbox's `row_pk`.\n\t * Null for test deliveries, compacted rows, and rows with neither shape\n\t * (a settlement or reorg outbox row). */\n\teventIndex: number | null;\n}\n\n/** One hour of `webhook_outbox` activity (`GET /:id/activity`), zero-filled\n * so the events chart always has 168 bars. */\nexport interface WebhookActivityHour {\n\t/** ISO timestamp, UTC hour start. */\n\thour: string;\n\tdelivered: number;\n\twaiting: number;\n\tgaveUp: number;\n\t/** Failed attempts in the hour (no response or non-2xx), from\n\t * `webhook_deliveries`. Attempts, not events: a retried-then-delivered\n\t * event counts here but is `delivered` above. */\n\tfailed: number;\n}\n\n/** A week of hourly delivery counts and what is waiting now. */\nexport interface WebhookActivity {\n\t/** 168 hours, oldest first. */\n\thours: WebhookActivityHour[];\n\t/** Pending rows right now, no time bound. */\n\twaiting: number;\n\tnextAttemptAt: string | null;\n\tlastSuccessAt: string | null;\n\t/** 7-day counts per `event_type` (same 168-hour window as `hours`), e.g.\n\t * `chain.stx_transfer.apply` — the config card's per-trigger volume. */\n\tbyEventType: Record<string, number>;\n\t/** Typical delivered attempts for each UTC hour of day (p10 and p90 of the\n\t * last 28 days, from `webhook_deliveries`). Null at low volume, where\n\t * \"usual\" is not meaningful. */\n\tusualByHourOfDay: Array<{ lo: number; hi: number }> | null;\n\t/** Present with `?days=30`: 30 UTC days, oldest first, from\n\t * `webhook_deliveries` (2xx is delivered, everything else failed). */\n\tdays?: WebhookActivityDay[];\n}\n\n/** One UTC day of delivery attempts (`GET /:id/activity?days=30`). */\nexport interface WebhookActivityDay {\n\t/** YYYY-MM-DD, UTC. */\n\tday: string;\n\tdelivered: number;\n\tfailed: number;\n}\n\n/** Heat data for every webhook on the account (`GET /api/webhooks/activity`),\n * from `webhook_deliveries` attempts. */\nexport interface WebhooksActivitySummary {\n\t/** 168 ISO UTC hour starts, oldest first. */\n\thours: string[];\n\t/** Arrays are aligned to `hours` and zero-filled. */\n\twebhooks: Array<{ id: string; delivered: number[]; failed: number[] }>;\n}\n\n/**\n * One delivery attempt with its outbox context.\n *\n * Serves the delivery card (`GET /:id/deliveries/:deliveryId`). `payload`,\n * `outboxId`, `eventType`, `txId`, `blockHeight`, `blockTime`, and `eventIndex`\n * are null once the outbox row is gone (compacted after 7 days) or for a test\n * delivery, which never had one.\n */\nexport interface WebhookDeliveryDetail {\n\tid: string;\n\tattempt: number;\n\tstatusCode: number | null;\n\tdurationMs: number | null;\n\tdispatchedAt: string;\n\terrorMessage: string | null;\n\tresponseBody: string | null;\n\tresponseHeaders: Record<string, string> | null;\n\toutboxId: string | null;\n\t/** The outbox row's own status — `null` once it's gone (compacted after\n\t * delivery, or never had one, e.g. a test delivery). Only `\"dead\"` means\n\t * a resend is possible: it's the one status `POST /:id/dead/:outboxId/\n\t * requeue` accepts. */\n\toutboxStatus: \"pending\" | \"delivered\" | \"dead\" | null;\n\teventType: string | null;\n\ttxId: string | null;\n\tblockHeight: number | null;\n\tblockTime: string | null;\n\t/** The row's position within its block/tx, from the outbox's `row_pk`\n\t * (`event_index` for a chain-trigger row). Null when `row_pk` carries\n\t * none — a settlement or reorg outbox row, or no outbox row at all. */\n\teventIndex: number | null;\n\tpayload: unknown | null;\n}\n\n/** How many events a replay scanned and enqueued. */\nexport interface ReplayResult {\n\treplayId: string;\n\tenqueuedCount: number;\n\tscannedCount: number;\n}\n\n/** Result of a one-off test delivery (`POST /:id/test`). Logged as a delivery\n * row (with a null outbox_id) so it shows up under the webhook's deliveries. */\nexport interface WebhookTestResult {\n\tok: boolean;\n\tstatusCode: number | null;\n\terror: string | null;\n\tdurationMs: number;\n\tdeliveryId: string;\n}\n\n/** A delivery that ran out of retries. */\nexport interface DeadRow {\n\tid: string;\n\teventType: string;\n\tattempt: number;\n\tblockHeight: number;\n\ttxId: string | null;\n\tpayload: Record<string, unknown>;\n\tfailedAt: string | null;\n\tcreatedAt: string;\n}\n\nfunction formatIssuePath(path: PropertyKey[]): string {\n\treturn path.length > 0 ? `${path.map(String).join(\".\")}: ` : \"\";\n}\n\nexport function formatWebhookSchemaErrors(error: z.ZodError): string[] {\n\treturn error.issues.map(\n\t\t(issue) => `${formatIssuePath(issue.path)}${issue.message}`,\n\t);\n}\n",
|
|
8
8
|
"// This file must stay import-free. The SDK's `webhooks/triggers` subpath\n// re-exports it, and that reaches the browser through apps/web, so anything\n// imported here (zod especially) would ship to the client bundle.\n//\n// CHAIN_TRIGGER_FIELDS is a literal, checked against ChainTriggerSchema in\n// webhooks.test.ts so it can never drift behind the validator.\n\nexport const CHAIN_TRIGGER_TYPES = [\n\t\"stx_transfer\",\n\t\"stx_mint\",\n\t\"stx_burn\",\n\t\"stx_lock\",\n\t\"ft_transfer\",\n\t\"ft_mint\",\n\t\"ft_burn\",\n\t\"nft_transfer\",\n\t\"nft_mint\",\n\t\"nft_burn\",\n\t\"contract_call\",\n\t\"contract_deploy\",\n\t\"print_event\",\n\t\"nested_contract_call\",\n\t\"var_set\",\n\t\"map_set\",\n\t\"map_insert\",\n\t\"map_delete\",\n\t\"sbtc_deposit\",\n\t\"sbtc_withdrawal_create\",\n\t\"sbtc_withdrawal_accept\",\n\t\"sbtc_withdrawal_reject\",\n\t\"sbtc_withdrawal_swept_confirmed\",\n\t\"rune_etch\",\n\t\"rune_mint\",\n\t\"rune_transfer\",\n\t\"rune_burn\",\n] as const;\n\nexport type ChainTriggerType = (typeof CHAIN_TRIGGER_TYPES)[number];\n\n/**\n * Per-type accepted filter fields for chain triggers, in validator key order.\n */\nexport const CHAIN_TRIGGER_FIELDS: Record<string, string[]> = {\n\tstx_transfer: [\"sender\", \"recipient\", \"minAmount\", \"maxAmount\"],\n\tstx_mint: [\"recipient\", \"minAmount\"],\n\tstx_burn: [\"sender\", \"minAmount\"],\n\tstx_lock: [\"lockedAddress\", \"minAmount\"],\n\tft_transfer: [\"assetIdentifier\", \"sender\", \"recipient\", \"minAmount\", \"trait\"],\n\tft_mint: [\"assetIdentifier\", \"recipient\", \"minAmount\", \"trait\"],\n\tft_burn: [\"assetIdentifier\", \"sender\", \"minAmount\", \"trait\"],\n\tnft_transfer: [\"assetIdentifier\", \"sender\", \"recipient\", \"trait\"],\n\tnft_mint: [\"assetIdentifier\", \"recipient\", \"trait\"],\n\tnft_burn: [\"assetIdentifier\", \"sender\", \"trait\"],\n\tcontract_call: [\"contractId\", \"functionName\", \"caller\", \"trait\"],\n\tcontract_deploy: [\"deployer\", \"contractName\"],\n\tprint_event: [\"contractId\", \"topic\", \"trait\", \"where\"],\n\tnested_contract_call: [\n\t\t\"contractId\",\n\t\t\"functionName\",\n\t\t\"caller\",\n\t\t\"sender\",\n\t\t\"trait\",\n\t],\n\tvar_set: [\"contractId\", \"varName\", \"trait\"],\n\tmap_set: [\"contractId\", \"map\", \"trait\"],\n\tmap_insert: [\"contractId\", \"map\", \"trait\"],\n\tmap_delete: [\"contractId\", \"map\", \"trait\"],\n\tsbtc_deposit: [\n\t\t\"sender\",\n\t\t\"minAmount\",\n\t\t\"maxAmount\",\n\t\t\"bitcoinTxid\",\n\t\t\"requestId\",\n\t],\n\tsbtc_withdrawal_create: [\"sender\", \"minAmount\", \"maxAmount\", \"requestId\"],\n\tsbtc_withdrawal_accept: [\"requestId\", \"sweepTxid\"],\n\tsbtc_withdrawal_reject: [\"requestId\"],\n\tsbtc_withdrawal_swept_confirmed: [\"requestId\", \"sweepTxid\"],\n\trune_etch: [\"rune\"],\n\trune_mint: [\"rune\"],\n\trune_transfer: [\"rune\", \"address\", \"minAmount\"],\n\trune_burn: [\"rune\"],\n};\n"
|
|
9
9
|
],
|
|
10
|
-
"mappings": "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",
|
|
11
|
-
"debugId": "
|
|
10
|
+
"mappings": ";AAAA;AAmBO,IAAM,8BACZ,EAAE,OAAO;AAAA,EACR,MAAM,EACJ,OAAO,EACP,MAAM,gBAAgB,uCAAuC,EAC7D,IAAI,EAAE;AAAA,EACR,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,SAAS,EACP,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,CAAC,EACpD,OACA,CAAC,MAAM,OAAO,KAAK,CAAC,EAAE,SAAS,GAC/B,+BACD;AAAA,EACD,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC;AAAA,EACxC,aAAa,EAAE,OAAO,EAAE,IAAI,SAAW,gCAAgC;AAAA,EACvE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACpD,YAAY,EACV,OAAO,EACP,IAAI,SAAW,+BAA+B,EAC9C,SAAS;AAAA,EACX,QAAQ,EAAE,QAAQ,EAAE,SAAS;AAC9B,CAAC;AAwDK,IAAM,wBAAwB;AAI9B,SAAS,iBAAiB,CAChC,WACgB;AAAA,EAChB,OAAO,WAAW,WAAW,qBAAqB,IAC/C,UAAU,MAAM,sBAAsB,MAAM,IAC5C;AAAA;;ACzGJ,cAAS;AAaF,IAAM,qBAAqB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AA+EO,IAAM,wBACZ,GAAE,KAAK,kBAAkB;AAEnB,IAAM,4BAA4D,GAAE,KAC1E,CAAC,WAAW,YAAY,SAAS,CAClC;AAEO,IAAM,wBACZ,GAAE,mBAAmB,QAAQ;AAAA,EAC5B,GAAE,OAAO;AAAA,IACR,MAAM,GAAE,QAAQ,QAAQ;AAAA,IACxB,OAAO,GAAE,OAAO;AAAA,IAChB,QAAQ,GAAE,MACT,GAAE,OAAO;AAAA,MACR,MAAM,GAAE,OAAO;AAAA,MACf,MAAM,GAAE,KAAK,CAAC,KAAK,WAAW,MAAM,CAAC;AAAA,MACrC,QAAQ,GAAE,MAAM,GAAE,OAAO,CAAC;AAAA,IAC3B,CAAC,CACF;AAAA,IACA,QAAQ,GAAE,MAAM,GAAE,MAAM,CAAC,GAAE,OAAO,GAAG,GAAE,OAAO,CAAC,CAAC,CAAC;AAAA,IACjD,MAAM,GAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,CAAC;AAAA,EACD,GAAE,OAAO;AAAA,IACR,MAAM,GAAE,QAAQ,OAAO;AAAA,IACvB,OAAO,GAAE,OAAO;AAAA,IAChB,SAAS,GAAE,MAAM,GAAE,OAAO,CAAC;AAAA,IAC3B,MAAM,GAAE,MAAM,GAAE,MAAM,GAAE,MAAM,CAAC,GAAE,OAAO,GAAG,GAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAAA,IACxD,SAAS,GAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,CAAC;AAAA,EACD,GAAE,OAAO;AAAA,IACR,MAAM,GAAE,QAAQ,QAAQ;AAAA,IACxB,OAAO,GAAE,OAAO;AAAA,IAChB,QAAQ,GAAE,MACT,GAAE,OAAO;AAAA,MACR,MAAM,GAAE,OAAO;AAAA,MACf,MAAM,GAAE,OAAO;AAAA,MACf,OAAO,GAAE,OAAO;AAAA,MAChB,OAAO,GAAE,QAAQ;AAAA,IAClB,CAAC,CACF;AAAA,EACD,CAAC;AAAA,EACD,GAAE,OAAO;AAAA,IACR,MAAM,GAAE,QAAQ,UAAU;AAAA,IAC1B,OAAO,GAAE,OAAO;AAAA,IAChB,OAAO,GAAE,MACR,GAAE,OAAO;AAAA,MACR,MAAM,GAAE,OAAO;AAAA,MACf,IAAI,GAAE,OAAO;AAAA,MACb,MAAM,GAAE,OAAO,EAAE,SAAS;AAAA,MAC1B,QAAQ,GAAE,QAAQ;AAAA,IACnB,CAAC,CACF;AAAA,EACD,CAAC;AAAA,EACD,GAAE,OAAO;AAAA,IACR,MAAM,GAAE,QAAQ,SAAS;AAAA,IACzB,OAAO,GAAE,OAAO;AAAA,IAChB,QAAQ,GAAE,MAAM,GAAE,QAAQ,CAAC;AAAA,IAC3B,QAAQ,GAAE,MAAM,CAAC,GAAE,OAAO,GAAG,GAAE,OAAO,CAAC,CAAC;AAAA,EACzC,CAAC;AAAA,EACD,GAAE,OAAO;AAAA,IACR,MAAM,GAAE,QAAQ,OAAO;AAAA,IACvB,OAAO,GAAE,OAAO;AAAA,IAChB,OAAO,GAAE,MACR,GAAE,OAAO,EAAE,OAAO,GAAE,OAAO,GAAG,MAAM,GAAE,OAAO,GAAG,OAAO,GAAE,OAAO,EAAE,CAAC,CACpE;AAAA,EACD,CAAC;AACF,CAAC;AAEK,IAAM,gBAAoC,GAAE,OAAO;AAAA,EACzD,IAAI,GAAE,OAAO;AAAA,EACb,MAAM,GAAE,OAAO;AAAA,EACf,UAAU;AAAA,EACV,QAAQ,GAAE,OAAO;AAAA,EACjB,UAAU,GAAE,OAAO;AAAA,IAClB,MAAM;AAAA,IACN,IAAI,GAAE,OAAO;AAAA,IACb,MAAM,GAAE,OAAO;AAAA,EAChB,CAAC;AAAA,EACD,MAAM,GAAE,OAAO;AAAA,EACf,MAAM,GAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,MAAM,GAAE,OAAO;AAAA,EACf,MAAM,GAAE,OAAO;AAAA,EACf,UAAU,GAAE,MAAM,qBAAqB;AAAA,EACvC,SAAS,GAAE,OAAO;AAAA,IACjB,QAAQ,GAAE,OAAO;AAAA,IACjB,UAAU,GAAE,MAAM,GAAE,OAAO,CAAC;AAAA,EAC7B,CAAC;AAAA,EACD,KAAK,GAAE,OAAO;AAAA,IACb,UAAU,GAAE,OAAO;AAAA,IACnB,OAAO,GAAE,MAAM,GAAE,MAAM,CAAC,GAAE,OAAO,GAAG,GAAE,OAAO,CAAC,CAAC,CAAC;AAAA,IAChD,OAAO,GAAE,OAAO,EAAE,OAAO,GAAE,OAAO,GAAG,YAAY,GAAE,OAAO,EAAE,CAAC,EAAE,SAAS;AAAA,EACzE,CAAC;AAAA,EACD,WAAW,GAAE,OAAO;AAAA,EACpB,YAAY,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAC5C,CAAC;AAEM,IAAM,4BACZ,GAAE,OAAO;AAAA,EACR,MAAM,GAAE,MAAM,aAAa;AAC5B,CAAC;AAEK,IAAM,iBAAkD;AAAA,EAC9D,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AAAA,EACP,WAAW;AACZ;;AC3MA,cAAS;;;ACOF,IAAM,sBAAsB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAOO,IAAM,uBAAiD;AAAA,EAC7D,cAAc,CAAC,UAAU,aAAa,aAAa,WAAW;AAAA,EAC9D,UAAU,CAAC,aAAa,WAAW;AAAA,EACnC,UAAU,CAAC,UAAU,WAAW;AAAA,EAChC,UAAU,CAAC,iBAAiB,WAAW;AAAA,EACvC,aAAa,CAAC,mBAAmB,UAAU,aAAa,aAAa,OAAO;AAAA,EAC5E,SAAS,CAAC,mBAAmB,aAAa,aAAa,OAAO;AAAA,EAC9D,SAAS,CAAC,mBAAmB,UAAU,aAAa,OAAO;AAAA,EAC3D,cAAc,CAAC,mBAAmB,UAAU,aAAa,OAAO;AAAA,EAChE,UAAU,CAAC,mBAAmB,aAAa,OAAO;AAAA,EAClD,UAAU,CAAC,mBAAmB,UAAU,OAAO;AAAA,EAC/C,eAAe,CAAC,cAAc,gBAAgB,UAAU,OAAO;AAAA,EAC/D,iBAAiB,CAAC,YAAY,cAAc;AAAA,EAC5C,aAAa,CAAC,cAAc,SAAS,SAAS,OAAO;AAAA,EACrD,sBAAsB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,SAAS,CAAC,cAAc,WAAW,OAAO;AAAA,EAC1C,SAAS,CAAC,cAAc,OAAO,OAAO;AAAA,EACtC,YAAY,CAAC,cAAc,OAAO,OAAO;AAAA,EACzC,YAAY,CAAC,cAAc,OAAO,OAAO;AAAA,EACzC,cAAc;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,wBAAwB,CAAC,UAAU,aAAa,aAAa,WAAW;AAAA,EACxE,wBAAwB,CAAC,aAAa,WAAW;AAAA,EACjD,wBAAwB,CAAC,WAAW;AAAA,EACpC,iCAAiC,CAAC,aAAa,WAAW;AAAA,EAC1D,WAAW,CAAC,MAAM;AAAA,EAClB,WAAW,CAAC,MAAM;AAAA,EAClB,eAAe,CAAC,QAAQ,WAAW,WAAW;AAAA,EAC9C,WAAW,CAAC,MAAM;AACnB;;;AD1EO,IAAM,kBAAkB;AAAA,EAC9B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEO,IAAM,mBAAmB,CAAC,UAAU,UAAU,OAAO;AASrD,IAAM,sCAAsC;AAC5C,IAAM,qCAAqC;AAElD,SAAS,cAAc,CAAC,QAAgB,UAA0B;AAAA,EACjE,MAAM,MAAM,QAAQ,IAAI;AAAA,EACxB,IAAI,QAAQ;AAAA,IAAW,OAAO;AAAA,EAC9B,MAAM,SAAS,OAAO,SAAS,KAAK,EAAE;AAAA,EACtC,OAAO,OAAO,SAAS,MAAM,KAAK,SAAS,IAAI,SAAS;AAAA;AAGlD,SAAS,wBAAwB,GAAW;AAAA,EAClD,OAAO,eACN,+BACA,mCACD;AAAA;AAGM,SAAS,uBAAuB,GAAW;AAAA,EACjD,OAAO,eACN,8BACA,kCACD;AAAA;AAGD,SAAS,eAAe,GAAG;AAAA,EAC1B,OAAO,GACL,OAAO,EACP,IAAI,EACJ,IAAI,CAAC,EACL,SAAS,EACT,YAAY,CAAC,GAAG,QAAQ;AAAA,IACxB,IAAI,MAAM;AAAA,MAAW;AAAA,IACrB,MAAM,UAAU,yBAAyB;AAAA,IACzC,IAAI,IAAI,SAAS;AAAA,MAChB,IAAI,SAAS;AAAA,QACZ,MAAM;AAAA,QACN,SAAS,+BAA+B;AAAA,MACzC,CAAC;AAAA,IACF;AAAA,GACA;AAAA;AAGH,SAAS,cAAc,GAAG;AAAA,EACzB,OAAO,GACL,OAAO,EACP,IAAI,EACJ,IAAI,GAAG,EACP,SAAS,EACT,YAAY,CAAC,GAAG,QAAQ;AAAA,IACxB,IAAI,MAAM;AAAA,MAAW;AAAA,IACrB,MAAM,UAAU,wBAAwB;AAAA,IACxC,IAAI,IAAI,SAAS;AAAA,MAChB,IAAI,SAAS;AAAA,QACZ,MAAM;AAAA,QACN,SAAS,8BAA8B;AAAA,MACxC,CAAC;AAAA,IACF;AAAA,GACA;AAAA;AAGH,IAAM,aAAa,GACjB,OAAO,EACP,KAAK,EACL,IAAI,CAAC,EACL,OACA,CAAC,UAAU,MAAM,WAAW,SAAS,KAAK,MAAM,WAAW,UAAU,GACrE,wBACD;AAED,IAAM,OAAO,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAKtC,IAAM,wBAA0D;AAAA,EACtE,aAAa;AACd;AAEO,SAAS,gBAAgB,CAAC,MAA6B;AAAA,EAC7D,YAAY,QAAQ,UAAU,OAAO,QAAQ,qBAAqB,GAAG;AAAA,IACpE,IAAI,KAAK,WAAW,MAAM;AAAA,MAAG,OAAO;AAAA,EACrC;AAAA,EACA,OAAO;AAAA;AAGD,IAAM,sBACZ,GAAE,KAAK,gBAAgB;AACjB,IAAM,sBACZ,GAAE,KAAK,eAAe;AAevB,IAAM,UAAU,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAEvC,IAAM,gBAAgB,GAAE,MAAM;AAAA,EAC7B,GAAE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,uCAAuC;AAAA,EACxE,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAC9B,CAAC;AAGD,IAAM,iBAAiB,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAC9C,IAAM,QAAQ,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC;AAOrC,IAAM,kBAAkB,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC1C,IAAM,mBAAiE,GAC5E,OACA,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAC/B,GAAE,MAAM,CAAC,iBAAiB,GAAE,MAAM,eAAe,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CACnE,EACC,OAAO,CAAC,MAAM;AAAA,EACd,MAAM,IAAI,OAAO,KAAK,CAAC,EAAE;AAAA,EACzB,OAAO,KAAK,KAAK,KAAK;AAAA,GACpB,0BAA0B;AAEvB,IAAM,qBAA8C,GAAE,mBAC5D,QACA;AAAA,EACC,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,cAAc;AAAA,IAC9B,QAAQ,eAAe,SAAS;AAAA,IAChC,WAAW,eAAe,SAAS;AAAA,IACnC,WAAW,cAAc,SAAS;AAAA,IAClC,WAAW,cAAc,SAAS;AAAA,EACnC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,UAAU;AAAA,IAC1B,WAAW,eAAe,SAAS;AAAA,IACnC,WAAW,cAAc,SAAS;AAAA,EACnC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,UAAU;AAAA,IAC1B,QAAQ,eAAe,SAAS;AAAA,IAChC,WAAW,cAAc,SAAS;AAAA,EACnC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,UAAU;AAAA,IAC1B,eAAe,eAAe,SAAS;AAAA,IACvC,WAAW,cAAc,SAAS;AAAA,EACnC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,aAAa;AAAA,IAC7B,iBAAiB,eAAe,SAAS;AAAA,IACzC,QAAQ,eAAe,SAAS;AAAA,IAChC,WAAW,eAAe,SAAS;AAAA,IACnC,WAAW,cAAc,SAAS;AAAA,IAClC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,SAAS;AAAA,IACzB,iBAAiB,eAAe,SAAS;AAAA,IACzC,WAAW,eAAe,SAAS;AAAA,IACnC,WAAW,cAAc,SAAS;AAAA,IAClC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,SAAS;AAAA,IACzB,iBAAiB,eAAe,SAAS;AAAA,IACzC,QAAQ,eAAe,SAAS;AAAA,IAChC,WAAW,cAAc,SAAS;AAAA,IAClC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,cAAc;AAAA,IAC9B,iBAAiB,eAAe,SAAS;AAAA,IACzC,QAAQ,eAAe,SAAS;AAAA,IAChC,WAAW,eAAe,SAAS;AAAA,IACnC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,UAAU;AAAA,IAC1B,iBAAiB,eAAe,SAAS;AAAA,IACzC,WAAW,eAAe,SAAS;AAAA,IACnC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,UAAU;AAAA,IAC1B,iBAAiB,eAAe,SAAS;AAAA,IACzC,QAAQ,eAAe,SAAS;AAAA,IAChC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,eAAe;AAAA,IAC/B,YAAY,eAAe,SAAS;AAAA,IACpC,cAAc,eAAe,SAAS;AAAA,IACtC,QAAQ,eAAe,SAAS;AAAA,IAChC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,iBAAiB;AAAA,IACjC,UAAU,eAAe,SAAS;AAAA,IAClC,cAAc,eAAe,SAAS;AAAA,EACvC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,aAAa;AAAA,IAC7B,YAAY,eAAe,SAAS;AAAA,IACpC,OAAO,eAAe,SAAS;AAAA,IAC/B,OAAO,MAAM,SAAS;AAAA,IACtB,OAAO,iBAAiB,SAAS;AAAA,EAClC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,sBAAsB;AAAA,IACtC,YAAY,eAAe,SAAS;AAAA,IACpC,cAAc,eAAe,SAAS;AAAA,IACtC,QAAQ,eAAe,SAAS;AAAA,IAChC,QAAQ,eAAe,SAAS;AAAA,IAChC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,SAAS;AAAA,IACzB,YAAY,eAAe,SAAS;AAAA,IACpC,SAAS,eAAe,SAAS;AAAA,IACjC,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,SAAS;AAAA,IACzB,YAAY,eAAe,SAAS;AAAA,IACpC,KAAK,eAAe,SAAS;AAAA,IAC7B,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,YAAY;AAAA,IAC5B,YAAY,eAAe,SAAS;AAAA,IACpC,KAAK,eAAe,SAAS;AAAA,IAC7B,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,YAAY;AAAA,IAC5B,YAAY,eAAe,SAAS;AAAA,IACpC,KAAK,eAAe,SAAS;AAAA,IAC7B,OAAO,MAAM,SAAS;AAAA,EACvB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,cAAc;AAAA,IAC9B,QAAQ,eAAe,SAAS;AAAA,IAChC,WAAW,cAAc,SAAS;AAAA,IAClC,WAAW,cAAc,SAAS;AAAA,IAClC,aAAa,eAAe,SAAS;AAAA,IACrC,WAAW,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACpD,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,wBAAwB;AAAA,IACxC,QAAQ,eAAe,SAAS;AAAA,IAChC,WAAW,cAAc,SAAS;AAAA,IAClC,WAAW,cAAc,SAAS;AAAA,IAClC,WAAW,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACpD,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,wBAAwB;AAAA,IACxC,WAAW,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,IACnD,WAAW,eAAe,SAAS;AAAA,EACpC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,wBAAwB;AAAA,IACxC,WAAW,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EACpD,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,iCAAiC;AAAA,IACjD,WAAW,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,IACnD,WAAW,eAAe,SAAS;AAAA,EACpC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,WAAW;AAAA,IAC3B,MAAM,QAAQ,SAAS;AAAA,EACxB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,WAAW;AAAA,IAC3B,MAAM,QAAQ,SAAS;AAAA,EACxB,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,eAAe;AAAA,IAC/B,MAAM,QAAQ,SAAS;AAAA,IACvB,SAAS,eAAe,SAAS;AAAA,IACjC,WAAW,cAAc,SAAS;AAAA,EACnC,CAAC,EACA,OAAO;AAAA,EACT,GACE,OAAO;AAAA,IACP,MAAM,GAAE,QAAQ,WAAW;AAAA,IAC3B,MAAM,QAAQ,SAAS;AAAA,EACxB,CAAC,EACA,OAAO;AACV,CACD;AAEO,IAAM,sBAAiD,GAC5D,MAAM,kBAAkB,EACxB,IAAI,CAAC,EACL,IAAI,EAAE;AAED,IAAM,6BACZ,GAAE,OAAO;AAAA,EACR;AAAA,EACA,UAAU;AAAA,EACV,KAAK;AAAA,EACL,QAAQ,oBAAoB,QAAQ,mBAAmB;AAAA,EACvD,YAAY,GAAE,OAAO,GAAE,OAAO,GAAG,GAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACvD,YAAY,gBAAgB;AAAA,EAC5B,WAAW,eAAe;AAAA,EAC1B,aAAa,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACxD,CAAC;AAEK,IAAM,6BAA8D,GACzE,OAAO;AAAA,EACP,MAAM,KAAK,SAAS;AAAA,EACpB,KAAK,WAAW,SAAS;AAAA,EACzB,QAAQ,oBAAoB,SAAS;AAAA,EACrC,YAAY,GAAE,OAAO,GAAE,OAAO,GAAG,GAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACvD,YAAY,gBAAgB;AAAA,EAC5B,WAAW,eAAe;AAAA,EAC1B,aAAa,GAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AACxD,CAAC,EACA,OAAO,CAAC,UAAU,OAAO,KAAK,KAAK,EAAE,SAAS,GAAG;AAAA,EACjD,SAAS;AACV,CAAC;AAEK,IAAM,6BAA8D,GACzE,OAAO;AAAA,EACP,WAAW,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACxC,SAAS,GAAE,OAAO,EAAE,IAAI,EAAE,YAAY;AAAA,EACtC,OAAO,GAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAClD,CAAC,EACA,OAAO,CAAC,UAAU,MAAM,aAAa,MAAM,SAAS;AAAA,EACpD,SAAS;AAAA,EACT,MAAM,CAAC,SAAS;AACjB,CAAC;AA+JK,IAAM,UAAU;AAAA,EACtB,aAAa,CAAC,IAAiC,CAAC,OAAqB;AAAA,IACpE,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,SAAS,CAAC,IAA6B,CAAC,OAAqB;AAAA,IAC5D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,SAAS,CAAC,IAA6B,CAAC,OAAqB;AAAA,IAC5D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,SAAS,CAAC,IAA6B,CAAC,OAAqB;AAAA,IAC5D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,YAAY,CAAC,IAAgC,CAAC,OAAqB;AAAA,IAClE,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,QAAQ,CAAC,IAA4B,CAAC,OAAqB;AAAA,IAC1D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,QAAQ,CAAC,IAA4B,CAAC,OAAqB;AAAA,IAC1D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,aAAa,CAAC,IAAiC,CAAC,OAAqB;AAAA,IACpE,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,SAAS,CAAC,IAA6B,CAAC,OAAqB;AAAA,IAC5D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,SAAS,CAAC,IAA6B,CAAC,OAAqB;AAAA,IAC5D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,cAAc,CAAC,IAAkC,CAAC,OAAqB;AAAA,IACtE,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,gBAAgB,CAAC,IAAoC,CAAC,OAAqB;AAAA,IAC1E,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,YAAY,CAAC,IAAgC,CAAC,OAAqB;AAAA,IAClE,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,aAAa,CAAC,IAAiC,CAAC,OAAqB;AAAA,IACpE,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,sBAAsB,CACrB,IAA2C,CAAC,OACzB;AAAA,IACnB,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,sBAAsB,CACrB,IAA2C,CAAC,OACzB;AAAA,IACnB,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,sBAAsB,CACrB,IAA2C,CAAC,OACzB;AAAA,IACnB,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,8BAA8B,CAC7B,IAAoD,CAAC,OAClC;AAAA,IACnB,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,UAAU,CAAC,IAA8B,CAAC,OAAqB;AAAA,IAC9D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,UAAU,CAAC,IAA8B,CAAC,OAAqB;AAAA,IAC9D,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,cAAc,CAAC,IAAkC,CAAC,OAAqB;AAAA,IACtE,MAAM;AAAA,OACH;AAAA,EACJ;AAAA,EACA,UAAU,CAAC,IAA8B,CAAC,OAAqB;AAAA,IAC9D,MAAM;AAAA,OACH;AAAA,EACJ;AACD;AA4PA,SAAS,eAAe,CAAC,MAA6B;AAAA,EACrD,OAAO,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,MAAM,EAAE,KAAK,GAAG,QAAQ;AAAA;AAGvD,SAAS,yBAAyB,CAAC,OAA6B;AAAA,EACtE,OAAO,MAAM,OAAO,IACnB,CAAC,UAAU,GAAG,gBAAgB,MAAM,IAAI,IAAI,MAAM,SACnD;AAAA;",
|
|
11
|
+
"debugId": "9389F7CB7CA1823C64756E2164756E21",
|
|
12
12
|
"names": []
|
|
13
13
|
}
|
|
@@ -46,6 +46,22 @@ type InsightEvidence = {
|
|
|
46
46
|
note?: string
|
|
47
47
|
failed: boolean
|
|
48
48
|
}[]
|
|
49
|
+
} | {
|
|
50
|
+
/** One cell per minute, oldest first; `true` = calls failed that minute. */
|
|
51
|
+
kind: "minutes"
|
|
52
|
+
title: string
|
|
53
|
+
failed: boolean[]
|
|
54
|
+
/** Labels under the first and last cell, e.g. ["17:42", "18:41 now"]. */
|
|
55
|
+
labels: [string, string]
|
|
56
|
+
} | {
|
|
57
|
+
/** Places in the dashboard this insight also concerns, with a count each. */
|
|
58
|
+
kind: "links"
|
|
59
|
+
title: string
|
|
60
|
+
links: {
|
|
61
|
+
label: string
|
|
62
|
+
href: string
|
|
63
|
+
count: number
|
|
64
|
+
}[]
|
|
49
65
|
};
|
|
50
66
|
interface Insight {
|
|
51
67
|
id: string;
|
|
@@ -46,6 +46,17 @@ var InsightEvidenceSchema = z.discriminatedUnion("kind", [
|
|
|
46
46
|
note: z.string().optional(),
|
|
47
47
|
failed: z.boolean()
|
|
48
48
|
}))
|
|
49
|
+
}),
|
|
50
|
+
z.object({
|
|
51
|
+
kind: z.literal("minutes"),
|
|
52
|
+
title: z.string(),
|
|
53
|
+
failed: z.array(z.boolean()),
|
|
54
|
+
labels: z.tuple([z.string(), z.string()])
|
|
55
|
+
}),
|
|
56
|
+
z.object({
|
|
57
|
+
kind: z.literal("links"),
|
|
58
|
+
title: z.string(),
|
|
59
|
+
links: z.array(z.object({ label: z.string(), href: z.string(), count: z.number() }))
|
|
49
60
|
})
|
|
50
61
|
]);
|
|
51
62
|
var InsightSchema = z.object({
|
|
@@ -94,5 +105,5 @@ export {
|
|
|
94
105
|
SEVERITY_ORDER
|
|
95
106
|
};
|
|
96
107
|
|
|
97
|
-
//# debugId=
|
|
108
|
+
//# debugId=B7F49C0772CCF1C264756E2164756E21
|
|
98
109
|
//# sourceMappingURL=insights.js.map
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/schemas/insights.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { z } from \"zod\";\n\n/**\n * The insight contract. The tenant (`/api/insights`) and platform\n * (`/api/accounts/insights`) routes serve `Insight` verbatim. The web app keeps\n * a field-for-field copy in `apps/web/src/lib/insights.ts`; change both\n * together.\n *\n * The types are written out and the schemas annotated with them, rather than\n * inferred: the bundled `.d.ts` loses inferred zod types (they come out as\n * `unknown`), the same reason `schemas/webhooks.ts` annotates its schemas.\n */\n\nexport const INSIGHT_SEVERITIES = [\n\t\"losing\",\n\t\"will_fail\",\n\t\"costs\",\n\t\"recovered\",\n] as const;\n\nexport type InsightSeverity = (typeof INSIGHT_SEVERITIES)[number];\n\nexport type InsightResourceKind = \"webhook\" | \"subgraph\" | \"account\";\n\nexport type InsightEvidence =\n\t| {\n\t\t\tkind: \"series\";\n\t\t\ttitle: string;\n\t\t\tseries: {\n\t\t\t\tname: string;\n\t\t\t\trole: \"a\" | \"context\" | \"mark\";\n\t\t\t\tpoints: number[];\n\t\t\t}[];\n\t\t\tlabels: [number, string][];\n\t\t\tunit?: string;\n\t }\n\t| {\n\t\t\tkind: \"table\";\n\t\t\ttitle: string;\n\t\t\tcolumns: string[];\n\t\t\trows: (string | number)[][];\n\t\t\tmarkRow?: number;\n\t }\n\t| {\n\t\t\tkind: \"shapes\";\n\t\t\ttitle: string;\n\t\t\tshapes: { code: string; body: string; count: number; isNew: boolean }[];\n\t }\n\t| {\n\t\t\tkind: \"timeline\";\n\t\t\ttitle: string;\n\t\t\tsteps: { what: string; at: string; note?: string; failed: boolean }[];\n\t };\n\nexport interface Insight {\n\tid: string;\n\trule: string;\n\tseverity: InsightSeverity;\n\timpact: number;\n\tresource: {\n\t\tkind: InsightResourceKind;\n\t\tid: string;\n\t\tname: string;\n\t};\n\tline: string;\n\tmeta?: string;\n\tlead: string;\n\tbody: string;\n\tevidence: InsightEvidence[];\n\thandoff: { prompt: string; commands: string[] };\n\thow: {\n\t\tdetector: string;\n\t\tfacts: [string, string][];\n\t\tlabel?: { cause: string; confidence: number };\n\t};\n\tcreatedAt: string;\n\tresolvedAt?: string | null;\n}\n\nexport interface InsightListResponse {\n\tdata: Insight[];\n}\n\nexport const InsightSeveritySchema: z.ZodType<InsightSeverity> =\n\tz.enum(INSIGHT_SEVERITIES);\n\nexport const InsightResourceKindSchema: z.ZodType<InsightResourceKind> = z.enum(\n\t[\"webhook\", \"subgraph\", \"account\"],\n);\n\nexport const InsightEvidenceSchema: z.ZodType<InsightEvidence> =\n\tz.discriminatedUnion(\"kind\", [\n\t\tz.object({\n\t\t\tkind: z.literal(\"series\"),\n\t\t\ttitle: z.string(),\n\t\t\tseries: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tname: z.string(),\n\t\t\t\t\trole: z.enum([\"a\", \"context\", \"mark\"]),\n\t\t\t\t\tpoints: z.array(z.number()),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tlabels: z.array(z.tuple([z.number(), z.string()])),\n\t\t\tunit: z.string().optional(),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"table\"),\n\t\t\ttitle: z.string(),\n\t\t\tcolumns: z.array(z.string()),\n\t\t\trows: z.array(z.array(z.union([z.string(), z.number()]))),\n\t\t\tmarkRow: z.number().optional(),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"shapes\"),\n\t\t\ttitle: z.string(),\n\t\t\tshapes: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tcode: z.string(),\n\t\t\t\t\tbody: z.string(),\n\t\t\t\t\tcount: z.number(),\n\t\t\t\t\tisNew: z.boolean(),\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"timeline\"),\n\t\t\ttitle: z.string(),\n\t\t\tsteps: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\twhat: z.string(),\n\t\t\t\t\tat: z.string(),\n\t\t\t\t\tnote: z.string().optional(),\n\t\t\t\t\tfailed: z.boolean(),\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t]);\n\nexport const InsightSchema: z.ZodType<Insight> = z.object({\n\tid: z.string(),\n\trule: z.string(),\n\tseverity: InsightSeveritySchema,\n\timpact: z.number(),\n\tresource: z.object({\n\t\tkind: InsightResourceKindSchema,\n\t\tid: z.string(),\n\t\tname: z.string(),\n\t}),\n\tline: z.string(),\n\tmeta: z.string().optional(),\n\tlead: z.string(),\n\tbody: z.string(),\n\tevidence: z.array(InsightEvidenceSchema),\n\thandoff: z.object({\n\t\tprompt: z.string(),\n\t\tcommands: z.array(z.string()),\n\t}),\n\thow: z.object({\n\t\tdetector: z.string(),\n\t\tfacts: z.array(z.tuple([z.string(), z.string()])),\n\t\tlabel: z.object({ cause: z.string(), confidence: z.number() }).optional(),\n\t}),\n\tcreatedAt: z.string(),\n\tresolvedAt: z.string().nullable().optional(),\n});\n\nexport const InsightListResponseSchema: z.ZodType<InsightListResponse> =\n\tz.object({\n\t\tdata: z.array(InsightSchema),\n\t});\n\nexport const SEVERITY_ORDER: Record<InsightSeverity, number> = {\n\tlosing: 0,\n\twill_fail: 1,\n\tcosts: 2,\n\trecovered: 3,\n};\n"
|
|
5
|
+
"import { z } from \"zod\";\n\n/**\n * The insight contract. The tenant (`/api/insights`) and platform\n * (`/api/accounts/insights`) routes serve `Insight` verbatim. The web app keeps\n * a field-for-field copy in `apps/web/src/lib/insights.ts`; change both\n * together.\n *\n * The types are written out and the schemas annotated with them, rather than\n * inferred: the bundled `.d.ts` loses inferred zod types (they come out as\n * `unknown`), the same reason `schemas/webhooks.ts` annotates its schemas.\n */\n\nexport const INSIGHT_SEVERITIES = [\n\t\"losing\",\n\t\"will_fail\",\n\t\"costs\",\n\t\"recovered\",\n] as const;\n\nexport type InsightSeverity = (typeof INSIGHT_SEVERITIES)[number];\n\nexport type InsightResourceKind = \"webhook\" | \"subgraph\" | \"account\";\n\nexport type InsightEvidence =\n\t| {\n\t\t\tkind: \"series\";\n\t\t\ttitle: string;\n\t\t\tseries: {\n\t\t\t\tname: string;\n\t\t\t\trole: \"a\" | \"context\" | \"mark\";\n\t\t\t\tpoints: number[];\n\t\t\t}[];\n\t\t\tlabels: [number, string][];\n\t\t\tunit?: string;\n\t }\n\t| {\n\t\t\tkind: \"table\";\n\t\t\ttitle: string;\n\t\t\tcolumns: string[];\n\t\t\trows: (string | number)[][];\n\t\t\tmarkRow?: number;\n\t }\n\t| {\n\t\t\tkind: \"shapes\";\n\t\t\ttitle: string;\n\t\t\tshapes: { code: string; body: string; count: number; isNew: boolean }[];\n\t }\n\t| {\n\t\t\tkind: \"timeline\";\n\t\t\ttitle: string;\n\t\t\tsteps: { what: string; at: string; note?: string; failed: boolean }[];\n\t }\n\t| {\n\t\t\t/** One cell per minute, oldest first; `true` = calls failed that minute. */\n\t\t\tkind: \"minutes\";\n\t\t\ttitle: string;\n\t\t\tfailed: boolean[];\n\t\t\t/** Labels under the first and last cell, e.g. [\"17:42\", \"18:41 now\"]. */\n\t\t\tlabels: [string, string];\n\t }\n\t| {\n\t\t\t/** Places in the dashboard this insight also concerns, with a count each. */\n\t\t\tkind: \"links\";\n\t\t\ttitle: string;\n\t\t\tlinks: { label: string; href: string; count: number }[];\n\t };\n\nexport interface Insight {\n\tid: string;\n\trule: string;\n\tseverity: InsightSeverity;\n\timpact: number;\n\tresource: {\n\t\tkind: InsightResourceKind;\n\t\tid: string;\n\t\tname: string;\n\t};\n\tline: string;\n\tmeta?: string;\n\tlead: string;\n\tbody: string;\n\tevidence: InsightEvidence[];\n\thandoff: { prompt: string; commands: string[] };\n\thow: {\n\t\tdetector: string;\n\t\tfacts: [string, string][];\n\t\tlabel?: { cause: string; confidence: number };\n\t};\n\tcreatedAt: string;\n\tresolvedAt?: string | null;\n}\n\nexport interface InsightListResponse {\n\tdata: Insight[];\n}\n\nexport const InsightSeveritySchema: z.ZodType<InsightSeverity> =\n\tz.enum(INSIGHT_SEVERITIES);\n\nexport const InsightResourceKindSchema: z.ZodType<InsightResourceKind> = z.enum(\n\t[\"webhook\", \"subgraph\", \"account\"],\n);\n\nexport const InsightEvidenceSchema: z.ZodType<InsightEvidence> =\n\tz.discriminatedUnion(\"kind\", [\n\t\tz.object({\n\t\t\tkind: z.literal(\"series\"),\n\t\t\ttitle: z.string(),\n\t\t\tseries: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tname: z.string(),\n\t\t\t\t\trole: z.enum([\"a\", \"context\", \"mark\"]),\n\t\t\t\t\tpoints: z.array(z.number()),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tlabels: z.array(z.tuple([z.number(), z.string()])),\n\t\t\tunit: z.string().optional(),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"table\"),\n\t\t\ttitle: z.string(),\n\t\t\tcolumns: z.array(z.string()),\n\t\t\trows: z.array(z.array(z.union([z.string(), z.number()]))),\n\t\t\tmarkRow: z.number().optional(),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"shapes\"),\n\t\t\ttitle: z.string(),\n\t\t\tshapes: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\tcode: z.string(),\n\t\t\t\t\tbody: z.string(),\n\t\t\t\t\tcount: z.number(),\n\t\t\t\t\tisNew: z.boolean(),\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"timeline\"),\n\t\t\ttitle: z.string(),\n\t\t\tsteps: z.array(\n\t\t\t\tz.object({\n\t\t\t\t\twhat: z.string(),\n\t\t\t\t\tat: z.string(),\n\t\t\t\t\tnote: z.string().optional(),\n\t\t\t\t\tfailed: z.boolean(),\n\t\t\t\t}),\n\t\t\t),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"minutes\"),\n\t\t\ttitle: z.string(),\n\t\t\tfailed: z.array(z.boolean()),\n\t\t\tlabels: z.tuple([z.string(), z.string()]),\n\t\t}),\n\t\tz.object({\n\t\t\tkind: z.literal(\"links\"),\n\t\t\ttitle: z.string(),\n\t\t\tlinks: z.array(\n\t\t\t\tz.object({ label: z.string(), href: z.string(), count: z.number() }),\n\t\t\t),\n\t\t}),\n\t]);\n\nexport const InsightSchema: z.ZodType<Insight> = z.object({\n\tid: z.string(),\n\trule: z.string(),\n\tseverity: InsightSeveritySchema,\n\timpact: z.number(),\n\tresource: z.object({\n\t\tkind: InsightResourceKindSchema,\n\t\tid: z.string(),\n\t\tname: z.string(),\n\t}),\n\tline: z.string(),\n\tmeta: z.string().optional(),\n\tlead: z.string(),\n\tbody: z.string(),\n\tevidence: z.array(InsightEvidenceSchema),\n\thandoff: z.object({\n\t\tprompt: z.string(),\n\t\tcommands: z.array(z.string()),\n\t}),\n\thow: z.object({\n\t\tdetector: z.string(),\n\t\tfacts: z.array(z.tuple([z.string(), z.string()])),\n\t\tlabel: z.object({ cause: z.string(), confidence: z.number() }).optional(),\n\t}),\n\tcreatedAt: z.string(),\n\tresolvedAt: z.string().nullable().optional(),\n});\n\nexport const InsightListResponseSchema: z.ZodType<InsightListResponse> =\n\tz.object({\n\t\tdata: z.array(InsightSchema),\n\t});\n\nexport const SEVERITY_ORDER: Record<InsightSeverity, number> = {\n\tlosing: 0,\n\twill_fail: 1,\n\tcosts: 2,\n\trecovered: 3,\n};\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";AAAA;AAaO,IAAM,qBAAqB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "B7F49C0772CCF1C264756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|