sandstream-kit 1.0.0

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 (519) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +617 -0
  3. package/dist/adapters/api-key-adapter.d.ts +35 -0
  4. package/dist/adapters/api-key-adapter.js +46 -0
  5. package/dist/adapters/api-key-adapter.js.map +1 -0
  6. package/dist/adapters/clerk-auth.d.ts +6 -0
  7. package/dist/adapters/clerk-auth.js +20 -0
  8. package/dist/adapters/clerk-auth.js.map +1 -0
  9. package/dist/adapters/cloudflare-r2.d.ts +6 -0
  10. package/dist/adapters/cloudflare-r2.js +136 -0
  11. package/dist/adapters/cloudflare-r2.js.map +1 -0
  12. package/dist/adapters/expo-eas.d.ts +6 -0
  13. package/dist/adapters/expo-eas.js +129 -0
  14. package/dist/adapters/expo-eas.js.map +1 -0
  15. package/dist/adapters/flagsmith-flags.d.ts +5 -0
  16. package/dist/adapters/flagsmith-flags.js +20 -0
  17. package/dist/adapters/flagsmith-flags.js.map +1 -0
  18. package/dist/adapters/flyio-hosting.d.ts +2 -0
  19. package/dist/adapters/flyio-hosting.js +143 -0
  20. package/dist/adapters/flyio-hosting.js.map +1 -0
  21. package/dist/adapters/index.d.ts +6 -0
  22. package/dist/adapters/index.js +48 -0
  23. package/dist/adapters/index.js.map +1 -0
  24. package/dist/adapters/inngest-background.d.ts +5 -0
  25. package/dist/adapters/inngest-background.js +19 -0
  26. package/dist/adapters/inngest-background.js.map +1 -0
  27. package/dist/adapters/liveblocks-realtime.d.ts +11 -0
  28. package/dist/adapters/liveblocks-realtime.js +62 -0
  29. package/dist/adapters/liveblocks-realtime.js.map +1 -0
  30. package/dist/adapters/loops-email.d.ts +6 -0
  31. package/dist/adapters/loops-email.js +18 -0
  32. package/dist/adapters/loops-email.js.map +1 -0
  33. package/dist/adapters/neon-db.d.ts +10 -0
  34. package/dist/adapters/neon-db.js +94 -0
  35. package/dist/adapters/neon-db.js.map +1 -0
  36. package/dist/adapters/planetscale-db.d.ts +11 -0
  37. package/dist/adapters/planetscale-db.js +134 -0
  38. package/dist/adapters/planetscale-db.js.map +1 -0
  39. package/dist/adapters/posthog-analytics.d.ts +6 -0
  40. package/dist/adapters/posthog-analytics.js +22 -0
  41. package/dist/adapters/posthog-analytics.js.map +1 -0
  42. package/dist/adapters/railway-hosting.d.ts +2 -0
  43. package/dist/adapters/railway-hosting.js +136 -0
  44. package/dist/adapters/railway-hosting.js.map +1 -0
  45. package/dist/adapters/resend-email.d.ts +35 -0
  46. package/dist/adapters/resend-email.js +109 -0
  47. package/dist/adapters/resend-email.js.map +1 -0
  48. package/dist/adapters/searxng-instance.d.ts +6 -0
  49. package/dist/adapters/searxng-instance.js +240 -0
  50. package/dist/adapters/searxng-instance.js.map +1 -0
  51. package/dist/adapters/sentry-monitoring.d.ts +7 -0
  52. package/dist/adapters/sentry-monitoring.js +27 -0
  53. package/dist/adapters/sentry-monitoring.js.map +1 -0
  54. package/dist/adapters/stripe-payments.d.ts +6 -0
  55. package/dist/adapters/stripe-payments.js +134 -0
  56. package/dist/adapters/stripe-payments.js.map +1 -0
  57. package/dist/adapters/supabase-db.d.ts +6 -0
  58. package/dist/adapters/supabase-db.js +130 -0
  59. package/dist/adapters/supabase-db.js.map +1 -0
  60. package/dist/adapters/tinybird-analytics.d.ts +5 -0
  61. package/dist/adapters/tinybird-analytics.js +20 -0
  62. package/dist/adapters/tinybird-analytics.js.map +1 -0
  63. package/dist/adapters/trigger-background.d.ts +6 -0
  64. package/dist/adapters/trigger-background.js +20 -0
  65. package/dist/adapters/trigger-background.js.map +1 -0
  66. package/dist/adapters/types.d.ts +7 -0
  67. package/dist/adapters/types.js +2 -0
  68. package/dist/adapters/types.js.map +1 -0
  69. package/dist/adapters/upstash-redis.d.ts +6 -0
  70. package/dist/adapters/upstash-redis.js +88 -0
  71. package/dist/adapters/upstash-redis.js.map +1 -0
  72. package/dist/adapters/vercel-hosting.d.ts +6 -0
  73. package/dist/adapters/vercel-hosting.js +112 -0
  74. package/dist/adapters/vercel-hosting.js.map +1 -0
  75. package/dist/agent-adapter-model.d.ts +108 -0
  76. package/dist/agent-adapter-model.js +6 -0
  77. package/dist/agent-adapter-model.js.map +1 -0
  78. package/dist/agent-adapter-service.d.ts +67 -0
  79. package/dist/agent-adapter-service.js +299 -0
  80. package/dist/agent-adapter-service.js.map +1 -0
  81. package/dist/agent-config.d.ts +56 -0
  82. package/dist/agent-config.js +129 -0
  83. package/dist/agent-config.js.map +1 -0
  84. package/dist/agent-governance-model.d.ts +128 -0
  85. package/dist/agent-governance-model.js +6 -0
  86. package/dist/agent-governance-model.js.map +1 -0
  87. package/dist/agent-governance-service.d.ts +101 -0
  88. package/dist/agent-governance-service.js +319 -0
  89. package/dist/agent-governance-service.js.map +1 -0
  90. package/dist/alert-rules-engine.d.ts +102 -0
  91. package/dist/alert-rules-engine.js +210 -0
  92. package/dist/alert-rules-engine.js.map +1 -0
  93. package/dist/analytics-service.d.ts +126 -0
  94. package/dist/analytics-service.js +318 -0
  95. package/dist/analytics-service.js.map +1 -0
  96. package/dist/analyze.d.ts +19 -0
  97. package/dist/analyze.js +311 -0
  98. package/dist/analyze.js.map +1 -0
  99. package/dist/apm-instrumentor.d.ts +119 -0
  100. package/dist/apm-instrumentor.js +225 -0
  101. package/dist/apm-instrumentor.js.map +1 -0
  102. package/dist/approval-model.d.ts +82 -0
  103. package/dist/approval-model.js +6 -0
  104. package/dist/approval-model.js.map +1 -0
  105. package/dist/approval-service.d.ts +39 -0
  106. package/dist/approval-service.js +236 -0
  107. package/dist/approval-service.js.map +1 -0
  108. package/dist/approval.d.ts +22 -0
  109. package/dist/approval.js +148 -0
  110. package/dist/approval.js.map +1 -0
  111. package/dist/audit-logging-model.d.ts +157 -0
  112. package/dist/audit-logging-model.js +6 -0
  113. package/dist/audit-logging-model.js.map +1 -0
  114. package/dist/audit-logging-service.d.ts +89 -0
  115. package/dist/audit-logging-service.js +367 -0
  116. package/dist/audit-logging-service.js.map +1 -0
  117. package/dist/audit-secrets.d.ts +42 -0
  118. package/dist/audit-secrets.js +126 -0
  119. package/dist/audit-secrets.js.map +1 -0
  120. package/dist/audit.d.ts +43 -0
  121. package/dist/audit.js +286 -0
  122. package/dist/audit.js.map +1 -0
  123. package/dist/author-dashboard.d.ts +84 -0
  124. package/dist/author-dashboard.js +204 -0
  125. package/dist/author-dashboard.js.map +1 -0
  126. package/dist/author-notifications.d.ts +130 -0
  127. package/dist/author-notifications.js +261 -0
  128. package/dist/author-notifications.js.map +1 -0
  129. package/dist/author-verification.d.ts +79 -0
  130. package/dist/author-verification.js +257 -0
  131. package/dist/author-verification.js.map +1 -0
  132. package/dist/autonomous-setup-model.d.ts +117 -0
  133. package/dist/autonomous-setup-model.js +6 -0
  134. package/dist/autonomous-setup-model.js.map +1 -0
  135. package/dist/autonomous-setup-service.d.ts +74 -0
  136. package/dist/autonomous-setup-service.js +325 -0
  137. package/dist/autonomous-setup-service.js.map +1 -0
  138. package/dist/badge-system.d.ts +70 -0
  139. package/dist/badge-system.js +210 -0
  140. package/dist/badge-system.js.map +1 -0
  141. package/dist/baseline.d.ts +34 -0
  142. package/dist/baseline.js +78 -0
  143. package/dist/baseline.js.map +1 -0
  144. package/dist/beta-program-service.d.ts +112 -0
  145. package/dist/beta-program-service.js +240 -0
  146. package/dist/beta-program-service.js.map +1 -0
  147. package/dist/budget.d.ts +34 -0
  148. package/dist/budget.js +159 -0
  149. package/dist/budget.js.map +1 -0
  150. package/dist/bumblebee.d.ts +143 -0
  151. package/dist/bumblebee.js +384 -0
  152. package/dist/bumblebee.js.map +1 -0
  153. package/dist/cache-manager.d.ts +97 -0
  154. package/dist/cache-manager.js +244 -0
  155. package/dist/cache-manager.js.map +1 -0
  156. package/dist/cdn-adapter.d.ts +64 -0
  157. package/dist/cdn-adapter.js +263 -0
  158. package/dist/cdn-adapter.js.map +1 -0
  159. package/dist/certification-workflow-model.d.ts +95 -0
  160. package/dist/certification-workflow-model.js +6 -0
  161. package/dist/certification-workflow-model.js.map +1 -0
  162. package/dist/certification-workflow-service.d.ts +72 -0
  163. package/dist/certification-workflow-service.js +305 -0
  164. package/dist/certification-workflow-service.js.map +1 -0
  165. package/dist/check-design.d.ts +38 -0
  166. package/dist/check-design.js +256 -0
  167. package/dist/check-design.js.map +1 -0
  168. package/dist/check-gitignore.d.ts +39 -0
  169. package/dist/check-gitignore.js +156 -0
  170. package/dist/check-gitignore.js.map +1 -0
  171. package/dist/check-hooks.d.ts +15 -0
  172. package/dist/check-hooks.js +72 -0
  173. package/dist/check-hooks.js.map +1 -0
  174. package/dist/check-lock.d.ts +16 -0
  175. package/dist/check-lock.js +94 -0
  176. package/dist/check-lock.js.map +1 -0
  177. package/dist/check-secrets.d.ts +11 -0
  178. package/dist/check-secrets.js +320 -0
  179. package/dist/check-secrets.js.map +1 -0
  180. package/dist/check-security.d.ts +13 -0
  181. package/dist/check-security.js +887 -0
  182. package/dist/check-security.js.map +1 -0
  183. package/dist/check-services.d.ts +10 -0
  184. package/dist/check-services.js +44 -0
  185. package/dist/check-services.js.map +1 -0
  186. package/dist/check-skills.d.ts +8 -0
  187. package/dist/check-skills.js +26 -0
  188. package/dist/check-skills.js.map +1 -0
  189. package/dist/check-tests.d.ts +43 -0
  190. package/dist/check-tests.js +175 -0
  191. package/dist/check-tests.js.map +1 -0
  192. package/dist/check-tools.d.ts +8 -0
  193. package/dist/check-tools.js +42 -0
  194. package/dist/check-tools.js.map +1 -0
  195. package/dist/check-web-search.d.ts +12 -0
  196. package/dist/check-web-search.js +168 -0
  197. package/dist/check-web-search.js.map +1 -0
  198. package/dist/ci-cd-publisher.d.ts +162 -0
  199. package/dist/ci-cd-publisher.js +319 -0
  200. package/dist/ci-cd-publisher.js.map +1 -0
  201. package/dist/cli.d.ts +2 -0
  202. package/dist/cli.js +4074 -0
  203. package/dist/cli.js.map +1 -0
  204. package/dist/clone.d.ts +25 -0
  205. package/dist/clone.js +73 -0
  206. package/dist/clone.js.map +1 -0
  207. package/dist/completions.d.ts +8 -0
  208. package/dist/completions.js +250 -0
  209. package/dist/completions.js.map +1 -0
  210. package/dist/compression-manager.d.ts +107 -0
  211. package/dist/compression-manager.js +250 -0
  212. package/dist/compression-manager.js.map +1 -0
  213. package/dist/config.d.ts +233 -0
  214. package/dist/config.js +255 -0
  215. package/dist/config.js.map +1 -0
  216. package/dist/context.d.ts +38 -0
  217. package/dist/context.js +86 -0
  218. package/dist/context.js.map +1 -0
  219. package/dist/cost-monitor.d.ts +72 -0
  220. package/dist/cost-monitor.js +218 -0
  221. package/dist/cost-monitor.js.map +1 -0
  222. package/dist/create-plugin.d.ts +22 -0
  223. package/dist/create-plugin.js +266 -0
  224. package/dist/create-plugin.js.map +1 -0
  225. package/dist/database.d.ts +123 -0
  226. package/dist/database.js +354 -0
  227. package/dist/database.js.map +1 -0
  228. package/dist/datadog-adapter.d.ts +60 -0
  229. package/dist/datadog-adapter.js +245 -0
  230. package/dist/datadog-adapter.js.map +1 -0
  231. package/dist/doctor.d.ts +15 -0
  232. package/dist/doctor.js +131 -0
  233. package/dist/doctor.js.map +1 -0
  234. package/dist/documentation-generator.d.ts +226 -0
  235. package/dist/documentation-generator.js +348 -0
  236. package/dist/documentation-generator.js.map +1 -0
  237. package/dist/elevation-scopes.d.ts +40 -0
  238. package/dist/elevation-scopes.js +110 -0
  239. package/dist/elevation-scopes.js.map +1 -0
  240. package/dist/elevation.d.ts +102 -0
  241. package/dist/elevation.js +449 -0
  242. package/dist/elevation.js.map +1 -0
  243. package/dist/env-diff.d.ts +27 -0
  244. package/dist/env-diff.js +104 -0
  245. package/dist/env-diff.js.map +1 -0
  246. package/dist/env-inspect.d.ts +28 -0
  247. package/dist/env-inspect.js +81 -0
  248. package/dist/env-inspect.js.map +1 -0
  249. package/dist/env-switch.d.ts +37 -0
  250. package/dist/env-switch.js +102 -0
  251. package/dist/env-switch.js.map +1 -0
  252. package/dist/environment.d.ts +27 -0
  253. package/dist/environment.js +148 -0
  254. package/dist/environment.js.map +1 -0
  255. package/dist/error-tracker.d.ts +92 -0
  256. package/dist/error-tracker.js +206 -0
  257. package/dist/error-tracker.js.map +1 -0
  258. package/dist/escalate.d.ts +11 -0
  259. package/dist/escalate.js +73 -0
  260. package/dist/escalate.js.map +1 -0
  261. package/dist/event-stream.d.ts +81 -0
  262. package/dist/event-stream.js +161 -0
  263. package/dist/event-stream.js.map +1 -0
  264. package/dist/fix.d.ts +42 -0
  265. package/dist/fix.js +419 -0
  266. package/dist/fix.js.map +1 -0
  267. package/dist/governance-middleware.d.ts +22 -0
  268. package/dist/governance-middleware.js +173 -0
  269. package/dist/governance-middleware.js.map +1 -0
  270. package/dist/governance.d.ts +44 -0
  271. package/dist/governance.js +236 -0
  272. package/dist/governance.js.map +1 -0
  273. package/dist/hooks.d.ts +25 -0
  274. package/dist/hooks.js +281 -0
  275. package/dist/hooks.js.map +1 -0
  276. package/dist/id-generator.d.ts +43 -0
  277. package/dist/id-generator.js +47 -0
  278. package/dist/id-generator.js.map +1 -0
  279. package/dist/image-optimizer.d.ts +92 -0
  280. package/dist/image-optimizer.js +202 -0
  281. package/dist/image-optimizer.js.map +1 -0
  282. package/dist/install.d.ts +15 -0
  283. package/dist/install.js +59 -0
  284. package/dist/install.js.map +1 -0
  285. package/dist/lock.d.ts +82 -0
  286. package/dist/lock.js +264 -0
  287. package/dist/lock.js.map +1 -0
  288. package/dist/login.d.ts +23 -0
  289. package/dist/login.js +132 -0
  290. package/dist/login.js.map +1 -0
  291. package/dist/mcp-kit-tools-model.d.ts +195 -0
  292. package/dist/mcp-kit-tools-model.js +6 -0
  293. package/dist/mcp-kit-tools-model.js.map +1 -0
  294. package/dist/mcp-kit-tools-service.d.ts +127 -0
  295. package/dist/mcp-kit-tools-service.js +943 -0
  296. package/dist/mcp-kit-tools-service.js.map +1 -0
  297. package/dist/mcp-orchestrator.d.ts +70 -0
  298. package/dist/mcp-orchestrator.js +175 -0
  299. package/dist/mcp-orchestrator.js.map +1 -0
  300. package/dist/mcp-server.d.ts +3 -0
  301. package/dist/mcp-server.js +722 -0
  302. package/dist/mcp-server.js.map +1 -0
  303. package/dist/middleware/rate-limiter.d.ts +74 -0
  304. package/dist/middleware/rate-limiter.js +342 -0
  305. package/dist/middleware/rate-limiter.js.map +1 -0
  306. package/dist/migration-runner.d.ts +66 -0
  307. package/dist/migration-runner.js +192 -0
  308. package/dist/migration-runner.js.map +1 -0
  309. package/dist/migrations.d.ts +25 -0
  310. package/dist/migrations.js +530 -0
  311. package/dist/migrations.js.map +1 -0
  312. package/dist/moderation-system.d.ts +153 -0
  313. package/dist/moderation-system.js +338 -0
  314. package/dist/moderation-system.js.map +1 -0
  315. package/dist/multi-agent-workflow-model.d.ts +125 -0
  316. package/dist/multi-agent-workflow-model.js +6 -0
  317. package/dist/multi-agent-workflow-model.js.map +1 -0
  318. package/dist/multi-agent-workflow-service.d.ts +102 -0
  319. package/dist/multi-agent-workflow-service.js +452 -0
  320. package/dist/multi-agent-workflow-service.js.map +1 -0
  321. package/dist/onepassword.d.ts +75 -0
  322. package/dist/onepassword.js +140 -0
  323. package/dist/onepassword.js.map +1 -0
  324. package/dist/open.d.ts +30 -0
  325. package/dist/open.js +166 -0
  326. package/dist/open.js.map +1 -0
  327. package/dist/output.d.ts +32 -0
  328. package/dist/output.js +295 -0
  329. package/dist/output.js.map +1 -0
  330. package/dist/partner-service.d.ts +101 -0
  331. package/dist/partner-service.js +191 -0
  332. package/dist/partner-service.js.map +1 -0
  333. package/dist/payout-service.d.ts +136 -0
  334. package/dist/payout-service.js +293 -0
  335. package/dist/payout-service.js.map +1 -0
  336. package/dist/pkg.d.ts +30 -0
  337. package/dist/pkg.js +162 -0
  338. package/dist/pkg.js.map +1 -0
  339. package/dist/plugin-loader.d.ts +16 -0
  340. package/dist/plugin-loader.js +124 -0
  341. package/dist/plugin-loader.js.map +1 -0
  342. package/dist/plugin-registry-model.d.ts +133 -0
  343. package/dist/plugin-registry-model.js +6 -0
  344. package/dist/plugin-registry-model.js.map +1 -0
  345. package/dist/plugin-registry-service.d.ts +109 -0
  346. package/dist/plugin-registry-service.js +361 -0
  347. package/dist/plugin-registry-service.js.map +1 -0
  348. package/dist/plugin-registry.d.ts +58 -0
  349. package/dist/plugin-registry.js +108 -0
  350. package/dist/plugin-registry.js.map +1 -0
  351. package/dist/plugin-updates.d.ts +135 -0
  352. package/dist/plugin-updates.js +326 -0
  353. package/dist/plugin-updates.js.map +1 -0
  354. package/dist/plugins-cli.d.ts +7 -0
  355. package/dist/plugins-cli.js +157 -0
  356. package/dist/plugins-cli.js.map +1 -0
  357. package/dist/plugins.d.ts +88 -0
  358. package/dist/plugins.js +251 -0
  359. package/dist/plugins.js.map +1 -0
  360. package/dist/policy.d.ts +66 -0
  361. package/dist/policy.js +160 -0
  362. package/dist/policy.js.map +1 -0
  363. package/dist/post-pull-audit.d.ts +39 -0
  364. package/dist/post-pull-audit.js +151 -0
  365. package/dist/post-pull-audit.js.map +1 -0
  366. package/dist/provision.d.ts +17 -0
  367. package/dist/provision.js +147 -0
  368. package/dist/provision.js.map +1 -0
  369. package/dist/query-optimizer.d.ts +102 -0
  370. package/dist/query-optimizer.js +199 -0
  371. package/dist/query-optimizer.js.map +1 -0
  372. package/dist/read-only-mode.d.ts +46 -0
  373. package/dist/read-only-mode.js +71 -0
  374. package/dist/read-only-mode.js.map +1 -0
  375. package/dist/redis-adapter.d.ts +71 -0
  376. package/dist/redis-adapter.js +278 -0
  377. package/dist/redis-adapter.js.map +1 -0
  378. package/dist/resilience-tests.d.ts +120 -0
  379. package/dist/resilience-tests.js +293 -0
  380. package/dist/resilience-tests.js.map +1 -0
  381. package/dist/revocation.d.ts +22 -0
  382. package/dist/revocation.js +100 -0
  383. package/dist/revocation.js.map +1 -0
  384. package/dist/run.d.ts +21 -0
  385. package/dist/run.js +80 -0
  386. package/dist/run.js.map +1 -0
  387. package/dist/scan-build.d.ts +18 -0
  388. package/dist/scan-build.js +100 -0
  389. package/dist/scan-build.js.map +1 -0
  390. package/dist/scan-plaintext.d.ts +24 -0
  391. package/dist/scan-plaintext.js +147 -0
  392. package/dist/scan-plaintext.js.map +1 -0
  393. package/dist/scan-staged.d.ts +15 -0
  394. package/dist/scan-staged.js +70 -0
  395. package/dist/scan-staged.js.map +1 -0
  396. package/dist/scan-transcripts.d.ts +23 -0
  397. package/dist/scan-transcripts.js +93 -0
  398. package/dist/scan-transcripts.js.map +1 -0
  399. package/dist/secret-backends.d.ts +50 -0
  400. package/dist/secret-backends.js +510 -0
  401. package/dist/secret-backends.js.map +1 -0
  402. package/dist/secret-expiration.d.ts +46 -0
  403. package/dist/secret-expiration.js +172 -0
  404. package/dist/secret-expiration.js.map +1 -0
  405. package/dist/secrets-migrate.d.ts +75 -0
  406. package/dist/secrets-migrate.js +185 -0
  407. package/dist/secrets-migrate.js.map +1 -0
  408. package/dist/secrets-model.d.ts +77 -0
  409. package/dist/secrets-model.js +6 -0
  410. package/dist/secrets-model.js.map +1 -0
  411. package/dist/secrets-onecli.d.ts +65 -0
  412. package/dist/secrets-onecli.js +113 -0
  413. package/dist/secrets-onecli.js.map +1 -0
  414. package/dist/secrets-propagate.d.ts +48 -0
  415. package/dist/secrets-propagate.js +201 -0
  416. package/dist/secrets-propagate.js.map +1 -0
  417. package/dist/secrets-pull.d.ts +34 -0
  418. package/dist/secrets-pull.js +118 -0
  419. package/dist/secrets-pull.js.map +1 -0
  420. package/dist/secrets-purge-history.d.ts +53 -0
  421. package/dist/secrets-purge-history.js +144 -0
  422. package/dist/secrets-purge-history.js.map +1 -0
  423. package/dist/secrets-rotate-cli.d.ts +54 -0
  424. package/dist/secrets-rotate-cli.js +438 -0
  425. package/dist/secrets-rotate-cli.js.map +1 -0
  426. package/dist/secrets-rotate.d.ts +38 -0
  427. package/dist/secrets-rotate.js +65 -0
  428. package/dist/secrets-rotate.js.map +1 -0
  429. package/dist/secrets-service.d.ts +73 -0
  430. package/dist/secrets-service.js +283 -0
  431. package/dist/secrets-service.js.map +1 -0
  432. package/dist/secrets-set.d.ts +25 -0
  433. package/dist/secrets-set.js +33 -0
  434. package/dist/secrets-set.js.map +1 -0
  435. package/dist/secrets-sync.d.ts +21 -0
  436. package/dist/secrets-sync.js +215 -0
  437. package/dist/secrets-sync.js.map +1 -0
  438. package/dist/secrets-validate.d.ts +41 -0
  439. package/dist/secrets-validate.js +126 -0
  440. package/dist/secrets-validate.js.map +1 -0
  441. package/dist/secrets-vault-migrate.d.ts +71 -0
  442. package/dist/secrets-vault-migrate.js +258 -0
  443. package/dist/secrets-vault-migrate.js.map +1 -0
  444. package/dist/secrets.d.ts +16 -0
  445. package/dist/secrets.js +72 -0
  446. package/dist/secrets.js.map +1 -0
  447. package/dist/security-hardening.d.ts +150 -0
  448. package/dist/security-hardening.js +275 -0
  449. package/dist/security-hardening.js.map +1 -0
  450. package/dist/security-policy.d.ts +89 -0
  451. package/dist/security-policy.js +174 -0
  452. package/dist/security-policy.js.map +1 -0
  453. package/dist/security-prescan.d.ts +117 -0
  454. package/dist/security-prescan.js +566 -0
  455. package/dist/security-prescan.js.map +1 -0
  456. package/dist/sentry-adapter.d.ts +49 -0
  457. package/dist/sentry-adapter.js +227 -0
  458. package/dist/sentry-adapter.js.map +1 -0
  459. package/dist/service-adapter.d.ts +94 -0
  460. package/dist/service-adapter.js +162 -0
  461. package/dist/service-adapter.js.map +1 -0
  462. package/dist/skills.d.ts +13 -0
  463. package/dist/skills.js +17 -0
  464. package/dist/skills.js.map +1 -0
  465. package/dist/sla-monitor.d.ts +107 -0
  466. package/dist/sla-monitor.js +233 -0
  467. package/dist/sla-monitor.js.map +1 -0
  468. package/dist/stack-detector.d.ts +12 -0
  469. package/dist/stack-detector.js +251 -0
  470. package/dist/stack-detector.js.map +1 -0
  471. package/dist/team-model.d.ts +58 -0
  472. package/dist/team-model.js +83 -0
  473. package/dist/team-model.js.map +1 -0
  474. package/dist/team-service.d.ts +54 -0
  475. package/dist/team-service.js +206 -0
  476. package/dist/team-service.js.map +1 -0
  477. package/dist/toml-generator.d.ts +8 -0
  478. package/dist/toml-generator.js +223 -0
  479. package/dist/toml-generator.js.map +1 -0
  480. package/dist/triage-sandbox.d.ts +34 -0
  481. package/dist/triage-sandbox.js +167 -0
  482. package/dist/triage-sandbox.js.map +1 -0
  483. package/dist/triage.d.ts +30 -0
  484. package/dist/triage.js +79 -0
  485. package/dist/triage.js.map +1 -0
  486. package/dist/update-check.d.ts +13 -0
  487. package/dist/update-check.js +91 -0
  488. package/dist/update-check.js.map +1 -0
  489. package/dist/utils/colors.d.ts +14 -0
  490. package/dist/utils/colors.js +15 -0
  491. package/dist/utils/colors.js.map +1 -0
  492. package/dist/utils/didYouMean.d.ts +15 -0
  493. package/dist/utils/didYouMean.js +47 -0
  494. package/dist/utils/didYouMean.js.map +1 -0
  495. package/dist/utils/exec.d.ts +21 -0
  496. package/dist/utils/exec.js +23 -0
  497. package/dist/utils/exec.js.map +1 -0
  498. package/dist/utils/execFileNoThrow.d.ts +14 -0
  499. package/dist/utils/execFileNoThrow.js +29 -0
  500. package/dist/utils/execFileNoThrow.js.map +1 -0
  501. package/dist/utils/flags.d.ts +19 -0
  502. package/dist/utils/flags.js +36 -0
  503. package/dist/utils/flags.js.map +1 -0
  504. package/dist/utils/parseCommand.d.ts +16 -0
  505. package/dist/utils/parseCommand.js +13 -0
  506. package/dist/utils/parseCommand.js.map +1 -0
  507. package/dist/utils/prompt.d.ts +13 -0
  508. package/dist/utils/prompt.js +35 -0
  509. package/dist/utils/prompt.js.map +1 -0
  510. package/dist/utils/promptSelect.d.ts +19 -0
  511. package/dist/utils/promptSelect.js +89 -0
  512. package/dist/utils/promptSelect.js.map +1 -0
  513. package/dist/utils/redactSecrets.d.ts +24 -0
  514. package/dist/utils/redactSecrets.js +134 -0
  515. package/dist/utils/redactSecrets.js.map +1 -0
  516. package/dist/validation/dynamic-schema.d.ts +29 -0
  517. package/dist/validation/dynamic-schema.js +76 -0
  518. package/dist/validation/dynamic-schema.js.map +1 -0
  519. package/package.json +52 -0
