@ceralive/cerastream 2026.8.0 → 2026.8.1

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.
@@ -56,14 +56,27 @@ export declare const SUPPORTED_PROFILES: readonly ['balanced', 'low-latency', 'r
56
56
  * set or any preset's meaning changes. Mirrors the Rust `PROFILE_CATALOG_VERSION`.
57
57
  */
58
58
  export declare const PROFILE_CATALOG_VERSION: '1.0.0';
59
+ /**
60
+ * PipeWire-backed audio capture: the engine addresses capture nodes by
61
+ * `node.name`/`object.serial`, so a source with no ALSA card — a Bluetooth
62
+ * microphone is the first one — is selectable as an ordinary node. Unlike the
63
+ * other tokens this one describes the engine's RUNNING configuration, so an
64
+ * engine configured for ALSA omits it even though this catalog lists it. Mirrors
65
+ * the Rust `PIPEWIRE_CAPTURE_FEATURE`.
66
+ */
67
+ export declare const PIPEWIRE_CAPTURE_FEATURE: 'pipewire-capture';
59
68
  /**
60
69
  * Named engine features `get-capabilities` advertises in `features`. This is the
61
70
  * fail-closed negotiation contract: CeraUI sends a new out-of-schema field ONLY
62
71
  * when its feature is listed, so an engine that predates a feature (and silently
63
72
  * ignores the field) never applies a semantic the caller assumed. Mirrors the
64
73
  * Rust `ENGINE_FEATURES`.
74
+ *
75
+ * This is the full CATALOG. Gate on the token in the engine's own `features`
76
+ * array, never on membership here — a configuration-dependent token is filtered
77
+ * out of the response the engine actually sends.
65
78
  */
66
- export declare const ENGINE_FEATURES: readonly ['video-passthrough', 'input-mode', 'audio-pcm-spec'];
79
+ export declare const ENGINE_FEATURES: readonly ['video-passthrough', 'input-mode', 'audio-pcm-spec', "pipewire-capture"];
67
80
  /** Engine binary name (systemd-owned; CeraUI never spawns it — ADR-0005). */
68
81
  export declare const CERASTREAM_BIN: 'cerastream';
69
82
  export declare const DEFAULT_MIN_BITRATE = 300;
package/dist/constants.js CHANGED
@@ -65,14 +65,32 @@ export const SUPPORTED_PROFILES = [
65
65
  * set or any preset's meaning changes. Mirrors the Rust `PROFILE_CATALOG_VERSION`.
66
66
  */
67
67
  export const PROFILE_CATALOG_VERSION = '1.0.0';
68
+ /**
69
+ * PipeWire-backed audio capture: the engine addresses capture nodes by
70
+ * `node.name`/`object.serial`, so a source with no ALSA card — a Bluetooth
71
+ * microphone is the first one — is selectable as an ordinary node. Unlike the
72
+ * other tokens this one describes the engine's RUNNING configuration, so an
73
+ * engine configured for ALSA omits it even though this catalog lists it. Mirrors
74
+ * the Rust `PIPEWIRE_CAPTURE_FEATURE`.
75
+ */
76
+ export const PIPEWIRE_CAPTURE_FEATURE = 'pipewire-capture';
68
77
  /**
69
78
  * Named engine features `get-capabilities` advertises in `features`. This is the
70
79
  * fail-closed negotiation contract: CeraUI sends a new out-of-schema field ONLY
71
80
  * when its feature is listed, so an engine that predates a feature (and silently
72
81
  * ignores the field) never applies a semantic the caller assumed. Mirrors the
73
82
  * Rust `ENGINE_FEATURES`.
83
+ *
84
+ * This is the full CATALOG. Gate on the token in the engine's own `features`
85
+ * array, never on membership here — a configuration-dependent token is filtered
86
+ * out of the response the engine actually sends.
74
87
  */
75
- export const ENGINE_FEATURES = ['video-passthrough', 'input-mode', 'audio-pcm-spec'];
88
+ export const ENGINE_FEATURES = [
89
+ 'video-passthrough',
90
+ 'input-mode',
91
+ 'audio-pcm-spec',
92
+ PIPEWIRE_CAPTURE_FEATURE,
93
+ ];
76
94
  /** Engine binary name (systemd-owned; CeraUI never spawns it — ADR-0005). */
77
95
  export const CERASTREAM_BIN = 'cerastream';
78
96
  // ---- config defaults (mirror ceracoder, the engine being replaced) ----
package/dist/events.d.ts CHANGED
@@ -192,6 +192,7 @@ export declare const deviceEventSchema: z.ZodObject<{
192
192
  stable_id: z.ZodOptional<z.ZodString>;
193
193
  physical_group_id: z.ZodOptional<z.ZodString>;
194
194
  hardware_serial: z.ZodOptional<z.ZodString>;
195
+ device_address: z.ZodOptional<z.ZodString>;
195
196
  }, z.core.$strip>;
196
197
  }, z.core.$strip>;
197
198
  /** Payload of a {@link deviceEventSchema} event. */
@@ -424,6 +425,7 @@ export declare const eventParamsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
424
425
  stable_id: z.ZodOptional<z.ZodString>;
425
426
  physical_group_id: z.ZodOptional<z.ZodString>;
426
427
  hardware_serial: z.ZodOptional<z.ZodString>;
428
+ device_address: z.ZodOptional<z.ZodString>;
427
429
  }, z.core.$strip>;
