@openmixer/plugin-qualify 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -181,7 +181,7 @@ names the options it ran under, `featureOptions`:
181
181
 
182
182
  | flag | what it sets | default |
183
183
  | --- | --- | --- |
184
- | `--features LIST` | the kinds offered: `map`, `unmap`, `options`, `bounded`, `worker`, `default-state`, `log` (empty: none) | all but `default-state` |
184
+ | `--features LIST` | the kinds offered: `map`, `unmap`, `options`, `bounded`, `worker`, `default-state`, `log`, `rtmempool` (empty: none) | all but `default-state` |
185
185
  | `--strict` / `--no-strict` | refuse a plugin requiring a feature not offered (the record's `refusedFeature` names it), or hand it to its own instantiate without it | `--no-strict` |
186
186
  | `--block-declares LIST` | the buf-size declarations made when `bounded` is offered: `bounded`, `fixed`, `pow2` (empty: none) | `bounded` |
187
187
  | `--block-min N` | `bufsz:minBlockLength`; 0 is the run's block | 1 |
@@ -16,8 +16,7 @@ export declare const OMX_INPROCESS_FEATURES: readonly string[];
16
16
  * than on the desk. The list's home is the CLAP library — libomx-clap-core's own
17
17
  * `clap_host_extensions.h`, what its host object offers — and this is its mirror, held equal to the
18
18
  * header at the pinned omx-clap-host (by the console's conformance test), so the verdict never
19
- * promises more or less than the host provides. Nothing else: no `gui`, no `timer-support`, no
20
- * `posix-fd-support`, no `thread-pool`.
19
+ * promises more or less than the host provides. Nothing else: no `gui`.
21
20
  */
22
21
  export declare const OMX_CLAP_HOST_EXTENSIONS: readonly string[];
23
22
  /**
@@ -33,8 +33,7 @@ export const OMX_INPROCESS_FEATURES = [
33
33
  * than on the desk. The list's home is the CLAP library — libomx-clap-core's own
34
34
  * `clap_host_extensions.h`, what its host object offers — and this is its mirror, held equal to the
35
35
  * header at the pinned omx-clap-host (by the console's conformance test), so the verdict never
36
- * promises more or less than the host provides. Nothing else: no `gui`, no `timer-support`, no
37
- * `posix-fd-support`, no `thread-pool`.
36
+ * promises more or less than the host provides. Nothing else: no `gui`.
38
37
  */
39
38
  export const OMX_CLAP_HOST_EXTENSIONS = [
40
39
  "clap.log",
@@ -43,6 +42,17 @@ export const OMX_CLAP_HOST_EXTENSIONS = [
43
42
  "clap.params",
44
43
  "clap.audio-ports",
45
44
  "clap.state",
45
+ "clap.note-ports",
46
+ "clap.note-name",
47
+ "clap.voice-info",
48
+ "clap.event-registry",
49
+ "clap.timer-support",
50
+ "clap.posix-fd-support",
51
+ "clap.thread-pool",
52
+ "clap.tail",
53
+ "clap.surround/4",
54
+ "clap.ambisonic/3",
55
+ "clap.audio-ports-config",
46
56
  ];
47
57
  /**
48
58
  * The three host extensions omx-clap-host turns on beyond the library's own (omx-clap-core
@@ -1 +1 @@
1
- {"version":3,"file":"host-profiles.js","sourceRoot":"","sources":["../src/host-profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-profiles.js","sourceRoot":"","sources":["../src/host-profiles.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sDAAsD;AACtD;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,uFAAuF;AACvF,kGAAkG;AAClG,OAAO,EACL,eAAe,EACf,qBAAqB,GAGtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,eAAe,EAA0C,MAAM,yBAAyB,CAAC;AAGlG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAsB;IACvD,mCAAmC;IACnC,qCAAqC;IACrC,0CAA0C;IAC1C,sDAAsD;IACtD,0CAA0C;IAC1C,iDAAiD;IACjD,kCAAkC;CACnC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAsB;IACzD,UAAU;IACV,mBAAmB;IACnB,cAAc;IACd,aAAa;IACb,kBAAkB;IAClB,YAAY;IACZ,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,qBAAqB;IACrB,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,WAAW;IACX,iBAAiB;IACjB,kBAAkB;IAClB,yBAAyB;CAC1B,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAsB;IACpE,oBAAoB;IACpB,mBAAmB;IACnB,wBAAwB;CACzB,CAAC;AAEF,8EAA8E;AAC9E,MAAM,OAAO,GAAG,2BAA2B,CAAC;AAC5C,MAAM,YAAY,GAAG,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,OAAO,YAAY,CAAC,EAAE,CAAC,CAAC;AAE7H;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,SAAS,EAAE,iBAAiB,EAAE,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;IAChI,GAAG,YAAY;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAsB;IACtD,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;IACnF,8CAA8C;IAC9C,GAAG,YAAY;IACf,GAAG,CAAC,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;IAC1E,8DAA8D;IAC9D,GAAG,OAAO,iBAAiB;CAC5B,CAAC;AAEF,8FAA8F;AAC9F,MAAM,CAAC,MAAM,yBAAyB,GAAgB;IACpD,EAAE,EAAE,mBAAmB;IACvB,WAAW,EAAE,sBAAsB;IACnC,cAAc,EAAE,wBAAwB;IACxC,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,YAAY,CAAC,mBAAmB,CAAC;IACvC,OAAO,EAAE,aAAa;IACtB,SAAS,EAAE,YAAY;CACxB,CAAC;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,EAAE,EAAE,MAAM;IACV,WAAW,EAAE,iBAAiB;IAC9B,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,YAAY,CAAC,IAAI;IACvB,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,aAAa;CACzB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAgB;IAC3C,EAAE,EAAE,UAAU;IACd,WAAW,EAAE,qBAAqB;IAClC,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC;IAC9B,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,gBAAgB;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAgB;IAChD,EAAE,EAAE,eAAe;IACnB,WAAW,EAAE,sBAAsB;IACnC,cAAc,EAAE,CAAC,GAAG,wBAAwB,EAAE,GAAG,mCAAmC,CAAC;IACrF,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC;IACnC,OAAO,EAAE,eAAe;IACxB,SAAS,EAAE,gBAAgB;CAC5B,CAAC;AAEF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAA2B,CAAC,yBAAyB,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;AAExI,+CAA+C;AAC/C,MAAM,UAAU,kBAAkB,CAAC,EAAU;IAC3C,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAChD,CAAC"}
@@ -1,71 +1,91 @@
1
1
  /**
2
- * The hosting verdict's message codes. Codes, never prose: the
3
- * surface renders the operator's locale.
4
- *
5
- * A UNION list file: `.gitattributes` marks it
6
- * `merge=union`, so two lanes that each add a code merge with both kept. Only the table lives
7
- * here, one `key: 'code',` per line, with keys and codes unique; the registry-hotspots gate
8
- * refuses anything else.
2
+ * Where omx-clap-core's TypeScript modules are looked for, in order: `OMX_CLAP_CORE_TSDIR` when
3
+ * set (and only that), else `pkg-config --variable=tsdir omx-clap-core`, else the checkout
4
+ * `native/fetch-deps.sh` stages, else the path `make install` of omx-clap-host uses by default —
5
+ * a packaged plugin-qualify's runtime has no `pkg-config` binary to ask.
9
6
  */
10
- export declare const HOSTING_CODE: {
11
- readonly stabilitySoaked: "hosting.stability.soaked";
12
- readonly stabilityCrashedAttributed: "hosting.stability.crashed-attributed-plugin";
13
- readonly stabilityCrashedLive: "hosting.stability.crashed-live-on-this-rig";
14
- readonly stabilityBelowFloor: "hosting.stability.cycles-below-floor";
15
- readonly stabilityUnsoaked: "hosting.stability.unsoaked";
16
- readonly stabilitySoakFailedAtRate: "hosting.stability.soak-failed-at-rate";
17
- readonly stabilityUnmeasured: "hosting.stability.unmeasured";
18
- readonly stabilityCrashUnattributed: "hosting.stability.crash-unattributed";
19
- readonly stabilitySpawnsThreads: "hosting.stability.spawns-threads";
20
- readonly stabilityLinksGuiToolkit: "hosting.stability.links-gui-toolkit";
21
- readonly rtSafetyClean: "hosting.rt-safety.clean-under-sweep";
22
- readonly rtSafetyViolations: "hosting.rt-safety.violations-in-run";
23
- readonly rtSafetyUnmeasured: "hosting.rt-safety.unmeasured";
24
- readonly rtSafetyNotReproducible: "hosting.rt-safety.not-reproducible";
25
- readonly rtSafetyNotesClean: "hosting.rt-safety.clean-under-notes";
26
- readonly rtSafetyNotesViolations: "hosting.rt-safety.violations-under-notes";
27
- readonly rtSafetyNotesUnmeasured: "hosting.rt-safety.notes-unmeasured";
28
- readonly featuresProvided: "hosting.features.all-provided";
29
- readonly featuresMissing: "hosting.features.required-not-provided";
30
- readonly featuresDisqualifying: "hosting.features.host-not-provided";
31
- readonly featuresCv: "hosting.features.cv-ports";
32
- readonly featuresMidiIn: "hosting.features.midi-in-fed-empty";
33
- readonly featuresUnscanned: "hosting.features.scan-predates-field";
34
- readonly costWithinCeiling: "hosting.cost.within-ceiling";
7
+ export declare function clapCoreTsDirCandidates(env?: Readonly<Record<string, string | undefined>>): readonly string[];
8
+ /** True for an export name that is one of omx-clap-core's hosting tables. */
9
+ export declare function isHostingTableName(name: string): boolean;
10
+ /**
11
+ * omx-clap-core's hosting codes, by key, across its two TypeScript modules — hand-kept here
12
+ * (not derived from a static import: the source is a runtime-resolved install directory, not an
13
+ * npm dependency) and held to the real modules by
14
+ * `src/contract-vocabulary-conformance.test.ts`, which turns red on any drift either way.
15
+ */
16
+ export interface HostingCodeTable {
17
+ readonly clapExtensionsNotCovered: "hosting.clap.extensions-not-covered";
18
+ readonly clapFormatNotHosted: "hosting.clap.format-not-hosted";
19
+ readonly clapHeadlessFailed: "hosting.clap.headless-failed";
20
+ readonly clapLatencyMismatch: "hosting.clap.latency-mismatch";
21
+ readonly clapNoteInput: "hosting.clap.note-input";
22
+ readonly clapProcessError: "hosting.clap.process-error";
23
+ readonly clapThreadViolation: "hosting.clap.thread-violation";
24
+ readonly clapUnqualified: "hosting.clap.unqualified";
35
25
  readonly costAboveCeiling: "hosting.cost.above-ceiling";
26
+ readonly costFieldsMissing: "hosting.cost.fields-missing";
36
27
  readonly costSpiky: "hosting.cost.spiky-tail";
37
28
  readonly costUnmeasured: "hosting.cost.unmeasured-at-rate-and-quantum";
38
- readonly costFieldsMissing: "hosting.cost.fields-missing";
39
- readonly latencyResolved: "hosting.latency.resolved";
40
- readonly latencyUnmeasured: "hosting.latency.unmeasured";
29
+ readonly costWithinCeiling: "hosting.cost.within-ceiling";
30
+ readonly featuresAtomInUnfed: "hosting.features.atom-in-unfed";
31
+ readonly featuresDisqualifying: "hosting.features.host-not-provided";
32
+ readonly featuresMidiIn: "hosting.features.midi-in-fed-empty";
33
+ readonly featuresMissing: "hosting.features.missing";
34
+ readonly featuresPortsUnreadable: "hosting.features.ports-unreadable";
35
+ readonly featuresProvided: "hosting.features.all-provided";
36
+ readonly featuresUnscanned: "hosting.features.scan-predates-field";
37
+ readonly idleHoldRefused: "hosting.idle.hold-refused";
41
38
  readonly latencyNonconforming: "hosting.latency.nonconforming";
42
39
  readonly latencyParameterDependent: "hosting.latency.parameter-dependent";
43
- readonly topologyMatched: "hosting.topology.matched";
44
- readonly topologyNoAudioInput: "hosting.topology.no-audio-input";
45
- readonly topologyNoAudioOutput: "hosting.topology.no-audio-output";
46
- readonly topologyExtraInputs: "hosting.topology.extra-inputs-fed-silence";
47
- readonly topologyInstrument: "hosting.topology.instrument";
48
- readonly topologyWiderThanStrip: "hosting.topology.wider-than-strip";
49
- readonly clapLatencyMismatch: "hosting.clap.latency-mismatch";
50
- readonly clapNotAudioEffect: "hosting.clap.not-audio-effect";
51
- readonly clapHeadlessFailed: "hosting.clap.headless-failed";
52
- readonly clapNoteInput: "hosting.clap.note-input";
53
- readonly clapThreadViolation: "hosting.clap.thread-violation";
54
- readonly clapProcessError: "hosting.clap.process-error";
55
- readonly clapUnqualified: "hosting.clap.unqualified";
56
- readonly clapFormatNotHosted: "hosting.clap.format-not-hosted";
57
- readonly clapExtensionsNotCovered: "hosting.clap.extensions-not-covered";
40
+ readonly latencyResolved: "hosting.latency.resolved";
41
+ readonly latencyUnmeasured: "hosting.latency.unmeasured";
58
42
  readonly outputNonFinite: "hosting.output.non-finite";
59
- readonly workerNonconforming: "hosting.worker.nonconforming";
60
- readonly integrityUnpinned: "hosting.integrity.unpinned";
61
- readonly integrityBinaryMismatch: "hosting.integrity.binary-mismatch";
62
- readonly integrityLayoutMismatch: "hosting.integrity.layout-mismatch";
63
43
  readonly overrideIsolated: "hosting.override.curator-isolated";
44
+ readonly patchBusy: "hosting.patch.busy";
45
+ readonly patchNotWritable: "hosting.patch.not-writable";
46
+ readonly patchTooLarge: "hosting.patch.too-large";
47
+ readonly presetNotFound: "hosting.preset.not-found";
64
48
  readonly hostProvenanceDiffers: "hosting.provenance.host-differs";
65
49
  readonly sweepControlDidNotFire: "hosting.provenance.sweep-control-did-not-fire";
66
50
  readonly disabled: "hosting.disabled";
67
- readonly unjudged: "hosting.unjudged";
51
+ readonly linked: "hosting.linked";
68
52
  readonly noRealisation: "hosting.no-realisation";
69
53
  readonly realisedInProcess: "hosting.realised.in-process";
70
- readonly linked: "hosting.linked";
71
- };
54
+ readonly unjudged: "hosting.unjudged";
55
+ readonly rtSafetyClean: "hosting.rt-safety.clean-under-sweep";
56
+ readonly rtSafetyNotReproducible: "hosting.rt-safety.not-reproducible";
57
+ readonly rtSafetyNotesClean: "hosting.rt-safety.clean-under-notes";
58
+ readonly rtSafetyNotesUnmeasured: "hosting.rt-safety.notes-unmeasured";
59
+ readonly rtSafetyNotesViolations: "hosting.rt-safety.violations-under-notes";
60
+ readonly rtSafetyUnmeasured: "hosting.rt-safety.unmeasured";
61
+ readonly rtSafetyViolations: "hosting.rt-safety.violations-in-run";
62
+ readonly stabilityBelowFloor: "hosting.stability.cycles-below-floor";
63
+ readonly stabilityCrashUnattributed: "hosting.stability.crash-unattributed";
64
+ readonly stabilityCrashedAttributed: "hosting.stability.crashed-attributed-plugin";
65
+ readonly stabilityCrashedLive: "hosting.stability.crashed-live-on-this-rig";
66
+ readonly stabilityLinksGuiToolkit: "hosting.stability.links-gui-toolkit";
67
+ readonly stabilitySoakFailedAtRate: "hosting.stability.soak-failed-at-rate";
68
+ readonly stabilitySoaked: "hosting.stability.soaked";
69
+ readonly stabilitySpawnsThreads: "hosting.stability.spawns-threads";
70
+ readonly stabilityUnmeasured: "hosting.stability.unmeasured";
71
+ readonly stabilityUnsoaked: "hosting.stability.unsoaked";
72
+ readonly stateNotACopy: "hosting.state.not-a-copy";
73
+ readonly statePathOnAudio: "hosting.state.path-on-audio";
74
+ readonly statePathOutside: "hosting.state.path-outside";
75
+ readonly statePathSymlink: "hosting.state.path-symlink";
76
+ readonly statePathTooLong: "hosting.state.path-too-long";
77
+ readonly statePathUnmakeable: "hosting.state.path-unmakeable";
78
+ readonly stateUnreadable: "hosting.state.unreadable";
79
+ readonly topologyAmbisonicConfig: "hosting.topology.ambisonic-config";
80
+ readonly topologyChannelMapUnknown: "hosting.topology.channel-map-unknown";
81
+ readonly topologyInstrument: "hosting.topology.instrument";
82
+ readonly topologyMatched: "hosting.topology.matched";
83
+ readonly topologyNoAudioInput: "hosting.topology.no-audio-input";
84
+ readonly topologyNoAudioOutput: "hosting.topology.no-audio-output";
85
+ readonly topologyPortTooWide: "hosting.topology.port-too-wide";
86
+ readonly topologyPortWithoutChannels: "hosting.topology.port-without-channels";
87
+ readonly topologyTooManyPorts: "hosting.topology.too-many-ports";
88
+ readonly topologyWiderThanStrip: "hosting.topology.wider-than-strip";
89
+ readonly workerNonconforming: "hosting.worker.nonconforming";
90
+ }
91
+ export declare const HOSTING_CODE: HostingCodeTable;
@@ -1,83 +1,95 @@
1
1
  // SPDX-License-Identifier: GPL-3.0-or-later
2
2
  // Copyright (C) 2026 Pau Aliagas <linuxnow@gmail.com>
3
3
  /**
4
- * The hosting verdict's message codes. Codes, never prose: the
5
- * surface renders the operator's locale.
4
+ * The hosting verdict's message codes. Codes, never prose: the surface renders the operator's
5
+ * locale.
6
6
  *
7
- * A UNION list file: `.gitattributes` marks it
8
- * `merge=union`, so two lanes that each add a code merge with both kept. Only the table lives
9
- * here, one `key: 'code',` per line, with keys and codes unique; the registry-hotspots gate
10
- * refuses anything else.
7
+ * omx-clap-core declares every hosting code now (the contract split moved `data/hosting/*.json`
8
+ * there, byte for byte): one `HOSTING_<DIMENSION>_CODES` table per dimension, rendered into the
9
+ * TypeScript modules its package installs under `pkg-config --variable=tsdir omx-clap-core`
10
+ * (BUILDING.md) — `omx-clap-core-vocabulary.js` for the dimensions carried from omx-contract,
11
+ * `omx-clap-core-hosting.js` for `hosting.idle.*`, its own (both with a `.d.ts`). {@link
12
+ * HOSTING_CODE} is those tables flattened into one `key: code` map, loaded at import: a code
13
+ * neither module declares cannot be named here, and a dimension either adds arrives without an
14
+ * edit.
11
15
  */
12
- export const HOSTING_CODE = {
13
- stabilitySoaked: 'hosting.stability.soaked',
14
- stabilityCrashedAttributed: 'hosting.stability.crashed-attributed-plugin',
15
- stabilityCrashedLive: 'hosting.stability.crashed-live-on-this-rig',
16
- stabilityBelowFloor: 'hosting.stability.cycles-below-floor',
17
- stabilityUnsoaked: 'hosting.stability.unsoaked',
18
- stabilitySoakFailedAtRate: 'hosting.stability.soak-failed-at-rate',
19
- stabilityUnmeasured: 'hosting.stability.unmeasured',
20
- stabilityCrashUnattributed: 'hosting.stability.crash-unattributed',
21
- stabilitySpawnsThreads: 'hosting.stability.spawns-threads',
22
- stabilityLinksGuiToolkit: 'hosting.stability.links-gui-toolkit',
23
- rtSafetyClean: 'hosting.rt-safety.clean-under-sweep',
24
- rtSafetyViolations: 'hosting.rt-safety.violations-in-run',
25
- rtSafetyUnmeasured: 'hosting.rt-safety.unmeasured',
26
- rtSafetyNotReproducible: 'hosting.rt-safety.not-reproducible',
27
- // The note sweep: an instrument played under the interposer, a count of its own.
28
- rtSafetyNotesClean: 'hosting.rt-safety.clean-under-notes',
29
- rtSafetyNotesViolations: 'hosting.rt-safety.violations-under-notes',
30
- rtSafetyNotesUnmeasured: 'hosting.rt-safety.notes-unmeasured',
31
- featuresProvided: 'hosting.features.all-provided',
32
- featuresMissing: 'hosting.features.required-not-provided',
33
- featuresDisqualifying: 'hosting.features.host-not-provided',
34
- featuresCv: 'hosting.features.cv-ports',
35
- featuresMidiIn: 'hosting.features.midi-in-fed-empty',
36
- featuresUnscanned: 'hosting.features.scan-predates-field',
37
- costWithinCeiling: 'hosting.cost.within-ceiling',
38
- costAboveCeiling: 'hosting.cost.above-ceiling',
39
- costSpiky: 'hosting.cost.spiky-tail',
40
- costUnmeasured: 'hosting.cost.unmeasured-at-rate-and-quantum',
41
- costFieldsMissing: 'hosting.cost.fields-missing',
42
- latencyResolved: 'hosting.latency.resolved',
43
- latencyUnmeasured: 'hosting.latency.unmeasured',
44
- latencyNonconforming: 'hosting.latency.nonconforming',
45
- latencyParameterDependent: 'hosting.latency.parameter-dependent',
46
- topologyMatched: 'hosting.topology.matched',
47
- topologyNoAudioInput: 'hosting.topology.no-audio-input',
48
- topologyNoAudioOutput: 'hosting.topology.no-audio-output',
49
- topologyExtraInputs: 'hosting.topology.extra-inputs-fed-silence',
50
- topologyInstrument: 'hosting.topology.instrument',
51
- // The CLAP arm: the SAME dimensions fed from CLAP facts,
52
- // minted here where the LV2 table has no code for the fact.
53
- topologyWiderThanStrip: 'hosting.topology.wider-than-strip',
54
- clapLatencyMismatch: 'hosting.clap.latency-mismatch',
55
- clapNotAudioEffect: 'hosting.clap.not-audio-effect',
56
- clapHeadlessFailed: 'hosting.clap.headless-failed',
57
- clapNoteInput: 'hosting.clap.note-input',
58
- clapThreadViolation: 'hosting.clap.thread-violation',
59
- clapProcessError: 'hosting.clap.process-error',
60
- clapUnqualified: 'hosting.clap.unqualified',
61
- clapFormatNotHosted: 'hosting.clap.format-not-hosted',
62
- clapExtensionsNotCovered: 'hosting.clap.extensions-not-covered',
63
- outputNonFinite: 'hosting.output.non-finite',
64
- workerNonconforming: 'hosting.worker.nonconforming',
65
- // The pin (spec §11; one-contract §10.3): a host's refusal at add, by the daemon's code.
66
- integrityUnpinned: 'hosting.integrity.unpinned',
67
- integrityBinaryMismatch: 'hosting.integrity.binary-mismatch',
68
- integrityLayoutMismatch: 'hosting.integrity.layout-mismatch',
69
- overrideIsolated: 'hosting.override.curator-isolated',
70
- hostProvenanceDiffers: 'hosting.provenance.host-differs',
71
- sweepControlDidNotFire: 'hosting.provenance.sweep-control-did-not-fire',
72
- // The five REALISED reasons. Everything above answers what a plugin EARNED; these answer
73
- // what the console DID with that, and the difference between the two is the operator's
74
- // whole question when a slot is not on the fast path.
75
- disabled: 'hosting.disabled',
76
- unjudged: 'hosting.unjudged',
77
- noRealisation: 'hosting.no-realisation',
78
- realisedInProcess: 'hosting.realised.in-process',
79
- // A plugin LINKED into the engine (the static-link registry) runs in-process without a
80
- // verdict: the library's oracles are its proof.
81
- linked: 'hosting.linked',
82
- };
16
+ import { execFileSync } from "node:child_process";
17
+ import { existsSync, readFileSync } from "node:fs";
18
+ import { join } from "node:path";
19
+ import { fileURLToPath } from "node:url";
20
+ /** The two TypeScript modules omx-clap-core's `tsdir` carries, each a `HOSTING_<DIMENSION>_CODES` source. */
21
+ const CLAP_CORE_TS_MODULES = ["omx-clap-core-vocabulary.js", "omx-clap-core-hosting.js"];
22
+ /** This package's own root, resolved from this module so it follows wherever it is installed. */
23
+ const PACKAGE_ROOT = fileURLToPath(new URL("..", import.meta.url));
24
+ /** `native/fetch-deps.sh`'s own checkout of omx-clap-core, for a build with no omx-clap-core-devel installed. */
25
+ const DEPS_TS_DIR = join(PACKAGE_ROOT, "native/deps/omx-clap-core/ts");
26
+ /** Where `make install` of omx-clap-host puts them (BUILDING.md), for a run with no `pkg-config` binary at all. */
27
+ const DEFAULT_SYSTEM_TS_DIR = "/usr/share/omx-clap-core/ts";
28
+ /** `pkg-config --variable=tsdir omx-clap-core`, or `undefined` where pkg-config or the package is absent. */
29
+ function pkgConfigTsDir(env) {
30
+ try {
31
+ const out = execFileSync(env.PKG_CONFIG ?? "pkg-config", ["--variable=tsdir", "omx-clap-core"], {
32
+ encoding: "utf8",
33
+ stdio: ["ignore", "pipe", "ignore"],
34
+ }).trim();
35
+ return out === "" ? undefined : out;
36
+ }
37
+ catch {
38
+ return undefined;
39
+ }
40
+ }
41
+ /**
42
+ * Where omx-clap-core's TypeScript modules are looked for, in order: `OMX_CLAP_CORE_TSDIR` when
43
+ * set (and only that), else `pkg-config --variable=tsdir omx-clap-core`, else the checkout
44
+ * `native/fetch-deps.sh` stages, else the path `make install` of omx-clap-host uses by default —
45
+ * a packaged plugin-qualify's runtime has no `pkg-config` binary to ask.
46
+ */
47
+ export function clapCoreTsDirCandidates(env = process.env) {
48
+ const set = env.OMX_CLAP_CORE_TSDIR;
49
+ if (set !== undefined && set !== "")
50
+ return [set];
51
+ const fromPkgConfig = pkgConfigTsDir(env);
52
+ return [...(fromPkgConfig === undefined ? [] : [fromPkgConfig]), DEPS_TS_DIR, DEFAULT_SYSTEM_TS_DIR];
53
+ }
54
+ function locateClapCoreTsDir() {
55
+ const candidates = clapCoreTsDirCandidates();
56
+ const dir = candidates.find((d) => CLAP_CORE_TS_MODULES.every((m) => existsSync(join(d, m))));
57
+ if (dir === undefined) {
58
+ throw new Error(`omx-clap-core's TypeScript modules (${CLAP_CORE_TS_MODULES.join(", ")}) were not found in any of: ` +
59
+ `${candidates.join(", ")}. Install omx-clap-core-devel (pkg-config omx-clap-core), set ` +
60
+ "OMX_CLAP_CORE_TSDIR to its tsdir, or run native/fetch-deps.sh.");
61
+ }
62
+ return dir;
63
+ }
64
+ /** True for an export name that is one of omx-clap-core's hosting tables. */
65
+ export function isHostingTableName(name) {
66
+ return /^HOSTING_[A-Z0-9_]+_CODES$/.test(name);
67
+ }
68
+ async function loadHostingTables() {
69
+ const dir = locateClapCoreTsDir();
70
+ const tables = {};
71
+ for (const name of CLAP_CORE_TS_MODULES) {
72
+ // The modules are self-contained ES modules in a directory with no package.json: Node 18 reads such a .js as
73
+ // CommonJS and refuses `export`, so the source is imported as a data: module, which is a module on every Node.
74
+ const source = readFileSync(join(dir, name), "utf8");
75
+ const mod = await import(`data:text/javascript;base64,${Buffer.from(source).toString("base64")}`);
76
+ for (const [exportName, table] of Object.entries(mod)) {
77
+ if (isHostingTableName(exportName))
78
+ tables[exportName] = table;
79
+ }
80
+ }
81
+ return tables;
82
+ }
83
+ function flatten(tables) {
84
+ const table = {};
85
+ for (const [name, entries] of Object.entries(tables)) {
86
+ for (const [key, entry] of Object.entries(entries)) {
87
+ if (key in table)
88
+ throw new Error(`omx-clap-core declares the hosting key ${key} twice (${name})`);
89
+ table[key] = entry.code;
90
+ }
91
+ }
92
+ return Object.freeze(table);
93
+ }
94
+ export const HOSTING_CODE = flatten(await loadHostingTables());
83
95
  //# sourceMappingURL=hosting-codes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hosting-codes.js","sourceRoot":"","sources":["../src/hosting-codes.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,sDAAsD;AACtD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe,EAAE,0BAA0B;IAC3C,0BAA0B,EAAE,6CAA6C;IACzE,oBAAoB,EAAE,4CAA4C;IAClE,mBAAmB,EAAE,sCAAsC;IAC3D,iBAAiB,EAAE,4BAA4B;IAC/C,yBAAyB,EAAE,uCAAuC;IAClE,mBAAmB,EAAE,8BAA8B;IACnD,0BAA0B,EAAE,sCAAsC;IAClE,sBAAsB,EAAE,kCAAkC;IAC1D,wBAAwB,EAAE,qCAAqC;IAC/D,aAAa,EAAE,qCAAqC;IACpD,kBAAkB,EAAE,qCAAqC;IACzD,kBAAkB,EAAE,8BAA8B;IAClD,uBAAuB,EAAE,oCAAoC;IAC7D,iFAAiF;IACjF,kBAAkB,EAAE,qCAAqC;IACzD,uBAAuB,EAAE,0CAA0C;IACnE,uBAAuB,EAAE,oCAAoC;IAC7D,gBAAgB,EAAE,+BAA+B;IACjD,eAAe,EAAE,wCAAwC;IACzD,qBAAqB,EAAE,oCAAoC;IAC3D,UAAU,EAAE,2BAA2B;IACvC,cAAc,EAAE,oCAAoC;IACpD,iBAAiB,EAAE,sCAAsC;IACzD,iBAAiB,EAAE,6BAA6B;IAChD,gBAAgB,EAAE,4BAA4B;IAC9C,SAAS,EAAE,yBAAyB;IACpC,cAAc,EAAE,6CAA6C;IAC7D,iBAAiB,EAAE,6BAA6B;IAChD,eAAe,EAAE,0BAA0B;IAC3C,iBAAiB,EAAE,4BAA4B;IAC/C,oBAAoB,EAAE,+BAA+B;IACrD,yBAAyB,EAAE,qCAAqC;IAChE,eAAe,EAAE,0BAA0B;IAC3C,oBAAoB,EAAE,iCAAiC;IACvD,qBAAqB,EAAE,kCAAkC;IACzD,mBAAmB,EAAE,2CAA2C;IAChE,kBAAkB,EAAE,6BAA6B;IACjD,yDAAyD;IACzD,4DAA4D;IAC5D,sBAAsB,EAAE,mCAAmC;IAC3D,mBAAmB,EAAE,+BAA+B;IACpD,kBAAkB,EAAE,+BAA+B;IACnD,kBAAkB,EAAE,8BAA8B;IAClD,aAAa,EAAE,yBAAyB;IACxC,mBAAmB,EAAE,+BAA+B;IACpD,gBAAgB,EAAE,4BAA4B;IAC9C,eAAe,EAAE,0BAA0B;IAC3C,mBAAmB,EAAE,gCAAgC;IACrD,wBAAwB,EAAE,qCAAqC;IAC/D,eAAe,EAAE,2BAA2B;IAC5C,mBAAmB,EAAE,8BAA8B;IACnD,yFAAyF;IACzF,iBAAiB,EAAE,4BAA4B;IAC/C,uBAAuB,EAAE,mCAAmC;IAC5D,uBAAuB,EAAE,mCAAmC;IAC5D,gBAAgB,EAAE,mCAAmC;IACrD,qBAAqB,EAAE,iCAAiC;IACxD,sBAAsB,EAAE,+CAA+C;IACvE,yFAAyF;IACzF,uFAAuF;IACvF,sDAAsD;IACtD,QAAQ,EAAE,kBAAkB;IAC5B,QAAQ,EAAE,kBAAkB;IAC5B,aAAa,EAAE,wBAAwB;IACvC,iBAAiB,EAAE,6BAA6B;IAChD,uFAAuF;IACvF,gDAAgD;IAChD,MAAM,EAAE,gBAAgB;CAChB,CAAC"}
1
+ {"version":3,"file":"hosting-codes.js","sourceRoot":"","sources":["../src/hosting-codes.ts"],"names":[],"mappings":"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"}
@@ -95,12 +95,11 @@ export type HostingCode = (typeof HOSTING_CODE)[keyof typeof HOSTING_CODE];
95
95
  */
96
96
  export declare const CLAP_CORE_REFUSALS: {
97
97
  readonly headlessFailed: "clapHeadlessFailed";
98
- readonly notAudioEffect: "clapNotAudioEffect";
99
98
  readonly noteInput: "clapNoteInput";
100
99
  readonly noAudioInput: "topologyNoAudioInput";
101
100
  readonly noAudioOutput: "topologyNoAudioOutput";
102
101
  readonly widerThanStrip: "topologyWiderThanStrip";
103
- readonly extraInputs: "topologyExtraInputs";
102
+ readonly tooManyPorts: "topologyTooManyPorts";
104
103
  readonly crashedLive: "stabilityCrashedLive";
105
104
  readonly outputNonFinite: "outputNonFinite";
106
105
  };
@@ -67,12 +67,11 @@ export { HOSTING_CODE };
67
67
  */
68
68
  export const CLAP_CORE_REFUSALS = {
69
69
  headlessFailed: "clapHeadlessFailed",
70
- notAudioEffect: "clapNotAudioEffect",
71
70
  noteInput: "clapNoteInput",
72
71
  noAudioInput: "topologyNoAudioInput",
73
72
  noAudioOutput: "topologyNoAudioOutput",
74
73
  widerThanStrip: "topologyWiderThanStrip",
75
- extraInputs: "topologyExtraInputs",
74
+ tooManyPorts: "topologyTooManyPorts",
76
75
  crashedLive: "stabilityCrashedLive",
77
76
  outputNonFinite: "outputNonFinite",
78
77
  };
@@ -82,12 +81,11 @@ export const CLAP_CORE_REFUSALS = {
82
81
  * refusal so the renderer holds no prose. A refusal without a line renders bare.
83
82
  */
84
83
  export const CLAP_CORE_REFUSAL_DESCRIPTIONS = {
85
- notAudioEffect: "the plugin is not an audio effect",
86
84
  noteInput: "the plugin declares a note input the configuration refuses",
87
85
  noAudioInput: "the plugin has no audio input",
88
86
  noAudioOutput: "the plugin has no audio output",
89
87
  widerThanStrip: "the plugin is wider than the strip",
90
- extraInputs: "the plugin has extra inputs, fed silence",
88
+ tooManyPorts: "the plugin has more ports than the auxiliary limit allows",
91
89
  crashedLive: "the plugin crashed live on this rig",
92
90
  outputNonFinite: "the plugin produced non-finite output",
93
91
  };
@@ -384,9 +382,6 @@ instruments = false) {
384
382
  features: missing.join(" "),
385
383
  }));
386
384
  }
