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.
Files changed (375) hide show
  1. package/.beads/.br_history/{issues.20260426_162712_190824905.jsonl → issues.20260427_104606_658098709.jsonl} +49 -48
  2. package/.beads/.br_history/{issues.20260426_162513_726336785.jsonl → issues.20260427_104607_085798670.jsonl} +50 -48
  3. package/.beads/.br_history/{issues.20260426_162331_516939737.jsonl → issues.20260427_104607_627598880.jsonl} +51 -48
  4. package/.beads/.br_history/{issues.20260426_134150_938793400.jsonl → issues.20260427_104608_071298223.jsonl} +52 -48
  5. package/.beads/.br_history/issues.20260427_104615_198124329.jsonl +261 -0
  6. package/.beads/.br_history/issues.20260427_104615_669652069.jsonl +261 -0
  7. package/.beads/.br_history/issues.20260427_104637_752744777.jsonl +261 -0
  8. package/.beads/.br_history/issues.20260427_104638_209211116.jsonl +261 -0
  9. package/.beads/.br_history/issues.20260427_104638_898729442.jsonl +261 -0
  10. package/.beads/.br_history/issues.20260427_104639_368827997.jsonl +261 -0
  11. package/.beads/.br_history/issues.20260427_104639_823343822.jsonl +261 -0
  12. package/.beads/.br_history/issues.20260427_104640_354170001.jsonl +261 -0
  13. package/.beads/.br_history/issues.20260427_104640_937129660.jsonl +261 -0
  14. package/.beads/.br_history/issues.20260427_104647_408876191.jsonl +261 -0
  15. package/.beads/.br_history/issues.20260427_104659_300660476.jsonl +261 -0
  16. package/.beads/.br_history/issues.20260427_104800_415120762.jsonl +261 -0
  17. package/.beads/.br_history/issues.20260427_104901_529669396.jsonl +261 -0
  18. package/.beads/.br_history/issues.20260427_105002_587183822.jsonl +261 -0
  19. package/.beads/.br_history/issues.20260427_105103_686748531.jsonl +261 -0
  20. package/.beads/.br_history/issues.20260427_105204_721591044.jsonl +261 -0
  21. package/.beads/.br_history/issues.20260427_105305_855661211.jsonl +261 -0
  22. package/.beads/.br_history/issues.20260427_105407_641630152.jsonl +261 -0
  23. package/.beads/.br_history/issues.20260427_105509_159649245.jsonl +261 -0
  24. package/.beads/.br_history/issues.20260427_105610_283950586.jsonl +261 -0
  25. package/.beads/.br_history/issues.20260427_105637_656057143.jsonl +261 -0
  26. package/.beads/.br_history/issues.20260427_105738_863187883.jsonl +261 -0
  27. package/.beads/.br_history/issues.20260427_105839_958463404.jsonl +261 -0
  28. package/.beads/.br_history/issues.20260427_105941_092827317.jsonl +261 -0
  29. package/.beads/.br_history/issues.20260427_110042_110436110.jsonl +261 -0
  30. package/.beads/.br_history/issues.20260427_110143_343801118.jsonl +261 -0
  31. package/.beads/.br_history/issues.20260427_110244_379134729.jsonl +261 -0
  32. package/.beads/.br_history/issues.20260427_110345_445658284.jsonl +261 -0
  33. package/.beads/.br_history/issues.20260427_110446_689391882.jsonl +261 -0
  34. package/.beads/.br_history/issues.20260427_110547_667705716.jsonl +261 -0
  35. package/.beads/.br_history/issues.20260427_110609_987816377.jsonl +261 -0
  36. package/.beads/.br_history/issues.20260427_110711_086550915.jsonl +261 -0
  37. package/.beads/.br_history/issues.20260427_110812_204821395.jsonl +261 -0
  38. package/.beads/.br_history/issues.20260427_110913_259688311.jsonl +261 -0
  39. package/.beads/.br_history/issues.20260427_111014_297775509.jsonl +261 -0
  40. package/.beads/.br_history/issues.20260427_111115_195150935.jsonl +261 -0
  41. package/.beads/.br_history/issues.20260427_111216_316259530.jsonl +261 -0
  42. package/.beads/.br_history/issues.20260427_111317_298020330.jsonl +261 -0
  43. package/.beads/.br_history/issues.20260427_111418_604431267.jsonl +261 -0
  44. package/.beads/.br_history/issues.20260427_111519_617870969.jsonl +261 -0
  45. package/.beads/.br_history/issues.20260427_111533_024097015.jsonl +261 -0
  46. package/.beads/.br_history/issues.20260427_111634_138814655.jsonl +261 -0
  47. package/.beads/.br_history/issues.20260427_111737_148398766.jsonl +261 -0
  48. package/.beads/.br_history/issues.20260427_111838_507704112.jsonl +261 -0
  49. package/.beads/.br_history/issues.20260427_111939_468325527.jsonl +261 -0
  50. package/.beads/.br_history/issues.20260427_112041_044923744.jsonl +261 -0
  51. package/.beads/.br_history/issues.20260427_112142_224127430.jsonl +261 -0
  52. package/.beads/.br_history/issues.20260427_112243_212317525.jsonl +261 -0
  53. package/.beads/.br_history/issues.20260427_112344_182300930.jsonl +261 -0
  54. package/.beads/.br_history/issues.20260427_112445_197922899.jsonl +261 -0
  55. package/.beads/.br_history/issues.20260427_112502_597304488.jsonl +261 -0
  56. package/.beads/.br_history/issues.20260427_112604_292832651.jsonl +261 -0
  57. package/.beads/.br_history/issues.20260427_112706_051581607.jsonl +261 -0
  58. package/.beads/.br_history/issues.20260427_112807_066213762.jsonl +261 -0
  59. package/.beads/.br_history/issues.20260427_112908_145315373.jsonl +261 -0
  60. package/.beads/.br_history/issues.20260427_113009_141079023.jsonl +261 -0
  61. package/.beads/.br_history/issues.20260427_113110_601071412.jsonl +261 -0
  62. package/.beads/.br_history/issues.20260427_113211_601412739.jsonl +261 -0
  63. package/.beads/.br_history/issues.20260427_113312_771171767.jsonl +261 -0
  64. package/.beads/.br_history/issues.20260427_113413_719165420.jsonl +261 -0
  65. package/.beads/.br_history/issues.20260427_113430_416576564.jsonl +261 -0
  66. package/.beads/.br_history/issues.20260427_113531_553842703.jsonl +261 -0
  67. package/.beads/.br_history/issues.20260427_113633_137526241.jsonl +261 -0
  68. package/.beads/.br_history/issues.20260427_113735_697152101.jsonl +261 -0
  69. package/.beads/.br_history/issues.20260427_113836_810884202.jsonl +261 -0
  70. package/.beads/.br_history/issues.20260427_113938_312284719.jsonl +261 -0
  71. package/.beads/.br_history/issues.20260427_114039_390178502.jsonl +261 -0
  72. package/.beads/.br_history/issues.20260427_114140_483586632.jsonl +261 -0
  73. package/.beads/.br_history/issues.20260427_114241_502376670.jsonl +261 -0
  74. package/.beads/.br_history/issues.20260427_114342_927243830.jsonl +261 -0
  75. package/.beads/.br_history/issues.20260427_114405_996651227.jsonl +261 -0
  76. package/.beads/.br_history/issues.20260427_114507_946708398.jsonl +261 -0
  77. package/.beads/.br_history/issues.20260427_114608_914493506.jsonl +261 -0
  78. package/.beads/.br_history/issues.20260427_114709_935565841.jsonl +261 -0
  79. package/.beads/.br_history/issues.20260427_114810_981588378.jsonl +261 -0
  80. package/.beads/.br_history/issues.20260427_114912_061702372.jsonl +261 -0
  81. package/.beads/.br_history/issues.20260427_115013_063113906.jsonl +261 -0
  82. package/.beads/.br_history/issues.20260427_115114_208497343.jsonl +261 -0
  83. package/.beads/.br_history/issues.20260427_115215_176080241.jsonl +261 -0
  84. package/.beads/.br_history/issues.20260427_115316_481573328.jsonl +261 -0
  85. package/.beads/.br_history/issues.20260427_115335_866978652.jsonl +261 -0
  86. package/.beads/.br_history/issues.20260427_115436_866087391.jsonl +261 -0
  87. package/.beads/.br_history/issues.20260427_115538_016094860.jsonl +261 -0
  88. package/.beads/.br_history/issues.20260427_115638_932947449.jsonl +261 -0
  89. package/.beads/.br_history/issues.20260427_115739_982932603.jsonl +261 -0
  90. package/.beads/.br_history/issues.20260427_115840_963681039.jsonl +261 -0
  91. package/.beads/.br_history/issues.20260427_115941_912431509.jsonl +261 -0
  92. package/.beads/.br_history/issues.20260427_120043_043356448.jsonl +261 -0
  93. package/.beads/.br_history/issues.20260427_120144_955596968.jsonl +261 -0
  94. package/.beads/.br_history/issues.20260427_120246_060733977.jsonl +261 -0
  95. package/.beads/.br_history/issues.20260427_120307_717985017.jsonl +261 -0
  96. package/.beads/.br_history/issues.20260427_120408_871846736.jsonl +261 -0
  97. package/.beads/.br_history/issues.20260427_121003_963750732.jsonl +261 -0
  98. package/.beads/.br_history/issues.20260427_121006_018509431.jsonl +261 -0
  99. package/.beads/.br_history/issues.20260427_121019_617062931.jsonl +261 -0
  100. package/.beads/.br_history/issues.20260427_121021_689536311.jsonl +261 -0
  101. package/.beads/.br_recovery/beads.db-wal.20260427_104615_902749843.rebuild-failed +0 -0
  102. package/.beads/.br_recovery/beads.db-wal.20260427_121006_010373120.rebuild-failed +0 -0
  103. package/.beads/.br_recovery/beads.db.20260427_104615_902749843.rebuild-failed +0 -0
  104. package/.beads/.br_recovery/beads.db.20260427_121006_010373120.rebuild-failed +0 -0
  105. package/.beads/beads.db.corrupted +0 -0
  106. package/.beads/issues.jsonl +144 -144
  107. package/.supercli/adapters/test-cli-adapter.js +19 -0
  108. package/cli/adapters/mcp.js +89 -3
  109. package/cli/adapters/openapi.js +71 -2
  110. package/cli/config.js +69 -1
  111. package/cli/daemon.js +349 -0
  112. package/cli/plugins-manager.js +42 -9
  113. package/cli/server-command.js +174 -4
  114. package/cli/supercli.js +35 -15
  115. package/docs/changelog-2026-04.html +6 -0
  116. package/docs/index.html +94 -11
  117. package/docs/plugins.html +30 -0
  118. package/docs/server.md +80 -0
  119. package/graphify-out/GRAPH_REPORT.md +154 -162
  120. package/graphify-out/cache/11938479cfbdb8e52bf5f0f3c132d56204245ebb19aefe89bb0394feb36dbd5e.json +1 -0
  121. package/graphify-out/cache/141362b25039dee7a4959ef475befea0a25671aae66f3d14917e711e597ffbf6.json +1 -0
  122. package/graphify-out/cache/2f23b1be3f6434f60138a04261d83ca71b128f405bd68fb19abf48cd61108dfc.json +1 -0
  123. package/graphify-out/cache/362adb1b6b483f56d09feaf652f4122366e568aaede752f48383b76d61f5d9d6.json +1 -0
  124. package/graphify-out/cache/42bc8f64d69d2cd9ecf64e92e38f89f7ea479f69c947de5984919e2fd5a716ee.json +1 -0
  125. package/graphify-out/cache/4b5cffce31d9193b7d0a8f15e8a41c66f6733a6490ebaeff2c8ca19701c72c0e.json +1 -0
  126. package/graphify-out/cache/5ef4e31750d9e7bc4ff4a7b535f247d9ab5ab9627d72e20794779ec4be424c66.json +1 -0
  127. package/graphify-out/cache/6d5023ecffa52382d31152c8c06e86e286789228a3d4f7fde72087f3eafa11bc.json +1 -0
  128. package/graphify-out/cache/6e5776e123142a78f50fa0bfd5ae2d289282051a9b392ae507de7aa9017f95d4.json +1 -0
  129. package/graphify-out/cache/75982dc60fa7353600ca48a3b33f5ba497eea9d5743daac6e61e9cf4f64774be.json +1 -0
  130. package/graphify-out/cache/7796066b51d3a99071debdfb5f40c854400b5bf3aa7c1e83dd6ae88eddca0370.json +1 -0
  131. package/graphify-out/cache/8ccd3b557a1ea98005fba84433f160ccd4a951fbdb6a4c9b7d7ba894f905b06b.json +1 -0
  132. package/graphify-out/cache/90ab53b8f1f3306e7c3a1f92ec628717ea90f4e684db764f7d7aa8e884fe2cae.json +1 -0
  133. package/graphify-out/cache/99c8133d0ccf5bf29a0a03caa6811d2ff8d73bcccf20681687876c890b94740e.json +1 -0
  134. package/graphify-out/cache/9fa6604cc820f3857c55c753ca0024788e4cbb61c4e12ba7ce0e4a1ce4ee0655.json +1 -0
  135. package/graphify-out/cache/a1e24a07beede2876e688cdb6c14e2d24abb22064862a6420cac321efabd3efd.json +1 -0
  136. package/graphify-out/cache/a418312f2805259c33007a18b36b6ae3b6a4da376ccae6006a3b9999262495db.json +1 -0
  137. package/graphify-out/cache/a6d9c029bd31a99b67357291305e27b01c5ef388925f7f2a6e985fec4efa8024.json +1 -0
  138. package/graphify-out/cache/a6ed52b709dd79f98adf72c483e8dfb6098203d7327470b82feb5e11390a5cf4.json +1 -0
  139. package/graphify-out/cache/b045ae4443d972ee8f47b91a0d61c984a190195b38ae1d331430b4c51c43acfd.json +1 -0
  140. package/graphify-out/cache/bc514f4074f89d2f7e7834670602e50bba0f24b8cd8c9d21ff4d361d3fd4d558.json +1 -0
  141. package/graphify-out/cache/be3fc87936f9f24d2d4f4b22b9d2a16f33f538cef1a181663120e23ecf16b81a.json +1 -0
  142. package/graphify-out/cache/c5a4822edbe3a95a56f9f943eed1567e5a5c913d59b1fa3df4ad54ffd9b02697.json +1 -0
  143. package/graphify-out/cache/cf411f1ddde50ee97c1c501f59ed7985bcdc022134574816bcce37ac20848e64.json +1 -0
  144. package/graphify-out/cache/d88625b5813742ca941ce8155cb77afb02425632002f621aca34f217440a392d.json +1 -0
  145. package/graphify-out/cache/da97fdc8af2a3306c292921110f84648bba2b0e85d27473b460b0e8a862ff225.json +1 -0
  146. package/graphify-out/cache/e88de9f1ae117f26fd217c3717eff7e525a284cc942b5f4d26ef2c4d65db59bd.json +1 -0
  147. package/graphify-out/cache/ebf6bd96ef2d8d396389ac7199e6ba818ee2d0c5dfc131fab7cdece9fb710f11.json +1 -0
  148. package/graphify-out/cache/f2a302550a6fe0649d36b8ef0b04b77673bca9f115732af8ae89751944dc9cc6.json +1 -0
  149. package/graphify-out/cache/fb46bd3ef530273918fc8915842453f21b418d536653d3b705b75b417255c246.json +1 -0
  150. package/graphify-out/cache/fcfdab94fe91af1f21fcefdba5a96674b9a16bb768288f3573fe68765163c765.json +1 -0
  151. package/graphify-out/graph.json +2669 -1121
  152. package/package.json +1 -1
  153. package/plugins/context-mode/plugin.json +10 -0
  154. package/plugins/context-mode/scripts/post-install.js +1 -1
  155. package/plugins/example-server-resources/meta.json +11 -0
  156. package/plugins/example-server-resources/plugin.json +46 -0
  157. package/server/app.js +43 -11
  158. package/server/middleware/auth.js +70 -0
  159. package/server/routes/adapters.js +3 -11
  160. package/server/routes/docs.js +10 -0
  161. package/server/routes/jobs.js +3 -2
  162. package/server/routes/mcp.js +1 -0
  163. package/server/routes/plugins.js +209 -10
  164. package/server/routes/specs.js +8 -3
  165. package/server/services/adaptersService.js +1 -0
  166. package/server/services/pluginResourceService.js +262 -0
  167. package/server/services/pluginsService.js +24 -0
  168. package/server/uploads/superbackend-openapi.json +47 -0
  169. package/server/uploads/test-auth-openapi.json +74 -0
  170. package/server/uploads/test-auth-spec.json +36 -0
  171. package/server/views/adapters.ejs +1 -0
  172. package/server/views/clients.ejs +82 -0
  173. package/server/views/docs.ejs +7 -0
  174. package/server/views/jobs.ejs +26 -2
  175. package/server/views/layout.ejs +0 -23
  176. package/server/views/mcp.ejs +278 -21
  177. package/server/views/partials/head.ejs +2 -0
  178. package/server/views/plugins.ejs +81 -1
  179. package/server/views/specs.ejs +217 -22
  180. package/.beads/.br_history/issues.20260424_173219_825545950.jsonl +0 -161
  181. package/.beads/.br_history/issues.20260424_173236_386891868.jsonl +0 -162
  182. package/.beads/.br_history/issues.20260424_174502_086707155.jsonl +0 -163
  183. package/.beads/.br_history/issues.20260424_174510_654230822.jsonl +0 -164
  184. package/.beads/.br_history/issues.20260424_174517_409774596.jsonl +0 -165
  185. package/.beads/.br_history/issues.20260424_174523_607561636.jsonl +0 -166
  186. package/.beads/.br_history/issues.20260424_174532_546016322.jsonl +0 -167
  187. package/.beads/.br_history/issues.20260424_175209_319624367.jsonl +0 -168
  188. package/.beads/.br_history/issues.20260424_175214_798999893.jsonl +0 -169
  189. package/.beads/.br_history/issues.20260424_175217_989449734.jsonl +0 -170
  190. package/.beads/.br_history/issues.20260424_175221_701416034.jsonl +0 -171
  191. package/.beads/.br_history/issues.20260424_175225_550538874.jsonl +0 -172
  192. package/.beads/.br_history/issues.20260424_180143_241956058.jsonl +0 -173
  193. package/.beads/.br_history/issues.20260424_180153_817576164.jsonl +0 -174
  194. package/.beads/.br_history/issues.20260424_180201_739387030.jsonl +0 -175
  195. package/.beads/.br_history/issues.20260424_180213_488389024.jsonl +0 -176
  196. package/.beads/.br_history/issues.20260424_180221_754279177.jsonl +0 -177
  197. package/.beads/.br_history/issues.20260424_181149_604365436.jsonl +0 -178
  198. package/.beads/.br_history/issues.20260424_181158_931468591.jsonl +0 -179
  199. package/.beads/.br_history/issues.20260424_181209_516766803.jsonl +0 -180
  200. package/.beads/.br_history/issues.20260424_181219_459169740.jsonl +0 -181
  201. package/.beads/.br_history/issues.20260424_181227_996490697.jsonl +0 -182
  202. package/.beads/.br_history/issues.20260424_181958_717811271.jsonl +0 -183
  203. package/.beads/.br_history/issues.20260424_182002_913828749.jsonl +0 -184
  204. package/.beads/.br_history/issues.20260424_182006_779786523.jsonl +0 -185
  205. package/.beads/.br_history/issues.20260424_182010_368190795.jsonl +0 -186
  206. package/.beads/.br_history/issues.20260424_182016_217217108.jsonl +0 -187
  207. package/.beads/.br_history/issues.20260424_182539_287444292.jsonl +0 -188
  208. package/.beads/.br_history/issues.20260424_182543_343189534.jsonl +0 -189
  209. package/.beads/.br_history/issues.20260424_182547_119975837.jsonl +0 -190
  210. package/.beads/.br_history/issues.20260424_182550_849315940.jsonl +0 -191
  211. package/.beads/.br_history/issues.20260424_182554_677413036.jsonl +0 -192
  212. package/.beads/.br_history/issues.20260424_183140_390494612.jsonl +0 -193
  213. package/.beads/.br_history/issues.20260424_183144_266256714.jsonl +0 -194
  214. package/.beads/.br_history/issues.20260424_183152_839579876.jsonl +0 -195
  215. package/.beads/.br_history/issues.20260424_183202_355634088.jsonl +0 -196
  216. package/.beads/.br_history/issues.20260424_183209_438616861.jsonl +0 -197
  217. package/.beads/.br_history/issues.20260424_183753_517602948.jsonl +0 -198
  218. package/.beads/.br_history/issues.20260424_183757_533544458.jsonl +0 -199
  219. package/.beads/.br_history/issues.20260424_183803_063929316.jsonl +0 -200
  220. package/.beads/.br_history/issues.20260424_183807_014724964.jsonl +0 -201
  221. package/.beads/.br_history/issues.20260424_183813_278844212.jsonl +0 -202
  222. package/.beads/.br_history/issues.20260424_190900_876564388.jsonl +0 -203
  223. package/.beads/.br_history/issues.20260424_192047_121286991.jsonl +0 -204
  224. package/.beads/.br_history/issues.20260424_192811_866934994.jsonl +0 -205
  225. package/.beads/.br_history/issues.20260424_193837_426102367.jsonl +0 -206
  226. package/.beads/.br_history/issues.20260424_194617_271952813.jsonl +0 -207
  227. package/.beads/.br_history/issues.20260424_195430_952967644.jsonl +0 -208
  228. package/.beads/.br_history/issues.20260424_200234_439280977.jsonl +0 -209
  229. package/.beads/.br_history/issues.20260424_200923_545127361.jsonl +0 -210
  230. package/.beads/.br_history/issues.20260424_204056_586059018.jsonl +0 -211
  231. package/.beads/.br_history/issues.20260424_205301_854556209.jsonl +0 -212
  232. package/.beads/.br_history/issues.20260424_210455_501610650.jsonl +0 -213
  233. package/.beads/.br_history/issues.20260424_212803_108840399.jsonl +0 -214
  234. package/.beads/.br_history/issues.20260425_045812_041336580.jsonl +0 -215
  235. package/.beads/.br_history/issues.20260425_045914_762139232.jsonl +0 -216
  236. package/.beads/.br_history/issues.20260425_050011_038094726.jsonl +0 -217
  237. package/.beads/.br_history/issues.20260425_050140_047103928.jsonl +0 -218
  238. package/.beads/.br_history/issues.20260425_054328_968771145.jsonl +0 -219
  239. package/.beads/.br_history/issues.20260425_054419_800564203.jsonl +0 -220
  240. package/.beads/.br_history/issues.20260425_054543_771812828.jsonl +0 -221
  241. package/.beads/.br_history/issues.20260425_054648_963773974.jsonl +0 -222
  242. package/.beads/.br_history/issues.20260425_054751_122349828.jsonl +0 -223
  243. package/.beads/.br_history/issues.20260425_060749_403415856.jsonl +0 -224
  244. package/.beads/.br_history/issues.20260425_062503_208821903.jsonl +0 -225
  245. package/.beads/.br_history/issues.20260425_063134_587505560.jsonl +0 -226
  246. package/.beads/.br_history/issues.20260425_064005_565019560.jsonl +0 -227
  247. package/.beads/.br_history/issues.20260425_064651_250053752.jsonl +0 -228
  248. package/.beads/.br_history/issues.20260425_065904_323410469.jsonl +0 -229
  249. package/.beads/.br_history/issues.20260425_070603_854872783.jsonl +0 -230
  250. package/.beads/.br_history/issues.20260425_071232_499550581.jsonl +0 -231
  251. package/.beads/.br_history/issues.20260425_071859_753108611.jsonl +0 -232
  252. package/.beads/.br_history/issues.20260425_171215_558114276.jsonl +0 -233
  253. package/.beads/.br_history/issues.20260425_171228_711028872.jsonl +0 -234
  254. package/.beads/.br_history/issues.20260425_171908_608455863.jsonl +0 -235
  255. package/.beads/.br_history/issues.20260425_172952_108071113.jsonl +0 -236
  256. package/.beads/.br_history/issues.20260425_200313_037876111.jsonl +0 -237
  257. package/.beads/.br_history/issues.20260425_201117_411540946.jsonl +0 -238
  258. package/.beads/.br_history/issues.20260425_210522_892936637.jsonl +0 -239
  259. package/.beads/.br_history/issues.20260425_210949_356368198.jsonl +0 -240
  260. package/.beads/.br_history/issues.20260425_211617_355720902.jsonl +0 -241
  261. package/.beads/.br_history/issues.20260425_213515_555595766.jsonl +0 -242
  262. package/.beads/.br_history/issues.20260425_214642_203845514.jsonl +0 -243
  263. package/.beads/.br_history/issues.20260425_221221_451474472.jsonl +0 -244
  264. package/.beads/.br_history/issues.20260425_222608_800503496.jsonl +0 -245
  265. package/.beads/.br_history/issues.20260426_071735_330251998.jsonl +0 -246
  266. package/.beads/.br_history/issues.20260426_071755_925764854.jsonl +0 -247
  267. package/.beads/.br_history/issues.20260426_071818_936440407.jsonl +0 -248
  268. package/.beads/.br_history/issues.20260426_071834_033200504.jsonl +0 -249
  269. package/.beads/.br_history/issues.20260426_072406_524696668.jsonl +0 -250
  270. package/.beads/.br_history/issues.20260426_073231_913315951.jsonl +0 -251
  271. package/.beads/.br_history/issues.20260426_074828_051470117.jsonl +0 -252
  272. package/.beads/.br_history/issues.20260426_080300_773872374.jsonl +0 -253
  273. package/.beads/.br_history/issues.20260426_121735_535252712.jsonl +0 -254
  274. package/.beads/.br_history/issues.20260426_125144_933153546.jsonl +0 -255
  275. package/.beads/.br_history/issues.20260426_132438_591463320.jsonl +0 -256
  276. /package/.beads/.br_history/{issues.20260424_173219_825545950.jsonl.meta.json → issues.20260427_104606_658098709.jsonl.meta.json} +0 -0
  277. /package/.beads/.br_history/{issues.20260424_173236_386891868.jsonl.meta.json → issues.20260427_104607_085798670.jsonl.meta.json} +0 -0
  278. /package/.beads/.br_history/{issues.20260424_174502_086707155.jsonl.meta.json → issues.20260427_104607_627598880.jsonl.meta.json} +0 -0
  279. /package/.beads/.br_history/{issues.20260424_174510_654230822.jsonl.meta.json → issues.20260427_104608_071298223.jsonl.meta.json} +0 -0
  280. /package/.beads/.br_history/{issues.20260424_174517_409774596.jsonl.meta.json → issues.20260427_104615_198124329.jsonl.meta.json} +0 -0
  281. /package/.beads/.br_history/{issues.20260424_174523_607561636.jsonl.meta.json → issues.20260427_104615_669652069.jsonl.meta.json} +0 -0
  282. /package/.beads/.br_history/{issues.20260424_174532_546016322.jsonl.meta.json → issues.20260427_104637_752744777.jsonl.meta.json} +0 -0
  283. /package/.beads/.br_history/{issues.20260424_175209_319624367.jsonl.meta.json → issues.20260427_104638_209211116.jsonl.meta.json} +0 -0
  284. /package/.beads/.br_history/{issues.20260424_175214_798999893.jsonl.meta.json → issues.20260427_104638_898729442.jsonl.meta.json} +0 -0
  285. /package/.beads/.br_history/{issues.20260424_175217_989449734.jsonl.meta.json → issues.20260427_104639_368827997.jsonl.meta.json} +0 -0
  286. /package/.beads/.br_history/{issues.20260424_175221_701416034.jsonl.meta.json → issues.20260427_104639_823343822.jsonl.meta.json} +0 -0
  287. /package/.beads/.br_history/{issues.20260424_175225_550538874.jsonl.meta.json → issues.20260427_104640_354170001.jsonl.meta.json} +0 -0
  288. /package/.beads/.br_history/{issues.20260424_180143_241956058.jsonl.meta.json → issues.20260427_104640_937129660.jsonl.meta.json} +0 -0
  289. /package/.beads/.br_history/{issues.20260424_180153_817576164.jsonl.meta.json → issues.20260427_104647_408876191.jsonl.meta.json} +0 -0
  290. /package/.beads/.br_history/{issues.20260424_180201_739387030.jsonl.meta.json → issues.20260427_104659_300660476.jsonl.meta.json} +0 -0
  291. /package/.beads/.br_history/{issues.20260424_180213_488389024.jsonl.meta.json → issues.20260427_104800_415120762.jsonl.meta.json} +0 -0
  292. /package/.beads/.br_history/{issues.20260424_180221_754279177.jsonl.meta.json → issues.20260427_104901_529669396.jsonl.meta.json} +0 -0
  293. /package/.beads/.br_history/{issues.20260424_181149_604365436.jsonl.meta.json → issues.20260427_105002_587183822.jsonl.meta.json} +0 -0
  294. /package/.beads/.br_history/{issues.20260424_181158_931468591.jsonl.meta.json → issues.20260427_105103_686748531.jsonl.meta.json} +0 -0
  295. /package/.beads/.br_history/{issues.20260424_181209_516766803.jsonl.meta.json → issues.20260427_105204_721591044.jsonl.meta.json} +0 -0
  296. /package/.beads/.br_history/{issues.20260424_181219_459169740.jsonl.meta.json → issues.20260427_105305_855661211.jsonl.meta.json} +0 -0
  297. /package/.beads/.br_history/{issues.20260424_181227_996490697.jsonl.meta.json → issues.20260427_105407_641630152.jsonl.meta.json} +0 -0
  298. /package/.beads/.br_history/{issues.20260424_181958_717811271.jsonl.meta.json → issues.20260427_105509_159649245.jsonl.meta.json} +0 -0
  299. /package/.beads/.br_history/{issues.20260424_182002_913828749.jsonl.meta.json → issues.20260427_105610_283950586.jsonl.meta.json} +0 -0
  300. /package/.beads/.br_history/{issues.20260424_182006_779786523.jsonl.meta.json → issues.20260427_105637_656057143.jsonl.meta.json} +0 -0
  301. /package/.beads/.br_history/{issues.20260424_182010_368190795.jsonl.meta.json → issues.20260427_105738_863187883.jsonl.meta.json} +0 -0
  302. /package/.beads/.br_history/{issues.20260424_182016_217217108.jsonl.meta.json → issues.20260427_105839_958463404.jsonl.meta.json} +0 -0
  303. /package/.beads/.br_history/{issues.20260424_182539_287444292.jsonl.meta.json → issues.20260427_105941_092827317.jsonl.meta.json} +0 -0
  304. /package/.beads/.br_history/{issues.20260424_182543_343189534.jsonl.meta.json → issues.20260427_110042_110436110.jsonl.meta.json} +0 -0
  305. /package/.beads/.br_history/{issues.20260424_182547_119975837.jsonl.meta.json → issues.20260427_110143_343801118.jsonl.meta.json} +0 -0
  306. /package/.beads/.br_history/{issues.20260424_182550_849315940.jsonl.meta.json → issues.20260427_110244_379134729.jsonl.meta.json} +0 -0
  307. /package/.beads/.br_history/{issues.20260424_182554_677413036.jsonl.meta.json → issues.20260427_110345_445658284.jsonl.meta.json} +0 -0
  308. /package/.beads/.br_history/{issues.20260424_183140_390494612.jsonl.meta.json → issues.20260427_110446_689391882.jsonl.meta.json} +0 -0
  309. /package/.beads/.br_history/{issues.20260424_183144_266256714.jsonl.meta.json → issues.20260427_110547_667705716.jsonl.meta.json} +0 -0
  310. /package/.beads/.br_history/{issues.20260424_183152_839579876.jsonl.meta.json → issues.20260427_110609_987816377.jsonl.meta.json} +0 -0
  311. /package/.beads/.br_history/{issues.20260424_183202_355634088.jsonl.meta.json → issues.20260427_110711_086550915.jsonl.meta.json} +0 -0
  312. /package/.beads/.br_history/{issues.20260424_183209_438616861.jsonl.meta.json → issues.20260427_110812_204821395.jsonl.meta.json} +0 -0
  313. /package/.beads/.br_history/{issues.20260424_183753_517602948.jsonl.meta.json → issues.20260427_110913_259688311.jsonl.meta.json} +0 -0
  314. /package/.beads/.br_history/{issues.20260424_183757_533544458.jsonl.meta.json → issues.20260427_111014_297775509.jsonl.meta.json} +0 -0
  315. /package/.beads/.br_history/{issues.20260424_183803_063929316.jsonl.meta.json → issues.20260427_111115_195150935.jsonl.meta.json} +0 -0
  316. /package/.beads/.br_history/{issues.20260424_183807_014724964.jsonl.meta.json → issues.20260427_111216_316259530.jsonl.meta.json} +0 -0
  317. /package/.beads/.br_history/{issues.20260424_183813_278844212.jsonl.meta.json → issues.20260427_111317_298020330.jsonl.meta.json} +0 -0
  318. /package/.beads/.br_history/{issues.20260424_190900_876564388.jsonl.meta.json → issues.20260427_111418_604431267.jsonl.meta.json} +0 -0
  319. /package/.beads/.br_history/{issues.20260424_192047_121286991.jsonl.meta.json → issues.20260427_111519_617870969.jsonl.meta.json} +0 -0
  320. /package/.beads/.br_history/{issues.20260424_192811_866934994.jsonl.meta.json → issues.20260427_111533_024097015.jsonl.meta.json} +0 -0
  321. /package/.beads/.br_history/{issues.20260424_193837_426102367.jsonl.meta.json → issues.20260427_111634_138814655.jsonl.meta.json} +0 -0
  322. /package/.beads/.br_history/{issues.20260424_194617_271952813.jsonl.meta.json → issues.20260427_111737_148398766.jsonl.meta.json} +0 -0
  323. /package/.beads/.br_history/{issues.20260424_195430_952967644.jsonl.meta.json → issues.20260427_111838_507704112.jsonl.meta.json} +0 -0
  324. /package/.beads/.br_history/{issues.20260424_200234_439280977.jsonl.meta.json → issues.20260427_111939_468325527.jsonl.meta.json} +0 -0
  325. /package/.beads/.br_history/{issues.20260424_200923_545127361.jsonl.meta.json → issues.20260427_112041_044923744.jsonl.meta.json} +0 -0
  326. /package/.beads/.br_history/{issues.20260424_204056_586059018.jsonl.meta.json → issues.20260427_112142_224127430.jsonl.meta.json} +0 -0
  327. /package/.beads/.br_history/{issues.20260424_205301_854556209.jsonl.meta.json → issues.20260427_112243_212317525.jsonl.meta.json} +0 -0
  328. /package/.beads/.br_history/{issues.20260424_210455_501610650.jsonl.meta.json → issues.20260427_112344_182300930.jsonl.meta.json} +0 -0
  329. /package/.beads/.br_history/{issues.20260424_212803_108840399.jsonl.meta.json → issues.20260427_112445_197922899.jsonl.meta.json} +0 -0
  330. /package/.beads/.br_history/{issues.20260425_045812_041336580.jsonl.meta.json → issues.20260427_112502_597304488.jsonl.meta.json} +0 -0
  331. /package/.beads/.br_history/{issues.20260425_045914_762139232.jsonl.meta.json → issues.20260427_112604_292832651.jsonl.meta.json} +0 -0
  332. /package/.beads/.br_history/{issues.20260425_050011_038094726.jsonl.meta.json → issues.20260427_112706_051581607.jsonl.meta.json} +0 -0
  333. /package/.beads/.br_history/{issues.20260425_050140_047103928.jsonl.meta.json → issues.20260427_112807_066213762.jsonl.meta.json} +0 -0
  334. /package/.beads/.br_history/{issues.20260425_054328_968771145.jsonl.meta.json → issues.20260427_112908_145315373.jsonl.meta.json} +0 -0
  335. /package/.beads/.br_history/{issues.20260425_054419_800564203.jsonl.meta.json → issues.20260427_113009_141079023.jsonl.meta.json} +0 -0
  336. /package/.beads/.br_history/{issues.20260425_054543_771812828.jsonl.meta.json → issues.20260427_113110_601071412.jsonl.meta.json} +0 -0
  337. /package/.beads/.br_history/{issues.20260425_054648_963773974.jsonl.meta.json → issues.20260427_113211_601412739.jsonl.meta.json} +0 -0
  338. /package/.beads/.br_history/{issues.20260425_054751_122349828.jsonl.meta.json → issues.20260427_113312_771171767.jsonl.meta.json} +0 -0
  339. /package/.beads/.br_history/{issues.20260425_060749_403415856.jsonl.meta.json → issues.20260427_113413_719165420.jsonl.meta.json} +0 -0
  340. /package/.beads/.br_history/{issues.20260425_062503_208821903.jsonl.meta.json → issues.20260427_113430_416576564.jsonl.meta.json} +0 -0
  341. /package/.beads/.br_history/{issues.20260425_063134_587505560.jsonl.meta.json → issues.20260427_113531_553842703.jsonl.meta.json} +0 -0
  342. /package/.beads/.br_history/{issues.20260425_064005_565019560.jsonl.meta.json → issues.20260427_113633_137526241.jsonl.meta.json} +0 -0
  343. /package/.beads/.br_history/{issues.20260425_064651_250053752.jsonl.meta.json → issues.20260427_113735_697152101.jsonl.meta.json} +0 -0
  344. /package/.beads/.br_history/{issues.20260425_065904_323410469.jsonl.meta.json → issues.20260427_113836_810884202.jsonl.meta.json} +0 -0
  345. /package/.beads/.br_history/{issues.20260425_070603_854872783.jsonl.meta.json → issues.20260427_113938_312284719.jsonl.meta.json} +0 -0
  346. /package/.beads/.br_history/{issues.20260425_071232_499550581.jsonl.meta.json → issues.20260427_114039_390178502.jsonl.meta.json} +0 -0
  347. /package/.beads/.br_history/{issues.20260425_071859_753108611.jsonl.meta.json → issues.20260427_114140_483586632.jsonl.meta.json} +0 -0
  348. /package/.beads/.br_history/{issues.20260425_171215_558114276.jsonl.meta.json → issues.20260427_114241_502376670.jsonl.meta.json} +0 -0
  349. /package/.beads/.br_history/{issues.20260425_171228_711028872.jsonl.meta.json → issues.20260427_114342_927243830.jsonl.meta.json} +0 -0
  350. /package/.beads/.br_history/{issues.20260425_171908_608455863.jsonl.meta.json → issues.20260427_114405_996651227.jsonl.meta.json} +0 -0
  351. /package/.beads/.br_history/{issues.20260425_172952_108071113.jsonl.meta.json → issues.20260427_114507_946708398.jsonl.meta.json} +0 -0
  352. /package/.beads/.br_history/{issues.20260425_200313_037876111.jsonl.meta.json → issues.20260427_114608_914493506.jsonl.meta.json} +0 -0
  353. /package/.beads/.br_history/{issues.20260425_201117_411540946.jsonl.meta.json → issues.20260427_114709_935565841.jsonl.meta.json} +0 -0
  354. /package/.beads/.br_history/{issues.20260425_210522_892936637.jsonl.meta.json → issues.20260427_114810_981588378.jsonl.meta.json} +0 -0
  355. /package/.beads/.br_history/{issues.20260425_210949_356368198.jsonl.meta.json → issues.20260427_114912_061702372.jsonl.meta.json} +0 -0
  356. /package/.beads/.br_history/{issues.20260425_211617_355720902.jsonl.meta.json → issues.20260427_115013_063113906.jsonl.meta.json} +0 -0
  357. /package/.beads/.br_history/{issues.20260425_213515_555595766.jsonl.meta.json → issues.20260427_115114_208497343.jsonl.meta.json} +0 -0
  358. /package/.beads/.br_history/{issues.20260425_214642_203845514.jsonl.meta.json → issues.20260427_115215_176080241.jsonl.meta.json} +0 -0
  359. /package/.beads/.br_history/{issues.20260425_221221_451474472.jsonl.meta.json → issues.20260427_115316_481573328.jsonl.meta.json} +0 -0
  360. /package/.beads/.br_history/{issues.20260425_222608_800503496.jsonl.meta.json → issues.20260427_115335_866978652.jsonl.meta.json} +0 -0
  361. /package/.beads/.br_history/{issues.20260426_071735_330251998.jsonl.meta.json → issues.20260427_115436_866087391.jsonl.meta.json} +0 -0
  362. /package/.beads/.br_history/{issues.20260426_071755_925764854.jsonl.meta.json → issues.20260427_115538_016094860.jsonl.meta.json} +0 -0
  363. /package/.beads/.br_history/{issues.20260426_071818_936440407.jsonl.meta.json → issues.20260427_115638_932947449.jsonl.meta.json} +0 -0
  364. /package/.beads/.br_history/{issues.20260426_071834_033200504.jsonl.meta.json → issues.20260427_115739_982932603.jsonl.meta.json} +0 -0
  365. /package/.beads/.br_history/{issues.20260426_072406_524696668.jsonl.meta.json → issues.20260427_115840_963681039.jsonl.meta.json} +0 -0
  366. /package/.beads/.br_history/{issues.20260426_073231_913315951.jsonl.meta.json → issues.20260427_115941_912431509.jsonl.meta.json} +0 -0
  367. /package/.beads/.br_history/{issues.20260426_074828_051470117.jsonl.meta.json → issues.20260427_120043_043356448.jsonl.meta.json} +0 -0
  368. /package/.beads/.br_history/{issues.20260426_080300_773872374.jsonl.meta.json → issues.20260427_120144_955596968.jsonl.meta.json} +0 -0
  369. /package/.beads/.br_history/{issues.20260426_121735_535252712.jsonl.meta.json → issues.20260427_120246_060733977.jsonl.meta.json} +0 -0
  370. /package/.beads/.br_history/{issues.20260426_125144_933153546.jsonl.meta.json → issues.20260427_120307_717985017.jsonl.meta.json} +0 -0
  371. /package/.beads/.br_history/{issues.20260426_132438_591463320.jsonl.meta.json → issues.20260427_120408_871846736.jsonl.meta.json} +0 -0
  372. /package/.beads/.br_history/{issues.20260426_134150_938793400.jsonl.meta.json → issues.20260427_121003_963750732.jsonl.meta.json} +0 -0
  373. /package/.beads/.br_history/{issues.20260426_162331_516939737.jsonl.meta.json → issues.20260427_121006_018509431.jsonl.meta.json} +0 -0
  374. /package/.beads/.br_history/{issues.20260426_162513_726336785.jsonl.meta.json → issues.20260427_121019_617062931.jsonl.meta.json} +0 -0
  375. /package/.beads/.br_history/{issues.20260426_162712_190824905.jsonl.meta.json → issues.20260427_121021_689536311.jsonl.meta.json} +0 -0