428
430
  }, z.core.$strip>, z.ZodObject<{
429
431
  type: z.ZodLiteral<"bitrate">;
@@ -615,6 +617,7 @@ export declare const cerastreamEventSchema: z.ZodObject<{
615
617
  stable_id: z.ZodOptional<z.ZodString>;
616
618
  physical_group_id: z.ZodOptional<z.ZodString>;
617
619
  hardware_serial: z.ZodOptional<z.ZodString>;
620
+ device_address: z.ZodOptional<z.ZodString>;
618
621
  }, z.core.$strip>;
619
622
  }, z.core.$strip>, z.ZodObject<{
620
623
  type: z.ZodLiteral<"bitrate">;
@@ -812,6 +815,7 @@ export declare const eventSchemas: {
812
815
  stable_id: z.ZodOptional<z.ZodString>;
813
816
  physical_group_id: z.ZodOptional<z.ZodString>;
814
817
  hardware_serial: z.ZodOptional<z.ZodString>;
818
+ device_address: z.ZodOptional<z.ZodString>;
815
819
  }, z.core.$strip>;
816
820
  }, z.core.$strip>;
817
821
  readonly bitrate: z.ZodObject<{
@@ -241,6 +241,7 @@ export declare const listDevicesResultSchema: z.ZodObject<{
241
241
  stable_id: z.ZodOptional<z.ZodString>;
242
242
  physical_group_id: z.ZodOptional<z.ZodString>;
243
243
  hardware_serial: z.ZodOptional<z.ZodString>;
244
+ device_address: z.ZodOptional<z.ZodString>;
244
245
  }, z.core.$strip>>;
245
246
  }, z.core.$strip>;
246
247
  export type ListDevicesResult = z.infer<typeof listDevicesResultSchema>;
@@ -711,6 +712,7 @@ export declare const requestSchemas: {
711
712
  stable_id: z.ZodOptional<z.ZodString>;
712
713
  physical_group_id: z.ZodOptional<z.ZodString>;
713
714
  hardware_serial: z.ZodOptional<z.ZodString>;
715
+ device_address: z.ZodOptional<z.ZodString>;
714
716
  }, z.core.$strip>>;
715
717
  }, z.core.$strip>;
716
718
  };
package/dist/types.d.ts CHANGED
@@ -276,6 +276,7 @@ export declare const captureDeviceSchema: z.ZodObject<{
276
276
  stable_id: z.ZodOptional<z.ZodString>;
277
277
  physical_group_id: z.ZodOptional<z.ZodString>;
278
278
  hardware_serial: z.ZodOptional<z.ZodString>;
279
+ device_address: z.ZodOptional<z.ZodString>;
279
280
  }, z.core.$strip>;
280
281
  export type CaptureDevice = z.infer<typeof captureDeviceSchema>;
281
282
  export declare const srtStatsSchema: z.ZodObject<{
package/dist/types.js CHANGED
@@ -184,6 +184,7 @@ export const captureDeviceSchema = z.object({
184
184
  stable_id: z.string().optional(), // additive (Todo 20): reboot-stable hardware identity, distinct from input_id/device_path
185
185
  physical_group_id: z.string().optional(), // additive (0.10.0, ADR-0008): `usb:<topology-token>` shared by one physical device's rows; absent on non-USB + legacy producers, and an absent group NEVER matches
186
186
  hardware_serial: z.string().optional(), // additive (0.10.0, ADR-0008): USB serial, DIAGNOSTIC ONLY — vendors ship placeholder serials, so never match/group/select on it
187
+ device_address: z.string().optional(), // additive: the address the node's provider advertises, carried verbatim; the engine attaches no meaning to it, so the consumer owning the address space is the one that matches on it. Absent unless a provider published one
187
188
  });
188
189
  // ---- transport telemetry (srt-stats event payload) ----
189
190
  export const srtStatsSchema = z.object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ceralive/cerastream",
3
- "version": "2026.8.0",
3
+ "version": "2026.8.1",
4
4
  "description": "Type-safe TypeScript schema + IPC client for the cerastream streaming engine (JSON-RPC 2.0 / NDJSON over a Unix domain socket).",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",