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,275 @@
1
+ import { IdGenerators } from "./id-generator.js";
2
+ // ─── SecurityHardeningEngine ──────────────────────────────────────────────────
3
+ export class SecurityHardeningEngine {
4
+ vulnerabilities = new Map();
5
+ auditLog = [];
6
+ rateLimiters = new Map();
7
+ securityPolicies = new Map();
8
+ checksResults = new Map();
9
+ // ─── Vulnerability Management ────────────────────────────────────────────
10
+ /**
11
+ * Register a known vulnerability.
12
+ */
13
+ registerVulnerability(vuln) {
14
+ this.vulnerabilities.set(vuln.id, vuln);
15
+ }
16
+ /**
17
+ * Scan dependencies for known vulnerabilities.
18
+ */
19
+ scanDependencies(pluginId, dependencies) {
20
+ const found = [];
21
+ for (const dep of dependencies) {
22
+ for (const vuln of this.vulnerabilities.values()) {
23
+ if (vuln.affectedPackage === dep.name &&
24
+ this.versionMatches(dep.version, vuln.affectedVersion)) {
25
+ found.push(vuln);
26
+ }
27
+ }
28
+ }
29
+ return found;
30
+ }
31
+ versionMatches(current, affected) {
32
+ // Simple version matching: affected "*" matches all, or exact match
33
+ if (affected === "*")
34
+ return true;
35
+ return current === affected;
36
+ }
37
+ /**
38
+ * Get vulnerability by ID.
39
+ */
40
+ getVulnerability(vulnId) {
41
+ return this.vulnerabilities.get(vulnId) || null;
42
+ }
43
+ /**
44
+ * Get all vulnerabilities.
45
+ */
46
+ getAllVulnerabilities() {
47
+ return [...this.vulnerabilities.values()];
48
+ }
49
+ // ─── Security Checks ──────────────────────────────────────────────────────
50
+ /**
51
+ * Run a security check.
52
+ */
53
+ runSecurityCheck(type, pluginId, data) {
54
+ let result;
55
+ switch (type) {
56
+ case "dependency_scan":
57
+ result = this.checkDependencyScan(pluginId, data);
58
+ break;
59
+ case "permission_check":
60
+ result = this.checkPermissions(pluginId, data);
61
+ break;
62
+ case "encryption":
63
+ result = this.checkEncryption(pluginId, data);
64
+ break;
65
+ case "auth_check":
66
+ result = this.checkAuthentication(pluginId, data);
67
+ break;
68
+ default:
69
+ result = {
70
+ type,
71
+ passed: true,
72
+ message: "Check skipped",
73
+ details: {},
74
+ severity: "info",
75
+ timestamp: new Date().toISOString(),
76
+ };
77
+ }
78
+ // Store result
79
+ const results = this.checksResults.get(pluginId) || [];
80
+ results.push(result);
81
+ this.checksResults.set(pluginId, results);
82
+ return result;
83
+ }
84
+ checkDependencyScan(pluginId, data) {
85
+ const deps = data.dependencies || [];
86
+ const vulns = this.scanDependencies(pluginId, deps);
87
+ return {
88
+ type: "dependency_scan",
89
+ passed: vulns.length === 0,
90
+ message: vulns.length === 0 ? "No vulnerabilities found" : `${vulns.length} vulnerabilities found`,
91
+ details: { vulnerabilities: vulns },
92
+ severity: vulns.length > 0 ? "high" : "info",
93
+ timestamp: new Date().toISOString(),
94
+ };
95
+ }
96
+ checkPermissions(pluginId, data) {
97
+ const permissions = data.permissions || [];
98
+ const dangerous = ["root", "admin", "system"];
99
+ const hasDangerous = permissions.some((p) => dangerous.includes(p));
100
+ return {
101
+ type: "permission_check",
102
+ passed: !hasDangerous,
103
+ message: hasDangerous ? "Dangerous permissions detected" : "Safe permission levels",
104
+ details: { permissions, hasDangerous },
105
+ severity: hasDangerous ? "critical" : "info",
106
+ timestamp: new Date().toISOString(),
107
+ };
108
+ }
109
+ checkEncryption(pluginId, data) {
110
+ const usesEncryption = data.usesEncryption === true;
111
+ const algorithm = data.algorithm || "unknown";
112
+ return {
113
+ type: "encryption",
114
+ passed: usesEncryption && ["AES-256", "TLS", "HTTPS"].includes(algorithm),
115
+ message: usesEncryption ? "Encryption enabled" : "Encryption not found",
116
+ details: { usesEncryption, algorithm },
117
+ severity: usesEncryption ? "info" : "medium",
118
+ timestamp: new Date().toISOString(),
119
+ };
120
+ }
121
+ checkAuthentication(pluginId, data) {
122
+ const hasAuth = data.hasAuthentication === true;
123
+ const authMethod = data.authMethod || "none";
124
+ return {
125
+ type: "auth_check",
126
+ passed: hasAuth && ["oauth", "jwt", "apikey"].includes(authMethod),
127
+ message: hasAuth ? "Authentication configured" : "No authentication found",
128
+ details: { hasAuth, authMethod },
129
+ severity: hasAuth ? "info" : "high",
130
+ timestamp: new Date().toISOString(),
131
+ };
132
+ }
133
+ // ─── Audit Logging ────────────────────────────────────────────────────────
134
+ /**
135
+ * Log a security audit event.
136
+ */
137
+ logAuditEvent(action, actor, resource, status, details = {}, ipAddress) {
138
+ const id = IdGenerators.audit();
139
+ const entry = {
140
+ id,
141
+ action,
142
+ actor,
143
+ resource,
144
+ status,
145
+ details,
146
+ timestamp: new Date().toISOString(),
147
+ ipAddress,
148
+ };
149
+ this.auditLog.push(entry);
150
+ return entry;
151
+ }
152
+ /**
153
+ * Get audit log entries.
154
+ */
155
+ getAuditLog(limit = 100, offset = 0) {
156
+ return this.auditLog.slice(offset, offset + limit);
157
+ }
158
+ /**
159
+ * Get audit log entries for actor.
160
+ */
161
+ getAuditLogForActor(actor) {
162
+ return this.auditLog.filter((e) => e.actor === actor);
163
+ }
164
+ /**
165
+ * Get failed audit events.
166
+ */
167
+ getFailedAuditEvents() {
168
+ return this.auditLog.filter((e) => e.status === "failure");
169
+ }
170
+ // ─── Rate Limiting ────────────────────────────────────────────────────────
171
+ /**
172
+ * Configure rate limiting for an endpoint.
173
+ */
174
+ configureRateLimit(endpoint, config) {
175
+ const limiters = this.rateLimiters.get(endpoint) || new Map();
176
+ // Store config (simplified - in real implementation would use the config)
177
+ this.rateLimiters.set(endpoint, limiters);
178
+ }
179
+ /**
180
+ * Check if a request is rate limited.
181
+ */
182
+ checkRateLimit(endpoint, key) {
183
+ const limiters = this.rateLimiters.get(endpoint) || new Map();
184
+ const status = limiters.get(key) || {
185
+ requestCount: 0,
186
+ resetTime: new Date(Date.now() + 60000), // 1 minute window
187
+ remaining: 100,
188
+ };
189
+ status.requestCount++;
190
+ status.remaining = Math.max(0, 100 - status.requestCount);
191
+ limiters.set(key, status);
192
+ this.rateLimiters.set(endpoint, limiters);
193
+ return status;
194
+ }
195
+ /**
196
+ * Reset rate limit for a key.
197
+ */
198
+ resetRateLimit(endpoint, key) {
199
+ const limiters = this.rateLimiters.get(endpoint);
200
+ limiters?.delete(key);
201
+ }
202
+ // ─── Security Policies ────────────────────────────────────────────────────
203
+ /**
204
+ * Create a security policy.
205
+ */
206
+ createPolicy(name, description, rules) {
207
+ const id = IdGenerators.policy();
208
+ const policy = {
209
+ id,
210
+ name,
211
+ description,
212
+ rules: rules.map((rule) => ({
213
+ rule,
214
+ enabled: true,
215
+ severity: "high",
216
+ })),
217
+ createdAt: new Date().toISOString(),
218
+ updatedAt: new Date().toISOString(),
219
+ };
220
+ this.securityPolicies.set(id, policy);
221
+ return policy;
222
+ }
223
+ /**
224
+ * Get security policy.
225
+ */
226
+ getPolicy(policyId) {
227
+ return this.securityPolicies.get(policyId) || null;
228
+ }
229
+ /**
230
+ * Get all policies.
231
+ */
232
+ getAllPolicies() {
233
+ return [...this.securityPolicies.values()];
234
+ }
235
+ // ─── Security Report Generation ───────────────────────────────────────────
236
+ /**
237
+ * Generate security report for a plugin.
238
+ */
239
+ generateSecurityReport(pluginId) {
240
+ const vulns = this.scanDependencies(pluginId, []);
241
+ const checks = this.checksResults.get(pluginId) || [];
242
+ // Calculate score: 100 - (vulnerabilities * 10 + failed_checks * 5)
243
+ let score = 100;
244
+ score -= vulns.length * 10;
245
+ score -= checks.filter((c) => !c.passed).length * 5;
246
+ score = Math.max(0, Math.min(100, score));
247
+ const status = score >= 80 ? "pass" : score >= 60 ? "warning" : "fail";
248
+ return {
249
+ pluginId,
250
+ timestamp: new Date().toISOString(),
251
+ vulnerabilities: vulns,
252
+ checks,
253
+ score,
254
+ status,
255
+ };
256
+ }
257
+ /**
258
+ * Get security score for plugin.
259
+ */
260
+ getSecurityScore(pluginId) {
261
+ const report = this.generateSecurityReport(pluginId);
262
+ return report.score;
263
+ }
264
+ // ─── Cache helpers ────────────────────────────────────────────────────────
265
+ getVulnerabilitiesCache() {
266
+ return this.vulnerabilities;
267
+ }
268
+ getAuditLogCache() {
269
+ return this.auditLog;
270
+ }
271
+ getPoliciesCache() {
272
+ return this.securityPolicies;
273
+ }
274
+ }
275
+ //# sourceMappingURL=security-hardening.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-hardening.js","sourceRoot":"","sources":["../src/security-hardening.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ export interface AllowlistEntry {
2
+ name: string;
3
+ /** semver range allowed for this package, e.g. ">=14.0.0 <15" or "*" */
4
+ range: string;
5
+ reason?: string;
6
+ }
7
+ export interface SecretPolicyEntry {
8
+ /** Maximum allowed time-to-live for credentials issued from this key, in hours. */
9
+ max_ttl_hours?: number;
10
+ /** Required permission scope. Free-form string so providers map to their own
11
+ * vocabulary (Stripe "restricted-readonly", AWS "ReadOnlyAccess", GCP IAM
12
+ * role names, etc.). When set, `policy check` reports any key whose vault
13
+ * config doesn't pin a scope. */
14
+ scope?: string;
15
+ /** Soft cap on monthly spend in USD. Enforcement is provider-side
16
+ * (Stripe spend-limits, OpenAI usage-limits); kit only records the
17
+ * intended limit so it can be re-verified manually or by future S5 work. */
18
+ spend_cap_usd?: number;
19
+ /** When true, only `*_restricted` / least-privilege key variants are
20
+ * accepted (Stripe restricted keys, AWS IAM roles vs root credentials). */
21
+ require_restricted?: boolean;
22
+ /** Free-text reason — survives in audit logs when violations are reported. */
23
+ description?: string;
24
+ }
25
+ export interface Allowlist {
26
+ policy: {
27
+ /** Block runtime dependencies that aren't on the allowlist */
28
+ enforce_runtime: boolean;
29
+ /** Block devDependencies that aren't on the allowlist */
30
+ enforce_dev: boolean;
31
+ /** Allow `*` ranges (treat as wildcard accept). Default false. */
32
+ allow_wildcards: boolean;
33
+ /** Require every key in `[secrets.keys]` to have a `secrets` entry below. */
34
+ enforce_secrets?: boolean;
35
+ /** Default cap when a key has no spend_cap_usd of its own (USD). */
36
+ default_spend_cap_usd?: number;
37
+ };
38
+ packages: AllowlistEntry[];
39
+ /** Per-key policy. Keyed by the env-var name from `[secrets.keys]`. */
40
+ secrets?: Record<string, SecretPolicyEntry>;
41
+ }
42
+ export declare function readAllowlist(cwd?: string): Promise<Allowlist | null>;
43
+ export declare function writeAllowlist(list: Allowlist, cwd?: string): Promise<void>;
44
+ /**
45
+ * Bootstraps `.kit-allowlist.json` from the current package.json. Every
46
+ * existing dependency is allowed at its currently-recorded range. The user
47
+ * iterates from there: tightening, removing, or annotating.
48
+ */
49
+ export declare function initAllowlist(cwd?: string): Promise<Allowlist>;
50
+ export interface PolicyViolation {
51
+ name: string;
52
+ range: string;
53
+ reason: "not-on-allowlist" | "wildcard-blocked";
54
+ kind: "runtime" | "dev";
55
+ }
56
+ export interface SecretPolicyViolation {
57
+ key: string;
58
+ reason: "no-policy-entry" | "no-spend-cap" | "no-scope" | "ttl-too-long";
59
+ detail: string;
60
+ }
61
+ /**
62
+ * Reports packages in package.json that are missing from the allowlist
63
+ * (or that use a wildcard `*` range when policy.allow_wildcards is false).
64
+ * Does not check version-range *satisfaction* — that's npm's job; this is
65
+ * just a presence-and-shape gate suitable for CI.
66
+ */
67
+ export declare function checkAllowlist(cwd?: string): Promise<{
68
+ list: Allowlist | null;
69
+ violations: PolicyViolation[];
70
+ }>;
71
+ /**
72
+ * Audits the secrets section of an allowlist against the keys actually
73
+ * referenced in `[secrets.keys]` of the user's `.kit.toml`. Returns one
74
+ * violation per gap.
75
+ *
76
+ * Strictness depends on policy.enforce_secrets:
77
+ * true → every secrets.keys entry must have a matching policy entry.
78
+ * false → only secrets that DO have a partial policy are validated, so
79
+ * teams can opt-in gradually without instant-fail.
80
+ */
81
+ export declare function checkSecretPolicy(list: Allowlist, configKeys: string[], paidServices?: Set<string>): SecretPolicyViolation[];
82
+ /**
83
+ * Adds a package to the allowlist with the version range from package.json.
84
+ * Returns true if the package was added, false if it was already there.
85
+ */
86
+ export declare function addToAllowlist(pkgName: string, cwd?: string): Promise<{
87
+ added: boolean;
88
+ entry: AllowlistEntry | null;
89
+ }>;
@@ -0,0 +1,174 @@
1
+ import { readFile, writeFile, access } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ const ALLOWLIST_FILE = ".kit-allowlist.json";
4
+ const DEFAULT_POLICY = {
5
+ enforce_runtime: true,
6
+ enforce_dev: false,
7
+ allow_wildcards: false,
8
+ };
9
+ export async function readAllowlist(cwd = process.cwd()) {
10
+ const path = resolve(cwd, ALLOWLIST_FILE);
11
+ try {
12
+ await access(path);
13
+ const text = await readFile(path, "utf-8");
14
+ return JSON.parse(text);
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ export async function writeAllowlist(list, cwd = process.cwd()) {
21
+ const path = resolve(cwd, ALLOWLIST_FILE);
22
+ await writeFile(path, JSON.stringify(list, null, 2) + "\n", "utf-8");
23
+ }
24
+ async function readPackageJson(cwd) {
25
+ try {
26
+ const text = await readFile(resolve(cwd, "package.json"), "utf-8");
27
+ return JSON.parse(text);
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ /**
34
+ * Bootstraps `.kit-allowlist.json` from the current package.json. Every
35
+ * existing dependency is allowed at its currently-recorded range. The user
36
+ * iterates from there: tightening, removing, or annotating.
37
+ */
38
+ export async function initAllowlist(cwd = process.cwd()) {
39
+ const pkg = await readPackageJson(cwd);
40
+ const packages = [];
41
+ if (pkg) {
42
+ for (const [name, range] of Object.entries(pkg.dependencies ?? {})) {
43
+ packages.push({ name, range, reason: "runtime" });
44
+ }
45
+ for (const [name, range] of Object.entries(pkg.devDependencies ?? {})) {
46
+ packages.push({ name, range, reason: "dev" });
47
+ }
48
+ }
49
+ const list = {
50
+ policy: DEFAULT_POLICY,
51
+ packages,
52
+ };
53
+ await writeAllowlist(list, cwd);
54
+ return list;
55
+ }
56
+ /**
57
+ * Reports packages in package.json that are missing from the allowlist
58
+ * (or that use a wildcard `*` range when policy.allow_wildcards is false).
59
+ * Does not check version-range *satisfaction* — that's npm's job; this is
60
+ * just a presence-and-shape gate suitable for CI.
61
+ */
62
+ export async function checkAllowlist(cwd = process.cwd()) {
63
+ const list = await readAllowlist(cwd);
64
+ if (!list)
65
+ return { list: null, violations: [] };
66
+ const pkg = await readPackageJson(cwd);
67
+ if (!pkg)
68
+ return { list, violations: [] };
69
+ const allowed = new Map(list.packages.map((p) => [p.name, p]));
70
+ const violations = [];
71
+ const check = (deps, kind, enforce) => {
72
+ if (!enforce || !deps)
73
+ return;
74
+ for (const [name, range] of Object.entries(deps)) {
75
+ const entry = allowed.get(name);
76
+ if (!entry) {
77
+ violations.push({ name, range, reason: "not-on-allowlist", kind });
78
+ continue;
79
+ }
80
+ if (!list.policy.allow_wildcards &&
81
+ (entry.range === "*" || range === "*")) {
82
+ violations.push({ name, range, reason: "wildcard-blocked", kind });
83
+ }
84
+ }
85
+ };
86
+ check(pkg.dependencies, "runtime", list.policy.enforce_runtime);
87
+ check(pkg.devDependencies, "dev", list.policy.enforce_dev);
88
+ return { list, violations };
89
+ }
90
+ /**
91
+ * Audits the secrets section of an allowlist against the keys actually
92
+ * referenced in `[secrets.keys]` of the user's `.kit.toml`. Returns one
93
+ * violation per gap.
94
+ *
95
+ * Strictness depends on policy.enforce_secrets:
96
+ * true → every secrets.keys entry must have a matching policy entry.
97
+ * false → only secrets that DO have a partial policy are validated, so
98
+ * teams can opt-in gradually without instant-fail.
99
+ */
100
+ export function checkSecretPolicy(list, configKeys, paidServices = new Set([
101
+ "STRIPE",
102
+ "OPENAI",
103
+ "ANTHROPIC",
104
+ "RESEND",
105
+ "VERCEL",
106
+ ])) {
107
+ const violations = [];
108
+ const policyBlock = list.secrets ?? {};
109
+ const enforce = list.policy.enforce_secrets ?? false;
110
+ const defaultCap = list.policy.default_spend_cap_usd;
111
+ for (const key of configKeys) {
112
+ const entry = policyBlock[key];
113
+ if (!entry) {
114
+ if (enforce) {
115
+ violations.push({
116
+ key,
117
+ reason: "no-policy-entry",
118
+ detail: "Key is in [secrets.keys] but missing from allowlist.secrets",
119
+ });
120
+ }
121
+ continue;
122
+ }
123
+ // Heuristic: is this key paid? Look at the prefix before the first `_`.
124
+ const prefix = key.split("_")[0]?.toUpperCase() ?? "";
125
+ const isPaid = paidServices.has(prefix);
126
+ if (isPaid && entry.spend_cap_usd === undefined && defaultCap === undefined) {
127
+ violations.push({
128
+ key,
129
+ reason: "no-spend-cap",
130
+ detail: `${prefix} keys must declare spend_cap_usd (or set policy.default_spend_cap_usd)`,
131
+ });
132
+ }
133
+ if (entry.scope === undefined && entry.require_restricted !== true) {
134
+ violations.push({
135
+ key,
136
+ reason: "no-scope",
137
+ detail: "Set scope (e.g. 'read', 'ReadOnlyAccess') or require_restricted=true",
138
+ });
139
+ }
140
+ if (entry.max_ttl_hours !== undefined && entry.max_ttl_hours > 768) {
141
+ // 768 hours = 32 days = HashiCorp Vault's default TTL ceiling; longer
142
+ // than this is essentially "never expires" and undermines the policy.
143
+ violations.push({
144
+ key,
145
+ reason: "ttl-too-long",
146
+ detail: `max_ttl_hours=${entry.max_ttl_hours} > 768 (32d). Use rotation instead.`,
147
+ });
148
+ }
149
+ }
150
+ return violations;
151
+ }
152
+ /**
153
+ * Adds a package to the allowlist with the version range from package.json.
154
+ * Returns true if the package was added, false if it was already there.
155
+ */
156
+ export async function addToAllowlist(pkgName, cwd = process.cwd()) {
157
+ let list = await readAllowlist(cwd);
158
+ if (!list) {
159
+ list = { policy: DEFAULT_POLICY, packages: [] };
160
+ }
161
+ if (list.packages.find((p) => p.name === pkgName)) {
162
+ return { added: false, entry: list.packages.find((p) => p.name === pkgName) };
163
+ }
164
+ const pkg = await readPackageJson(cwd);
165
+ if (!pkg)
166
+ return { added: false, entry: null };
167
+ const range = pkg.dependencies?.[pkgName] ?? pkg.devDependencies?.[pkgName] ?? "*";
168
+ const kind = pkg.dependencies?.[pkgName] ? "runtime" : "dev";
169
+ const entry = { name: pkgName, range, reason: kind };
170
+ list.packages.push(entry);
171
+ await writeAllowlist(list, cwd);
172
+ return { added: true, entry };
173
+ }
174
+ //# sourceMappingURL=security-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-policy.js","sourceRoot":"","sources":["../src/security-policy.ts"],"names":[],"mappings":"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"}