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,46 @@
1
+ function normalize(key) {
2
+ return typeof key === "string" ? { env: key } : key;
3
+ }
4
+ function isPresent(env, key) {
5
+ const value = env[key.env];
6
+ return !!value && (!key.prefix || value.startsWith(key.prefix));
7
+ }
8
+ export function apiKeyAdapter(spec) {
9
+ const required = spec.required.map(normalize);
10
+ return {
11
+ name: spec.name,
12
+ description: spec.description,
13
+ getRequiredTools() {
14
+ return []; // API-based, no CLI needed
15
+ },
16
+ async check(context) {
17
+ return required.every((k) => isPresent(context.existingEnv, k));
18
+ },
19
+ async provision(context) {
20
+ const env = context.existingEnv;
21
+ if (required.every((k) => isPresent(env, k))) {
22
+ const secrets = {};
23
+ for (const k of required)
24
+ secrets[k.env] = env[k.env];
25
+ for (const o of spec.optional ?? []) {
26
+ if (env[o.env] !== undefined)
27
+ secrets[o.env] = env[o.env];
28
+ else if (o.default !== undefined)
29
+ secrets[o.env] = o.default;
30
+ }
31
+ return {
32
+ success: true,
33
+ message: `${spec.name} already configured — keys present in environment`,
34
+ secrets,
35
+ config: { service: spec.name, existing: true },
36
+ };
37
+ }
38
+ const absent = required.filter((k) => !isPresent(env, k)).map((k) => k.env);
39
+ const error = required.length === 1
40
+ ? `Missing ${required[0].env}`
41
+ : `Missing ${spec.name} credentials: ${absent.join(", ")}`;
42
+ return { success: false, error, message: spec.steps.join("\n") };
43
+ },
44
+ };
45
+ }
46
+ //# sourceMappingURL=api-key-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key-adapter.js","sourceRoot":"","sources":["../../src/adapters/api-key-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Clerk — authentication and user management.
3
+ * No programmatic app creation without an account API key, so provisioning
4
+ * reuses both the secret and publishable keys or returns dashboard steps.
5
+ */
6
+ export declare const clerkAuthAdapter: import("sandstream-kit-adapter-sdk").ServiceAdapter;
@@ -0,0 +1,20 @@
1
+ import { apiKeyAdapter } from "./api-key-adapter.js";
2
+ /**
3
+ * Clerk — authentication and user management.
4
+ * No programmatic app creation without an account API key, so provisioning
5
+ * reuses both the secret and publishable keys or returns dashboard steps.
6
+ */
7
+ export const clerkAuthAdapter = apiKeyAdapter({
8
+ name: "clerk/auth",
9
+ description: "Clerk authentication and user management",
10
+ required: ["CLERK_SECRET_KEY", "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY"],
11
+ steps: [
12
+ "Clerk requires manual key retrieval from the dashboard.",
13
+ "1. Go to https://dashboard.clerk.com and create a new application",
14
+ "2. Copy 'Publishable key' → NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY",
15
+ "3. Copy 'Secret keys' → CLERK_SECRET_KEY",
16
+ "4. Optionally copy webhook secret → CLERK_WEBHOOK_SECRET",
17
+ "5. Re-run: kit add clerk/auth (or kit secrets) to write the keys",
18
+ ],
19
+ });
20
+ //# sourceMappingURL=clerk-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clerk-auth.js","sourceRoot":"","sources":["../../src/adapters/clerk-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;IAC5C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,0CAA0C;IACvD,QAAQ,EAAE,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;IACnE,KAAK,EAAE;QACL,yDAAyD;QACzD,mEAAmE;QACnE,+DAA+D;QAC/D,0CAA0C;QAC1C,0DAA0D;QAC1D,kEAAkE;KACnE;CACF,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { ServiceAdapter } from "./types.js";
2
+ /**
3
+ * Cloudflare R2 Object Storage Adapter
4
+ * Provisions an R2 bucket and writes S3-compatible credentials
5
+ */
6
+ export declare const cloudflareR2Adapter: ServiceAdapter;
@@ -0,0 +1,136 @@
1
+ import { exec } from "../utils/exec.js";
2
+ /**
3
+ * Cloudflare R2 Object Storage Adapter
4
+ * Provisions an R2 bucket and writes S3-compatible credentials
5
+ */
6
+ export const cloudflareR2Adapter = {
7
+ name: "cloudflare/r2",
8
+ description: "Cloudflare R2 object storage (S3-compatible)",
9
+ getRequiredTools() {
10
+ return ["wrangler"];
11
+ },
12
+ async check(context) {
13
+ return !!(context.existingEnv.R2_ACCESS_KEY_ID &&
14
+ context.existingEnv.R2_SECRET_ACCESS_KEY &&
15
+ context.existingEnv.R2_BUCKET_NAME);
16
+ },
17
+ async provision(context) {
18
+ // Check wrangler CLI
19
+ try {
20
+ await exec("wrangler", ["--version"], { timeout: 5_000 });
21
+ }
22
+ catch {
23
+ return {
24
+ success: false,
25
+ error: "Wrangler CLI not installed",
26
+ message: "Install Wrangler: npm install -g wrangler",
27
+ };
28
+ }
29
+ // Check authentication
30
+ const accountId = context.existingEnv.CLOUDFLARE_ACCOUNT_ID;
31
+ if (!accountId) {
32
+ return {
33
+ success: false,
34
+ error: "CLOUDFLARE_ACCOUNT_ID not set",
35
+ message: [
36
+ "Set CLOUDFLARE_ACCOUNT_ID in your environment, then re-run.",
37
+ "Find it at: https://dash.cloudflare.com (right sidebar)",
38
+ ].join("\n"),
39
+ };
40
+ }
41
+ // Return existing if already configured
42
+ if (context.existingEnv.R2_ACCESS_KEY_ID &&
43
+ context.existingEnv.R2_SECRET_ACCESS_KEY) {
44
+ return {
45
+ success: true,
46
+ message: "Cloudflare R2 already configured — keys present in environment",
47
+ secrets: {
48
+ R2_ACCESS_KEY_ID: context.existingEnv.R2_ACCESS_KEY_ID,
49
+ R2_SECRET_ACCESS_KEY: context.existingEnv.R2_SECRET_ACCESS_KEY,
50
+ R2_BUCKET_NAME: context.existingEnv.R2_BUCKET_NAME ?? "",
51
+ R2_ENDPOINT: context.existingEnv.R2_ENDPOINT ?? `https://${accountId}.r2.cloudflarestorage.com`,
52
+ CLOUDFLARE_ACCOUNT_ID: accountId,
53
+ },
54
+ config: { service: "cloudflare/r2", existing: true },
55
+ };
56
+ }
57
+ const bucketName = (context.projectName ?? context.projectPath.split("/").pop() ?? "kit-bucket")
58
+ .toLowerCase()
59
+ .replace(/[^a-z0-9-]/g, "-");
60
+ // Create bucket
61
+ try {
62
+ await exec("wrangler", ["r2", "bucket", "create", bucketName], {
63
+ timeout: 30_000,
64
+ env: { ...process.env, CLOUDFLARE_ACCOUNT_ID: accountId },
65
+ });
66
+ }
67
+ catch (err) {
68
+ const msg = err instanceof Error ? err.message : String(err);
69
+ // Bucket may already exist — that's fine
70
+ if (!msg.includes("already exists")) {
71
+ return {
72
+ success: false,
73
+ error: msg,
74
+ message: "Failed to create R2 bucket",
75
+ };
76
+ }
77
+ }
78
+ const endpoint = `https://${accountId}.r2.cloudflarestorage.com`;
79
+ // R2 API tokens must be created via the Cloudflare dashboard or REST API
80
+ // (wrangler does not expose token creation). Return what we can + manual steps.
81
+ const cfApiToken = context.existingEnv.CF_API_TOKEN;
82
+ if (cfApiToken) {
83
+ // Try to create R2 API token via Cloudflare API
84
+ try {
85
+ const resp = await fetch(`https://api.cloudflare.com/client/v4/accounts/${accountId}/r2/tokens`, {
86
+ method: "POST",
87
+ headers: {
88
+ Authorization: `Bearer ${cfApiToken}`,
89
+ "Content-Type": "application/json",
90
+ },
91
+ body: JSON.stringify({
92
+ name: `${bucketName}-kit`,
93
+ permissions: ["admin:read", "admin:write"],
94
+ buckets: [bucketName],
95
+ }),
96
+ });
97
+ if (resp.ok) {
98
+ const data = (await resp.json());
99
+ const { accessKeyId, secretAccessKey } = data.result;
100
+ return {
101
+ success: true,
102
+ message: `R2 bucket '${bucketName}' created with API token`,
103
+ secrets: {
104
+ R2_ACCESS_KEY_ID: accessKeyId,
105
+ R2_SECRET_ACCESS_KEY: secretAccessKey,
106
+ R2_BUCKET_NAME: bucketName,
107
+ R2_ENDPOINT: endpoint,
108
+ CLOUDFLARE_ACCOUNT_ID: accountId,
109
+ },
110
+ config: { service: "cloudflare/r2", bucketName, accountId },
111
+ };
112
+ }
113
+ }
114
+ catch {
115
+ // Fall through to manual steps
116
+ }
117
+ }
118
+ // Return bucket created + manual steps for API token
119
+ return {
120
+ success: true,
121
+ message: [
122
+ `R2 bucket '${bucketName}' created.`,
123
+ "To get R2 API credentials (Access Key ID + Secret), create an API token manually:",
124
+ ` https://dash.cloudflare.com/${accountId}/r2/api-tokens`,
125
+ "Then set R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET_NAME, R2_ENDPOINT in your environment.",
126
+ ].join("\n"),
127
+ secrets: {
128
+ R2_BUCKET_NAME: bucketName,
129
+ R2_ENDPOINT: endpoint,
130
+ CLOUDFLARE_ACCOUNT_ID: accountId,
131
+ },
132
+ config: { service: "cloudflare/r2", bucketName, accountId, tokenRequired: true },
133
+ };
134
+ },
135
+ };
136
+ //# sourceMappingURL=cloudflare-r2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-r2.js","sourceRoot":"","sources":["../../src/adapters/cloudflare-r2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ServiceAdapter } from "./types.js";
2
+ /**
3
+ * Expo EAS Adapter
4
+ * Sets up Expo Application Services with robot account authentication
5
+ */
6
+ export declare const expoEasAdapter: ServiceAdapter;
@@ -0,0 +1,129 @@
1
+ import { exec } from "../utils/exec.js";
2
+ /**
3
+ * Expo EAS Adapter
4
+ * Sets up Expo Application Services with robot account authentication
5
+ */
6
+ export const expoEasAdapter = {
7
+ name: "expo/eas",
8
+ description: "Expo Application Services (EAS) with robot account authentication",
9
+ getRequiredTools() {
10
+ return ["eas"];
11
+ },
12
+ async check(context) {
13
+ try {
14
+ // Check if EXPO_TOKEN exists in env
15
+ if (context.existingEnv.EXPO_TOKEN) {
16
+ // Verify the token is valid
17
+ try {
18
+ await exec("eas", ["whoami"], {
19
+ timeout: 10_000,
20
+ env: { ...process.env, EXPO_TOKEN: context.existingEnv.EXPO_TOKEN },
21
+ });
22
+ return true;
23
+ }
24
+ catch {
25
+ // Token exists but is invalid
26
+ return false;
27
+ }
28
+ }
29
+ return false;
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ },
35
+ async provision(context) {
36
+ try {
37
+ // Step 1: Check if EAS CLI is installed
38
+ try {
39
+ await exec("eas", ["--version"], {
40
+ timeout: 5_000,
41
+ });
42
+ }
43
+ catch {
44
+ return {
45
+ success: false,
46
+ error: "EAS CLI not installed",
47
+ message: "Install EAS CLI: npm install -g eas-cli",
48
+ };
49
+ }
50
+ // Step 2: Check if EXPO_TOKEN is already set
51
+ let expoToken = context.existingEnv.EXPO_TOKEN;
52
+ if (!expoToken) {
53
+ return {
54
+ success: false,
55
+ error: "EXPO_TOKEN not configured",
56
+ message: `To provision EAS:
57
+ 1. Create a robot account at https://expo.dev/settings/accounts
58
+ 2. Generate an access token for the robot account
59
+ 3. Set EXPO_TOKEN=<your_token> and run 'kit add expo/eas' again
60
+ Or provide EXPO_TOKEN in .env.local`,
61
+ };
62
+ }
63
+ // Step 3: Verify the token by running 'eas whoami'
64
+ try {
65
+ const { stdout: whoamiOutput } = await exec("eas", ["whoami"], {
66
+ timeout: 10_000,
67
+ env: { ...process.env, EXPO_TOKEN: expoToken },
68
+ });
69
+ if (!whoamiOutput || whoamiOutput.includes("Not authenticated")) {
70
+ return {
71
+ success: false,
72
+ error: "EXPO_TOKEN is invalid or expired",
73
+ message: "The provided EXPO_TOKEN does not authenticate successfully. Generate a new token.",
74
+ };
75
+ }
76
+ }
77
+ catch (error) {
78
+ return {
79
+ success: false,
80
+ error: "Failed to verify EXPO_TOKEN",
81
+ message: `Error: ${error instanceof Error ? error.message : "Unknown error"}. Ensure EXPO_TOKEN is valid.`,
82
+ };
83
+ }
84
+ // Step 4: Check project credentials
85
+ try {
86
+ await exec("eas", ["credentials"], {
87
+ cwd: context.projectPath,
88
+ timeout: 15_000,
89
+ env: { ...process.env, EXPO_TOKEN: expoToken },
90
+ });
91
+ }
92
+ catch {
93
+ // Credentials check may fail for new projects, that's OK
94
+ // The project will use provisioning certificates if available
95
+ }
96
+ // Step 5: Verify project structure (optional but helpful)
97
+ try {
98
+ await exec("eas", ["build", "--list", "--limit", "1"], {
99
+ cwd: context.projectPath,
100
+ timeout: 15_000,
101
+ env: { ...process.env, EXPO_TOKEN: expoToken },
102
+ });
103
+ }
104
+ catch {
105
+ // Project may have no builds yet, that's fine
106
+ }
107
+ return {
108
+ success: true,
109
+ message: "Expo EAS provisioned successfully with robot account token",
110
+ secrets: {
111
+ EXPO_TOKEN: expoToken,
112
+ },
113
+ config: {
114
+ service: "expo/eas",
115
+ authenticated: true,
116
+ robotAccount: true,
117
+ },
118
+ };
119
+ }
120
+ catch (error) {
121
+ return {
122
+ success: false,
123
+ error: error instanceof Error ? error.message : "Unknown error",
124
+ message: "Failed to provision Expo EAS",
125
+ };
126
+ }
127
+ },
128
+ };
129
+ //# sourceMappingURL=expo-eas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expo-eas.js","sourceRoot":"","sources":["../../src/adapters/expo-eas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Flagsmith — feature flags and remote config (SaaS or self-hosted).
3
+ * API-based; reuses FLAGSMITH_ENVIRONMENT_KEY and carries an optional API URL.
4
+ */
5
+ export declare const flagsmithFlagsAdapter: import("sandstream-kit-adapter-sdk").ServiceAdapter;
@@ -0,0 +1,20 @@
1
+ import { apiKeyAdapter } from "./api-key-adapter.js";
2
+ /**
3
+ * Flagsmith — feature flags and remote config (SaaS or self-hosted).
4
+ * API-based; reuses FLAGSMITH_ENVIRONMENT_KEY and carries an optional API URL.
5
+ */
6
+ export const flagsmithFlagsAdapter = apiKeyAdapter({
7
+ name: "flagsmith/flags",
8
+ description: "Flagsmith feature flags and remote config (SaaS or self-hosted)",
9
+ required: ["FLAGSMITH_ENVIRONMENT_KEY"],
10
+ optional: [{ env: "FLAGSMITH_API_URL", default: "https://edge.api.flagsmith.com/api/v1/" }],
11
+ steps: [
12
+ "Set FLAGSMITH_ENVIRONMENT_KEY before running kit add flagsmith/flags:",
13
+ " 1. Go to https://app.flagsmith.com and create a project and environment",
14
+ " 2. Navigate to SDK Keys → copy the Client-Side environment key",
15
+ " 3. Export it: export FLAGSMITH_ENVIRONMENT_KEY=<your-key>",
16
+ " 4. Re-run: kit add flagsmith/flags",
17
+ " (Self-hosted: also set FLAGSMITH_API_URL to your instance URL)",
18
+ ],
19
+ });
20
+ //# sourceMappingURL=flagsmith-flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flagsmith-flags.js","sourceRoot":"","sources":["../../src/adapters/flagsmith-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAC;IACjD,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,iEAAiE;IAC9E,QAAQ,EAAE,CAAC,2BAA2B,CAAC;IACvC,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;IAC3F,KAAK,EAAE;QACL,uEAAuE;QACvE,2EAA2E;QAC3E,kEAAkE;QAClE,6DAA6D;QAC7D,sCAAsC;QACtC,kEAAkE;KACnE;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ServiceAdapter } from "sandstream-kit-adapter-sdk";
2
+ export declare const flyioHostingAdapter: ServiceAdapter;
@@ -0,0 +1,143 @@
1
+ import { exec } from "../utils/exec.js";
2
+ async function runFly(args, cwd, env) {
3
+ try {
4
+ const { stdout, stderr } = await exec("fly", args, {
5
+ cwd,
6
+ timeout: 120_000,
7
+ env: { ...process.env, ...env },
8
+ });
9
+ return { ok: true, stdout: stdout.trim(), stderr: stderr.trim() };
10
+ }
11
+ catch (err) {
12
+ const e = err;
13
+ return {
14
+ ok: false,
15
+ stdout: e.stdout?.trim() ?? "",
16
+ stderr: (e.stderr ?? e.message ?? String(err)).trim(),
17
+ };
18
+ }
19
+ }
20
+ export const flyioHostingAdapter = {
21
+ name: "flyio/hosting",
22
+ description: "Fly.io — Container deployment platform",
23
+ getRequiredTools() {
24
+ return ["fly"];
25
+ },
26
+ async check(context) {
27
+ const token = context.existingEnv["FLY_API_TOKEN"];
28
+ const appName = context.existingEnv["FLY_APP_NAME"];
29
+ // If token and app name exist, consider it configured
30
+ if (token && appName)
31
+ return true;
32
+ // Otherwise check if fly CLI is authenticated
33
+ const { ok } = await runFly(["auth", "whoami"], context.projectPath);
34
+ return ok;
35
+ },
36
+ async provision(context) {
37
+ // Key-reuse: if we already have credentials, return them
38
+ const existingToken = context.existingEnv["FLY_API_TOKEN"];
39
+ const existingAppName = context.existingEnv["FLY_APP_NAME"];
40
+ const existingOrgSlug = context.existingEnv["FLY_ORG_SLUG"];
41
+ if (existingToken && existingAppName && existingOrgSlug) {
42
+ return {
43
+ success: true,
44
+ message: "Fly.io app already configured",
45
+ secrets: {
46
+ FLY_API_TOKEN: existingToken,
47
+ FLY_APP_NAME: existingAppName,
48
+ FLY_ORG_SLUG: existingOrgSlug,
49
+ },
50
+ };
51
+ }
52
+ // Step 1: Check if fly CLI is installed and available
53
+ const versionResult = await runFly(["version"], context.projectPath);
54
+ if (!versionResult.ok) {
55
+ return {
56
+ success: false,
57
+ message: "Fly CLI (flyctl) not found. Install with: brew install flyctl",
58
+ error: "fly CLI not installed",
59
+ };
60
+ }
61
+ // Step 2: Ensure user is authenticated
62
+ // In headless mode, token should be set via FLY_API_TOKEN env var or via fly auth login --access-token
63
+ const whoamiResult = await runFly(["auth", "whoami"], context.projectPath);
64
+ if (!whoamiResult.ok && !existingToken) {
65
+ return {
66
+ success: false,
67
+ message: "Not authenticated with Fly.io. Login with: fly auth login",
68
+ error: "not authenticated",
69
+ };
70
+ }
71
+ // Step 3: Create a new app if needed
72
+ // Parse project name from package.json or use directory name
73
+ let appName = existingAppName;
74
+ if (!appName) {
75
+ // Generate app name from project name or use a default
76
+ const projectName = context.projectName || "kit-app";
77
+ appName = projectName.toLowerCase().replace(/[^a-z0-9-]/g, "-").substring(0, 30);
78
+ // Create the app
79
+ const createResult = await runFly(["apps", "create", appName], context.projectPath);
80
+ if (!createResult.ok) {
81
+ // App might already exist, that's fine
82
+ if (!createResult.stderr.includes("already exists")) {
83
+ return {
84
+ success: false,
85
+ message: `Failed to create Fly.io app: ${createResult.stderr}`,
86
+ error: "failed to create app",
87
+ };
88
+ }
89
+ }
90
+ }
91
+ // Step 4: Get organization slug
92
+ let orgSlug = existingOrgSlug;
93
+ if (!orgSlug) {
94
+ const statusResult = await runFly(["status", "-a", appName], context.projectPath);
95
+ if (statusResult.ok) {
96
+ // Try to extract org from status output
97
+ // Expected format includes: Organization: <org-slug>
98
+ const orgMatch = statusResult.stdout.match(/Organization:\s+(\S+)/);
99
+ orgSlug = orgMatch?.[1] || "personal";
100
+ }
101
+ else {
102
+ orgSlug = "personal";
103
+ }
104
+ }
105
+ // Step 5: Get or create API token
106
+ let token = existingToken;
107
+ if (!token) {
108
+ // Create a deploy token
109
+ const tokenResult = await runFly(["tokens", "create", "deploy", "-x", "720h"], context.projectPath);
110
+ if (tokenResult.ok) {
111
+ // Extract token from output
112
+ // Expected format: Token: <token-value>
113
+ const match = tokenResult.stdout.match(/Token:\s+(\S+)/);
114
+ token = match?.[1] || "";
115
+ if (!token) {
116
+ return {
117
+ success: false,
118
+ message: "Could not parse Fly.io API token",
119
+ error: "failed to parse token",
120
+ };
121
+ }
122
+ }
123
+ else {
124
+ // Fall back to reading current token
125
+ return {
126
+ success: false,
127
+ message: "Could not create Fly.io deploy token",
128
+ error: "failed to create token",
129
+ };
130
+ }
131
+ }
132
+ return {
133
+ success: true,
134
+ message: `Fly.io app configured: ${appName}`,
135
+ secrets: {
136
+ FLY_API_TOKEN: token,
137
+ FLY_APP_NAME: appName,
138
+ FLY_ORG_SLUG: orgSlug,
139
+ },
140
+ };
141
+ },
142
+ };
143
+ //# sourceMappingURL=flyio-hosting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flyio-hosting.js","sourceRoot":"","sources":["../../src/adapters/flyio-hosting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Service provisioning adapters registry
3
+ */
4
+ import type { AdapterRegistry } from "./types.js";
5
+ export declare const adapters: AdapterRegistry;
6
+ export { type ServiceAdapter, type ProvisionResult, type AdapterContext } from "./types.js";
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Service provisioning adapters registry
3
+ */
4
+ import { stripePaymentsAdapter } from "./stripe-payments.js";
5
+ import { supabaseDbAdapter } from "./supabase-db.js";
6
+ import { vercelHostingAdapter } from "./vercel-hosting.js";
7
+ import { expoEasAdapter } from "./expo-eas.js";
8
+ import { searxngInstanceAdapter } from "./searxng-instance.js";
9
+ import { neonDbAdapter } from "./neon-db.js";
10
+ import { clerkAuthAdapter } from "./clerk-auth.js";
11
+ import { upstashRedisAdapter } from "./upstash-redis.js";
12
+ import { cloudflareR2Adapter } from "./cloudflare-r2.js";
13
+ import { resendEmailAdapter } from "./resend-email.js";
14
+ import { planetscaleDbAdapter } from "./planetscale-db.js";
15
+ import { loopsEmailAdapter } from "./loops-email.js";
16
+ import { liveblocksRealtimeAdapter } from "./liveblocks-realtime.js";
17
+ import { triggerBackgroundAdapter } from "./trigger-background.js";
18
+ import { inngestBackgroundAdapter } from "./inngest-background.js";
19
+ import { flagsmithFlagsAdapter } from "./flagsmith-flags.js";
20
+ import { sentryMonitoringAdapter } from "./sentry-monitoring.js";
21
+ import { tinybirdAnalyticsAdapter } from "./tinybird-analytics.js";
22
+ import { posthogAnalyticsAdapter } from "./posthog-analytics.js";
23
+ import { railwayHostingAdapter } from "./railway-hosting.js";
24
+ import { flyioHostingAdapter } from "./flyio-hosting.js";
25
+ export const adapters = {
26
+ "stripe/payments": stripePaymentsAdapter,
27
+ "supabase/db": supabaseDbAdapter,
28
+ "vercel/hosting": vercelHostingAdapter,
29
+ "expo/eas": expoEasAdapter,
30
+ "searxng/instance": searxngInstanceAdapter,
31
+ "neon/db": neonDbAdapter,
32
+ "clerk/auth": clerkAuthAdapter,
33
+ "upstash/redis": upstashRedisAdapter,
34
+ "cloudflare/r2": cloudflareR2Adapter,
35
+ "resend/email": resendEmailAdapter,
36
+ "planetscale/db": planetscaleDbAdapter,
37
+ "loops/email": loopsEmailAdapter,
38
+ "liveblocks/realtime": liveblocksRealtimeAdapter,
39
+ "trigger/background": triggerBackgroundAdapter,
40
+ "inngest/background": inngestBackgroundAdapter,
41
+ "flagsmith/flags": flagsmithFlagsAdapter,
42
+ "sentry/monitoring": sentryMonitoringAdapter,
43
+ "tinybird/analytics": tinybirdAnalyticsAdapter,
44
+ "posthog/analytics": posthogAnalyticsAdapter,
45
+ "railway/hosting": railwayHostingAdapter,
46
+ "flyio/hosting": flyioHostingAdapter,
47
+ };
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,CAAC,MAAM,QAAQ,GAAoB;IACvC,iBAAiB,EAAE,qBAAqB;IACxC,aAAa,EAAE,iBAAiB;IAChC,gBAAgB,EAAE,oBAAoB;IACtC,UAAU,EAAE,cAAc;IAC1B,kBAAkB,EAAE,sBAAsB;IAC1C,SAAS,EAAE,aAAa;IACxB,YAAY,EAAE,gBAAgB;IAC9B,eAAe,EAAE,mBAAmB;IACpC,eAAe,EAAE,mBAAmB;IACpC,cAAc,EAAE,kBAAkB;IAClC,gBAAgB,EAAE,oBAAoB;IACtC,aAAa,EAAE,iBAAiB;IAChC,qBAAqB,EAAE,yBAAyB;IAChD,oBAAoB,EAAE,wBAAwB;IAC9C,oBAAoB,EAAE,wBAAwB;IAC9C,iBAAiB,EAAE,qBAAqB;IACxC,mBAAmB,EAAE,uBAAuB;IAC5C,oBAAoB,EAAE,wBAAwB;IAC9C,mBAAmB,EAAE,uBAAuB;IAC5C,iBAAiB,EAAE,qBAAqB;IACxC,eAAe,EAAE,mBAAmB;CACrC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Inngest — event-driven background jobs and scheduled functions.
3
+ * API-based; requires both the event key and signing key.
4
+ */
5
+ export declare const inngestBackgroundAdapter: import("sandstream-kit-adapter-sdk").ServiceAdapter;