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.
Files changed (75) hide show
  1. package/.agents/skills/humanenv-usage/SKILL.md +19 -0
  2. package/AGENTS.md +62 -0
  3. package/CONTRIBUTING.md +6 -2
  4. package/cli/plugin-install-guidance.js +25 -11
  5. package/cli/plugins-registry.js +25 -6
  6. package/cli/skills-catalog.js +85 -10
  7. package/coverage/clover.xml +1073 -965
  8. package/coverage/lcov-report/cli/adapter-schema.js.html +32 -32
  9. package/coverage/lcov-report/cli/adapters/builtin.js.html +1 -1
  10. package/coverage/lcov-report/cli/adapters/http.js.html +1 -1
  11. package/coverage/lcov-report/cli/adapters/index.html +1 -1
  12. package/coverage/lcov-report/cli/adapters/mcp.js.html +1 -1
  13. package/coverage/lcov-report/cli/adapters/openapi.js.html +1 -1
  14. package/coverage/lcov-report/cli/adapters/process.js.html +1 -1
  15. package/coverage/lcov-report/cli/adapters/shell.js.html +1 -1
  16. package/coverage/lcov-report/cli/ask.js.html +1 -1
  17. package/coverage/lcov-report/cli/config.js.html +109 -109
  18. package/coverage/lcov-report/cli/discover.js.html +1 -1
  19. package/coverage/lcov-report/cli/executor.js.html +1 -1
  20. package/coverage/lcov-report/cli/help-json.js.html +1 -1
  21. package/coverage/lcov-report/cli/index.html +92 -92
  22. package/coverage/lcov-report/cli/mcp-diagnostics.js.html +1 -1
  23. package/coverage/lcov-report/cli/mcp-discovery.js.html +1 -1
  24. package/coverage/lcov-report/cli/mcp-local.js.html +1 -1
  25. package/coverage/lcov-report/cli/mcp-stdio-jsonrpc.js.html +1 -1
  26. package/coverage/lcov-report/cli/namespace-passthrough.js.html +1 -1
  27. package/coverage/lcov-report/cli/plan-runtime.js.html +1 -1
  28. package/coverage/lcov-report/cli/planner.js.html +1 -1
  29. package/coverage/lcov-report/cli/plugin-install-guidance.js.html +919 -877
  30. package/coverage/lcov-report/cli/plugins-command.js.html +452 -452
  31. package/coverage/lcov-report/cli/plugins-learn.js.html +60 -60
  32. package/coverage/lcov-report/cli/plugins-manager.js.html +133 -133
  33. package/coverage/lcov-report/cli/plugins-registry.js.html +105 -48
  34. package/coverage/lcov-report/cli/plugins-store.js.html +106 -106
  35. package/coverage/lcov-report/cli/skills-catalog.js.html +366 -141
  36. package/coverage/lcov-report/cli/skills-mcp.js.html +1 -1
  37. package/coverage/lcov-report/cli/skills.js.html +1 -1
  38. package/coverage/lcov-report/index.html +19 -19
  39. package/coverage/lcov-report/server/app.js.html +1 -1
  40. package/coverage/lcov-report/server/index.html +1 -1
  41. package/coverage/lcov-report/server/routes/ask.js.html +1 -1
  42. package/coverage/lcov-report/server/routes/commands.js.html +1 -1
  43. package/coverage/lcov-report/server/routes/config.js.html +1 -1
  44. package/coverage/lcov-report/server/routes/index.html +1 -1
  45. package/coverage/lcov-report/server/routes/jobs.js.html +1 -1
  46. package/coverage/lcov-report/server/routes/mcp.js.html +1 -1
  47. package/coverage/lcov-report/server/routes/plans.js.html +1 -1
  48. package/coverage/lcov-report/server/routes/plugins.js.html +1 -1
  49. package/coverage/lcov-report/server/routes/specs.js.html +1 -1
  50. package/coverage/lcov-report/server/services/configService.js.html +1 -1
  51. package/coverage/lcov-report/server/services/index.html +1 -1
  52. package/coverage/lcov-report/server/services/pluginsService.js.html +1 -1
  53. package/coverage/lcov-report/server/storage/adapter.js.html +1 -1
  54. package/coverage/lcov-report/server/storage/file.js.html +1 -1
  55. package/coverage/lcov-report/server/storage/index.html +1 -1
  56. package/coverage/lcov-report/server/storage/mongo.js.html +1 -1
  57. package/coverage/lcov.info +1423 -1120
  58. package/package.json +1 -1
  59. package/plugins/beads/install-guidance.json +10 -0
  60. package/plugins/beads/meta.json +5 -0
  61. package/plugins/codedb/meta.json +5 -0
  62. package/plugins/codedb/plugin.json +169 -0
  63. package/plugins/codedb/skills/quickstart/SKILL.md +65 -0
  64. package/plugins/humanenv/.agents/skills/humanenv-sdk-python-usage/SKILL.md +37 -0
  65. package/plugins/humanenv/.agents/skills/humanenv-usage/SKILL.md +32 -0
  66. package/plugins/humanenv/plugin.json +65 -0
  67. package/plugins/humanenv/skills/quickstart/SKILL.md +95 -0
  68. package/plugins/mmx/install-guidance.json +10 -0
  69. package/plugins/mmx/meta.json +5 -0
  70. package/plugins/mmx/plugin.json +413 -0
  71. package/plugins/mmx/skills/quickstart/SKILL.md +234 -0
  72. package/plugins/plugins.json +21 -9
  73. package/plugins/rtk/README.md +63 -0
  74. package/plugins/rtk/plugin.json +79 -0
  75. 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">0% </span>
