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,44 @@
1
+ import type { GovernanceConfig } from "./config.js";
2
+ export type OperationType = "read" | "write" | "delete";
3
+ export interface GovernanceCheckResult {
4
+ allowed: boolean;
5
+ reason?: string;
6
+ requiresApproval?: boolean;
7
+ }
8
+ /**
9
+ * Default governance configuration
10
+ */
11
+ export declare const DEFAULT_GOVERNANCE: Required<GovernanceConfig>;
12
+ /**
13
+ * Merge user config with defaults (synchronous version)
14
+ */
15
+ export declare function mergeGovernanceConfig(userConfig?: GovernanceConfig): Required<GovernanceConfig>;
16
+ /**
17
+ * Merge user config with defaults and detect environment (async version)
18
+ */
19
+ export declare function mergeGovernanceConfigAsync(userConfig?: GovernanceConfig): Promise<Required<GovernanceConfig>>;
20
+ /**
21
+ * Check if an operation is allowed based on governance rules
22
+ */
23
+ export declare function checkOperationAllowed(config: Required<GovernanceConfig>, operation: OperationType): GovernanceCheckResult;
24
+ /**
25
+ * Check if a command contains destructive operations
26
+ */
27
+ export declare function isDestructiveOperation(config: Required<GovernanceConfig>, command: string): boolean;
28
+ /**
29
+ * Get current git branch
30
+ */
31
+ export declare function getCurrentGitBranch(): Promise<string | null>;
32
+ /**
33
+ * Detect environment from git branch
34
+ */
35
+ export declare function detectEnvironmentFromBranch(branch: string): "dev" | "staging" | "prod" | null;
36
+ /**
37
+ * Get current environment from config, environment variable, or git branch
38
+ * Priority: config.environment > NODE_ENV > git branch > default (dev)
39
+ */
40
+ export declare function getCurrentEnvironment(config?: GovernanceConfig): Promise<"dev" | "staging" | "prod">;
41
+ /**
42
+ * Format governance status for display
43
+ */
44
+ export declare function formatGovernanceStatus(config: Required<GovernanceConfig>): string;
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Default environment access configurations
3
+ */
4
+ const DEFAULT_ACCESS = {
5
+ dev: { read: true, write: true, delete: true },
6
+ staging: { read: true, write: true, delete: false },
7
+ prod: { read: true, write: false, delete: false },
8
+ };
9
+ /**
10
+ * Default governance configuration
11
+ */
12
+ export const DEFAULT_GOVERNANCE = {
13
+ enabled: false,
14
+ environment: "dev",
15
+ access: DEFAULT_ACCESS,
16
+ agent: {
17
+ id: undefined,
18
+ name: undefined,
19
+ max_tokens_per_day: 1000000,
20
+ max_operations_per_hour: 100,
21
+ },
22
+ audit: {
23
+ enabled: true,
24
+ log_file: ".kit-audit.jsonl",
25
+ log_level: "info",
26
+ include_secrets: false,
27
+ },
28
+ approval: {
29
+ destructive_operations: ["delete", "drop", "truncate", "destroy", "remove"],
30
+ production_writes: true,
31
+ secret_rotations: false,
32
+ approval_timeout: 3600,
33
+ },
34
+ secrets: {
35
+ check_expiration: true,
36
+ warn_days_before_expiry: 30,
37
+ rotate_on_expiry: false,
38
+ revoke_on_agent_disable: true,
39
+ },
40
+ revocation: {
41
+ enabled: false,
42
+ check_interval: 300,
43
+ revocation_endpoint: undefined,
44
+ },
45
+ };
46
+ /**
47
+ * Merge user config with defaults (synchronous version)
48
+ */
49
+ export function mergeGovernanceConfig(userConfig) {
50
+ if (!userConfig) {
51
+ return DEFAULT_GOVERNANCE;
52
+ }
53
+ return {
54
+ enabled: userConfig.enabled ?? DEFAULT_GOVERNANCE.enabled,
55
+ environment: userConfig.environment ?? DEFAULT_GOVERNANCE.environment,
56
+ access: {
57
+ ...DEFAULT_GOVERNANCE.access,
58
+ ...userConfig.access,
59
+ },
60
+ agent: {
61
+ ...DEFAULT_GOVERNANCE.agent,
62
+ ...userConfig.agent,
63
+ },
64
+ audit: {
65
+ ...DEFAULT_GOVERNANCE.audit,
66
+ ...userConfig.audit,
67
+ },
68
+ approval: {
69
+ ...DEFAULT_GOVERNANCE.approval,
70
+ ...userConfig.approval,
71
+ },
72
+ secrets: {
73
+ ...DEFAULT_GOVERNANCE.secrets,
74
+ ...userConfig.secrets,
75
+ },
76
+ revocation: {
77
+ ...DEFAULT_GOVERNANCE.revocation,
78
+ ...userConfig.revocation,
79
+ },
80
+ };
81
+ }
82
+ /**
83
+ * Merge user config with defaults and detect environment (async version)
84
+ */
85
+ export async function mergeGovernanceConfigAsync(userConfig) {
86
+ const merged = mergeGovernanceConfig(userConfig);
87
+ // If environment is not explicitly set, detect it
88
+ if (!userConfig?.environment) {
89
+ merged.environment = await getCurrentEnvironment(userConfig);
90
+ }
91
+ return merged;
92
+ }
93
+ /**
94
+ * Check if an operation is allowed based on governance rules
95
+ */
96
+ export function checkOperationAllowed(config, operation) {
97
+ if (!config.enabled) {
98
+ return { allowed: true };
99
+ }
100
+ const env = config.environment;
101
+ const access = config.access[env];
102
+ if (!access) {
103
+ return {
104
+ allowed: false,
105
+ reason: `No access configuration for environment: ${env}`,
106
+ };
107
+ }
108
+ switch (operation) {
109
+ case "read":
110
+ if (!access.read) {
111
+ return {
112
+ allowed: false,
113
+ reason: `Read operations not allowed in ${env} environment`,
114
+ };
115
+ }
116
+ break;
117
+ case "write":
118
+ if (!access.write) {
119
+ const requiresApproval = env === "prod" && config.approval.production_writes;
120
+ if (requiresApproval) {
121
+ return {
122
+ allowed: false,
123
+ requiresApproval: true,
124
+ reason: `Write operations in ${env} require approval`,
125
+ };
126
+ }
127
+ return {
128
+ allowed: false,
129
+ reason: `Write operations not allowed in ${env} environment`,
130
+ };
131
+ }
132
+ break;
133
+ case "delete":
134
+ if (!access.delete) {
135
+ return {
136
+ allowed: false,
137
+ requiresApproval: true,
138
+ reason: `Delete operations not allowed in ${env} environment`,
139
+ };
140
+ }
141
+ break;
142
+ }
143
+ return { allowed: true };
144
+ }
145
+ /**
146
+ * Check if a command contains destructive operations
147
+ */
148
+ export function isDestructiveOperation(config, command) {
149
+ const keywords = config.approval.destructive_operations || [];
150
+ const lowerCommand = command.toLowerCase();
151
+ return keywords.some((keyword) => lowerCommand.includes(keyword.toLowerCase()));
152
+ }
153
+ /**
154
+ * Get current git branch
155
+ */
156
+ export async function getCurrentGitBranch() {
157
+ try {
158
+ const { execSync } = await import("node:child_process");
159
+ const branch = execSync("git rev-parse --abbrev-ref HEAD", {
160
+ encoding: "utf-8",
161
+ stdio: ["pipe", "pipe", "pipe"],
162
+ }).trim();
163
+ return branch;
164
+ }
165
+ catch {
166
+ return null;
167
+ }
168
+ }
169
+ /**
170
+ * Detect environment from git branch
171
+ */
172
+ export function detectEnvironmentFromBranch(branch) {
173
+ const lowerBranch = branch.toLowerCase();
174
+ // Production branches
175
+ if (lowerBranch === "main" ||
176
+ lowerBranch === "master" ||
177
+ lowerBranch === "prod" ||
178
+ lowerBranch === "production") {
179
+ return "prod";
180
+ }
181
+ // Staging branches
182
+ if (lowerBranch === "staging" ||
183
+ lowerBranch === "stage" ||
184
+ lowerBranch.startsWith("release/")) {
185
+ return "staging";
186
+ }
187
+ // Development branches (all others)
188
+ return "dev";
189
+ }
190
+ /**
191
+ * Get current environment from config, environment variable, or git branch
192
+ * Priority: config.environment > NODE_ENV > git branch > default (dev)
193
+ */
194
+ export async function getCurrentEnvironment(config) {
195
+ // 1. Explicit config takes precedence
196
+ if (config?.environment) {
197
+ return config.environment;
198
+ }
199
+ // 2. NODE_ENV environment variable
200
+ const nodeEnv = process.env.NODE_ENV?.toLowerCase();
201
+ if (nodeEnv === "production")
202
+ return "prod";
203
+ if (nodeEnv === "staging")
204
+ return "staging";
205
+ if (nodeEnv === "development")
206
+ return "dev";
207
+ // 3. Git branch detection
208
+ const branch = await getCurrentGitBranch();
209
+ if (branch) {
210
+ const envFromBranch = detectEnvironmentFromBranch(branch);
211
+ if (envFromBranch) {
212
+ return envFromBranch;
213
+ }
214
+ }
215
+ // 4. Default to dev
216
+ return "dev";
217
+ }
218
+ /**
219
+ * Format governance status for display
220
+ */
221
+ export function formatGovernanceStatus(config) {
222
+ if (!config.enabled) {
223
+ return "Governance: disabled";
224
+ }
225
+ const env = config.environment;
226
+ const access = config.access[env];
227
+ const permissions = [];
228
+ if (access?.read)
229
+ permissions.push("read");
230
+ if (access?.write)
231
+ permissions.push("write");
232
+ if (access?.delete)
233
+ permissions.push("delete");
234
+ return `Governance: enabled | Environment: ${env} | Permissions: ${permissions.join(", ")}`;
235
+ }
236
+ //# sourceMappingURL=governance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.js","sourceRoot":"","sources":["../src/governance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { HooksConfig } from "./config.js";
2
+ /**
3
+ * Path (relative to .git) of the sentinel file written by the kit
4
+ * pre-commit hook. The post-commit detector reads it back; if it's missing
5
+ * the commit was made with `--no-verify` and we audit the skip.
6
+ */
7
+ export declare const HOOK_SENTINEL_REL = ".kit-hook-ran";
8
+ /**
9
+ * Project-relative log of commits that bypassed pre-commit. Written by the
10
+ * post-commit hook; read once per `kit` invocation to surface a banner.
11
+ */
12
+ export declare const SKIPPED_COMMITS_LOG = ".kit-skipped-commits.jsonl";
13
+ export interface HookInstallResult {
14
+ hookName: string;
15
+ action: "installed" | "updated" | "skipped" | "failed";
16
+ detail: string;
17
+ }
18
+ /**
19
+ * Install git hooks from configuration
20
+ */
21
+ export declare function installHooks(config: HooksConfig, gitDir?: string): Promise<HookInstallResult[]>;
22
+ /**
23
+ * Uninstall git hooks
24
+ */
25
+ export declare function uninstallHooks(hookNames: string[], gitDir?: string): Promise<HookInstallResult[]>;
package/dist/hooks.js ADDED
@@ -0,0 +1,281 @@
1
+ import { writeFile, chmod, mkdir } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { existsSync } from "node:fs";
4
+ /**
5
+ * Path (relative to .git) of the sentinel file written by the kit
6
+ * pre-commit hook. The post-commit detector reads it back; if it's missing
7
+ * the commit was made with `--no-verify` and we audit the skip.
8
+ */
9
+ export const HOOK_SENTINEL_REL = ".kit-hook-ran";
10
+ /**
11
+ * Project-relative log of commits that bypassed pre-commit. Written by the
12
+ * post-commit hook; read once per `kit` invocation to surface a banner.
13
+ */
14
+ export const SKIPPED_COMMITS_LOG = ".kit-skipped-commits.jsonl";
15
+ /**
16
+ * Install git hooks from configuration
17
+ */
18
+ export async function installHooks(config, gitDir = ".git") {
19
+ // Read-only mode: hooks are writes to .git/hooks/. Refuse + audit.
20
+ const { isReadOnlyMode, refuseWrite } = await import("./read-only-mode.js");
21
+ if (isReadOnlyMode()) {
22
+ const refusal = await refuseWrite("install-hooks", {
23
+ hook_count: Object.keys(config).length,
24
+ });
25
+ return [{ hookName: "read-only-refusal", action: "failed", detail: refusal.reason }];
26
+ }
27
+ const results = [];
28
+ const hooksDir = resolve(process.cwd(), gitDir, "hooks");
29
+ // Ensure hooks directory exists
30
+ try {
31
+ await mkdir(hooksDir, { recursive: true });
32
+ }
33
+ catch (error) {
34
+ return [
35
+ {
36
+ hookName: "hooks-dir",
37
+ action: "failed",
38
+ detail: `Failed to create hooks directory: ${error}`,
39
+ },
40
+ ];
41
+ }
42
+ // Install each hook
43
+ for (const [hookName, commands] of Object.entries(config)) {
44
+ if (!commands || commands.length === 0) {
45
+ continue;
46
+ }
47
+ const result = await installHook(hooksDir, hookName, commands);
48
+ results.push(result);
49
+ }
50
+ // Always install the bypass detector — independent of HooksConfig so the
51
+ // user can't omit it. Even repos that don't configure any other hooks get
52
+ // the sentinel pair so `--no-verify` is detectable post-facto.
53
+ const detectorResults = await installBypassDetector(hooksDir);
54
+ results.push(...detectorResults);
55
+ return results;
56
+ }
57
+ /**
58
+ * Writes (or re-writes) the pre-commit sentinel-writer and the post-commit
59
+ * detector. The pair makes `git commit --no-verify` non-silent: the
60
+ * post-commit hook compares the sentinel to HEAD and logs a skip event
61
+ * when they don't match (or the sentinel is missing entirely).
62
+ *
63
+ * Git doesn't expose `--no-verify` to hooks, so we can't prevent the skip
64
+ * — but we can guarantee a forensic trail and a stderr banner on the next
65
+ * `kit` command in the repo.
66
+ */
67
+ async function installBypassDetector(hooksDir) {
68
+ const results = [];
69
+ const preCommitDetectorPath = resolve(hooksDir, "pre-commit");
70
+ const postCommitDetectorPath = resolve(hooksDir, "post-commit");
71
+ // The pre-commit sentinel WRITER must run even when the user has no
72
+ // other pre-commit steps configured. If a real pre-commit script
73
+ // already exists (from installHook above), prepend the sentinel write.
74
+ try {
75
+ const sentinelWriter = sentinelWriterScript();
76
+ if (existsSync(preCommitDetectorPath)) {
77
+ const { readFile } = await import("node:fs/promises");
78
+ const current = await readFile(preCommitDetectorPath, "utf-8");
79
+ if (!current.includes("KIT_HOOK_SENTINEL")) {
80
+ // Inject the sentinel-write block right after the shebang line.
81
+ const lines = current.split("\n");
82
+ const injected = [lines[0], "", sentinelWriter, ...lines.slice(1)].join("\n");
83
+ await writeFile(preCommitDetectorPath, injected, "utf-8");
84
+ await chmod(preCommitDetectorPath, 0o755);
85
+ }
86
+ }
87
+ else {
88
+ await writeFile(preCommitDetectorPath, `#!/bin/sh\n${sentinelWriter}\nexit 0\n`, "utf-8");
89
+ await chmod(preCommitDetectorPath, 0o755);
90
+ }
91
+ results.push({
92
+ hookName: "pre-commit (sentinel)",
93
+ action: "installed",
94
+ detail: "writes .git/.kit-hook-ran on every pre-commit pass",
95
+ });
96
+ }
97
+ catch (error) {
98
+ results.push({
99
+ hookName: "pre-commit (sentinel)",
100
+ action: "failed",
101
+ detail: error instanceof Error ? error.message : String(error),
102
+ });
103
+ }
104
+ try {
105
+ const detectorScript = postCommitDetectorScript();
106
+ if (existsSync(postCommitDetectorPath)) {
107
+ const { readFile } = await import("node:fs/promises");
108
+ const current = await readFile(postCommitDetectorPath, "utf-8");
109
+ if (!current.includes("KIT_HOOK_SENTINEL")) {
110
+ const lines = current.split("\n");
111
+ const injected = [lines[0], "", detectorScript, ...lines.slice(1)].join("\n");
112
+ await writeFile(postCommitDetectorPath, injected, "utf-8");
113
+ await chmod(postCommitDetectorPath, 0o755);
114
+ }
115
+ }
116
+ else {
117
+ await writeFile(postCommitDetectorPath, `#!/bin/sh\n${detectorScript}\nexit 0\n`, "utf-8");
118
+ await chmod(postCommitDetectorPath, 0o755);
119
+ }
120
+ results.push({
121
+ hookName: "post-commit (bypass-detector)",
122
+ action: "installed",
123
+ detail: "logs commits whose pre-commit hook didn't run",
124
+ });
125
+ }
126
+ catch (error) {
127
+ results.push({
128
+ hookName: "post-commit (bypass-detector)",
129
+ action: "failed",
130
+ detail: error instanceof Error ? error.message : String(error),
131
+ });
132
+ }
133
+ return results;
134
+ }
135
+ function sentinelWriterScript() {
136
+ return `# KIT_HOOK_SENTINEL: record that pre-commit actually ran. The
137
+ # post-commit detector compares the sentinel to HEAD; mismatch or absence
138
+ # means \`git commit --no-verify\` skipped the gate.
139
+ __kit_git_dir=\${GIT_DIR:-$(git rev-parse --git-dir 2>/dev/null)}
140
+ if [ -n "$__kit_git_dir" ]; then
141
+ date -u +"%Y-%m-%dT%H:%M:%SZ" > "$__kit_git_dir/${HOOK_SENTINEL_REL}" 2>/dev/null || true
142
+ fi`;
143
+ }
144
+ function postCommitDetectorScript() {
145
+ return `# KIT_HOOK_SENTINEL: detect --no-verify skips. If the sentinel
146
+ # is missing OR older than the commit (i.e. wasn't written by this commit's
147
+ # pre-commit pass), record a skip event so the operator and CI can see it.
148
+ __kit_git_dir=\${GIT_DIR:-$(git rev-parse --git-dir 2>/dev/null)}
149
+ __kit_repo_root=$(git rev-parse --show-toplevel 2>/dev/null)
150
+ if [ -n "$__kit_git_dir" ] && [ -n "$__kit_repo_root" ]; then
151
+ __kit_sentinel="$__kit_git_dir/${HOOK_SENTINEL_REL}"
152
+ __kit_head=$(git rev-parse HEAD 2>/dev/null)
153
+ if [ ! -f "$__kit_sentinel" ]; then
154
+ __kit_reason="sentinel-missing"
155
+ else
156
+ # If the sentinel timestamp pre-dates the commit author time by more
157
+ # than ~5min, treat as stale (left from an earlier run).
158
+ __kit_sentinel_ts=$(stat -c %Y "$__kit_sentinel" 2>/dev/null || stat -f %m "$__kit_sentinel" 2>/dev/null)
159
+ __kit_commit_ts=$(git log -1 --format=%ct HEAD 2>/dev/null)
160
+ if [ -n "$__kit_sentinel_ts" ] && [ -n "$__kit_commit_ts" ]; then
161
+ __kit_delta=$(( __kit_commit_ts - __kit_sentinel_ts ))
162
+ if [ "$__kit_delta" -gt 300 ] || [ "$__kit_delta" -lt -300 ]; then
163
+ __kit_reason="sentinel-stale"
164
+ fi
165
+ fi
166
+ fi
167
+ if [ -n "$__kit_reason" ]; then
168
+ __kit_log="$__kit_repo_root/${SKIPPED_COMMITS_LOG}"
169
+ __kit_ts=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
170
+ printf '{"timestamp":"%s","sha":"%s","reason":"%s","user":"%s"}\\n' \\
171
+ "$__kit_ts" "$__kit_head" "$__kit_reason" "\${USER:-unknown}" \\
172
+ >> "$__kit_log" 2>/dev/null || true
173
+ echo "[kit] WARNING: pre-commit hook was skipped ($__kit_reason). Logged to ${SKIPPED_COMMITS_LOG}." >&2
174
+ fi
175
+ # Clean up sentinel so the next commit starts fresh.
176
+ rm -f "$__kit_sentinel" 2>/dev/null || true
177
+ fi`;
178
+ }
179
+ /**
180
+ * Install a single git hook
181
+ */
182
+ async function installHook(hooksDir, hookName, commands) {
183
+ const hookPath = resolve(hooksDir, hookName);
184
+ const hookContent = generateHookScript(hookName, commands);
185
+ try {
186
+ // Check if hook already exists
187
+ const exists = existsSync(hookPath);
188
+ const action = exists ? "updated" : "installed";
189
+ // Write hook file
190
+ await writeFile(hookPath, hookContent, "utf-8");
191
+ // Make executable
192
+ await chmod(hookPath, 0o755);
193
+ return {
194
+ hookName,
195
+ action,
196
+ detail: `${commands.length} command(s)`,
197
+ };
198
+ }
199
+ catch (error) {
200
+ return {
201
+ hookName,
202
+ action: "failed",
203
+ detail: error instanceof Error ? error.message : String(error),
204
+ };
205
+ }
206
+ }
207
+ /**
208
+ * Generate hook script content
209
+ */
210
+ function generateHookScript(hookName, commands) {
211
+ const total = commands.length;
212
+ // Each command is framed as a numbered step with live ▶ / ✓ / ✗ markers and
213
+ // a per-step duration, mirroring the runStep() util used by the CLI
214
+ // (src/output.ts). The raw command text is echoed and executed verbatim so
215
+ // check-hooks' `content.includes(cmd)` up-to-date detection keeps working.
216
+ const steps = commands
217
+ .map((cmd, index) => {
218
+ const n = index + 1;
219
+ return `
220
+ __s=$(date +%s)
221
+ echo "▶ [${n}/${total}] ${cmd}"
222
+ if ${cmd}; then
223
+ echo "✓ [${n}/${total}] ${cmd} ($(( $(date +%s) - __s ))s)"
224
+ else
225
+ echo "✗ ${hookName} step ${n}/${total} failed: ${cmd}"
226
+ exit 1
227
+ fi`;
228
+ })
229
+ .join("\n");
230
+ return `#!/bin/sh
231
+ # Generated by kit
232
+ # Hook: ${hookName}
233
+ # Commands: ${total}
234
+
235
+ set -e
236
+
237
+ __t0=$(date +%s)
238
+ echo "🔍 ${hookName} — running ${total} step(s)…"
239
+ ${steps}
240
+
241
+ echo "✅ ${hookName} passed — ${total} step(s) in $(( $(date +%s) - __t0 ))s"
242
+ exit 0
243
+ `;
244
+ }
245
+ /**
246
+ * Uninstall git hooks
247
+ */
248
+ export async function uninstallHooks(hookNames, gitDir = ".git") {
249
+ const results = [];
250
+ const hooksDir = resolve(process.cwd(), gitDir, "hooks");
251
+ for (const hookName of hookNames) {
252
+ const hookPath = resolve(hooksDir, hookName);
253
+ try {
254
+ if (existsSync(hookPath)) {
255
+ const { unlink } = await import("node:fs/promises");
256
+ await unlink(hookPath);
257
+ results.push({
258
+ hookName,
259
+ action: "installed", // Using "installed" to mean "removed"
260
+ detail: "uninstalled",
261
+ });
262
+ }
263
+ else {
264
+ results.push({
265
+ hookName,
266
+ action: "skipped",
267
+ detail: "not found",
268
+ });
269
+ }
270
+ }
271
+ catch (error) {
272
+ results.push({
273
+ hookName,
274
+ action: "failed",
275
+ detail: error instanceof Error ? error.message : String(error),
276
+ });
277
+ }
278
+ }
279
+ return results;
280
+ }
281
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Centralized ID generation utility
3
+ * Consolidates Date.now() + random pattern used across services
4
+ */
5
+ /**
6
+ * Generate unique ID with optional prefix
7
+ * Pattern: prefix + timestamp-randomString (max 255 chars)
8
+ */
9
+ export declare function generateId(prefix?: string): string;
10
+ /**
11
+ * Generate prefixed IDs for domain entities
12
+ */
13
+ export declare const IdGenerators: {
14
+ partner: (suffix?: string) => string;
15
+ agreement: (suffix?: string) => string;
16
+ apiKey: (suffix?: string) => string;
17
+ coPlugin: (suffix?: string) => string;
18
+ featured: (suffix?: string) => string;
19
+ feedback: (suffix?: string) => string;
20
+ betaDev: (suffix?: string) => string;
21
+ refine: (suffix?: string) => string;
22
+ payout: (suffix?: string) => string;
23
+ grant: (suffix?: string) => string;
24
+ approval: (suffix?: string) => string;
25
+ alert: (suffix?: string) => string;
26
+ trace: (suffix?: string) => string;
27
+ span: (suffix?: string) => string;
28
+ notification: (suffix?: string) => string;
29
+ publish: (suffix?: string) => string;
30
+ documentation: (suffix?: string) => string;
31
+ error: (suffix?: string) => string;
32
+ errorGroup: (suffix?: string) => string;
33
+ search: (suffix?: string) => string;
34
+ review: (suffix?: string) => string;
35
+ report: (suffix?: string) => string;
36
+ modAction: (suffix?: string) => string;
37
+ appeal: (suffix?: string) => string;
38
+ audit: (suffix?: string) => string;
39
+ policy: (suffix?: string) => string;
40
+ transaction: (suffix?: string) => string;
41
+ sla: (suffix?: string) => string;
42
+ breach: (suffix?: string) => string;
43
+ };