@@ -1,24 +1,17 @@
1
1
  const fs = require("fs")
2
2
  const path = require("path")
3
- const os = require("os")
4
3
  const { spawnSync } = require("child_process")
5
4
  const { SUPPORTED_ADAPTERS } = require("./adapter-schema")
6
5
  const { getRegistryPlugin } = require("./plugins-registry")
7
6
  const { getPluginInstallGuidance } = require("./plugin-install-guidance")
7
+ const { syncClientPluginResources } = require("./config")
8
8
  const {
9
9
  readPluginsLock,
10
10
  writePluginsLock,
11
11
  listInstalledPlugins
12
12
  } = require("./plugins-store")
13
13
 
14
- const BUNDLED_PLUGINS = {
15
- beads: path.resolve(__dirname, "..", "plugins", "beads", "plugin.json"),
16
- gwc: path.resolve(__dirname, "..", "plugins", "gwc", "plugin.json"),
17
- docker: path.resolve(__dirname, "..", "plugins", "docker", "plugin.json"),
18
- squirrelscan: path.resolve(__dirname, "..", "plugins", "squirrelscan", "plugin.json"),
19
- "agency-agents": path.resolve(__dirname, "..", "plugins", "agency-agents", "plugin.json"),
20
- "visual-explainer": path.resolve(__dirname, "..", "plugins", "visual-explainer", "plugin.json")
21
- }
14
+ const BUNDLED_PLUGINS = {}
22
15
 
