@runcore-sh/runcore 0.4.0 → 0.5.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 (351) hide show
  1. package/dictionary.json +2 -2
  2. package/dist/activity/log.js +2 -2
  3. package/dist/activity/log.js.map +1 -1
  4. package/dist/agents/governed-spawn.d.ts.map +1 -1
  5. package/dist/cli.js +101 -11
  6. package/dist/cli.js.map +1 -1
  7. package/dist/extensions/cache.d.ts +57 -0
  8. package/dist/extensions/cache.d.ts.map +1 -0
  9. package/dist/extensions/cache.js +173 -0
  10. package/dist/extensions/cache.js.map +1 -0
  11. package/dist/extensions/client.d.ts +55 -0
  12. package/dist/extensions/client.d.ts.map +1 -0
  13. package/dist/extensions/client.js +120 -0
  14. package/dist/extensions/client.js.map +1 -0
  15. package/dist/extensions/index.d.ts +13 -0
  16. package/dist/extensions/index.d.ts.map +1 -0
  17. package/dist/extensions/index.js +12 -0
  18. package/dist/extensions/index.js.map +1 -0
  19. package/dist/extensions/loader.d.ts +50 -0
  20. package/dist/extensions/loader.d.ts.map +1 -0
  21. package/dist/extensions/loader.js +166 -0
  22. package/dist/extensions/loader.js.map +1 -0
  23. package/dist/extensions/manifest.d.ts +38 -0
  24. package/dist/extensions/manifest.d.ts.map +1 -0
  25. package/dist/extensions/manifest.js +17 -0
  26. package/dist/extensions/manifest.js.map +1 -0
  27. package/dist/extensions/stubs.d.ts +27 -0
  28. package/dist/extensions/stubs.d.ts.map +1 -0
  29. package/dist/extensions/stubs.js +45 -0
  30. package/dist/extensions/stubs.js.map +1 -0
  31. package/dist/lib/audit.js +2 -2
  32. package/dist/lib/audit.js.map +1 -1
  33. package/dist/lib/brain-migrate.d.ts +21 -0
  34. package/dist/lib/brain-migrate.d.ts.map +1 -0
  35. package/dist/lib/brain-migrate.js +137 -0
  36. package/dist/lib/brain-migrate.js.map +1 -0
  37. package/dist/lib/paths.d.ts +27 -0
  38. package/dist/lib/paths.d.ts.map +1 -1
  39. package/dist/lib/paths.js +65 -0
  40. package/dist/lib/paths.js.map +1 -1
  41. package/dist/llm/call-log.d.ts +40 -0
  42. package/dist/llm/call-log.d.ts.map +1 -0
  43. package/dist/llm/call-log.js +35 -0
  44. package/dist/llm/call-log.js.map +1 -0
  45. package/dist/llm/complete.d.ts +6 -0
  46. package/dist/llm/complete.d.ts.map +1 -1
  47. package/dist/llm/complete.js +27 -0
  48. package/dist/llm/complete.js.map +1 -1
  49. package/dist/mcp-server.js +118 -2
  50. package/dist/mcp-server.js.map +1 -1
  51. package/dist/memory/file-backed.d.ts +4 -0
  52. package/dist/memory/file-backed.d.ts.map +1 -1
  53. package/dist/memory/file-backed.js +4 -0
  54. package/dist/memory/file-backed.js.map +1 -1
  55. package/dist/memory/vector-index.d.ts +4 -12
  56. package/dist/memory/vector-index.d.ts.map +1 -1
  57. package/dist/memory/vector-index.js +11 -93
  58. package/dist/memory/vector-index.js.map +1 -1
  59. package/dist/search/brain-docs.d.ts +17 -7
  60. package/dist/search/brain-docs.d.ts.map +1 -1
  61. package/dist/search/brain-docs.js +170 -52
  62. package/dist/search/brain-docs.js.map +1 -1
  63. package/dist/search/brain-rag.d.ts +45 -0
  64. package/dist/search/brain-rag.d.ts.map +1 -0
  65. package/dist/search/brain-rag.js +275 -0
  66. package/dist/search/brain-rag.js.map +1 -0
  67. package/dist/search/chunker.d.ts +24 -0
  68. package/dist/search/chunker.d.ts.map +1 -0
  69. package/dist/search/chunker.js +95 -0
  70. package/dist/search/chunker.js.map +1 -0
  71. package/dist/search/embedder.d.ts +16 -0
  72. package/dist/search/embedder.d.ts.map +1 -0
  73. package/dist/search/embedder.js +108 -0
  74. package/dist/search/embedder.js.map +1 -0
  75. package/dist/search/file-watcher.d.ts +11 -0
  76. package/dist/search/file-watcher.d.ts.map +1 -0
  77. package/dist/search/file-watcher.js +86 -0
  78. package/dist/search/file-watcher.js.map +1 -0
  79. package/dist/server.d.ts.map +1 -1
  80. package/dist/server.js +168 -20
  81. package/dist/server.js.map +1 -1
  82. package/dist/sessions/store.d.ts +9 -0
  83. package/dist/sessions/store.d.ts.map +1 -1
  84. package/dist/sessions/store.js.map +1 -1
  85. package/dist/settings.d.ts +26 -0
  86. package/dist/settings.d.ts.map +1 -1
  87. package/dist/settings.js +78 -2
  88. package/dist/settings.js.map +1 -1
  89. package/dist/tracing/init.d.ts +1 -1
  90. package/dist/tracing/init.d.ts.map +1 -1
  91. package/dist/utils/logger.js +2 -2
  92. package/dist/utils/logger.js.map +1 -1
  93. package/module-tiers.json +164 -0
  94. package/package.json +9 -13
  95. package/public/avatar/cache/1184385ec5522b57.mp4 +0 -0
  96. package/public/avatar/cache/1f15f6a1ebd7e439.mp4 +0 -0
  97. package/public/avatar/cache/2c7e47ff0bdeb8d1.mp4 +0 -0
  98. package/public/avatar/cache/5f308566f7abb8f2.mp4 +0 -0
  99. package/public/avatar/cache/62f9cfba848d724e.mp4 +0 -0
  100. package/public/avatar/cache/6d64e657e6bf2aab.mp4 +0 -0
  101. package/public/avatar/cache/763ad0349e0b6f26.mp4 +0 -0
  102. package/public/avatar/cache/81a516cfd461b2b9.mp4 +0 -0
  103. package/public/avatar/cache/9366de15fd6910ca.mp4 +0 -0
  104. package/public/avatar/cache/ade41a846b283895.mp4 +0 -0
  105. package/public/avatar/cache/b6066e5c65383eec.mp4 +0 -0
  106. package/public/avatar/cache/edadb75d37891fc7.mp4 +0 -0
  107. package/public/avatar/cache/f0ae159640621dd9.mp4 +0 -0
  108. package/public/avatar/cache/fc2e5419adf29d96.mp4 +0 -0
  109. package/public/index.html +379 -59
  110. package/dist/agents/autonomous.js +0 -749
  111. package/dist/agents/autonomous.js.map +0 -1
  112. package/dist/agents/commit.js +0 -113
  113. package/dist/agents/commit.js.map +0 -1
  114. package/dist/agents/continue.js +0 -158
  115. package/dist/agents/continue.js.map +0 -1
  116. package/dist/agents/cooldown.js +0 -397
  117. package/dist/agents/cooldown.js.map +0 -1
  118. package/dist/agents/dedup-guard.js +0 -131
  119. package/dist/agents/dedup-guard.js.map +0 -1
  120. package/dist/agents/feed.js +0 -176
  121. package/dist/agents/feed.js.map +0 -1
  122. package/dist/agents/governance.js +0 -292
  123. package/dist/agents/governance.js.map +0 -1
  124. package/dist/agents/governed-spawn.js +0 -192
  125. package/dist/agents/governed-spawn.js.map +0 -1
  126. package/dist/agents/heartbeat.js +0 -324
  127. package/dist/agents/heartbeat.js.map +0 -1
  128. package/dist/agents/instance-manager.js +0 -850
  129. package/dist/agents/instance-manager.js.map +0 -1
  130. package/dist/agents/issue-reporter.js +0 -123
  131. package/dist/agents/issue-reporter.js.map +0 -1
  132. package/dist/agents/issues.js +0 -141
  133. package/dist/agents/issues.js.map +0 -1
  134. package/dist/agents/locks.js +0 -234
  135. package/dist/agents/locks.js.map +0 -1
  136. package/dist/agents/memory.js +0 -93
  137. package/dist/agents/memory.js.map +0 -1
  138. package/dist/agents/monitor.js +0 -235
  139. package/dist/agents/monitor.js.map +0 -1
  140. package/dist/agents/orchestration.js +0 -715
  141. package/dist/agents/orchestration.js.map +0 -1
  142. package/dist/agents/recover.js +0 -166
  143. package/dist/agents/recover.js.map +0 -1
  144. package/dist/agents/reflection.js +0 -199
  145. package/dist/agents/reflection.js.map +0 -1
  146. package/dist/agents/runtime/bus.js +0 -174
  147. package/dist/agents/runtime/bus.js.map +0 -1
  148. package/dist/agents/runtime/config.js +0 -101
  149. package/dist/agents/runtime/config.js.map +0 -1
  150. package/dist/agents/runtime/driver.js +0 -214
  151. package/dist/agents/runtime/driver.js.map +0 -1
  152. package/dist/agents/runtime/errors.js +0 -40
  153. package/dist/agents/runtime/errors.js.map +0 -1
  154. package/dist/agents/runtime/index.js +0 -54
  155. package/dist/agents/runtime/index.js.map +0 -1
  156. package/dist/agents/runtime/lifecycle.js +0 -116
  157. package/dist/agents/runtime/lifecycle.js.map +0 -1
  158. package/dist/agents/runtime/manager.js +0 -948
  159. package/dist/agents/runtime/manager.js.map +0 -1
  160. package/dist/agents/runtime/registry.js +0 -195
  161. package/dist/agents/runtime/registry.js.map +0 -1
  162. package/dist/agents/runtime/resources.js +0 -146
  163. package/dist/agents/runtime/resources.js.map +0 -1
  164. package/dist/agents/runtime/types.js +0 -24
  165. package/dist/agents/runtime/types.js.map +0 -1
  166. package/dist/agents/spawn-policy.js +0 -202
  167. package/dist/agents/spawn-policy.js.map +0 -1
  168. package/dist/agents/spawn.js +0 -970
  169. package/dist/agents/spawn.js.map +0 -1
  170. package/dist/agents/triage.js +0 -81
  171. package/dist/agents/triage.js.map +0 -1
  172. package/dist/agents/workflow.js +0 -543
  173. package/dist/agents/workflow.js.map +0 -1
  174. package/dist/avatar/client.js +0 -172
  175. package/dist/avatar/client.js.map +0 -1
  176. package/dist/avatar/sidecar.js +0 -125
  177. package/dist/avatar/sidecar.js.map +0 -1
  178. package/dist/browser/sessions.js +0 -122
  179. package/dist/browser/sessions.js.map +0 -1
  180. package/dist/capabilities/definitions/browser.js +0 -242
  181. package/dist/capabilities/definitions/browser.js.map +0 -1
  182. package/dist/channels/whatsapp.js +0 -200
  183. package/dist/channels/whatsapp.js.map +0 -1
  184. package/dist/credentials/store.js +0 -189
  185. package/dist/credentials/store.js.map +0 -1
  186. package/dist/files/deep-index.js +0 -337
  187. package/dist/files/deep-index.js.map +0 -1
  188. package/dist/files/extract.js +0 -33
  189. package/dist/files/extract.js.map +0 -1
  190. package/dist/files/gdrive.js +0 -246
  191. package/dist/files/gdrive.js.map +0 -1
  192. package/dist/github/client.js +0 -408
  193. package/dist/github/client.js.map +0 -1
  194. package/dist/github/commit-analysis.js +0 -276
  195. package/dist/github/commit-analysis.js.map +0 -1
  196. package/dist/github/contributor-stats.js +0 -119
  197. package/dist/github/contributor-stats.js.map +0 -1
  198. package/dist/github/issue-sla.js +0 -220
  199. package/dist/github/issue-sla.js.map +0 -1
  200. package/dist/github/issue-triage.js +0 -286
  201. package/dist/github/issue-triage.js.map +0 -1
  202. package/dist/github/pr-readiness.js +0 -197
  203. package/dist/github/pr-readiness.js.map +0 -1
  204. package/dist/github/pr-review.js +0 -410
  205. package/dist/github/pr-review.js.map +0 -1
  206. package/dist/github/release-notes.js +0 -227
  207. package/dist/github/release-notes.js.map +0 -1
  208. package/dist/github/repo-health.js +0 -303
  209. package/dist/github/repo-health.js.map +0 -1
  210. package/dist/github/retry.js +0 -117
  211. package/dist/github/retry.js.map +0 -1
  212. package/dist/github/types.js +0 -8
  213. package/dist/github/types.js.map +0 -1
  214. package/dist/github/webhooks.js +0 -153
  215. package/dist/github/webhooks.js.map +0 -1
  216. package/dist/google/auth.js +0 -325
  217. package/dist/google/auth.js.map +0 -1
  218. package/dist/google/calendar-timer.js +0 -91
  219. package/dist/google/calendar-timer.js.map +0 -1
  220. package/dist/google/calendar.js +0 -270
  221. package/dist/google/calendar.js.map +0 -1
  222. package/dist/google/docs.js +0 -309
  223. package/dist/google/docs.js.map +0 -1
  224. package/dist/google/gmail-send.js +0 -219
  225. package/dist/google/gmail-send.js.map +0 -1
  226. package/dist/google/gmail-timer.js +0 -223
  227. package/dist/google/gmail-timer.js.map +0 -1
  228. package/dist/google/gmail.js +0 -470
  229. package/dist/google/gmail.js.map +0 -1
  230. package/dist/google/plugin.js +0 -169
  231. package/dist/google/plugin.js.map +0 -1
  232. package/dist/google/tasks-timer.js +0 -107
  233. package/dist/google/tasks-timer.js.map +0 -1
  234. package/dist/google/tasks.js +0 -331
  235. package/dist/google/tasks.js.map +0 -1
  236. package/dist/google/temporal.js +0 -176
  237. package/dist/google/temporal.js.map +0 -1
  238. package/dist/integrations/gate.js +0 -100
  239. package/dist/integrations/gate.js.map +0 -1
  240. package/dist/integrations/github.js +0 -331
  241. package/dist/integrations/github.js.map +0 -1
  242. package/dist/integrations/google-tasks.js +0 -432
  243. package/dist/integrations/google-tasks.js.map +0 -1
  244. package/dist/mdns.js +0 -110
  245. package/dist/mdns.js.map +0 -1
  246. package/dist/notifications/channel.js +0 -83
  247. package/dist/notifications/channel.js.map +0 -1
  248. package/dist/notifications/channels/adapter.js +0 -55
  249. package/dist/notifications/channels/adapter.js.map +0 -1
  250. package/dist/notifications/channels/index.js +0 -6
  251. package/dist/notifications/channels/index.js.map +0 -1
  252. package/dist/notifications/channels/log.js +0 -29
  253. package/dist/notifications/channels/log.js.map +0 -1
  254. package/dist/notifications/email.js +0 -72
  255. package/dist/notifications/email.js.map +0 -1
  256. package/dist/notifications/engine.js +0 -198
  257. package/dist/notifications/engine.js.map +0 -1
  258. package/dist/notifications/index.js +0 -24
  259. package/dist/notifications/index.js.map +0 -1
  260. package/dist/notifications/phone.js +0 -48
  261. package/dist/notifications/phone.js.map +0 -1
  262. package/dist/notifications/sms.js +0 -65
  263. package/dist/notifications/sms.js.map +0 -1
  264. package/dist/notifications/types.js +0 -14
  265. package/dist/notifications/types.js.map +0 -1
  266. package/dist/notifications/webhook.js +0 -65
  267. package/dist/notifications/webhook.js.map +0 -1
  268. package/dist/resend/inbox.js +0 -199
  269. package/dist/resend/inbox.js.map +0 -1
  270. package/dist/resend/webhooks.js +0 -244
  271. package/dist/resend/webhooks.js.map +0 -1
  272. package/dist/search/browse.js +0 -225
  273. package/dist/search/browse.js.map +0 -1
  274. package/dist/search/perplexity.js +0 -41
  275. package/dist/search/perplexity.js.map +0 -1
  276. package/dist/slack/channels.js +0 -277
  277. package/dist/slack/channels.js.map +0 -1
  278. package/dist/slack/client.js +0 -468
  279. package/dist/slack/client.js.map +0 -1
  280. package/dist/slack/retry.js +0 -100
  281. package/dist/slack/retry.js.map +0 -1
  282. package/dist/slack/types.js +0 -52
  283. package/dist/slack/types.js.map +0 -1
  284. package/dist/slack/webhooks.js +0 -285
  285. package/dist/slack/webhooks.js.map +0 -1
  286. package/dist/stt/client.js +0 -66
  287. package/dist/stt/client.js.map +0 -1
  288. package/dist/stt/sidecar.js +0 -115
  289. package/dist/stt/sidecar.js.map +0 -1
  290. package/dist/tracing/bridge.js +0 -70
  291. package/dist/tracing/bridge.js.map +0 -1
  292. package/dist/tracing/correlation.js +0 -49
  293. package/dist/tracing/correlation.js.map +0 -1
  294. package/dist/tracing/index.js +0 -18
  295. package/dist/tracing/index.js.map +0 -1
  296. package/dist/tracing/init.js +0 -81
  297. package/dist/tracing/init.js.map +0 -1
  298. package/dist/tracing/instrument.js +0 -145
  299. package/dist/tracing/instrument.js.map +0 -1
  300. package/dist/tracing/middleware.js +0 -69
  301. package/dist/tracing/middleware.js.map +0 -1
  302. package/dist/tracing/tracer.js +0 -327
  303. package/dist/tracing/tracer.js.map +0 -1
  304. package/dist/tts/client.js +0 -48
  305. package/dist/tts/client.js.map +0 -1
  306. package/dist/tts/sidecar.js +0 -148
  307. package/dist/tts/sidecar.js.map +0 -1
  308. package/dist/twilio/call.js +0 -79
  309. package/dist/twilio/call.js.map +0 -1
  310. package/dist/vault/matcher.js +0 -197
  311. package/dist/vault/matcher.js.map +0 -1
  312. package/dist/vault/personal.js +0 -163
  313. package/dist/vault/personal.js.map +0 -1
  314. package/dist/vault/policy.js +0 -159
  315. package/dist/vault/policy.js.map +0 -1
  316. package/dist/vault/store.js +0 -122
  317. package/dist/vault/store.js.map +0 -1
  318. package/dist/vault/transfer.js +0 -188
  319. package/dist/vault/transfer.js.map +0 -1
  320. package/dist/volumes/index.js +0 -2
  321. package/dist/volumes/index.js.map +0 -1
  322. package/dist/volumes/manager.js +0 -462
  323. package/dist/volumes/manager.js.map +0 -1
  324. package/dist/volumes/types.js +0 -8
  325. package/dist/volumes/types.js.map +0 -1
  326. package/dist/webhooks/config.js +0 -214
  327. package/dist/webhooks/config.js.map +0 -1
  328. package/dist/webhooks/event-log.js +0 -132
  329. package/dist/webhooks/event-log.js.map +0 -1
  330. package/dist/webhooks/handler.js +0 -103
  331. package/dist/webhooks/handler.js.map +0 -1
  332. package/dist/webhooks/handlers.js +0 -231
  333. package/dist/webhooks/handlers.js.map +0 -1
  334. package/dist/webhooks/index.js +0 -33
  335. package/dist/webhooks/index.js.map +0 -1
  336. package/dist/webhooks/mount.js +0 -400
  337. package/dist/webhooks/mount.js.map +0 -1
  338. package/dist/webhooks/registry.js +0 -143
  339. package/dist/webhooks/registry.js.map +0 -1
  340. package/dist/webhooks/relay.js +0 -53
  341. package/dist/webhooks/relay.js.map +0 -1
  342. package/dist/webhooks/retry.js +0 -270
  343. package/dist/webhooks/retry.js.map +0 -1
  344. package/dist/webhooks/router.js +0 -290
  345. package/dist/webhooks/router.js.map +0 -1
  346. package/dist/webhooks/twilio.js +0 -129
  347. package/dist/webhooks/twilio.js.map +0 -1
  348. package/dist/webhooks/types.js +0 -8
  349. package/dist/webhooks/types.js.map +0 -1
  350. package/dist/webhooks/verify.js +0 -154
  351. package/dist/webhooks/verify.js.map +0 -1
