@daniel.stefan/metalink 1.3.1

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 (333) hide show
  1. package/README.md +160 -0
  2. package/package.json +96 -0
  3. package/packages/cli/dist/bin/cli.d.ts +3 -0
  4. package/packages/cli/dist/bin/cli.d.ts.map +1 -0
  5. package/packages/cli/dist/bin/cli.js +4 -0
  6. package/packages/cli/dist/bin/cli.js.map +1 -0
  7. package/packages/cli/dist/commands/config/init.d.ts +9 -0
  8. package/packages/cli/dist/commands/config/init.d.ts.map +1 -0
  9. package/packages/cli/dist/commands/config/init.js +38 -0
  10. package/packages/cli/dist/commands/config/init.js.map +1 -0
  11. package/packages/cli/dist/commands/config/validate.d.ts +9 -0
  12. package/packages/cli/dist/commands/config/validate.d.ts.map +1 -0
  13. package/packages/cli/dist/commands/config/validate.js +34 -0
  14. package/packages/cli/dist/commands/config/validate.js.map +1 -0
  15. package/packages/cli/dist/commands/daemon/restart.d.ts +15 -0
  16. package/packages/cli/dist/commands/daemon/restart.d.ts.map +1 -0
  17. package/packages/cli/dist/commands/daemon/restart.js +184 -0
  18. package/packages/cli/dist/commands/daemon/restart.js.map +1 -0
  19. package/packages/cli/dist/commands/daemon/start.d.ts +7 -0
  20. package/packages/cli/dist/commands/daemon/start.d.ts.map +1 -0
  21. package/packages/cli/dist/commands/daemon/start.js +85 -0
  22. package/packages/cli/dist/commands/daemon/start.js.map +1 -0
  23. package/packages/cli/dist/commands/daemon/status.d.ts +7 -0
  24. package/packages/cli/dist/commands/daemon/status.d.ts.map +1 -0
  25. package/packages/cli/dist/commands/daemon/status.js +69 -0
  26. package/packages/cli/dist/commands/daemon/status.js.map +1 -0
  27. package/packages/cli/dist/commands/daemon/stop.d.ts +8 -0
  28. package/packages/cli/dist/commands/daemon/stop.d.ts.map +1 -0
  29. package/packages/cli/dist/commands/daemon/stop.js +77 -0
  30. package/packages/cli/dist/commands/daemon/stop.js.map +1 -0
  31. package/packages/cli/dist/commands/import/mcpm.d.ts +10 -0
  32. package/packages/cli/dist/commands/import/mcpm.d.ts.map +1 -0
  33. package/packages/cli/dist/commands/import/mcpm.js +58 -0
  34. package/packages/cli/dist/commands/import/mcpm.js.map +1 -0
  35. package/packages/cli/dist/commands/safety/add-risky-pattern.d.ts +16 -0
  36. package/packages/cli/dist/commands/safety/add-risky-pattern.d.ts.map +1 -0
  37. package/packages/cli/dist/commands/safety/add-risky-pattern.js +72 -0
  38. package/packages/cli/dist/commands/safety/add-risky-pattern.js.map +1 -0
  39. package/packages/cli/dist/commands/safety/add-risky.d.ts +12 -0
  40. package/packages/cli/dist/commands/safety/add-risky.d.ts.map +1 -0
  41. package/packages/cli/dist/commands/safety/add-risky.js +52 -0
  42. package/packages/cli/dist/commands/safety/add-risky.js.map +1 -0
  43. package/packages/cli/dist/commands/safety/add-safe-pattern.d.ts +16 -0
  44. package/packages/cli/dist/commands/safety/add-safe-pattern.d.ts.map +1 -0
  45. package/packages/cli/dist/commands/safety/add-safe-pattern.js +72 -0
  46. package/packages/cli/dist/commands/safety/add-safe-pattern.js.map +1 -0
  47. package/packages/cli/dist/commands/safety/add-safe.d.ts +12 -0
  48. package/packages/cli/dist/commands/safety/add-safe.d.ts.map +1 -0
  49. package/packages/cli/dist/commands/safety/add-safe.js +52 -0
  50. package/packages/cli/dist/commands/safety/add-safe.js.map +1 -0
  51. package/packages/cli/dist/commands/safety/check.d.ts +9 -0
  52. package/packages/cli/dist/commands/safety/check.d.ts.map +1 -0
  53. package/packages/cli/dist/commands/safety/check.js +36 -0
  54. package/packages/cli/dist/commands/safety/check.js.map +1 -0
  55. package/packages/cli/dist/commands/safety/export.d.ts +10 -0
  56. package/packages/cli/dist/commands/safety/export.d.ts.map +1 -0
  57. package/packages/cli/dist/commands/safety/export.js +48 -0
  58. package/packages/cli/dist/commands/safety/export.js.map +1 -0
  59. package/packages/cli/dist/commands/safety/import.d.ts +12 -0
  60. package/packages/cli/dist/commands/safety/import.d.ts.map +1 -0
  61. package/packages/cli/dist/commands/safety/import.js +78 -0
  62. package/packages/cli/dist/commands/safety/import.js.map +1 -0
  63. package/packages/cli/dist/commands/safety/index.d.ts +8 -0
  64. package/packages/cli/dist/commands/safety/index.d.ts.map +1 -0
  65. package/packages/cli/dist/commands/safety/index.js +46 -0
  66. package/packages/cli/dist/commands/safety/index.js.map +1 -0
  67. package/packages/cli/dist/commands/safety/list.d.ts +6 -0
  68. package/packages/cli/dist/commands/safety/list.d.ts.map +1 -0
  69. package/packages/cli/dist/commands/safety/list.js +77 -0
  70. package/packages/cli/dist/commands/safety/list.js.map +1 -0
  71. package/packages/cli/dist/commands/safety/remove.d.ts +9 -0
  72. package/packages/cli/dist/commands/safety/remove.d.ts.map +1 -0
  73. package/packages/cli/dist/commands/safety/remove.js +46 -0
  74. package/packages/cli/dist/commands/safety/remove.js.map +1 -0
  75. package/packages/cli/dist/commands/safety/reset.d.ts +9 -0
  76. package/packages/cli/dist/commands/safety/reset.d.ts.map +1 -0
  77. package/packages/cli/dist/commands/safety/reset.js +46 -0
  78. package/packages/cli/dist/commands/safety/reset.js.map +1 -0
  79. package/packages/cli/dist/commands/safety/validate.d.ts +9 -0
  80. package/packages/cli/dist/commands/safety/validate.d.ts.map +1 -0
  81. package/packages/cli/dist/commands/safety/validate.js +51 -0
  82. package/packages/cli/dist/commands/safety/validate.js.map +1 -0
  83. package/packages/cli/dist/commands/secret/get.d.ts +9 -0
  84. package/packages/cli/dist/commands/secret/get.d.ts.map +1 -0
  85. package/packages/cli/dist/commands/secret/get.js +26 -0
  86. package/packages/cli/dist/commands/secret/get.js.map +1 -0
  87. package/packages/cli/dist/commands/secret/set.d.ts +10 -0
  88. package/packages/cli/dist/commands/secret/set.d.ts.map +1 -0
  89. package/packages/cli/dist/commands/secret/set.js +22 -0
  90. package/packages/cli/dist/commands/secret/set.js.map +1 -0
  91. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.d.ts +2 -0
  92. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.d.ts.map +1 -0
  93. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js +234 -0
  94. package/packages/cli/dist/commands/server/__tests__/server-management-e2e.test.js.map +1 -0
  95. package/packages/cli/dist/commands/server/add.d.ts +14 -0
  96. package/packages/cli/dist/commands/server/add.d.ts.map +1 -0
  97. package/packages/cli/dist/commands/server/add.js +86 -0
  98. package/packages/cli/dist/commands/server/add.js.map +1 -0
  99. package/packages/cli/dist/commands/server/available.d.ts +10 -0
  100. package/packages/cli/dist/commands/server/available.d.ts.map +1 -0
  101. package/packages/cli/dist/commands/server/available.js +62 -0
  102. package/packages/cli/dist/commands/server/available.js.map +1 -0
  103. package/packages/cli/dist/commands/server/debug.d.ts +18 -0
  104. package/packages/cli/dist/commands/server/debug.d.ts.map +1 -0
  105. package/packages/cli/dist/commands/server/debug.js +165 -0
  106. package/packages/cli/dist/commands/server/debug.js.map +1 -0
  107. package/packages/cli/dist/commands/server/info.d.ts +13 -0
  108. package/packages/cli/dist/commands/server/info.d.ts.map +1 -0
  109. package/packages/cli/dist/commands/server/info.js +62 -0
  110. package/packages/cli/dist/commands/server/info.js.map +1 -0
  111. package/packages/cli/dist/commands/server/list.d.ts +10 -0
  112. package/packages/cli/dist/commands/server/list.d.ts.map +1 -0
  113. package/packages/cli/dist/commands/server/list.js +105 -0
  114. package/packages/cli/dist/commands/server/list.js.map +1 -0
  115. package/packages/cli/dist/commands/server/refresh-tools.d.ts +13 -0
  116. package/packages/cli/dist/commands/server/refresh-tools.d.ts.map +1 -0
  117. package/packages/cli/dist/commands/server/refresh-tools.js +46 -0
  118. package/packages/cli/dist/commands/server/refresh-tools.js.map +1 -0
  119. package/packages/cli/dist/commands/server/remove.d.ts +12 -0
  120. package/packages/cli/dist/commands/server/remove.d.ts.map +1 -0
  121. package/packages/cli/dist/commands/server/remove.js +39 -0
  122. package/packages/cli/dist/commands/server/remove.js.map +1 -0
  123. package/packages/cli/dist/commands/server/restart.d.ts +9 -0
  124. package/packages/cli/dist/commands/server/restart.d.ts.map +1 -0
  125. package/packages/cli/dist/commands/server/restart.js +30 -0
  126. package/packages/cli/dist/commands/server/restart.js.map +1 -0
  127. package/packages/cli/dist/commands/server/start.d.ts +9 -0
  128. package/packages/cli/dist/commands/server/start.d.ts.map +1 -0
  129. package/packages/cli/dist/commands/server/start.js +37 -0
  130. package/packages/cli/dist/commands/server/start.js.map +1 -0
  131. package/packages/cli/dist/commands/server/status.d.ts +9 -0
  132. package/packages/cli/dist/commands/server/status.d.ts.map +1 -0
  133. package/packages/cli/dist/commands/server/status.js +30 -0
  134. package/packages/cli/dist/commands/server/status.js.map +1 -0
  135. package/packages/cli/dist/commands/server/stop.d.ts +9 -0
  136. package/packages/cli/dist/commands/server/stop.d.ts.map +1 -0
  137. package/packages/cli/dist/commands/server/stop.js +31 -0
  138. package/packages/cli/dist/commands/server/stop.js.map +1 -0
  139. package/packages/cli/dist/commands/server/validate.d.ts +15 -0
  140. package/packages/cli/dist/commands/server/validate.d.ts.map +1 -0
  141. package/packages/cli/dist/commands/server/validate.js +87 -0
  142. package/packages/cli/dist/commands/server/validate.js.map +1 -0
  143. package/packages/cli/dist/commands/stdio.d.ts +36 -0
  144. package/packages/cli/dist/commands/stdio.d.ts.map +1 -0
  145. package/packages/cli/dist/commands/stdio.js +85 -0
  146. package/packages/cli/dist/commands/stdio.js.map +1 -0
  147. package/packages/cli/dist/commands/tool/execute-confirm.d.ts +12 -0
  148. package/packages/cli/dist/commands/tool/execute-confirm.d.ts.map +1 -0
  149. package/packages/cli/dist/commands/tool/execute-confirm.js +98 -0
  150. package/packages/cli/dist/commands/tool/execute-confirm.js.map +1 -0
  151. package/packages/cli/dist/commands/tool/execute.d.ts +12 -0
  152. package/packages/cli/dist/commands/tool/execute.d.ts.map +1 -0
  153. package/packages/cli/dist/commands/tool/execute.js +55 -0
  154. package/packages/cli/dist/commands/tool/execute.js.map +1 -0
  155. package/packages/cli/dist/commands/tool/list.d.ts +13 -0
  156. package/packages/cli/dist/commands/tool/list.d.ts.map +1 -0
  157. package/packages/cli/dist/commands/tool/list.js +91 -0
  158. package/packages/cli/dist/commands/tool/list.js.map +1 -0
  159. package/packages/cli/dist/commands/tool/search.d.ts +12 -0
  160. package/packages/cli/dist/commands/tool/search.d.ts.map +1 -0
  161. package/packages/cli/dist/commands/tool/search.js +87 -0
  162. package/packages/cli/dist/commands/tool/search.js.map +1 -0
  163. package/packages/cli/dist/index.d.ts +2 -0
  164. package/packages/cli/dist/index.d.ts.map +1 -0
  165. package/packages/cli/dist/index.js +9 -0
  166. package/packages/cli/dist/index.js.map +1 -0
  167. package/packages/cli/dist/utils/daemon-checker.d.ts +18 -0
  168. package/packages/cli/dist/utils/daemon-checker.d.ts.map +1 -0
  169. package/packages/cli/dist/utils/daemon-checker.js +69 -0
  170. package/packages/cli/dist/utils/daemon-checker.js.map +1 -0
  171. package/packages/cli/dist/utils/daemon-endpoint.d.ts +7 -0
  172. package/packages/cli/dist/utils/daemon-endpoint.d.ts.map +1 -0
  173. package/packages/cli/dist/utils/daemon-endpoint.js +13 -0
  174. package/packages/cli/dist/utils/daemon-endpoint.js.map +1 -0
  175. package/packages/cli/dist/utils/get-configured-port.d.ts +43 -0
  176. package/packages/cli/dist/utils/get-configured-port.d.ts.map +1 -0
  177. package/packages/cli/dist/utils/get-configured-port.js +141 -0
  178. package/packages/cli/dist/utils/get-configured-port.js.map +1 -0
  179. package/packages/cli/dist/utils/stdio-bridge.d.ts +48 -0
  180. package/packages/cli/dist/utils/stdio-bridge.d.ts.map +1 -0
  181. package/packages/cli/dist/utils/stdio-bridge.js +181 -0
  182. package/packages/cli/dist/utils/stdio-bridge.js.map +1 -0
  183. package/packages/cli/package.json +48 -0
  184. package/packages/core/dist/config/defaults.d.ts +36 -0
  185. package/packages/core/dist/config/defaults.d.ts.map +1 -0
  186. package/packages/core/dist/config/defaults.js +324 -0
  187. package/packages/core/dist/config/defaults.js.map +1 -0
  188. package/packages/core/dist/config/index.d.ts +9 -0
  189. package/packages/core/dist/config/index.d.ts.map +1 -0
  190. package/packages/core/dist/config/index.js +14 -0
  191. package/packages/core/dist/config/index.js.map +1 -0
  192. package/packages/core/dist/config/loader.d.ts +269 -0
  193. package/packages/core/dist/config/loader.d.ts.map +1 -0
  194. package/packages/core/dist/config/loader.js +777 -0
  195. package/packages/core/dist/config/loader.js.map +1 -0
  196. package/packages/core/dist/config/registry.d.ts +212 -0
  197. package/packages/core/dist/config/registry.d.ts.map +1 -0
  198. package/packages/core/dist/config/registry.js +754 -0
  199. package/packages/core/dist/config/registry.js.map +1 -0
  200. package/packages/core/dist/config/schema.d.ts +4352 -0
  201. package/packages/core/dist/config/schema.d.ts.map +1 -0
  202. package/packages/core/dist/config/schema.js +267 -0
  203. package/packages/core/dist/config/schema.js.map +1 -0
  204. package/packages/core/dist/daemon.d.ts +7 -0
  205. package/packages/core/dist/daemon.d.ts.map +1 -0
  206. package/packages/core/dist/daemon.js +116 -0
  207. package/packages/core/dist/daemon.js.map +1 -0
  208. package/packages/core/dist/http-client-retry.d.ts +67 -0
  209. package/packages/core/dist/http-client-retry.d.ts.map +1 -0
  210. package/packages/core/dist/http-client-retry.js +133 -0
  211. package/packages/core/dist/http-client-retry.js.map +1 -0
  212. package/packages/core/dist/http-client-updated.d.ts +147 -0
  213. package/packages/core/dist/http-client-updated.d.ts.map +1 -0
  214. package/packages/core/dist/http-client-updated.js +452 -0
  215. package/packages/core/dist/http-client-updated.js.map +1 -0
  216. package/packages/core/dist/http-client.d.ts +207 -0
  217. package/packages/core/dist/http-client.d.ts.map +1 -0
  218. package/packages/core/dist/http-client.js +704 -0
  219. package/packages/core/dist/http-client.js.map +1 -0
  220. package/packages/core/dist/index.d.ts +13 -0
  221. package/packages/core/dist/index.d.ts.map +1 -0
  222. package/packages/core/dist/index.js +23 -0
  223. package/packages/core/dist/index.js.map +1 -0
  224. package/packages/core/dist/logging/index.d.ts +46 -0
  225. package/packages/core/dist/logging/index.d.ts.map +1 -0
  226. package/packages/core/dist/logging/index.js +74 -0
  227. package/packages/core/dist/logging/index.js.map +1 -0
  228. package/packages/core/dist/metrics/index.d.ts +339 -0
  229. package/packages/core/dist/metrics/index.d.ts.map +1 -0
  230. package/packages/core/dist/metrics/index.js +792 -0
  231. package/packages/core/dist/metrics/index.js.map +1 -0
  232. package/packages/core/dist/plugins/index.d.ts +49 -0
  233. package/packages/core/dist/plugins/index.d.ts.map +1 -0
  234. package/packages/core/dist/plugins/index.js +82 -0
  235. package/packages/core/dist/plugins/index.js.map +1 -0
  236. package/packages/core/dist/secrets/index.d.ts +6 -0
  237. package/packages/core/dist/secrets/index.d.ts.map +1 -0
  238. package/packages/core/dist/secrets/index.js +5 -0
  239. package/packages/core/dist/secrets/index.js.map +1 -0
  240. package/packages/core/dist/secrets/keyring.d.ts +54 -0
  241. package/packages/core/dist/secrets/keyring.d.ts.map +1 -0
  242. package/packages/core/dist/secrets/keyring.js +141 -0
  243. package/packages/core/dist/secrets/keyring.js.map +1 -0
  244. package/packages/core/dist/server/batch-executor.d.ts +83 -0
  245. package/packages/core/dist/server/batch-executor.d.ts.map +1 -0
  246. package/packages/core/dist/server/batch-executor.js +291 -0
  247. package/packages/core/dist/server/batch-executor.js.map +1 -0
  248. package/packages/core/dist/server/circuit-breaker.d.ts +215 -0
  249. package/packages/core/dist/server/circuit-breaker.d.ts.map +1 -0
  250. package/packages/core/dist/server/circuit-breaker.js +330 -0
  251. package/packages/core/dist/server/circuit-breaker.js.map +1 -0
  252. package/packages/core/dist/server/client-detection.d.ts +40 -0
  253. package/packages/core/dist/server/client-detection.d.ts.map +1 -0
  254. package/packages/core/dist/server/client-detection.js +242 -0
  255. package/packages/core/dist/server/client-detection.js.map +1 -0
  256. package/packages/core/dist/server/client-profiles.d.ts +102 -0
  257. package/packages/core/dist/server/client-profiles.d.ts.map +1 -0
  258. package/packages/core/dist/server/client-profiles.js +254 -0
  259. package/packages/core/dist/server/client-profiles.js.map +1 -0
  260. package/packages/core/dist/server/http.d.ts +386 -0
  261. package/packages/core/dist/server/http.d.ts.map +1 -0
  262. package/packages/core/dist/server/http.js +4253 -0
  263. package/packages/core/dist/server/http.js.map +1 -0
  264. package/packages/core/dist/server/index.d.ts +7 -0
  265. package/packages/core/dist/server/index.d.ts.map +1 -0
  266. package/packages/core/dist/server/index.js +6 -0
  267. package/packages/core/dist/server/index.js.map +1 -0
  268. package/packages/core/dist/server/manager.d.ts +458 -0
  269. package/packages/core/dist/server/manager.d.ts.map +1 -0
  270. package/packages/core/dist/server/manager.js +3255 -0
  271. package/packages/core/dist/server/manager.js.map +1 -0
  272. package/packages/core/dist/server/managers/HttpConnectionManager.d.ts +69 -0
  273. package/packages/core/dist/server/managers/HttpConnectionManager.d.ts.map +1 -0
  274. package/packages/core/dist/server/managers/HttpConnectionManager.js +214 -0
  275. package/packages/core/dist/server/managers/HttpConnectionManager.js.map +1 -0
  276. package/packages/core/dist/server/managers/ProcessManager.d.ts +128 -0
  277. package/packages/core/dist/server/managers/ProcessManager.d.ts.map +1 -0
  278. package/packages/core/dist/server/managers/ProcessManager.js +443 -0
  279. package/packages/core/dist/server/managers/ProcessManager.js.map +1 -0
  280. package/packages/core/dist/server/managers/SchemaCacheManager.d.ts +152 -0
  281. package/packages/core/dist/server/managers/SchemaCacheManager.d.ts.map +1 -0
  282. package/packages/core/dist/server/managers/SchemaCacheManager.js +426 -0
  283. package/packages/core/dist/server/managers/SchemaCacheManager.js.map +1 -0
  284. package/packages/core/dist/server/managers/index.d.ts +9 -0
  285. package/packages/core/dist/server/managers/index.d.ts.map +1 -0
  286. package/packages/core/dist/server/managers/index.js +9 -0
  287. package/packages/core/dist/server/managers/index.js.map +1 -0
  288. package/packages/core/dist/server/metrics.d.ts +134 -0
  289. package/packages/core/dist/server/metrics.d.ts.map +1 -0
  290. package/packages/core/dist/server/metrics.js +273 -0
  291. package/packages/core/dist/server/metrics.js.map +1 -0
  292. package/packages/core/dist/server/prompts.d.ts +58 -0
  293. package/packages/core/dist/server/prompts.d.ts.map +1 -0
  294. package/packages/core/dist/server/prompts.js +405 -0
  295. package/packages/core/dist/server/prompts.js.map +1 -0
  296. package/packages/core/dist/server/protocol-versions.d.ts +49 -0
  297. package/packages/core/dist/server/protocol-versions.d.ts.map +1 -0
  298. package/packages/core/dist/server/protocol-versions.js +173 -0
  299. package/packages/core/dist/server/protocol-versions.js.map +1 -0
  300. package/packages/core/dist/server/resources.d.ts +64 -0
  301. package/packages/core/dist/server/resources.d.ts.map +1 -0
  302. package/packages/core/dist/server/resources.js +243 -0
  303. package/packages/core/dist/server/resources.js.map +1 -0
  304. package/packages/core/dist/server/schema-store.d.ts +84 -0
  305. package/packages/core/dist/server/schema-store.d.ts.map +1 -0
  306. package/packages/core/dist/server/schema-store.js +234 -0
  307. package/packages/core/dist/server/schema-store.js.map +1 -0
  308. package/packages/core/dist/server/schema-validator.d.ts +51 -0
  309. package/packages/core/dist/server/schema-validator.d.ts.map +1 -0
  310. package/packages/core/dist/server/schema-validator.js +208 -0
  311. package/packages/core/dist/server/schema-validator.js.map +1 -0
  312. package/packages/core/dist/server/token-calculator.d.ts +44 -0
  313. package/packages/core/dist/server/token-calculator.d.ts.map +1 -0
  314. package/packages/core/dist/server/token-calculator.js +53 -0
  315. package/packages/core/dist/server/token-calculator.js.map +1 -0
  316. package/packages/core/dist/server/types.d.ts +45 -0
  317. package/packages/core/dist/server/types.d.ts.map +1 -0
  318. package/packages/core/dist/server/types.js +5 -0
  319. package/packages/core/dist/server/types.js.map +1 -0
  320. package/packages/core/dist/utils/file-lock.d.ts +73 -0
  321. package/packages/core/dist/utils/file-lock.d.ts.map +1 -0
  322. package/packages/core/dist/utils/file-lock.js +235 -0
  323. package/packages/core/dist/utils/file-lock.js.map +1 -0
  324. package/packages/core/package.json +36 -0
  325. package/packages/dashboard/dist/assets/index-B7hvkCMu.css +1 -0
  326. package/packages/dashboard/dist/assets/index-yZhLPpzr.js +1 -0
  327. package/packages/dashboard/dist/index.html +14 -0
  328. package/packages/dashboard/package.json +24 -0
  329. package/packages/shared/dist/version.d.ts +2 -0
  330. package/packages/shared/dist/version.d.ts.map +1 -0
  331. package/packages/shared/dist/version.js +2 -0
  332. package/packages/shared/dist/version.js.map +1 -0
  333. package/packages/shared/package.json +18 -0
