@camstack/system 1.2.34 → 1.2.36

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 (60) hide show
  1. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.js +1 -1
  2. package/dist/builtins/addon-pages-aggregator/addon-pages-aggregator.addon.mjs +1 -1
  3. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.js +1 -1
  4. package/dist/builtins/addon-widgets-aggregator/addon-widgets-aggregator.addon.mjs +1 -1
  5. package/dist/builtins/alerts/alerts.addon.js +1 -1
  6. package/dist/builtins/alerts/alerts.addon.mjs +1 -1
  7. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.js +1 -1
  8. package/dist/builtins/backup-orchestrator/backup-orchestrator.addon.mjs +1 -1
  9. package/dist/builtins/console-logging/index.js +1 -1
  10. package/dist/builtins/console-logging/index.mjs +1 -1
  11. package/dist/builtins/core-blocks/block-type-defs.d.ts +14 -0
  12. package/dist/builtins/core-blocks/compile-block.d.ts +21 -0
  13. package/dist/builtins/core-blocks/core-block-store.d.ts +73 -0
  14. package/dist/builtins/core-blocks/core-blocks.addon.d.ts +19 -0
  15. package/dist/builtins/core-blocks/core-blocks.addon.js +418 -0
  16. package/dist/builtins/core-blocks/core-blocks.addon.mjs +411 -0
  17. package/dist/builtins/core-blocks/index.d.ts +4 -0
  18. package/dist/builtins/core-blocks/index.js +12 -0
  19. package/dist/builtins/core-blocks/index.mjs +2 -0
  20. package/dist/builtins/device-manager/device-manager.addon.js +1 -1
  21. package/dist/builtins/device-manager/device-manager.addon.mjs +1 -1
  22. package/dist/builtins/doorbell/virtual-doorbell.addon.js +1 -1
  23. package/dist/builtins/doorbell/virtual-doorbell.addon.mjs +1 -1
  24. package/dist/builtins/hub-forwarder/index.js +1 -1
  25. package/dist/builtins/hub-forwarder/index.mjs +1 -1
  26. package/dist/builtins/liveness-monitor/liveness-monitor.addon.js +1 -1
  27. package/dist/builtins/liveness-monitor/liveness-monitor.addon.mjs +1 -1
  28. package/dist/builtins/local-auth/local-auth.addon.js +1 -1
  29. package/dist/builtins/local-auth/local-auth.addon.mjs +1 -1
  30. package/dist/builtins/local-network/local-network.addon.js +1 -1
  31. package/dist/builtins/local-network/local-network.addon.mjs +1 -1
  32. package/dist/builtins/loki-logging/index.js +1 -1
  33. package/dist/builtins/loki-logging/index.mjs +1 -1
  34. package/dist/builtins/native-metrics/native-metrics.addon.js +1 -1
  35. package/dist/builtins/native-metrics/native-metrics.addon.mjs +1 -1
  36. package/dist/builtins/platform-probe/index.js +1 -1
  37. package/dist/builtins/platform-probe/index.mjs +1 -1
  38. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.js +1 -1
  39. package/dist/builtins/remote-access-orchestrator/remote-access-orchestrator.addon.mjs +1 -1
  40. package/dist/builtins/snapshot/index.js +1 -1
  41. package/dist/builtins/snapshot/index.mjs +1 -1
  42. package/dist/builtins/sqlite-storage/filesystem-storage.addon.js +1 -1
  43. package/dist/builtins/sqlite-storage/filesystem-storage.addon.mjs +1 -1
  44. package/dist/builtins/sqlite-storage/integration-registry.d.ts +10 -0
  45. package/dist/builtins/sqlite-storage/sqlite-settings.addon.js +1 -1
  46. package/dist/builtins/sqlite-storage/sqlite-settings.addon.mjs +1 -1
  47. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.js +1 -1
  48. package/dist/builtins/storage-orchestrator/storage-orchestrator.addon.mjs +1 -1
  49. package/dist/builtins/system-config/system-config.addon.js +1 -1
  50. package/dist/builtins/system-config/system-config.addon.mjs +1 -1
  51. package/dist/builtins/winston-logging/index.js +1 -1
  52. package/dist/builtins/winston-logging/index.mjs +1 -1
  53. package/dist/{dist-Bqyu3d1X.js → dist-CFinlH7b.js} +263 -1
  54. package/dist/{dist-BjUYsgkj.mjs → dist-DO76YVO2.mjs} +252 -2
  55. package/dist/index.d.ts +1 -0
  56. package/dist/index.js +17 -2
  57. package/dist/index.mjs +17 -3
  58. package/dist/main-CVLq8IzA.js +2356 -0
  59. package/dist/main-CzH19GkU.mjs +2353 -0
  60. package/package.json +14 -1