@@ -0,0 +1,258 @@
1
+ /**
2
+ * Cross-vault secret migration.
3
+ *
4
+ * `kit secrets migrate` covers plaintext-→-vault. This module covers the
5
+ * harder case: moving every key defined in `.kit.toml` from one configured
6
+ * backend to another (e.g. 1password → infisical) without ever printing the
7
+ * value to a console and without leaving a half-migrated state on failure.
8
+ *
9
+ * Flow per key:
10
+ * 1. Read value from source backend (no log echo).
11
+ * 2. Write value to target backend.
12
+ * 3. Rewrite the `.kit.toml` entry in place — `source = "target"`,
13
+ * `ref`/`name` updated to the new backend's convention.
14
+ * 4. Audit-log the move (operation: "vault-migrate", success: bool).
15
+ *
16
+ * Errors at step 2 leave step 3 untouched — the source vault remains the
17
+ * authoritative store. The user is told which keys succeeded so they can
18
+ * re-run for the rest.
19
+ *
20
+ * NOT included by design:
21
+ * - Deleting the value from the source vault. That's a separate
22
+ * `kit secrets revoke-old` call (already exists). Keeping the old
23
+ * copy until rotation lets the operator roll back if the target is
24
+ * misconfigured.
25
+ * - Rotation. Migration moves the SAME value. Use `secrets rotate` after
26
+ * migration if you also want to mint fresh credentials.
27
+ */
28
+ import { readFile, writeFile } from "node:fs/promises";
29
+ import { resolve } from "node:path";
30
+ import { writeSecretToBackend, isValidKeyName, escapeRegex } from "./secrets-migrate.js";
31
+ import { redactSecrets } from "./utils/redactSecrets.js";
32
+ import { appendAuditEventDirect } from "./audit.js";
33
+ import { exec } from "./utils/exec.js";
34
+ /**
35
+ * Reads a single secret value from the configured source backend. Returns
36
+ * `{ ok: false }` and never the value when reading fails, so the caller
37
+ * cannot accidentally write an empty string to the target.
38
+ */
39
+ export async function readSecretFromBackend(source, config, topLevel) {
40
+ try {
41
+ switch (source) {
42
+ case "1password": {
43
+ if (!config.ref)
44
+ return { ok: false, detail: "no 1Password ref" };
45
+ // Pre-flight: refuse to call `op read` without an account configured.
46
+ // Otherwise op prompts "Do you want to add an account?" on every call
47
+ // and the migration emits 12 vague "Command failed" lines per key.
48
+ const { check1PasswordStatus } = await import("./onepassword.js");
49
+ const opStatus = await check1PasswordStatus();
50
+ if (!opStatus.installed) {
51
+ return { ok: false, detail: "1Password CLI not installed" };
52
+ }
53
+ if (!opStatus.authenticated) {
54
+ return {
55
+ ok: false,
56
+ detail: "1Password CLI present but no account configured — run 'op account add', enable desktop-app CLI integration, or set OP_SERVICE_ACCOUNT_TOKEN",
57
+ };
58
+ }
59
+ const { stdout } = await exec("op", ["read", config.ref, "--no-newline"], {
60
+ timeout: 15_000,
61
+ });
62
+ return { ok: true, value: stdout, detail: "read from 1Password" };
63
+ }
64
+ case "infisical": {
65
+ const name = config.name;
66
+ if (!name)
67
+ return { ok: false, detail: "no Infisical name" };
68
+ const args = ["secrets", "get", name, "--plain"];
69
+ if (topLevel.infisical?.project_id)
70
+ args.push("--projectId", topLevel.infisical.project_id);
71
+ if (topLevel.infisical?.environment)
72
+ args.push("--env", topLevel.infisical.environment);
73
+ const { stdout } = await exec("infisical", args, { timeout: 15_000 });
74
+ return { ok: true, value: stdout.trim(), detail: "read from Infisical" };
75
+ }
76
+ case "bitwarden": {
77
+ const field = config.name || config.ref;
78
+ if (!field)
79
+ return { ok: false, detail: "no Bitwarden field" };
80
+ const { stdout } = await exec("bw", ["get", field], { timeout: 15_000 });
81
+ return { ok: true, value: stdout.trim(), detail: "read from Bitwarden" };
82
+ }
83
+ case "doppler": {
84
+ if (!config.name)
85
+ return { ok: false, detail: "no Doppler name" };
86
+ const { stdout } = await exec("doppler", ["secrets", "get", config.name, "--plain"], { timeout: 15_000 });
87
+ return { ok: true, value: stdout.trim(), detail: "read from Doppler" };
88
+ }
89
+ case "vault": {
90
+ const path = config.vault_path || "secret/data/kit";
91
+ const field = config.name || "value";
92
+ const { stdout } = await exec("vault", ["kv", "get", "-field", field, path], { timeout: 15_000 });
93
+ return { ok: true, value: stdout.trim(), detail: `read from Vault ${path}` };
94
+ }
95
+ case "aws-sm": {
96
+ const args = ["secretsmanager", "get-secret-value", "--secret-id", config.name || ""];
97
+ if (config.aws_region)
98
+ args.push("--region", config.aws_region);
99
+ args.push("--query", "SecretString", "--output", "text");
100
+ const { stdout } = await exec("aws", args, { timeout: 15_000 });
101
+ return { ok: true, value: stdout.trim(), detail: "read from AWS Secrets Manager" };
102
+ }
103
+ case "gcp-sm": {
104
+ const args = ["secrets", "versions", "access", "latest", "--secret", config.name || ""];
105
+ if (config.gcp_project)
106
+ args.push("--project", config.gcp_project);
107
+ const { stdout } = await exec("gcloud", args, { timeout: 15_000 });
108
+ return { ok: true, value: stdout.trim(), detail: "read from GCP Secret Manager" };
109
+ }
110
+ case "azure-kv": {
111
+ const vault = config.azure_vault;
112
+ if (!vault)
113
+ return { ok: false, detail: "no Azure vault" };
114
+ const { stdout } = await exec("az", ["keyvault", "secret", "show", "--vault-name", vault, "--name", config.name || "", "--query", "value", "-o", "tsv"], { timeout: 15_000 });
115
+ return { ok: true, value: stdout.trim(), detail: "read from Azure Key Vault" };
116
+ }
117
+ case "env":
118
+ case "config":
119
+ return {
120
+ ok: false,
121
+ detail: `source "${source}" is plaintext-resident — use 'kit secrets migrate' (env/.env → vault) instead`,
122
+ };
123
+ default:
124
+ return { ok: false, detail: `read from "${source}" not supported` };
125
+ }
126
+ }
127
+ catch (err) {
128
+ const msg = err instanceof Error ? err.message.split("\n")[0] : String(err);
129
+ return { ok: false, detail: `read failed: ${redactSecrets(msg)}` };
130
+ }
131
+ }
132
+ /**
133
+ * Rewrites `.kit.toml` in place so the named key's `source` / `ref` /
134
+ * `name` reflect the new backend. Conservative regex-based edit — we only
135
+ * touch lines that match the `<KEY> = { source = "<from>", ...` shape so
136
+ * unrelated TOML structure is preserved exactly as the user wrote it.
137
+ */
138
+ async function rewriteConfigRef(cwd, keyName, to, newRef) {
139
+ if (!isValidKeyName(keyName)) {
140
+ return { ok: false, detail: `invalid key name "${keyName}"` };
141
+ }
142
+ const path = resolve(cwd, ".kit.toml");
143
+ let text;
144
+ try {
145
+ text = await readFile(path, "utf-8");
146
+ }
147
+ catch {
148
+ return { ok: false, detail: ".kit.toml not readable" };
149
+ }
150
+ // Match the whole inline-table line for this key. keyName is already
151
+ // validated by isValidKeyName above; escapeRegex is defense-in-depth.
152
+ const lineRe = new RegExp(`^(\\s*${escapeRegex(keyName)}\\s*=\\s*\\{)[^}\\n]*(\\}\\s*)$`, "m");
153
+ const match = text.match(lineRe);
154
+ if (!match) {
155
+ return { ok: false, detail: `key "${keyName}" not found in .kit.toml or shape unexpected` };
156
+ }
157
+ // Pick the right inline-table key for the target backend.
158
+ const inline = to === "1password"
159
+ ? `source = "1password", ref = "${newRef}"`
160
+ : to === "vault"
161
+ ? `source = "vault", vault_path = "${newRef}"`
162
+ : `source = "${to}", name = "${newRef}"`;
163
+ const replaced = text.replace(lineRe, `$1 ${inline} $2`);
164
+ if (replaced === text) {
165
+ return { ok: false, detail: `no change written for "${keyName}"` };
166
+ }
167
+ await writeFile(path, replaced, "utf-8");
168
+ return { ok: true, detail: "rewrote .kit.toml" };
169
+ }
170
+ /**
171
+ * Orchestrates the migration. Caller is responsible for elevation (call
172
+ * `consumeElevation("vault-migrate")` first) so we don't double-prompt.
173
+ */
174
+ export async function vaultMigrate(config, opts) {
175
+ const items = [];
176
+ const cwd = opts.cwd ?? process.cwd();
177
+ const entries = Object.entries(config.secrets?.keys ?? {});
178
+ const targeted = entries.filter(([, c]) => c.source === opts.from);
179
+ for (const [name, keyConfig] of targeted) {
180
+ const read = await readSecretFromBackend(opts.from, keyConfig, config.secrets ?? {});
181
+ if (!read.ok || !read.value) {
182
+ items.push({ name, ok: false, detail: `read: ${read.detail}` });
183
+ await appendAuditEventDirect({
184
+ operation: "vault-migrate",
185
+ environment: process.env.KIT_ENV ?? "unknown",
186
+ success: false,
187
+ error: read.detail,
188
+ metadata: { key: name, from: opts.from, to: opts.to, stage: "read" },
189
+ }, { cwd });
190
+ continue;
191
+ }
192
+ if (opts.dryRun) {
193
+ items.push({
194
+ name,
195
+ ok: true,
196
+ detail: `would migrate to ${opts.to} (dry-run, ${read.value.length} chars)`,
197
+ });
198
+ continue;
199
+ }
200
+ // writeSecretToBackend's `store` parameter is narrower than BackendSource
201
+ // (excludes "config" / "eas" — neither makes sense as a write target).
202
+ // The reader returned !ok above for those cases, so this assertion is safe.
203
+ const writeStore = opts.to;
204
+ const write = await writeSecretToBackend(writeStore, name, read.value, {
205
+ vault: keyConfig.azure_vault,
206
+ project: keyConfig.gcp_project,
207
+ region: keyConfig.aws_region,
208
+ vaultPath: keyConfig.vault_path,
209
+ });
210
+ if (!write.ok) {
211
+ items.push({ name, ok: false, detail: `write: ${write.detail}` });
212
+ await appendAuditEventDirect({
213
+ operation: "vault-migrate",
214
+ environment: process.env.KIT_ENV ?? "unknown",
215
+ success: false,
216
+ error: write.detail,
217
+ metadata: { key: name, from: opts.from, to: opts.to, stage: "write" },
218
+ }, { cwd });
219
+ continue;
220
+ }
221
+ // Determine the new ref the target backend uses. 1password gives us
222
+ // `op://...`; others store under name = "<KEY>" or vault-path.
223
+ const newRef = write.ref ??
224
+ (opts.to === "vault"
225
+ ? keyConfig.vault_path || `secret/data/kit#${name}`
226
+ : name);
227
+ const rewrite = await rewriteConfigRef(cwd, name, opts.to, newRef);
228
+ if (!rewrite.ok) {
229
+ items.push({
230
+ name,
231
+ ok: false,
232
+ detail: `write OK but config rewrite failed: ${rewrite.detail}`,
233
+ newRef,
234
+ });
235
+ await appendAuditEventDirect({
236
+ operation: "vault-migrate",
237
+ environment: process.env.KIT_ENV ?? "unknown",
238
+ success: false,
239
+ error: rewrite.detail,
240
+ metadata: { key: name, from: opts.from, to: opts.to, stage: "rewrite", newRef },
241
+ }, { cwd });
242
+ continue;
243
+ }
244
+ items.push({ name, ok: true, detail: `migrated to ${opts.to}`, newRef });
245
+ await appendAuditEventDirect({
246
+ operation: "vault-migrate",
247
+ environment: process.env.KIT_ENV ?? "unknown",
248
+ success: true,
249
+ metadata: { key: name, from: opts.from, to: opts.to, newRef },
250
+ }, { cwd });
251
+ }
252
+ return {
253
+ items,
254
+ discovered: targeted.length,
255
+ succeeded: items.filter((i) => i.ok).length,
256
+ };
257
+ }
258
+ //# sourceMappingURL=secrets-vault-migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets-vault-migrate.js","sourceRoot":"","sources":["../src/secrets-vault-migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { SecretsConfig } from "./config.js";
2
+ export interface SecretResolveResult {
3
+ name: string;
4
+ resolved: boolean;
5
+ value: string | null;
6
+ detail: string;
7
+ /** True when the backend manages the value out-of-band (e.g. EAS) — `value`
8
+ * is a display placeholder, not a real secret, so it's never written to
9
+ * .env.local. Lets the writer skip these without sniffing the value string. */
10
+ managed?: boolean;
11
+ }
12
+ export declare function generateSecrets(secrets: SecretsConfig, outputPath?: string): Promise<{
13
+ results: SecretResolveResult[];
14
+ written: boolean;
15
+ fromTemplate: boolean;
16
+ }>;
@@ -0,0 +1,72 @@
1
+ import { readFile, writeFile, access } from "node:fs/promises";
2
+ import { resolveViaBackend, resetInfisicalCache } from "./secret-backends.js";
3
+ /** Interpolate {{KEY}} placeholders in a template string with resolved values. */
4
+ function interpolateTemplate(template, resolved) {
5
+ return template.replace(/\{\{(\w+)\}\}/g, (_match, key) => {
6
+ return resolved.get(key) ?? `{{${key}}}`;
7
+ });
8
+ }
9
+ async function loadTemplate(templatePath) {
10
+ try {
11
+ await access(templatePath);
12
+ return await readFile(templatePath, "utf-8");
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ export async function generateSecrets(secrets, outputPath = ".env.local") {
19
+ const results = [];
20
+ if (!secrets.keys) {
21
+ return { results, written: false, fromTemplate: false };
22
+ }
23
+ // Reset the Infisical bulk-fetch cache for each generateSecrets call.
24
+ resetInfisicalCache();
25
+ for (const [name, config] of Object.entries(secrets.keys)) {
26
+ results.push(await resolveViaBackend(name, config, secrets.infisical));
27
+ }
28
+ // Build a lookup of resolved values
29
+ const resolved = new Map();
30
+ for (const r of results) {
31
+ // Skip backend-managed values (e.g. EAS) — their `value` is a display
32
+ // placeholder, not a real secret to write into .env.local.
33
+ if (r.resolved && r.value !== null && !r.managed) {
34
+ resolved.set(r.name, r.value);
35
+ }
36
+ }
37
+ let content;
38
+ let fromTemplate = false;
39
+ // If a template is configured, read it and interpolate
40
+ const template = secrets.template ? await loadTemplate(secrets.template) : null;
41
+ if (template !== null) {
42
+ fromTemplate = true;
43
+ const header = [
44
+ "# Generated by kit secrets from template — do not edit manually",
45
+ `# Template: ${secrets.template}`,
46
+ `# Generated at ${new Date().toISOString()}`,
47
+ "",
48
+ ].join("\n");
49
+ content = header + interpolateTemplate(template, resolved) + "\n";
50
+ }
51
+ else {
52
+ // Fallback: generate from keys
53
+ const lines = [
54
+ "# Generated by kit secrets — do not edit manually",
55
+ `# Generated at ${new Date().toISOString()}`,
56
+ "",
57
+ ];
58
+ for (const result of results) {
59
+ if (resolved.has(result.name)) {
60
+ lines.push(`${result.name}=${resolved.get(result.name)}`);
61
+ }
62
+ else {
63
+ lines.push(`# ${result.name}= # ${result.detail}`);
64
+ }
65
+ }
66
+ lines.push("");
67
+ content = lines.join("\n");
68
+ }
69
+ await writeFile(outputPath, content, "utf-8");
70
+ return { results, written: true, fromTemplate };
71
+ }
72
+ //# sourceMappingURL=secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ export type VulnerabilitySeverity = "critical" | "high" | "medium" | "low" | "info";
2
+ export type SecurityCheckType = "dependency_scan" | "code_analysis" | "permission_check" | "rate_limit" | "encryption" | "auth_check";
3
+ export interface Vulnerability {
4
+ id: string;
5
+ cve?: string;
6
+ type: string;
7
+ severity: VulnerabilitySeverity;
8
+ affectedPackage: string;
9
+ affectedVersion: string;
10
+ fixedVersion?: string;
11
+ description: string;
12
+ discoveredAt: string;
13
+ remediationSteps: string[];
14
+ }
15
+ export interface SecurityCheckResult {
16
+ type: SecurityCheckType;
17
+ passed: boolean;
18
+ message: string;
19
+ details: Record<string, unknown>;
20
+ severity: VulnerabilitySeverity;
21
+ timestamp: string;
22
+ }
23
+ export interface SecurityAuditEntry {
24
+ id: string;
25
+ action: string;
26
+ actor: string;
27
+ resource: string;
28
+ status: "success" | "failure";
29
+ details: Record<string, unknown>;
30
+ timestamp: string;
31
+ ipAddress?: string;
32
+ }
33
+ export interface RateLimitConfig {
34
+ windowMs: number;
35
+ maxRequests: number;
36
+ message?: string;
37
+ keyGenerator?: (req: unknown) => string;
38
+ }
39
+ export interface RateLimitStatus {
40
+ requestCount: number;
41
+ resetTime: Date;
42
+ remaining: number;
43
+ retryAfter?: number;
44
+ }
45
+ export interface SecurityPolicy {
46
+ id: string;
47
+ name: string;
48
+ description: string;
49
+ rules: Array<{
50
+ rule: string;
51
+ enabled: boolean;
52
+ severity: VulnerabilitySeverity;
53
+ }>;
54
+ createdAt: string;
55
+ updatedAt: string;
56
+ }
57
+ export interface SecurityReport {
58
+ pluginId: string;
59
+ timestamp: string;
60
+ vulnerabilities: Vulnerability[];
61
+ checks: SecurityCheckResult[];
62
+ score: number;
63
+ status: "pass" | "warning" | "fail";
64
+ }
65
+ export declare class SecurityHardeningEngine {
66
+ private vulnerabilities;
67
+ private auditLog;
68
+ private rateLimiters;
69
+ private securityPolicies;
70
+ private checksResults;
71
+ /**
72
+ * Register a known vulnerability.
73
+ */
74
+ registerVulnerability(vuln: Vulnerability): void;
75
+ /**
76
+ * Scan dependencies for known vulnerabilities.
77
+ */
78
+ scanDependencies(pluginId: string, dependencies: Array<{
79
+ name: string;
80
+ version: string;
81
+ }>): Vulnerability[];
82
+ private versionMatches;
83
+ /**
84
+ * Get vulnerability by ID.
85
+ */
86
+ getVulnerability(vulnId: string): Vulnerability | null;
87
+ /**
88
+ * Get all vulnerabilities.
89
+ */
90
+ getAllVulnerabilities(): Vulnerability[];
91
+ /**
92
+ * Run a security check.
93
+ */
94
+ runSecurityCheck(type: SecurityCheckType, pluginId: string, data: Record<string, unknown>): SecurityCheckResult;
95
+ private checkDependencyScan;
96
+ private checkPermissions;
97
+ private checkEncryption;
98
+ private checkAuthentication;
99
+ /**
100
+ * Log a security audit event.
101
+ */
102
+ logAuditEvent(action: string, actor: string, resource: string, status: "success" | "failure", details?: Record<string, unknown>, ipAddress?: string): SecurityAuditEntry;
103
+ /**
104
+ * Get audit log entries.
105
+ */
106
+ getAuditLog(limit?: number, offset?: number): SecurityAuditEntry[];
107
+ /**
108
+ * Get audit log entries for actor.
109
+ */
110
+ getAuditLogForActor(actor: string): SecurityAuditEntry[];
111
+ /**
112
+ * Get failed audit events.
113
+ */
114
+ getFailedAuditEvents(): SecurityAuditEntry[];
115
+ /**
116
+ * Configure rate limiting for an endpoint.
117
+ */
118
+ configureRateLimit(endpoint: string, config: RateLimitConfig): void;
119
+ /**
120
+ * Check if a request is rate limited.
121
+ */
122
+ checkRateLimit(endpoint: string, key: string): RateLimitStatus;
123
+ /**
124
+ * Reset rate limit for a key.
125
+ */
126
+ resetRateLimit(endpoint: string, key: string): void;
127
+ /**
128
+ * Create a security policy.
129
+ */
130
+ createPolicy(name: string, description: string, rules: string[]): SecurityPolicy;
131
+ /**
132
+ * Get security policy.
133
+ */
134
+ getPolicy(policyId: string): SecurityPolicy | null;
135
+ /**
136
+ * Get all policies.
137
+ */
138
+ getAllPolicies(): SecurityPolicy[];
139
+ /**
140
+ * Generate security report for a plugin.
141
+ */
142
+ generateSecurityReport(pluginId: string): SecurityReport;
143
+ /**
144
+ * Get security score for plugin.
145
+ */
146
+ getSecurityScore(pluginId: string): number;
147
+ getVulnerabilitiesCache(): Map<string, Vulnerability>;
148
+ getAuditLogCache(): SecurityAuditEntry[];
149
+ getPoliciesCache(): Map<string, SecurityPolicy>;
150
+ }