@camstack/addon-pipeline 1.1.21 → 1.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audio-analyzer/index.js +1 -1
- package/dist/audio-analyzer/index.mjs +1 -1
- package/dist/audio-codec-ffmpeg/index.js +1 -1
- package/dist/audio-codec-ffmpeg/index.mjs +1 -1
- package/dist/decoder-ffmpeg/index.js +1 -1
- package/dist/decoder-ffmpeg/index.mjs +1 -1
- package/dist/detection-pipeline/index.js +1 -1
- package/dist/detection-pipeline/index.mjs +1 -1
- package/dist/{dist-BiP1gPeY.js → dist-CE3a05qT.js} +228 -16
- package/dist/{dist-tzhTTRq4.mjs → dist-pd_-3C0T.mjs} +228 -16
- package/dist/motion-wasm/index.js +1 -1
- package/dist/motion-wasm/index.mjs +1 -1
- package/dist/pipeline-runner/index.js +412 -247
- package/dist/pipeline-runner/index.mjs +412 -247
- package/dist/recorder/index.js +260 -234
- package/dist/recorder/index.mjs +260 -234
- package/dist/stream-broker/_stub.js +378 -324
- package/dist/stream-broker/{_virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-D08qJTw_.mjs → _virtual_mf-localSharedImportMap___mfe_internal__addon_stream_broker_widgets-BVFAEkIB.mjs} +2 -2
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BFeBlYRQ.mjs +26 -0
- package/dist/stream-broker/{_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-C0QtG7oR.mjs → _virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_ui_mf_2_library__loadShare__.js-BC1Jt6G8.mjs} +1 -1
- package/dist/stream-broker/{hostInit-CGnMNtPl.mjs → hostInit-DHej3Ep9.mjs} +2 -2
- package/dist/stream-broker/index.js +13788 -12378
- package/dist/stream-broker/index.mjs +13907 -12497
- package/dist/stream-broker/remoteEntry.js +1 -1
- package/embed-dist/assets/{MaskShapeCanvas-DI4BY7W2-CW4Qu4V6.js → MaskShapeCanvas-DI4BY7W2-BqXU75it.js} +1 -1
- package/embed-dist/assets/{MotionZonesSettings-NcxxQN8r-CHJ39tfi.js → MotionZonesSettings-NcxxQN8r-Ct2fpgCd.js} +1 -1
- package/embed-dist/assets/{PrivacyMaskSettings-APgPLF7p-dInJ7kcz.js → PrivacyMaskSettings-APgPLF7p-a9eFVPPl.js} +1 -1
- package/embed-dist/assets/index-DhdVxWXL.js +80 -0
- package/embed-dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/stream-broker/_virtual_mf___mfe_internal__addon_stream_broker_widgets__loadShare___mf_0_camstack_mf_1_types__loadShare__.js-BSWrW78G.mjs +0 -26
- package/embed-dist/assets/index-CKpVWKSG.js +0 -80
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_model_download_service_C_IHWnXx = require("../model-download-service-C-IHWnXx-BnQ_awK4.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
6
|
+
const require_dist = require("../dist-CE3a05qT.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
node_fs = require_model_download_service_C_IHWnXx.__toESM(node_fs);
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __require } from "../chunk-BdkLduGY.mjs";
|
|
2
|
-
import { B as BaseAddon, E as mapAudioLabelToMacro, J as hydrateSchema, g as audioAnalyzerCapability, h as audioAnalysisCapability, l as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, z as errMsg } from "../dist-
|
|
2
|
+
import { B as BaseAddon, E as mapAudioLabelToMacro, J as hydrateSchema, g as audioAnalyzerCapability, h as audioAnalysisCapability, l as HF_BASE_URL, n as AUDIO_BACKEND_CHOICES, o as DEFAULT_AUDIO_ANALYZER_CONFIG, z as errMsg } from "../dist-pd_-3C0T.mjs";
|
|
3
3
|
import { r as downloadFile } from "../model-download-service-C-IHWnXx-3Mmeob3l.mjs";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import * as path$1 from "node:path";
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-CE3a05qT.js");
|
|
6
6
|
let node_crypto = require("node:crypto");
|
|
7
7
|
let node_child_process = require("node:child_process");
|
|
8
8
|
//#region src/audio-codec-ffmpeg/ffmpeg-audio-process.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BaseAddon, _ as audioCodecCapability, z as errMsg } from "../dist-
|
|
1
|
+
import { B as BaseAddon, _ as audioCodecCapability, z as errMsg } from "../dist-pd_-3C0T.mjs";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { spawn } from "node:child_process";
|
|
4
4
|
//#region src/audio-codec-ffmpeg/ffmpeg-audio-process.ts
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-CE3a05qT.js");
|
|
6
6
|
const require_frame_dropper = require("../frame-dropper-7RTo_YyG.js");
|
|
7
7
|
let _camstack_shm_ring = require("@camstack/shm-ring");
|
|
8
8
|
let node_crypto = require("node:crypto");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BaseAddon, b as decoderCapability, f as RingBuffer, s as DEFAULT_DECODER_HWACCEL_CONFIG, u as HWACCEL_OPTIONS, z as errMsg } from "../dist-
|
|
1
|
+
import { B as BaseAddon, b as decoderCapability, f as RingBuffer, s as DEFAULT_DECODER_HWACCEL_CONFIG, u as HWACCEL_OPTIONS, z as errMsg } from "../dist-pd_-3C0T.mjs";
|
|
2
2
|
import { r as logBannerArgs, t as FrameDropper } from "../frame-dropper-CwkBTPGV.mjs";
|
|
3
3
|
import { FrameRingReaderCache, FrameRingWriter, MIN_RING_SLOTS, computeSegmentSize, computeSlotByteLength, createSegment, deriveSlotCount } from "@camstack/shm-ring";
|
|
4
4
|
import { randomUUID } from "node:crypto";
|
|
@@ -3,7 +3,7 @@ Object.defineProperties(exports, {
|
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
5
|
const require_model_download_service_C_IHWnXx = require("../model-download-service-C-IHWnXx-BnQ_awK4.js");
|
|
6
|
-
const require_dist = require("../dist-
|
|
6
|
+
const require_dist = require("../dist-CE3a05qT.js");
|
|
7
7
|
let node_fs = require("node:fs");
|
|
8
8
|
node_fs = require_model_download_service_C_IHWnXx.__toESM(node_fs);
|
|
9
9
|
let node_path = require("node:path");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as __require } from "../chunk-BdkLduGY.mjs";
|
|
2
|
-
import { A as nodePin, B as BaseAddon, C as detectionPipelineCapability, J as hydrateSchema, L as supportedRuntimes$1, P as runtimeDevices$1, T as hfModelUrl, W as EventCategory, Z as parseJsonUnknown, a as COCO_TO_MACRO, et as sleep, i as COCO_80_LABELS, j as pipelineExecutorCapability, p as YAMNET_TO_MACRO, q as createEvent, r as AUDIO_MACRO_LABELS, t as APPLE_SA_TO_MACRO, w as evaluateZoneRules, x as defaultDeviceFor$1, z as errMsg } from "../dist-
|
|
2
|
+
import { A as nodePin, B as BaseAddon, C as detectionPipelineCapability, J as hydrateSchema, L as supportedRuntimes$1, P as runtimeDevices$1, T as hfModelUrl, W as EventCategory, Z as parseJsonUnknown, a as COCO_TO_MACRO, et as sleep, i as COCO_80_LABELS, j as pipelineExecutorCapability, p as YAMNET_TO_MACRO, q as createEvent, r as AUDIO_MACRO_LABELS, t as APPLE_SA_TO_MACRO, w as evaluateZoneRules, x as defaultDeviceFor$1, z as errMsg } from "../dist-pd_-3C0T.mjs";
|
|
3
3
|
import { a as isModelDownloaded, i as ensureModel, n as deleteModelFromDisk } from "../model-download-service-C-IHWnXx-3Mmeob3l.mjs";
|
|
4
4
|
import * as fs from "node:fs";
|
|
5
5
|
import * as path$1 from "node:path";
|
|
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4627
4627
|
return inst;
|
|
4628
4628
|
}
|
|
4629
4629
|
//#endregion
|
|
4630
|
-
//#region ../types/dist/sleep-
|
|
4630
|
+
//#region ../types/dist/sleep-MHm--th-.mjs
|
|
4631
4631
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4632
4632
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4633
4633
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5895,6 +5895,7 @@ var CamStreamKindSchema = _enum([
|
|
|
5895
5895
|
"pull-rtsp",
|
|
5896
5896
|
"pull-rtmp",
|
|
5897
5897
|
"pull-http",
|
|
5898
|
+
"pull-flv",
|
|
5898
5899
|
"pull-rfc4571",
|
|
5899
5900
|
"push-annexb",
|
|
5900
5901
|
"derived"
|
|
@@ -14611,7 +14612,7 @@ var AddBrokerInputSchema = object({
|
|
|
14611
14612
|
});
|
|
14612
14613
|
var AddBrokerResultSchema = object({ id: string() });
|
|
14613
14614
|
var IdInputSchema = object({ id: string() });
|
|
14614
|
-
var TestResultSchema = discriminatedUnion("ok", [object({
|
|
14615
|
+
var TestResultSchema$1 = discriminatedUnion("ok", [object({
|
|
14615
14616
|
ok: literal(true),
|
|
14616
14617
|
latencyMs: number()
|
|
14617
14618
|
}), object({
|
|
@@ -14634,7 +14635,7 @@ var StatusSchema = object({
|
|
|
14634
14635
|
brokerCount: number(),
|
|
14635
14636
|
embeddedRunning: boolean()
|
|
14636
14637
|
});
|
|
14637
|
-
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema), method(AddBrokerInputSchema, AddBrokerResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(IdInputSchema, TestResultSchema, { kind: "mutation" }), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(_void(), StatusSchema);
|
|
14638
|
+
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema), method(AddBrokerInputSchema, AddBrokerResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(IdInputSchema, TestResultSchema$1, { kind: "mutation" }), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(_void(), StatusSchema);
|
|
14638
14639
|
var NetworkEndpointSchema = object({
|
|
14639
14640
|
url: string(),
|
|
14640
14641
|
hostname: string(),
|
|
@@ -14668,23 +14669,198 @@ var NetworkEndpointEntrySchema = NetworkEndpointSchema.extend({
|
|
|
14668
14669
|
sourcePort: number().optional()
|
|
14669
14670
|
});
|
|
14670
14671
|
method(_void(), NetworkEndpointSchema, { kind: "mutation" }), method(_void(), _void(), { kind: "mutation" }), method(_void(), NetworkEndpointSchema.nullable()), method(_void(), NetworkAccessStatusSchema), method(_void(), array(NetworkEndpointEntrySchema).readonly());
|
|
14671
|
-
|
|
14672
|
-
|
|
14672
|
+
/**
|
|
14673
|
+
* notification-output — canonical, capability-gated notification delivery.
|
|
14674
|
+
*
|
|
14675
|
+
* Apprise-derived model (see
|
|
14676
|
+
* `docs/superpowers/specs/2026-07-03-notification-output-notifier-matrix.md`):
|
|
14677
|
+
* callers emit ONE canonical `Notification`; each provider declares a
|
|
14678
|
+
* per-kind capability descriptor (`TargetKind`), and the pure degrade
|
|
14679
|
+
* engine (`@camstack/types` `prepareNotification`) transcodes / degrades the
|
|
14680
|
+
* message to what the kind supports — callers never special-case a service.
|
|
14681
|
+
*
|
|
14682
|
+
* DESIGN DECISIONS (locked):
|
|
14683
|
+
* - Target CRUD lives on THIS cap (`upsertTarget` / `deleteTarget` /
|
|
14684
|
+
* `setTargetEnabled`), each provider persisting via the `settings-store`
|
|
14685
|
+
* cap. Rationale: the admin UI needs one uniform surface across the
|
|
14686
|
+
* notifiers addon AND the HA addon; the addon-`globalSettingsSchema`-array
|
|
14687
|
+
* alternative would fork the UI per addon and cannot host the
|
|
14688
|
+
* discovery→adopt flow.
|
|
14689
|
+
* - `listTargetKinds` / `listTargets` / `discoverTargets` return arrays →
|
|
14690
|
+
* the generated cap-mount auto-`concatCollection`-fans them across every
|
|
14691
|
+
* registered provider (notifiers addon + HA addon) so one catalog is
|
|
14692
|
+
* routable. `send` / `testTarget` / CRUD route to ONE provider by the
|
|
14693
|
+
* `addonId` the generated collection router extracts from the call input.
|
|
14694
|
+
* - `Attachment.bytes` is `Uint8Array`. Transport-safe: superjson (the tRPC
|
|
14695
|
+
* transformer) + UDS MsgPack both round-trip typed arrays — already used by
|
|
14696
|
+
* `storage` / `storage-provider` / `recording` caps over the same path. No
|
|
14697
|
+
* base64 fallback needed.
|
|
14698
|
+
*
|
|
14699
|
+
* TODO (deferred, closed-set change — separate decision): add
|
|
14700
|
+
* `providerKind: 'notify'` so notification providers surface on the unified
|
|
14701
|
+
* admin "Integrations" page.
|
|
14702
|
+
*/
|
|
14703
|
+
/**
|
|
14704
|
+
* Zentik-derived typed-media enum — the superset across every kind. Each
|
|
14705
|
+
* adapter picks what it supports and the degrade engine filters the rest.
|
|
14706
|
+
*/
|
|
14707
|
+
var AttachmentMediaTypeSchema = _enum([
|
|
14708
|
+
"image",
|
|
14709
|
+
"video",
|
|
14710
|
+
"gif",
|
|
14711
|
+
"audio",
|
|
14712
|
+
"icon"
|
|
14713
|
+
]);
|
|
14714
|
+
/**
|
|
14715
|
+
* A single attachment. Exactly one of `url` (remote source, most adapters
|
|
14716
|
+
* prefer this) or `bytes` (inline source; required for Pushover-style
|
|
14717
|
+
* bytes-only kinds) MUST be present — the degrade engine expresses a
|
|
14718
|
+
* url→bytes fetch as a `needsFetch` directive the adapter executes.
|
|
14719
|
+
*/
|
|
14720
|
+
var AttachmentSchema = object({
|
|
14721
|
+
mediaType: AttachmentMediaTypeSchema,
|
|
14722
|
+
url: string().optional(),
|
|
14723
|
+
bytes: _instanceof(Uint8Array).optional(),
|
|
14724
|
+
mime: string().optional(),
|
|
14725
|
+
name: string().optional()
|
|
14726
|
+
}).refine((a) => a.url !== void 0 || a.bytes !== void 0, { message: "Attachment requires either `url` or `bytes`" });
|
|
14727
|
+
var NotificationFormatSchema = _enum([
|
|
14728
|
+
"text",
|
|
14729
|
+
"markdown",
|
|
14730
|
+
"html"
|
|
14731
|
+
]);
|
|
14732
|
+
/** A single tap-through action button. */
|
|
14733
|
+
var NotificationActionSchema = object({
|
|
14734
|
+
id: string(),
|
|
14735
|
+
label: string(),
|
|
14736
|
+
url: string().optional()
|
|
14737
|
+
});
|
|
14738
|
+
/**
|
|
14739
|
+
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
14740
|
+
* `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
|
|
14741
|
+
* NOT a fixed severity enum — each kind declares its own `caps.levels` and
|
|
14742
|
+
* the adapter maps this ordinal onto its native level. `level?` is an
|
|
14743
|
+
* optional kind-native level id (`emergency`, `silent`, …) that overrides
|
|
14744
|
+
* `priority` for that one target.
|
|
14745
|
+
*/
|
|
14746
|
+
var NotificationSchema = object({
|
|
14673
14747
|
body: string(),
|
|
14674
|
-
|
|
14748
|
+
title: string().optional(),
|
|
14749
|
+
format: NotificationFormatSchema.default("text"),
|
|
14750
|
+
priority: number().int().min(1).max(5).default(3),
|
|
14751
|
+
level: string().optional(),
|
|
14752
|
+
attachments: array(AttachmentSchema).optional(),
|
|
14753
|
+
clickUrl: string().optional(),
|
|
14754
|
+
actions: array(NotificationActionSchema).optional(),
|
|
14755
|
+
sound: string().optional(),
|
|
14756
|
+
ttl: number().optional(),
|
|
14757
|
+
tag: string().optional(),
|
|
14675
14758
|
deviceId: number().optional(),
|
|
14676
14759
|
eventId: string().optional(),
|
|
14677
|
-
priority: _enum([
|
|
14678
|
-
"low",
|
|
14679
|
-
"normal",
|
|
14680
|
-
"high",
|
|
14681
|
-
"critical"
|
|
14682
|
-
]).default("normal"),
|
|
14683
14760
|
metadata: record(string(), unknown()).optional()
|
|
14684
|
-
})
|
|
14761
|
+
});
|
|
14762
|
+
/** One declared native severity/priority level for a kind. */
|
|
14763
|
+
var TargetKindLevelSchema = object({
|
|
14764
|
+
id: string(),
|
|
14765
|
+
label: string(),
|
|
14766
|
+
/** Which canonical priority (1..5) this level maps to. `null` = qualitative-only. */
|
|
14767
|
+
ordinal: number().int().min(1).max(5).nullable(),
|
|
14768
|
+
flags: object({
|
|
14769
|
+
critical: boolean().optional(),
|
|
14770
|
+
silent: boolean().optional(),
|
|
14771
|
+
noPush: boolean().optional()
|
|
14772
|
+
}).optional(),
|
|
14773
|
+
/** e.g. Pushover `emergency` requires `retry` / `expire`. */
|
|
14774
|
+
requires: array(string()).optional(),
|
|
14775
|
+
description: string().optional()
|
|
14776
|
+
});
|
|
14777
|
+
/** The full capability block consulted before dispatch. */
|
|
14778
|
+
var TargetKindCapsSchema = object({
|
|
14779
|
+
attachments: object({
|
|
14780
|
+
mediaTypes: array(AttachmentMediaTypeSchema),
|
|
14781
|
+
mode: _enum([
|
|
14782
|
+
"url",
|
|
14783
|
+
"bytes",
|
|
14784
|
+
"both"
|
|
14785
|
+
]),
|
|
14786
|
+
max: number().int().nonnegative(),
|
|
14787
|
+
maxBytes: number().int().positive().optional()
|
|
14788
|
+
}),
|
|
14789
|
+
/** Max action buttons (0 = none). */
|
|
14790
|
+
actions: number().int().nonnegative(),
|
|
14791
|
+
levels: array(TargetKindLevelSchema),
|
|
14792
|
+
format: array(NotificationFormatSchema),
|
|
14793
|
+
clickUrl: boolean(),
|
|
14794
|
+
sound: boolean(),
|
|
14795
|
+
ttl: boolean(),
|
|
14796
|
+
bodyMaxLen: number().int().positive()
|
|
14797
|
+
});
|
|
14798
|
+
/**
|
|
14799
|
+
* `configSchema` is a `ConfigUISchema` tree passed through to the admin
|
|
14800
|
+
* FormBuilder. Stored as `z.unknown()` at the cap seam (mirrors
|
|
14801
|
+
* `device-provider.getChildCreationSchema` `CreationSchemaOutputSchema`) —
|
|
14802
|
+
* the union is large and not meant for runtime validation here; the exported
|
|
14803
|
+
* `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
|
|
14804
|
+
*/
|
|
14805
|
+
var ConfigSchemaPassthrough = unknown();
|
|
14806
|
+
var TargetKindSchema = object({
|
|
14807
|
+
kind: string(),
|
|
14808
|
+
label: string(),
|
|
14809
|
+
icon: string(),
|
|
14810
|
+
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
14811
|
+
addonId: string(),
|
|
14812
|
+
configSchema: ConfigSchemaPassthrough,
|
|
14813
|
+
supportsDiscovery: boolean(),
|
|
14814
|
+
caps: TargetKindCapsSchema
|
|
14815
|
+
});
|
|
14816
|
+
/**
|
|
14817
|
+
* A persisted target. `config` holds secrets; providers REDACT secret fields
|
|
14818
|
+
* (return a presence marker only) when serving `listTargets` — never
|
|
14819
|
+
* round-trip a stored secret to the UI.
|
|
14820
|
+
*/
|
|
14821
|
+
var TargetSchema = object({
|
|
14822
|
+
id: string(),
|
|
14823
|
+
name: string(),
|
|
14824
|
+
kind: string(),
|
|
14825
|
+
addonId: string(),
|
|
14826
|
+
enabled: boolean(),
|
|
14827
|
+
config: record(string(), unknown())
|
|
14828
|
+
});
|
|
14829
|
+
/** A discovery-surfaced candidate (config is partial + non-secret). */
|
|
14830
|
+
var DiscoveredTargetSchema = object({
|
|
14831
|
+
kind: string(),
|
|
14832
|
+
suggestedName: string(),
|
|
14833
|
+
config: record(string(), unknown())
|
|
14834
|
+
});
|
|
14835
|
+
/** The degrade engine's report — what was resolved / dropped / degraded. */
|
|
14836
|
+
var RenderedAsSchema = object({
|
|
14837
|
+
level: string(),
|
|
14838
|
+
format: NotificationFormatSchema,
|
|
14839
|
+
attachmentsSent: number().int().nonnegative(),
|
|
14840
|
+
actionsSent: number().int().nonnegative(),
|
|
14841
|
+
truncated: boolean(),
|
|
14842
|
+
dropped: array(string())
|
|
14843
|
+
});
|
|
14844
|
+
var SendResultSchema = object({
|
|
14685
14845
|
success: boolean(),
|
|
14686
|
-
error: string().optional()
|
|
14687
|
-
|
|
14846
|
+
error: string().optional(),
|
|
14847
|
+
renderedAs: RenderedAsSchema.optional()
|
|
14848
|
+
});
|
|
14849
|
+
/** Same shape as SendResult — kept as a distinct name for the test panel. */
|
|
14850
|
+
var TestResultSchema = SendResultSchema;
|
|
14851
|
+
method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema)), method(object({
|
|
14852
|
+
kind: string(),
|
|
14853
|
+
config: record(string(), unknown()).optional()
|
|
14854
|
+
}), array(DiscoveredTargetSchema)), method(object({
|
|
14855
|
+
targetId: string(),
|
|
14856
|
+
notification: NotificationSchema
|
|
14857
|
+
}), SendResultSchema, { kind: "mutation" }), method(object({
|
|
14858
|
+
targetId: string(),
|
|
14859
|
+
sample: NotificationSchema.optional()
|
|
14860
|
+
}), TestResultSchema, { kind: "mutation" }), method(object({ target: TargetSchema }), TargetSchema, { kind: "mutation" }), method(object({ targetId: string() }), _void(), { kind: "mutation" }), method(object({
|
|
14861
|
+
targetId: string(),
|
|
14862
|
+
enabled: boolean()
|
|
14863
|
+
}), _void(), { kind: "mutation" });
|
|
14688
14864
|
/**
|
|
14689
14865
|
* Zod schemas for persisted record types.
|
|
14690
14866
|
*
|
|
@@ -20807,13 +20983,49 @@ Object.freeze({
|
|
|
20807
20983
|
addonId: null,
|
|
20808
20984
|
access: "create"
|
|
20809
20985
|
},
|
|
20986
|
+
"notificationOutput.deleteTarget": {
|
|
20987
|
+
capName: "notification-output",
|
|
20988
|
+
capScope: "system",
|
|
20989
|
+
addonId: null,
|
|
20990
|
+
access: "delete"
|
|
20991
|
+
},
|
|
20992
|
+
"notificationOutput.discoverTargets": {
|
|
20993
|
+
capName: "notification-output",
|
|
20994
|
+
capScope: "system",
|
|
20995
|
+
addonId: null,
|
|
20996
|
+
access: "view"
|
|
20997
|
+
},
|
|
20998
|
+
"notificationOutput.listTargetKinds": {
|
|
20999
|
+
capName: "notification-output",
|
|
21000
|
+
capScope: "system",
|
|
21001
|
+
addonId: null,
|
|
21002
|
+
access: "view"
|
|
21003
|
+
},
|
|
21004
|
+
"notificationOutput.listTargets": {
|
|
21005
|
+
capName: "notification-output",
|
|
21006
|
+
capScope: "system",
|
|
21007
|
+
addonId: null,
|
|
21008
|
+
access: "view"
|
|
21009
|
+
},
|
|
20810
21010
|
"notificationOutput.send": {
|
|
20811
21011
|
capName: "notification-output",
|
|
20812
21012
|
capScope: "system",
|
|
20813
21013
|
addonId: null,
|
|
20814
21014
|
access: "create"
|
|
20815
21015
|
},
|
|
20816
|
-
"notificationOutput.
|
|
21016
|
+
"notificationOutput.setTargetEnabled": {
|
|
21017
|
+
capName: "notification-output",
|
|
21018
|
+
capScope: "system",
|
|
21019
|
+
addonId: null,
|
|
21020
|
+
access: "create"
|
|
21021
|
+
},
|
|
21022
|
+
"notificationOutput.testTarget": {
|
|
21023
|
+
capName: "notification-output",
|
|
21024
|
+
capScope: "system",
|
|
21025
|
+
addonId: null,
|
|
21026
|
+
access: "create"
|
|
21027
|
+
},
|
|
21028
|
+
"notificationOutput.upsertTarget": {
|
|
20817
21029
|
capName: "notification-output",
|
|
20818
21030
|
capScope: "system",
|
|
20819
21031
|
addonId: null,
|
|
@@ -4627,7 +4627,7 @@ function _instanceof(cls, params = {}) {
|
|
|
4627
4627
|
return inst;
|
|
4628
4628
|
}
|
|
4629
4629
|
//#endregion
|
|
4630
|
-
//#region ../types/dist/sleep-
|
|
4630
|
+
//#region ../types/dist/sleep-MHm--th-.mjs
|
|
4631
4631
|
var EventCategory = /* @__PURE__ */ function(EventCategory) {
|
|
4632
4632
|
EventCategory["SystemBoot"] = "system.boot";
|
|
4633
4633
|
EventCategory["SystemAddonsReady"] = "system.addons-ready";
|
|
@@ -5895,6 +5895,7 @@ var CamStreamKindSchema = _enum([
|
|
|
5895
5895
|
"pull-rtsp",
|
|
5896
5896
|
"pull-rtmp",
|
|
5897
5897
|
"pull-http",
|
|
5898
|
+
"pull-flv",
|
|
5898
5899
|
"pull-rfc4571",
|
|
5899
5900
|
"push-annexb",
|
|
5900
5901
|
"derived"
|
|
@@ -14611,7 +14612,7 @@ var AddBrokerInputSchema = object({
|
|
|
14611
14612
|
});
|
|
14612
14613
|
var AddBrokerResultSchema = object({ id: string() });
|
|
14613
14614
|
var IdInputSchema = object({ id: string() });
|
|
14614
|
-
var TestResultSchema = discriminatedUnion("ok", [object({
|
|
14615
|
+
var TestResultSchema$1 = discriminatedUnion("ok", [object({
|
|
14615
14616
|
ok: literal(true),
|
|
14616
14617
|
latencyMs: number()
|
|
14617
14618
|
}), object({
|
|
@@ -14634,7 +14635,7 @@ var StatusSchema = object({
|
|
|
14634
14635
|
brokerCount: number(),
|
|
14635
14636
|
embeddedRunning: boolean()
|
|
14636
14637
|
});
|
|
14637
|
-
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema), method(AddBrokerInputSchema, AddBrokerResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(IdInputSchema, TestResultSchema, { kind: "mutation" }), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(_void(), StatusSchema);
|
|
14638
|
+
method(_void(), array(BrokerInfoSchema)), method(IdInputSchema, BrokerConnectionDetailsSchema), method(AddBrokerInputSchema, AddBrokerResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(IdInputSchema, TestResultSchema$1, { kind: "mutation" }), method(StartEmbeddedInputSchema, StartEmbeddedResultSchema, { kind: "mutation" }), method(IdInputSchema, _void(), { kind: "mutation" }), method(_void(), StatusSchema);
|
|
14638
14639
|
var NetworkEndpointSchema = object({
|
|
14639
14640
|
url: string(),
|
|
14640
14641
|
hostname: string(),
|
|
@@ -14668,23 +14669,198 @@ var NetworkEndpointEntrySchema = NetworkEndpointSchema.extend({
|
|
|
14668
14669
|
sourcePort: number().optional()
|
|
14669
14670
|
});
|
|
14670
14671
|
method(_void(), NetworkEndpointSchema, { kind: "mutation" }), method(_void(), _void(), { kind: "mutation" }), method(_void(), NetworkEndpointSchema.nullable()), method(_void(), NetworkAccessStatusSchema), method(_void(), array(NetworkEndpointEntrySchema).readonly());
|
|
14671
|
-
|
|
14672
|
-
|
|
14672
|
+
/**
|
|
14673
|
+
* notification-output — canonical, capability-gated notification delivery.
|
|
14674
|
+
*
|
|
14675
|
+
* Apprise-derived model (see
|
|
14676
|
+
* `docs/superpowers/specs/2026-07-03-notification-output-notifier-matrix.md`):
|
|
14677
|
+
* callers emit ONE canonical `Notification`; each provider declares a
|
|
14678
|
+
* per-kind capability descriptor (`TargetKind`), and the pure degrade
|
|
14679
|
+
* engine (`@camstack/types` `prepareNotification`) transcodes / degrades the
|
|
14680
|
+
* message to what the kind supports — callers never special-case a service.
|
|
14681
|
+
*
|
|
14682
|
+
* DESIGN DECISIONS (locked):
|
|
14683
|
+
* - Target CRUD lives on THIS cap (`upsertTarget` / `deleteTarget` /
|
|
14684
|
+
* `setTargetEnabled`), each provider persisting via the `settings-store`
|
|
14685
|
+
* cap. Rationale: the admin UI needs one uniform surface across the
|
|
14686
|
+
* notifiers addon AND the HA addon; the addon-`globalSettingsSchema`-array
|
|
14687
|
+
* alternative would fork the UI per addon and cannot host the
|
|
14688
|
+
* discovery→adopt flow.
|
|
14689
|
+
* - `listTargetKinds` / `listTargets` / `discoverTargets` return arrays →
|
|
14690
|
+
* the generated cap-mount auto-`concatCollection`-fans them across every
|
|
14691
|
+
* registered provider (notifiers addon + HA addon) so one catalog is
|
|
14692
|
+
* routable. `send` / `testTarget` / CRUD route to ONE provider by the
|
|
14693
|
+
* `addonId` the generated collection router extracts from the call input.
|
|
14694
|
+
* - `Attachment.bytes` is `Uint8Array`. Transport-safe: superjson (the tRPC
|
|
14695
|
+
* transformer) + UDS MsgPack both round-trip typed arrays — already used by
|
|
14696
|
+
* `storage` / `storage-provider` / `recording` caps over the same path. No
|
|
14697
|
+
* base64 fallback needed.
|
|
14698
|
+
*
|
|
14699
|
+
* TODO (deferred, closed-set change — separate decision): add
|
|
14700
|
+
* `providerKind: 'notify'` so notification providers surface on the unified
|
|
14701
|
+
* admin "Integrations" page.
|
|
14702
|
+
*/
|
|
14703
|
+
/**
|
|
14704
|
+
* Zentik-derived typed-media enum — the superset across every kind. Each
|
|
14705
|
+
* adapter picks what it supports and the degrade engine filters the rest.
|
|
14706
|
+
*/
|
|
14707
|
+
var AttachmentMediaTypeSchema = _enum([
|
|
14708
|
+
"image",
|
|
14709
|
+
"video",
|
|
14710
|
+
"gif",
|
|
14711
|
+
"audio",
|
|
14712
|
+
"icon"
|
|
14713
|
+
]);
|
|
14714
|
+
/**
|
|
14715
|
+
* A single attachment. Exactly one of `url` (remote source, most adapters
|
|
14716
|
+
* prefer this) or `bytes` (inline source; required for Pushover-style
|
|
14717
|
+
* bytes-only kinds) MUST be present — the degrade engine expresses a
|
|
14718
|
+
* url→bytes fetch as a `needsFetch` directive the adapter executes.
|
|
14719
|
+
*/
|
|
14720
|
+
var AttachmentSchema = object({
|
|
14721
|
+
mediaType: AttachmentMediaTypeSchema,
|
|
14722
|
+
url: string().optional(),
|
|
14723
|
+
bytes: _instanceof(Uint8Array).optional(),
|
|
14724
|
+
mime: string().optional(),
|
|
14725
|
+
name: string().optional()
|
|
14726
|
+
}).refine((a) => a.url !== void 0 || a.bytes !== void 0, { message: "Attachment requires either `url` or `bytes`" });
|
|
14727
|
+
var NotificationFormatSchema = _enum([
|
|
14728
|
+
"text",
|
|
14729
|
+
"markdown",
|
|
14730
|
+
"html"
|
|
14731
|
+
]);
|
|
14732
|
+
/** A single tap-through action button. */
|
|
14733
|
+
var NotificationActionSchema = object({
|
|
14734
|
+
id: string(),
|
|
14735
|
+
label: string(),
|
|
14736
|
+
url: string().optional()
|
|
14737
|
+
});
|
|
14738
|
+
/**
|
|
14739
|
+
* The canonical notification. `body` is the only hard field (Apprise model).
|
|
14740
|
+
* `priority` is a 5-level ORDINAL (1=lowest … 3=normal(default) … 5=urgent),
|
|
14741
|
+
* NOT a fixed severity enum — each kind declares its own `caps.levels` and
|
|
14742
|
+
* the adapter maps this ordinal onto its native level. `level?` is an
|
|
14743
|
+
* optional kind-native level id (`emergency`, `silent`, …) that overrides
|
|
14744
|
+
* `priority` for that one target.
|
|
14745
|
+
*/
|
|
14746
|
+
var NotificationSchema = object({
|
|
14673
14747
|
body: string(),
|
|
14674
|
-
|
|
14748
|
+
title: string().optional(),
|
|
14749
|
+
format: NotificationFormatSchema.default("text"),
|
|
14750
|
+
priority: number().int().min(1).max(5).default(3),
|
|
14751
|
+
level: string().optional(),
|
|
14752
|
+
attachments: array(AttachmentSchema).optional(),
|
|
14753
|
+
clickUrl: string().optional(),
|
|
14754
|
+
actions: array(NotificationActionSchema).optional(),
|
|
14755
|
+
sound: string().optional(),
|
|
14756
|
+
ttl: number().optional(),
|
|
14757
|
+
tag: string().optional(),
|
|
14675
14758
|
deviceId: number().optional(),
|
|
14676
14759
|
eventId: string().optional(),
|
|
14677
|
-
priority: _enum([
|
|
14678
|
-
"low",
|
|
14679
|
-
"normal",
|
|
14680
|
-
"high",
|
|
14681
|
-
"critical"
|
|
14682
|
-
]).default("normal"),
|
|
14683
14760
|
metadata: record(string(), unknown()).optional()
|
|
14684
|
-
})
|
|
14761
|
+
});
|
|
14762
|
+
/** One declared native severity/priority level for a kind. */
|
|
14763
|
+
var TargetKindLevelSchema = object({
|
|
14764
|
+
id: string(),
|
|
14765
|
+
label: string(),
|
|
14766
|
+
/** Which canonical priority (1..5) this level maps to. `null` = qualitative-only. */
|
|
14767
|
+
ordinal: number().int().min(1).max(5).nullable(),
|
|
14768
|
+
flags: object({
|
|
14769
|
+
critical: boolean().optional(),
|
|
14770
|
+
silent: boolean().optional(),
|
|
14771
|
+
noPush: boolean().optional()
|
|
14772
|
+
}).optional(),
|
|
14773
|
+
/** e.g. Pushover `emergency` requires `retry` / `expire`. */
|
|
14774
|
+
requires: array(string()).optional(),
|
|
14775
|
+
description: string().optional()
|
|
14776
|
+
});
|
|
14777
|
+
/** The full capability block consulted before dispatch. */
|
|
14778
|
+
var TargetKindCapsSchema = object({
|
|
14779
|
+
attachments: object({
|
|
14780
|
+
mediaTypes: array(AttachmentMediaTypeSchema),
|
|
14781
|
+
mode: _enum([
|
|
14782
|
+
"url",
|
|
14783
|
+
"bytes",
|
|
14784
|
+
"both"
|
|
14785
|
+
]),
|
|
14786
|
+
max: number().int().nonnegative(),
|
|
14787
|
+
maxBytes: number().int().positive().optional()
|
|
14788
|
+
}),
|
|
14789
|
+
/** Max action buttons (0 = none). */
|
|
14790
|
+
actions: number().int().nonnegative(),
|
|
14791
|
+
levels: array(TargetKindLevelSchema),
|
|
14792
|
+
format: array(NotificationFormatSchema),
|
|
14793
|
+
clickUrl: boolean(),
|
|
14794
|
+
sound: boolean(),
|
|
14795
|
+
ttl: boolean(),
|
|
14796
|
+
bodyMaxLen: number().int().positive()
|
|
14797
|
+
});
|
|
14798
|
+
/**
|
|
14799
|
+
* `configSchema` is a `ConfigUISchema` tree passed through to the admin
|
|
14800
|
+
* FormBuilder. Stored as `z.unknown()` at the cap seam (mirrors
|
|
14801
|
+
* `device-provider.getChildCreationSchema` `CreationSchemaOutputSchema`) —
|
|
14802
|
+
* the union is large and not meant for runtime validation here; the exported
|
|
14803
|
+
* `TargetKind` type re-tightens `configSchema` to `ConfigUISchema`.
|
|
14804
|
+
*/
|
|
14805
|
+
var ConfigSchemaPassthrough = unknown();
|
|
14806
|
+
var TargetKindSchema = object({
|
|
14807
|
+
kind: string(),
|
|
14808
|
+
label: string(),
|
|
14809
|
+
icon: string(),
|
|
14810
|
+
/** Stamped by each provider so the concat-fanned catalog stays routable. */
|
|
14811
|
+
addonId: string(),
|
|
14812
|
+
configSchema: ConfigSchemaPassthrough,
|
|
14813
|
+
supportsDiscovery: boolean(),
|
|
14814
|
+
caps: TargetKindCapsSchema
|
|
14815
|
+
});
|
|
14816
|
+
/**
|
|
14817
|
+
* A persisted target. `config` holds secrets; providers REDACT secret fields
|
|
14818
|
+
* (return a presence marker only) when serving `listTargets` — never
|
|
14819
|
+
* round-trip a stored secret to the UI.
|
|
14820
|
+
*/
|
|
14821
|
+
var TargetSchema = object({
|
|
14822
|
+
id: string(),
|
|
14823
|
+
name: string(),
|
|
14824
|
+
kind: string(),
|
|
14825
|
+
addonId: string(),
|
|
14826
|
+
enabled: boolean(),
|
|
14827
|
+
config: record(string(), unknown())
|
|
14828
|
+
});
|
|
14829
|
+
/** A discovery-surfaced candidate (config is partial + non-secret). */
|
|
14830
|
+
var DiscoveredTargetSchema = object({
|
|
14831
|
+
kind: string(),
|
|
14832
|
+
suggestedName: string(),
|
|
14833
|
+
config: record(string(), unknown())
|
|
14834
|
+
});
|
|
14835
|
+
/** The degrade engine's report — what was resolved / dropped / degraded. */
|
|
14836
|
+
var RenderedAsSchema = object({
|
|
14837
|
+
level: string(),
|
|
14838
|
+
format: NotificationFormatSchema,
|
|
14839
|
+
attachmentsSent: number().int().nonnegative(),
|
|
14840
|
+
actionsSent: number().int().nonnegative(),
|
|
14841
|
+
truncated: boolean(),
|
|
14842
|
+
dropped: array(string())
|
|
14843
|
+
});
|
|
14844
|
+
var SendResultSchema = object({
|
|
14685
14845
|
success: boolean(),
|
|
14686
|
-
error: string().optional()
|
|
14687
|
-
|
|
14846
|
+
error: string().optional(),
|
|
14847
|
+
renderedAs: RenderedAsSchema.optional()
|
|
14848
|
+
});
|
|
14849
|
+
/** Same shape as SendResult — kept as a distinct name for the test panel. */
|
|
14850
|
+
var TestResultSchema = SendResultSchema;
|
|
14851
|
+
method(object({}), array(TargetKindSchema)), method(object({}), array(TargetSchema)), method(object({
|
|
14852
|
+
kind: string(),
|
|
14853
|
+
config: record(string(), unknown()).optional()
|
|
14854
|
+
}), array(DiscoveredTargetSchema)), method(object({
|
|
14855
|
+
targetId: string(),
|
|
14856
|
+
notification: NotificationSchema
|
|
14857
|
+
}), SendResultSchema, { kind: "mutation" }), method(object({
|
|
14858
|
+
targetId: string(),
|
|
14859
|
+
sample: NotificationSchema.optional()
|
|
14860
|
+
}), TestResultSchema, { kind: "mutation" }), method(object({ target: TargetSchema }), TargetSchema, { kind: "mutation" }), method(object({ targetId: string() }), _void(), { kind: "mutation" }), method(object({
|
|
14861
|
+
targetId: string(),
|
|
14862
|
+
enabled: boolean()
|
|
14863
|
+
}), _void(), { kind: "mutation" });
|
|
14688
14864
|
/**
|
|
14689
14865
|
* Zod schemas for persisted record types.
|
|
14690
14866
|
*
|
|
@@ -20807,13 +20983,49 @@ Object.freeze({
|
|
|
20807
20983
|
addonId: null,
|
|
20808
20984
|
access: "create"
|
|
20809
20985
|
},
|
|
20986
|
+
"notificationOutput.deleteTarget": {
|
|
20987
|
+
capName: "notification-output",
|
|
20988
|
+
capScope: "system",
|
|
20989
|
+
addonId: null,
|
|
20990
|
+
access: "delete"
|
|
20991
|
+
},
|
|
20992
|
+
"notificationOutput.discoverTargets": {
|
|
20993
|
+
capName: "notification-output",
|
|
20994
|
+
capScope: "system",
|
|
20995
|
+
addonId: null,
|
|
20996
|
+
access: "view"
|
|
20997
|
+
},
|
|
20998
|
+
"notificationOutput.listTargetKinds": {
|
|
20999
|
+
capName: "notification-output",
|
|
21000
|
+
capScope: "system",
|
|
21001
|
+
addonId: null,
|
|
21002
|
+
access: "view"
|
|
21003
|
+
},
|
|
21004
|
+
"notificationOutput.listTargets": {
|
|
21005
|
+
capName: "notification-output",
|
|
21006
|
+
capScope: "system",
|
|
21007
|
+
addonId: null,
|
|
21008
|
+
access: "view"
|
|
21009
|
+
},
|
|
20810
21010
|
"notificationOutput.send": {
|
|
20811
21011
|
capName: "notification-output",
|
|
20812
21012
|
capScope: "system",
|
|
20813
21013
|
addonId: null,
|
|
20814
21014
|
access: "create"
|
|
20815
21015
|
},
|
|
20816
|
-
"notificationOutput.
|
|
21016
|
+
"notificationOutput.setTargetEnabled": {
|
|
21017
|
+
capName: "notification-output",
|
|
21018
|
+
capScope: "system",
|
|
21019
|
+
addonId: null,
|
|
21020
|
+
access: "create"
|
|
21021
|
+
},
|
|
21022
|
+
"notificationOutput.testTarget": {
|
|
21023
|
+
capName: "notification-output",
|
|
21024
|
+
capScope: "system",
|
|
21025
|
+
addonId: null,
|
|
21026
|
+
access: "create"
|
|
21027
|
+
},
|
|
21028
|
+
"notificationOutput.upsertTarget": {
|
|
20817
21029
|
capName: "notification-output",
|
|
20818
21030
|
capScope: "system",
|
|
20819
21031
|
addonId: null,
|
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_dist = require("../dist-
|
|
5
|
+
const require_dist = require("../dist-CE3a05qT.js");
|
|
6
6
|
let node_fs = require("node:fs");
|
|
7
7
|
let node_path = require("node:path");
|
|
8
8
|
//#region src/motion-wasm/wasm-motion-detector.ts
|