26
+ <span class="strong">11.86% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/177</span>
28
+ <span class='fraction'>21/177</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
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/1</span>
42
+ <span class='fraction'>0/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">11.86% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/177</span>
49
+ <span class='fraction'>21/177</span>
50
50
  </div>
51
51
 
52
52
 
@@ -240,22 +240,13 @@
240
240
  <a name='L175'></a><a href='#L175'>175</a>
241
241
  <a name='L176'></a><a href='#L176'>176</a>
242
242
  <a name='L177'></a><a href='#L177'>177</a>
243
- <a name='L178'></a><a href='#L178'>178</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
244
- <span class="cline-any cline-no">&nbsp;</span>
245
- <span class="cline-any cline-no">&nbsp;</span>
246
- <span class="cline-any cline-no">&nbsp;</span>
247
- <span class="cline-any cline-no">&nbsp;</span>
248
- <span class="cline-any cline-no">&nbsp;</span>
249
- <span class="cline-any cline-no">&nbsp;</span>
250
- <span class="cline-any cline-no">&nbsp;</span>
251
- <span class="cline-any cline-no">&nbsp;</span>
252
- <span class="cline-any cline-no">&nbsp;</span>
253
- <span class="cline-any cline-no">&nbsp;</span>
254
- <span class="cline-any cline-no">&nbsp;</span>
255
- <span class="cline-any cline-no">&nbsp;</span>
256
- <span class="cline-any cline-no">&nbsp;</span>
257
- <span class="cline-any cline-no">&nbsp;</span>
258
- <span class="cline-any cline-no">&nbsp;</span>
243
+ <a name='L178'></a><a href='#L178'>178</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
244
+ <span class="cline-any cline-yes">1x</span>
245
+ <span class="cline-any cline-yes">1x</span>
246
+ <span class="cline-any cline-yes">1x</span>
247
+ <span class="cline-any cline-yes">1x</span>
248
+ <span class="cline-any cline-yes">1x</span>
249
+ <span class="cline-any cline-yes">1x</span>
259
250
  <span class="cline-any cline-no">&nbsp;</span>
