@camstack/addon-pipeline 1.2.40 → 1.2.41

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 (34) hide show
  1. package/dist/audio-analyzer/index.js +1 -1
  2. package/dist/audio-analyzer/index.mjs +1 -1
  3. package/dist/detection-pipeline/index.js +2 -2
  4. package/dist/detection-pipeline/index.mjs +2 -2
  5. package/dist/{dist-DcMBfoCg.js → dist-BS7wLqoV.js} +264 -5
  6. package/dist/{dist-C6p8jcji.mjs → dist-DvUTPZ8J.mjs} +264 -5
  7. package/dist/{event-loop-stall-monitor-oL9xanvX.js → event-loop-stall-monitor-C5P2bcwP.js} +1 -1
  8. package/dist/{event-loop-stall-monitor-BHqCesa1.mjs → event-loop-stall-monitor-a2u9e1qx.mjs} +1 -1
  9. package/dist/motion-wasm/index.js +1 -1
  10. package/dist/motion-wasm/index.mjs +1 -1
  11. package/dist/pipeline-runner/index.js +2 -2
  12. package/dist/pipeline-runner/index.mjs +2 -2
  13. package/dist/recorder/index.js +1 -1
  14. package/dist/recorder/index.mjs +1 -1
  15. package/dist/session-decode/decode-worker-child.js +39 -2
  16. package/dist/session-decode/decode-worker-child.mjs +39 -2
  17. package/dist/stream-broker/_stub.js +2 -2
  18. package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-Bt1YkfUW.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-CS82x0lt.mjs} +3 -3
  19. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-CDzxDzcv.mjs +26 -0
  20. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-CciPNnL7.mjs +26 -0
  21. package/dist/stream-broker/{hostInit-Dyj8Vaql.mjs → hostInit-lj4kKHrb.mjs} +3 -3
  22. package/dist/stream-broker/index.js +1 -1
  23. package/dist/stream-broker/index.mjs +1 -1
  24. package/dist/stream-broker/remoteEntry.js +1 -1
  25. package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-m1RaK_7F.js → MaskShapeCanvas-DI4BY7W2-BRQ5u_mo.js} +1 -1
  26. package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-C00UIgFo.js → MotionZonesSettings-NcxxQN8r-KbOg5nD9.js} +1 -1
  27. package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-DWYllToj.js → PrivacyMaskSettings-APgPLF7p-CKSPn3_D.js} +1 -1
  28. package/embed-dist/assets/index-CGdwTcwE.css +2 -0
  29. package/embed-dist/assets/{index-BaUgbxWl.js → index-CbrEyYGW.js} +12 -12
  30. package/embed-dist/index.html +2 -2
  31. package/package.json +1 -1
  32. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-DJnh97n9.mjs +0 -26
  33. package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BsNhZnfZ.mjs +0 -26
  34. package/embed-dist/assets/index-4fJzjj4H.css +0 -2
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-DcMBfoCg.js");
6
+ const require_dist = require("../dist-BS7wLqoV.js");
7
7
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
8
8
  const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-fsdDExML.js");
9
9
  let node_fs = require("node:fs");
@@ -1,5 +1,5 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { B as errMsg, K as hydrateSchema, O as mapAudioLabelToMacro, V as BaseAddon, _ as audioAnalysisCapability, d as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, v as audioAnalyzerCapability } from "../dist-C6p8jcji.mjs";
2
+ import { B as errMsg, K as hydrateSchema, O as mapAudioLabelToMacro, V as BaseAddon, _ as audioAnalysisCapability, d as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, v as audioAnalyzerCapability } from "../dist-DvUTPZ8J.mjs";
3
3
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
4
4
  import { i as downloadFile } from "../model-download-service-Cp9f4dk6-CwUb5v3Y.mjs";
5
5
  import * as fs from "node:fs";
@@ -3,8 +3,8 @@ Object.defineProperties(exports, {
3
3
  [Symbol.toStringTag]: { value: "Module" }
4
4
  });
5
5
  const require_chunk = require("../chunk-emK7D4bc.js");
