superacli 1.1.21 → 1.1.23
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/.beads/.br_history/{issues.20260426_162712_190824905.jsonl → issues.20260427_104606_658098709.jsonl} +49 -48
- package/.beads/.br_history/{issues.20260426_162513_726336785.jsonl → issues.20260427_104607_085798670.jsonl} +50 -48
- package/.beads/.br_history/{issues.20260426_162331_516939737.jsonl → issues.20260427_104607_627598880.jsonl} +51 -48
- package/.beads/.br_history/{issues.20260426_134150_938793400.jsonl → issues.20260427_104608_071298223.jsonl} +52 -48
- package/.beads/.br_history/issues.20260427_104615_198124329.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104615_669652069.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104637_752744777.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104638_209211116.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104638_898729442.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104639_368827997.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104639_823343822.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104640_354170001.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104640_937129660.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104647_408876191.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104659_300660476.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104800_415120762.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_104901_529669396.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105002_587183822.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105103_686748531.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105204_721591044.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105305_855661211.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105407_641630152.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105509_159649245.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105610_283950586.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105637_656057143.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105738_863187883.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105839_958463404.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_105941_092827317.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110042_110436110.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110143_343801118.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110244_379134729.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110345_445658284.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110446_689391882.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110547_667705716.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110609_987816377.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110711_086550915.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110812_204821395.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_110913_259688311.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111014_297775509.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111115_195150935.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111216_316259530.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111317_298020330.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111418_604431267.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111519_617870969.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111533_024097015.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111634_138814655.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111737_148398766.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111838_507704112.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_111939_468325527.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112041_044923744.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112142_224127430.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112243_212317525.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112344_182300930.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112445_197922899.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112502_597304488.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112604_292832651.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112706_051581607.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112807_066213762.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_112908_145315373.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113009_141079023.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113110_601071412.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113211_601412739.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113312_771171767.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113413_719165420.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113430_416576564.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113531_553842703.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113633_137526241.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113735_697152101.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113836_810884202.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_113938_312284719.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114039_390178502.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114140_483586632.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114241_502376670.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114342_927243830.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114405_996651227.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114507_946708398.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114608_914493506.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114709_935565841.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114810_981588378.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_114912_061702372.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115013_063113906.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115114_208497343.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115215_176080241.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115316_481573328.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115335_866978652.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115436_866087391.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115538_016094860.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115638_932947449.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115739_982932603.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115840_963681039.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_115941_912431509.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_120043_043356448.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_120144_955596968.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_120246_060733977.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_120307_717985017.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_120408_871846736.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_121003_963750732.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_121006_018509431.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_121019_617062931.jsonl +261 -0
- package/.beads/.br_history/issues.20260427_121021_689536311.jsonl +261 -0
- package/.beads/.br_recovery/beads.db-wal.20260427_104615_902749843.rebuild-failed +0 -0
- package/.beads/.br_recovery/beads.db-wal.20260427_121006_010373120.rebuild-failed +0 -0
- package/.beads/.br_recovery/beads.db.20260427_104615_902749843.rebuild-failed +0 -0
- package/.beads/.br_recovery/beads.db.20260427_121006_010373120.rebuild-failed +0 -0
- package/.beads/beads.db.corrupted +0 -0
- package/.beads/issues.jsonl +144 -144
- package/.supercli/adapters/test-cli-adapter.js +19 -0
- package/cli/adapters/mcp.js +89 -3
- package/cli/adapters/openapi.js +71 -2
- package/cli/config.js +69 -1
- package/cli/daemon.js +349 -0
- package/cli/plugins-manager.js +42 -9
- package/cli/server-command.js +174 -4
- package/cli/supercli.js +35 -15
- package/docs/changelog-2026-04.html +6 -0
- package/docs/index.html +94 -11
- package/docs/plugins.html +30 -0
- package/docs/server.md +80 -0
- package/graphify-out/GRAPH_REPORT.md +154 -162
- package/graphify-out/cache/11938479cfbdb8e52bf5f0f3c132d56204245ebb19aefe89bb0394feb36dbd5e.json +1 -0
- package/graphify-out/cache/141362b25039dee7a4959ef475befea0a25671aae66f3d14917e711e597ffbf6.json +1 -0
- package/graphify-out/cache/2f23b1be3f6434f60138a04261d83ca71b128f405bd68fb19abf48cd61108dfc.json +1 -0
- package/graphify-out/cache/362adb1b6b483f56d09feaf652f4122366e568aaede752f48383b76d61f5d9d6.json +1 -0
- package/graphify-out/cache/42bc8f64d69d2cd9ecf64e92e38f89f7ea479f69c947de5984919e2fd5a716ee.json +1 -0
- package/graphify-out/cache/4b5cffce31d9193b7d0a8f15e8a41c66f6733a6490ebaeff2c8ca19701c72c0e.json +1 -0
- package/graphify-out/cache/5ef4e31750d9e7bc4ff4a7b535f247d9ab5ab9627d72e20794779ec4be424c66.json +1 -0
- package/graphify-out/cache/6d5023ecffa52382d31152c8c06e86e286789228a3d4f7fde72087f3eafa11bc.json +1 -0
- package/graphify-out/cache/6e5776e123142a78f50fa0bfd5ae2d289282051a9b392ae507de7aa9017f95d4.json +1 -0
- package/graphify-out/cache/75982dc60fa7353600ca48a3b33f5ba497eea9d5743daac6e61e9cf4f64774be.json +1 -0
- package/graphify-out/cache/7796066b51d3a99071debdfb5f40c854400b5bf3aa7c1e83dd6ae88eddca0370.json +1 -0
- package/graphify-out/cache/8ccd3b557a1ea98005fba84433f160ccd4a951fbdb6a4c9b7d7ba894f905b06b.json +1 -0
- package/graphify-out/cache/90ab53b8f1f3306e7c3a1f92ec628717ea90f4e684db764f7d7aa8e884fe2cae.json +1 -0
- package/graphify-out/cache/99c8133d0ccf5bf29a0a03caa6811d2ff8d73bcccf20681687876c890b94740e.json +1 -0
- package/graphify-out/cache/9fa6604cc820f3857c55c753ca0024788e4cbb61c4e12ba7ce0e4a1ce4ee0655.json +1 -0
- package/graphify-out/cache/a1e24a07beede2876e688cdb6c14e2d24abb22064862a6420cac321efabd3efd.json +1 -0
- package/graphify-out/cache/a418312f2805259c33007a18b36b6ae3b6a4da376ccae6006a3b9999262495db.json +1 -0
- package/graphify-out/cache/a6d9c029bd31a99b67357291305e27b01c5ef388925f7f2a6e985fec4efa8024.json +1 -0
- package/graphify-out/cache/a6ed52b709dd79f98adf72c483e8dfb6098203d7327470b82feb5e11390a5cf4.json +1 -0
- package/graphify-out/cache/b045ae4443d972ee8f47b91a0d61c984a190195b38ae1d331430b4c51c43acfd.json +1 -0
- package/graphify-out/cache/bc514f4074f89d2f7e7834670602e50bba0f24b8cd8c9d21ff4d361d3fd4d558.json +1 -0
- package/graphify-out/cache/be3fc87936f9f24d2d4f4b22b9d2a16f33f538cef1a181663120e23ecf16b81a.json +1 -0
- package/graphify-out/cache/c5a4822edbe3a95a56f9f943eed1567e5a5c913d59b1fa3df4ad54ffd9b02697.json +1 -0
- package/graphify-out/cache/cf411f1ddde50ee97c1c501f59ed7985bcdc022134574816bcce37ac20848e64.json +1 -0
- package/graphify-out/cache/d88625b5813742ca941ce8155cb77afb02425632002f621aca34f217440a392d.json +1 -0
- package/graphify-out/cache/da97fdc8af2a3306c292921110f84648bba2b0e85d27473b460b0e8a862ff225.json +1 -0
- package/graphify-out/cache/e88de9f1ae117f26fd217c3717eff7e525a284cc942b5f4d26ef2c4d65db59bd.json +1 -0
- package/graphify-out/cache/ebf6bd96ef2d8d396389ac7199e6ba818ee2d0c5dfc131fab7cdece9fb710f11.json +1 -0
- package/graphify-out/cache/f2a302550a6fe0649d36b8ef0b04b77673bca9f115732af8ae89751944dc9cc6.json +1 -0
- package/graphify-out/cache/fb46bd3ef530273918fc8915842453f21b418d536653d3b705b75b417255c246.json +1 -0
- package/graphify-out/cache/fcfdab94fe91af1f21fcefdba5a96674b9a16bb768288f3573fe68765163c765.json +1 -0
- package/graphify-out/graph.json +2669 -1121
- package/package.json +1 -1
- package/plugins/context-mode/plugin.json +10 -0
- package/plugins/context-mode/scripts/post-install.js +1 -1
- package/plugins/example-server-resources/meta.json +11 -0
- package/plugins/example-server-resources/plugin.json +46 -0
- package/server/app.js +43 -11
- package/server/middleware/auth.js +70 -0
- package/server/routes/adapters.js +3 -11
- package/server/routes/docs.js +10 -0
- package/server/routes/jobs.js +3 -2
- package/server/routes/mcp.js +1 -0
- package/server/routes/plugins.js +209 -10
- package/server/routes/specs.js +8 -3
- package/server/services/adaptersService.js +1 -0
- package/server/services/pluginResourceService.js +262 -0
- package/server/services/pluginsService.js +24 -0
- package/server/uploads/superbackend-openapi.json +47 -0
- package/server/uploads/test-auth-openapi.json +74 -0
- package/server/uploads/test-auth-spec.json +36 -0
- package/server/views/adapters.ejs +1 -0
- package/server/views/clients.ejs +82 -0
- package/server/views/docs.ejs +7 -0
- package/server/views/jobs.ejs +26 -2
- package/server/views/layout.ejs +0 -23
- package/server/views/mcp.ejs +278 -21
- package/server/views/partials/head.ejs +2 -0
- package/server/views/plugins.ejs +81 -1
- package/server/views/specs.ejs +217 -22
- package/.beads/.br_history/issues.20260424_173219_825545950.jsonl +0 -161
- package/.beads/.br_history/issues.20260424_173236_386891868.jsonl +0 -162
- package/.beads/.br_history/issues.20260424_174502_086707155.jsonl +0 -163
- package/.beads/.br_history/issues.20260424_174510_654230822.jsonl +0 -164
- package/.beads/.br_history/issues.20260424_174517_409774596.jsonl +0 -165
- package/.beads/.br_history/issues.20260424_174523_607561636.jsonl +0 -166
- package/.beads/.br_history/issues.20260424_174532_546016322.jsonl +0 -167
- package/.beads/.br_history/issues.20260424_175209_319624367.jsonl +0 -168
- package/.beads/.br_history/issues.20260424_175214_798999893.jsonl +0 -169
- package/.beads/.br_history/issues.20260424_175217_989449734.jsonl +0 -170
- package/.beads/.br_history/issues.20260424_175221_701416034.jsonl +0 -171
- package/.beads/.br_history/issues.20260424_175225_550538874.jsonl +0 -172
- package/.beads/.br_history/issues.20260424_180143_241956058.jsonl +0 -173
- package/.beads/.br_history/issues.20260424_180153_817576164.jsonl +0 -174
- package/.beads/.br_history/issues.20260424_180201_739387030.jsonl +0 -175
- package/.beads/.br_history/issues.20260424_180213_488389024.jsonl +0 -176
- package/.beads/.br_history/issues.20260424_180221_754279177.jsonl +0 -177
- package/.beads/.br_history/issues.20260424_181149_604365436.jsonl +0 -178
- package/.beads/.br_history/issues.20260424_181158_931468591.jsonl +0 -179
- package/.beads/.br_history/issues.20260424_181209_516766803.jsonl +0 -180
- package/.beads/.br_history/issues.20260424_181219_459169740.jsonl +0 -181
- package/.beads/.br_history/issues.20260424_181227_996490697.jsonl +0 -182
- package/.beads/.br_history/issues.20260424_181958_717811271.jsonl +0 -183
- package/.beads/.br_history/issues.20260424_182002_913828749.jsonl +0 -184
- package/.beads/.br_history/issues.20260424_182006_779786523.jsonl +0 -185
- package/.beads/.br_history/issues.20260424_182010_368190795.jsonl +0 -186
- package/.beads/.br_history/issues.20260424_182016_217217108.jsonl +0 -187
- package/.beads/.br_history/issues.20260424_182539_287444292.jsonl +0 -188
- package/.beads/.br_history/issues.20260424_182543_343189534.jsonl +0 -189
- package/.beads/.br_history/issues.20260424_182547_119975837.jsonl +0 -190
- package/.beads/.br_history/issues.20260424_182550_849315940.jsonl +0 -191
- package/.beads/.br_history/issues.20260424_182554_677413036.jsonl +0 -192
- package/.beads/.br_history/issues.20260424_183140_390494612.jsonl +0 -193
- package/.beads/.br_history/issues.20260424_183144_266256714.jsonl +0 -194
- package/.beads/.br_history/issues.20260424_183152_839579876.jsonl +0 -195
- package/.beads/.br_history/issues.20260424_183202_355634088.jsonl +0 -196
- package/.beads/.br_history/issues.20260424_183209_438616861.jsonl +0 -197
- package/.beads/.br_history/issues.20260424_183753_517602948.jsonl +0 -198
- package/.beads/.br_history/issues.20260424_183757_533544458.jsonl +0 -199
- package/.beads/.br_history/issues.20260424_183803_063929316.jsonl +0 -200
- package/.beads/.br_history/issues.20260424_183807_014724964.jsonl +0 -201
- package/.beads/.br_history/issues.20260424_183813_278844212.jsonl +0 -202
- package/.beads/.br_history/issues.20260424_190900_876564388.jsonl +0 -203
- package/.beads/.br_history/issues.20260424_192047_121286991.jsonl +0 -204
- package/.beads/.br_history/issues.20260424_192811_866934994.jsonl +0 -205
- package/.beads/.br_history/issues.20260424_193837_426102367.jsonl +0 -206
- package/.beads/.br_history/issues.20260424_194617_271952813.jsonl +0 -207
- package/.beads/.br_history/issues.20260424_195430_952967644.jsonl +0 -208
- package/.beads/.br_history/issues.20260424_200234_439280977.jsonl +0 -209
- package/.beads/.br_history/issues.20260424_200923_545127361.jsonl +0 -210
- package/.beads/.br_history/issues.20260424_204056_586059018.jsonl +0 -211
- package/.beads/.br_history/issues.20260424_205301_854556209.jsonl +0 -212
- package/.beads/.br_history/issues.20260424_210455_501610650.jsonl +0 -213
- package/.beads/.br_history/issues.20260424_212803_108840399.jsonl +0 -214
- package/.beads/.br_history/issues.20260425_045812_041336580.jsonl +0 -215
- package/.beads/.br_history/issues.20260425_045914_762139232.jsonl +0 -216
- package/.beads/.br_history/issues.20260425_050011_038094726.jsonl +0 -217
- package/.beads/.br_history/issues.20260425_050140_047103928.jsonl +0 -218
- package/.beads/.br_history/issues.20260425_054328_968771145.jsonl +0 -219
- package/.beads/.br_history/issues.20260425_054419_800564203.jsonl +0 -220
- package/.beads/.br_history/issues.20260425_054543_771812828.jsonl +0 -221
- package/.beads/.br_history/issues.20260425_054648_963773974.jsonl +0 -222
- package/.beads/.br_history/issues.20260425_054751_122349828.jsonl +0 -223
- package/.beads/.br_history/issues.20260425_060749_403415856.jsonl +0 -224
- package/.beads/.br_history/issues.20260425_062503_208821903.jsonl +0 -225
- package/.beads/.br_history/issues.20260425_063134_587505560.jsonl +0 -226
- package/.beads/.br_history/issues.20260425_064005_565019560.jsonl +0 -227
- package/.beads/.br_history/issues.20260425_064651_250053752.jsonl +0 -228
- package/.beads/.br_history/issues.20260425_065904_323410469.jsonl +0 -229
- package/.beads/.br_history/issues.20260425_070603_854872783.jsonl +0 -230
- package/.beads/.br_history/issues.20260425_071232_499550581.jsonl +0 -231
- package/.beads/.br_history/issues.20260425_071859_753108611.jsonl +0 -232
- package/.beads/.br_history/issues.20260425_171215_558114276.jsonl +0 -233
- package/.beads/.br_history/issues.20260425_171228_711028872.jsonl +0 -234
- package/.beads/.br_history/issues.20260425_171908_608455863.jsonl +0 -235
- package/.beads/.br_history/issues.20260425_172952_108071113.jsonl +0 -236
- package/.beads/.br_history/issues.20260425_200313_037876111.jsonl +0 -237
- package/.beads/.br_history/issues.20260425_201117_411540946.jsonl +0 -238
- package/.beads/.br_history/issues.20260425_210522_892936637.jsonl +0 -239
- package/.beads/.br_history/issues.20260425_210949_356368198.jsonl +0 -240
- package/.beads/.br_history/issues.20260425_211617_355720902.jsonl +0 -241
- package/.beads/.br_history/issues.20260425_213515_555595766.jsonl +0 -242
- package/.beads/.br_history/issues.20260425_214642_203845514.jsonl +0 -243
- package/.beads/.br_history/issues.20260425_221221_451474472.jsonl +0 -244
- package/.beads/.br_history/issues.20260425_222608_800503496.jsonl +0 -245
- package/.beads/.br_history/issues.20260426_071735_330251998.jsonl +0 -246
- package/.beads/.br_history/issues.20260426_071755_925764854.jsonl +0 -247
- package/.beads/.br_history/issues.20260426_071818_936440407.jsonl +0 -248
- package/.beads/.br_history/issues.20260426_071834_033200504.jsonl +0 -249
- package/.beads/.br_history/issues.20260426_072406_524696668.jsonl +0 -250
- package/.beads/.br_history/issues.20260426_073231_913315951.jsonl +0 -251
- package/.beads/.br_history/issues.20260426_074828_051470117.jsonl +0 -252
- package/.beads/.br_history/issues.20260426_080300_773872374.jsonl +0 -253
- package/.beads/.br_history/issues.20260426_121735_535252712.jsonl +0 -254
- package/.beads/.br_history/issues.20260426_125144_933153546.jsonl +0 -255
- package/.beads/.br_history/issues.20260426_132438_591463320.jsonl +0 -256
- /package/.beads/.br_history/{issues.20260424_173219_825545950.jsonl.meta.json → issues.20260427_104606_658098709.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_173236_386891868.jsonl.meta.json → issues.20260427_104607_085798670.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_174502_086707155.jsonl.meta.json → issues.20260427_104607_627598880.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_174510_654230822.jsonl.meta.json → issues.20260427_104608_071298223.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_174517_409774596.jsonl.meta.json → issues.20260427_104615_198124329.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_174523_607561636.jsonl.meta.json → issues.20260427_104615_669652069.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_174532_546016322.jsonl.meta.json → issues.20260427_104637_752744777.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_175209_319624367.jsonl.meta.json → issues.20260427_104638_209211116.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_175214_798999893.jsonl.meta.json → issues.20260427_104638_898729442.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_175217_989449734.jsonl.meta.json → issues.20260427_104639_368827997.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_175221_701416034.jsonl.meta.json → issues.20260427_104639_823343822.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_175225_550538874.jsonl.meta.json → issues.20260427_104640_354170001.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_180143_241956058.jsonl.meta.json → issues.20260427_104640_937129660.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_180153_817576164.jsonl.meta.json → issues.20260427_104647_408876191.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_180201_739387030.jsonl.meta.json → issues.20260427_104659_300660476.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_180213_488389024.jsonl.meta.json → issues.20260427_104800_415120762.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_180221_754279177.jsonl.meta.json → issues.20260427_104901_529669396.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_181149_604365436.jsonl.meta.json → issues.20260427_105002_587183822.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_181158_931468591.jsonl.meta.json → issues.20260427_105103_686748531.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_181209_516766803.jsonl.meta.json → issues.20260427_105204_721591044.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_181219_459169740.jsonl.meta.json → issues.20260427_105305_855661211.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_181227_996490697.jsonl.meta.json → issues.20260427_105407_641630152.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_181958_717811271.jsonl.meta.json → issues.20260427_105509_159649245.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182002_913828749.jsonl.meta.json → issues.20260427_105610_283950586.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182006_779786523.jsonl.meta.json → issues.20260427_105637_656057143.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182010_368190795.jsonl.meta.json → issues.20260427_105738_863187883.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182016_217217108.jsonl.meta.json → issues.20260427_105839_958463404.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182539_287444292.jsonl.meta.json → issues.20260427_105941_092827317.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182543_343189534.jsonl.meta.json → issues.20260427_110042_110436110.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182547_119975837.jsonl.meta.json → issues.20260427_110143_343801118.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182550_849315940.jsonl.meta.json → issues.20260427_110244_379134729.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_182554_677413036.jsonl.meta.json → issues.20260427_110345_445658284.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183140_390494612.jsonl.meta.json → issues.20260427_110446_689391882.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183144_266256714.jsonl.meta.json → issues.20260427_110547_667705716.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183152_839579876.jsonl.meta.json → issues.20260427_110609_987816377.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183202_355634088.jsonl.meta.json → issues.20260427_110711_086550915.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183209_438616861.jsonl.meta.json → issues.20260427_110812_204821395.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183753_517602948.jsonl.meta.json → issues.20260427_110913_259688311.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183757_533544458.jsonl.meta.json → issues.20260427_111014_297775509.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183803_063929316.jsonl.meta.json → issues.20260427_111115_195150935.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183807_014724964.jsonl.meta.json → issues.20260427_111216_316259530.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_183813_278844212.jsonl.meta.json → issues.20260427_111317_298020330.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_190900_876564388.jsonl.meta.json → issues.20260427_111418_604431267.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_192047_121286991.jsonl.meta.json → issues.20260427_111519_617870969.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_192811_866934994.jsonl.meta.json → issues.20260427_111533_024097015.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_193837_426102367.jsonl.meta.json → issues.20260427_111634_138814655.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_194617_271952813.jsonl.meta.json → issues.20260427_111737_148398766.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_195430_952967644.jsonl.meta.json → issues.20260427_111838_507704112.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_200234_439280977.jsonl.meta.json → issues.20260427_111939_468325527.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_200923_545127361.jsonl.meta.json → issues.20260427_112041_044923744.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_204056_586059018.jsonl.meta.json → issues.20260427_112142_224127430.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_205301_854556209.jsonl.meta.json → issues.20260427_112243_212317525.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_210455_501610650.jsonl.meta.json → issues.20260427_112344_182300930.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260424_212803_108840399.jsonl.meta.json → issues.20260427_112445_197922899.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_045812_041336580.jsonl.meta.json → issues.20260427_112502_597304488.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_045914_762139232.jsonl.meta.json → issues.20260427_112604_292832651.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_050011_038094726.jsonl.meta.json → issues.20260427_112706_051581607.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_050140_047103928.jsonl.meta.json → issues.20260427_112807_066213762.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_054328_968771145.jsonl.meta.json → issues.20260427_112908_145315373.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_054419_800564203.jsonl.meta.json → issues.20260427_113009_141079023.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_054543_771812828.jsonl.meta.json → issues.20260427_113110_601071412.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_054648_963773974.jsonl.meta.json → issues.20260427_113211_601412739.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_054751_122349828.jsonl.meta.json → issues.20260427_113312_771171767.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_060749_403415856.jsonl.meta.json → issues.20260427_113413_719165420.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_062503_208821903.jsonl.meta.json → issues.20260427_113430_416576564.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_063134_587505560.jsonl.meta.json → issues.20260427_113531_553842703.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_064005_565019560.jsonl.meta.json → issues.20260427_113633_137526241.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_064651_250053752.jsonl.meta.json → issues.20260427_113735_697152101.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_065904_323410469.jsonl.meta.json → issues.20260427_113836_810884202.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_070603_854872783.jsonl.meta.json → issues.20260427_113938_312284719.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_071232_499550581.jsonl.meta.json → issues.20260427_114039_390178502.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_071859_753108611.jsonl.meta.json → issues.20260427_114140_483586632.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_171215_558114276.jsonl.meta.json → issues.20260427_114241_502376670.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_171228_711028872.jsonl.meta.json → issues.20260427_114342_927243830.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_171908_608455863.jsonl.meta.json → issues.20260427_114405_996651227.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_172952_108071113.jsonl.meta.json → issues.20260427_114507_946708398.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_200313_037876111.jsonl.meta.json → issues.20260427_114608_914493506.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_201117_411540946.jsonl.meta.json → issues.20260427_114709_935565841.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_210522_892936637.jsonl.meta.json → issues.20260427_114810_981588378.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_210949_356368198.jsonl.meta.json → issues.20260427_114912_061702372.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_211617_355720902.jsonl.meta.json → issues.20260427_115013_063113906.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_213515_555595766.jsonl.meta.json → issues.20260427_115114_208497343.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_214642_203845514.jsonl.meta.json → issues.20260427_115215_176080241.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_221221_451474472.jsonl.meta.json → issues.20260427_115316_481573328.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260425_222608_800503496.jsonl.meta.json → issues.20260427_115335_866978652.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_071735_330251998.jsonl.meta.json → issues.20260427_115436_866087391.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_071755_925764854.jsonl.meta.json → issues.20260427_115538_016094860.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_071818_936440407.jsonl.meta.json → issues.20260427_115638_932947449.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_071834_033200504.jsonl.meta.json → issues.20260427_115739_982932603.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_072406_524696668.jsonl.meta.json → issues.20260427_115840_963681039.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_073231_913315951.jsonl.meta.json → issues.20260427_115941_912431509.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_074828_051470117.jsonl.meta.json → issues.20260427_120043_043356448.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_080300_773872374.jsonl.meta.json → issues.20260427_120144_955596968.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_121735_535252712.jsonl.meta.json → issues.20260427_120246_060733977.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_125144_933153546.jsonl.meta.json → issues.20260427_120307_717985017.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_132438_591463320.jsonl.meta.json → issues.20260427_120408_871846736.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_134150_938793400.jsonl.meta.json → issues.20260427_121003_963750732.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_162331_516939737.jsonl.meta.json → issues.20260427_121006_018509431.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_162513_726336785.jsonl.meta.json → issues.20260427_121019_617062931.jsonl.meta.json} +0 -0
- /package/.beads/.br_history/{issues.20260426_162712_190824905.jsonl.meta.json → issues.20260427_121021_689536311.jsonl.meta.json} +0 -0
package/server/views/specs.ejs
CHANGED
|
@@ -9,28 +9,32 @@
|
|
|
9
9
|
<button @click="showForm=!showForm" class="btn btn-primary">+ Add Spec</button>
|
|
10
10
|
</div>
|
|
11
11
|
|
|
12
|
-
<!-- Add form -->
|
|
12
|
+
<!-- Add/Edit form -->
|
|
13
13
|
<div v-if="showForm" class="bento-card p-6 mb-6">
|
|
14
|
-
<form @submit.prevent="
|
|
15
|
-
<div class="flex-
|
|
16
|
-
<
|
|
17
|
-
|
|
14
|
+
<form @submit.prevent="editing ? update() : create()">
|
|
15
|
+
<div class="flex flex-col md:flex-row gap-4 items-end mb-4">
|
|
16
|
+
<div class="flex-1 w-full">
|
|
17
|
+
<label class="block text-xs font-semibold text-[#787774] uppercase tracking-wider mb-2">Name</label>
|
|
18
|
+
<input v-model="form.name" class="w-full px-4 py-3 bg-[#F7F6F3] border border-[#EAEAEA] rounded-md text-[#111111] focus:outline-none focus:border-[#111111] transition-colors" required placeholder="e.g. referential-api">
|
|
19
|
+
</div>
|
|
20
|
+
<div class="flex-1 w-full">
|
|
21
|
+
<label class="block text-xs font-semibold text-[#787774] uppercase tracking-wider mb-2">URL</label>
|
|
22
|
+
<input v-model="form.url" class="w-full px-4 py-3 bg-[#F7F6F3] border border-[#EAEAEA] rounded-md text-[#111111] focus:outline-none focus:border-[#111111] transition-colors" required placeholder="https://api.example.com/openapi.json">
|
|
23
|
+
</div>
|
|
24
|
+
<div class="w-full md:w-32">
|
|
25
|
+
<label class="block text-xs font-semibold text-[#787774] uppercase tracking-wider mb-2">Auth</label>
|
|
26
|
+
<select v-model="form.auth" class="w-full px-4 py-3 bg-[#F7F6F3] border border-[#EAEAEA] rounded-md text-[#111111] focus:outline-none focus:border-[#111111] transition-colors">
|
|
27
|
+
<option value="none">none</option>
|
|
28
|
+
<option value="oauth">oauth</option>
|
|
29
|
+
<option value="apiKey">apiKey</option>
|
|
30
|
+
<option value="jwt">jwt</option>
|
|
31
|
+
</select>
|
|
32
|
+
</div>
|
|
18
33
|
</div>
|
|
19
|
-
<div class="flex-
|
|
20
|
-
<
|
|
21
|
-
<
|
|
34
|
+
<div class="flex gap-4 items-center mt-4">
|
|
35
|
+
<button type="submit" class="btn btn-primary">{{ editing ? 'Update' : 'Save' }}</button>
|
|
36
|
+
<button type="button" @click="cancelEdit" class="btn">Cancel</button>
|
|
22
37
|
</div>
|
|
23
|
-
<div class="w-full md:w-32">
|
|
24
|
-
<label class="block text-xs font-semibold text-[#787774] uppercase tracking-wider mb-2">Auth</label>
|
|
25
|
-
<select v-model="form.auth" class="w-full px-4 py-3 bg-[#F7F6F3] border border-[#EAEAEA] rounded-md text-[#111111] focus:outline-none focus:border-[#111111] transition-colors">
|
|
26
|
-
<option value="none">none</option>
|
|
27
|
-
<option value="oauth">oauth</option>
|
|
28
|
-
<option value="apiKey">apiKey</option>
|
|
29
|
-
<option value="jwt">jwt</option>
|
|
30
|
-
</select>
|
|
31
|
-
</div>
|
|
32
|
-
<button type="submit" class="btn btn-primary">Save</button>
|
|
33
|
-
<button type="button" @click="showForm=false" class="btn">Cancel</button>
|
|
34
38
|
</form>
|
|
35
39
|
</div>
|
|
36
40
|
|
|
@@ -39,18 +43,45 @@
|
|
|
39
43
|
<thead>
|
|
40
44
|
<tr class="border-b border-[#EAEAEA] bg-[#F7F6F3]">
|
|
41
45
|
<th class="px-6 py-3 text-left text-xs font-semibold text-[#787774] uppercase tracking-wider">Name</th>
|
|
46
|
+
<th class="px-6 py-3 text-left text-xs font-semibold text-[#787774] uppercase tracking-wider">Plugin</th>
|
|
42
47
|
<th class="px-6 py-3 text-left text-xs font-semibold text-[#787774] uppercase tracking-wider">URL</th>
|
|
43
48
|
<th class="px-6 py-3 text-left text-xs font-semibold text-[#787774] uppercase tracking-wider">Auth</th>
|
|
44
49
|
<th class="px-6 py-3 text-left text-xs font-semibold text-[#787774] uppercase tracking-wider">Actions</th>
|
|
45
50
|
</tr>
|
|
46
51
|
</thead>
|
|
47
52
|
<tbody>
|
|
48
|
-
<tr v-if="specs.length===0"><td colspan="
|
|
53
|
+
<tr v-if="specs.length===0"><td colspan="5" class="px-6 py-12 text-center text-[#787774]">No specs registered.</td></tr>
|
|
49
54
|
<tr v-for="s in specs" :key="s._id" class="border-b border-[#EAEAEA] hover:bg-[#F7F6F3] transition-colors">
|
|
50
|
-
<td class="px-6 py-4"
|
|
55
|
+
<td class="px-6 py-4">
|
|
56
|
+
<code class="mono-text text-sm text-[#1F6C9F]">{{ s.displayName || s.name }}</code>
|
|
57
|
+
<div v-if="getUsedCommands(s).length > 0" class="mt-1 text-xs text-[#787774]">
|
|
58
|
+
used by: {{ getUsedCommands(s).map(c => `${c.namespace}.${c.resource}.${c.action}`).join(', ') }}
|
|
59
|
+
</div>
|
|
60
|
+
<div v-if="s.clientId" class="mt-1 text-xs text-[#787774]">
|
|
61
|
+
synced by: {{ s.clientId.substring(0, 8) }}...
|
|
62
|
+
</div>
|
|
63
|
+
</td>
|
|
64
|
+
<td class="px-6 py-4">
|
|
65
|
+
<span v-if="s.origin" class="px-2 py-1 rounded-full text-xs font-semibold" :class="{
|
|
66
|
+
'bg-blue-100 text-blue-700': s.origin === 'cli',
|
|
67
|
+
'bg-green-100 text-green-700': s.origin === 'server',
|
|
68
|
+
'bg-gray-100 text-gray-700': s.origin === 'manual'
|
|
69
|
+
}">{{ s.origin }}</span>
|
|
70
|
+
<span v-else class="text-xs text-[#787774]">manual</span>
|
|
71
|
+
</td>
|
|
51
72
|
<td class="px-6 py-4 max-w-xs truncate text-[#2F3437]">{{ s.url }}</td>
|
|
52
|
-
<td class="px-6 py-4"><span class="badge">{{ s.auth }}</span></td>
|
|
53
73
|
<td class="px-6 py-4">
|
|
74
|
+
<span class="badge">{{ s.auth }}</span>
|
|
75
|
+
<span v-if="s.status" class="ml-2 text-xs" :class="{'text-green-600': s.status === 'alive', 'text-red-600': s.status === 'error', 'text-orange-600': s.status === 'cors'}">
|
|
76
|
+
{{ s.status === 'alive' ? '✓' : s.status === 'cors' ? '⚠ CORS' : '✗' }} {{ s.lastCheck }}
|
|
77
|
+
<button v-if="s.checkedUrl" @click="copyUrl(s.checkedUrl)" class="ml-2 text-[#787774] hover:text-[#111111]" title="Copy checked URL">📋</button>
|
|
78
|
+
</span>
|
|
79
|
+
</td>
|
|
80
|
+
<td class="px-6 py-4">
|
|
81
|
+
<button @click="check(s)" :disabled="s.checking" class="btn text-xs border-green-200 text-green-600 hover:bg-green-50 hover:border-green-300 mr-2" :class="{'opacity-50': s.checking}">
|
|
82
|
+
{{ s.checking ? 'Checking...' : 'Check' }}
|
|
83
|
+
</button>
|
|
84
|
+
<button @click="edit(s)" class="btn text-xs border-blue-200 text-blue-600 hover:bg-blue-50 hover:border-blue-300 mr-2">Edit</button>
|
|
54
85
|
<button @click="remove(s._id)" class="btn text-xs border-red-200 text-red-600 hover:bg-red-50 hover:border-red-300">Delete</button>
|
|
55
86
|
</td>
|
|
56
87
|
</tr>
|
|
@@ -66,11 +97,161 @@
|
|
|
66
97
|
data() {
|
|
67
98
|
return {
|
|
68
99
|
specs: initialSpecs,
|
|
100
|
+
commands: [],
|
|
69
101
|
showForm: false,
|
|
102
|
+
editing: false,
|
|
103
|
+
editId: null,
|
|
70
104
|
form: { name: '', url: '', auth: 'none' }
|
|
71
105
|
}
|
|
72
106
|
},
|
|
107
|
+
async mounted() {
|
|
108
|
+
await this.fetchCommands()
|
|
109
|
+
setInterval(() => {
|
|
110
|
+
this.fetchCommands()
|
|
111
|
+
}, 30000)
|
|
112
|
+
},
|
|
73
113
|
methods: {
|
|
114
|
+
async fetchCommands() {
|
|
115
|
+
try {
|
|
116
|
+
const res = await fetch('/api/commands?format=json')
|
|
117
|
+
const data = await res.json()
|
|
118
|
+
this.commands = data.commands || data || []
|
|
119
|
+
} catch (err) {
|
|
120
|
+
console.error('Failed to fetch commands:', err)
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
getUsedCommands(spec) {
|
|
124
|
+
return this.commands.filter(cmd => {
|
|
125
|
+
const adapterConfig = cmd.adapterConfig || {}
|
|
126
|
+
return adapterConfig.spec === spec.name
|
|
127
|
+
})
|
|
128
|
+
},
|
|
129
|
+
copyUrl(url) {
|
|
130
|
+
navigator.clipboard.writeText(url).catch(err => {
|
|
131
|
+
console.error('Failed to copy URL:', err)
|
|
132
|
+
})
|
|
133
|
+
},
|
|
134
|
+
async check(spec) {
|
|
135
|
+
spec.checking = true
|
|
136
|
+
spec.checkedUrl = null
|
|
137
|
+
try {
|
|
138
|
+
const timeout = 10000
|
|
139
|
+
const controller = new AbortController()
|
|
140
|
+
const timeoutId = setTimeout(() => controller.abort(), timeout)
|
|
141
|
+
|
|
142
|
+
// Fetch the spec to find health endpoint
|
|
143
|
+
const specRes = await fetch(spec.url, { signal: controller.signal })
|
|
144
|
+
clearTimeout(timeoutId)
|
|
145
|
+
|
|
146
|
+
if (specRes.ok) {
|
|
147
|
+
const specData = await specRes.json()
|
|
148
|
+
// Find health endpoint in paths
|
|
149
|
+
let healthPath = null
|
|
150
|
+
const healthKeywords = ['health', 'ping', 'status']
|
|
151
|
+
|
|
152
|
+
for (const [path, methods] of Object.entries(specData.paths || {})) {
|
|
153
|
+
for (const keyword of healthKeywords) {
|
|
154
|
+
if (path.toLowerCase().includes(keyword)) {
|
|
155
|
+
healthPath = path
|
|
156
|
+
break
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (healthPath) break
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (healthPath) {
|
|
163
|
+
// Try to call the health endpoint
|
|
164
|
+
// Use server URL from spec if available, otherwise derive from spec URL
|
|
165
|
+
let baseUrl
|
|
166
|
+
if (specData.servers && specData.servers.length > 0) {
|
|
167
|
+
baseUrl = specData.servers[0].url.replace(/\/$/, '') // Remove trailing slash
|
|
168
|
+
} else {
|
|
169
|
+
baseUrl = spec.url.replace(/\/[^/]*$/, '') // Remove filename
|
|
170
|
+
}
|
|
171
|
+
const healthUrl = baseUrl + healthPath
|
|
172
|
+
spec.checkedUrl = healthUrl
|
|
173
|
+
try {
|
|
174
|
+
const healthRes = await fetch(healthUrl, { signal: controller.signal })
|
|
175
|
+
|
|
176
|
+
if (healthRes.ok) {
|
|
177
|
+
spec.status = 'alive'
|
|
178
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
179
|
+
} else if (healthRes.status === 404) {
|
|
180
|
+
// 404 on health endpoint, try root URL as fallback
|
|
181
|
+
spec.checkedUrl = baseUrl
|
|
182
|
+
try {
|
|
183
|
+
const rootRes = await fetch(baseUrl, { signal: controller.signal })
|
|
184
|
+
if (rootRes.ok) {
|
|
185
|
+
spec.status = 'alive'
|
|
186
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
187
|
+
} else {
|
|
188
|
+
spec.status = 'error'
|
|
189
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
190
|
+
}
|
|
191
|
+
} catch (rootErr) {
|
|
192
|
+
if (rootErr instanceof TypeError) {
|
|
193
|
+
spec.status = 'cors'
|
|
194
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
195
|
+
} else {
|
|
196
|
+
spec.status = 'error'
|
|
197
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
} else {
|
|
201
|
+
spec.status = 'error'
|
|
202
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
203
|
+
}
|
|
204
|
+
} catch (healthErr) {
|
|
205
|
+
// Detect CORS error (TypeError without proper response)
|
|
206
|
+
if (healthErr instanceof TypeError) {
|
|
207
|
+
spec.status = 'cors'
|
|
208
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
209
|
+
} else {
|
|
210
|
+
spec.status = 'error'
|
|
211
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
} else {
|
|
215
|
+
// No health endpoint found, just check if spec is accessible
|
|
216
|
+
spec.checkedUrl = spec.url
|
|
217
|
+
spec.status = 'alive'
|
|
218
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
219
|
+
}
|
|
220
|
+
} else {
|
|
221
|
+
spec.checkedUrl = spec.url
|
|
222
|
+
spec.status = 'error'
|
|
223
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
224
|
+
}
|
|
225
|
+
} catch (err) {
|
|
226
|
+
spec.checkedUrl = spec.url
|
|
227
|
+
// Detect CORS error on spec fetch
|
|
228
|
+
if (err instanceof TypeError) {
|
|
229
|
+
spec.status = 'cors'
|
|
230
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
231
|
+
} else {
|
|
232
|
+
spec.status = 'error'
|
|
233
|
+
spec.lastCheck = new Date().toLocaleTimeString()
|
|
234
|
+
}
|
|
235
|
+
} finally {
|
|
236
|
+
spec.checking = false
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
edit(spec) {
|
|
240
|
+
this.editing = true
|
|
241
|
+
this.editId = spec._id
|
|
242
|
+
this.form = {
|
|
243
|
+
name: spec.name,
|
|
244
|
+
url: spec.url,
|
|
245
|
+
auth: spec.auth
|
|
246
|
+
}
|
|
247
|
+
this.showForm = true
|
|
248
|
+
},
|
|
249
|
+
cancelEdit() {
|
|
250
|
+
this.editing = false
|
|
251
|
+
this.editId = null
|
|
252
|
+
this.form = { name: '', url: '', auth: 'none' }
|
|
253
|
+
this.showForm = false
|
|
254
|
+
},
|
|
74
255
|
async create() {
|
|
75
256
|
const r = await fetch('/api/specs', {
|
|
76
257
|
method: 'POST',
|
|
@@ -81,11 +262,25 @@
|
|
|
81
262
|
this.specs.push(doc)
|
|
82
263
|
this.form = { name: '', url: '', auth: 'none' }
|
|
83
264
|
this.showForm = false
|
|
265
|
+
await this.fetchCommands()
|
|
266
|
+
},
|
|
267
|
+
async update() {
|
|
268
|
+
const r = await fetch('/api/specs/' + this.editId, {
|
|
269
|
+
method: 'PUT',
|
|
270
|
+
headers: { 'Content-Type': 'application/json' },
|
|
271
|
+
body: JSON.stringify(this.form)
|
|
272
|
+
})
|
|
273
|
+
const doc = await r.json()
|
|
274
|
+
const idx = this.specs.findIndex(s => s._id === this.editId)
|
|
275
|
+
if (idx !== -1) this.specs[idx] = { ...this.specs[idx], ...this.form, updatedAt: new Date() }
|
|
276
|
+
this.cancelEdit()
|
|
277
|
+
await this.fetchCommands()
|
|
84
278
|
},
|
|
85
279
|
async remove(id) {
|
|
86
280
|
if (!confirm('Delete this spec?')) return
|
|
87
281
|
await fetch('/api/specs/' + id, { method: 'DELETE' })
|
|
88
282
|
this.specs = this.specs.filter(s => s._id !== id)
|
|
283
|
+
await this.fetchCommands()
|
|
89
284
|
}
|
|
90
285
|
}
|
|
91
286
|
}).mount('#specs-app')
|