@@ -8,6 +8,16 @@ export declare class IntegrationRegistry implements IIntegrationRegistry {
8
8
  getIntegrationByAddonId(addonId: string): Promise<Integration | null>;
9
9
  listIntegrations(): Promise<readonly Integration[]>;
10
10
  updateIntegration(id: string, updates: Partial<Pick<Integration, 'name' | 'enabled' | 'info'>>): Promise<Integration | null>;
11
+ /**
12
+ * A FIXED integration exists because an addon declares it, not because an
13
+ * operator added it — the Notification Center's alarm panel is the first.
14
+ * There is no add or delete flow for one, and this is where that is true
15
+ * rather than merely hidden: a UI that only omits the button still leaves the
16
+ * mutation one API call away.
17
+ */
18
+ static isFixed(integration: {
19
+ readonly info: Readonly<Record<string, unknown>>;
20
+ }): boolean;
11
21
  deleteIntegration(id: string): Promise<boolean>;
12
22
  getIntegrationSettings(integrationId: string): Promise<Record<string, unknown>>;
13
23
  setIntegrationSetting(integrationId: string, key: string, value: unknown): Promise<void>;
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Bqyu3d1X.js");
6
+ const require_dist = require("../../dist-CFinlH7b.js");
7
7
  let node_crypto = require("node:crypto");
8
8
  let better_sqlite3 = require("better-sqlite3");
9
9
  better_sqlite3 = require_chunk.__toESM(better_sqlite3);
@@ -1,4 +1,4 @@
1
- import { Dt as parseJsonUnknown, at as errMsg, c as RUNTIME_DEFAULTS, gt as asJsonObject, ot as BaseAddon, x as dataStoreProviderCapability } from "../../dist-BjUYsgkj.mjs";
1
+ import { C as dataStoreProviderCapability, ct as BaseAddon, kt as parseJsonUnknown, l as RUNTIME_DEFAULTS, st as errMsg, vt as asJsonObject } from "../../dist-DO76YVO2.mjs";
2
2
  import { randomUUID } from "node:crypto";
3
3
  import Database from "better-sqlite3";
4
4
  //#region src/builtins/sqlite-storage/filter-compiler.ts
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Bqyu3d1X.js");
6
+ const require_dist = require("../../dist-CFinlH7b.js");
7
7
  let node_path = require("node:path");
8
8
  node_path = require_chunk.__toESM(node_path);
9
9
  let node_fs_promises = require("node:fs/promises");
@@ -1,4 +1,4 @@
1
- import { $ as storageCapability, Et as parseJsonObject, Z as settingsStoreCapability, d as StorageLocationTypeSchema, ot as BaseAddon } from "../../dist-BjUYsgkj.mjs";
1
+ import { $ as settingsStoreCapability, Ot as parseJsonObject, ct as BaseAddon, f as StorageLocationTypeSchema, tt as storageCapability } from "../../dist-DO76YVO2.mjs";
2
2
  import * as path$1 from "node:path";
3
3
  import * as fs from "node:fs/promises";
4
4
  import { buildStorageLocationRegistry } from "@camstack/system";
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Bqyu3d1X.js");
6
+ const require_dist = require("../../dist-CFinlH7b.js");
7
7
  //#region src/builtins/system-config/system-config.addon.ts
8
8
  /**
9
9
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -1,4 +1,4 @@
1
- import { Ct as hydrateSchema, at as errMsg, ot as BaseAddon } from "../../dist-BjUYsgkj.mjs";
1
+ import { Tt as hydrateSchema, ct as BaseAddon, st as errMsg } from "../../dist-DO76YVO2.mjs";
2
2
  //#region src/builtins/system-config/system-config.addon.ts
3
3
  /**
4
4
  * Built-in `system-config` addon — Phase 4 of the settings redesign.
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../../chunk-Cek0wNdY.js");
6
- const require_dist = require("../../dist-Bqyu3d1X.js");
6
+ const require_dist = require("../../dist-CFinlH7b.js");
7
7
  const require_formatter = require("../../formatter-DqAKDlvN.js");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_chunk.__toESM(node_path);
@@ -1,4 +1,4 @@
1
- import { B as logDestinationCapability, ot as BaseAddon } from "../../dist-BjUYsgkj.mjs";
1
+ import { H as logDestinationCapability, ct as BaseAddon } from "../../dist-DO76YVO2.mjs";
2
2
  import { t as formatLogLine } from "../../formatter-B7qW8bPJ.mjs";
3
3
  import * as path$1 from "node:path";
4
4
  import path from "node:path";
@@ -5413,6 +5413,69 @@ var NcZoneConditionSchema = zod.z.object({
5413
5413
  * membership lists are OR within the list (spec §2.3).
5414
5414
  */
5415
5415
  /**
5416
+ * What a rule may actuate.
5417
+ *
5418
+ * **No hand-maintained allowlist** (operator decision, and the right one — a
5419
+ * written list of methods is a third parallel map to keep aligned, and this
5420
+ * repo has paid for those). The boundary instead comes from a property the
5421
+ * capabilities already carry: an action may target only a **device-scoped**
5422
+ * capability method.
5423
+ *
5424
+ * That is not decoration. A rule can be authored by a NON-ADMIN — personal
5425
+ * rules are a supported flow — and the executor runs with the addon's
5426
+ * privileges, so an unbounded action is an arbitrary RPC channel with a
5427
+ * privilege escalation attached. Restricting to device scope excludes the
5428
+ * system caps (`device-manager.removeDevice` and friends) by construction,
5429
+ * costs nothing to maintain, and cannot rot: a cap that stops being
5430
+ * device-scoped stops being actuatable in the same change.
5431
+ *
5432
+ * The executor enforces it; {@link NcRuleActionSchema} carries the intent.
5433
+ */
5434
+ /**
5435
+ * One step of a sequence.
5436
+ *
5437
+ * `wait` is a first-class step rather than a property of the next action: it is
5438
+ * what makes a sequence a SEQUENCE and not a list — "unlock, wait 5s, open"
5439
+ * cannot be expressed otherwise.
5440
+ */
5441
+ var NcRuleActionSchema = zod.z.discriminatedUnion("kind", [zod.z.object({
5442
+ kind: zod.z.literal("wait"),
5443
+ seconds: zod.z.number().min(0).max(300)
5444
+ }), zod.z.object({
5445
+ kind: zod.z.literal("cap"),
5446
+ deviceId: zod.z.number().int(),
5447
+ /** Capability name, e.g. `alarm-panel`. */
5448
+ cap: zod.z.string().min(1),
5449
+ /** Method on it. The executor refuses a non-device-scoped cap. */
5450
+ method: zod.z.string().min(1),
5451
+ /** Method arguments, minus `deviceId` (the executor injects it). */
5452
+ args: zod.z.record(zod.z.string(), zod.z.unknown()).optional()
5453
+ })]);
5454
+ /**
5455
+ * A named, ordered run of steps with its own throttle.
5456
+ *
5457
+ * `minDelaySec` exists because a noisy rule otherwise hammers a physical
5458
+ * actuator — the rule's own cooldown governs NOTIFICATIONS, which is a
5459
+ * different budget from "how often may this gate actually open".
5460
+ */
5461
+ var NcRuleActionSequenceSchema = zod.z.object({
5462
+ name: zod.z.string().min(1).max(120),
5463
+ enabled: zod.z.boolean(),
5464
+ minDelaySec: zod.z.number().int().min(0).max(86400).optional(),
5465
+ actions: zod.z.array(NcRuleActionSchema).min(1)
5466
+ });
5467
+ /**
5468
+ * Sequences a rule runs, by hook point.
5469
+ *
5470
+ * ONLY `onTrigger` is here, deliberately. The reference also has activation /
5471
+ * deactivation / reset / post-generation hooks, and they are wanted — but this
5472
+ * repo's expensive failure mode is declaring a surface nothing produces, so a
5473
+ * hook appears here in the same change that produces its edge, never before.
5474
+ */
5475
+ var NcRuleActionsSchema = zod.z.object({
5476
+ /** Runs when the rule MATCHES. */
5477
+ onTrigger: zod.z.array(NcRuleActionSequenceSchema).optional() });
5478
+ /**
5416
5479
  * "This rule applies only while `deviceId` is in one of `states`."
5417
5480
  *
5418
5481
  * The states are the DEVICE's own vocabulary — `AlarmState` for a panel,
@@ -5723,7 +5786,16 @@ var NcRuleInputSchema = zod.z.object({
5723
5786
  * read as `false` by {@link canSetGlobal} in the engine. Admins are not bound
5724
5787
  * by this flag — see the scope rules on that function.
5725
5788
  */
5726
- snoozeAllowGlobal: zod.z.boolean().optional()
5789
+ snoozeAllowGlobal: zod.z.boolean().optional(),
5790
+ /**
5791
+ * Devices this rule ACTUATES — arm the alarm, open a gate, turn on a light.
5792
+ *
5793
+ * This is what makes the rule set the alarm's trigger set without the alarm
5794
+ * being a special case: arming is
5795
+ * `{ cap: 'alarm-panel', method: 'arm', args: { mode: 'away' } }`, the same
5796
+ * shape as every other actuation.
5797
+ */
5798
+ actions: NcRuleActionsSchema.optional()
5727
5799
  });
