@secondlayer/shared 13.7.1 → 13.9.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.
Files changed (41) hide show
  1. package/dist/src/archive/range-digest.d.ts +5 -0
  2. package/dist/src/archive/semantic-digest-builder.d.ts +5 -0
  3. package/dist/src/coverage/index.d.ts +5 -0
  4. package/dist/src/db/index.d.ts +5 -0
  5. package/dist/src/db/queries/chain-reorgs.d.ts +5 -0
  6. package/dist/src/db/queries/contracts.d.ts +5 -0
  7. package/dist/src/db/queries/instance.d.ts +5 -0
  8. package/dist/src/db/queries/integrity.d.ts +5 -0
  9. package/dist/src/db/queries/subgraph-gaps.d.ts +5 -0
  10. package/dist/src/db/queries/subgraph-operations.d.ts +5 -0
  11. package/dist/src/db/queries/subgraphs.d.ts +5 -0
  12. package/dist/src/db/queries/sync-scope.d.ts +5 -0
  13. package/dist/src/db/queries/webhooks.d.ts +5 -0
  14. package/dist/src/db/schema.d.ts +5 -0
  15. package/dist/src/error-envelope.d.ts +1 -0
  16. package/dist/src/error-envelope.js.map +2 -2
  17. package/dist/src/errors.d.ts +7 -1
  18. package/dist/src/errors.js +12 -1
  19. package/dist/src/errors.js.map +3 -3
  20. package/dist/src/index.d.ts +17 -8
  21. package/dist/src/index.js +86 -35
  22. package/dist/src/index.js.map +6 -5
  23. package/dist/src/insights/index.d.ts +13 -2
  24. package/dist/src/insights/index.js +15 -7
  25. package/dist/src/insights/index.js.map +4 -4
  26. package/dist/src/insights/thresholds.d.ts +6 -1
  27. package/dist/src/insights/thresholds.js +5 -1
  28. package/dist/src/insights/thresholds.js.map +3 -3
  29. package/dist/src/node/local-client.d.ts +5 -0
  30. package/dist/src/schemas/chain-triggers.d.ts +7 -0
  31. package/dist/src/schemas/chain-triggers.js +78 -0
  32. package/dist/src/schemas/chain-triggers.js.map +10 -0
  33. package/dist/src/schemas/index.d.ts +5 -7
  34. package/dist/src/schemas/index.js +75 -35
  35. package/dist/src/schemas/index.js.map +5 -4
  36. package/dist/src/schemas/webhooks.d.ts +6 -8
  37. package/dist/src/schemas/webhooks.js +75 -35
  38. package/dist/src/schemas/webhooks.js.map +5 -4
  39. package/migrations/0174_internal_accounts.ts +21 -0
  40. package/migrations/0175_failed_request_key_id.ts +23 -0
  41. package/package.json +5 -1
@@ -122,6 +122,8 @@ declare const POLLING_MIN_DURATION_MS = 36e5;
122
122
  declare const POLLING_MIN_REQUESTS = 5;
123
123
  declare const POLLING_LOOKBACK_MS: number;
124
124
  declare const POLLING_MAX_STDDEV_RATIO = .2;
125
+ /** A request this soon after the previous one is a cursor-follow page of the same poll. */
126
+ declare const POLLING_FOLLOW_GAP_MS = 1e4;
125
127
  declare const POLLING_MIN_EMPTY_RATIO = .8;
126
128
  declare const SERVER_ERRORS_MIN_5XX = 3;
127
129
  declare const BACKFILL_DAY_SHARE = .25;
@@ -131,6 +133,9 @@ declare const BACKFILL_MIN_DAY_ROWS = 1e5;
131
133
  declare const CREDITS_RUNWAY_WARN_DAYS = 7;
132
134
  /** An account key idle this many days (or unused since creation) is flagged. */
133
135
  declare const KEY_UNUSED_DAYS = 30;
136
+ /** A revoked key called within this long is still in use; older calls only
137
+ * count toward the 24h evidence, so the insight clears once calls stop. */
138
+ declare const REVOKED_KEY_ACTIVE_MS = 36e5;
134
139
  /** A resolved insight stays visible as "recovered" for this long. */
135
140
  declare const RECOVERED_VISIBLE_MS: number;
136
141
  /** Consecutive clean evaluations before an open insight resolves. */