6
- const require_dist = require("../dist-DcMBfoCg.js");
7
- const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-oL9xanvX.js");
6
+ const require_dist = require("../dist-BS7wLqoV.js");
7
+ const require_event_loop_stall_monitor = require("../event-loop-stall-monitor-C5P2bcwP.js");
8
8
  const require_lazy_sharp = require("../lazy-sharp-CcYuXtsa.js");
9
9
  const require_node_topology_platform = require("../node-topology-platform-CFZ7F4xW.js");
10
10
  const require_model_download_service_Cp9f4dk6 = require("../model-download-service-Cp9f4dk6-fsdDExML.js");
@@ -1,6 +1,6 @@
1
1
  import { n as __require } from "../chunk-DnnnRqeS.mjs";
2
- import { B as errMsg, E as evaluateZoneRules, F as runtimeDevices$1, G as createEvent, K as hydrateSchema, R as supportedRuntimes$1, T as enumerateInferenceDevices, V as BaseAddon, X as nodePin, Z as parseJsonUnknown, ct as object, dt as union, et as sleep, ft as EventCategory, h as YAMNET_TO_MACRO, j as pipelineExecutorCapability, nt as array, s as DEVICE_BACKEND_TO_FORMAT, t as APPLE_SA_TO_MACRO, ut as string, w as detectionPipelineCapability, x as defaultDeviceFor$1 } from "../dist-C6p8jcji.mjs";
3
- import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-BHqCesa1.mjs";
2
+ import { B as errMsg, E as evaluateZoneRules, F as runtimeDevices$1, G as createEvent, K as hydrateSchema, R as supportedRuntimes$1, T as enumerateInferenceDevices, V as BaseAddon, X as nodePin, Z as parseJsonUnknown, ct as object, dt as union, et as sleep, ft as EventCategory, h as YAMNET_TO_MACRO, j as pipelineExecutorCapability, nt as array, s as DEVICE_BACKEND_TO_FORMAT, t as APPLE_SA_TO_MACRO, ut as string, w as detectionPipelineCapability, x as defaultDeviceFor$1 } from "../dist-DvUTPZ8J.mjs";
3
+ import { a as getDefaultModelForFormat, c as getStepDefinition, i as ALL_STEPS, l as resolveModelForFormat, n as startEventLoopStallMonitor, o as getDefaultModelForFormatFromDef, r as ALL_PIPELINE_STEPS, s as getStep } from "../event-loop-stall-monitor-a2u9e1qx.mjs";
4
4
  import { t as getSharp } from "../lazy-sharp-B-mb8uWx.mjs";
5
5
  import { t as pickNodePlatformArch } from "../node-topology-platform-BkR_k6WT.mjs";
6
6
  import { a as ensureModel, o as isModelDownloaded, r as deleteModelFromDisk } from "../model-download-service-Cp9f4dk6-CwUb5v3Y.mjs";