387
- if ((features.cvPorts ?? 0) > 0) {
388
- out.push(reason("features", "objective", "unsuitable", HOSTING_CODE.featuresCv));
389
- }
390
385
  }
391
386
  if (descriptor.hasMidiIn && !instruments) {
392
387
  out.push(reason("features", "objective", "conditional", HOSTING_CODE.featuresMidiIn));
@@ -489,7 +484,7 @@ export function hostingTopologyReasons(descriptor, instruments = false) {
489
484
  ];
490
485
  }
491
486
  return [
492
- reason("topology", "objective", "conditional", HOSTING_CODE.topologyExtraInputs, { ins, outs }),
487
+ reason("topology", "objective", "conditional", HOSTING_CODE.topologyTooManyPorts, { ins, outs }),
493
488
  ];
494
489
  }
495
490
  /**
@@ -514,7 +509,7 @@ export function clapTopologyReasons(clap, instruments = false) {
514
509
  return [reason("topology", "objective", "unsuitable", HOSTING_CODE.topologyWiderThanStrip, { ins, outs })];
515
510
  }
516
511
  if (clap.sidechainInputs > 0) {
517
- return [reason("topology", "objective", "unsuitable", HOSTING_CODE.topologyExtraInputs, { ins, outs, sidechains: clap.sidechainInputs })];
512
+ return [reason("topology", "objective", "unsuitable", HOSTING_CODE.topologyTooManyPorts, { ins, outs, sidechains: clap.sidechainInputs })];
518
513
  }
519
514
  return [reason("topology", "objective", "suitable", HOSTING_CODE.topologyMatched, { ins, outs })];
520
515
  }
@@ -562,10 +557,6 @@ export function clapFeatureReasons(clap, profile = OPENMIXER_CONSOLE_PROFILE, sc
562
557
  }
563
558
  const out = [];
564
559
  const offered = profile.clapExtensions;
565
- const kindHosted = clap.features.includes(CLAP_FEATURE_AUDIO_EFFECT) || (profile.instruments && clap.features.includes(CLAP_FEATURE_INSTRUMENT));
566
- if (!kindHosted) {
567
- out.push(reason("features", "objective", "unsuitable", HOSTING_CODE.clapNotAudioEffect, { features: clap.features.join(" ") }));
568
- }
569
560
  if (!clap.headlessOk) {
570
561
  out.push(reason("features", "objective", "unsuitable", HOSTING_CODE.clapHeadlessFailed));
571
562
  }