@openmixer/plugin-qualify 0.10.1 → 0.11.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.
Files changed (69) hide show
  1. package/README.md +46 -10
  2. package/bin/plugin-qualify.mjs +61 -28
  3. package/dist/clap-loader.d.ts +1 -1
  4. package/dist/clap-loader.js +3 -3
  5. package/dist/clap-loader.js.map +1 -1
  6. package/dist/clap-qualify.d.ts +0 -47
  7. package/dist/clap-qualify.js +2 -88
  8. package/dist/clap-qualify.js.map +1 -1
  9. package/dist/cost-fields.d.ts +26 -0
  10. package/dist/cost-fields.js +30 -0
  11. package/dist/cost-fields.js.map +1 -1
  12. package/dist/hosting-codes.d.ts +1 -0
  13. package/dist/hosting-codes.js +1 -0
  14. package/dist/hosting-codes.js.map +1 -1
  15. package/dist/hosting-suitability.d.ts +11 -1
  16. package/dist/hosting-suitability.js +11 -2
  17. package/dist/hosting-suitability.js.map +1 -1
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.js +5 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/judge-cli.d.ts +41 -0
  22. package/dist/judge-cli.js +114 -0
  23. package/dist/judge-cli.js.map +1 -0
  24. package/dist/measurement/probe-json.js +1 -0
  25. package/dist/measurement/probe-json.js.map +1 -1
  26. package/dist/measurement/vocabulary.js +6 -0
  27. package/dist/measurement/vocabulary.js.map +1 -1
  28. package/dist/probe-judge.d.ts +60 -0
  29. package/dist/probe-judge.js +213 -0
  30. package/dist/probe-judge.js.map +1 -0
  31. package/dist/probe-output-fixtures.d.ts +25 -0
  32. package/dist/probe-output-fixtures.js +134 -0
  33. package/dist/probe-output-fixtures.js.map +1 -0
  34. package/dist/probe-output.d.ts +150 -0
  35. package/dist/probe-output.js +369 -0
  36. package/dist/probe-output.js.map +1 -0
  37. package/dist/probe-runner.d.ts +79 -0
  38. package/dist/probe-runner.js +191 -0
  39. package/dist/probe-runner.js.map +1 -0
  40. package/dist/qualification-record.d.ts +80 -0
  41. package/dist/qualification-record.js +85 -0
  42. package/dist/qualification-record.js.map +1 -0
  43. package/dist/qualify-cli.js +1 -1
  44. package/dist/qualify-cli.js.map +1 -1
  45. package/dist/qualify-declarations.d.ts +11 -2
  46. package/dist/qualify-declarations.js +14 -4
  47. package/dist/qualify-declarations.js.map +1 -1
  48. package/fixtures/clap-scan/fake.json +30 -6
  49. package/fixtures/probe-output/memory-limit-refused.json +190 -0
  50. package/fixtures/probe-output/plugin-crash.json +236 -0
  51. package/fixtures/probe-output/success-msi.json +363 -0
  52. package/package.json +5 -1
  53. package/src/clap-loader.ts +3 -2
  54. package/src/clap-qualify.ts +2 -133
  55. package/src/cost-fields.ts +39 -0
  56. package/src/hosting-codes.ts +1 -0
  57. package/src/hosting-suitability.ts +21 -3
  58. package/src/index.ts +5 -0
  59. package/src/judge-cli.ts +133 -0
  60. package/src/measurement/probe-json.ts +1 -0
  61. package/src/measurement/vocabulary.ts +7 -0
  62. package/src/probe-judge.ts +264 -0
  63. package/src/probe-output-fixtures.ts +146 -0
  64. package/src/probe-output.ts +505 -0
  65. package/src/probe-runner.ts +244 -0
  66. package/src/qualification-record.ts +142 -0
  67. package/src/qualify-cli.ts +1 -1
  68. package/src/qualify-declarations.ts +16 -4
  69. package/tools/benchmark.py +12 -0