@@ -0,0 +1,12 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyAddSafe extends Command {
3
+ static description: string;
4
+ static args: {
5
+ tool: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ reason: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=add-safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-safe.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/add-safe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAGnD,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,OAAO;IAChD,MAAM,CAAC,WAAW,SAA2D;IAE7E,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuC3B"}
@@ -0,0 +1,52 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class SafetyAddSafe extends Command {
4
+ async run() {
5
+ const { args, flags } = await this.parse(SafetyAddSafe);
6
+ // Normalize tool identifier: convert - to :
7
+ const toolId = args.tool.includes(':') ? args.tool : args.tool.replace('-', ':');
8
+ try {
9
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/safety/tools/safe`, {
10
+ method: 'POST',
11
+ headers: {
12
+ 'Content-Type': 'application/json',
13
+ },
14
+ body: JSON.stringify({
15
+ tool: toolId,
16
+ }),
17
+ });
18
+ if (!response.ok) {
19
+ const data = await response.json();
20
+ this.error(`Failed to add safe override: ${data.error || 'Unknown error'}`);
21
+ }
22
+ const result = await response.json();
23
+ if (result.success) {
24
+ this.log(`✓ Tool '${toolId}' marked as safe`);
25
+ if (flags.reason) {
26
+ this.log(` Reason: ${flags.reason}`);
27
+ }
28
+ }
29
+ else {
30
+ this.error(result.message || 'Failed to add safe override');
31
+ }
32
+ }
33
+ catch (error) {
34
+ this.error(`Failed to add safe override: ${error instanceof Error ? error.message : String(error)}`);
35
+ }
36
+ }
37
+ }
38
+ SafetyAddSafe.description = 'Mark a tool as safe (override default classification)';
39
+ SafetyAddSafe.args = {
40
+ tool: Args.string({
41
+ description: 'Tool identifier (server:toolName or server-toolName)',
42
+ required: true,
43
+ }),
44
+ };
45
+ SafetyAddSafe.flags = {
46
+ reason: Flags.string({
47
+ char: 'r',
48
+ description: 'Optional reason for marking as safe',
49
+ }),
50
+ };
51
+ export default SafetyAddSafe;
52
+ //# sourceMappingURL=add-safe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-safe.js","sourceRoot":"","sources":["../../../src/commands/safety/add-safe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAqB,aAAc,SAAQ,OAAO;IAiBhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAExD,4CAA4C;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAEjF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,iBAAiB,EAAE,2BAA2B,EACjD;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,MAAM;iBACb,CAAC;aACH,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA4C,CAAC;YAE/E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,WAAW,MAAM,kBAAkB,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,IAAI,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;;AAtDM,yBAAW,GAAG,uDAAuD,CAAC;AAEtE,kBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,sDAAsD;QACnE,QAAQ,EAAE,IAAI;KACf,CAAC;CACH,CAAC;AAEK,mBAAK,GAAG;IACb,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,qCAAqC;KACnD,CAAC;CACH,CAAC;eAfiB,aAAa"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyCheck extends Command {
3
+ static description: string;
4
+ static args: {
5
+ tool: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAAsC;IAExD,MAAM,CAAC,IAAI;;MAKT;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkC3B"}
@@ -0,0 +1,36 @@
1
+ import { Command, Args } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class SafetyCheck extends Command {
4
+ async run() {
5
+ const { args } = await this.parse(SafetyCheck);
6
+ // Normalize tool identifier: convert - to :
7
+ const [server, tool] = args.tool.replace('-', ':').split(':');
8
+ if (!server || !tool) {
9
+ this.error('Invalid format. Use: server:toolName or server-toolName');
10
+ }
11
+ try {
12
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/safety/check/${encodeURIComponent(server)}/${encodeURIComponent(tool)}`);
13
+ if (!response.ok) {
14
+ const data = await response.json();
15
+ this.error(`Failed to check tool: ${data.error || 'Unknown error'}`);
16
+ }
17
+ const data = await response.json();
18
+ this.log(`Tool: ${server}:${tool}`);
19
+ this.log(`Safety Level: ${data.safety}`);
20
+ this.log(`Reason: ${data.reason}`);
21
+ this.log(`Requires Confirmation: ${data.requiresConfirmation ? 'Yes' : 'No'}`);
22
+ }
23
+ catch (error) {
24
+ this.error(`Failed to check tool safety: ${error instanceof Error ? error.message : String(error)}`);
25
+ }
26
+ }
27
+ }
28
+ SafetyCheck.description = 'Check if a tool is safe or risky';
29
+ SafetyCheck.args = {
30
+ tool: Args.string({
31
+ description: 'Tool identifier (server-toolName or server:toolName)',
32
+ required: true,
33
+ }),
34
+ };
35
+ export default SafetyCheck;
36
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/commands/safety/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAqB,WAAY,SAAQ,OAAO;IAU9C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE/C,4CAA4C;QAC5C,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,iBAAiB,EAAE,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CACvG,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAI/B,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACnC,IAAI,CAAC,GAAG,CAAC,0BAA0B,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;;AA1CM,uBAAW,GAAG,kCAAkC,CAAC;AAEjD,gBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,sDAAsD;QACnE,QAAQ,EAAE,IAAI;KACf,CAAC;CACH,CAAC;eARiB,WAAW"}
@@ -0,0 +1,10 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyExport extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ output: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
6
+ pretty: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
7
+ };
8
+ run(): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAK7C,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAC,WAAW,SAAwC;IAE1D,MAAM,CAAC,KAAK;;;MAWV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsC3B"}
@@ -0,0 +1,48 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ class SafetyExport extends Command {
6
+ async run() {
7
+ const { flags } = await this.parse(SafetyExport);
8
+ try {
9
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/safety?include_patterns=true`);
10
+ if (!response.ok) {
11
+ const data = await response.json();
12
+ this.error(`Failed to fetch rules: ${data.error || 'Unknown error'}`);
13
+ }
14
+ const data = await response.json();
15
+ const outputPath = path.resolve(flags.output);
16
+ const outputDir = path.dirname(outputPath);
17
+ // Ensure output directory exists
18
+ if (!fs.existsSync(outputDir)) {
19
+ fs.mkdirSync(outputDir, { recursive: true });
20
+ }
21
+ const jsonContent = flags.pretty ? JSON.stringify(data, null, 2) : JSON.stringify(data);
22
+ fs.writeFileSync(outputPath, jsonContent, 'utf-8');
23
+ this.log(`✓ Safety rules exported to: ${outputPath}`);
24
+ this.log(` - Safe tool overrides: ${data.safeToolOverrides?.length || 0}`);
25
+ this.log(` - Risky tool overrides: ${data.riskyToolOverrides?.length || 0}`);
26
+ this.log(` - Safe patterns: ${data.safePatterns?.length || 0}`);
27
+ this.log(` - Risky patterns: ${data.riskyPatterns?.length || 0}`);
28
+ }
29
+ catch (error) {
30
+ this.error(`Failed to export rules: ${error instanceof Error ? error.message : String(error)}`);
31
+ }
32
+ }
33
+ }
34
+ SafetyExport.description = 'Export safety rules to a JSON file';
35
+ SafetyExport.flags = {
36
+ output: Flags.string({
37
+ char: 'o',
38
+ description: 'Output file path (default: safety-rules.json)',
39
+ default: 'safety-rules.json',
40
+ }),
41
+ pretty: Flags.boolean({
42
+ char: 'p',
43
+ description: 'Pretty-print JSON output',
44
+ default: true,
45
+ }),
46
+ };
47
+ export default SafetyExport;
48
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/safety/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAqB,YAAa,SAAQ,OAAO;IAgB/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,iBAAiB,EAAE,sCAAsC,CAAC,CAAC;YAE3F,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAK/B,CAAC;YAEF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE3C,iCAAiC;YACjC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACxF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;YAEnD,IAAI,CAAC,GAAG,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5E,IAAI,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,kBAAkB,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;;AApDM,wBAAW,GAAG,oCAAoC,CAAC;AAEnD,kBAAK,GAAG;IACb,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,+CAA+C;QAC5D,OAAO,EAAE,mBAAmB;KAC7B,CAAC;IACF,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC;QACpB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,IAAI;KACd,CAAC;CACH,CAAC;eAdiB,YAAY"}
@@ -0,0 +1,12 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyImport extends Command {
3
+ static description: string;
4
+ static args: {
5
+ file: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ merge: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
9
+ };
10
+ run(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,aAAa,CAAC;AAInD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAC,WAAW,SAA0C;IAE5D,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;MAMV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0E3B"}
@@ -0,0 +1,78 @@
1
+ import { Command, Args, Flags } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ import * as fs from 'fs';
4
+ class SafetyImport extends Command {
5
+ async run() {
6
+ const { args, flags } = await this.parse(SafetyImport);
7
+ try {
8
+ // Read and parse the JSON file
9
+ if (!fs.existsSync(args.file)) {
10
+ this.error(`File not found: ${args.file}`);
11
+ }
12
+ const fileContent = fs.readFileSync(args.file, 'utf-8');
13
+ let importData;
14
+ try {
15
+ importData = JSON.parse(fileContent);
16
+ }
17
+ catch {
18
+ this.error(`Invalid JSON in file: ${args.file}`);
19
+ }
20
+ // Validate structure
21
+ if (typeof importData !== 'object' || importData === null) {
22
+ this.error('Invalid safety rules format: expected object');
23
+ }
24
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/safety/import`, {
25
+ method: 'POST',
26
+ headers: {
27
+ 'Content-Type': 'application/json',
28
+ },
29
+ body: JSON.stringify({
30
+ rules: importData,
31
+ merge: flags.merge,
32
+ }),
33
+ });
34
+ if (!response.ok) {
35
+ if (response.status === 404) {
36
+ this.error('Import endpoint not yet implemented on the server. Phase 2 CLI development pending.');
37
+ }
38
+ const data = await response.json();
39
+ this.error(`Failed to import rules: ${data.error || 'Unknown error'}`);
40
+ }
41
+ const result = await response.json();
42
+ if (result.success) {
43
+ this.log(`✓ Safety rules imported successfully`);
44
+ if (result.imported) {
45
+ this.log(` - Safe tools: ${result.imported.safeTools}`);
46
+ this.log(` - Risky tools: ${result.imported.riskyTools}`);
47
+ this.log(` - Safe patterns: ${result.imported.safePatterns}`);
48
+ this.log(` - Risky patterns: ${result.imported.riskyPatterns}`);
49
+ }
50
+ if (flags.merge) {
51
+ this.log(` (merged with existing rules)`);
52
+ }
53
+ }
54
+ else {
55
+ this.error(result.message || 'Failed to import rules');
56
+ }
57
+ }
58
+ catch (error) {
59
+ this.error(`Failed to import rules: ${error instanceof Error ? error.message : String(error)}`);
60
+ }
61
+ }
62
+ }
63
+ SafetyImport.description = 'Import safety rules from a JSON file';
64
+ SafetyImport.args = {
65
+ file: Args.string({
66
+ description: 'JSON file to import',
67
+ required: true,
68
+ }),
69
+ };
70
+ SafetyImport.flags = {
71
+ merge: Flags.boolean({
72
+ char: 'm',
73
+ description: 'Merge with existing rules instead of replacing',
74
+ default: false,
75
+ }),
76
+ };
77
+ export default SafetyImport;
78
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/commands/safety/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyIndex extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static strict: boolean;
6
+ run(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAAkD;IAEpE,MAAM,CAAC,QAAQ,WAYb;IAEF,MAAM,CAAC,MAAM,UAAS;IAEhB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA0B3B"}
@@ -0,0 +1,46 @@
1
+ import { Command } from '@oclif/core';
2
+ class SafetyIndex extends Command {
3
+ async run() {
4
+ this.log('Safety Rule Management Commands');
5
+ this.log('');
6
+ this.log('Usage:');
7
+ this.log(' <%= config.bin %> safety COMMAND [OPTIONS]');
8
+ this.log('');
9
+ this.log('Commands:');
10
+ this.log(' list List all safety rules and patterns');
11
+ this.log(' check TOOL Check if a tool is safe or risky');
12
+ this.log(' add-safe TOOL Mark a tool as safe');
13
+ this.log(' add-risky TOOL Mark a tool as risky');
14
+ this.log(' remove TOOL Remove a tool override (revert to default)');
15
+ this.log(' add-safe-pattern PAT Add a regex pattern for safe tools');
16
+ this.log(' add-risky-pattern PAT Add a regex pattern for risky tools');
17
+ this.log(' validate SERVER Validate rules for a specific server');
18
+ this.log(' reset Reset all rules to defaults');
19
+ this.log(' export Export rules to JSON file');
20
+ this.log(' import FILE Import rules from JSON file');
21
+ this.log('');
22
+ this.log('Examples:');
23
+ this.log(' metalink safety list');
24
+ this.log(' metalink safety check memory-search_nodes');
25
+ this.log(' metalink safety add-safe memory-search_nodes');
26
+ this.log(' metalink safety add-risky file-write');
27
+ this.log(' metalink safety export --output backup.json');
28
+ }
29
+ }
30
+ SafetyIndex.description = 'Manage tool safety rules and classifications';
31
+ SafetyIndex.examples = [
32
+ '<%= config.bin %> safety list',
33
+ '<%= config.bin %> safety check memory-search_nodes',
34
+ '<%= config.bin %> safety add-safe memory-search_nodes',
35
+ '<%= config.bin %> safety add-risky file-write',
36
+ '<%= config.bin %> safety remove memory-search_nodes',
37
+ '<%= config.bin %> safety add-safe-pattern "memory-.*"',
38
+ '<%= config.bin %> safety add-risky-pattern ".*-delete"',
39
+ '<%= config.bin %> safety validate memory',
40
+ '<%= config.bin %> safety reset --force',
41
+ '<%= config.bin %> safety export --output rules.json',
42
+ '<%= config.bin %> safety import rules.json --merge',
43
+ ];
44
+ SafetyIndex.strict = false;
45
+ export default SafetyIndex;
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/safety/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAqB,WAAY,SAAQ,OAAO;IAmB9C,KAAK,CAAC,GAAG;QACP,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QACzE,IAAI,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC5D,CAAC;;AA3CM,uBAAW,GAAG,8CAA8C,CAAC;AAE7D,oBAAQ,GAAG;IAChB,+BAA+B;IAC/B,oDAAoD;IACpD,uDAAuD;IACvD,+CAA+C;IAC/C,qDAAqD;IACrD,uDAAuD;IACvD,wDAAwD;IACxD,0CAA0C;IAC1C,wCAAwC;IACxC,qDAAqD;IACrD,oDAAoD;CACrD,CAAC;AAEK,kBAAM,GAAG,KAAK,CAAC;eAjBH,WAAW"}
@@ -0,0 +1,6 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyList extends Command {
3
+ static description: string;
4
+ run(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IAC7C,MAAM,CAAC,WAAW,SAAwC;IAEpD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsF3B"}
@@ -0,0 +1,77 @@
1
+ import { Command } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class SafetyList extends Command {
4
+ async run() {
5
+ try {
6
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/safety?include_patterns=true`);
7
+ if (!response.ok) {
8
+ const data = await response.json();
9
+ this.error(`Failed to fetch rules: ${data.error || 'Unknown error'}`);
10
+ }
11
+ const data = await response.json();
12
+ this.log('=== Safe Tool Overrides ===');
13
+ if (data.safeToolOverrides && data.safeToolOverrides.length > 0) {
14
+ for (const tool of data.safeToolOverrides) {
15
+ this.log(` ✓ ${tool}`);
16
+ }
17
+ }
18
+ else {
19
+ this.log(' (none)');
20
+ }
21
+ this.log('\n=== Risky Tool Overrides ===');
22
+ if (data.riskyToolOverrides && data.riskyToolOverrides.length > 0) {
23
+ for (const tool of data.riskyToolOverrides) {
24
+ this.log(` ✗ ${tool}`);
25
+ }
26
+ }
27
+ else {
28
+ this.log(' (none)');
29
+ }
30
+ this.log('\n=== Safe Patterns ===');
31
+ if (data.safePatterns && data.safePatterns.length > 0) {
32
+ for (const pattern of data.safePatterns) {
33
+ this.log(` ~ ${pattern}`);
34
+ }
35
+ }
36
+ else {
37
+ this.log(' (none)');
38
+ }
39
+ this.log('\n=== Risky Patterns ===');
40
+ if (data.riskyPatterns && data.riskyPatterns.length > 0) {
41
+ for (const pattern of data.riskyPatterns) {
42
+ this.log(` ~ ${pattern}`);
43
+ }
44
+ }
45
+ else {
46
+ this.log(' (none)');
47
+ }
48
+ // Display argument inspection rules (v1.1.29+)
49
+ if (data.argumentInspectionRules && data.argumentInspectionRules.length > 0) {
50
+ this.log('\n=== Argument Inspection Rules ===');
51
+ for (const rule of data.argumentInspectionRules) {
52
+ this.log(`\n Tool: ${rule.tool}`);
53
+ this.log(` Argument Field: ${rule.argumentField}`);
54
+ this.log(` Mode: ${rule.whitelistMode ? 'Whitelist (only safe patterns allowed)' : 'Blacklist (risky patterns blocked)'}`);
55
+ if (rule.safeCommandPatterns && rule.safeCommandPatterns.length > 0) {
56
+ this.log(` Safe Patterns (${rule.safeCommandPatterns.length}):`);
57
+ for (const pattern of rule.safeCommandPatterns) {
58
+ this.log(` ✓ ${pattern}`);
59
+ }
60
+ }
61
+ if (rule.riskyCommandPatterns && rule.riskyCommandPatterns.length > 0) {
62
+ this.log(` Risky Patterns (${rule.riskyCommandPatterns.length}):`);
63
+ for (const pattern of rule.riskyCommandPatterns) {
64
+ this.log(` ✗ ${pattern}`);
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ catch (error) {
71
+ this.error(`Failed to list safety rules: ${error instanceof Error ? error.message : String(error)}`);
72
+ }
73
+ }
74
+ }
75
+ SafetyList.description = 'List all safety rules and patterns';
76
+ export default SafetyList;
77
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/safety/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyRemove extends Command {
3
+ static description: string;
4
+ static args: {
5
+ rule: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,OAAO;IAC/C,MAAM,CAAC,WAAW,SAA0E;IAE5F,MAAM,CAAC,IAAI;;MAKT;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuC3B"}
@@ -0,0 +1,46 @@
1
+ import { Command, Args } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class SafetyRemove extends Command {
4
+ async run() {
5
+ const { args } = await this.parse(SafetyRemove);
6
+ // Normalize rule identifier: convert - to : for tool names
7
+ // (patterns may contain dashes, so only convert if it looks like a tool)
8
+ let normalizedRule = args.rule;
9
+ if (!args.rule.includes(':') && args.rule.includes('-') && !args.rule.includes('*')) {
10
+ // Looks like server-tool format, convert to server:tool
11
+ normalizedRule = args.rule.replace('-', ':');
12
+ }
13
+ try {
14
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/safety/rules/${encodeURIComponent(normalizedRule)}`, {
15
+ method: 'DELETE',
16
+ headers: {
17
+ 'Content-Type': 'application/json',
18
+ },
19
+ });
20
+ if (!response.ok) {
21
+ const data = await response.json();
22
+ this.error(`Failed to remove rule: ${data.error || 'Unknown error'}`);
23
+ }
24
+ const result = await response.json();
25
+ if (result.success) {
26
+ this.log(`✓ Rule '${normalizedRule}' removed`);
27
+ this.log(` Tool will now use default safety classification`);
28
+ }
29
+ else {
30
+ this.error(result.message || 'Failed to remove rule');
31
+ }
32
+ }
33
+ catch (error) {
34
+ this.error(`Failed to remove rule: ${error instanceof Error ? error.message : String(error)}`);
35
+ }
36
+ }
37
+ }
38
+ SafetyRemove.description = 'Remove safety override for a tool (revert to default classification)';
39
+ SafetyRemove.args = {
40
+ rule: Args.string({
41
+ description: 'Rule name to remove',
42
+ required: true,
43
+ }),
44
+ };
45
+ export default SafetyRemove;
46
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/commands/safety/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAqB,YAAa,SAAQ,OAAO;IAU/C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAEhD,2DAA2D;QAC3D,yEAAyE;QACzE,IAAI,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpF,wDAAwD;YACxD,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,iBAAiB,EAAE,wBAAwB,kBAAkB,CAAC,cAAc,CAAC,EAAE,EAClF;gBACE,MAAM,EAAE,QAAQ;gBAChB,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;aACF,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA4C,CAAC;YAE/E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,WAAW,cAAc,WAAW,CAAC,CAAC;gBAC/C,IAAI,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;;AA/CM,wBAAW,GAAG,sEAAsE,CAAC;AAErF,iBAAI,GAAG;IACZ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,qBAAqB;QAClC,QAAQ,EAAE,IAAI;KACf,CAAC;CACH,CAAC;eARiB,YAAY"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyReset extends Command {
3
+ static description: string;
4
+ static flags: {
5
+ force: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=reset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAG7C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAAwC;IAE1D,MAAM,CAAC,KAAK;;MAKV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuC3B"}
@@ -0,0 +1,46 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import { getDaemonEndpoint } from '../../utils/daemon-endpoint.js';
3
+ class SafetyReset extends Command {
4
+ async run() {
5
+ const { flags } = await this.parse(SafetyReset);
6
+ if (!flags.force) {
7
+ this.log('WARNING: This will reset all safety rule customizations to defaults.');
8
+ this.log('All custom safe/risky tool overrides and patterns will be removed.');
9
+ this.error('Use --force to confirm reset');
10
+ }
11
+ try {
12
+ const response = await fetch(`${getDaemonEndpoint()}/api/v1/safety/reset`, {
13
+ method: 'POST',
14
+ headers: {
15
+ 'Content-Type': 'application/json',
16
+ },
17
+ body: JSON.stringify({
18
+ force: true,
19
+ }),
20
+ });
21
+ if (!response.ok) {
22
+ const data = await response.json();
23
+ this.error(`Failed to reset rules: ${data.error || 'Unknown error'}`);
24
+ }
25
+ const result = await response.json();
26
+ if (result.success) {
27
+ this.log('✓ All safety rules reset to defaults');
28
+ }
29
+ else {
30
+ this.error(result.message || 'Failed to reset rules');
31
+ }
32
+ }
33
+ catch (error) {
34
+ this.error(`Failed to reset rules: ${error instanceof Error ? error.message : String(error)}`);
35
+ }
36
+ }
37
+ }
38
+ SafetyReset.description = 'Reset all safety rules to defaults';
39
+ SafetyReset.flags = {
40
+ force: Flags.boolean({
41
+ char: 'f',
42
+ description: 'Skip confirmation prompt',
43
+ }),
44
+ };
45
+ export default SafetyReset;
46
+ //# sourceMappingURL=reset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/commands/safety/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAEnE,MAAqB,WAAY,SAAQ,OAAO;IAU9C,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAEhD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;YACjF,IAAI,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;YAC/E,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,iBAAiB,EAAE,sBAAsB,EAC5C;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,KAAK,EAAE,IAAI;iBACZ,CAAC;aACH,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAwB,CAAC;gBACzD,IAAI,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAA4C,CAAC;YAE/E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACnD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,uBAAuB,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,0BAA0B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;IACH,CAAC;;AA/CM,uBAAW,GAAG,oCAAoC,CAAC;AAEnD,iBAAK,GAAG;IACb,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE,GAAG;QACT,WAAW,EAAE,0BAA0B;KACxC,CAAC;CACH,CAAC;eARiB,WAAW"}
@@ -0,0 +1,9 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class SafetyValidate extends Command {
3
+ static description: string;
4
+ static args: {
5
+ server: import("@oclif/core/lib/interfaces/parser.js").Arg<string, Record<string, unknown>>;
6
+ };
7
+ run(): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/safety/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,MAAM,aAAa,CAAC;AAG5C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,OAAO;IACjD,MAAM,CAAC,WAAW,SAA+D;IAEjF,MAAM,CAAC,IAAI;;MAKT;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA8C3B"}