@secondlayer/shared 7.11.1 → 8.0.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 (50) hide show
  1. package/dist/src/archive/range-digest.d.ts +0 -169
  2. package/dist/src/archive/semantic-digest-builder.d.ts +0 -169
  3. package/dist/src/coverage/index.d.ts +0 -169
  4. package/dist/src/crypto/secrets.js +22 -3
  5. package/dist/src/crypto/secrets.js.map +3 -3
  6. package/dist/src/db/index.d.ts +1 -211
  7. package/dist/src/db/index.js +22 -16
  8. package/dist/src/db/index.js.map +4 -4
  9. package/dist/src/db/queries/chain-reorgs.d.ts +0 -169
  10. package/dist/src/db/queries/chain-reorgs.js +22 -16
  11. package/dist/src/db/queries/chain-reorgs.js.map +4 -4
  12. package/dist/src/db/queries/contracts.d.ts +0 -169
  13. package/dist/src/db/queries/instance.d.ts +0 -169
  14. package/dist/src/db/queries/integrity.d.ts +0 -169
  15. package/dist/src/db/queries/subgraph-gaps.d.ts +0 -169
  16. package/dist/src/db/queries/subgraph-operations.d.ts +1 -170
  17. package/dist/src/db/queries/subgraph-operations.js +1 -15
  18. package/dist/src/db/queries/subgraph-operations.js.map +3 -3
  19. package/dist/src/db/queries/subgraphs.d.ts +1 -191
  20. package/dist/src/db/queries/subgraphs.js +30 -1068
  21. package/dist/src/db/queries/subgraphs.js.map +5 -12
  22. package/dist/src/db/queries/subscriptions.d.ts +0 -169
  23. package/dist/src/db/queries/subscriptions.js +22 -3
  24. package/dist/src/db/queries/subscriptions.js.map +3 -3
  25. package/dist/src/db/schema.d.ts +1 -198
  26. package/dist/src/errors.d.ts +1 -22
  27. package/dist/src/errors.js +2 -4
  28. package/dist/src/errors.js.map +3 -3
  29. package/dist/src/index.d.ts +5 -256
  30. package/dist/src/index.js +23 -20
  31. package/dist/src/index.js.map +6 -6
  32. package/dist/src/mode.d.ts +16 -2
  33. package/dist/src/mode.js +25 -4
  34. package/dist/src/mode.js.map +3 -3
  35. package/dist/src/node/local-client.d.ts +0 -169
  36. package/dist/src/runtime/index.js +26 -3
  37. package/dist/src/runtime/index.js.map +3 -3
  38. package/dist/src/schemas/index.d.ts +5 -25
  39. package/dist/src/schemas/index.js +1 -2
  40. package/dist/src/schemas/index.js.map +3 -3
  41. package/dist/src/schemas/subgraphs.d.ts +5 -25
  42. package/dist/src/schemas/subgraphs.js +1 -2
  43. package/dist/src/schemas/subgraphs.js.map +3 -3
  44. package/dist/src/streams-rows/index.d.ts +399 -0
  45. package/dist/src/streams-rows/index.js +336 -0
  46. package/dist/src/streams-rows/index.js.map +17 -0
  47. package/dist/src/subgraphs/spec.d.ts +0 -9
  48. package/migrations/0118_drop_retired_control_tables.ts +53 -0
  49. package/migrations/0119_drop_accounts_plan.ts +29 -0
  50. package/package.json +5 -1
@@ -10,14 +10,28 @@
10
10
  * 2026-05-14 shared-rip this also serves subgraphs + subscriptions.
11
11
  */
12
12
  type InstanceMode = "oss" | "platform";
13
+ /** What the operator wrote in the env — `archive` is the honest name for the
14
+ * metered public-archive deployment and aliases `platform` behaviorally. */
15
+ type DeclaredInstanceMode = InstanceMode | "archive";
13
16
  /**
14
17
  * Resolve the active instance mode from `process.env.INSTANCE_MODE`.
15
18
  * Defaults to `"oss"` — the safest default for self-hosters who deploy
16
- * without setting the variable.
19
+ * without setting the variable. `archive` normalizes to `platform` here so
20
+ * every behavioral branch stays a two-way choice; use
21
+ * `getDeclaredInstanceMode()` for display surfaces.
17
22
  */
18
23
  declare function getInstanceMode(): InstanceMode;
24
+ /** The mode as declared in the env, for status/identity surfaces. */
25
+ declare function getDeclaredInstanceMode(): DeclaredInstanceMode;
26
+ /**
27
+ * True when public reads are credit-metered (the free window, retention, and
28
+ * credits gates arm). Platform/archive deployments meter by default;
29
+ * self-host never does unless the operator explicitly sets
30
+ * `METERED_READS=true`. `METERED_READS=false` disarms a metered deployment.
31
+ */
32
+ declare function isMeteredReads(): boolean;
19
33
  /** True when the active mode is `"platform"` (shared multi-tenant). */
20
34
  declare function isPlatformMode(): boolean;
21
35
  /** True when the active mode is `"oss"` (self-hosted). */
22
36
  declare function isOssMode(): boolean;
23
- export { isPlatformMode, isOssMode, getInstanceMode, InstanceMode };
37
+ export { isPlatformMode, isOssMode, isMeteredReads, getInstanceMode, getDeclaredInstanceMode, InstanceMode, DeclaredInstanceMode };
package/dist/src/mode.js CHANGED
@@ -15,14 +15,33 @@ var __export = (target, all) => {
15
15
  };
16
16
 
17
17
  // src/mode.ts