23
16
  function validateNodeHook(hook, kind) {
24
17
  if (!hook) return null
@@ -85,6 +78,36 @@ function parseManifestFile(manifestPath) {
85
78
  recoverable: false
86
79
  })
87
80
  }
81
+
82
+ // Validate server_resources if present
83
+ if (raw.server_resources) {
84
+ if (typeof raw.server_resources !== "object" || Array.isArray(raw.server_resources)) {
85
+ throw Object.assign(new Error("Invalid plugin manifest: server_resources must be an object"), {
86
+ code: 85,
87
+ type: "invalid_argument",
88
+ recoverable: false
89
+ })
90
+ }
91
+
92
+ // Validate mcp resources
93
+ if (raw.server_resources.mcp && !Array.isArray(raw.server_resources.mcp)) {
94
+ throw Object.assign(new Error("Invalid plugin manifest: server_resources.mcp must be an array"), {
95
+ code: 85,
96
+ type: "invalid_argument",
97
+ recoverable: false
98
+ })
99
+ }
100
+
101
+ // Validate spec resources
102
+ if (raw.server_resources.specs && !Array.isArray(raw.server_resources.specs)) {
103
+ throw Object.assign(new Error("Invalid plugin manifest: server_resources.specs must be an array"), {
104
+ code: 85,
105
+ type: "invalid_argument",
106
+ recoverable: false
107
+ })
108
+ }
109
+ }
110
+
88
111
  return raw