260
251
  <span class="cline-any cline-no">&nbsp;</span>
261
252
  <span class="cline-any cline-no">&nbsp;</span>
@@ -263,6 +254,7 @@
263
254
  <span class="cline-any cline-no">&nbsp;</span>
264
255
  <span class="cline-any cline-no">&nbsp;</span>
265
256
  <span class="cline-any cline-no">&nbsp;</span>
257
+ <span class="cline-any cline-yes">1x</span>
266
258
  <span class="cline-any cline-no">&nbsp;</span>
267
259
  <span class="cline-any cline-no">&nbsp;</span>
268
260
  <span class="cline-any cline-no">&nbsp;</span>
@@ -271,6 +263,7 @@
271
263
  <span class="cline-any cline-no">&nbsp;</span>
272
264
  <span class="cline-any cline-no">&nbsp;</span>
273
265
  <span class="cline-any cline-no">&nbsp;</span>
266
+ <span class="cline-any cline-yes">1x</span>
274
267
  <span class="cline-any cline-no">&nbsp;</span>
275
268
  <span class="cline-any cline-no">&nbsp;</span>
276
269
  <span class="cline-any cline-no">&nbsp;</span>
@@ -279,6 +272,7 @@
279
272
  <span class="cline-any cline-no">&nbsp;</span>
280
273
  <span class="cline-any cline-no">&nbsp;</span>
281
274
  <span class="cline-any cline-no">&nbsp;</span>
275
+ <span class="cline-any cline-yes">1x</span>
282
276
  <span class="cline-any cline-no">&nbsp;</span>
283
277
  <span class="cline-any cline-no">&nbsp;</span>
284
278
  <span class="cline-any cline-no">&nbsp;</span>
@@ -286,9 +280,11 @@
286
280
  <span class="cline-any cline-no">&nbsp;</span>
287
281
  <span class="cline-any cline-no">&nbsp;</span>
288
282
  <span class="cline-any cline-no">&nbsp;</span>
283
+ <span class="cline-any cline-yes">1x</span>
289
284
  <span class="cline-any cline-no">&nbsp;</span>
290
285
  <span class="cline-any cline-no">&nbsp;</span>
291
286
  <span class="cline-any cline-no">&nbsp;</span>
287
+ <span class="cline-any cline-yes">1x</span>
292
288
  <span class="cline-any cline-no">&nbsp;</span>
293
289
  <span class="cline-any cline-no">&nbsp;</span>
294
290
  <span class="cline-any cline-no">&nbsp;</span>
@@ -325,6 +321,7 @@
325
321
  <span class="cline-any cline-no">&nbsp;</span>
326
322
  <span class="cline-any cline-no">&nbsp;</span>
327
323
  <span class="cline-any cline-no">&nbsp;</span>
324
+ <span class="cline-any cline-yes">1x</span>
328
325
  <span class="cline-any cline-no">&nbsp;</span>
329
326
  <span class="cline-any cline-no">&nbsp;</span>
330
327
  <span class="cline-any cline-no">&nbsp;</span>
@@ -353,6 +350,7 @@
353
350
  <span class="cline-any cline-no">&nbsp;</span>
354
351
  <span class="cline-any cline-no">&nbsp;</span>
355
352
  <span class="cline-any cline-no">&nbsp;</span>
353
+ <span class="cline-any cline-yes">1x</span>
356
354
  <span class="cline-any cline-no">&nbsp;</span>
357
355
  <span class="cline-any cline-no">&nbsp;</span>
358
356
  <span class="cline-any cline-no">&nbsp;</span>
@@ -373,6 +371,7 @@
373
371
  <span class="cline-any cline-no">&nbsp;</span>
374
372
  <span class="cline-any cline-no">&nbsp;</span>
375
373
  <span class="cline-any cline-no">&nbsp;</span>
374
+ <span class="cline-any cline-yes">1x</span>
376
375
  <span class="cline-any cline-no">&nbsp;</span>