@@ -9666,7 +9666,68 @@ var NcZoneConditionSchema = object({
9666
9666
  * The P1 condition set — a flat AND of groups; absent group = pass;
9667
9667
  * membership lists are OR within the list (spec §2.3).
9668
9668
  */
9669
+ /**
9670
+ * What a rule may actuate.
9671
+ *
9672
+ * **No hand-maintained allowlist** (operator decision, and the right one — a
9673
+ * written list of methods is a third parallel map to keep aligned, and this
9674
+ * repo has paid for those). The boundary instead comes from a property the
9675
+ * capabilities already carry: an action may target only a **device-scoped**
9676
+ * capability method.
9677
+ *
9678
+ * That is not decoration. A rule can be authored by a NON-ADMIN — personal
9679
+ * rules are a supported flow — and the executor runs with the addon's
9680
+ * privileges, so an unbounded action is an arbitrary RPC channel with a
9681
+ * privilege escalation attached. Restricting to device scope excludes the
9682
+ * system caps (`device-manager.removeDevice` and friends) by construction,
9683
+ * costs nothing to maintain, and cannot rot: a cap that stops being
9684
+ * device-scoped stops being actuatable in the same change.
9685
+ *
9686
+ * The executor enforces it; {@link NcRuleActionSchema} carries the intent.
9687
+ */
9688
+ /**
9689
+ * One step of a sequence.
9690
+ *
9691
+ * `wait` is a first-class step rather than a property of the next action: it is
9692
+ * what makes a sequence a SEQUENCE and not a list — "unlock, wait 5s, open"
9693
+ * cannot be expressed otherwise.
9694
+ */
9695
+ var NcRuleActionSchema = discriminatedUnion("kind", [object({
9696
+ kind: literal("wait"),
9697
+ seconds: number().min(0).max(300)
9698
+ }), object({
9699
+ kind: literal("cap"),
9700
+ deviceId: number().int(),
9701
+ /** Capability name, e.g. `alarm-panel`. */
9702
+ cap: string().min(1),
9703
+ /** Method on it. The executor refuses a non-device-scoped cap. */
9704
+ method: string().min(1),
9705
+ /** Method arguments, minus `deviceId` (the executor injects it). */
9706
+ args: record(string(), unknown()).optional()
9707
+ })]);
9708
+ /**
9709
+ * Sequences a rule runs, by hook point.
9710
+ *
9711
+ * ONLY `onTrigger` is here, deliberately. The reference also has activation /
9712
+ * deactivation / reset / post-generation hooks, and they are wanted — but this
9713
+ * repo's expensive failure mode is declaring a surface nothing produces, so a
9714
+ * hook appears here in the same change that produces its edge, never before.
9715
+ */
9716
+ var NcRuleActionsSchema = object({
9717
+ /** Runs when the rule MATCHES. */
9718
+ onTrigger: array(object({
9719
+ name: string().min(1).max(120),
9720
+ enabled: boolean(),
9721
+ minDelaySec: number().int().min(0).max(86400).optional(),
9722
+ actions: array(NcRuleActionSchema).min(1)
9723
+ })).optional() });
9669
9724
  var NcConditionsSchema = object({
9725
+ /** Gate on ANOTHER device's current state (the alarm armed, a switch on). */
9726
+ deviceState: object({
9727
+ deviceId: number().int(),
9728
+ /** Any of these matches. */
9729
+ states: array(string().min(1)).min(1)
9730
+ }).optional(),
9670
9731
  /** Device scope — absent = all devices. */
9671
9732
  devices: array(number()).optional(),
9672
9733
  /** Detector class names (any overlap with the record's class set). */
@@ -9960,7 +10021,16 @@ var NcRuleInputSchema = object({
9960
10021
  * read as `false` by {@link canSetGlobal} in the engine. Admins are not bound
9961
10022
  * by this flag — see the scope rules on that function.
9962
10023
  */
9963
- snoozeAllowGlobal: boolean().optional()
10024
+ snoozeAllowGlobal: boolean().optional(),
10025
+ /**
10026
+ * Devices this rule ACTUATES — arm the alarm, open a gate, turn on a light.
10027
+ *
10028
+ * This is what makes the rule set the alarm's trigger set without the alarm
10029
+ * being a special case: arming is
10030
+ * `{ cap: 'alarm-panel', method: 'arm', args: { mode: 'away' } }`, the same
10031
+ * shape as every other actuation.
10032
+ */
10033
+ actions: NcRuleActionsSchema.optional()
9964
10034
  });
9965
10035
  /**
9966
10036
  * Partial patch for `updateRule` — any subset of the input fields, plus the
@@ -10031,7 +10101,8 @@ var NcConditionDescriptorSchema = object({
10031
10101
  "packagePhase",
10032
10102
  "crossingSelect",
10033
10103
  "polygonDraw",
10034
- "occupancy"
10104
+ "occupancy",
10105
+ "deviceState"
10035
10106
  ]),
10036
10107
  operator: _enum([
10037
10108
  "in",
@@ -17316,7 +17387,20 @@ method(object({
17316
17387
  }), _void(), {
17317
17388
  kind: "mutation",
17318
17389
  auth: "admin"
17319
- }), method(object({ addonId: string() }), array(SavedDeviceRowSchema)), method(object({ addonId: string().optional() }), array(DeviceInfoSchema)), method(object({ deviceId: number() }), DeviceInfoSchema.nullable()), method(object({ parentDeviceId: number() }), array(DeviceInfoSchema)), method(object({ deviceId: number() }), object({
17390
+ }), method(object({ addonId: string() }), array(SavedDeviceRowSchema)), method(object({
17391
+ addonId: string().optional(),
17392
+ /**
17393
+ * `slim` omits `config` (returned `{}`), `metadata` (null) and the
17394
+ * `sourceInfo` derived from config — and skips the per-device settings
17395
+ * read that produces them. Everything identifying a device (id, name,
17396
+ * type, online, features, isCamera, parent/link ids) is unchanged.
17397
+ * Do not use it for dispatch routing, which needs `sourceInfo`.
17398
+ */
17399
+ projection: _enum(["full", "slim"]).optional(),
17400
+ /** Return only camera devices. Filtering server-side instead of
17401
+ * shipping 293 rows to find 12. */
17402
+ isCamera: boolean().optional()
17403
+ }), array(DeviceInfoSchema)), method(object({ deviceId: number() }), DeviceInfoSchema.nullable()), method(object({ parentDeviceId: number() }), array(DeviceInfoSchema)), method(object({ deviceId: number() }), object({
17320
17404
  mode: DeviceLinkModeSchema,
17321
17405
  devices: array(LinkedDeviceSchema)
17322
17406
  })), method(object({ deviceId: number() }), array(StreamSourceEntrySchema$1)), method(object({ deviceId: number() }), array(ConfigEntrySchema)), method(object({ deviceId: number() }), ConfigUISchemaOutput), method(object({
@@ -18515,6 +18599,103 @@ method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSche
18515
18599
  enabled: boolean()
18516
18600
  }), _void(), { kind: "mutation" });
18517
18601
  /**
18602
+ * core-blocks — user-authored TypeScript, stored in the kernel and executed in
18603
+ * its own process.
18604
+ *
18605
+ * Spec: `docs/superpowers/specs/2026-08-04-core-blocks-and-synthetic-devices-design.md`.
18606
+ *
18607
+ * The first use is **owning devices without being a device provider**: a block
18608
+ * declares devices under a system or custom integration and drives their state,
18609
+ * with the same `ctx` an addon gets. Automations come later; nothing here
18610
+ * models a trigger.
18611
+ *
18612
+ * **Stated plainly, because it does not change by being true:** a block has an
18613
+ * addon's powers — devices, storage, the event bus, `ctx.api`. It is a plugin
18614
+ * with no review step. What makes that survivable is not a sandbox, it is
18615
+ * PROCESS ISOLATION: one process per block, supervised by `CrashSupervisor`,
18616
+ * so a block that throws or never returns is marked `failed` and visible
18617
+ * instead of taking the hub with it (D6). Every method here is admin-only, and
18618
+ * must stay so.
18619
+ */
18620
+ /** Where a block runs. The operator chooses — a block driving a device on an
18621
+ * agent is the reason placement is not fixed to the hub. */
18622
+ var CoreBlockPlacementSchema = union([literal("hub"), string().min(1)]);
18623
+ /** What a block's process is doing. Mirrors the addon runner's own lifecycle so
18624
+ * a failing block reads the same way a failing addon does. */
18625
+ var CoreBlockStatusSchema = _enum([
18626
+ "stopped",
18627
+ "starting",
18628
+ "running",
18629
+ "failed"
18630
+ ]);
18631
+ /** Client-authored fields. */
18632
+ var CoreBlockInputSchema = object({
18633
+ name: string().min(1).max(120),
18634
+ /** TypeScript source. Compiled server-side before it is ever stored — a
18635
+ * block that does not compile is a fork failure the operator would meet
18636
+ * minutes later, in a log, instead of in the editor. */
18637
+ code: string().max(2e5),
18638
+ enabled: boolean(),
18639
+ placement: CoreBlockPlacementSchema,
18640
+ /**
18641
+ * Integration the block's devices hang from. Absent = the system integration
18642
+ * blocks share. A block may declare its own instead.
18643
+ */
18644
+ integrationId: string().optional()
18645
+ });
18646
+ /** A stored block. */
18647
+ var CoreBlockSchema = CoreBlockInputSchema.extend({
18648
+ id: string(),
18649
+ createdAt: number(),
18650
+ updatedAt: number(),
18651
+ /** Server-stamped author. */
18652
+ createdBy: string(),
18653
+ status: CoreBlockStatusSchema,
18654
+ /**
18655
+ * Why the block is not running, when it is not. The operator's ONLY window
18656
+ * into a block that failed at load — a block that is silently absent is the
18657
+ * failure mode this whole feature has to avoid.
18658
+ */
18659
+ lastError: string().optional(),
18660
+ /** Ms epoch of the last state change. */
18661
+ lastChangedAt: number()
18662
+ });
18663
+ /** What a compile attempt produced. */
18664
+ var CoreBlockCompileResultSchema = object({
18665
+ ok: boolean(),
18666
+ /** Present when `ok` is false — the first error, in the author's words. */
18667
+ error: string().optional(),
18668
+ line: number().optional(),
18669
+ column: number().optional()
18670
+ });
18671
+ method(object({}), object({ blocks: array(CoreBlockSchema) }), { auth: "admin" }), method(object({ blockId: string() }), object({ block: CoreBlockSchema.nullable() }), { auth: "admin" }), method(object({ block: CoreBlockInputSchema }), object({ block: CoreBlockSchema }), {
18672
+ kind: "mutation",
18673
+ auth: "admin",
18674
+ caller: "required"
18675
+ }), method(object({
18676
+ blockId: string(),
18677
+ block: CoreBlockInputSchema.partial()
18678
+ }), object({ block: CoreBlockSchema }), {
18679
+ kind: "mutation",
18680
+ auth: "admin",
18681
+ caller: "required"
18682
+ }), method(object({ blockId: string() }), object({ success: literal(true) }), {
18683
+ kind: "mutation",
18684
+ auth: "admin"
18685
+ }), method(object({
18686
+ blockId: string(),
18687
+ enabled: boolean()
18688
+ }), object({ block: CoreBlockSchema }), {
18689
+ kind: "mutation",
18690
+ auth: "admin"
18691
+ }), method(object({ code: string() }), CoreBlockCompileResultSchema, {
18692
+ kind: "mutation",
18693
+ auth: "admin"
18694
+ }), method(object({}), object({ libs: array(object({
18695
+ filePath: string(),
18696
+ content: string()
18697
+ })) }), { auth: "admin" });
18698
+ /**
18518
18699
  * Zod schemas for persisted record types.
18519
18700
  *
18520
18701
  * These schemas serve as the single source of truth for types that are
@@ -18761,6 +18942,11 @@ var EventKindDescriptorSchema = object({
18761
18942
  deviceId: number()
18762
18943
  })
18763
18944
  });
18945
+ /** One camera's event vocabulary, as returned by `listEventKindsBatch`. */
18946
+ var EventKindsForDeviceSchema = object({
18947
+ deviceId: number(),
18948
+ kinds: array(EventKindDescriptorSchema).readonly()
18949
+ });
18764
18950
  var SensorEventSchema = object({
18765
18951
  id: string(),
18766
18952
  /** The CAMERA the event is attributed to (a sensor linked to N cameras
@@ -19017,6 +19203,19 @@ var MediaFileSchema = object({
19017
19203
  sizeBytes: number(),
19018
19204
  timestamp: number()
19019
19205
  });
19206
+ /**
19207
+ * One media row WITHOUT its bytes.
19208
+ *
19209
+ * A track's media is 5-8 MB of base64 (measured: 7.67 MB across 23 files for a
19210
+ * 140 s track), and a client that renders tiles from the media data plane needs
19211
+ * to know only WHAT EXISTS — the bytes then arrive per tile, lazily, over HTTP
19212
+ * with an immutable cache, instead of all at once inside a tRPC response that
19213
+ * blocks the whole view.
19214
+ *
19215
+ * `sizeBytes` is carried because it is what lets a client decide between the
19216
+ * stored blob and a `?variant=thumb` rendering without fetching either.
19217
+ */
19218
+ var MediaFileInfoSchema = MediaFileSchema.omit({ base64: true });
19020
19219
  var DEFAULT_EVENT_QUERY_LIMIT = 1e3;
19021
19220
  var MAX_EVENT_QUERY_LIMIT = 5e3;
19022
19221
  var DeviceEventQueryInput = object({
@@ -19166,7 +19365,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19166
19365
  }), array(TrackSchema).readonly()), method(RecentTracksQueryInput, RecentTracksPageSchema), method(object({ deviceId: number() }), _void(), {
19167
19366
  kind: "mutation",
19168
19367
  auth: "admin"
19169
- }), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({ deviceId: number() }), array(EventKindDescriptorSchema).readonly()), method(object({
19368
+ }), method(DeviceEventQueryInput, array(MotionEventSchema).readonly()), method(ObjectEventQueryInput, array(ObjectEventSchema).readonly()), method(DeviceEventQueryInput, array(AudioEventSchema).readonly()), method(object({ deviceId: number() }), array(EventKindDescriptorSchema).readonly()), method(object({ deviceIds: array(number()).min(1).max(200) }), array(EventKindsForDeviceSchema).readonly()), method(object({
19170
19369
  deviceId: number(),
19171
19370
  since: number().optional(),
19172
19371
  until: number().optional(),
@@ -19240,7 +19439,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
19240
19439
  }), array(MediaFileSchema).readonly()), method(object({
19241
19440
  trackId: string(),
19242
19441
  kinds: array(MediaFileKindEnum).optional()
19243
- }), array(MediaFileSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), object({
19442
+ }), array(MediaFileSchema).readonly()), method(object({ trackId: string() }), array(MediaFileInfoSchema).readonly()), method(SearchObjectEventsInput, array(ScoredObjectEventSchema).readonly()), object({
19244
19443
  deviceId: number(),
19245
19444
  timestamp: number(),
19246
19445
  frameWidth: number(),
@@ -24021,6 +24220,54 @@ Object.freeze({
24021
24220
  addonId: null,
24022
24221
  access: "create"
24023
24222
  },
24223
+ "coreBlocks.compile": {
24224
+ capName: "core-blocks",
24225
+ capScope: "system",
24226
+ addonId: null,
24227
+ access: "create"
24228
+ },
24229
+ "coreBlocks.create": {
24230
+ capName: "core-blocks",
24231
+ capScope: "system",
24232
+ addonId: null,
24233
+ access: "create"
24234
+ },
24235
+ "coreBlocks.delete": {
24236
+ capName: "core-blocks",
24237
+ capScope: "system",
24238
+ addonId: null,
24239
+ access: "delete"
24240
+ },
24241
+ "coreBlocks.get": {
24242
+ capName: "core-blocks",
24243
+ capScope: "system",
24244
+ addonId: null,
24245
+ access: "view"
24246
+ },
24247
+ "coreBlocks.getTypeDefs": {
24248
+ capName: "core-blocks",
24249
+ capScope: "system",
24250
+ addonId: null,
24251
+ access: "view"
24252
+ },
24253
+ "coreBlocks.list": {
24254
+ capName: "core-blocks",
24255
+ capScope: "system",
24256
+ addonId: null,
24257
+ access: "view"
24258
+ },
24259
+ "coreBlocks.setEnabled": {
24260
+ capName: "core-blocks",
24261
+ capScope: "system",
24262
+ addonId: null,
24263
+ access: "create"
24264
+ },
24265
+ "coreBlocks.update": {
24266
+ capName: "core-blocks",
24267
+ capScope: "system",
24268
+ addonId: null,
24269
+ access: "create"
24270
+ },
24024
24271
  "cover.close": {
24025
24272
  capName: "cover",
24026
24273
  capScope: "device",
@@ -26187,6 +26434,12 @@ Object.freeze({
26187
26434
  addonId: null,
26188
26435
  access: "view"
26189
26436
  },
26437
+ "pipelineAnalytics.listEventKindsBatch": {
26438
+ capName: "pipeline-analytics",
26439
+ capScope: "device",
26440
+ addonId: null,
26441
+ access: "view"
26442
+ },
26190
26443
  "pipelineAnalytics.listOpsLog": {
26191
26444
  capName: "pipeline-analytics",
26192
26445
  capScope: "device",
@@ -26199,6 +26452,12 @@ Object.freeze({
26199
26452
  addonId: null,
26200
26453
  access: "view"
26201
26454
  },
26455
+ "pipelineAnalytics.listTrackMedia": {
26456
+ capName: "pipeline-analytics",
26457
+ capScope: "device",
26458
+ addonId: null,
26459
+ access: "view"
26460
+ },
26202
26461
  "pipelineAnalytics.listTracks": {
26203
26462
  capName: "pipeline-analytics",
26204
26463
  capScope: "device",