5728
5800
  /**
5729
5801
  * Partial patch for `updateRule` — any subset of the input fields, plus the
@@ -17657,6 +17729,135 @@ var notificationOutputCapability = {
17657
17729
  }
17658
17730
  };
17659
17731
  /**
17732
+ * core-blocks — user-authored TypeScript, stored in the kernel and executed in
17733
+ * its own process.
17734
+ *
17735
+ * Spec: `docs/superpowers/specs/2026-08-04-core-blocks-and-synthetic-devices-design.md`.
17736
+ *
17737
+ * The first use is **owning devices without being a device provider**: a block
17738
+ * declares devices under a system or custom integration and drives their state,
17739
+ * with the same `ctx` an addon gets. Automations come later; nothing here
17740
+ * models a trigger.
17741
+ *
17742
+ * **Stated plainly, because it does not change by being true:** a block has an
17743
+ * addon's powers — devices, storage, the event bus, `ctx.api`. It is a plugin
17744
+ * with no review step. What makes that survivable is not a sandbox, it is
17745
+ * PROCESS ISOLATION: one process per block, supervised by `CrashSupervisor`,
17746
+ * so a block that throws or never returns is marked `failed` and visible
17747
+ * instead of taking the hub with it (D6). Every method here is admin-only, and
17748
+ * must stay so.
17749
+ */
17750
+ /** Where a block runs. The operator chooses — a block driving a device on an
17751
+ * agent is the reason placement is not fixed to the hub. */
17752
+ var CoreBlockPlacementSchema = zod.z.union([zod.z.literal("hub"), zod.z.string().min(1)]);
17753
+ /** What a block's process is doing. Mirrors the addon runner's own lifecycle so
17754
+ * a failing block reads the same way a failing addon does. */
17755
+ var CoreBlockStatusSchema = zod.z.enum([
17756
+ "stopped",
17757
+ "starting",
17758
+ "running",
17759
+ "failed"
17760
+ ]);
17761
+ /** Client-authored fields. */
17762
+ var CoreBlockInputSchema = zod.z.object({
17763
+ name: zod.z.string().min(1).max(120),
17764
+ /** TypeScript source. Compiled server-side before it is ever stored — a
17765
+ * block that does not compile is a fork failure the operator would meet
17766
+ * minutes later, in a log, instead of in the editor. */
17767
+ code: zod.z.string().max(2e5),
17768
+ enabled: zod.z.boolean(),
17769
+ placement: CoreBlockPlacementSchema,
17770
+ /**
17771
+ * Integration the block's devices hang from. Absent = the system integration
17772
+ * blocks share. A block may declare its own instead.
17773
+ */
17774
+ integrationId: zod.z.string().optional()
17775
+ });
17776
+ /** A stored block. */
17777
+ var CoreBlockSchema = CoreBlockInputSchema.extend({
17778
+ id: zod.z.string(),
17779
+ createdAt: zod.z.number(),
17780
+ updatedAt: zod.z.number(),
17781
+ /** Server-stamped author. */
17782
+ createdBy: zod.z.string(),
17783
+ status: CoreBlockStatusSchema,
17784
+ /**
17785
+ * Why the block is not running, when it is not. The operator's ONLY window
17786
+ * into a block that failed at load — a block that is silently absent is the
17787
+ * failure mode this whole feature has to avoid.
17788
+ */
17789
+ lastError: zod.z.string().optional(),
17790
+ /** Ms epoch of the last state change. */
17791
+ lastChangedAt: zod.z.number()
17792
+ });
17793
+ /** What a compile attempt produced. */
17794
+ var CoreBlockCompileResultSchema = zod.z.object({
17795
+ ok: zod.z.boolean(),
17796
+ /** Present when `ok` is false — the first error, in the author's words. */
17797
+ error: zod.z.string().optional(),
17798
+ line: zod.z.number().optional(),
17799
+ column: zod.z.number().optional()
17800
+ });
17801
+ var coreBlocksCapability = {
17802
+ name: "core-blocks",
17803
+ scope: "system",
17804
+ mode: "singleton",
17805
+ methods: {
17806
+ list: method(zod.z.object({}), zod.z.object({ blocks: zod.z.array(CoreBlockSchema) }), { auth: "admin" }),
17807
+ get: method(zod.z.object({ blockId: zod.z.string() }), zod.z.object({ block: CoreBlockSchema.nullable() }), { auth: "admin" }),
17808
+ /**
17809
+ * Create a block. The code is COMPILED first: storing source that does not
17810
+ * compile turns an editor error into a fork failure the operator meets
17811
+ * minutes later in a log.
17812
+ */
17813
+ create: method(zod.z.object({ block: CoreBlockInputSchema }), zod.z.object({ block: CoreBlockSchema }), {
17814
+ kind: "mutation",
17815
+ auth: "admin",
17816
+ caller: "required"
17817
+ }),
17818
+ update: method(zod.z.object({
17819
+ blockId: zod.z.string(),
17820
+ block: CoreBlockInputSchema.partial()
17821
+ }), zod.z.object({ block: CoreBlockSchema }), {
17822
+ kind: "mutation",
17823
+ auth: "admin",
17824
+ caller: "required"
17825
+ }),
17826
+ delete: method(zod.z.object({ blockId: zod.z.string() }), zod.z.object({ success: zod.z.literal(true) }), {
17827
+ kind: "mutation",
17828
+ auth: "admin"
17829
+ }),
17830
+ setEnabled: method(zod.z.object({
17831
+ blockId: zod.z.string(),
17832
+ enabled: zod.z.boolean()
17833
+ }), zod.z.object({ block: CoreBlockSchema }), {
17834
+ kind: "mutation",
17835
+ auth: "admin"
17836
+ }),
17837
+ /**
17838
+ * Type-check without saving — what the editor calls as the author types, so
17839
+ * the compiler's verdict is the same one the server will reach.
17840
+ */
17841
+ compile: method(zod.z.object({ code: zod.z.string() }), CoreBlockCompileResultSchema, {
17842
+ kind: "mutation",
17843
+ auth: "admin"
17844
+ }),
17845
+ /**
17846
+ * The declaration files the editor type-checks against.
17847
+ *
17848
+ * Served rather than bundled: the graph is 3.4 MB across 344 files, and
17849
+ * bundling it would roughly double the admin remote. Served rather than
17850
+ * hand-stubbed: a block runs with the same `ctx` an addon gets, so a stub
17851
+ * would drift and the editor would confidently autocomplete methods that
17852
+ * do not exist.
17853
+ */
17854
+ getTypeDefs: method(zod.z.object({}), zod.z.object({ libs: zod.z.array(zod.z.object({
17855
+ filePath: zod.z.string(),
17856
+ content: zod.z.string()
17857
+ })) }), { auth: "admin" })
17858
+ }
17859
+ };
17860
+ /**
17660
17861
  * Zod schemas for persisted record types.
17661
17862
  *
17662
17863
  * These schemas serve as the single source of truth for types that are
@@ -24191,6 +24392,7 @@ var ALL_CAPABILITY_DEFINITIONS = [
24191
24392
  consumablesCapability,
24192
24393
  contactCapability,
24193
24394
  controlCapability,
24395
+ coreBlocksCapability,
24194
24396
  coverCapability,
24195
24397
  customModelRegistryCapability,
24196
24398
  dataStoreProviderCapability,
@@ -25163,6 +25365,54 @@ var METHOD_ACCESS_MAP = Object.freeze({
25163
25365
  addonId: null,
25164
25366
  access: "create"
25165
25367
  },
25368
+ "coreBlocks.compile": {
25369
+ capName: "core-blocks",
25370
+ capScope: "system",
25371
+ addonId: null,
25372
+ access: "create"
25373
+ },
25374
+ "coreBlocks.create": {
25375
+ capName: "core-blocks",
25376
+ capScope: "system",
25377
+ addonId: null,
25378
+ access: "create"
25379
+ },
25380
+ "coreBlocks.delete": {
25381
+ capName: "core-blocks",
25382
+ capScope: "system",
25383
+ addonId: null,
25384
+ access: "delete"
25385
+ },
25386
+ "coreBlocks.get": {
25387
+ capName: "core-blocks",
25388
+ capScope: "system",
25389
+ addonId: null,
25390
+ access: "view"
25391
+ },
25392
+ "coreBlocks.getTypeDefs": {
25393
+ capName: "core-blocks",
25394
+ capScope: "system",
25395
+ addonId: null,
25396
+ access: "view"
25397
+ },
25398
+ "coreBlocks.list": {
25399
+ capName: "core-blocks",
25400
+ capScope: "system",
25401
+ addonId: null,
25402
+ access: "view"
25403
+ },
25404
+ "coreBlocks.setEnabled": {
25405
+ capName: "core-blocks",
25406
+ capScope: "system",
25407
+ addonId: null,
25408
+ access: "create"
25409
+ },
25410
+ "coreBlocks.update": {
25411
+ capName: "core-blocks",
25412
+ capScope: "system",
25413
+ addonId: null,
25414
+ access: "create"
25415
+ },
25166
25416
  "cover.close": {
25167
25417
  capName: "cover",
25168
25418
  capScope: "device",
@@ -29601,6 +29851,12 @@ Object.defineProperty(exports, "CAP_NAMES_WITH_STATUS", {
29601
29851
  return CAP_NAMES_WITH_STATUS;
29602
29852
  }
29603
29853
  });
29854
+ Object.defineProperty(exports, "CoreBlockSchema", {
29855
+ enumerable: true,
29856
+ get: function() {
29857
+ return CoreBlockSchema;
29858
+ }
29859
+ });
29604
29860
  Object.defineProperty(exports, "DATAPLANE_SECRET_HEADER", {
29605
29861
  enumerable: true,
29606
29862
  get: function() {
@@ -29769,6 +30025,12 @@ Object.defineProperty(exports, "buildStreamParamsConfigSchema", {
29769
30025
  return buildStreamParamsConfigSchema;
29770
30026
  }
29771
30027
  });
30028
+ Object.defineProperty(exports, "coreBlocksCapability", {
30029
+ enumerable: true,
30030
+ get: function() {
30031
+ return coreBlocksCapability;
30032
+ }
30033
+ });
29772
30034
  Object.defineProperty(exports, "createEvent", {
29773
30035
  enumerable: true,
29774
30036
  get: function() {