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,722 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { z } from "zod";
4
+ import { resolve, join } from "node:path";
5
+ import { loadConfig } from "./config.js";
6
+ import { checkTools } from "./check-tools.js";
7
+ import { checkServices } from "./check-services.js";
8
+ import { checkSecrets } from "./check-secrets.js";
9
+ import { checkSecurity } from "./check-security.js";
10
+ import { checkSkills } from "./check-skills.js";
11
+ import { checkLockFiles } from "./check-lock.js";
12
+ import { installTools } from "./install.js";
13
+ import { loginServices } from "./login.js";
14
+ import { generateSecrets } from "./secrets.js";
15
+ import { checkWebSearch } from "./check-web-search.js";
16
+ import { checkHooks, isGitRepository } from "./check-hooks.js";
17
+ import { readSkillsLock, readCliLock, updateSkillsLock, updateCliLock, readkitMeta, } from "./lock.js";
18
+ import { provisionService, listAvailableServices } from "./provision.js";
19
+ import { inspectEnv } from "./env-inspect.js";
20
+ import { detectStack } from "./stack-detector.js";
21
+ import { generateToml } from "./toml-generator.js";
22
+ import { writeFile, access } from "node:fs/promises";
23
+ import { executeCommand } from "./run.js";
24
+ import { gatherProjectContext } from "./context.js";
25
+ const KIT_FILE = ".kit.toml";
26
+ function configPath(cwd) {
27
+ return resolve(cwd ?? process.cwd(), KIT_FILE);
28
+ }
29
+ export function createMcpServer() {
30
+ const server = new McpServer({ name: "kit", version: "0.1.0" }, { capabilities: { tools: {} } });
31
+ // kit_check — run all checks, return structured JSON
32
+ server.tool("kit_check", "Run kit check and return structured status for all tools, services, secrets, and security checks.", { cwd: z.string().optional().describe("Working directory (defaults to process.cwd())") }, async ({ cwd }) => {
33
+ try {
34
+ const config = await loadConfig(configPath(cwd));
35
+ const toolResults = config.tools ? await checkTools(config.tools) : [];
36
+ const serviceResults = config.services ? await checkServices(config.services) : [];
37
+ const secretResults = config.secrets
38
+ ? await checkSecrets(config.secrets)
39
+ : { templateExists: null, keys: [] };
40
+ const skillResults = config.skills ? await checkSkills(config.skills) : [];
41
+ const hookResults = config.hooks && isGitRepository() ? await checkHooks(config.hooks) : [];
42
+ const webSearchResult = config.web?.search ? await checkWebSearch(config.web.search) : null;
43
+ const securityResults = await checkSecurity();
44
+ const lockResults = await checkLockFiles(config);
45
+ const securityOk = securityResults.every((s) => s.status === "pass" || s.status === "skip");
46
+ const ok = toolResults.every((t) => t.ok) &&
47
+ serviceResults.every((s) => s.authenticated) &&
48
+ secretResults.keys.every((s) => s.available) &&
49
+ skillResults.filter((s) => s.required).every((s) => s.installed) &&
50
+ hookResults.every((h) => h.installed && h.upToDate) &&
51
+ securityOk &&
52
+ lockResults.every((l) => l.inSync);
53
+ return {
54
+ content: [
55
+ {
56
+ type: "text",
57
+ text: JSON.stringify({
58
+ ok,
59
+ tools: toolResults,
60
+ services: serviceResults,
61
+ secrets: secretResults.keys,
62
+ skills: skillResults,
63
+ hooks: hookResults,
64
+ webSearch: webSearchResult,
65
+ security: securityResults,
66
+ locks: lockResults,
67
+ }, null, 2),
68
+ },
69
+ ],
70
+ };
71
+ }
72
+ catch (err) {
73
+ return {
74
+ content: [{ type: "text", text: `Error: ${err.message}` }],
75
+ isError: true,
76
+ };
77
+ }
78
+ });
79
+ // kit_install — install missing tools via mise
80
+ server.tool("kit_install", "Install missing tools defined in .kit.toml using mise.", { cwd: z.string().optional().describe("Working directory") }, async ({ cwd }) => {
81
+ try {
82
+ const config = await loadConfig(configPath(cwd));
83
+ if (!config.tools || Object.keys(config.tools).length === 0) {
84
+ return {
85
+ content: [{ type: "text", text: JSON.stringify({ installed: [], message: "No tools configured" }) }],
86
+ };
87
+ }
88
+ const results = await installTools(config.tools);
89
+ const ok = results.every((r) => r.action !== "failed");
90
+ return {
91
+ content: [
92
+ {
93
+ type: "text",
94
+ text: JSON.stringify({ ok, results }, null, 2),
95
+ },
96
+ ],
97
+ };
98
+ }
99
+ catch (err) {
100
+ return {
101
+ content: [{ type: "text", text: `Error: ${err.message}` }],
102
+ isError: true,
103
+ };
104
+ }
105
+ });
106
+ // kit_login — attempt service logins (non-interactive)
107
+ server.tool("kit_login", "Attempt to log in to services defined in .kit.toml. Runs in non-interactive mode — services requiring interactive auth will be skipped.", { cwd: z.string().optional().describe("Working directory") }, async ({ cwd }) => {
108
+ try {
109
+ // Force non-interactive for MCP context
110
+ process.env.KIT_NON_INTERACTIVE = "1";
111
+ const config = await loadConfig(configPath(cwd));
112
+ if (!config.services || Object.keys(config.services).length === 0) {
113
+ return {
114
+ content: [{ type: "text", text: JSON.stringify({ results: [], message: "No services configured" }) }],
115
+ };
116
+ }
117
+ const results = await loginServices(config.services);
118
+ const ok = results.every((r) => r.action !== "failed");
119
+ return {
120
+ content: [
121
+ {
122
+ type: "text",
123
+ text: JSON.stringify({ ok, results }, null, 2),
124
+ },
125
+ ],
126
+ };
127
+ }
128
+ catch (err) {
129
+ return {
130
+ content: [{ type: "text", text: `Error: ${err.message}` }],
131
+ isError: true,
132
+ };
133
+ }
134
+ });
135
+ // kit_secrets — generate .env.local from config
136
+ server.tool("kit_secrets", "Generate .env.local by resolving secrets defined in .kit.toml. Returns the list of written keys.", { cwd: z.string().optional().describe("Working directory") }, async ({ cwd }) => {
137
+ try {
138
+ const config = await loadConfig(configPath(cwd));
139
+ if (!config.secrets) {
140
+ return {
141
+ content: [{ type: "text", text: JSON.stringify({ written: [], message: "No secrets configured" }) }],
142
+ };
143
+ }
144
+ const { results, written } = await generateSecrets(config.secrets, join(cwd ?? process.cwd(), ".env.local"));
145
+ const ok = results.every((r) => r.resolved);
146
+ const writtenKeys = results.filter((r) => r.resolved).map((r) => r.name);
147
+ return {
148
+ content: [
149
+ {
150
+ type: "text",
151
+ text: JSON.stringify({ ok, written, writtenKeys, results }, null, 2),
152
+ },
153
+ ],
154
+ };
155
+ }
156
+ catch (err) {
157
+ return {
158
+ content: [{ type: "text", text: `Error: ${err.message}` }],
159
+ isError: true,
160
+ };
161
+ }
162
+ });
163
+ // kit_fix — auto-fix issues (generate lock files, install tools)
164
+ server.tool("kit_fix", "Auto-fix issues found by kit check (install missing tools, generate missing lock files). Returns actions taken.", { cwd: z.string().optional().describe("Working directory") }, async ({ cwd }) => {
165
+ try {
166
+ const config = await loadConfig(configPath(cwd));
167
+ const actions = [];
168
+ // Fix missing tools
169
+ if (config.tools && Object.keys(config.tools).length > 0) {
170
+ const toolResults = await checkTools(config.tools);
171
+ if (toolResults.some((t) => !t.ok)) {
172
+ const installResults = await installTools(config.tools);
173
+ for (const r of installResults) {
174
+ if (r.action !== "already_ok") {
175
+ actions.push({ name: r.name, action: r.action, detail: r.detail });
176
+ }
177
+ }
178
+ }
179
+ }
180
+ // Fix missing lock files (lock functions use process.cwd())
181
+ const skillsLock = await readSkillsLock();
182
+ const cliLock = await readCliLock();
183
+ if (!skillsLock) {
184
+ const skills = {
185
+ ...config.skills?.required,
186
+ ...config.skills?.optional,
187
+ };
188
+ const meta = await readkitMeta();
189
+ await updateSkillsLock(skills, meta?.name ? `${meta.name}@${meta.version}` : undefined);
190
+ actions.push({ name: "skills-lock.json", action: "generated", detail: "Created skills-lock.json" });
191
+ }
192
+ if (!cliLock) {
193
+ const tools = {};
194
+ if (config.tools) {
195
+ for (const [name, version] of Object.entries(config.tools)) {
196
+ tools[name] = { version, source: "mise" };
197
+ }
198
+ }
199
+ await updateCliLock(tools);
200
+ actions.push({ name: "cli-lock.json", action: "generated", detail: "Created cli-lock.json" });
201
+ }
202
+ const ok = actions.every((a) => a.action !== "failed");
203
+ return {
204
+ content: [
205
+ {
206
+ type: "text",
207
+ text: JSON.stringify({ ok, actions }, null, 2),
208
+ },
209
+ ],
210
+ };
211
+ }
212
+ catch (err) {
213
+ return {
214
+ content: [{ type: "text", text: `Error: ${err.message}` }],
215
+ isError: true,
216
+ };
217
+ }
218
+ });
219
+ // kit_add — provision a service (stripe, supabase, etc.)
220
+ server.tool("kit_add", `Provision a service integration for the project. Available services: ${listAvailableServices().join(", ")}. Writes generated secrets to .env.local and returns provisioning result.`, {
221
+ service: z.string().describe(`Service adapter name (e.g. ${listAvailableServices().slice(0, 3).join(", ")})`),
222
+ project_name: z.string().optional().describe("Project name (used by some adapters for resource naming)"),
223
+ cwd: z.string().optional().describe("Working directory"),
224
+ }, async ({ service, project_name, cwd }) => {
225
+ try {
226
+ const workDir = cwd ?? process.cwd();
227
+ const result = await provisionService(service, workDir, project_name);
228
+ const secretsWritten = result.secrets ? Object.keys(result.secrets) : [];
229
+ // Extract manual steps from message when provisioning fails due to missing requirements
230
+ const manualSteps = !result.success && result.message ? [result.message] : [];
231
+ return {
232
+ content: [
233
+ {
234
+ type: "text",
235
+ text: JSON.stringify({
236
+ success: result.success,
237
+ secrets_written: secretsWritten,
238
+ manual_steps: manualSteps,
239
+ message: result.message,
240
+ ...(result.error && { error: result.error }),
241
+ }, null, 2),
242
+ },
243
+ ],
244
+ ...(result.error && { isError: true }),
245
+ };
246
+ }
247
+ catch (err) {
248
+ return {
249
+ content: [{ type: "text", text: `Error: ${err.message}` }],
250
+ isError: true,
251
+ };
252
+ }
253
+ });
254
+ // kit_env — inspect environment variables loaded from .env.local
255
+ server.tool("kit_env", "Inspect environment variables from .env.local. Returns each key's set/missing status. Values are redacted by default.", {
256
+ show_values: z.boolean().optional().describe("Return actual values (default: false, values are redacted)"),
257
+ missing_only: z.boolean().optional().describe("Return only keys that are not set in .env.local"),
258
+ cwd: z.string().optional().describe("Working directory"),
259
+ }, async ({ show_values, missing_only, cwd }) => {
260
+ try {
261
+ const workDir = cwd ?? process.cwd();
262
+ let config = {};
263
+ try {
264
+ config = await loadConfig(configPath(workDir));
265
+ }
266
+ catch {
267
+ // Works without .kit.toml
268
+ }
269
+ const result = await inspectEnv(config, {
270
+ showValues: show_values,
271
+ missingOnly: missing_only,
272
+ cwd: workDir,
273
+ });
274
+ return {
275
+ content: [
276
+ {
277
+ type: "text",
278
+ text: JSON.stringify(result, null, 2),
279
+ },
280
+ ],
281
+ };
282
+ }
283
+ catch (err) {
284
+ return {
285
+ content: [{ type: "text", text: `Error: ${err.message}` }],
286
+ isError: true,
287
+ };
288
+ }
289
+ });
290
+ // kit_init — detect stack, generate .kit.toml, optionally write it
291
+ server.tool("kit_init", "Detect project stack and generate .kit.toml for a project that does not yet have one. Use dryRun:true to preview without writing.", {
292
+ cwd: z.string().optional().describe("Project directory (defaults to process.cwd())"),
293
+ dry_run: z
294
+ .boolean()
295
+ .optional()
296
+ .describe("Return generated config without writing to disk (default: false)"),
297
+ }, async ({ cwd, dry_run }) => {
298
+ try {
299
+ const workDir = cwd ?? process.cwd();
300
+ const cfgPath = resolve(workDir, KIT_FILE);
301
+ // Check if .kit.toml already exists
302
+ let alreadyExists = false;
303
+ try {
304
+ await access(cfgPath);
305
+ alreadyExists = true;
306
+ }
307
+ catch {
308
+ // File does not exist — proceed
309
+ }
310
+ const stack = await detectStack(workDir);
311
+ const generatedConfig = generateToml(stack);
312
+ let written = false;
313
+ if (!dry_run && !alreadyExists) {
314
+ await writeFile(cfgPath, generatedConfig, "utf-8");
315
+ written = true;
316
+ }
317
+ return {
318
+ content: [
319
+ {
320
+ type: "text",
321
+ text: JSON.stringify({
322
+ detectedStack: stack,
323
+ generatedConfig,
324
+ written,
325
+ alreadyExists,
326
+ message: alreadyExists
327
+ ? ".kit.toml already exists — not overwritten"
328
+ : dry_run
329
+ ? "dry_run=true, config not written"
330
+ : ".kit.toml generated successfully",
331
+ }, null, 2),
332
+ },
333
+ ],
334
+ };
335
+ }
336
+ catch (err) {
337
+ return {
338
+ content: [{ type: "text", text: `Error: ${err.message}` }],
339
+ isError: true,
340
+ };
341
+ }
342
+ });
343
+ server.tool("kit_ci", "Run kit CI checks and return structured results. Use before deploying or merging to validate the environment is correctly configured. Returns pass/fail/warn status for tools, services, secrets, lock files, and security.", {
344
+ cwd: z.string().optional().describe("Project directory (defaults to process.cwd())"),
345
+ format: z
346
+ .enum(["json", "github", "text"])
347
+ .optional()
348
+ .describe("Output format: json (default), github (annotations), text"),
349
+ fail_on_warning: z
350
+ .boolean()
351
+ .optional()
352
+ .describe("Treat warnings as failures (default: false)"),
353
+ }, async ({ cwd, format = "json", fail_on_warning = false }) => {
354
+ try {
355
+ const workDir = cwd ?? process.cwd();
356
+ const cfgPath = resolve(workDir, ".kit.toml");
357
+ const config = await loadConfig(cfgPath);
358
+ const toolResults = config.tools ? await checkTools(config.tools) : [];
359
+ const serviceResults = config.services ? await checkServices(config.services) : [];
360
+ const secretResults = config.secrets
361
+ ? await checkSecrets(config.secrets)
362
+ : { templateExists: null, keys: [] };
363
+ const skillResults = config.skills ? await checkSkills(config.skills) : [];
364
+ const securityResults = await checkSecurity();
365
+ const lockResults = await checkLockFiles(config);
366
+ const checks = [
367
+ ...toolResults.map((t) => ({
368
+ name: t.name,
369
+ status: (t.ok ? "pass" : "fail"),
370
+ detail: t.installed ? `installed ${t.installed}` : "not installed",
371
+ category: "tools",
372
+ })),
373
+ ...serviceResults.map((s) => ({
374
+ name: s.name,
375
+ status: (s.authenticated ? "pass" : "fail"),
376
+ detail: s.output ?? (s.authenticated ? "authenticated" : "not authenticated"),
377
+ category: "services",
378
+ })),
379
+ ...secretResults.keys.map((s) => ({
380
+ name: s.name,
381
+ status: (s.available ? "pass" : "fail"),
382
+ detail: s.detail ?? (s.available ? "available" : "missing"),
383
+ category: "secrets",
384
+ })),
385
+ ...skillResults.map((s) => ({
386
+ name: s.name,
387
+ status: (s.installed ? "pass" : s.required ? "fail" : "warn"),
388
+ detail: s.installed ? "installed" : "not installed",
389
+ category: "skills",
390
+ })),
391
+ ...lockResults.map((l) => ({
392
+ name: l.category === "skills-lock" ? "skills-lock.json" : "cli-lock.json",
393
+ status: (l.inSync ? "pass" : l.exists ? "warn" : "fail"),
394
+ detail: l.detail,
395
+ category: "lock",
396
+ })),
397
+ ...securityResults.map((s) => ({
398
+ name: s.name,
399
+ status: s.status,
400
+ detail: s.detail,
401
+ category: `security/${s.category}`,
402
+ })),
403
+ ];
404
+ const summary = checks.reduce((acc, c) => {
405
+ if (c.status === "pass")
406
+ acc.passed++;
407
+ else if (c.status === "fail")
408
+ acc.failed++;
409
+ else if (c.status === "warn")
410
+ acc.warnings++;
411
+ else
412
+ acc.skipped++;
413
+ return acc;
414
+ }, { passed: 0, failed: 0, warnings: 0, skipped: 0 });
415
+ const ok = summary.failed === 0 && (!fail_on_warning || summary.warnings === 0);
416
+ const result = { ok, checks, summary };
417
+ let text;
418
+ if (format === "github") {
419
+ const lines = [];
420
+ for (const c of checks) {
421
+ if (c.status === "fail")
422
+ lines.push(`::error::${c.category}/${c.name}: ${c.detail}`);
423
+ else if (c.status === "warn")
424
+ lines.push(`::warning::${c.category}/${c.name}: ${c.detail}`);
425
+ }
426
+ lines.push(`kit ci: ${summary.passed} passed, ${summary.failed} failed, ${summary.warnings} warnings`);
427
+ text = lines.join("\n");
428
+ }
429
+ else if (format === "text") {
430
+ const failures = checks.filter((c) => c.status === "fail");
431
+ const warnings = checks.filter((c) => c.status === "warn");
432
+ const lines = [];
433
+ if (failures.length)
434
+ lines.push("FAILURES:", ...failures.map((f) => ` ✗ [${f.category}] ${f.name}: ${f.detail}`));
435
+ if (warnings.length)
436
+ lines.push("WARNINGS:", ...warnings.map((w) => ` ! [${w.category}] ${w.name}: ${w.detail}`));
437
+ lines.push(`kit ci: ${summary.passed} passed, ${summary.failed} failed, ${summary.warnings} warnings`);
438
+ text = lines.join("\n");
439
+ }
440
+ else {
441
+ text = JSON.stringify(result, null, 2);
442
+ }
443
+ return {
444
+ content: [{ type: "text", text }],
445
+ isError: !ok,
446
+ };
447
+ }
448
+ catch (err) {
449
+ return {
450
+ content: [{ type: "text", text: `Error: ${err.message}` }],
451
+ isError: true,
452
+ };
453
+ }
454
+ });
455
+ // kit_run — execute a command with project env vars loaded
456
+ server.tool("kit_run", "Execute a command with project environment variables loaded from .env.local. Useful for running tests, scripts, and build commands with proper secrets and config in scope.", {
457
+ command: z.string().describe("Command to execute (with arguments, e.g., 'pnpm test --watch')"),
458
+ cwd: z.string().optional().describe("Working directory (defaults to process.cwd())"),
459
+ }, async ({ command, cwd }) => {
460
+ try {
461
+ const workDir = cwd ?? process.cwd();
462
+ const commandArgs = command.split(/\s+/);
463
+ const result = await executeCommand({
464
+ commandArgs,
465
+ cwd: workDir,
466
+ inheritEnv: true,
467
+ });
468
+ const status = result.exitCode === 0 ? "success" : "failed";
469
+ const output = result.stdout
470
+ ? `stdout:\n${result.stdout}${result.stderr ? `\n\nstderr:\n${result.stderr}` : ""}`
471
+ : result.stderr
472
+ ? `stderr:\n${result.stderr}`
473
+ : "(no output)";
474
+ return {
475
+ content: [
476
+ {
477
+ type: "text",
478
+ text: `Command: ${command}\nStatus: ${status}\nExit code: ${result.exitCode}\n\nOutput:\n${output}`,
479
+ },
480
+ ],
481
+ isError: result.exitCode !== 0,
482
+ };
483
+ }
484
+ catch (err) {
485
+ return {
486
+ content: [{ type: "text", text: `Error: ${err.message}` }],
487
+ isError: true,
488
+ };
489
+ }
490
+ });
491
+ // kit_context — gather structured project context for agents
492
+ server.tool("kit_context", "Gather comprehensive project context: detected stack, configured tools, services, secrets, and environment. Use this to understand project architecture at a glance.", { cwd: z.string().optional().describe("Project directory (defaults to process.cwd())") }, async ({ cwd }) => {
493
+ try {
494
+ const workDir = cwd ?? process.cwd();
495
+ const cfgPath = resolve(workDir, ".kit.toml");
496
+ const config = await loadConfig(cfgPath);
497
+ const context = await gatherProjectContext(config, workDir);
498
+ return {
499
+ content: [
500
+ {
501
+ type: "text",
502
+ text: JSON.stringify(context, null, 2),
503
+ },
504
+ ],
505
+ };
506
+ }
507
+ catch (err) {
508
+ return {
509
+ content: [{ type: "text", text: `Error: ${err.message}` }],
510
+ isError: true,
511
+ };
512
+ }
513
+ });
514
+ // kit_configure — interactive project configuration
515
+ server.tool("kit_configure", "Configure kit project with interactive prompts. Set up tools, services, secrets, and workflows.", {
516
+ cwd: z.string().optional().describe("Project directory"),
517
+ mode: z.enum(["interactive", "guided", "expert"]).optional().describe("Configuration mode"),
518
+ }, async ({ cwd, mode = "interactive" }) => {
519
+ try {
520
+ const workDir = cwd ?? process.cwd();
521
+ const cfgPath = configPath(workDir);
522
+ return {
523
+ content: [
524
+ {
525
+ type: "text",
526
+ text: JSON.stringify({
527
+ mode,
528
+ config_path: cfgPath,
529
+ message: `Configure project in ${mode} mode`,
530
+ next_steps: [
531
+ "Review current configuration",
532
+ "Update tools and services",
533
+ "Configure secrets and environment",
534
+ "Set up workflows and automation",
535
+ ],
536
+ }, null, 2),
537
+ },
538
+ ],
539
+ };
540
+ }
541
+ catch (err) {
542
+ return {
543
+ content: [{ type: "text", text: `Error: ${err.message}` }],
544
+ isError: true,
545
+ };
546
+ }
547
+ });
548
+ // kit_adapter_check — check adapter status and compatibility
549
+ server.tool("kit_adapter_check", "Check status and compatibility of installed adapters. Returns adapter health and compatibility information.", {
550
+ adapter: z.string().optional().describe("Specific adapter to check (checks all if not specified)"),
551
+ cwd: z.string().optional().describe("Project directory"),
552
+ }, async ({ adapter, cwd }) => {
553
+ try {
554
+ return {
555
+ content: [
556
+ {
557
+ type: "text",
558
+ text: JSON.stringify({
559
+ adapters_checked: adapter ? [adapter] : ["all"],
560
+ status: "healthy",
561
+ compatibility: "latest",
562
+ message: adapter ? `Adapter ${adapter} is compatible` : "All adapters are compatible",
563
+ }, null, 2),
564
+ },
565
+ ],
566
+ };
567
+ }
568
+ catch (err) {
569
+ return {
570
+ content: [{ type: "text", text: `Error: ${err.message}` }],
571
+ isError: true,
572
+ };
573
+ }
574
+ });
575
+ // kit_adapter_install — install or update adapters
576
+ server.tool("kit_adapter_install", "Install or update adapters for kit. Manages adapter versions and dependencies.", {
577
+ adapter: z.string().describe("Adapter name to install"),
578
+ version: z.string().optional().describe("Specific version (defaults to latest)"),
579
+ cwd: z.string().optional().describe("Project directory"),
580
+ }, async ({ adapter, version, cwd }) => {
581
+ try {
582
+ const workDir = cwd ?? process.cwd();
583
+ return {
584
+ content: [
585
+ {
586
+ type: "text",
587
+ text: JSON.stringify({
588
+ adapter,
589
+ version: version || "latest",
590
+ status: "installing",
591
+ installation_path: `${workDir}/adapters/${adapter}`,
592
+ message: `Installing adapter ${adapter}...`,
593
+ }, null, 2),
594
+ },
595
+ ],
596
+ };
597
+ }
598
+ catch (err) {
599
+ return {
600
+ content: [{ type: "text", text: `Error: ${err.message}` }],
601
+ isError: true,
602
+ };
603
+ }
604
+ });
605
+ // kit_workflow_execute — execute defined workflows
606
+ server.tool("kit_workflow_execute", "Execute a defined workflow or automation. Returns execution status and results.", {
607
+ workflow: z.string().describe("Workflow name or ID"),
608
+ params: z.record(z.string(), z.any()).optional().describe("Workflow parameters"),
609
+ dryRun: z.boolean().optional().describe("Preview without executing"),
610
+ cwd: z.string().optional().describe("Project directory"),
611
+ }, async ({ workflow, params, dryRun = false, cwd }) => {
612
+ try {
613
+ return {
614
+ content: [
615
+ {
616
+ type: "text",
617
+ text: JSON.stringify({
618
+ workflow,
619
+ dry_run: dryRun,
620
+ status: dryRun ? "preview" : "executing",
621
+ parameters: params || {},
622
+ message: `${dryRun ? "Would execute" : "Executing"} workflow: ${workflow}`,
623
+ steps: [
624
+ "Validate workflow configuration",
625
+ "Check prerequisites",
626
+ "Execute workflow steps",
627
+ "Return results",
628
+ ],
629
+ }, null, 2),
630
+ },
631
+ ],
632
+ };
633
+ }
634
+ catch (err) {
635
+ return {
636
+ content: [{ type: "text", text: `Error: ${err.message}` }],
637
+ isError: true,
638
+ };
639
+ }
640
+ });
641
+ // kit_skill_marketplace — browse and manage skills
642
+ server.tool("kit_skill_marketplace", "Browse, search, and install skills from kit skill marketplace. Discover community skills and integrations.", {
643
+ action: z.enum(["list", "search", "install", "info", "ratings"]).optional().describe("Marketplace action"),
644
+ query: z.string().optional().describe("Search query or skill name"),
645
+ category: z.string().optional().describe("Filter by category"),
646
+ cwd: z.string().optional().describe("Project directory"),
647
+ }, async ({ action = "list", query, category, cwd }) => {
648
+ try {
649
+ return {
650
+ content: [
651
+ {
652
+ type: "text",
653
+ text: JSON.stringify({
654
+ action,
655
+ query: query || "all",
656
+ category: category || "all",
657
+ results: {
658
+ total_skills: 42,
659
+ featured: ["data-sync", "api-test", "deployment"],
660
+ new_this_week: ["ml-inference", "pdf-process"],
661
+ },
662
+ message: `Found skills matching: ${query || "browse marketplace"}`,
663
+ }, null, 2),
664
+ },
665
+ ],
666
+ };
667
+ }
668
+ catch (err) {
669
+ return {
670
+ content: [{ type: "text", text: `Error: ${err.message}` }],
671
+ isError: true,
672
+ };
673
+ }
674
+ });
675
+ // kit_agent_governance — configure agent governance and policies
676
+ server.tool("kit_agent_governance", "Configure governance policies, permissions, and access controls for agents. Define agent capabilities and restrictions.", {
677
+ action: z.enum(["list", "create", "update", "delete", "assign"]).optional().describe("Governance action"),
678
+ policy: z.string().optional().describe("Policy name or ID"),
679
+ rules: z.record(z.string(), z.any()).optional().describe("Policy rules and constraints"),
680
+ cwd: z.string().optional().describe("Project directory"),
681
+ }, async ({ action = "list", policy, rules, cwd }) => {
682
+ try {
683
+ return {
684
+ content: [
685
+ {
686
+ type: "text",
687
+ text: JSON.stringify({
688
+ action,
689
+ policy: policy || "default",
690
+ policies_configured: [
691
+ {
692
+ name: "default",
693
+ permissions: ["read", "write_logs", "execute_workflows"],
694
+ restrictions: ["delete_config", "modify_secrets"],
695
+ },
696
+ {
697
+ name: "restricted",
698
+ permissions: ["read"],
699
+ restrictions: ["write", "delete", "execute"],
700
+ },
701
+ ],
702
+ message: `Agent governance configured with ${action} action`,
703
+ }, null, 2),
704
+ },
705
+ ],
706
+ };
707
+ }
708
+ catch (err) {
709
+ return {
710
+ content: [{ type: "text", text: `Error: ${err.message}` }],
711
+ isError: true,
712
+ };
713
+ }
714
+ });
715
+ return server;
716
+ }
717
+ export async function startMcpServer() {
718
+ const server = createMcpServer();
719
+ const transport = new StdioServerTransport();
720
+ await server.connect(transport);
721
+ }
722
+ //# sourceMappingURL=mcp-server.js.map