377
376
  <span class="cline-any cline-no">&nbsp;</span>
378
377
  <span class="cline-any cline-no">&nbsp;</span>
@@ -395,6 +394,7 @@
395
394
  <span class="cline-any cline-no">&nbsp;</span>
396
395
  <span class="cline-any cline-no">&nbsp;</span>
397
396
  <span class="cline-any cline-no">&nbsp;</span>
397
+ <span class="cline-any cline-yes">1x</span>
398
398
  <span class="cline-any cline-no">&nbsp;</span>
399
399
  <span class="cline-any cline-no">&nbsp;</span>
400
400
  <span class="cline-any cline-no">&nbsp;</span>
@@ -412,27 +412,27 @@
412
412
  <span class="cline-any cline-no">&nbsp;</span>
413
413
  <span class="cline-any cline-no">&nbsp;</span>
414
414
  <span class="cline-any cline-no">&nbsp;</span>
415
- <span class="cline-any cline-no">&nbsp;</span>
416
- <span class="cline-any cline-no">&nbsp;</span>
417
- <span class="cline-any cline-no">&nbsp;</span>
418
- <span class="cline-any cline-no">&nbsp;</span>
419
- <span class="cline-any cline-no">&nbsp;</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >const fs = require("fs")</span></span></span>
421
- <span class="cstat-no" title="statement not covered" >const path = require("path")</span>
422
- <span class="cstat-no" title="statement not covered" >const os = require("os")</span>
423
- <span class="cstat-no" title="statement not covered" >const { spawnSync } = require("child_process")</span>
424
- <span class="cstat-no" title="statement not covered" >const { getPlugin } = require("./plugins-manager")</span>
425
- <span class="cstat-no" title="statement not covered" >const { getRegistryPlugin } = require("./plugins-registry")</span>
426
- <span class="cstat-no" title="statement not covered" ></span>
427
- <span class="cstat-no" title="statement not covered" >function invalid(message) {</span>
415
+ <span class="cline-any cline-yes">1x</span>
416
+ <span class="cline-any cline-yes">1x</span>
417
+ <span class="cline-any cline-yes">1x</span>
418
+ <span class="cline-any cline-yes">1x</span>
419
+ <span class="cline-any cline-yes">1x</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const fs = require("fs")
421
+ const path = require("path")
422
+ const os = require("os")
423
+ const { spawnSync } = require("child_process")
424
+ const { getPlugin } = require("./plugins-manager")
425
+ const { getRegistryPlugin } = require("./plugins-registry")
426
+ &nbsp;
427
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function invalid(message) {</span></span>
428
428
  <span class="cstat-no" title="statement not covered" > return Object.assign(new Error(message), {</span>
429
429
  <span class="cstat-no" title="statement not covered" > code: 85,</span>
430
430
  <span class="cstat-no" title="statement not covered" > type: "invalid_argument",</span>
431
431
  <span class="cstat-no" title="statement not covered" > recoverable: false,</span>
432
432
  <span class="cstat-no" title="statement not covered" > })</span>
433
433
  <span class="cstat-no" title="statement not covered" >}</span>
434
- <span class="cstat-no" title="statement not covered" ></span>
435
- <span class="cstat-no" title="statement not covered" >function notFound(message, suggestions = []) {</span>
434
+ &nbsp;
435
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function notFound(message, suggestions = []) {</span></span>
436
436
  <span class="cstat-no" title="statement not covered" > return Object.assign(new Error(message), {</span>
437
437
  <span class="cstat-no" title="statement not covered" > code: 92,</span>
438
438
  <span class="cstat-no" title="statement not covered" > type: "resource_not_found",</span>
@@ -440,8 +440,8 @@
440
440
  <span class="cstat-no" title="statement not covered" > suggestions,</span>
441
441
  <span class="cstat-no" title="statement not covered" > })</span>
442
442
  <span class="cstat-no" title="statement not covered" >}</span>
443
- <span class="cstat-no" title="statement not covered" ></span>
444
- <span class="cstat-no" title="statement not covered" >function integration(message, suggestions = []) {</span>
443
+ &nbsp;
444
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function integration(message, suggestions = []) {</span></span>
445
445
  <span class="cstat-no" title="statement not covered" > return Object.assign(new Error(message), {</span>
446
446
  <span class="cstat-no" title="statement not covered" > code: 105,</span>
447
447
  <span class="cstat-no" title="statement not covered" > type: "integration_error",</span>
@@ -449,20 +449,20 @@
449
449
  <span class="cstat-no" title="statement not covered" > suggestions,</span>
450
450
  <span class="cstat-no" title="statement not covered" > })</span>
451
451
  <span class="cstat-no" title="statement not covered" >}</span>
452
- <span class="cstat-no" title="statement not covered" ></span>
453
- <span class="cstat-no" title="statement not covered" >function parseManifest(manifestPath) {</span>
452
+ &nbsp;
453
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function parseManifest(manifestPath) {</span></span>
454
454
  <span class="cstat-no" title="statement not covered" > try {</span>
455
455
  <span class="cstat-no" title="statement not covered" > return JSON.parse(fs.readFileSync(manifestPath, "utf-8"))</span>
456
456
  <span class="cstat-no" title="statement not covered" > } catch (err) {</span>
457
457
  <span class="cstat-no" title="statement not covered" > throw invalid(`Invalid plugin manifest at ${manifestPath}: ${err.message}`)</span>
458
458
  <span class="cstat-no" title="statement not covered" > }</span>
459
459
  <span class="cstat-no" title="statement not covered" >}</span>
460
- <span class="cstat-no" title="statement not covered" ></span>
461
- <span class="cstat-no" title="statement not covered" >function resolveBundledManifestPath(pluginName) {</span>
460
+ &nbsp;
461
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function resolveBundledManifestPath(pluginName) {</span></span>
462
462
  <span class="cstat-no" title="statement not covered" > return path.resolve(__dirname, "..", "plugins", pluginName, "plugin.json")</span>
463
463
  <span class="cstat-no" title="statement not covered" >}</span>
464
- <span class="cstat-no" title="statement not covered" ></span>
465
- <span class="cstat-no" title="statement not covered" >function resolveLearnMarkdown(manifest, manifestPath) {</span>
464
+ &nbsp;
465
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function resolveLearnMarkdown(manifest, manifestPath) {</span></span>
466
466
  <span class="cstat-no" title="statement not covered" > const learn = manifest.learn</span>
467
467
  <span class="cstat-no" title="statement not covered" > if (!learn) {</span>
468
468
  <span class="cstat-no" title="statement not covered" > throw notFound(`Plugin '${manifest.name}' does not define learn content`, [</span>
@@ -498,8 +498,8 @@
498
498
  <span class="cstat-no" title="statement not covered" ></span>
499
499
  <span class="cstat-no" title="statement not covered" > throw invalid("Invalid plugin learn definition: expected learn.text or learn.file")</span>
500
500
  <span class="cstat-no" title="statement not covered" >}</span>
501
- <span class="cstat-no" title="statement not covered" ></span>
502
- <span class="cstat-no" title="statement not covered" >function loadManifestFromGit(repo, ref, manifestPath) {</span>
501
+ &nbsp;
502
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function loadManifestFromGit(repo, ref, manifestPath) {</span></span>
503
503
  <span class="cstat-no" title="statement not covered" > const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "supercli-plugin-learn-"))</span>
504
504
  <span class="cstat-no" title="statement not covered" > try {</span>
505
505
  <span class="cstat-no" title="statement not covered" > const args = ["clone", "--depth", "1"]</span>
@@ -527,8 +527,8 @@
527
527
  <span class="cstat-no" title="statement not covered" > fs.rmSync(tmpDir, { recursive: true, force: true })</span>
528
528
  <span class="cstat-no" title="statement not covered" > }</span>
529
529
  <span class="cstat-no" title="statement not covered" >}</span>
530
- <span class="cstat-no" title="statement not covered" ></span>
531
- <span class="cstat-no" title="statement not covered" >function resolveManifestFromInstalled(installed) {</span>
530
+ &nbsp;
531
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function resolveManifestFromInstalled(installed) {</span></span>
532
532
  <span class="cstat-no" title="statement not covered" > const source = installed &amp;&amp; installed.resolved_from</span>
533
533
  <span class="cstat-no" title="statement not covered" > if (!source || typeof source !== "object") return null</span>
534
534
  <span class="cstat-no" title="statement not covered" ></span>
@@ -548,8 +548,8 @@
548
548
  <span class="cstat-no" title="statement not covered" ></span>
549
549
  <span class="cstat-no" title="statement not covered" > return null</span>
550
550
  <span class="cstat-no" title="statement not covered" >}</span>
551
- <span class="cstat-no" title="statement not covered" ></span>
552
- <span class="cstat-no" title="statement not covered" >function resolveManifestFromRegistry(name) {</span>
551
+ &nbsp;
552
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function resolveManifestFromRegistry(name) {</span></span>
553
553
  <span class="cstat-no" title="statement not covered" > const entry = getRegistryPlugin(name)</span>
554
554
  <span class="cstat-no" title="statement not covered" > if (!entry) return null</span>
555
555
  <span class="cstat-no" title="statement not covered" ></span>
@@ -571,8 +571,8 @@
571
571
  <span class="cstat-no" title="statement not covered" > source: "registry-bundled",</span>
572
572
  <span class="cstat-no" title="statement not covered" > }</span>
573
573
  <span class="cstat-no" title="statement not covered" >}</span>
574
- <span class="cstat-no" title="statement not covered" ></span>
575
- <span class="cstat-no" title="statement not covered" >function getPluginLearn(pluginName) {</span>
574
+ &nbsp;
575
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getPluginLearn(pluginName) {</span></span>
576
576
  <span class="cstat-no" title="statement not covered" > const installed = getPlugin(pluginName)</span>
577
577
  <span class="cstat-no" title="statement not covered" > const installedLoaded = installed ? resolveManifestFromInstalled(installed) : null</span>
578
578
  <span class="cstat-no" title="statement not covered" > const loaded = installedLoaded || resolveManifestFromRegistry(pluginName)</span>
@@ -589,11 +589,11 @@
589
589
  <span class="cstat-no" title="statement not covered" > learn_markdown: markdown,</span>
590
590
  <span class="cstat-no" title="statement not covered" > }</span>
591
591
  <span class="cstat-no" title="statement not covered" >}</span>
592
- <span class="cstat-no" title="statement not covered" ></span>
593
- <span class="cstat-no" title="statement not covered" >module.exports = {</span>
594
- <span class="cstat-no" title="statement not covered" > getPluginLearn,</span>
595
- <span class="cstat-no" title="statement not covered" > resolveLearnMarkdown,</span>
596
- <span class="cstat-no" title="statement not covered" >}</span>
592
+ &nbsp;
593
+ module.exports = {
594
+ getPluginLearn,
595
+ resolveLearnMarkdown,
596
+ }
597
597
  &nbsp;</pre></td></tr></table></pre>
598
598
 
599
599
  <div class='push'></div><!-- for sticky footer -->
@@ -601,7 +601,7 @@
601
601
  <div class='footer quiet pad2 space-top1 center small'>
602
602
  Code coverage generated by
603
603
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
604
- at 2026-03-18T21:19:48.416Z
604
+ at 2026-04-10T17:55:25.401Z
605
605
  </div>
606
606
  <script src="../prettify.js"></script>
607
607
  <script>