superacli 1.1.13 → 1.1.14
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/.agents/skills/humanenv-usage/SKILL.md +19 -0
- package/AGENTS.md +62 -0
- package/CONTRIBUTING.md +6 -2
- package/cli/plugin-install-guidance.js +25 -11
- package/cli/plugins-registry.js +25 -6
- package/cli/skills-catalog.js +85 -10
- package/coverage/clover.xml +1073 -965
- package/coverage/lcov-report/cli/adapter-schema.js.html +32 -32
- package/coverage/lcov-report/cli/adapters/builtin.js.html +1 -1
- package/coverage/lcov-report/cli/adapters/http.js.html +1 -1
- package/coverage/lcov-report/cli/adapters/index.html +1 -1
- package/coverage/lcov-report/cli/adapters/mcp.js.html +1 -1
- package/coverage/lcov-report/cli/adapters/openapi.js.html +1 -1
- package/coverage/lcov-report/cli/adapters/process.js.html +1 -1
- package/coverage/lcov-report/cli/adapters/shell.js.html +1 -1
- package/coverage/lcov-report/cli/ask.js.html +1 -1
- package/coverage/lcov-report/cli/config.js.html +109 -109
- package/coverage/lcov-report/cli/discover.js.html +1 -1
- package/coverage/lcov-report/cli/executor.js.html +1 -1
- package/coverage/lcov-report/cli/help-json.js.html +1 -1
- package/coverage/lcov-report/cli/index.html +92 -92
- package/coverage/lcov-report/cli/mcp-diagnostics.js.html +1 -1
- package/coverage/lcov-report/cli/mcp-discovery.js.html +1 -1
- package/coverage/lcov-report/cli/mcp-local.js.html +1 -1
- package/coverage/lcov-report/cli/mcp-stdio-jsonrpc.js.html +1 -1
- package/coverage/lcov-report/cli/namespace-passthrough.js.html +1 -1
- package/coverage/lcov-report/cli/plan-runtime.js.html +1 -1
- package/coverage/lcov-report/cli/planner.js.html +1 -1
- package/coverage/lcov-report/cli/plugin-install-guidance.js.html +919 -877
- package/coverage/lcov-report/cli/plugins-command.js.html +452 -452
- package/coverage/lcov-report/cli/plugins-learn.js.html +60 -60
- package/coverage/lcov-report/cli/plugins-manager.js.html +133 -133
- package/coverage/lcov-report/cli/plugins-registry.js.html +105 -48
- package/coverage/lcov-report/cli/plugins-store.js.html +106 -106
- package/coverage/lcov-report/cli/skills-catalog.js.html +366 -141
- package/coverage/lcov-report/cli/skills-mcp.js.html +1 -1
- package/coverage/lcov-report/cli/skills.js.html +1 -1
- package/coverage/lcov-report/index.html +19 -19
- package/coverage/lcov-report/server/app.js.html +1 -1
- package/coverage/lcov-report/server/index.html +1 -1
- package/coverage/lcov-report/server/routes/ask.js.html +1 -1
- package/coverage/lcov-report/server/routes/commands.js.html +1 -1
- package/coverage/lcov-report/server/routes/config.js.html +1 -1
- package/coverage/lcov-report/server/routes/index.html +1 -1
- package/coverage/lcov-report/server/routes/jobs.js.html +1 -1
- package/coverage/lcov-report/server/routes/mcp.js.html +1 -1
- package/coverage/lcov-report/server/routes/plans.js.html +1 -1
- package/coverage/lcov-report/server/routes/plugins.js.html +1 -1
- package/coverage/lcov-report/server/routes/specs.js.html +1 -1
- package/coverage/lcov-report/server/services/configService.js.html +1 -1
- package/coverage/lcov-report/server/services/index.html +1 -1
- package/coverage/lcov-report/server/services/pluginsService.js.html +1 -1
- package/coverage/lcov-report/server/storage/adapter.js.html +1 -1
- package/coverage/lcov-report/server/storage/file.js.html +1 -1
- package/coverage/lcov-report/server/storage/index.html +1 -1
- package/coverage/lcov-report/server/storage/mongo.js.html +1 -1
- package/coverage/lcov.info +1423 -1120
- package/package.json +1 -1
- package/plugins/beads/install-guidance.json +10 -0
- package/plugins/beads/meta.json +5 -0
- package/plugins/codedb/meta.json +5 -0
- package/plugins/codedb/plugin.json +169 -0
- package/plugins/codedb/skills/quickstart/SKILL.md +65 -0
- package/plugins/humanenv/.agents/skills/humanenv-sdk-python-usage/SKILL.md +37 -0
- package/plugins/humanenv/.agents/skills/humanenv-usage/SKILL.md +32 -0
- package/plugins/humanenv/plugin.json +65 -0
- package/plugins/humanenv/skills/quickstart/SKILL.md +95 -0
- package/plugins/mmx/install-guidance.json +10 -0
- package/plugins/mmx/meta.json +5 -0
- package/plugins/mmx/plugin.json +413 -0
- package/plugins/mmx/skills/quickstart/SKILL.md +234 -0
- package/plugins/plugins.json +21 -9
- package/plugins/rtk/README.md +63 -0
- package/plugins/rtk/plugin.json +79 -0
- package/plugins/rtk/skills/quickstart/SKILL.md +78 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">13.85% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>23/166</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>0/
|
|
35
|
+
<span class='fraction'>0/0</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>0/
|
|
42
|
+
<span class='fraction'>0/9</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">13.85% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>23/166</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -210,8 +210,31 @@
|
|
|
210
210
|
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
211
|
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
212
|
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a
|
|
214
|
-
<
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
233
|
+
<span class="cline-any cline-yes">1x</span>
|
|
234
|
+
<span class="cline-any cline-yes">1x</span>
|
|
235
|
+
<span class="cline-any cline-yes">1x</span>
|
|
236
|
+
<span class="cline-any cline-yes">1x</span>
|
|
237
|
+
<span class="cline-any cline-yes">1x</span>
|
|
215
238
|
<span class="cline-any cline-no"> </span>
|
|
216
239
|
<span class="cline-any cline-no"> </span>
|
|
217
240
|
<span class="cline-any cline-no"> </span>
|
|
@@ -219,6 +242,7 @@
|
|
|
219
242
|
<span class="cline-any cline-no"> </span>
|
|
220
243
|
<span class="cline-any cline-no"> </span>
|
|
221
244
|
<span class="cline-any cline-no"> </span>
|
|
245
|
+
<span class="cline-any cline-yes">1x</span>
|
|
222
246
|
<span class="cline-any cline-no"> </span>
|
|
223
247
|
<span class="cline-any cline-no"> </span>
|
|
224
248
|
<span class="cline-any cline-no"> </span>
|
|
@@ -237,6 +261,7 @@
|
|
|
237
261
|
<span class="cline-any cline-no"> </span>
|
|
238
262
|
<span class="cline-any cline-no"> </span>
|
|
239
263
|
<span class="cline-any cline-no"> </span>
|
|
264
|
+
<span class="cline-any cline-yes">1x</span>
|
|
240
265
|
<span class="cline-any cline-no"> </span>
|
|
241
266
|
<span class="cline-any cline-no"> </span>
|
|
242
267
|
<span class="cline-any cline-no"> </span>
|
|
@@ -250,6 +275,7 @@
|
|
|
250
275
|
<span class="cline-any cline-no"> </span>
|
|
251
276
|
<span class="cline-any cline-no"> </span>
|
|
252
277
|
<span class="cline-any cline-no"> </span>
|
|
278
|
+
<span class="cline-any cline-yes">1x</span>
|
|
253
279
|
<span class="cline-any cline-no"> </span>
|
|
254
280
|
<span class="cline-any cline-no"> </span>
|
|
255
281
|
<span class="cline-any cline-no"> </span>
|
|
@@ -259,6 +285,7 @@
|
|
|
259
285
|
<span class="cline-any cline-no"> </span>
|
|
260
286
|
<span class="cline-any cline-no"> </span>
|
|
261
287
|
<span class="cline-any cline-no"> </span>
|
|
288
|
+
<span class="cline-any cline-yes">1x</span>
|
|
262
289
|
<span class="cline-any cline-no"> </span>
|
|
263
290
|
<span class="cline-any cline-no"> </span>
|
|
264
291
|
<span class="cline-any cline-no"> </span>
|
|
@@ -269,6 +296,7 @@
|
|
|
269
296
|
<span class="cline-any cline-no"> </span>
|
|
270
297
|
<span class="cline-any cline-no"> </span>
|
|
271
298
|
<span class="cline-any cline-no"> </span>
|
|
299
|
+
<span class="cline-any cline-yes">1x</span>
|
|
272
300
|
<span class="cline-any cline-no"> </span>
|
|
273
301
|
<span class="cline-any cline-no"> </span>
|
|
274
302
|
<span class="cline-any cline-no"> </span>
|
|
@@ -311,6 +339,7 @@
|
|
|
311
339
|
<span class="cline-any cline-no"> </span>
|
|
312
340
|
<span class="cline-any cline-no"> </span>
|
|
313
341
|
<span class="cline-any cline-no"> </span>
|
|
342
|
+
<span class="cline-any cline-yes">1x</span>
|
|
314
343
|
<span class="cline-any cline-no"> </span>
|
|
315
344
|
<span class="cline-any cline-no"> </span>
|
|
316
345
|
<span class="cline-any cline-no"> </span>
|
|
@@ -328,6 +357,7 @@
|
|
|
328
357
|
<span class="cline-any cline-no"> </span>
|
|
329
358
|
<span class="cline-any cline-no"> </span>
|
|
330
359
|
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-yes">1x</span>
|
|
331
361
|
<span class="cline-any cline-no"> </span>
|
|
332
362
|
<span class="cline-any cline-no"> </span>
|
|
333
363
|
<span class="cline-any cline-no"> </span>
|
|
@@ -350,28 +380,36 @@
|
|
|
350
380
|
<span class="cline-any cline-no"> </span>
|
|
351
381
|
<span class="cline-any cline-no"> </span>
|
|
352
382
|
<span class="cline-any cline-no"> </span>
|
|
383
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
384
|
<span class="cline-any cline-no"> </span>
|
|
354
385
|
<span class="cline-any cline-no"> </span>
|
|
355
386
|
<span class="cline-any cline-no"> </span>
|
|
356
387
|
<span class="cline-any cline-no"> </span>
|
|
357
388
|
<span class="cline-any cline-no"> </span>
|
|
358
|
-
<span class="cline-any cline-
|
|
359
|
-
<span class="cline-any cline-
|
|
360
|
-
<span class="cline-any cline-
|
|
361
|
-
<span class="
|
|
362
|
-
<span class="
|
|
363
|
-
<span class="
|
|
364
|
-
<span class="
|
|
365
|
-
<span class="
|
|
366
|
-
<span class="
|
|
389
|
+
<span class="cline-any cline-yes">1x</span>
|
|
390
|
+
<span class="cline-any cline-yes">1x</span>
|
|
391
|
+
<span class="cline-any cline-yes">1x</span>
|
|
392
|
+
<span class="cline-any cline-yes">1x</span>
|
|
393
|
+
<span class="cline-any cline-yes">1x</span>
|
|
394
|
+
<span class="cline-any cline-yes">1x</span>
|
|
395
|
+
<span class="cline-any cline-yes">1x</span>
|
|
396
|
+
<span class="cline-any cline-yes">1x</span>
|
|
397
|
+
<span class="cline-any cline-yes">1x</span>
|
|
398
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">const fs = require("fs")
|
|
399
|
+
const path = require("path")
|
|
400
|
+
|
|
401
|
+
const REGISTRY_FILE = path.resolve(__dirname, "..", "plugins", "plugins.json")
|
|
402
|
+
const BUNDLED_PLUGINS_DIR = path.resolve(__dirname, "..", "plugins")
|
|
403
|
+
|
|
404
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function invalid(message) {</span></span>
|
|
367
405
|
<span class="cstat-no" title="statement not covered" > return Object.assign(new Error(message), {</span>
|
|
368
406
|
<span class="cstat-no" title="statement not covered" > code: 85,</span>
|
|
369
407
|
<span class="cstat-no" title="statement not covered" > type: "invalid_argument",</span>
|
|
370
408
|
<span class="cstat-no" title="statement not covered" > recoverable: false</span>
|
|
371
409
|
<span class="cstat-no" title="statement not covered" > })</span>
|
|
372
410
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
373
|
-
|
|
374
|
-
<span class="cstat-no" title="statement not covered" >function readRegistry() {</span>
|
|
411
|
+
|
|
412
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function readRegistry() {</span></span>
|
|
375
413
|
<span class="cstat-no" title="statement not covered" > if (!fs.existsSync(REGISTRY_FILE)) {</span>
|
|
376
414
|
<span class="cstat-no" title="statement not covered" > return { version: 1, plugins: [] }</span>
|
|
377
415
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
@@ -389,8 +427,8 @@
|
|
|
389
427
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
390
428
|
<span class="cstat-no" title="statement not covered" > return parsed</span>
|
|
391
429
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
392
|
-
|
|
393
|
-
<span class="cstat-no" title="statement not covered" >function normalizePlugin(entry) {</span>
|
|
430
|
+
|
|
431
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function normalizePlugin(entry) {</span></span>
|
|
394
432
|
<span class="cstat-no" title="statement not covered" > const source = entry.source && typeof entry.source === "object" ? entry.source : {}</span>
|
|
395
433
|
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
396
434
|
<span class="cstat-no" title="statement not covered" > name: entry.name,</span>
|
|
@@ -403,8 +441,8 @@
|
|
|
403
441
|
<span class="cstat-no" title="statement not covered" > : null,</span>
|
|
404
442
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
405
443
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
406
|
-
|
|
407
|
-
<span class="cstat-no" title="statement not covered" >function readManifest(filePath) {</span>
|
|
444
|
+
|
|
445
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function readManifest(filePath) {</span></span>
|
|
408
446
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
409
447
|
<span class="cstat-no" title="statement not covered" > const parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"))</span>
|
|
410
448
|
<span class="cstat-no" title="statement not covered" > if (!parsed || typeof parsed !== "object" || !parsed.name || !Array.isArray(parsed.commands)) return null</span>
|
|
@@ -413,8 +451,19 @@
|
|
|
413
451
|
<span class="cstat-no" title="statement not covered" > return null</span>
|
|
414
452
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
415
453
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
416
|
-
|
|
417
|
-
<span class="cstat-no" title="statement not covered" >function
|
|
454
|
+
|
|
455
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function readMetaFile(metaPath) {</span></span>
|
|
456
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
457
|
+
<span class="cstat-no" title="statement not covered" > if (!fs.existsSync(metaPath)) return null</span>
|
|
458
|
+
<span class="cstat-no" title="statement not covered" > const parsed = JSON.parse(fs.readFileSync(metaPath, "utf-8"))</span>
|
|
459
|
+
<span class="cstat-no" title="statement not covered" > if (!parsed || typeof parsed !== "object") return null</span>
|
|
460
|
+
<span class="cstat-no" title="statement not covered" > return parsed</span>
|
|
461
|
+
<span class="cstat-no" title="statement not covered" > } catch {</span>
|
|
462
|
+
<span class="cstat-no" title="statement not covered" > return null</span>
|
|
463
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
464
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
465
|
+
|
|
466
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function discoverBundledPlugins() {</span></span>
|
|
418
467
|
<span class="cstat-no" title="statement not covered" > if (!fs.existsSync(BUNDLED_PLUGINS_DIR)) return []</span>
|
|
419
468
|
<span class="cstat-no" title="statement not covered" > let entries</span>
|
|
420
469
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
@@ -431,25 +480,33 @@
|
|
|
431
480
|
<span class="cstat-no" title="statement not covered" > if (!fs.existsSync(manifestPath)) continue</span>
|
|
432
481
|
<span class="cstat-no" title="statement not covered" > const manifest = readManifest(manifestPath)</span>
|
|
433
482
|
<span class="cstat-no" title="statement not covered" > if (!manifest) continue</span>
|
|
483
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
484
|
+
<span class="cstat-no" title="statement not covered" > const metaPath = path.join(BUNDLED_PLUGINS_DIR, entry.name, "meta.json")</span>
|
|
485
|
+
<span class="cstat-no" title="statement not covered" > const meta = readMetaFile(metaPath)</span>
|
|
486
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
434
487
|
<span class="cstat-no" title="statement not covered" > plugins.push({</span>
|
|
435
488
|
<span class="cstat-no" title="statement not covered" > name: manifest.name,</span>
|
|
436
|
-
<span class="cstat-no" title="statement not covered" > description: manifest.description || "",</span>
|
|
437
|
-
<span class="cstat-no" title="statement not covered" > tags: Array.isArray(
|
|
489
|
+
<span class="cstat-no" title="statement not covered" > description: meta && typeof meta.description === "string" ? meta.description : (manifest.description || ""),</span>
|
|
490
|
+
<span class="cstat-no" title="statement not covered" > tags: meta && Array.isArray(meta.tags) ? meta.tags : (Array.isArray(manifest.tags) ? manifest.tags : []),</span>
|
|
438
491
|
<span class="cstat-no" title="statement not covered" > source: {</span>
|
|
439
492
|
<span class="cstat-no" title="statement not covered" > type: "bundled",</span>
|
|
440
493
|
<span class="cstat-no" title="statement not covered" > manifest_path: path.relative(path.resolve(__dirname, ".."), manifestPath).replace(/\\/g, "/")</span>
|
|
441
494
|
<span class="cstat-no" title="statement not covered" > },</span>
|
|
442
|
-
<span class="cstat-no" title="statement not covered" > has_learn:
|
|
443
|
-
<span class="cstat-no" title="statement not covered" >
|
|
444
|
-
<span class="cstat-no" title="statement not covered" >
|
|
445
|
-
<span class="cstat-no" title="statement not covered" >
|
|
495
|
+
<span class="cstat-no" title="statement not covered" > has_learn: meta && meta.has_learn === true</span>
|
|
496
|
+
<span class="cstat-no" title="statement not covered" > ? true</span>
|
|
497
|
+
<span class="cstat-no" title="statement not covered" > : (!!manifest.learn),</span>
|
|
498
|
+
<span class="cstat-no" title="statement not covered" > install_guidance: meta && meta.install_guidance && typeof meta.install_guidance === "object"</span>
|
|
499
|
+
<span class="cstat-no" title="statement not covered" > ? meta.install_guidance</span>
|
|
500
|
+
<span class="cstat-no" title="statement not covered" > : (manifest.install_guidance && typeof manifest.install_guidance === "object"</span>
|
|
501
|
+
<span class="cstat-no" title="statement not covered" > ? manifest.install_guidance</span>
|
|
502
|
+
<span class="cstat-no" title="statement not covered" > : null),</span>
|
|
446
503
|
<span class="cstat-no" title="statement not covered" > })</span>
|
|
447
504
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
448
505
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
449
506
|
<span class="cstat-no" title="statement not covered" > return plugins</span>
|
|
450
507
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
451
|
-
|
|
452
|
-
<span class="cstat-no" title="statement not covered" >function mergedRegistryPlugins() {</span>
|
|
508
|
+
|
|
509
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function mergedRegistryPlugins() {</span></span>
|
|
453
510
|
<span class="cstat-no" title="statement not covered" > const registry = readRegistry()</span>
|
|
454
511
|
<span class="cstat-no" title="statement not covered" > const discovered = discoverBundledPlugins()</span>
|
|
455
512
|
<span class="cstat-no" title="statement not covered" > const merged = new Map()</span>
|
|
@@ -466,8 +523,8 @@
|
|
|
466
523
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
467
524
|
<span class="cstat-no" title="statement not covered" > return Array.from(merged.values())</span>
|
|
468
525
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
469
|
-
|
|
470
|
-
<span class="cstat-no" title="statement not covered" >function listRegistryPlugins(filters = {}) {</span>
|
|
526
|
+
|
|
527
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function listRegistryPlugins(filters = {}) {</span></span>
|
|
471
528
|
<span class="cstat-no" title="statement not covered" > const nameQuery = (filters.name || "").toLowerCase().trim()</span>
|
|
472
529
|
<span class="cstat-no" title="statement not covered" > const tagQueries = (filters.tags || [])</span>
|
|
473
530
|
<span class="cstat-no" title="statement not covered" > .map(t => String(t || "").toLowerCase().trim())</span>
|
|
@@ -489,21 +546,21 @@
|
|
|
489
546
|
<span class="cstat-no" title="statement not covered" > return true</span>
|
|
490
547
|
<span class="cstat-no" title="statement not covered" > })</span>
|
|
491
548
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
492
|
-
|
|
493
|
-
<span class="cstat-no" title="statement not covered" >function getRegistryPlugin(name) {</span>
|
|
549
|
+
|
|
550
|
+
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getRegistryPlugin(name) {</span></span>
|
|
494
551
|
<span class="cstat-no" title="statement not covered" > const lower = String(name || "").toLowerCase()</span>
|
|
495
552
|
<span class="cstat-no" title="statement not covered" > if (!lower) return null</span>
|
|
496
553
|
<span class="cstat-no" title="statement not covered" > return mergedRegistryPlugins().find(p => String(p.name || "").toLowerCase() === lower) || null</span>
|
|
497
554
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
555
|
+
|
|
556
|
+
module.exports = {
|
|
557
|
+
REGISTRY_FILE,
|
|
558
|
+
BUNDLED_PLUGINS_DIR,
|
|
559
|
+
readRegistry,
|
|
560
|
+
discoverBundledPlugins,
|
|
561
|
+
listRegistryPlugins,
|
|
562
|
+
getRegistryPlugin
|
|
563
|
+
}
|
|
507
564
|
</pre></td></tr></table></pre>
|
|
508
565
|
|
|
509
566
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -511,7 +568,7 @@
|
|
|
511
568
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
512
569
|
Code coverage generated by
|
|
513
570
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
514
|
-
at 2026-
|
|
571
|
+
at 2026-04-10T17:55:25.401Z
|
|
515
572
|
</div>
|
|
516
573
|
<script src="../prettify.js"></script>
|
|
517
574
|
<script>
|