@@ -474,6 +479,9 @@ interface AccountsTable {
474
479
  email: string | null;
475
480
  /** True for anonymous self-serve accounts until claimed via magic link. */
476
481
  ghost: Generated<boolean>;
482
+ /** First-party service account: usage priced at $0, never gated on
483
+ * credits. Set by ops only. */
484
+ internal: Generated<boolean>;
477
485
  /** Stacks principal owning a wallet-ghost account. */
478
486
  wallet_principal: string | null;
479
487
  display_name: string | null;
@@ -1364,6 +1372,8 @@ interface ApiFailedRequestsTable {
1364
1372
  message: Generated<string>;
1365
1373
  query: Record<string, unknown>;
1366
1374
  origin: string | null;
1375
+ /** Revoked account key the request presented (`KEY_REVOKED` only). */
1376
+ api_key_id: string | null;
1367
1377
  created_at: Generated<Date>;
1368
1378
  }
1369
1379
  /**
@@ -1448,7 +1458,8 @@ declare function listOpenResources(db: Kysely<Database>, scope: InsightScope): P
1448
1458
  }[]>;
1449
1459
  /**
1450
1460
  * Open rows plus rows resolved within `RECOVERED_VISIBLE_MS`, minus dismissed
1451
- * and muted ones. Resolved rows come back as `recovered`. Ranked.
1461
+ * and muted ones. Resolved rows come back as `recovered`. One row per
1462
+ * (resource, rule): the open incident, else the latest recovered one. Ranked.
1452
1463
  */
1453
1464
  declare function listInsights(db: Kysely<Database>, scope: InsightScope, now?: Date, filter?: {
1454
1465
  kind?: string
@@ -1570,4 +1581,4 @@ interface TenantEvaluateDeps extends Omit<LabelDeps, "now"> {
1570
1581
  * exist resolve through the normal two-pass clear.
1571
1582
  */
1572
1583
  declare function evaluateTenantInsights(db: Kysely3<Database>, deps?: TenantEvaluateDeps): Promise<void>;
1573
- export { BACKFILL_DAY_SHARE, BACKFILL_FULL_PAGE_RATIO, BACKFILL_MIN_DAY_ROWS, CLEAR_STREAK_TO_RESOLVE, CREDITS_RUNWAY_WARN_DAYS, DEAD_LETTER_DELETE_AGE_DAYS, DEAD_LETTER_WARN_AGE_DAYS, DOWN_MIN_CONSECUTIVE, DUPLICATE_READS_LOOKBACK_MS, DUPLICATE_READS_MIN_PAGES, DUPLICATE_READS_WINDOW_MS, DetectedInsight, EvaluatedKey, HANDLER_ERRORS_MIN_24H, InsightRule, InsightScope, KEY_UNUSED_DAYS, LAG_MIN_SAMPLES, LAG_THRESHOLD_MS, LAG_WINDOW, LOGIN_WALL_MIN_CONSECUTIVE, LOGIN_WALL_MIN_PRIOR, LOGIN_WALL_PRIOR_JSON_RATIO, PAGE_CAP_ROWS, POLLING_LOOKBACK_MS, POLLING_MAX_STDDEV_RATIO, POLLING_MIN_DURATION_MS, POLLING_MIN_EMPTY_RATIO, POLLING_MIN_REQUESTS, RATE_LIMITED_MIN_ATTEMPTS, RATE_LIMITED_MIN_RATIO, RECOVERED_VISIBLE_MS, REJECTS_MIN_CONSECUTIVE, SERVER_ERRORS_MIN_5XX, SLOWING_DAYS, SLOWING_MIN_R2, SLOWING_MIN_RISING_DAYS, SLOW_MIN_SAMPLES, SLOW_TIMEOUT_RATIO, SLOW_WINDOW, SUBGRAPH_LAG_BLOCKS, SUBGRAPH_LAG_LOSING_BLOCKS, SUBGRAPH_LAG_SNAPSHOTS, TEST_ENDPOINT_MIN_AGE_DAYS, TLS_WARN_DAYS, TenantEvaluateDeps, dismissInsight, evaluateTenantInsights, handoffPrompt, hostOf, listInsights, listOpenResources, maybeLabel, muteRule, plainSnippet, plural, purgeResolved, rankInsights, recordEvaluation, runRules, unmuteRule, utcDateTime, utcDay, utcTime };
1584
+ export { BACKFILL_DAY_SHARE, BACKFILL_FULL_PAGE_RATIO, BACKFILL_MIN_DAY_ROWS, CLEAR_STREAK_TO_RESOLVE, CREDITS_RUNWAY_WARN_DAYS, DEAD_LETTER_DELETE_AGE_DAYS, DEAD_LETTER_WARN_AGE_DAYS, DOWN_MIN_CONSECUTIVE, DUPLICATE_READS_LOOKBACK_MS, DUPLICATE_READS_MIN_PAGES, DUPLICATE_READS_WINDOW_MS, DetectedInsight, EvaluatedKey, HANDLER_ERRORS_MIN_24H, InsightRule, InsightScope, KEY_UNUSED_DAYS, LAG_MIN_SAMPLES, LAG_THRESHOLD_MS, LAG_WINDOW, LOGIN_WALL_MIN_CONSECUTIVE, LOGIN_WALL_MIN_PRIOR, LOGIN_WALL_PRIOR_JSON_RATIO, PAGE_CAP_ROWS, POLLING_FOLLOW_GAP_MS, POLLING_LOOKBACK_MS, POLLING_MAX_STDDEV_RATIO, POLLING_MIN_DURATION_MS, POLLING_MIN_EMPTY_RATIO, POLLING_MIN_REQUESTS, RATE_LIMITED_MIN_ATTEMPTS, RATE_LIMITED_MIN_RATIO, RECOVERED_VISIBLE_MS, REJECTS_MIN_CONSECUTIVE, REVOKED_KEY_ACTIVE_MS, SERVER_ERRORS_MIN_5XX, SLOWING_DAYS, SLOWING_MIN_R2, SLOWING_MIN_RISING_DAYS, SLOW_MIN_SAMPLES, SLOW_TIMEOUT_RATIO, SLOW_WINDOW, SUBGRAPH_LAG_BLOCKS, SUBGRAPH_LAG_LOSING_BLOCKS, SUBGRAPH_LAG_SNAPSHOTS, TEST_ENDPOINT_MIN_AGE_DAYS, TLS_WARN_DAYS, TenantEvaluateDeps, dismissInsight, evaluateTenantInsights, handoffPrompt, hostOf, listInsights, listOpenResources, maybeLabel, muteRule, plainSnippet, plural, purgeResolved, rankInsights, recordEvaluation, runRules, unmuteRule, utcDateTime, utcDay, utcTime };
@@ -122,6 +122,7 @@ var POLLING_MIN_DURATION_MS = 3600000;
122
122
  var POLLING_MIN_REQUESTS = 5;
123
123
  var POLLING_LOOKBACK_MS = 6 * 3600000;
124
124
  var POLLING_MAX_STDDEV_RATIO = 0.2;
125
+ var POLLING_FOLLOW_GAP_MS = 1e4;
125
126
  var POLLING_MIN_EMPTY_RATIO = 0.8;
126
127
  var SERVER_ERRORS_MIN_5XX = 3;
127
128
  var BACKFILL_DAY_SHARE = 0.25;
@@ -129,6 +130,7 @@ var BACKFILL_FULL_PAGE_RATIO = 0.9;
129
130
  var BACKFILL_MIN_DAY_ROWS = 1e5;
130
131
  var CREDITS_RUNWAY_WARN_DAYS = 7;
131
132
  var KEY_UNUSED_DAYS = 30;
133
+ var REVOKED_KEY_ACTIVE_MS = 3600000;
132
134
  var RECOVERED_VISIBLE_MS = 24 * 3600000;
133
135
  var CLEAR_STREAK_TO_RESOLVE = 2;
134
136
  // src/insights/prompt.ts
@@ -275,12 +277,16 @@ async function listInsights(db, scope, now = new Date, filter = {}) {
275
277
  const since = new Date(now.getTime() - RECOVERED_VISIBLE_MS);
276
278
  const { rows } = await sql2`
277
279
  SELECT i.id, i.rule, i.severity, i.impact, i.payload, i.first_seen_at, i.resolved_at
278
- FROM insights i
279
- WHERE ${scopeWhere(scope, sql2.ref("i.account_id"))}
280
- AND i.dismissed_at IS NULL
281
- AND (i.resolved_at IS NULL OR i.resolved_at > ${since})
282
- ${filter.kind ? sql2`AND i.resource_kind = ${filter.kind}` : sql2``}
283
- ${filter.id ? sql2`AND i.resource_id = ${filter.id}` : sql2``}
280
+ FROM (
281
+ SELECT DISTINCT ON (resource_kind, resource_id, rule) *
282
+ FROM insights
283
+ WHERE ${scopeWhere(scope)}
284
+ AND (resolved_at IS NULL OR resolved_at > ${since})
285
+ ${filter.kind ? sql2`AND resource_kind = ${filter.kind}` : sql2``}
286
+ ${filter.id ? sql2`AND resource_id = ${filter.id}` : sql2``}
287
+ ORDER BY resource_kind, resource_id, rule, resolved_at DESC NULLS FIRST
288
+ ) i
289
+ WHERE i.dismissed_at IS NULL
284
290
  AND NOT EXISTS (
285
291
  SELECT 1 FROM insight_mutes m
286
292
  WHERE ${scopeWhere(scope, sql2.ref("m.account_id"))}
@@ -2241,6 +2247,7 @@ export {
2241
2247
  LOGIN_WALL_MIN_PRIOR,
2242
2248
  LOGIN_WALL_PRIOR_JSON_RATIO,
2243
2249
  PAGE_CAP_ROWS,
2250
+ POLLING_FOLLOW_GAP_MS,
2244
2251
  POLLING_LOOKBACK_MS,
2245
2252
  POLLING_MAX_STDDEV_RATIO,
2246
2253
  POLLING_MIN_DURATION_MS,
@@ -2250,6 +2257,7 @@ export {
2250
2257
  RATE_LIMITED_MIN_RATIO,
2251
2258
  RECOVERED_VISIBLE_MS,
2252
2259
  REJECTS_MIN_CONSECUTIVE,
2260
+ REVOKED_KEY_ACTIVE_MS,
2253
2261
  SERVER_ERRORS_MIN_5XX,
2254
2262
  SLOWING_DAYS,
2255
2263
  SLOWING_MIN_R2,
@@ -2282,5 +2290,5 @@ export {
2282
2290
  utcTime
2283
2291
  };
2284
2292
 
2285
- //# debugId=2FC79923A60C146564756E2164756E21
2293
+ //# debugId=E9A0F04B4CC704E864756E2164756E21
2286
2294
  //# sourceMappingURL=index.js.map