@@ -1,100 +0,0 @@
1
- /**
2
- * Integration gate — central kill switch for token flow.
3
- *
4
- * Controls which secrets get hydrated into process.env at startup.
5
- * Master switch (`integrations.enabled`) kills ALL external token flow.
6
- * Per-service toggles (`integrations.services.<name>`) disable individual integrations.
7
- *
8
- * Keys with no matching prefix (e.g. CORE_PORT, SAFE_WORD) always pass through.
9
- */
10
- import { getSettings } from "../settings.js";
11
- import { createLogger } from "../utils/logger.js";
12
- const log = createLogger("integrations.gate");
13
- /** Maps env var prefixes to integration service names. */
14
- const ENV_PREFIX_MAP = {
15
- GOOGLE_: "google",
16
- GMAIL_: "google",
17
- GITHUB_: "github",
18
- SLACK_: "slack",
19
- TWILIO_: "twilio",
20
- RESEND_: "resend",
21
- RELAY_: "resend",
22
- OPENAI_: "openai",
23
- ANTHROPIC_: "anthropic",
24
- OPENROUTER_: "openrouter",
25
- PERPLEXITY_: "perplexity",
26
- BRIEFING_: "twilio",
27
- };
28
- // Sorted longest-first so OPENROUTER_ matches before OPEN* would (if added)
29
- const SORTED_PREFIXES = Object.keys(ENV_PREFIX_MAP).sort((a, b) => b.length - a.length);
30
- /**
31
- * Resolve which service an env var belongs to, or null if it's not an integration key.
32
- */
33
- export function resolveService(envVarName) {
34
- for (const prefix of SORTED_PREFIXES) {
35
- if (envVarName.startsWith(prefix)) {
36
- return ENV_PREFIX_MAP[prefix];
37
- }
38
- }
39
- return null;
40
- }
41
- /**
42
- * Check if a specific integration service is enabled.
43
- * Returns false if the master switch is off or the service is explicitly disabled.
44
- */
45
- export function isIntegrationEnabled(service) {
46
- const settings = getSettings();
47
- // privateMode → all integrations disabled (network isolation)
48
- if (settings.privateMode)
49
- return false;
50
- const integrations = settings.integrations;
51
- // No integrations block at all → everything enabled (backwards compat)
52
- if (!integrations)
53
- return true;
54
- // Master kill switch
55
- if (integrations.enabled === false)
56
- return false;
57
- // Per-service toggle (default: enabled if not listed)
58
- const services = integrations.services;
59
- if (!services)
60
- return true;
61
- return services[service] !== false;
62
- }
63
- /**
64
- * Should this env var be hydrated into process.env?
65
- * Non-integration keys (no matching prefix) always pass through.
66
- * Integration keys are checked against the gate.
67
- */
68
- export function shouldHydrateKey(envVarName) {
69
- const service = resolveService(envVarName);
70
- // Not an integration key → always hydrate
71
- if (!service)
72
- return true;
73
- return isIntegrationEnabled(service);
74
- }
75
- /**
76
- * Returns list of all known service names and their enabled status.
77
- */
78
- export function getIntegrationStatus() {
79
- const allServices = [...new Set(Object.values(ENV_PREFIX_MAP))].sort();
80
- return allServices.map((service) => ({
81
- service,
82
- enabled: isIntegrationEnabled(service),
83
- }));
84
- }
85
- /**
86
- * Returns only enabled service names.
87
- */
88
- export function getEnabledServices() {
89
- return getIntegrationStatus()
90
- .filter((s) => s.enabled)
91
- .map((s) => s.service);
92
- }
93
- /**
94
- * Check if the master integration switch is off (air-gap mode).
95
- */
96
- export function isAirGapped() {
97
- const settings = getSettings();
98
- return settings.integrations?.enabled === false;
99
- }
100
- //# sourceMappingURL=gate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/integrations/gate.ts"],"names":[],"mappings":"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"}
@@ -1,331 +0,0 @@
1
- /**
2
- * GitHub integration facade — single entry point for all GitHub functionality.
3
- *
4
- * Consolidates: API client, webhook handling, PR review, issue triage,
5
- * commit analysis, and repo health monitoring into one module.
6
- *
7
- * Usage:
8
- * import { initGitHub, getGitHubStatus } from "./integrations/github.js";
9
- * // At startup:
10
- * initGitHub();
11
- * // In routes:
12
- * const status = await getGitHubStatus();
13
- */
14
- import { createLogger } from "../utils/logger.js";
15
- import { logActivity } from "../activity/log.js";
16
- import * as ghClient from "../github/client.js";
17
- import { processWebhook, verifyWebhookSignature, onGitHubEvent, } from "../github/webhooks.js";
18
- import { reviewPR, reviewAndComment } from "../github/pr-review.js";
19
- import { triageIssue, triageAndLabel, triageOpenIssues, setTriageConfig, getTriageConfig, findDuplicates, titleSimilarity } from "../github/issue-triage.js";
20
- import { analyzeCommit, analyzeRecentCommits, analyzeCommitData, getQualityTrend } from "../github/commit-analysis.js";
21
- import { getRepoHealth, formatHealthReport } from "../github/repo-health.js";
22
- import { checkPRReadiness, formatReadinessReport } from "../github/pr-readiness.js";
23
- import { generateReleaseNotes, generateReleaseNotesFromLatestTag, generateReleaseNotesFromCommits } from "../github/release-notes.js";
24
- import { getContributorStats, formatContributorStats } from "../github/contributor-stats.js";
25
- import { getSLAReport, formatSLAReport, setSLAConfig, getSLAConfig } from "../github/issue-sla.js";
26
- import { triageFromIssue } from "../github/issue-triage.js";
27
- const log = createLogger("github");
28
- // ── State ────────────────────────────────────────────────────────────────────
29
- let initialized = false;
30
- let features = {};
31
- let defaultRepo = null;
32
- // ── Lifecycle ────────────────────────────────────────────────────────────────
33
- /**
34
- * Initialize the GitHub integration.
35
- * Registers webhook provider configuration and sets up event handlers.
36
- */
37
- export function initGitHub(config) {
38
- if (initialized)
39
- return;
40
- initialized = true;
41
- features = config?.features ?? {};
42
- // Parse default repo
43
- if (config?.defaultRepo) {
44
- const [owner, repo] = config.defaultRepo.split("/");
45
- if (owner && repo) {
46
- defaultRepo = { owner, repo };
47
- }
48
- }
49
- // Set API base URL if provided
50
- if (config?.apiBaseUrl) {
51
- ghClient.setApiBase(config.apiBaseUrl);
52
- }
53
- // Note: webhook provider config is registered in server.ts via setProviderConfigs().
54
- // Only set it here if initGitHub() is called standalone (e.g., tests).
55
- // server.ts already handles: registerProviders([githubProvider, ...]) + setProviderConfigs([...])
56
- // Wire up auto-triage on new issues (if enabled)
57
- if (features.issueTriage !== false) {
58
- onGitHubEvent("issues", async (payload) => {
59
- const p = payload;
60
- if (p.action !== "opened")
61
- return { handled: true, message: "Skipped non-open action" };
62
- const triage = triageFromIssue(p.repository.owner.login, p.repository.name, p.issue);
63
- log.info(`Auto-triaged ${p.repository.full_name}#${p.issue.number}: ${triage.category} (${triage.priority})`);
64
- return { handled: true, message: `Triaged as ${triage.category}` };
65
- });
66
- }
67
- // Wire up auto-review on PR opened/synchronized (if enabled)
68
- if (features.prReview !== false) {
69
- onGitHubEvent("pull_request", async (payload) => {
70
- const p = payload;
71
- if (p.action !== "opened" && p.action !== "synchronize") {
72
- return { handled: true, message: `Skipped PR action: ${p.action}` };
73
- }
74
- // Skip drafts
75
- if (p.pull_request.draft) {
76
- return { handled: true, message: "Skipped draft PR" };
77
- }
78
- const result = await reviewPR(p.repository.owner.login, p.repository.name, p.pull_request.number);
79
- if (result) {
80
- log.info(`Auto-reviewed PR ${p.repository.full_name}#${p.pull_request.number}: ${result.recommendation}`);
81
- }
82
- return { handled: true, message: `Auto-reviewed PR #${p.pull_request.number}` };
83
- });
84
- }
85
- // Wire up commit analysis on push (if enabled)
86
- if (features.commitAnalysis !== false) {
87
- onGitHubEvent("push", async (payload) => {
88
- const p = payload;
89
- for (const c of p.commits) {
90
- analyzeCommitData(p.repository.owner.login, p.repository.name, c.id, c.message, 0, 0);
91
- }
92
- return { handled: true, message: `Analyzed ${p.commits.length} commits` };
93
- });
94
- }
95
- logActivity({ source: "board", summary: "GitHub integration initialized" });
96
- }
97
- /**
98
- * Shut down the GitHub integration.
99
- */
100
- export function shutdownGitHub() {
101
- initialized = false;
102
- features = {};
103
- defaultRepo = null;
104
- // Clear auth caches
105
- cachedUser = null;
106
- userCachedAt = 0;
107
- authFailedAt = 0;
108
- authFailureError = null;
109
- pendingAuthCheck = null;
110
- logActivity({ source: "board", summary: "GitHub integration shut down" });
111
- }
112
- let cachedUser = null;
113
- let userCachedAt = 0;
114
- const USER_CACHE_TTL_MS = 30 * 60 * 1000;
115
- // Circuit breaker: cache auth failures to avoid re-trying with a bad token.
116
- // After a failure, wait AUTH_FAILURE_COOLDOWN_MS before retrying.
117
- let authFailedAt = 0;
118
- let authFailureError = null;
119
- const AUTH_FAILURE_COOLDOWN_MS = 60 * 1000; // 1 minute cooldown after auth failure
120
- // Dedup: prevent multiple simultaneous auth validations.
121
- let pendingAuthCheck = null;
122
- export async function getGitHubStatus() {
123
- const repoStr = defaultRepo ? `${defaultRepo.owner}/${defaultRepo.repo}` : null;
124
- const available = ghClient.isAvailable();
125
- if (!available) {
126
- return {
127
- available: false,
128
- authenticated: false,
129
- user: null,
130
- features,
131
- defaultRepo: repoStr,
132
- error: "GITHUB_TOKEN not set",
133
- };
134
- }
135
- const now = Date.now();
136
- // Return cached user if still fresh
137
- if (cachedUser && now - userCachedAt < USER_CACHE_TTL_MS) {
138
- return {
139
- available: true,
140
- authenticated: true,
141
- user: { login: cachedUser.login, name: cachedUser.name },
142
- features,
143
- defaultRepo: repoStr,
144
- error: null,
145
- };
146
- }
147
- // Circuit breaker: if auth failed recently, return cached failure without retrying
148
- if (authFailedAt && now - authFailedAt < AUTH_FAILURE_COOLDOWN_MS) {
149
- return {
150
- available: true,
151
- authenticated: false,
152
- user: null,
153
- features,
154
- defaultRepo: repoStr,
155
- error: authFailureError ?? "Authentication failed (cooldown)",
156
- };
157
- }
158
- // Dedup concurrent auth checks — if one is already in flight, join it
159
- if (!pendingAuthCheck) {
160
- pendingAuthCheck = ghClient.getAuthenticatedUser().finally(() => {
161
- pendingAuthCheck = null;
162
- });
163
- }
164
- const user = await pendingAuthCheck;
165
- if (user) {
166
- cachedUser = user;
167
- userCachedAt = now;
168
- authFailedAt = 0;
169
- authFailureError = null;
170
- }
171
- else {
172
- authFailedAt = now;
173
- authFailureError = "Authentication failed — check GITHUB_TOKEN";
174
- log.warn(`GitHub auth validation failed, cooldown for ${AUTH_FAILURE_COOLDOWN_MS / 1000}s`);
175
- }
176
- return {
177
- available: true,
178
- authenticated: !!user,
179
- user: user ? { login: user.login, name: user.name } : null,
180
- features,
181
- defaultRepo: repoStr,
182
- error: user ? null : authFailureError,
183
- };
184
- }
185
- export function isGitHubAvailable() {
186
- return ghClient.isAvailable();
187
- }
188
- // ── Helper: resolve owner/repo ───────────────────────────────────────────────
189
- function resolveRepo(repoStr) {
190
- if (repoStr) {
191
- const [owner, repo] = repoStr.split("/");
192
- if (owner && repo)
193
- return { owner, repo };
194
- }
195
- return defaultRepo;
196
- }
197
- // ── PR Review ────────────────────────────────────────────────────────────────
198
- export async function reviewPullRequest(prNumber, repoStr) {
199
- if (features.prReview === false)
200
- return null;
201
- const r = resolveRepo(repoStr);
202
- if (!r) {
203
- log.warn("No repo specified and no default repo configured");
204
- return null;
205
- }
206
- return reviewPR(r.owner, r.repo, prNumber);
207
- }
208
- export async function reviewAndCommentPR(prNumber, repoStr) {
209
- if (features.prReview === false)
210
- return null;
211
- const r = resolveRepo(repoStr);
212
- if (!r)
213
- return null;
214
- return reviewAndComment(r.owner, r.repo, prNumber);
215
- }
216
- // ── Issue Triage ─────────────────────────────────────────────────────────────
217
- export async function triageGitHubIssue(issueNumber, repoStr) {
218
- if (features.issueTriage === false)
219
- return null;
220
- const r = resolveRepo(repoStr);
221
- if (!r)
222
- return null;
223
- return triageIssue(r.owner, r.repo, issueNumber);
224
- }
225
- export async function triageAndLabelIssue(issueNumber, repoStr) {
226
- if (features.issueTriage === false)
227
- return null;
228
- const r = resolveRepo(repoStr);
229
- if (!r)
230
- return null;
231
- return triageAndLabel(r.owner, r.repo, issueNumber);
232
- }
233
- export async function batchTriageIssues(repoStr, opts) {
234
- if (features.issueTriage === false)
235
- return [];
236
- const r = resolveRepo(repoStr);
237
- if (!r)
238
- return [];
239
- return triageOpenIssues(r.owner, r.repo, opts);
240
- }
241
- // ── Duplicate Detection ──────────────────────────────────────────────────────
242
- export async function findDuplicateIssues(issueNumber, repoStr, opts) {
243
- if (features.issueTriage === false)
244
- return [];
245
- const r = resolveRepo(repoStr);
246
- if (!r)
247
- return [];
248
- return findDuplicates(r.owner, r.repo, issueNumber, opts);
249
- }
250
- // ── Commit Analysis ──────────────────────────────────────────────────────────
251
- export async function analyzeGitHubCommit(sha, repoStr) {
252
- if (features.commitAnalysis === false)
253
- return null;
254
- const r = resolveRepo(repoStr);
255
- if (!r)
256
- return null;
257
- return analyzeCommit(r.owner, r.repo, sha);
258
- }
259
- export async function analyzeRecentGitHubCommits(repoStr, opts) {
260
- if (features.commitAnalysis === false)
261
- return [];
262
- const r = resolveRepo(repoStr);
263
- if (!r)
264
- return [];
265
- return analyzeRecentCommits(r.owner, r.repo, opts);
266
- }
267
- // ── Commit Quality Trends ────────────────────────────────────────────────────
268
- export async function getCommitQualityTrend(repoStr, opts) {
269
- if (features.commitAnalysis === false)
270
- return null;
271
- const r = resolveRepo(repoStr);
272
- if (!r)
273
- return null;
274
- return getQualityTrend(r.owner, r.repo, opts);
275
- }
276
- // ── Repo Health ──────────────────────────────────────────────────────────────
277
- export async function getGitHubRepoHealth(repoStr) {
278
- if (features.repoHealth === false)
279
- return null;
280
- const r = resolveRepo(repoStr);
281
- if (!r)
282
- return null;
283
- return getRepoHealth(r.owner, r.repo);
284
- }
285
- // ── PR Merge Readiness ────────────────────────────────────────────────────────
286
- export async function checkPRMergeReadiness(prNumber, repoStr) {
287
- if (features.prReadiness === false)
288
- return null;
289
- const r = resolveRepo(repoStr);
290
- if (!r)
291
- return null;
292
- return checkPRReadiness(r.owner, r.repo, prNumber);
293
- }
294
- // ── Release Notes ─────────────────────────────────────────────────────────────
295
- export async function generateGitHubReleaseNotes(opts, repoStr) {
296
- if (features.releaseNotes === false)
297
- return null;
298
- const r = resolveRepo(repoStr);
299
- if (!r)
300
- return null;
301
- return generateReleaseNotes(r.owner, r.repo, opts);
302
- }
303
- export async function generateReleaseNotesFromTag(repoStr, opts) {
304
- if (features.releaseNotes === false)
305
- return null;
306
- const r = resolveRepo(repoStr);
307
- if (!r)
308
- return null;
309
- return generateReleaseNotesFromLatestTag(r.owner, r.repo, opts);
310
- }
311
- // ── Contributor Stats ─────────────────────────────────────────────────────────
312
- export async function getGitHubContributorStats(repoStr, opts) {
313
- if (features.contributorStats === false)
314
- return null;
315
- const r = resolveRepo(repoStr);
316
- if (!r)
317
- return null;
318
- return getContributorStats(r.owner, r.repo, opts);
319
- }
320
- // ── Issue SLA ─────────────────────────────────────────────────────────────────
321
- export async function getGitHubSLAReport(repoStr, opts) {
322
- if (features.issueSLA === false)
323
- return null;
324
- const r = resolveRepo(repoStr);
325
- if (!r)
326
- return null;
327
- return getSLAReport(r.owner, r.repo, opts);
328
- }
329
- // ── Re-exports ───────────────────────────────────────────────────────────────
330
- export { verifyWebhookSignature, processWebhook, onGitHubEvent, setTriageConfig, getTriageConfig, formatHealthReport, formatReadinessReport, formatContributorStats, formatSLAReport, generateReleaseNotesFromCommits, analyzeCommitData, titleSimilarity, setSLAConfig, getSLAConfig, };
331
- //# sourceMappingURL=github.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/integrations/github.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC7J,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACvH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AACtI,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAuBnG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEnC,gFAAgF;AAEhF,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAI,QAAQ,GAAuB,EAAE,CAAC;AACtC,IAAI,WAAW,GAA2C,IAAI,CAAC;AAE/D,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAqB;IAC9C,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,IAAI,CAAC;IAEnB,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,EAAE,CAAC;IAElC,qBAAqB;IACrB,IAAI,MAAM,EAAE,WAAW,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YAClB,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;QACvB,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,qFAAqF;IACrF,uEAAuE;IACvE,kGAAkG;IAElG,iDAAiD;IACjD,IAAI,QAAQ,CAAC,WAAW,KAAK,KAAK,EAAE,CAAC;QACnC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxC,MAAM,CAAC,GAAG,OAAoC,CAAC;YAC/C,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;YAExF,MAAM,MAAM,GAAG,eAAe,CAC5B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EACxB,CAAC,CAAC,UAAU,CAAC,IAAI,EACjB,CAAC,CAAC,KAAK,CACR,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC9G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6DAA6D;IAC7D,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAChC,aAAa,CAAC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9C,MAAM,CAAC,GAAG,OAAiC,CAAC;YAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBACxD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtE,CAAC;YACD,cAAc;YACd,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;YACxD,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAC3B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EACxB,CAAC,CAAC,UAAU,CAAC,IAAI,EACjB,CAAC,CAAC,YAAY,CAAC,MAAM,CACtB,CAAC;YACF,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;YAC5G,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QACtC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACtC,MAAM,CAAC,GAAG,OAAmC,CAAC;YAC9C,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;gBAC1B,iBAAiB,CACf,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EACxB,CAAC,CAAC,UAAU,CAAC,IAAI,EACjB,CAAC,CAAC,EAAE,EACJ,CAAC,CAAC,OAAO,EACT,CAAC,EACD,CAAC,CACF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,OAAO,CAAC,MAAM,UAAU,EAAE,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,WAAW,GAAG,KAAK,CAAC;IACpB,QAAQ,GAAG,EAAE,CAAC;IACd,WAAW,GAAG,IAAI,CAAC;IACnB,oBAAoB;IACpB,UAAU,GAAG,IAAI,CAAC;IAClB,YAAY,GAAG,CAAC,CAAC;IACjB,YAAY,GAAG,CAAC,CAAC;IACjB,gBAAgB,GAAG,IAAI,CAAC;IACxB,gBAAgB,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;AAC5E,CAAC;AAaD,IAAI,UAAU,GAAsB,IAAI,CAAC;AACzC,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzC,4EAA4E;AAC5E,kEAAkE;AAClE,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,IAAI,gBAAgB,GAAkB,IAAI,CAAC;AAC3C,MAAM,wBAAwB,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,uCAAuC;AAEnF,yDAAyD;AACzD,IAAI,gBAAgB,GAAsC,IAAI,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhF,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,IAAI;YACV,QAAQ;YACR,WAAW,EAAE,OAAO;YACpB,KAAK,EAAE,sBAAsB;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,oCAAoC;IACpC,IAAI,UAAU,IAAI,GAAG,GAAG,YAAY,GAAG,iBAAiB,EAAE,CAAC;QACzD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,IAAI;YACnB,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE;YACxD,QAAQ;YACR,WAAW,EAAE,OAAO;YACpB,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,IAAI,YAAY,IAAI,GAAG,GAAG,YAAY,GAAG,wBAAwB,EAAE,CAAC;QAClE,OAAO;YACL,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,KAAK;YACpB,IAAI,EAAE,IAAI;YACV,QAAQ;YACR,WAAW,EAAE,OAAO;YACpB,KAAK,EAAE,gBAAgB,IAAI,kCAAkC;SAC9D,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAC9D,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;IAEpC,IAAI,IAAI,EAAE,CAAC;QACT,UAAU,GAAG,IAAI,CAAC;QAClB,YAAY,GAAG,GAAG,CAAC;QACnB,YAAY,GAAG,CAAC,CAAC;QACjB,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,GAAG,CAAC;QACnB,gBAAgB,GAAG,4CAA4C,CAAC;QAChE,GAAG,CAAC,IAAI,CAAC,+CAA+C,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC;IAC9F,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI;QACf,aAAa,EAAE,CAAC,CAAC,IAAI;QACrB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;QAC1D,QAAQ;QACR,WAAW,EAAE,OAAO;QACpB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB;KACtC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;AAChC,CAAC;AAED,gFAAgF;AAEhF,SAAS,WAAW,CAAC,OAAgB;IACnC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,OAAgB;IAEhB,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACtF,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAAgB;IAEhB,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,OAAgB;IAEhB,IAAI,QAAQ,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,OAAgB;IAEhB,IAAI,QAAQ,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAgB,EAChB,IAA0B;IAE1B,IAAI,QAAQ,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAC9C,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACjD,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,OAAgB,EAChB,IAAkD;IAElD,IAAI,QAAQ,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IAC9C,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,OAAO,cAAc,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,OAAgB;IAEhB,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAgB,EAChB,IAAyC;IAEzC,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK;QAAE,OAAO,EAAE,CAAC;IACjD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,OAAO,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAgB,EAChB,IAAwB;IAExB,IAAI,QAAQ,CAAC,cAAc,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,eAAe,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,gFAAgF;AAEhF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAgB;IAEhB,IAAI,QAAQ,CAAC,UAAU,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,OAAgB;IAEhB,IAAI,QAAQ,CAAC,WAAW,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAqD,EACrD,OAAgB;IAEhB,IAAI,QAAQ,CAAC,YAAY,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,OAAgB,EAChB,IAA2B;IAE3B,IAAI,QAAQ,CAAC,YAAY,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,iCAAiC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAClE,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,OAAgB,EAChB,IAAwB;IAExB,IAAI,QAAQ,CAAC,gBAAgB,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,mBAAmB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAgB,EAChB,IAAwB;IAExB,IAAI,QAAQ,CAAC,QAAQ,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,OAAO,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED,gFAAgF;AAEhF,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,+BAA+B,EAC/B,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,CAAC"}