89
112
  }
90
113
 
@@ -511,6 +534,7 @@ function installPlugin(ref, options = {}) {
511
534
  installed_at: new Date().toISOString(),
512
535
  commands: installedCommands,
513
536
  checks: manifest.checks || [],
537
+ server_resources: manifest.server_resources || {},
514
538
  lifecycle_hooks: {
515
539
  post_uninstall: serializeHook(loaded.manifestPath, manifest.post_uninstall, "post_uninstall")
516
540
  }
@@ -518,6 +542,15 @@ function installPlugin(ref, options = {}) {
518
542
 
519
543
  const postInstall = runPostInstall(manifest, loaded.manifestPath)
520
544
  writePluginsLock(lock)
545
+
546
+ // Sync client plugin resources to server if SUPERCLI_SERVER is set (fire and forget)
547
+ const server = process.env.SUPERCLI_SERVER
548
+ if (server && manifest.server_resources) {
549
+ syncClientPluginResources(server).catch(err => {
550
+ console.warn(`[Plugin ${manifest.name}] Failed to sync resources to server:`, err.message)
551
+ })
552
+ }
553
+
521
554
  return {
522
555
  plugin: manifest.name,
523
556
  version: manifest.version || "0.0.0",
@@ -2,6 +2,7 @@ const fs = require("fs")
2
2
  const path = require("path")
3
3
 
4
4
  const SERVER = process.env.SUPERCLI_SERVER
5
+ const API_KEY = process.env.SUPERCLI_API_KEY
5
6
 
6
7
  function getServerUrl() {
7
8
  return SERVER ? SERVER.replace(/\/$/, "") : null
@@ -13,12 +14,17 @@ async function serverFetch(endpoint, options = {}) {
13
14
  throw new Error("SUPERCLI_SERVER not set. Set it to your server URL.")
14
15
  }
15
16
  const url = `${base}${endpoint}`
17
+ const headers = {
18
+ "Content-Type": "application/json",
19
+ "Accept": "application/json",
20
+ ...options.headers,
21
+ }
22
+ if (API_KEY) {
23
+ headers["X-API-Key"] = API_KEY
24
+ }
16
25
  const res = await fetch(url, {
17
26
  ...options,
18
- headers: {
19
- "Content-Type": "application/json",
20
- ...options.headers,
21
- },
27
+ headers,
22
28
  })
23
29
  if (!res.ok) {
24
30
  const text = await res.text()
@@ -76,6 +82,8 @@ async function handleServerCommand(options) {
76
82
  return await handleOpenapi({ action, arg, flags, humanMode, output })
77
83
  case "jobs":
78
84
  return await handleJobs({ action, flags, humanMode, output, outputHumanTable })
85
+ case "adapters":
86
+ return await handleAdapters({ action, arg, flags, humanMode, output, outputHumanTable, positional })
79
87
  default:
80
88
  outputError({ code: 85, type: "invalid_argument", message: `Unknown server resource: ${resource}`, recoverable: false })
81
89
  return true
@@ -392,4 +400,166 @@ async function handleJobs({ action, flags, humanMode, output, outputHumanTable }
392
400
  throw new Error(`Unknown jobs action: ${action}. Use: list, prune`)
393
401
  }
394
402
 
403
+ async function handleAdapters({ action, arg, flags, humanMode, output, outputHumanTable, positional }) {
404
+ if (action === "list") {
405
+ const data = await serverFetch("/api/adapters?format=json")
406
+ if (humanMode) {
407
+ console.log("\n ⚡ Adapters\n")
408
+ outputHumanTable(data.adapters, [
409
+ { key: "name", label: "Name" },
410
+ { key: "execution_context", label: "Context" },
411
+ { key: "timeout_ms", label: "Timeout" },
412
+ { key: "allow_network", label: "Network" },
413
+ ])
414
+ console.log("")
415
+ } else {
416
+ output(data)
417
+ }
418
+ return true
419
+ }
420
+
421
+ if (action === "add") {
422
+ let payload
423
+ const jsonPath = flags["from-file"]
424
+ const sourcePath = flags["source-file"]
425
+ const jsonData = positional[3]
426
+
427
+ if (jsonPath) {
428
+ payload = readJsonFile(jsonPath)
429
+ if (sourcePath) {
430
+ payload.source = fs.readFileSync(path.resolve(sourcePath), "utf-8")
431
+ }
432
+ } else if (sourcePath) {
433
+ if (!jsonData) {
434
+ throw new Error("Usage: supercli server adapters add '{metadata}' --source-file <path>")
435
+ }
436
+ payload = JSON.parse(jsonData)
437
+ payload.source = fs.readFileSync(path.resolve(sourcePath), "utf-8")
438
+ } else if (flags["from-stdin"]) {
439
+ let stdinData = ""
440
+ for await (const chunk of process.stdin) {
441
+ stdinData += chunk
442
+ }
443
+ payload = JSON.parse(stdinData)
444
+ } else if (jsonData) {
445
+ payload = JSON.parse(jsonData)
446
+ } else {
447
+ throw new Error("Usage: supercli server adapters add '{json}' or --from-file <path> or --source-file <path>")
448
+ }
449
+
450
+ if (!payload.name || !payload.source) {
451
+ throw new Error("Adapter requires 'name' and 'source' fields")
452
+ }
453
+
454
+ const result = await serverFetch("/api/adapters", {
455
+ method: "POST",
456
+ body: JSON.stringify(payload),
457
+ })
458
+ output(result)
459
+ return true
460
+ }
461
+
462
+ if (action === "remove") {
463
+ const adapterName = positional[3]
464
+ if (!adapterName) {
465
+ throw new Error("Usage: supercli server adapters remove <name>")
466
+ }
467
+ const result = await serverFetch(`/api/adapters/${encodeURIComponent(adapterName)}`, {
468
+ method: "DELETE",
469
+ })
470
+ output(result)
471
+ return true
472
+ }
473
+
474
+ if (action === "update") {
475
+ const adapterName = positional[3]
476
+ const updateData = positional[4]
477
+ if (!adapterName) {
478
+ throw new Error("Usage: supercli server adapters update <name> '{json}' or --from-file <path>")
479
+ }
480
+ let payload
481
+ const jsonPath = flags["from-file"]
482
+ const sourcePath = flags["source-file"]
483
+
484
+ if (jsonPath) {
485
+ payload = readJsonFile(jsonPath)
486
+ if (sourcePath) {
487
+ payload.source = fs.readFileSync(path.resolve(sourcePath), "utf-8")
488
+ }
489
+ } else if (sourcePath) {
490
+ payload = JSON.parse(updateData || "{}")
491
+ payload.source = fs.readFileSync(path.resolve(sourcePath), "utf-8")
492
+ } else if (flags["from-stdin"]) {
493
+ let stdinData = ""
494
+ for await (const chunk of process.stdin) {
495
+ stdinData += chunk
496
+ }
497
+ payload = JSON.parse(stdinData)
498
+ } else {
499
+ payload = JSON.parse(updateData || "{}")
500
+ }
501
+
502
+ const result = await serverFetch(`/api/adapters/${encodeURIComponent(adapterName)}`, {
503
+ method: "PUT",
504
+ body: JSON.stringify(payload),
505
+ })
506
+ output(result)
507
+ return true
508
+ }
509
+
510
+ if (action === "packages") {
511
+ const packageAction = arg
512
+ const targetAdapterName = positional[4]
513
+
514
+ if (!targetAdapterName) {
515
+ throw new Error("Usage: supercli server adapters packages <list|add|remove> <name>")
516
+ }
517
+
518
+ if (packageAction === "list") {
519
+ const data = await serverFetch(`/api/adapters/${encodeURIComponent(targetAdapterName)}/packages?format=json`)
520
+ if (humanMode) {
521
+ console.log(`\n ⚡ Packages for ${targetAdapterName}\n`)
522
+ outputHumanTable(data.packages || [], [
523
+ { key: "package", label: "Package" },
524
+ { key: "version", label: "Version" },
525
+ ])
526
+ console.log("")
527
+ } else {
528
+ output(data)
529
+ }
530
+ return true
531
+ }
532
+
533
+ if (packageAction === "add") {
534
+ const packageName = flags.package
535
+ const version = flags.version
536
+ if (!packageName) {
537
+ throw new Error("Usage: supercli server adapters packages add <name> --package <pkg> --version <ver>")
538
+ }
539
+ const result = await serverFetch(`/api/adapters/${encodeURIComponent(targetAdapterName)}/packages`, {
540
+ method: "POST",
541
+ body: JSON.stringify({ package: packageName, version }),
542
+ })
543
+ output(result)
544
+ return true
545
+ }
546
+
547
+ if (packageAction === "remove") {
548
+ const packageName = flags.package
549
+ if (!packageName) {
550
+ throw new Error("Usage: supercli server adapters packages remove <name> --package <pkg>")
551
+ }
552
+ const result = await serverFetch(`/api/adapters/${encodeURIComponent(targetAdapterName)}/packages/${encodeURIComponent(packageName)}`, {
553
+ method: "DELETE",
554
+ })
555
+ output(result)
556
+ return true
557
+ }
558
+
559
+ throw new Error(`Unknown packages action: ${packageAction}. Use: list, add, remove`)
560
+ }
561
+
562
+ throw new Error(`Unknown adapters action: ${action}. Use: list, add, remove, update, packages`)
563
+ }
564
+
395
565
  module.exports = { handleServerCommand }
package/cli/supercli.js CHANGED
@@ -9,6 +9,7 @@ const {
9
9
  removeMcpServer,
10
10
  listMcpServers,
11
11
  upsertCommand,
12
+ getClientId,
12
13
  } = require("./config");
13
14
  const { execute } = require("./executor");
14
15
  const { buildCapabilities } = require("./help-json");
@@ -25,6 +26,7 @@ const { handleAskCommand } = require("./ask");
25
26
  const { handleSkillsCommand } = require("./skills");
26
27
  const { findNamespacePassthrough } = require("./namespace-passthrough");
27
28
  const { discoverPluginsByIntent } = require("./discover");
29
+ const { startDaemon, stopDaemon, getDaemonStatus, writeLog } = require("./daemon");
28
30
 
29
31
  const SERVER = process.env.SUPERCLI_SERVER;
30
32
  const hasServer = !!SERVER;
@@ -236,7 +238,7 @@ function renderTopLevelHelp(config) {
236
238
  console.log(' AI: supercli ask "<your natural language query>" # LLM-powered suggestions (no execution)');
237
239
  }
238
240
  console.log(" Server: supercli --server");
239
- console.log(" Server CLI: supercli server status | supercli server plugins <list|add|remove> | supercli server mcp <list|add|remove> | supercli server commands <list|add|remove> | supercli server jobs <list|prune>");
241
+ console.log(" Server CLI: supercli server status | supercli server plugins <list|add|remove> | supercli server mcp <list|add|remove> | supercli server commands <list|add|remove> | supercli server jobs <list|prune> | supercli server adapters <list|add|remove|update> | supercli server adapters packages <list|add|remove> <name>");
240
242
  console.log(
241
243
  " Flags: --help | --json | --human | --compact | --schema | --help-json | --server\n",
242
244
  );
@@ -570,6 +572,29 @@ async function main() {
570
572
  return;
571
573
  }
572
574
 
575
+ if (positional[0] === "daemon") {
576
+ const subcommand = positional[1] || "status";
577
+ switch (subcommand) {
578
+ case "start":
579
+ output(startDaemon());
580
+ break;
581
+ case "stop":
582
+ output(stopDaemon());
583
+ break;
584
+ case "status":
585
+ output(getDaemonStatus());
586
+ break;
587
+ default:
588
+ outputError({
589
+ code: 85,
590
+ type: "invalid_argument",
591
+ message: "Unknown daemon subcommand. Use: start|stop|status",
592
+ recoverable: false,
593
+ });
594
+ }
595
+ return;
596
+ }
597
+
573
598
  if (positional[0] === "commands") {
574
599
  const config = await loadConfig(SERVER);
575
600
  const namespaceFilter = flags.namespace
@@ -959,20 +984,15 @@ async function main() {
959
984
  data: result,
960
985
  };
961
986
 
962
- // Post job record (async, non-blocking)
963
- if (hasServer) {
964
- fetch(`${SERVER}/api/jobs`, {
965
- method: "POST",
966
- headers: { "Content-Type": "application/json" },
967
- body: JSON.stringify({
968
- command: `${namespace}.${resource}.${action}`,
969
- args: uFlags,
970
- status: "success",
971
- duration_ms: duration,
972
- timestamp: new Date().toISOString(),
973
- }),
974
- }).catch(() => {}); // silent fail
975
- }
987
+ // Write job record to local log (daemon will sync to server)
988
+ writeLog({
989
+ command: `${namespace}.${resource}.${action}`,
990
+ args: uFlags,
991
+ status: "success",
992
+ duration_ms: duration,
993
+ timestamp: new Date().toISOString(),
994
+ client_id: getClientId(),
995
+ });
976
996
 
977
997
  if (humanMode) {
978
998
  process.stderr.write(
@@ -158,6 +158,11 @@
158
158
  <li>Add server dashboard with command overview and job monitoring</li>
159
159
  <li>Add adapter management UI with package installation and configuration</li>
160
160
  <li>Add 12 new plugins: biome, bore, ccf-deadlines, code2prompt, dua-cli, forever, gitmoji-cli, quarto, readme-md-generator, vale, volta, wgcf</li>
161
+ <li>Add authentication system for API endpoints with public_access flag and API key management</li>
162
+ <li>Add daemon for background job log syncing to server</li>
163
+ <li>Add client tracking with client_id in job records</li>
164
+ <li>Add API keys management UI with create, list, copy, and delete functionality</li>
165
+ <li>Add clients.ejs for client management view</li>
161
166
  </ul>
162
167
  </section>
163
168
 
@@ -188,6 +193,7 @@
188
193
  </h2>
189
194
  <ul class="space-y-2 text-slate-300">
190
195
  <li>Bump version to 1.1.14</li>
196
+ <li>Bump version to 1.1.23</li>
191
197
  </ul>
192
198
  </section>
193
199
 
package/docs/index.html CHANGED
@@ -103,6 +103,9 @@
103
103
  background: #333333;
104
104
  transform: scale(1.05);
105
105
  }
106
+ .radial-gradient {
107
+ background: radial-gradient(circle at 30% 50%, rgba(0, 0, 0, 0.03) 0%, transparent 70%);
108
+ }
106
109
  </style>
107
110
  </head>
108
111
  <body class="bg-[#FBFBFA]">
@@ -114,6 +117,9 @@
114
117
  <h1 class="text-2xl font-semibold mt-3 text-[#111111]">supercli</h1>
115
118
  <p class="text-sm text-[#787774] mt-1">Universal Capability Router</p>
116
119
  </div>
120
+ <div id="backToServerUI" class="hidden">
121
+ <a href="/" class="block px-3 py-2 text-sm text-[#1F6C9F] hover:bg-[#F7F6F3] rounded-md">← Back to Server UI</a>
122
+ </div>
117
123
  <nav class="space-y-6">
118
124
  <div>
119
125
  <p class="text-xs uppercase tracking-widest text-[#787774] mb-3">Overview</p>
@@ -155,6 +161,46 @@
155
161
  </header>
156
162
 
157
163
  <main class="flex-1 overflow-y-auto bg-[#FBFBFA]">
164
+ <!-- Hero Section -->
165
+ <section class="relative px-8 py-20 bg-[#FBFBFA]">
166
+ <div class="absolute inset-0 opacity-[0.03] radial-gradient"></div>
167
+ <div class="max-w-5xl relative z-10">
168
+ <div class="space-y-8 scroll-reveal">
169
+ <div class="space-y-4">
170
+ <span class="tag px-3 py-1 inline-block">The Capability Layer</span>
171
+ <h2 class="editorial-heading text-6xl font-medium text-[#111111] leading-[1.1]">
172
+ Turn every tool into<br/>a discoverable capability
173
+ </h2>
174
+ </div>
175
+
176
+ <div class="max-w-2xl space-y-4 text-[#2F3437] text-lg">
177
+ <p>supercli standardizes inputs, outputs, and execution across 999+ bundled plugins — from AWS, GitHub, Docker, to Kubernetes and beyond.</p>
178
+ </div>
179
+
180
+ <div class="flex flex-wrap gap-8 pt-4">
181
+ <div class="space-y-1">
182
+ <p class="text-4xl font-semibold text-[#111111]">999+</p>
183
+ <p class="text-sm text-[#787774]">Bundled plugins</p>
184
+ </div>
185
+ <div class="space-y-1">
186
+ <p class="text-4xl font-semibold text-[#111111]">Zero</p>
187
+ <p class="text-sm text-[#787774]">Setup required</p>
188
+ </div>
189
+ <div class="space-y-1">
190
+ <p class="text-4xl font-semibold text-[#111111]">One</p>
191
+ <p class="text-sm text-[#787774]">Consistent interface</p>
192
+ </div>
193
+ </div>
194
+
195
+ <div class="pt-6">
196
+ <a href="plugins.html" class="inline-block px-8 py-4 bg-[#111111] text-white text-sm font-medium rounded-md hover:bg-[#333333] transition-colors">
197
+ Explore 999+ Plugins
198
+ </a>
199
+ </div>
200
+ </div>
201
+ </div>
202
+ </section>
203
+
158
204
  <section class="border-b border-[#EAEAEA] bg-white px-8 py-12">
159
205
  <div class="max-w-5xl">
160
206
  <p class="text-xs uppercase tracking-[0.2em] text-[#787774] mb-4">Quick filter</p>
@@ -195,18 +241,21 @@ supercli skills get beads.issue.create</code></pre>
195
241
  <h2 class="editorial-heading text-5xl font-medium text-[#111111]">Capability Sources</h2>
196
242
  </div>
197
243
  <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
198
- <div class="bento-card p-6">
199
- <h3 class="font-semibold text-[#111111] mb-2">Bundled Harnesses</h3>
200
- <p class="text-[#2F3437] text-sm">beads (issues/tasks), gwc (Google Workspace), commiat (commit automation) ship with the CLI.</p>
244
+ <div class="bento-card p-6 md:col-span-2 bg-[#E1F3FE]/10 border-[#E1F3FE]/30">
245
+ <div class="flex items-start justify-between gap-4">
246
+ <div class="space-y-3">
247
+ <h3 class="font-semibold text-[#111111]">Plugin Harnesses</h3>
248
+ <p class="text-[#2F3437] text-sm">999 bundled plugins (gh, aws, gcloud, az, docker, kubectl, terraform, stripe, supabase, and many more) via <code class="mono-text bg-[#F7F6F3] px-1 py-0.5 rounded text-xs border border-[#EAEAEA]">supercli plugins install</code>.</p>
249
+ </div>
250
+ <a href="plugins.html" class="inline-flex items-center px-4 py-2 bg-[#111111] text-white text-sm font-medium rounded-md hover:bg-[#333333] transition-colors whitespace-nowrap">
251
+ Explore Plugins
252
+ </a>
253
+ </div>
201
254
  </div>
202
255
  <div class="bento-card p-6">
203
256
  <h3 class="font-semibold text-[#111111] mb-2">Built-in Adapters</h3>
204
257
  <p class="text-[#2F3437] text-sm">OpenAPI specs, raw HTTP, and MCP servers become capabilities automatically.</p>
205
258
  </div>
206
- <div class="bento-card p-6">
207
- <h3 class="font-semibold text-[#111111] mb-2">Plugin Harnesses</h3>
208
- <p class="text-[#2F3437] text-sm">999 bundled plugins (gh, aws, gcloud, az, docker, kubectl, terraform, stripe, supabase, and many more) via <code class="mono-text bg-[#F7F6F3] px-1 py-0.5 rounded text-xs border border-[#EAEAEA]">supercli plugins install</code>.</p>
209
- </div>
210
259
  <div class="bento-card p-6">
211
260
  <h3 class="font-semibold text-[#111111] mb-2">AI Plans / Workflows</h3>
212
261
  <p class="text-[#2F3437] text-sm">Natural language <code class="mono-text bg-[#F7F6F3] px-1 py-0.5 rounded text-xs border border-[#EAEAEA]">ask</code> and <code class="mono-text bg-[#F7F6F3] px-1 py-0.5 rounded text-xs border border-[#EAEAEA]">plan</code> commands create DAGs of capabilities.</p>
@@ -285,14 +334,21 @@ supercli plugins show &lt;name&gt;</code></pre>
285
334
  <h2 class="editorial-heading text-5xl font-medium text-[#111111]">More Documentation</h2>
286
335
  </div>
287
336
  <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
337
+ <a href="plugins.html" class="bento-card p-6 md:col-span-2 bg-[#E1F3FE]/10 border-[#E1F3FE]/30 hover:border-[#E1F3FE]/50 transition-colors">
338
+ <div class="flex items-start justify-between gap-4">
339
+ <div class="space-y-2">
340
+ <h3 class="font-semibold text-[#111111] mono-text text-sm">Plugin Directory</h3>
341
+ <p class="text-[#2F3437] text-sm">Browse all 999+ plugins — from AWS and GitHub to Docker, Kubernetes, and beyond.</p>
342
+ </div>
343
+ <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#111111" stroke-width="2" class="flex-shrink-0 mt-1">
344
+ <path d="M5 12h14M12 5l7 7-7 7"/>
345
+ </svg>
346
+ </div>
347
+ </a>
288
348
  <div class="bento-card p-6">
289
349
  <h3 class="font-semibold text-[#111111] mb-2 mono-text text-sm">README.md</h3>
290
350
  <p class="text-[#2F3437] text-sm">Repository root documentation</p>
291
351
  </div>
292
- <a href="plugins.html" class="bento-card p-6 hover:border-[#111111] transition-colors">
293
- <h3 class="font-semibold text-[#111111] mb-2 mono-text text-sm">Plugin Directory</h3>
294
- <p class="text-[#2F3437] text-sm">Browse all 999 plugins</p>
295
- </a>
296
352
  <div class="bento-card p-6">
297
353
  <h3 class="font-semibold text-[#111111] mb-2 mono-text text-sm">docs/skills-catalog.md</h3>
298
354
  <p class="text-[#2F3437] text-sm">Skills reference catalog</p>
@@ -438,6 +494,33 @@ supercli plugins show &lt;name&gt;</code></pre>
438
494
  }
439
495
  loadServerDocs();
440
496
 
497
+ // Show "Back to Server UI" link if fromServerUI parameter is present
498
+ const urlParams = new URLSearchParams(window.location.search);
499
+ const fromServerUI = urlParams.get('fromServerUI') === '1';
500
+
501
+ if (fromServerUI) {
502
+ const backToServerUI = document.getElementById('backToServerUI');
503
+ if (backToServerUI) {
504
+ backToServerUI.classList.remove('hidden');
505
+ }
506
+
507
+ // Propagate fromServerUI parameter to all sidebar links (except back to server UI)
508
+ const sidebarLinks = document.querySelectorAll('#sidebar a');
509
+ sidebarLinks.forEach(link => {
510
+ const href = link.getAttribute('href');
511
+ // Skip the back to server UI link
512
+ if (link.closest('#backToServerUI')) return;
513
+
514
+ if (href && !href.startsWith('http') && !href.startsWith('#')) {
515
+ // Get current path to preserve /docs/ base
516
+ const currentPath = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);
517
+ const url = new URL(currentPath + href, window.location.origin);
518
+ url.searchParams.set('fromServerUI', '1');
519
+ link.setAttribute('href', url.pathname + url.search);
520
+ }
521
+ });
522
+ }
523
+
441
524
  // Load adapters documentation dynamically
442
525
  async function loadAdaptersDocs() {
443
526
  try {
package/docs/plugins.html CHANGED
@@ -109,6 +109,9 @@
109
109
  <h1 class="text-2xl font-semibold mt-3 text-[#111111]">supercli</h1>
110
110
  <p class="text-sm text-[#787774] mt-1">Plugin Directory</p>
111
111
  </div>
112
+ <div id="backToServerUI" class="hidden">
113
+ <a href="/" class="block px-3 py-2 text-sm text-[#1F6C9F] hover:bg-[#F7F6F3] rounded-md">← Back to Server UI</a>
114
+ </div>
112
115
  <nav class="space-y-6">
113
116
  <div>
114
117
  <p class="text-xs uppercase tracking-widest text-[#787774] mb-3">Navigation</p>
@@ -345,6 +348,33 @@
345
348
  if (e.target === mobileDrawer) mobileDrawer.classList.add('hidden');
346
349
  });
347
350
 
351
+ // Show "Back to Server UI" link if fromServerUI parameter is present
352
+ const urlParams = new URLSearchParams(window.location.search);
353
+ const fromServerUI = urlParams.get('fromServerUI') === '1';
354
+
355
+ if (fromServerUI) {
356
+ const backToServerUI = document.getElementById('backToServerUI');
357
+ if (backToServerUI) {
358
+ backToServerUI.classList.remove('hidden');
359
+ }
360
+
361
+ // Propagate fromServerUI parameter to all sidebar links (except back to server UI)
362
+ const sidebarLinks = document.querySelectorAll('#sidebar a');
363
+ sidebarLinks.forEach(link => {
364
+ const href = link.getAttribute('href');
365
+ // Skip the back to server UI link
366
+ if (link.closest('#backToServerUI')) return;
367
+
368
+ if (href && !href.startsWith('http') && !href.startsWith('#')) {
369
+ // Get current path to preserve /docs/ base
370
+ const currentPath = window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/') + 1);
371
+ const url = new URL(currentPath + href, window.location.origin);
372
+ url.searchParams.set('fromServerUI', '1');
373
+ link.setAttribute('href', url.pathname + url.search);
374
+ }
375
+ });
376
+ }
377
+
348
378
  // Scroll to top button
349
379
  const scrollTopBtn = document.getElementById('scrollTopBtn');
350
380