@@ -0,0 +1,190 @@
1
+ {
2
+ "format": "plugin-hostd.probe-output",
3
+ "formatVersion": "1.0",
4
+ "run": {
5
+ "id": "r1-20261017T232540Z-652b62e",
6
+ "startedAt": "2026-10-17T23:25:40+02:00",
7
+ "elapsedMs": 2310,
8
+ "complete": false,
9
+ "outcome": "probe.memory-limit",
10
+ "reason": "add",
11
+ "protocol": {
12
+ "name": "plugin-hostd.probe-protocol",
13
+ "version": 1
14
+ },
15
+ "tools": {
16
+ "runner": "plugin-hostd-probe 0.1.0",
17
+ "child": "plugin-hostd-probe-clap 0.1.0",
18
+ "clapCore": "0.9.0",
19
+ "interposer": "rt-interpose 1"
20
+ },
21
+ "via": "daemon"
22
+ },
23
+ "plugin": {
24
+ "format": "clap",
25
+ "id": "org.example.big-sampler",
26
+ "name": "Big Sampler",
27
+ "vendor": "Example",
28
+ "version": "3.0.1"
29
+ },
30
+ "binary": {
31
+ "path": "/home/op/.clap/big-sampler.clap",
32
+ "sha256": "652b62e0660ed65b624e9ef595a10ed43bd19021ed5a455d6f948f1308f1c849",
33
+ "files": [
34
+ {
35
+ "path": "big-sampler.clap",
36
+ "sha256": "652b62e0660ed65b624e9ef595a10ed43bd19021ed5a455d6f948f1308f1c849"
37
+ }
38
+ ],
39
+ "layout": {
40
+ "scheme": "omx-layout/1",
41
+ "sha256": "37da45a15b9e009c001c4110c32fc534cfd1e7e4b5dd81d8de1ac6c53d8af4b0"
42
+ }
43
+ },
44
+ "machine": {
45
+ "class": {
46
+ "arch": "x86_64",
47
+ "family": "amd",
48
+ "coreBand": "9-16",
49
+ "clockBand": "3.5-4.5GHz",
50
+ "preemptRt": false,
51
+ "cstatesLimited": true
52
+ },
53
+ "profile": {
54
+ "governor": "performance",
55
+ "turbo": true,
56
+ "smt": true,
57
+ "preempt": "PREEMPT_DYNAMIC",
58
+ "cpuidle": [
59
+ {
60
+ "cpu": 11,
61
+ "state": "POLL",
62
+ "latencyUs": 0,
63
+ "disabled": false,
64
+ "usageDelta": 0
65
+ },
66
+ {
67
+ "cpu": 11,
68
+ "state": "C1_ACPI",
69
+ "latencyUs": 1,
70
+ "disabled": false,
71
+ "usageDelta": 9
72
+ },
73
+ {
74
+ "cpu": 11,
75
+ "state": "C2_ACPI",
76
+ "latencyUs": 127,
77
+ "disabled": true,
78
+ "usageDelta": 0
79
+ }
80
+ ],
81
+ "meetsProtocol": true
82
+ },
83
+ "pinnedCpus": "11"
84
+ },
85
+ "offer": {
86
+ "id": "omx-clap-host",
87
+ "clapExtensions": [
88
+ "clap.audio-ports",
89
+ "clap.latency",
90
+ "clap.log",
91
+ "clap.params",
92
+ "clap.state",
93
+ "clap.thread-check",
94
+ "clap.preset-load/2",
95
+ "clap.track-info/1",
96
+ "clap.remote-controls/2"
97
+ ],
98
+ "realtime": "none"
99
+ },
100
+ "limits": {
101
+ "set": "default",
102
+ "applied": [
103
+ {
104
+ "limit": "wall-clock",
105
+ "value": 600,
106
+ "unit": "s",
107
+ "by": "supervisor"
108
+ },
109
+ {
110
+ "limit": "cpu-time",
111
+ "value": 540,
112
+ "unit": "s",
113
+ "by": "rlimit"
114
+ },
115
+ {
116
+ "limit": "memory",
117
+ "value": 2147483648,
118
+ "unit": "bytes",
119
+ "by": "cgroup"
120
+ },
121
+ {
122
+ "limit": "tasks",
123
+ "value": 64,
124
+ "unit": "count",
125
+ "by": "cgroup"
126
+ },
127
+ {
128
+ "limit": "core-dump",
129
+ "value": 0,
130
+ "unit": "bytes",
131
+ "by": "rlimit"
132
+ },
133
+ {
134
+ "limit": "cpus",
135
+ "value": "11",
136
+ "by": "affinity"
137
+ },
138
+ {
139
+ "limit": "no-new-privs",
140
+ "by": "prctl"
141
+ },
142
+ {
143
+ "limit": "network",
144
+ "value": "none",
145
+ "by": "netns"
146
+ }
147
+ ],
148
+ "unavailable": [
149
+ {
150
+ "limit": "filesystem",
151
+ "code": "probe.limit.landlock-absent"
152
+ }
153
+ ]
154
+ },
155
+ "steps": [
156
+ {
157
+ "step": "hash",
158
+ "outcome": "probe.ok",
159
+ "elapsedMs": 9
160
+ },
161
+ {
162
+ "step": "instantiate",
163
+ "outcome": "probe.memory-limit",
164
+ "elapsedMs": 2280,
165
+ "signal": "SIGKILL",
166
+ "limit": "memory",
167
+ "detail": "memory.events oom_kill 0 -> 1 while init() ran"
168
+ }
169
+ ],
170
+ "behaviour": {
171
+ "memory": {
172
+ "rssStartKb": 8800,
173
+ "peakBytes": 2147479552
174
+ }
175
+ },
176
+ "logs": [
177
+ {
178
+ "name": "stderr",
179
+ "path": "probes/org.example.big-sampler@3.0.1-652b62e0660e.stderr.log",
180
+ "sha256": "f25743e01a8d2faa127a86adc728bf034cb23a158ec792ee9a43c5c2cfad4aab",
181
+ "bytes": 96
182
+ },
183
+ {
184
+ "name": "memory.events",
185
+ "path": "probes/org.example.big-sampler@3.0.1-652b62e0660e.memory.events",
186
+ "sha256": "fb7a4ca6b19e56a9d72a8e3a411fac55c0adc0963466e6c29f0b89319eb4795c",
187
+ "bytes": 84
188
+ }
189
+ ]
190
+ }
@@ -0,0 +1,236 @@
1
+ {
2
+ "format": "plugin-hostd.probe-output",
3
+ "formatVersion": "1.0",
4
+ "run": {
5
+ "id": "r1-20261017T231004Z-0b858f1",
6
+ "startedAt": "2026-10-17T23:10:04+02:00",
7
+ "elapsedMs": 6120,
8
+ "complete": false,
9
+ "outcome": "probe.crashed",
10
+ "reason": "add",
11
+ "protocol": {
12
+ "name": "plugin-hostd.probe-protocol",
13
+ "version": 1
14
+ },
15
+ "tools": {
16
+ "runner": "plugin-hostd-probe 0.1.0",
17
+ "child": "plugin-hostd-probe-lv2 0.1.0",
18
+ "clapCore": "0.9.0",
19
+ "interposer": "rt-interpose 1"
20
+ },
21
+ "via": "daemon"
22
+ },
23
+ "plugin": {
24
+ "format": "lv2",
25
+ "id": "urn:example:zero-path",
26
+ "name": "zero-path",
27
+ "version": "0.0"
28
+ },
29
+ "binary": {
30
+ "path": "/home/op/.lv2/zero-path.lv2",
31
+ "sha256": "0b858f1f53d802872c1b34d298b0ae4c81f5c1b51f5488f72a673fca54afeeb5",
32
+ "files": [
33
+ {
34
+ "path": "manifest.ttl",
35
+ "sha256": "13038d7cea17afef4cfe3833884c73a0db990a60d35b49cf2589f8f139f00cbc"
36
+ },
37
+ {
38
+ "path": "zero-path.so",
39
+ "sha256": "0b858f1f53d802872c1b34d298b0ae4c81f5c1b51f5488f72a673fca54afeeb5"
40
+ },
41
+ {
42
+ "path": "zero-path.ttl",
43
+ "sha256": "a364f60c8ef436a160fc139c1575435d5653f70a4267bd08feb4f36782b61535"
44
+ }
45
+ ],
46
+ "layout": {
47
+ "scheme": "omx-layout/1",
48
+ "sha256": "8a66be4f19b6e12130e4a9f314b11a8485a5a9c4b7ef3d3b4117a176cde89f0e"
49
+ }
50
+ },
51
+ "machine": {
52
+ "class": {
53
+ "arch": "x86_64",
54
+ "family": "amd",
55
+ "coreBand": "9-16",
56
+ "clockBand": "3.5-4.5GHz",
57
+ "preemptRt": false,
58
+ "cstatesLimited": false
59
+ },
60
+ "profile": {
61
+ "governor": "powersave",
62
+ "turbo": true,
63
+ "smt": true,
64
+ "preempt": "PREEMPT_DYNAMIC",
65
+ "cpuidle": [
66
+ {
67
+ "cpu": 11,
68
+ "state": "POLL",
69
+ "latencyUs": 0,
70
+ "disabled": false,
71
+ "usageDelta": 3
72
+ },
73
+ {
74
+ "cpu": 11,
75
+ "state": "C1_ACPI",
76
+ "latencyUs": 1,
77
+ "disabled": false,
78
+ "usageDelta": 812
79
+ },
80
+ {
81
+ "cpu": 11,
82
+ "state": "C2_ACPI",
83
+ "latencyUs": 127,
84
+ "disabled": false,
85
+ "usageDelta": 95
86
+ }
87
+ ],
88
+ "meetsProtocol": false,
89
+ "unmet": [
90
+ "probe.profile.governor",
91
+ "probe.profile.deep-idle-entered"
92
+ ]
93
+ },
94
+ "pinnedCpus": "11",
95
+ "local": {
96
+ "hostname": "studio",
97
+ "kernel": "7.2.9-201.fc44.x86_64"
98
+ }
99
+ },
100
+ "offer": {
101
+ "id": "omx-console-lv2",
102
+ "lv2Features": [
103
+ "http://lv2plug.in/ns/ext/urid#map",
104
+ "http://lv2plug.in/ns/ext/urid#unmap",
105
+ "http://lv2plug.in/ns/ext/options#options",
106
+ "http://lv2plug.in/ns/ext/buf-size#boundedBlockLength",
107
+ "http://lv2plug.in/ns/ext/worker#schedule",
108
+ "http://lv2plug.in/ns/ext/log#log"
109
+ ],
110
+ "realtime": "none"
111
+ },
112
+ "limits": {
113
+ "set": "default",
114
+ "applied": [
115
+ {
116
+ "limit": "wall-clock",
117
+ "value": 600,
118
+ "unit": "s",
119
+ "by": "supervisor"
120
+ },
121
+ {
122
+ "limit": "cpu-time",
123
+ "value": 540,
124
+ "unit": "s",
125
+ "by": "rlimit"
126
+ },
127
+ {
128
+ "limit": "memory",
129
+ "value": 2147483648,
130
+ "unit": "bytes",
131
+ "by": "cgroup"
132
+ },
133
+ {
134
+ "limit": "tasks",
135
+ "value": 64,
136
+ "unit": "count",
137
+ "by": "cgroup"
138
+ },
139
+ {
140
+ "limit": "core-dump",
141
+ "value": 0,
142
+ "unit": "bytes",
143
+ "by": "rlimit"
144
+ },
145
+ {
146
+ "limit": "cpus",
147
+ "value": "11",
148
+ "by": "affinity"
149
+ },
150
+ {
151
+ "limit": "no-new-privs",
152
+ "by": "prctl"
153
+ },
154
+ {
155
+ "limit": "network",
156
+ "value": "none",
157
+ "by": "netns"
158
+ },
159
+ {
160
+ "limit": "filesystem",
161
+ "value": "read-only except probe_dir",
162
+ "by": "landlock"
163
+ }
164
+ ],
165
+ "unavailable": []
166
+ },
167
+ "steps": [
168
+ {
169
+ "step": "hash",
170
+ "outcome": "probe.ok",
171
+ "elapsedMs": 2
172
+ },
173
+ {
174
+ "step": "instantiate",
175
+ "outcome": "probe.ok",
176
+ "elapsedMs": 12
177
+ },
178
+ {
179
+ "step": "lifecycle",
180
+ "outcome": "probe.ok",
181
+ "elapsedMs": 940
182
+ },
183
+ {
184
+ "step": "latency",
185
+ "rate": 48000,
186
+ "quantum": 128,
187
+ "outcome": "probe.ok",
188
+ "elapsedMs": 88
189
+ },
190
+ {
191
+ "step": "rt-safety",
192
+ "rate": 48000,
193
+ "quantum": 128,
194
+ "outcome": "probe.crashed",
195
+ "elapsedMs": 41,
196
+ "signal": "SIGSEGV",
197
+ "detail": "died during the control sweep, control 'path'"
198
+ }
199
+ ],
200
+ "grid": [
201
+ {
202
+ "rate": 48000,
203
+ "quantum": 128,
204
+ "outcome": "probe.crashed",
205
+ "latency": {
206
+ "declaredFrames": 0,
207
+ "measuredFrames": 0,
208
+ "method": "impulse-onset"
209
+ }
210
+ }
211
+ ],
212
+ "behaviour": {
213
+ "lifecycle": {
214
+ "cycles": 30,
215
+ "instantiated": 30,
216
+ "failed": 0
217
+ },
218
+ "threads": {
219
+ "before": 2,
220
+ "afterFirstInstantiate": 2,
221
+ "afterAllFreed": 2
222
+ }
223
+ },
224
+ "crash": {
225
+ "signal": "SIGSEGV",
226
+ "frameObject": "zero-path.so"
227
+ },
228
+ "logs": [
229
+ {
230
+ "name": "stderr",
231
+ "path": "probes/urn_example_zero-path@0.0-0b858f1f53d8.stderr.log",
232
+ "sha256": "73aaa5071d9f861550d51469cbd89e0a6e5371486fd94c9675281d1cefbd5117",
233
+ "bytes": 1840
234
+ }
235
+ ]
236
+ }