18
- var VALID_MODES = ["oss", "platform"];
19
- function getInstanceMode() {
18
+ var VALID_MODES = [
19
+ "oss",
20
+ "platform",
21
+ "archive"
22
+ ];
23
+ function declaredMode() {
20
24
  const raw = process.env.INSTANCE_MODE?.trim().toLowerCase();
21
25
  if (raw && VALID_MODES.includes(raw)) {
22
26
  return raw;
23
27
  }
24
28
  return "oss";
25
29
  }
30
+ function getInstanceMode() {
31
+ const declared = declaredMode();
32
+ return declared === "archive" ? "platform" : declared;
33
+ }
34
+ function getDeclaredInstanceMode() {
35
+ return declaredMode();
36
+ }
37
+ function isMeteredReads() {
38
+ const override = process.env.METERED_READS?.trim().toLowerCase();
39
+ if (override === "true")
40
+ return true;
41
+ if (override === "false")
42
+ return false;
43
+ return getInstanceMode() === "platform";
44
+ }
26
45
  function isPlatformMode() {
27
46
  return getInstanceMode() === "platform";
28
47
  }
@@ -32,8 +51,10 @@ function isOssMode() {
32
51
  export {
33
52
  isPlatformMode,
34
53
  isOssMode,
35
- getInstanceMode
54
+ isMeteredReads,
55
+ getInstanceMode,
56
+ getDeclaredInstanceMode
36
57
  };
37
58
 
38
- //# debugId=B04DA9673CE8B2EF64756E2164756E21
59
+ //# debugId=F90A93497EE7AEC664756E2164756E21
39
60
  //# sourceMappingURL=mode.js.map
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/mode.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * Instance modes for the Secondlayer platform.\n *\n * - `oss`: self-hosted, single-tenant. No auth middleware, no platform routes\n * (projects, admin). Everything runs against a single `DATABASE_URL`.\n * Intended for `docker compose up`.\n *\n * - `platform`: control-plane mode. Magic-link auth, API keys, projects,\n * admin. Serves the dashboard + CLI against a single shared DB. Post\n * 2026-05-14 shared-rip this also serves subgraphs + subscriptions.\n */\n\nexport type InstanceMode = \"oss\" | \"platform\";\n\nconst VALID_MODES: readonly InstanceMode[] = [\"oss\", \"platform\"];\n\n/**\n * Resolve the active instance mode from `process.env.INSTANCE_MODE`.\n * Defaults to `\"oss\"` — the safest default for self-hosters who deploy\n * without setting the variable.\n */\nexport function getInstanceMode(): InstanceMode {\n\tconst raw = process.env.INSTANCE_MODE?.trim().toLowerCase();\n\tif (raw && (VALID_MODES as readonly string[]).includes(raw)) {\n\t\treturn raw as InstanceMode;\n\t}\n\treturn \"oss\";\n}\n\n/** True when the active mode is `\"platform\"` (shared multi-tenant). */\nexport function isPlatformMode(): boolean {\n\treturn getInstanceMode() === \"platform\";\n}\n\n/** True when the active mode is `\"oss\"` (self-hosted). */\nexport function isOssMode(): boolean {\n\treturn getInstanceMode() === \"oss\";\n}\n"
5
+ "/**\n * Instance modes for the Secondlayer platform.\n *\n * - `oss`: self-hosted, single-tenant. No auth middleware, no platform routes\n * (projects, admin). Everything runs against a single `DATABASE_URL`.\n * Intended for `docker compose up`.\n *\n * - `platform`: control-plane mode. Magic-link auth, API keys, projects,\n * admin. Serves the dashboard + CLI against a single shared DB. Post\n * 2026-05-14 shared-rip this also serves subgraphs + subscriptions.\n */\n\nexport type InstanceMode = \"oss\" | \"platform\";\n\n/** What the operator wrote in the env — `archive` is the honest name for the\n * metered public-archive deployment and aliases `platform` behaviorally. */\nexport type DeclaredInstanceMode = InstanceMode | \"archive\";\n\nconst VALID_MODES: readonly DeclaredInstanceMode[] = [\n\t\"oss\",\n\t\"platform\",\n\t\"archive\",\n];\n\nfunction declaredMode(): DeclaredInstanceMode {\n\tconst raw = process.env.INSTANCE_MODE?.trim().toLowerCase();\n\tif (raw && (VALID_MODES as readonly string[]).includes(raw)) {\n\t\treturn raw as DeclaredInstanceMode;\n\t}\n\treturn \"oss\";\n}\n\n/**\n * Resolve the active instance mode from `process.env.INSTANCE_MODE`.\n * Defaults to `\"oss\"` — the safest default for self-hosters who deploy\n * without setting the variable. `archive` normalizes to `platform` here so\n * every behavioral branch stays a two-way choice; use\n * `getDeclaredInstanceMode()` for display surfaces.\n */\nexport function getInstanceMode(): InstanceMode {\n\tconst declared = declaredMode();\n\treturn declared === \"archive\" ? \"platform\" : declared;\n}\n\n/** The mode as declared in the env, for status/identity surfaces. */\nexport function getDeclaredInstanceMode(): DeclaredInstanceMode {\n\treturn declaredMode();\n}\n\n/**\n * True when public reads are credit-metered (the free window, retention, and\n * credits gates arm). Platform/archive deployments meter by default;\n * self-host never does unless the operator explicitly sets\n * `METERED_READS=true`. `METERED_READS=false` disarms a metered deployment.\n */\nexport function isMeteredReads(): boolean {\n\tconst override = process.env.METERED_READS?.trim().toLowerCase();\n\tif (override === \"true\") return true;\n\tif (override === \"false\") return false;\n\treturn getInstanceMode() === \"platform\";\n}\n\n/** True when the active mode is `\"platform\"` (shared multi-tenant). */\nexport function isPlatformMode(): boolean {\n\treturn getInstanceMode() === \"platform\";\n}\n\n/** True when the active mode is `\"oss\"` (self-hosted). */\nexport function isOssMode(): boolean {\n\treturn getInstanceMode() === \"oss\";\n}\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;AAcA,IAAM,cAAuC,CAAC,OAAO,UAAU;AAOxD,SAAS,eAAe,GAAiB;AAAA,EAC/C,MAAM,MAAM,QAAQ,IAAI,eAAe,KAAK,EAAE,YAAY;AAAA,EAC1D,IAAI,OAAQ,YAAkC,SAAS,GAAG,GAAG;AAAA,IAC5D,OAAO;AAAA,EACR;AAAA,EACA,OAAO;AAAA;AAID,SAAS,cAAc,GAAY;AAAA,EACzC,OAAO,gBAAgB,MAAM;AAAA;AAIvB,SAAS,SAAS,GAAY;AAAA,EACpC,OAAO,gBAAgB,MAAM;AAAA;",
8
- "debugId": "B04DA9673CE8B2EF64756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;AAkBA,IAAM,cAA+C;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AACD;AAEA,SAAS,YAAY,GAAyB;AAAA,EAC7C,MAAM,MAAM,QAAQ,IAAI,eAAe,KAAK,EAAE,YAAY;AAAA,EAC1D,IAAI,OAAQ,YAAkC,SAAS,GAAG,GAAG;AAAA,IAC5D,OAAO;AAAA,EACR;AAAA,EACA,OAAO;AAAA;AAUD,SAAS,eAAe,GAAiB;AAAA,EAC/C,MAAM,WAAW,aAAa;AAAA,EAC9B,OAAO,aAAa,YAAY,aAAa;AAAA;AAIvC,SAAS,uBAAuB,GAAyB;AAAA,EAC/D,OAAO,aAAa;AAAA;AASd,SAAS,cAAc,GAAY;AAAA,EACzC,MAAM,WAAW,QAAQ,IAAI,eAAe,KAAK,EAAE,YAAY;AAAA,EAC/D,IAAI,aAAa;AAAA,IAAQ,OAAO;AAAA,EAChC,IAAI,aAAa;AAAA,IAAS,OAAO;AAAA,EACjC,OAAO,gBAAgB,MAAM;AAAA;AAIvB,SAAS,cAAc,GAAY;AAAA,EACzC,OAAO,gBAAgB,MAAM;AAAA;AAIvB,SAAS,SAAS,GAAY;AAAA,EACpC,OAAO,gBAAgB,MAAM;AAAA;",
8
+ "debugId": "F90A93497EE7AEC664756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -223,11 +223,9 @@ interface AccountsTable {
223
223
  ghost: Generated<boolean>;
224
224
  /** Stacks principal owning a wallet-ghost account (x402-paid deploys). */
225
225
  wallet_principal: string | null;
226
- plan: Generated<string>;
227
226
  display_name: string | null;
228
227
  bio: string | null;
229
228
  avatar_url: string | null;
230
- slug: string | null;
231
229
  stripe_customer_id: string | null;
232
230
  /** Opt-out toggle for the subgraph reindex-completion email. Defaults true. */
233
231
  notify_reindex_complete: Generated<boolean>;
@@ -244,19 +242,6 @@ interface SessionsTable {
244
242
  last_used_at: Date | null;
245
243
  created_at: Generated<Date>;
246
244
  }
247
- /**
248
- * One-time claim tokens for ghost accounts. The raw token only ever appears in
249
- * the claim URL returned at mint time; we store its sha256. A used token marks
250
- * the account as claimed (or merged into an existing account).
251
- */
252
- interface ClaimTokensTable {
253
- id: Generated<string>;
254
- account_id: string;
255
- token_hash: string;
256
- created_at: Generated<Date>;
257
- expires_at: Date;
258
- used_at: Date | null;
259
- }
260
245
  interface MagicLinksTable {
261
246
  id: Generated<string>;
262
247
  email: string;
@@ -267,47 +252,6 @@ interface MagicLinksTable {
267
252
  failed_attempts: Generated<number>;
268
253
  created_at: Generated<Date>;
269
254
  }
270
- interface UsageDailyTable {
271
- account_id: string;
272
- tenant_id: string | null;
273
- date: string;
274
- api_requests: Generated<number>;
275
- deliveries: Generated<number>;
276
- streams_events_returned: Generated<number>;
277
- index_decoded_events_returned: Generated<number>;
278
- }
279
- interface UsageSnapshotsTable {
280
- id: Generated<string>;
281
- account_id: string;
282
- measured_at: Generated<Date>;
283
- storage_bytes: Generated<number>;
284
- }
285
- interface AccountInsightsTable {
286
- id: Generated<string>;
287
- account_id: string;
288
- category: string;
289
- insight_type: string;
290
- resource_id: string | null;
291
- severity: string;
292
- title: string;
293
- body: string;
294
- data: unknown;
295
- dismissed_at: Date | null;
296
- expires_at: Date | null;
297
- created_at: Generated<Date>;
298
- }
299
- interface AccountAgentRunsTable {
300
- id: Generated<string>;
301
- account_id: string;
302
- started_at: Generated<Date>;
303
- completed_at: Date | null;
304
- status: Generated<string>;
305
- input_tokens: Generated<number>;
306
- output_tokens: Generated<number>;
307
- cost_usd: Generated<number>;
308
- insights_created: Generated<number>;
309
- error: string | null;
310
- }
311
255
  interface SubgraphProcessingStatsTable {
312
256
  id: Generated<string>;
313
257
  subgraph_name: string;
@@ -340,41 +284,6 @@ interface SubgraphHealthSnapshotsTable {
340
284
  last_processed_block: number | null;
341
285
  captured_at: Generated<Date>;
342
286
  }
343
- interface SubgraphUsageDailyTable {
344
- subgraph_id: string;
345
- date: string;
346
- query_count: Generated<number>;
347
- }
348
- interface ProjectsTable {
349
- id: Generated<string>;
350
- name: string;
351
- slug: string;
352
- account_id: string;
353
- settings: Generated<Record<string, unknown>>;
354
- network: Generated<string>;
355
- node_rpc: string | null;
356
- created_at: Generated<Date>;
357
- updated_at: Generated<Date>;
358
- }
359
- interface TeamMembersTable {
360
- id: Generated<string>;
361
- project_id: string;
362
- account_id: string;
363
- role: Generated<string>;
364
- invited_by: string | null;
365
- created_at: Generated<Date>;
366
- }
367
- interface TeamInvitationsTable {
368
- id: Generated<string>;
369
- project_id: string;
370
- email: string;
371
- role: Generated<string>;
372
- token: string;
373
- invited_by: string | null;
374
- expires_at: Date;
375
- accepted_at: Date | null;
376
- created_at: Generated<Date>;
377
- }
378
287
  interface ProcessedStripeEventsTable {
379
288
  event_id: string;
380
289
  event_type: string;
@@ -827,27 +736,14 @@ interface Database {
827
736
  accounts: AccountsTable;
828
737
  sessions: SessionsTable;
829
738
  magic_links: MagicLinksTable;
830
- claim_tokens: ClaimTokensTable;
831
- usage_daily: UsageDailyTable;
832
- usage_snapshots: UsageSnapshotsTable;
833
- account_insights: AccountInsightsTable;
834
- account_agent_runs: AccountAgentRunsTable;
835
739
  subgraph_health_snapshots: SubgraphHealthSnapshotsTable;
836
740
  subgraph_processing_stats: SubgraphProcessingStatsTable;
837
741
  subgraph_table_snapshots: SubgraphTableSnapshotsTable;
838
742
  subgraph_gaps: SubgraphGapsTable;
839
743
  subgraph_operations: SubgraphOperationsTable;
840
- subgraph_usage_daily: SubgraphUsageDailyTable;
841
- projects: ProjectsTable;
842
- team_members: TeamMembersTable;
843
- team_invitations: TeamInvitationsTable;
844
744
  processed_stripe_events: ProcessedStripeEventsTable;
845
- tenants: TenantsTable;
846
- tenant_usage_monthly: TenantUsageMonthlyTable;
847
- tenant_compute_addons: TenantComputeAddonsTable;
848
745
  account_spend_caps: AccountSpendCapsTable;
849
746
  account_credits: AccountCreditsTable;
850
- provisioning_audit_log: ProvisioningAuditLogTable;
851
747
  subscriptions: SubscriptionsTable;
852
748
  subscription_outbox: SubscriptionOutboxTable;
853
749
  subscription_deliveries: SubscriptionDeliveriesTable;
@@ -922,57 +818,6 @@ interface X402PaymentsTable {
922
818
  * reconciler's heal path can never double-credit them. */
923
819
  credited_at: Generated<Date> | null;
924
820
  }
925
- type TenantStatus = "provisioning" | "active" | "limit_warning" | "paused_limit" | "suspended" | "error" | "deleted";
926
- interface TenantsTable {
927
- id: Generated<string>;
928
- account_id: string;
929
- slug: string;
930
- status: ColumnType<TenantStatus, TenantStatus | undefined, TenantStatus>;
931
- plan: string;
932
- cpus: ColumnType<number, number | string, number | string>;
933
- memory_mb: number;
934
- storage_limit_mb: number;
935
- storage_used_mb: number | null;
936
- pg_container_id: string | null;
937
- api_container_id: string | null;
938
- processor_container_id: string | null;
939
- target_database_url_enc: Buffer;
940
- tenant_jwt_secret_enc: Buffer;
941
- anon_key_enc: Buffer;
942
- service_key_enc: Buffer;
943
- api_url_internal: string;
944
- api_url_public: string;
945
- suspended_at: Date | null;
946
- last_health_check_at: Date | null;
947
- last_active_at: Generated<Date>;
948
- service_gen: Generated<number>;
949
- anon_gen: Generated<number>;
950
- project_id: string | null;
951
- created_at: Generated<Date>;
952
- updated_at: Generated<Date>;
953
- }
954
- interface TenantUsageMonthlyTable {
955
- id: Generated<string>;
956
- tenant_id: string;
957
- period_month: Date;
958
- storage_peak_mb: Generated<number>;
959
- storage_avg_mb: Generated<number>;
960
- storage_last_mb: Generated<number>;
961
- measurements: Generated<number>;
962
- first_at: Generated<Date>;
963
- last_at: Generated<Date>;
964
- }
965
- interface TenantComputeAddonsTable {
966
- id: Generated<string>;
967
- tenant_id: string;
968
- memory_mb_delta: Generated<number>;
969
- cpu_delta: Generated<number | string>;
970
- storage_mb_delta: Generated<number>;
971
- effective_from: Generated<Date>;
972
- effective_until: Date | null;
973
- stripe_subscription_item_id: string | null;
974
- created_at: Generated<Date>;
975
- }
976
821
  interface AccountSpendCapsTable {
977
822
  account_id: string;
978
823
  monthly_cap_cents: number | null;
@@ -996,20 +841,6 @@ interface AccountCreditsTable {
996
841
  refill_last_at: Date | null;
997
842
  updated_at: Generated<Date>;
998
843
  }
999
- type ProvisioningAuditEvent = "provision.start" | "provision.success" | "provision.failure" | "suspend" | "resume" | "resize" | "keys.rotate" | "bastion.key.upload" | "bastion.key.revoke" | "teardown";
1000
- type ProvisioningAuditStatus = "ok" | "error";
1001
- interface ProvisioningAuditLogTable {
1002
- id: Generated<string>;
1003
- tenant_id: string | null;
1004
- tenant_slug: string | null;
1005
- account_id: string | null;
1006
- actor: string;
1007
- event: ProvisioningAuditEvent;
1008
- status: ProvisioningAuditStatus;
1009
- detail: unknown | null;
1010
- error: string | null;
1011
- created_at: Generated<Date>;
1012
- }
1013
844
  type SubscriptionStatus = "active" | "paused" | "error";
1014
845
  /** Polymorphic subscription mode: `subgraph` reacts to processed table rows;
1015
846
  * `chain` reacts to raw chain events matched directly off the Index/Streams
@@ -330,8 +330,31 @@ var KNOWN = new Set([
330
330
  "NODE_ENV",
331
331
  "ALLOW_UNSIGNED_WEBHOOKS",
332
332
  "OBSERVER_JOURNAL_ENABLED",
333
- "STACKS_NETWORK"
333
+ "STACKS_NETWORK",
334
+ "STREAMS_API_URL",
335
+ "STREAMS_INTERNAL_API_KEY",
336
+ "SUBGRAPH_SOURCE",
337
+ "SUBGRAPH_INDEX_API_URL",
338
+ "SBTC_DECODER_ENABLED",
339
+ "POX4_DECODER_ENABLED",
340
+ "BNS_DECODER_ENABLED"
334
341
  ]);
342
+ var OWN_PREFIXES = [
343
+ "SECONDLAYER_",
344
+ "STACKS_",
345
+ "BITCOIN_",
346
+ "STREAMS_",
347
+ "SUBGRAPH_",
348
+ "OBSERVER_",
349
+ "INSTANCE_",
350
+ "ARCHIVE_",
351
+ "X402_"
352
+ ];
353
+ function isOwnNamespace(key) {
354
+ if (KNOWN.has(key))
355
+ return true;
356
+ return OWN_PREFIXES.some((prefix) => key.startsWith(prefix));
357
+ }
335
358
  function parseRuntimeConfig(env) {
336
359
  const errors = [];
337
360
  for (const key of Object.keys(env)) {
@@ -339,7 +362,7 @@ function parseRuntimeConfig(env) {
339
362
  continue;
340
363
  if (key.startsWith("SL_") || key.startsWith("POSTGRES_"))
341
364
  continue;
342
- if (!KNOWN.has(key) && isRuntimeish(key)) {
365
+ if (!KNOWN.has(key) && isRuntimeish(key) && isOwnNamespace(key)) {
343
366
  errors.push(`unknown config ${key}`);
344
367
  }
345
368
  }
@@ -690,5 +713,5 @@ export {
690
713
  BACKUP_PARTS
691
714
  };
692
715
 
693
- //# debugId=7A7ED27F7FDF478264756E2164756E21
716
+ //# debugId=0C264B17247A3CFD64756E2164756E21
694
717
  //# sourceMappingURL=index.js.map
@@ -6,14 +6,14 @@
6
6
  "/**\n * Unified supervisor — start a profile, contain per-module faults, aggregate\n * health so unrelated reads stay up when one loop dies.\n */\n\nimport {\n\ttype ModuleHealth,\n\ttype ModuleId,\n\ttype RuntimeModule,\n\temptyHealth,\n} from \"./modules.ts\";\n\nexport type SupervisorHealth = {\n\tstatus: \"healthy\" | \"degraded\" | \"failed\";\n\tmodules: ModuleHealth[];\n};\n\nexport type Supervisor = {\n\tstart: (ids?: readonly ModuleId[]) => Promise<void>;\n\tstop: (id?: ModuleId) => Promise<void>;\n\trestart: (id: ModuleId) => Promise<void>;\n\thealth: () => SupervisorHealth;\n};\n\nexport function createSupervisor(\n\tmodules: readonly RuntimeModule[],\n): Supervisor {\n\tconst byId = new Map(modules.map((m) => [m.id, m]));\n\tconst selected = new Set<ModuleId>();\n\tconst restarts = new Map<ModuleId, number>();\n\n\tfunction snapshot(): ModuleHealth[] {\n\t\treturn [...byId.values()].map((mod) => {\n\t\t\tconst health = selected.has(mod.id) ? mod.health() : emptyHealth(mod.id);\n\t\t\treturn { ...health, restarts: restarts.get(mod.id) ?? health.restarts };\n\t\t});\n\t}\n\n\tfunction aggregate(list: ModuleHealth[]): SupervisorHealth[\"status\"] {\n\t\tconst live = list.filter((m) => selected.has(m.id));\n\t\tif (live.length === 0) return \"failed\";\n\t\tif (live.every((m) => m.state === \"failed\" || m.state === \"stopped\")) {\n\t\t\treturn \"failed\";\n\t\t}\n\t\tif (live.some((m) => m.state === \"failed\" || m.state === \"degraded\")) {\n\t\t\treturn \"degraded\";\n\t\t}\n\t\tif (live.every((m) => m.state === \"running\")) return \"healthy\";\n\t\treturn \"degraded\";\n\t}\n\n\treturn {\n\t\tasync start(ids) {\n\t\t\tconst targets = ids ?? [...byId.keys()];\n\t\t\tfor (const id of targets) {\n\t\t\t\tconst mod = byId.get(id);\n\t\t\t\tif (!mod) continue;\n\t\t\t\tselected.add(id);\n\t\t\t\ttry {\n\t\t\t\t\tawait mod.start();\n\t\t\t\t} catch {\n\t\t\t\t\t// contained — other modules still start\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tasync stop(id) {\n\t\t\tif (id) {\n\t\t\t\tconst mod = byId.get(id);\n\t\t\t\tif (mod && selected.has(id)) await mod.stop();\n\t\t\t\tselected.delete(id);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const mid of [...selected]) {\n\t\t\t\tconst mod = byId.get(mid);\n\t\t\t\tif (mod) await mod.stop();\n\t\t\t\tselected.delete(mid);\n\t\t\t}\n\t\t},\n\t\tasync restart(id) {\n\t\t\tconst mod = byId.get(id);\n\t\t\tif (!mod) throw new Error(`unknown module ${id}`);\n\t\t\tif (selected.has(id)) await mod.stop();\n\t\t\tselected.add(id);\n\t\t\trestarts.set(id, (restarts.get(id) ?? 0) + 1);\n\t\t\ttry {\n\t\t\t\tawait mod.start();\n\t\t\t} catch {\n\t\t\t\t// contained\n\t\t\t}\n\t\t},\n\t\thealth() {\n\t\t\tconst modules = snapshot();\n\t\t\treturn { status: aggregate(modules), modules };\n\t\t},\n\t};\n}\n",
7
7
  "/**\n * Handler isolation — untrusted subgraph handlers run behind a timeout,\n * optional network deny, and cannot take down the host process.\n */\n\nexport const ISOLATION_FAULTS = [\n\t\"timeout\",\n\t\"throw\",\n\t\"oom\",\n\t\"kill\",\n\t\"network\",\n] as const;\nexport type IsolationFault = (typeof ISOLATION_FAULTS)[number];\n\nexport type IsolationLimits = {\n\ttimeoutMs: number;\n\tmemoryMb?: number;\n\tallowNetwork?: boolean;\n};\n\nexport type IsolationResult =\n\t| { ok: true; hostAlive: true }\n\t| { ok: false; fault: IsolationFault; hostAlive: true; detail: string };\n\nexport class IsolationNetworkError extends Error {\n\treadonly name = \"IsolationNetworkError\";\n}\n\nexport class IsolationKillError extends Error {\n\treadonly name = \"IsolationKillError\";\n}\n\nexport class IsolationOomError extends Error {\n\treadonly name = \"IsolationOomError\";\n}\n\nexport async function isolateHandler(\n\trun: (ctx: {\n\t\tsignal: AbortSignal;\n\t\tfetch: (url: string) => Promise<unknown>;\n\t}) => Promise<void>,\n\tlimits: IsolationLimits,\n): Promise<IsolationResult> {\n\tconst controller = new AbortController();\n\tconst timer = setTimeout(() => controller.abort(), limits.timeoutMs);\n\tconst blockedFetch = async (_url: string): Promise<unknown> => {\n\t\tthrow new IsolationNetworkError(\"network is disabled in this handler\");\n\t};\n\ttry {\n\t\tawait run({\n\t\t\tsignal: controller.signal,\n\t\t\tfetch: limits.allowNetwork ? (url: string) => fetch(url) : blockedFetch,\n\t\t});\n\t\tif (controller.signal.aborted) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tfault: \"timeout\",\n\t\t\t\thostAlive: true,\n\t\t\t\tdetail: `exceeded ${limits.timeoutMs}ms`,\n\t\t\t};\n\t\t}\n\t\treturn { ok: true, hostAlive: true };\n\t} catch (error) {\n\t\tif (controller.signal.aborted || isAbort(error)) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tfault: \"timeout\",\n\t\t\t\thostAlive: true,\n\t\t\t\tdetail: `exceeded ${limits.timeoutMs}ms`,\n\t\t\t};\n\t\t}\n\t\tif (error instanceof IsolationNetworkError) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tfault: \"network\",\n\t\t\t\thostAlive: true,\n\t\t\t\tdetail: error.message,\n\t\t\t};\n\t\t}\n\t\tif (error instanceof IsolationKillError) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tfault: \"kill\",\n\t\t\t\thostAlive: true,\n\t\t\t\tdetail: error.message,\n\t\t\t};\n\t\t}\n\t\tif (error instanceof IsolationOomError) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\tfault: \"oom\",\n\t\t\t\thostAlive: true,\n\t\t\t\tdetail: error.message,\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tok: false,\n\t\t\tfault: \"throw\",\n\t\t\thostAlive: true,\n\t\t\tdetail: error instanceof Error ? error.message : String(error),\n\t\t};\n\t} finally {\n\t\tclearTimeout(timer);\n\t}\n}\n\nfunction isAbort(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n",
8
8
  "/**\n * Embedded migration — advisory-locked before listeners/workers start.\n * Concurrent boots serialize. A failed pass releases the lock and refuses\n * to start the rest of the runtime.\n */\n\nexport const MIGRATION_LOCK_KEY = 0x534c4d47; // \"SLMG\"\n\nexport type EmbeddedMigration = {\n\tapplied: string[];\n\tok: boolean;\n\terror: string | null;\n};\n\nexport type MigrationRunner = {\n\tacquire: (key: number) => Promise<boolean>;\n\trelease: (key: number) => Promise<void>;\n\tapply: () => Promise<string[]>;\n};\n\nexport async function migrateEmbedded(\n\trunner: MigrationRunner,\n): Promise<EmbeddedMigration> {\n\tconst got = await runner.acquire(MIGRATION_LOCK_KEY);\n\tif (!got) {\n\t\treturn {\n\t\t\tapplied: [],\n\t\t\tok: false,\n\t\t\terror: \"migration lock held by another process\",\n\t\t};\n\t}\n\ttry {\n\t\tconst applied = await runner.apply();\n\t\treturn { applied, ok: true, error: null };\n\t} catch (error) {\n\t\treturn {\n\t\t\tapplied: [],\n\t\t\tok: false,\n\t\t\terror: error instanceof Error ? error.message : String(error),\n\t\t};\n\t} finally {\n\t\tawait runner.release(MIGRATION_LOCK_KEY);\n\t}\n}\n\n/** In-memory lock used by concurrent-startup tests. */\nexport function createMemoryMigrationRunner(opts?: {\n\tfail?: boolean;\n\tdelayMs?: number;\n\tsleep?: (ms: number) => Promise<void>;\n}): MigrationRunner & { holders: number; appliedCount: number } {\n\tlet held = false;\n\tconst state = { holders: 0, appliedCount: 0 };\n\treturn {\n\t\tget holders() {\n\t\t\treturn state.holders;\n\t\t},\n\t\tget appliedCount() {\n\t\t\treturn state.appliedCount;\n\t\t},\n\t\tasync acquire() {\n\t\t\tif (held) return false;\n\t\t\theld = true;\n\t\t\tstate.holders += 1;\n\t\t\treturn true;\n\t\t},\n\t\tasync release() {\n\t\t\theld = false;\n\t\t\tstate.holders = Math.max(0, state.holders - 1);\n\t\t},\n\t\tasync apply() {\n\t\t\tif (opts?.delayMs) await (opts.sleep ?? delay)(opts.delayMs);\n\t\t\tif (opts?.fail) throw new Error(\"migration failed\");\n\t\t\tstate.appliedCount += 1;\n\t\t\treturn [\"0116_coverage_schema\"];\n\t\t},\n\t};\n}\n\nfunction delay(ms: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms));\n}\n",
9
- "/**\n * Minimal runtime config — six or fewer required non-secret values.\n * Unknown or contradictory values fail before ingest starts.\n */\n\nexport const NODE_MODES = [\"external\", \"stacks\", \"full\"] as const;\nexport type NodeMode = (typeof NODE_MODES)[number];\n\nexport const NETWORKS = [\"mainnet\", \"testnet\", \"devnet\"] as const;\nexport type RuntimeNetwork = (typeof NETWORKS)[number];\n\n/** Required non-secret keys. Secrets (tokens, signing keys) come from `sl init`. */\nexport const REQUIRED_KEYS = [\n\t\"NETWORK\",\n\t\"DATABASE_URL\",\n\t\"NODE_MODE\",\n\t\"DATA_DIR\",\n\t\"API_PORT\",\n\t\"INDEXER_PORT\",\n] as const;\nexport type RequiredConfigKey = (typeof REQUIRED_KEYS)[number];\n\nexport const OPTIONAL_KEYS = [\n\t\"STACKS_NODE_RPC_URL\",\n\t\"LISTEN_HOST\",\n\t\"LOG_LEVEL\",\n\t\"INSTANCE_MODE\",\n] as const;\n\nexport const SECRET_KEYS = [\n\t\"INSTANCE_TOKEN\",\n\t\"API_KEY\",\n\t\"SECONDLAYER_SECRETS_KEY\",\n\t\"STREAMS_SIGNING_PRIVATE_KEY\",\n\t\"SECONDLAYER_WEBHOOK_SIGNING_PRIVATE_KEY\",\n\t\"POSTGRES_PASSWORD\",\n\t\"BITCOIN_RPC_PASSWORD\",\n] as const;\n\nexport type RuntimeConfig = {\n\tNETWORK: RuntimeNetwork;\n\tDATABASE_URL: string;\n\tNODE_MODE: NodeMode;\n\tDATA_DIR: string;\n\tAPI_PORT: number;\n\tINDEXER_PORT: number;\n\tSTACKS_NODE_RPC_URL: string | null;\n\tLISTEN_HOST: string;\n\tLOG_LEVEL: string;\n};\n\nexport type ConfigResult =\n\t| { ok: true; config: RuntimeConfig }\n\t| { ok: false; errors: string[] };\n\nconst KNOWN = new Set<string>([\n\t...REQUIRED_KEYS,\n\t...OPTIONAL_KEYS,\n\t...SECRET_KEYS,\n\t\"SOURCE_DATABASE_URL\",\n\t\"TARGET_DATABASE_URL\",\n\t\"INSTANCE_MODE\",\n\t\"NODE_ENV\",\n\t\"ALLOW_UNSIGNED_WEBHOOKS\",\n\t\"OBSERVER_JOURNAL_ENABLED\",\n\t\"STACKS_NETWORK\",\n]);\n\nexport function parseRuntimeConfig(\n\tenv: Record<string, string | undefined>,\n): ConfigResult {\n\tconst errors: string[] = [];\n\tfor (const key of Object.keys(env)) {\n\t\tif (env[key] === undefined) continue;\n\t\tif (key.startsWith(\"SL_\") || key.startsWith(\"POSTGRES_\")) continue;\n\t\tif (!KNOWN.has(key) && isRuntimeish(key)) {\n\t\t\terrors.push(`unknown config ${key}`);\n\t\t}\n\t}\n\n\tconst network = (env.NETWORK ?? env.STACKS_NETWORK ?? \"\").trim();\n\tif (!isNetwork(network)) {\n\t\terrors.push(\"NETWORK must be mainnet | testnet | devnet\");\n\t}\n\tconst database = (env.DATABASE_URL ?? \"\").trim();\n\tif (!database) errors.push(\"DATABASE_URL is required\");\n\tconst mode = (env.NODE_MODE ?? \"\").trim();\n\tif (!isNodeMode(mode)) {\n\t\terrors.push(\"NODE_MODE must be external | stacks | full\");\n\t}\n\tconst dataDir = (env.DATA_DIR ?? \"/data\").trim();\n\tconst apiPort = parsePort(env.API_PORT ?? \"3800\", \"API_PORT\", errors);\n\tconst indexerPort = parsePort(\n\t\tenv.INDEXER_PORT ?? \"3700\",\n\t\t\"INDEXER_PORT\",\n\t\terrors,\n\t);\n\n\tif (mode === \"external\" && env.BITCOIN_RPC_PASSWORD) {\n\t\terrors.push(\"NODE_MODE=external contradicts BITCOIN_RPC_PASSWORD\");\n\t}\n\tif (mode === \"full\" && !env.BITCOIN_RPC_PASSWORD) {\n\t\terrors.push(\"NODE_MODE=full requires BITCOIN_RPC_PASSWORD\");\n\t}\n\tif (mode === \"stacks\" && env.BITCOIN_RPC_PASSWORD) {\n\t\terrors.push(\n\t\t\t\"NODE_MODE=stacks uses public Bitcoin; drop BITCOIN_RPC_PASSWORD\",\n\t\t);\n\t}\n\n\tif (errors.length > 0) return { ok: false, errors };\n\treturn {\n\t\tok: true,\n\t\tconfig: {\n\t\t\tNETWORK: network as RuntimeNetwork,\n\t\t\tDATABASE_URL: database,\n\t\t\tNODE_MODE: mode as NodeMode,\n\t\t\tDATA_DIR: dataDir,\n\t\t\tAPI_PORT: apiPort,\n\t\t\tINDEXER_PORT: indexerPort,\n\t\t\tSTACKS_NODE_RPC_URL: env.STACKS_NODE_RPC_URL?.trim() || null,\n\t\t\tLISTEN_HOST: env.LISTEN_HOST?.trim() || \"0.0.0.0\",\n\t\t\tLOG_LEVEL: env.LOG_LEVEL?.trim() || \"info\",\n\t\t},\n\t};\n}\n\nfunction isNetwork(value: string): value is RuntimeNetwork {\n\treturn (NETWORKS as readonly string[]).includes(value);\n}\n\nfunction isNodeMode(value: string): value is NodeMode {\n\treturn (NODE_MODES as readonly string[]).includes(value);\n}\n\nfunction isRuntimeish(key: string): boolean {\n\treturn /^[A-Z][A-Z0-9_]+$/.test(key);\n}\n\nfunction parsePort(raw: string, name: string, errors: string[]): number {\n\tconst n = Number(raw);\n\tif (!Number.isInteger(n) || n < 1 || n > 65535) {\n\t\terrors.push(`${name} must be a TCP port`);\n\t\treturn 0;\n\t}\n\treturn n;\n}\n",
9
+ "/**\n * Minimal runtime config — six or fewer required non-secret values.\n * Unknown or contradictory values fail before ingest starts.\n */\n\nexport const NODE_MODES = [\"external\", \"stacks\", \"full\"] as const;\nexport type NodeMode = (typeof NODE_MODES)[number];\n\nexport const NETWORKS = [\"mainnet\", \"testnet\", \"devnet\"] as const;\nexport type RuntimeNetwork = (typeof NETWORKS)[number];\n\n/** Required non-secret keys. Secrets (tokens, signing keys) come from `sl init`. */\nexport const REQUIRED_KEYS = [\n\t\"NETWORK\",\n\t\"DATABASE_URL\",\n\t\"NODE_MODE\",\n\t\"DATA_DIR\",\n\t\"API_PORT\",\n\t\"INDEXER_PORT\",\n] as const;\nexport type RequiredConfigKey = (typeof REQUIRED_KEYS)[number];\n\nexport const OPTIONAL_KEYS = [\n\t\"STACKS_NODE_RPC_URL\",\n\t\"LISTEN_HOST\",\n\t\"LOG_LEVEL\",\n\t\"INSTANCE_MODE\",\n] as const;\n\nexport const SECRET_KEYS = [\n\t\"INSTANCE_TOKEN\",\n\t\"API_KEY\",\n\t\"SECONDLAYER_SECRETS_KEY\",\n\t\"STREAMS_SIGNING_PRIVATE_KEY\",\n\t\"SECONDLAYER_WEBHOOK_SIGNING_PRIVATE_KEY\",\n\t\"POSTGRES_PASSWORD\",\n\t\"BITCOIN_RPC_PASSWORD\",\n] as const;\n\nexport type RuntimeConfig = {\n\tNETWORK: RuntimeNetwork;\n\tDATABASE_URL: string;\n\tNODE_MODE: NodeMode;\n\tDATA_DIR: string;\n\tAPI_PORT: number;\n\tINDEXER_PORT: number;\n\tSTACKS_NODE_RPC_URL: string | null;\n\tLISTEN_HOST: string;\n\tLOG_LEVEL: string;\n};\n\nexport type ConfigResult =\n\t| { ok: true; config: RuntimeConfig }\n\t| { ok: false; errors: string[] };\n\nconst KNOWN = new Set<string>([\n\t...REQUIRED_KEYS,\n\t...OPTIONAL_KEYS,\n\t...SECRET_KEYS,\n\t\"SOURCE_DATABASE_URL\",\n\t\"TARGET_DATABASE_URL\",\n\t\"INSTANCE_MODE\",\n\t\"NODE_ENV\",\n\t\"ALLOW_UNSIGNED_WEBHOOKS\",\n\t\"OBSERVER_JOURNAL_ENABLED\",\n\t\"STACKS_NETWORK\",\n\t// Set by the shipped image/compose (docker/oss/docker-compose.yml).\n\t\"STREAMS_API_URL\",\n\t\"STREAMS_INTERNAL_API_KEY\",\n\t\"SUBGRAPH_SOURCE\",\n\t\"SUBGRAPH_INDEX_API_URL\",\n\t\"SBTC_DECODER_ENABLED\",\n\t\"POX4_DECODER_ENABLED\",\n\t\"BNS_DECODER_ENABLED\",\n]);\n\n/**\n * Namespaces the unknown-key refusal patrols. A real container environ\n * carries dozens of ambient ALL_CAPS vars (PATH, HOME, HOSTNAME, PORT,\n * BUN_*, …) that are not config and must not fail the boot — the refusal\n * exists to catch a misspelled *Secondlayer* key, so it only fires inside\n * our own vocabulary. Required keys are validated separately, so a typo'd\n * required key still fails via its missing-value error.\n */\nconst OWN_PREFIXES = [\n\t\"SECONDLAYER_\",\n\t\"STACKS_\",\n\t\"BITCOIN_\",\n\t\"STREAMS_\",\n\t\"SUBGRAPH_\",\n\t\"OBSERVER_\",\n\t\"INSTANCE_\",\n\t\"ARCHIVE_\",\n\t\"X402_\",\n] as const;\n\nfunction isOwnNamespace(key: string): boolean {\n\tif (KNOWN.has(key)) return true;\n\treturn OWN_PREFIXES.some((prefix) => key.startsWith(prefix));\n}\n\nexport function parseRuntimeConfig(\n\tenv: Record<string, string | undefined>,\n): ConfigResult {\n\tconst errors: string[] = [];\n\tfor (const key of Object.keys(env)) {\n\t\tif (env[key] === undefined) continue;\n\t\tif (key.startsWith(\"SL_\") || key.startsWith(\"POSTGRES_\")) continue;\n\t\tif (!KNOWN.has(key) && isRuntimeish(key) && isOwnNamespace(key)) {\n\t\t\terrors.push(`unknown config ${key}`);\n\t\t}\n\t}\n\n\tconst network = (env.NETWORK ?? env.STACKS_NETWORK ?? \"\").trim();\n\tif (!isNetwork(network)) {\n\t\terrors.push(\"NETWORK must be mainnet | testnet | devnet\");\n\t}\n\tconst database = (env.DATABASE_URL ?? \"\").trim();\n\tif (!database) errors.push(\"DATABASE_URL is required\");\n\tconst mode = (env.NODE_MODE ?? \"\").trim();\n\tif (!isNodeMode(mode)) {\n\t\terrors.push(\"NODE_MODE must be external | stacks | full\");\n\t}\n\tconst dataDir = (env.DATA_DIR ?? \"/data\").trim();\n\tconst apiPort = parsePort(env.API_PORT ?? \"3800\", \"API_PORT\", errors);\n\tconst indexerPort = parsePort(\n\t\tenv.INDEXER_PORT ?? \"3700\",\n\t\t\"INDEXER_PORT\",\n\t\terrors,\n\t);\n\n\tif (mode === \"external\" && env.BITCOIN_RPC_PASSWORD) {\n\t\terrors.push(\"NODE_MODE=external contradicts BITCOIN_RPC_PASSWORD\");\n\t}\n\tif (mode === \"full\" && !env.BITCOIN_RPC_PASSWORD) {\n\t\terrors.push(\"NODE_MODE=full requires BITCOIN_RPC_PASSWORD\");\n\t}\n\tif (mode === \"stacks\" && env.BITCOIN_RPC_PASSWORD) {\n\t\terrors.push(\n\t\t\t\"NODE_MODE=stacks uses public Bitcoin; drop BITCOIN_RPC_PASSWORD\",\n\t\t);\n\t}\n\n\tif (errors.length > 0) return { ok: false, errors };\n\treturn {\n\t\tok: true,\n\t\tconfig: {\n\t\t\tNETWORK: network as RuntimeNetwork,\n\t\t\tDATABASE_URL: database,\n\t\t\tNODE_MODE: mode as NodeMode,\n\t\t\tDATA_DIR: dataDir,\n\t\t\tAPI_PORT: apiPort,\n\t\t\tINDEXER_PORT: indexerPort,\n\t\t\tSTACKS_NODE_RPC_URL: env.STACKS_NODE_RPC_URL?.trim() || null,\n\t\t\tLISTEN_HOST: env.LISTEN_HOST?.trim() || \"0.0.0.0\",\n\t\t\tLOG_LEVEL: env.LOG_LEVEL?.trim() || \"info\",\n\t\t},\n\t};\n}\n\nfunction isNetwork(value: string): value is RuntimeNetwork {\n\treturn (NETWORKS as readonly string[]).includes(value);\n}\n\nfunction isNodeMode(value: string): value is NodeMode {\n\treturn (NODE_MODES as readonly string[]).includes(value);\n}\n\nfunction isRuntimeish(key: string): boolean {\n\treturn /^[A-Z][A-Z0-9_]+$/.test(key);\n}\n\nfunction parsePort(raw: string, name: string, errors: string[]): number {\n\tconst n = Number(raw);\n\tif (!Number.isInteger(n) || n < 1 || n > 65535) {\n\t\terrors.push(`${name} must be a TCP port`);\n\t\treturn 0;\n\t}\n\treturn n;\n}\n",
10
10
  "/**\n * Status UX — node, raw, decoder, subgraph, queue, archive import, disk,\n * and coverage, each with a next action.\n */\n\nimport type { CoverageState } from \"../coverage/evaluate.ts\";\nimport type { ModuleHealth, ModuleId } from \"./modules.ts\";\nimport type { SupervisorHealth } from \"./supervisor.ts\";\n\nexport const STATUS_PLANES = [\n\t\"node\",\n\t\"raw\",\n\t\"decoder\",\n\t\"subgraph\",\n\t\"queue\",\n\t\"archive\",\n\t\"disk\",\n\t\"coverage\",\n] as const;\nexport type StatusPlane = (typeof STATUS_PLANES)[number];\n\nexport type PlaneStatus = {\n\tplane: StatusPlane;\n\tstate: string;\n\taction: string;\n};\n\nexport type RuntimeStatusReport = {\n\tstatus: SupervisorHealth[\"status\"];\n\tmodules: ModuleHealth[];\n\tplanes: PlaneStatus[];\n};\n\nconst MODULE_TO_PLANE: Partial<Record<ModuleId, StatusPlane>> = {\n\tingest: \"raw\",\n\tdecoder: \"decoder\",\n\tsubgraph: \"subgraph\",\n\tnotification: \"queue\",\n\tverification: \"coverage\",\n};\n\nexport function reportRuntimeStatus(input: {\n\tsupervisor: SupervisorHealth;\n\tnode?: string;\n\tarchive?: string;\n\tdisk?: string;\n\tcoverage?: CoverageState | string;\n}): RuntimeStatusReport {\n\tconst planes: PlaneStatus[] = [];\n\tplanes.push({\n\t\tplane: \"node\",\n\t\tstate: input.node ?? \"unknown\",\n\t\taction: actionFor(\"node\", input.node ?? \"unknown\"),\n\t});\n\tfor (const mod of input.supervisor.modules) {\n\t\tconst plane = MODULE_TO_PLANE[mod.id];\n\t\tif (!plane) continue;\n\t\tplanes.push({\n\t\t\tplane,\n\t\t\tstate: mod.state,\n\t\t\taction: actionFor(plane, mod.state),\n\t\t});\n\t}\n\tplanes.push({\n\t\tplane: \"archive\",\n\t\tstate: input.archive ?? \"idle\",\n\t\taction: actionFor(\"archive\", input.archive ?? \"idle\"),\n\t});\n\tplanes.push({\n\t\tplane: \"disk\",\n\t\tstate: input.disk ?? \"ok\",\n\t\taction: actionFor(\"disk\", input.disk ?? \"ok\"),\n\t});\n\tplanes.push({\n\t\tplane: \"coverage\",\n\t\tstate: input.coverage ?? \"unknown\",\n\t\taction: actionFor(\"coverage\", String(input.coverage ?? \"unknown\")),\n\t});\n\treturn {\n\t\tstatus: input.supervisor.status,\n\t\tmodules: input.supervisor.modules,\n\t\tplanes,\n\t};\n}\n\nexport function actionFor(plane: StatusPlane, state: string): string {\n\tif (state === \"running\" || state === \"ok\" || state === \"complete\") {\n\t\treturn \"none\";\n\t}\n\tif (state === \"failed\" || state === \"gap\") {\n\t\treturn plane === \"raw\" || plane === \"coverage\"\n\t\t\t? \"sl verify all --against <manifest>\"\n\t\t\t: `restart ${plane}`;\n\t}\n\tif (state === \"lagging\" || state === \"syncing\") return \"wait for catch-up\";\n\tif (state === \"stale\") return \"refresh source tip\";\n\tif (plane === \"archive\" && state === \"idle\")\n\t\treturn \"sl bootstrap --against <manifest>\";\n\tif (plane === \"disk\" && state !== \"ok\") return \"free disk and retry\";\n\tif (plane === \"node\" && state === \"unknown\") return \"sl observer\";\n\treturn \"inspect logs\";\n}\n",
11
11
  "/**\n * Backup bundle — consistent DB, pinned config, encrypted keys, handler\n * manifests, and scope. Restore onto a wiped host must deep-verify green.\n */\n\nexport const BACKUP_PARTS = [\n\t\"db\",\n\t\"config\",\n\t\"keys\",\n\t\"handlers\",\n\t\"scope\",\n] as const;\nexport type BackupPart = (typeof BACKUP_PARTS)[number];\n\nexport type BackupManifest = {\n\tcreated_at: string;\n\tnetwork: string;\n\tparts: BackupPart[];\n\tencrypted: boolean;\n\tscope: { from_height: number; to_height: number | null };\n};\n\nexport type BackupPlan = {\n\tok: boolean;\n\tmanifest: BackupManifest;\n\treason: string;\n};\n\nexport function planBackup(input: {\n\tnetwork: string;\n\tencryptedKeys: boolean;\n\tfromHeight: number;\n\ttoHeight?: number | null;\n\tnow?: string;\n}): BackupPlan {\n\tif (!input.encryptedKeys) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tmanifest: emptyManifest(input),\n\t\t\treason: \"keys must be encrypted\",\n\t\t};\n\t}\n\tif (input.fromHeight < 0) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tmanifest: emptyManifest(input),\n\t\t\treason: \"scope from_height must be >= 0\",\n\t\t};\n\t}\n\treturn {\n\t\tok: true,\n\t\tmanifest: {\n\t\t\tcreated_at: input.now ?? \"1970-01-01T00:00:00.000Z\",\n\t\t\tnetwork: input.network,\n\t\t\tparts: [...BACKUP_PARTS],\n\t\t\tencrypted: true,\n\t\t\tscope: {\n\t\t\t\tfrom_height: input.fromHeight,\n\t\t\t\tto_height: input.toHeight ?? null,\n\t\t\t},\n\t\t},\n\t\treason: \"dry-run backup bundle\",\n\t};\n}\n\nexport type RestoreResult =\n\t| { ok: true; applied: boolean; deep_green: boolean }\n\t| { ok: false; reason: string };\n\nexport function restoreBackup(\n\tplan: BackupPlan,\n\topts?: { apply?: boolean; deepVerify?: boolean },\n): RestoreResult {\n\tif (!plan.ok) return { ok: false, reason: plan.reason };\n\tif (!opts?.apply) return { ok: true, applied: false, deep_green: false };\n\treturn {\n\t\tok: true,\n\t\tapplied: true,\n\t\tdeep_green: opts.deepVerify !== false,\n\t};\n}\n\nfunction emptyManifest(input: {\n\tnetwork: string;\n\tfromHeight: number;\n\ttoHeight?: number | null;\n\tnow?: string;\n}): BackupManifest {\n\treturn {\n\t\tcreated_at: input.now ?? \"1970-01-01T00:00:00.000Z\",\n\t\tnetwork: input.network,\n\t\tparts: [],\n\t\tencrypted: false,\n\t\tscope: { from_height: input.fromHeight, to_height: input.toHeight ?? null },\n\t};\n}\n",
12
12
  "/**\n * Upgrade contract — pin image, preflight schema/disk, backup first,\n * migrate, health/verify, document rollback limits.\n */\n\nexport const UPGRADE_STEPS = [\n\t\"pin\",\n\t\"preflight\",\n\t\"backup\",\n\t\"migrate\",\n\t\"health\",\n\t\"verify\",\n] as const;\nexport type UpgradeStep = (typeof UPGRADE_STEPS)[number];\n\nexport type UpgradePlan = {\n\tfrom: string;\n\tto: string;\n\tsteps: UpgradeStep[];\n\tok: boolean;\n\treason: string;\n\trollback: string;\n};\n\nexport function planUpgrade(input: {\n\tfrom: string;\n\tto: string;\n\tdiskOk: boolean;\n\tschemaOk: boolean;\n\tbackupDone: boolean;\n\tsupported?: readonly string[];\n}): UpgradePlan {\n\tconst rollback =\n\t\t\"roll back to the pinned previous image; schema migrations are forward-only\";\n\tif (input.from === input.to) {\n\t\treturn {\n\t\t\tfrom: input.from,\n\t\t\tto: input.to,\n\t\t\tsteps: [],\n\t\t\tok: false,\n\t\t\treason: \"from and to are the same image\",\n\t\t\trollback,\n\t\t};\n\t}\n\tif (input.supported && !input.supported.includes(input.to)) {\n\t\treturn {\n\t\t\tfrom: input.from,\n\t\t\tto: input.to,\n\t\t\tsteps: [],\n\t\t\tok: false,\n\t\t\treason: `image ${input.to} is not in the supported matrix`,\n\t\t\trollback,\n\t\t};\n\t}\n\tif (!input.diskOk) {\n\t\treturn {\n\t\t\tfrom: input.from,\n\t\t\tto: input.to,\n\t\t\tsteps: [\"pin\", \"preflight\"],\n\t\t\tok: false,\n\t\t\treason: \"disk preflight failed\",\n\t\t\trollback,\n\t\t};\n\t}\n\tif (!input.schemaOk) {\n\t\treturn {\n\t\t\tfrom: input.from,\n\t\t\tto: input.to,\n\t\t\tsteps: [\"pin\", \"preflight\"],\n\t\t\tok: false,\n\t\t\treason: \"schema preflight failed\",\n\t\t\trollback,\n\t\t};\n\t}\n\tif (!input.backupDone) {\n\t\treturn {\n\t\t\tfrom: input.from,\n\t\t\tto: input.to,\n\t\t\tsteps: [\"pin\", \"preflight\", \"backup\"],\n\t\t\tok: false,\n\t\t\treason: \"backup required before migrate\",\n\t\t\trollback,\n\t\t};\n\t}\n\treturn {\n\t\tfrom: input.from,\n\t\tto: input.to,\n\t\tsteps: [...UPGRADE_STEPS],\n\t\tok: true,\n\t\treason: \"dry-run upgrade\",\n\t\trollback,\n\t};\n}\n\nexport function applyUpgrade(\n\tplan: UpgradePlan,\n\topts?: { apply?: boolean },\n): { ok: boolean; applied: boolean; reason: string } {\n\tif (!plan.ok) return { ok: false, applied: false, reason: plan.reason };\n\tif (!opts?.apply) return { ok: true, applied: false, reason: plan.reason };\n\treturn { ok: true, applied: true, reason: \"upgrade applied\" };\n}\n",
13
13
  "/**\n * Resource guardrails — preflight RAM/disk/Postgres and estimate growth.\n * Constrained fixtures fail early.\n */\n\nexport type ResourceSnapshot = {\n\tramMb: number;\n\tdiskGb: number;\n\tpostgresMaxConnections: number;\n\tpostgresSharedBuffersMb?: number;\n};\n\nexport type GuardrailResult =\n\t| { ok: true; estimates: { diskGbPer100kBlocks: number } }\n\t| { ok: false; errors: string[] };\n\nexport const FLOORS = {\n\tappRamMb: 4096,\n\tfullRamMb: 98304,\n\tappDiskGb: 80,\n\tfullDiskGb: 1500,\n\tpostgresMaxConnections: 50,\n} as const;\n\nexport function preflightResources(\n\tsnap: ResourceSnapshot,\n\tmode: \"external\" | \"stacks\" | \"full\",\n): GuardrailResult {\n\tconst errors: string[] = [];\n\tconst ramFloor = mode === \"full\" ? FLOORS.fullRamMb : FLOORS.appRamMb;\n\tconst diskFloor = mode === \"full\" ? FLOORS.fullDiskGb : FLOORS.appDiskGb;\n\tif (snap.ramMb < ramFloor) {\n\t\terrors.push(\n\t\t\t`RAM ${snap.ramMb}MB below ${ramFloor}MB for NODE_MODE=${mode}`,\n\t\t);\n\t}\n\tif (snap.diskGb < diskFloor) {\n\t\terrors.push(\n\t\t\t`disk ${snap.diskGb}GB below ${diskFloor}GB for NODE_MODE=${mode}`,\n\t\t);\n\t}\n\tif (snap.postgresMaxConnections < FLOORS.postgresMaxConnections) {\n\t\terrors.push(\n\t\t\t`Postgres max_connections ${snap.postgresMaxConnections} below ${FLOORS.postgresMaxConnections}`,\n\t\t);\n\t}\n\tif (errors.length > 0) return { ok: false, errors };\n\treturn { ok: true, estimates: { diskGbPer100kBlocks: 1 } };\n}\n",
14
14
  "/**\n * Child-process commands the one-box supervisor starts.\n * Publisher stays off the default profile.\n */\n\nimport type { ModuleId } from \"./modules.ts\";\n\nexport const MODULE_COMMANDS: Record<ModuleId, readonly string[]> = {\n\tapi: [\"bun\", \"run\", \"packages/api/src/index.ts\"],\n\tingest: [\"bun\", \"run\", \"packages/indexer/src/index.ts\"],\n\tdecoder: [\"bun\", \"run\", \"packages/indexer/src/decode/service.ts\"],\n\tsubgraph: [\"bun\", \"run\", \"packages/subgraphs/src/service.ts\"],\n\tnotification: [\n\t\t\"bun\",\n\t\t\"run\",\n\t\t\"packages/subgraphs/src/subscription-service.ts\",\n\t],\n\tverification: [\"bun\", \"run\", \"packages/shared/src/runtime/verify-loop.ts\"],\n\tpublisher: [\"bun\", \"run\", \"packages/indexer/src/streams-bulk/scheduler.ts\"],\n};\n\nexport function commandFor(id: ModuleId): readonly string[] {\n\treturn MODULE_COMMANDS[id];\n}\n"
15
15
  ],
16
- "mappings": "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",
17
- "debugId": "7A7ED27F7FDF478264756E2164756E21",
16
+ "mappings": ";;;;;;;;;;;;;;;;;AAKO,IAAM,aAAa;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAGO,IAAM,gBAAgB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAiBO,IAAM,kBAAuC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEO,IAAM,oBAAyC,CAAC,WAAW;AAE3D,SAAS,UAAU,CAAC,OAAkC;AAAA,EAC5D,OAAQ,WAAiC,SAAS,KAAK;AAAA;AAGjD,SAAS,WAAW,CAAC,IAA4B;AAAA,EACvD,OAAO,EAAE,IAAI,OAAO,WAAW,QAAQ,MAAM,UAAU,EAAE;AAAA;AAInD,SAAS,kBAAkB,CACjC,IACA,MAM8E;AAAA,EAC9E,IAAI,SAAS,YAAY,EAAE;AAAA,EAC3B,OAAO;AAAA,IACN;AAAA,IACA,QAAQ,CAAC,OAAO,QAAQ;AAAA,MACvB,SAAS,KAAK,QAAQ,OAAO,QAAQ,UAAU,OAAO,OAAO;AAAA;AAAA,SAExD,MAAK,GAAG;AAAA,MACb,IAAI,MAAM,WAAW;AAAA,QACpB,SAAS;AAAA,aACL;AAAA,UACH,OAAO;AAAA,UACP,QAAQ;AAAA,QACT;AAAA,QACA,MAAM,IAAI,MAAM,GAAG,iBAAiB;AAAA,MACrC;AAAA,MACA,MAAM,UAAU;AAAA,MAChB,SAAS;AAAA,WACL;AAAA,QACH,OAAO,MAAM,OAAO,WAAW;AAAA,QAC/B,QAAQ,MAAM,OAAO,mBAAmB;AAAA,QACxC,UAAU,OAAO;AAAA,MAClB;AAAA,MACA,IAAI,MAAM;AAAA,QAAM,MAAM,IAAI,MAAM,GAAG,SAAS;AAAA;AAAA,SAEvC,KAAI,GAAG;AAAA,MACZ,MAAM,SAAS;AAAA,MACf,SAAS,KAAK,QAAQ,OAAO,UAAU;AAAA;AAAA,IAExC,QAAQ,MAAM;AAAA,EACf;AAAA;;ACzEM,SAAS,gBAAgB,CAC/B,SACa;AAAA,EACb,MAAM,OAAO,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAAA,EAClD,MAAM,WAAW,IAAI;AAAA,EACrB,MAAM,WAAW,IAAI;AAAA,EAErB,SAAS,QAAQ,GAAmB;AAAA,IACnC,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ;AAAA,MACtC,MAAM,SAAS,SAAS,IAAI,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,YAAY,IAAI,EAAE;AAAA,MACvE,OAAO,KAAK,QAAQ,UAAU,SAAS,IAAI,IAAI,EAAE,KAAK,OAAO,SAAS;AAAA,KACtE;AAAA;AAAA,EAGF,SAAS,SAAS,CAAC,MAAkD;AAAA,IACpE,MAAM,OAAO,KAAK,OAAO,CAAC,MAAM,SAAS,IAAI,EAAE,EAAE,CAAC;AAAA,IAClD,IAAI,KAAK,WAAW;AAAA,MAAG,OAAO;AAAA,IAC9B,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,YAAY,EAAE,UAAU,SAAS,GAAG;AAAA,MACrE,OAAO;AAAA,IACR;AAAA,IACA,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,UAAU,YAAY,EAAE,UAAU,UAAU,GAAG;AAAA,MACrE,OAAO;AAAA,IACR;AAAA,IACA,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,UAAU,SAAS;AAAA,MAAG,OAAO;AAAA,IACrD,OAAO;AAAA;AAAA,EAGR,OAAO;AAAA,SACA,MAAK,CAAC,KAAK;AAAA,MAChB,MAAM,UAAU,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC;AAAA,MACtC,WAAW,MAAM,SAAS;AAAA,QACzB,MAAM,MAAM,KAAK,IAAI,EAAE;AAAA,QACvB,IAAI,CAAC;AAAA,UAAK;AAAA,QACV,SAAS,IAAI,EAAE;AAAA,QACf,IAAI;AAAA,UACH,MAAM,IAAI,MAAM;AAAA,UACf,MAAM;AAAA,MAGT;AAAA;AAAA,SAEK,KAAI,CAAC,IAAI;AAAA,MACd,IAAI,IAAI;AAAA,QACP,MAAM,MAAM,KAAK,IAAI,EAAE;AAAA,QACvB,IAAI,OAAO,SAAS,IAAI,EAAE;AAAA,UAAG,MAAM,IAAI,KAAK;AAAA,QAC5C,SAAS,OAAO,EAAE;AAAA,QAClB;AAAA,MACD;AAAA,MACA,WAAW,OAAO,CAAC,GAAG,QAAQ,GAAG;AAAA,QAChC,MAAM,MAAM,KAAK,IAAI,GAAG;AAAA,QACxB,IAAI;AAAA,UAAK,MAAM,IAAI,KAAK;AAAA,QACxB,SAAS,OAAO,GAAG;AAAA,MACpB;AAAA;AAAA,SAEK,QAAO,CAAC,IAAI;AAAA,MACjB,MAAM,MAAM,KAAK,IAAI,EAAE;AAAA,MACvB,IAAI,CAAC;AAAA,QAAK,MAAM,IAAI,MAAM,kBAAkB,IAAI;AAAA,MAChD,IAAI,SAAS,IAAI,EAAE;AAAA,QAAG,MAAM,IAAI,KAAK;AAAA,MACrC,SAAS,IAAI,EAAE;AAAA,MACf,SAAS,IAAI,KAAK,SAAS,IAAI,EAAE,KAAK,KAAK,CAAC;AAAA,MAC5C,IAAI;AAAA,QACH,MAAM,IAAI,MAAM;AAAA,QACf,MAAM;AAAA;AAAA,IAIT,MAAM,GAAG;AAAA,MACR,MAAM,WAAU,SAAS;AAAA,MACzB,OAAO,EAAE,QAAQ,UAAU,QAAO,GAAG,kBAAQ;AAAA;AAAA,EAE/C;AAAA;;ACzFM,IAAM,mBAAmB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAAA;AAaO,MAAM,8BAA8B,MAAM;AAAA,EACvC,OAAO;AACjB;AAAA;AAEO,MAAM,2BAA2B,MAAM;AAAA,EACpC,OAAO;AACjB;AAAA;AAEO,MAAM,0BAA0B,MAAM;AAAA,EACnC,OAAO;AACjB;AAEA,eAAsB,cAAc,CACnC,KAIA,QAC2B;AAAA,EAC3B,MAAM,aAAa,IAAI;AAAA,EACvB,MAAM,QAAQ,WAAW,MAAM,WAAW,MAAM,GAAG,OAAO,SAAS;AAAA,EACnE,MAAM,eAAe,OAAO,SAAmC;AAAA,IAC9D,MAAM,IAAI,sBAAsB,qCAAqC;AAAA;AAAA,EAEtE,IAAI;AAAA,IACH,MAAM,IAAI;AAAA,MACT,QAAQ,WAAW;AAAA,MACnB,OAAO,OAAO,eAAe,CAAC,QAAgB,MAAM,GAAG,IAAI;AAAA,IAC5D,CAAC;AAAA,IACD,IAAI,WAAW,OAAO,SAAS;AAAA,MAC9B,OAAO;AAAA,QACN,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ,YAAY,OAAO;AAAA,MAC5B;AAAA,IACD;AAAA,IACA,OAAO,EAAE,IAAI,MAAM,WAAW,KAAK;AAAA,IAClC,OAAO,OAAO;AAAA,IACf,IAAI,WAAW,OAAO,WAAW,QAAQ,KAAK,GAAG;AAAA,MAChD,OAAO;AAAA,QACN,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ,YAAY,OAAO;AAAA,MAC5B;AAAA,IACD;AAAA,IACA,IAAI,iBAAiB,uBAAuB;AAAA,MAC3C,OAAO;AAAA,QACN,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ,MAAM;AAAA,MACf;AAAA,IACD;AAAA,IACA,IAAI,iBAAiB,oBAAoB;AAAA,MACxC,OAAO;AAAA,QACN,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ,MAAM;AAAA,MACf;AAAA,IACD;AAAA,IACA,IAAI,iBAAiB,mBAAmB;AAAA,MACvC,OAAO;AAAA,QACN,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ,MAAM;AAAA,MACf;AAAA,IACD;AAAA,IACA,OAAO;AAAA,MACN,IAAI;AAAA,MACJ,OAAO;AAAA,MACP,WAAW;AAAA,MACX,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC9D;AAAA,YACC;AAAA,IACD,aAAa,KAAK;AAAA;AAAA;AAIpB,SAAS,OAAO,CAAC,OAAyB;AAAA,EACzC,OAAO,iBAAiB,SAAS,MAAM,SAAS;AAAA;;ACrG1C,IAAM,qBAAqB;AAclC,eAAsB,eAAe,CACpC,QAC6B;AAAA,EAC7B,MAAM,MAAM,MAAM,OAAO,QAAQ,kBAAkB;AAAA,EACnD,IAAI,CAAC,KAAK;AAAA,IACT,OAAO;AAAA,MACN,SAAS,CAAC;AAAA,MACV,IAAI;AAAA,MACJ,OAAO;AAAA,IACR;AAAA,EACD;AAAA,EACA,IAAI;AAAA,IACH,MAAM,UAAU,MAAM,OAAO,MAAM;AAAA,IACnC,OAAO,EAAE,SAAS,IAAI,MAAM,OAAO,KAAK;AAAA,IACvC,OAAO,OAAO;AAAA,IACf,OAAO;AAAA,MACN,SAAS,CAAC;AAAA,MACV,IAAI;AAAA,MACJ,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC7D;AAAA,YACC;AAAA,IACD,MAAM,OAAO,QAAQ,kBAAkB;AAAA;AAAA;AAKlC,SAAS,2BAA2B,CAAC,MAIoB;AAAA,EAC/D,IAAI,OAAO;AAAA,EACX,MAAM,QAAQ,EAAE,SAAS,GAAG,cAAc,EAAE;AAAA,EAC5C,OAAO;AAAA,QACF,OAAO,GAAG;AAAA,MACb,OAAO,MAAM;AAAA;AAAA,QAEV,YAAY,GAAG;AAAA,MAClB,OAAO,MAAM;AAAA;AAAA,SAER,QAAO,GAAG;AAAA,MACf,IAAI;AAAA,QAAM,OAAO;AAAA,MACjB,OAAO;AAAA,MACP,MAAM,WAAW;AAAA,MACjB,OAAO;AAAA;AAAA,SAEF,QAAO,GAAG;AAAA,MACf,OAAO;AAAA,MACP,MAAM,UAAU,KAAK,IAAI,GAAG,MAAM,UAAU,CAAC;AAAA;AAAA,SAExC,MAAK,GAAG;AAAA,MACb,IAAI,MAAM;AAAA,QAAS,OAAO,KAAK,SAAS,OAAO,KAAK,OAAO;AAAA,MAC3D,IAAI,MAAM;AAAA,QAAM,MAAM,IAAI,MAAM,kBAAkB;AAAA,MAClD,MAAM,gBAAgB;AAAA,MACtB,OAAO,CAAC,sBAAsB;AAAA;AAAA,EAEhC;AAAA;AAGD,SAAS,KAAK,CAAC,IAA2B;AAAA,EACzC,OAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA;;AC3EjD,IAAM,aAAa,CAAC,YAAY,UAAU,MAAM;AAGhD,IAAM,WAAW,CAAC,WAAW,WAAW,QAAQ;AAIhD,IAAM,gBAAgB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAGO,IAAM,gBAAgB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEO,IAAM,cAAc;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAkBA,IAAM,QAAQ,IAAI,IAAY;AAAA,EAC7B,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,CAAC;AAUD,IAAM,eAAe;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAEA,SAAS,cAAc,CAAC,KAAsB;AAAA,EAC7C,IAAI,MAAM,IAAI,GAAG;AAAA,IAAG,OAAO;AAAA,EAC3B,OAAO,aAAa,KAAK,CAAC,WAAW,IAAI,WAAW,MAAM,CAAC;AAAA;AAGrD,SAAS,kBAAkB,CACjC,KACe;AAAA,EACf,MAAM,SAAmB,CAAC;AAAA,EAC1B,WAAW,OAAO,OAAO,KAAK,GAAG,GAAG;AAAA,IACnC,IAAI,IAAI,SAAS;AAAA,MAAW;AAAA,IAC5B,IAAI,IAAI,WAAW,KAAK,KAAK,IAAI,WAAW,WAAW;AAAA,MAAG;AAAA,IAC1D,IAAI,CAAC,MAAM,IAAI,GAAG,KAAK,aAAa,GAAG,KAAK,eAAe,GAAG,GAAG;AAAA,MAChE,OAAO,KAAK,kBAAkB,KAAK;AAAA,IACpC;AAAA,EACD;AAAA,EAEA,MAAM,WAAW,IAAI,WAAW,IAAI,kBAAkB,IAAI,KAAK;AAAA,EAC/D,IAAI,CAAC,UAAU,OAAO,GAAG;AAAA,IACxB,OAAO,KAAK,4CAA4C;AAAA,EACzD;AAAA,EACA,MAAM,YAAY,IAAI,gBAAgB,IAAI,KAAK;AAAA,EAC/C,IAAI,CAAC;AAAA,IAAU,OAAO,KAAK,0BAA0B;AAAA,EACrD,MAAM,QAAQ,IAAI,aAAa,IAAI,KAAK;AAAA,EACxC,IAAI,CAAC,WAAW,IAAI,GAAG;AAAA,IACtB,OAAO,KAAK,4CAA4C;AAAA,EACzD;AAAA,EACA,MAAM,WAAW,IAAI,YAAY,SAAS,KAAK;AAAA,EAC/C,MAAM,UAAU,UAAU,IAAI,YAAY,QAAQ,YAAY,MAAM;AAAA,EACpE,MAAM,cAAc,UACnB,IAAI,gBAAgB,QACpB,gBACA,MACD;AAAA,EAEA,IAAI,SAAS,cAAc,IAAI,sBAAsB;AAAA,IACpD,OAAO,KAAK,qDAAqD;AAAA,EAClE;AAAA,EACA,IAAI,SAAS,UAAU,CAAC,IAAI,sBAAsB;AAAA,IACjD,OAAO,KAAK,8CAA8C;AAAA,EAC3D;AAAA,EACA,IAAI,SAAS,YAAY,IAAI,sBAAsB;AAAA,IAClD,OAAO,KACN,iEACD;AAAA,EACD;AAAA,EAEA,IAAI,OAAO,SAAS;AAAA,IAAG,OAAO,EAAE,IAAI,OAAO,OAAO;AAAA,EAClD,OAAO;AAAA,IACN,IAAI;AAAA,IACJ,QAAQ;AAAA,MACP,SAAS;AAAA,MACT,cAAc;AAAA,MACd,WAAW;AAAA,MACX,UAAU;AAAA,MACV,UAAU;AAAA,MACV,cAAc;AAAA,MACd,qBAAqB,IAAI,qBAAqB,KAAK,KAAK;AAAA,MACxD,aAAa,IAAI,aAAa,KAAK,KAAK;AAAA,MACxC,WAAW,IAAI,WAAW,KAAK,KAAK;AAAA,IACrC;AAAA,EACD;AAAA;AAGD,SAAS,SAAS,CAAC,OAAwC;AAAA,EAC1D,OAAQ,SAA+B,SAAS,KAAK;AAAA;AAGtD,SAAS,UAAU,CAAC,OAAkC;AAAA,EACrD,OAAQ,WAAiC,SAAS,KAAK;AAAA;AAGxD,SAAS,YAAY,CAAC,KAAsB;AAAA,EAC3C,OAAO,oBAAoB,KAAK,GAAG;AAAA;AAGpC,SAAS,SAAS,CAAC,KAAa,MAAc,QAA0B;AAAA,EACvE,MAAM,IAAI,OAAO,GAAG;AAAA,EACpB,IAAI,CAAC,OAAO,UAAU,CAAC,KAAK,IAAI,KAAK,IAAI,OAAO;AAAA,IAC/C,OAAO,KAAK,GAAG,yBAAyB;AAAA,IACxC,OAAO;AAAA,EACR;AAAA,EACA,OAAO;AAAA;;ACzKD,IAAM,gBAAgB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAeA,IAAM,kBAA0D;AAAA,EAC/D,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAAA,EACd,cAAc;AACf;AAEO,SAAS,mBAAmB,CAAC,OAMZ;AAAA,EACvB,MAAM,SAAwB,CAAC;AAAA,EAC/B,OAAO,KAAK;AAAA,IACX,OAAO;AAAA,IACP,OAAO,MAAM,QAAQ;AAAA,IACrB,QAAQ,UAAU,QAAQ,MAAM,QAAQ,SAAS;AAAA,EAClD,CAAC;AAAA,EACD,WAAW,OAAO,MAAM,WAAW,SAAS;AAAA,IAC3C,MAAM,QAAQ,gBAAgB,IAAI;AAAA,IAClC,IAAI,CAAC;AAAA,MAAO;AAAA,IACZ,OAAO,KAAK;AAAA,MACX;AAAA,MACA,OAAO,IAAI;AAAA,MACX,QAAQ,UAAU,OAAO,IAAI,KAAK;AAAA,IACnC,CAAC;AAAA,EACF;AAAA,EACA,OAAO,KAAK;AAAA,IACX,OAAO;AAAA,IACP,OAAO,MAAM,WAAW;AAAA,IACxB,QAAQ,UAAU,WAAW,MAAM,WAAW,MAAM;AAAA,EACrD,CAAC;AAAA,EACD,OAAO,KAAK;AAAA,IACX,OAAO;AAAA,IACP,OAAO,MAAM,QAAQ;AAAA,IACrB,QAAQ,UAAU,QAAQ,MAAM,QAAQ,IAAI;AAAA,EAC7C,CAAC;AAAA,EACD,OAAO,KAAK;AAAA,IACX,OAAO;AAAA,IACP,OAAO,MAAM,YAAY;AAAA,IACzB,QAAQ,UAAU,YAAY,OAAO,MAAM,YAAY,SAAS,CAAC;AAAA,EAClE,CAAC;AAAA,EACD,OAAO;AAAA,IACN,QAAQ,MAAM,WAAW;AAAA,IACzB,SAAS,MAAM,WAAW;AAAA,IAC1B;AAAA,EACD;AAAA;AAGM,SAAS,SAAS,CAAC,OAAoB,OAAuB;AAAA,EACpE,IAAI,UAAU,aAAa,UAAU,QAAQ,UAAU,YAAY;AAAA,IAClE,OAAO;AAAA,EACR;AAAA,EACA,IAAI,UAAU,YAAY,UAAU,OAAO;AAAA,IAC1C,OAAO,UAAU,SAAS,UAAU,aACjC,uCACA,WAAW;AAAA,EACf;AAAA,EACA,IAAI,UAAU,aAAa,UAAU;AAAA,IAAW,OAAO;AAAA,EACvD,IAAI,UAAU;AAAA,IAAS,OAAO;AAAA,EAC9B,IAAI,UAAU,aAAa,UAAU;AAAA,IACpC,OAAO;AAAA,EACR,IAAI,UAAU,UAAU,UAAU;AAAA,IAAM,OAAO;AAAA,EAC/C,IAAI,UAAU,UAAU,UAAU;AAAA,IAAW,OAAO;AAAA,EACpD,OAAO;AAAA;;AC/FD,IAAM,eAAe;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAiBO,SAAS,UAAU,CAAC,OAMZ;AAAA,EACd,IAAI,CAAC,MAAM,eAAe;AAAA,IACzB,OAAO;AAAA,MACN,IAAI;AAAA,MACJ,UAAU,cAAc,KAAK;AAAA,MAC7B,QAAQ;AAAA,IACT;AAAA,EACD;AAAA,EACA,IAAI,MAAM,aAAa,GAAG;AAAA,IACzB,OAAO;AAAA,MACN,IAAI;AAAA,MACJ,UAAU,cAAc,KAAK;AAAA,MAC7B,QAAQ;AAAA,IACT;AAAA,EACD;AAAA,EACA,OAAO;AAAA,IACN,IAAI;AAAA,IACJ,UAAU;AAAA,MACT,YAAY,MAAM,OAAO;AAAA,MACzB,SAAS,MAAM;AAAA,MACf,OAAO,CAAC,GAAG,YAAY;AAAA,MACvB,WAAW;AAAA,MACX,OAAO;AAAA,QACN,aAAa,MAAM;AAAA,QACnB,WAAW,MAAM,YAAY;AAAA,MAC9B;AAAA,IACD;AAAA,IACA,QAAQ;AAAA,EACT;AAAA;AAOM,SAAS,aAAa,CAC5B,MACA,MACgB;AAAA,EAChB,IAAI,CAAC,KAAK;AAAA,IAAI,OAAO,EAAE,IAAI,OAAO,QAAQ,KAAK,OAAO;AAAA,EACtD,IAAI,CAAC,MAAM;AAAA,IAAO,OAAO,EAAE,IAAI,MAAM,SAAS,OAAO,YAAY,MAAM;AAAA,EACvE,OAAO;AAAA,IACN,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,YAAY,KAAK,eAAe;AAAA,EACjC;AAAA;AAGD,SAAS,aAAa,CAAC,OAKJ;AAAA,EAClB,OAAO;AAAA,IACN,YAAY,MAAM,OAAO;AAAA,IACzB,SAAS,MAAM;AAAA,IACf,OAAO,CAAC;AAAA,IACR,WAAW;AAAA,IACX,OAAO,EAAE,aAAa,MAAM,YAAY,WAAW,MAAM,YAAY,KAAK;AAAA,EAC3E;AAAA;;ACzFM,IAAM,gBAAgB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AAYO,SAAS,WAAW,CAAC,OAOZ;AAAA,EACf,MAAM,WACL;AAAA,EACD,IAAI,MAAM,SAAS,MAAM,IAAI;AAAA,IAC5B,OAAO;AAAA,MACN,MAAM,MAAM;AAAA,MACZ,IAAI,MAAM;AAAA,MACV,OAAO,CAAC;AAAA,MACR,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAAA,EACA,IAAI,MAAM,aAAa,CAAC,MAAM,UAAU,SAAS,MAAM,EAAE,GAAG;AAAA,IAC3D,OAAO;AAAA,MACN,MAAM,MAAM;AAAA,MACZ,IAAI,MAAM;AAAA,MACV,OAAO,CAAC;AAAA,MACR,IAAI;AAAA,MACJ,QAAQ,SAAS,MAAM;AAAA,MACvB;AAAA,IACD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,MAAM,QAAQ;AAAA,IAClB,OAAO;AAAA,MACN,MAAM,MAAM;AAAA,MACZ,IAAI,MAAM;AAAA,MACV,OAAO,CAAC,OAAO,WAAW;AAAA,MAC1B,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,MAAM,UAAU;AAAA,IACpB,OAAO;AAAA,MACN,MAAM,MAAM;AAAA,MACZ,IAAI,MAAM;AAAA,MACV,OAAO,CAAC,OAAO,WAAW;AAAA,MAC1B,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAAA,EACA,IAAI,CAAC,MAAM,YAAY;AAAA,IACtB,OAAO;AAAA,MACN,MAAM,MAAM;AAAA,MACZ,IAAI,MAAM;AAAA,MACV,OAAO,CAAC,OAAO,aAAa,QAAQ;AAAA,MACpC,IAAI;AAAA,MACJ,QAAQ;AAAA,MACR;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA,IACN,MAAM,MAAM;AAAA,IACZ,IAAI,MAAM;AAAA,IACV,OAAO,CAAC,GAAG,aAAa;AAAA,IACxB,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR;AAAA,EACD;AAAA;AAGM,SAAS,YAAY,CAC3B,MACA,MACoD;AAAA,EACpD,IAAI,CAAC,KAAK;AAAA,IAAI,OAAO,EAAE,IAAI,OAAO,SAAS,OAAO,QAAQ,KAAK,OAAO;AAAA,EACtE,IAAI,CAAC,MAAM;AAAA,IAAO,OAAO,EAAE,IAAI,MAAM,SAAS,OAAO,QAAQ,KAAK,OAAO;AAAA,EACzE,OAAO,EAAE,IAAI,MAAM,SAAS,MAAM,QAAQ,kBAAkB;AAAA;;ACpFtD,IAAM,SAAS;AAAA,EACrB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,wBAAwB;AACzB;AAEO,SAAS,kBAAkB,CACjC,MACA,MACkB;AAAA,EAClB,MAAM,SAAmB,CAAC;AAAA,EAC1B,MAAM,WAAW,SAAS,SAAS,OAAO,YAAY,OAAO;AAAA,EAC7D,MAAM,YAAY,SAAS,SAAS,OAAO,aAAa,OAAO;AAAA,EAC/D,IAAI,KAAK,QAAQ,UAAU;AAAA,IAC1B,OAAO,KACN,OAAO,KAAK,iBAAiB,4BAA4B,MAC1D;AAAA,EACD;AAAA,EACA,IAAI,KAAK,SAAS,WAAW;AAAA,IAC5B,OAAO,KACN,QAAQ,KAAK,kBAAkB,6BAA6B,MAC7D;AAAA,EACD;AAAA,EACA,IAAI,KAAK,yBAAyB,OAAO,wBAAwB;AAAA,IAChE,OAAO,KACN,4BAA4B,KAAK,gCAAgC,OAAO,wBACzE;AAAA,EACD;AAAA,EACA,IAAI,OAAO,SAAS;AAAA,IAAG,OAAO,EAAE,IAAI,OAAO,OAAO;AAAA,EAClD,OAAO,EAAE,IAAI,MAAM,WAAW,EAAE,qBAAqB,EAAE,EAAE;AAAA;;ACxCnD,IAAM,kBAAuD;AAAA,EACnE,KAAK,CAAC,OAAO,OAAO,2BAA2B;AAAA,EAC/C,QAAQ,CAAC,OAAO,OAAO,+BAA+B;AAAA,EACtD,SAAS,CAAC,OAAO,OAAO,wCAAwC;AAAA,EAChE,UAAU,CAAC,OAAO,OAAO,mCAAmC;AAAA,EAC5D,cAAc;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,cAAc,CAAC,OAAO,OAAO,4CAA4C;AAAA,EACzE,WAAW,CAAC,OAAO,OAAO,gDAAgD;AAC3E;AAEO,SAAS,UAAU,CAAC,IAAiC;AAAA,EAC3D,OAAO,gBAAgB;AAAA;",
17
+ "debugId": "0C264B17247A3CFD64756E2164756E21",
18
18
  "names": []
19
19
  }
@@ -10,19 +10,11 @@ interface DeploySubgraphRequest {
10
10
  startBlock?: number;
11
11
  /** Original TypeScript source, persisted so chat can read/diff/edit later. */
12
12
  sourceCode?: string;
13
- /**
14
- * BYO data plane: a user-owned Postgres connection string. When set, the
15
- * subgraph's schema, handler writes, and serving reads live in this DB instead
16
- * of the managed one. Stored encrypted at rest, never returned.
17
- */
18
- databaseUrl?: string;
19
- /** Validate the connection + print the DDL/grant plan without deploying. */
13
+ /** Validate the definition + print the DDL plan without deploying. */
20
14
  dryRun?: boolean;
21
15
  /**
22
- * Read visibility. Server-side defaults: managed deploys → public (anon
23
- * reads on /v1/subgraphs, name claimed in the global public namespace);
24
- * BYO-database deploys → private (public reads hit the user's own
25
- * Postgres, so going public is an explicit choice).
16
+ * Read visibility. Server-side default: deploys → public (anon reads on
17
+ * /v1/subgraphs, name claimed in the global public namespace).
26
18
  */
27
19
  visibility?: "public" | "private";
28
20
  }
@@ -33,10 +25,8 @@ interface DeploySubgraphResponse {
33
25
  version: string;
34
26
  visibility?: "public" | "private";
35
27
  message: string;
36
- /** Effective indexing start height after plan policy. */
28
+ /** Effective indexing start height. */
37
29
  start_block?: number;
38
- /** True when the free-tier forward-only policy adjusted the start. */
39
- start_block_clamped?: boolean;
40
30
  operationId?: string;
41
31
  reindexStarted?: boolean;
42
32
  /** Bounded candidate-event denominator for the reindex just started, when the
@@ -67,7 +57,6 @@ interface SubgraphSummary {
67
57
  progress: number;
68
58
  blocksRemaining?: number;
69
59
  syncMode?: "sync" | "reindex";
70
- resourceWarning?: SubgraphResourceWarning;
71
60
  gapCount: number;
72
61
  /** history_filling = expected gaps while a tip-first backfill op runs. */
73
62
  integrity: "complete" | "gaps_detected" | "history_filling";
@@ -115,7 +104,6 @@ interface SubgraphSyncInfo {
115
104
  estimatedEvents?: number;
116
105
  processedEvents?: number;
117
106
  etaSeconds?: number | null;
118
- resourceWarning?: SubgraphResourceWarning;
119
107
  gaps: {
120
108
  count: number
121
109
  totalMissingBlocks: number
@@ -124,14 +112,6 @@ interface SubgraphSyncInfo {
124
112
  /** history_filling = expected gaps while a tip-first backfill op runs. */
125
113
  integrity: "complete" | "gaps_detected" | "history_filling";
126
114
  }
127
- interface SubgraphResourceWarning {
128
- code: string;
129
- message: string;
130
- plan?: string;
131
- blockRange: number;
132
- processorMemoryMb: number;
133
- recommendedPlan: "launch";
134
- }
135
115
  interface SubgraphDetail {
136
116
  name: string;
137
117
  version: string;
@@ -474,4 +454,4 @@ declare function validateSubscriptionFilterForTable(input: {
474
454
  filter?: unknown
475
455
  tables: SubscriptionSchemaTables
476
456
  }): string[];
477
- export { validateSubscriptionFilterForTable, formatSubscriptionSchemaErrors, UpdateSubscriptionRequestSchema, UpdateSubscriptionRequest, SubscriptionSummary, SubscriptionStatusSchema, SubscriptionSchemaTables, SubscriptionSchemaTable, SubscriptionSchemaColumn, SubscriptionRuntimeSchema, SubscriptionFormatSchema, SubscriptionFilterSchema, SubscriptionFilterPrimitiveSchema, SubscriptionFilterPrimitive, SubscriptionFilterOperatorSchema, SubscriptionFilterOperator, SubscriptionFilterClauseSchema, SubscriptionFilterClause, SubscriptionFilter, SubscriptionDetail, SubgraphSyncInfo, SubgraphSummary, SubgraphResourceWarning, SubgraphQueryParams, SubgraphGapsResponse, SubgraphGapRange, SubgraphGapEntry, SubgraphDetail, SubgraphAggregateResponse, SubgraphAggregateParams, SUBSCRIPTION_STATUSES, SUBSCRIPTION_RUNTIMES, SUBSCRIPTION_FORMATS, SUBSCRIPTION_FILTER_OPERATORS, RotateSecretResponse, ReplaySubscriptionRequestSchema, ReplaySubscriptionRequest, ReplayResult, ReindexResponse, ParsedUpdateSubscriptionRequest, ParsedReplaySubscriptionRequest, ParsedCreateSubscriptionRequest, DeploySubgraphResponse, DeploySubgraphRequestSchema, DeploySubgraphRequest, DeliveryRow, DeadRow, CreateSubscriptionResponse, CreateSubscriptionRequestSchema, CreateSubscriptionRequest, CHAIN_TRIGGER_TYPES, CHAIN_TRIGGER_FIELDS };
457
+ export { validateSubscriptionFilterForTable, formatSubscriptionSchemaErrors, UpdateSubscriptionRequestSchema, UpdateSubscriptionRequest, SubscriptionSummary, SubscriptionStatusSchema, SubscriptionSchemaTables, SubscriptionSchemaTable, SubscriptionSchemaColumn, SubscriptionRuntimeSchema, SubscriptionFormatSchema, SubscriptionFilterSchema, SubscriptionFilterPrimitiveSchema, SubscriptionFilterPrimitive, SubscriptionFilterOperatorSchema, SubscriptionFilterOperator, SubscriptionFilterClauseSchema, SubscriptionFilterClause, SubscriptionFilter, SubscriptionDetail, SubgraphSyncInfo, SubgraphSummary, SubgraphQueryParams, SubgraphGapsResponse, SubgraphGapRange, SubgraphGapEntry, SubgraphDetail, SubgraphAggregateResponse, SubgraphAggregateParams, SUBSCRIPTION_STATUSES, SUBSCRIPTION_RUNTIMES, SUBSCRIPTION_FORMATS, SUBSCRIPTION_FILTER_OPERATORS, RotateSecretResponse, ReplaySubscriptionRequestSchema, ReplaySubscriptionRequest, ReplayResult, ReindexResponse, ParsedUpdateSubscriptionRequest, ParsedReplaySubscriptionRequest, ParsedCreateSubscriptionRequest, DeploySubgraphResponse, DeploySubgraphRequestSchema, DeploySubgraphRequest, DeliveryRow, DeadRow, CreateSubscriptionResponse, CreateSubscriptionRequestSchema, CreateSubscriptionRequest, CHAIN_TRIGGER_TYPES, CHAIN_TRIGGER_FIELDS };
@@ -25,7 +25,6 @@ var DeploySubgraphRequestSchema = z.object({
25
25
  handlerCode: z.string().max(1048576, "handler code exceeds 1MB limit"),
26
26
  startBlock: z.number().int().nonnegative().optional(),
27
27
  sourceCode: z.string().max(1048576, "source code exceeds 1MB limit").optional(),
28
- databaseUrl: z.string().url().refine((u) => u.startsWith("postgres://") || u.startsWith("postgresql://"), "must be a postgres:// connection string").optional(),
29
28
  dryRun: z.boolean().optional(),
30
29
  visibility: z.enum(["public", "private"]).optional()
31
30
  });
@@ -420,5 +419,5 @@ export {
420
419
  CHAIN_TRIGGER_FIELDS
421
420
  };
422
421
 
423
- //# debugId=5B85C16DA0B4FD7864756E2164756E21
422
+ //# debugId=674E6A31C0BEE4F264756E2164756E21
424
423
  //# sourceMappingURL=index.js.map