@intrect/openswarm 0.4.4 → 0.8.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 (259) hide show
  1. package/README.md +46 -26
  2. package/config.example.yaml +22 -10
  3. package/dist/adapters/agenticLoop.d.ts +45 -2
  4. package/dist/adapters/agenticLoop.d.ts.map +1 -1
  5. package/dist/adapters/agenticLoop.js +209 -61
  6. package/dist/adapters/agenticLoop.js.map +1 -1
  7. package/dist/adapters/chatStream.d.ts +55 -0
  8. package/dist/adapters/chatStream.d.ts.map +1 -0
  9. package/dist/adapters/chatStream.js +116 -0
  10. package/dist/adapters/chatStream.js.map +1 -0
  11. package/dist/adapters/codex.d.ts +7 -0
  12. package/dist/adapters/codex.d.ts.map +1 -1
  13. package/dist/adapters/codex.js +67 -6
  14. package/dist/adapters/codex.js.map +1 -1
  15. package/dist/adapters/codexModels.d.ts +20 -0
  16. package/dist/adapters/codexModels.d.ts.map +1 -0
  17. package/dist/adapters/codexModels.js +195 -0
  18. package/dist/adapters/codexModels.js.map +1 -0
  19. package/dist/adapters/codexResponses.d.ts +97 -0
  20. package/dist/adapters/codexResponses.d.ts.map +1 -0
  21. package/dist/adapters/codexResponses.js +302 -0
  22. package/dist/adapters/codexResponses.js.map +1 -0
  23. package/dist/adapters/gpt.d.ts.map +1 -1
  24. package/dist/adapters/gpt.js +20 -120
  25. package/dist/adapters/gpt.js.map +1 -1
  26. package/dist/adapters/index.d.ts +10 -2
  27. package/dist/adapters/index.d.ts.map +1 -1
  28. package/dist/adapters/index.js +19 -5
  29. package/dist/adapters/index.js.map +1 -1
  30. package/dist/adapters/lmstudio.d.ts +8 -0
  31. package/dist/adapters/lmstudio.d.ts.map +1 -0
  32. package/dist/adapters/lmstudio.js +41 -0
  33. package/dist/adapters/lmstudio.js.map +1 -0
  34. package/dist/adapters/local.d.ts +16 -1
  35. package/dist/adapters/local.d.ts.map +1 -1
  36. package/dist/adapters/local.js +51 -127
  37. package/dist/adapters/local.js.map +1 -1
  38. package/dist/adapters/openrouter.d.ts +37 -0
  39. package/dist/adapters/openrouter.d.ts.map +1 -0
  40. package/dist/adapters/openrouter.js +193 -0
  41. package/dist/adapters/openrouter.js.map +1 -0
  42. package/dist/adapters/resultParsing.d.ts +6 -0
  43. package/dist/adapters/resultParsing.d.ts.map +1 -0
  44. package/dist/adapters/resultParsing.js +139 -0
  45. package/dist/adapters/resultParsing.js.map +1 -0
  46. package/dist/adapters/tools.d.ts +21 -2
  47. package/dist/adapters/tools.d.ts.map +1 -1
  48. package/dist/adapters/tools.js +153 -12
  49. package/dist/adapters/tools.js.map +1 -1
  50. package/dist/adapters/types.d.ts +40 -1
  51. package/dist/adapters/types.d.ts.map +1 -1
  52. package/dist/adapters/webTools.d.ts +9 -0
  53. package/dist/adapters/webTools.d.ts.map +1 -0
  54. package/dist/adapters/webTools.js +195 -0
  55. package/dist/adapters/webTools.js.map +1 -0
  56. package/dist/agents/draftAnalyzer.d.ts +1 -1
  57. package/dist/agents/draftAnalyzer.d.ts.map +1 -1
  58. package/dist/agents/draftAnalyzer.js +3 -3
  59. package/dist/agents/draftAnalyzer.js.map +1 -1
  60. package/dist/agents/pairPipeline.d.ts +26 -1
  61. package/dist/agents/pairPipeline.d.ts.map +1 -1
  62. package/dist/agents/pairPipeline.js +184 -17
  63. package/dist/agents/pairPipeline.js.map +1 -1
  64. package/dist/agents/reflection.d.ts +56 -0
  65. package/dist/agents/reflection.d.ts.map +1 -0
  66. package/dist/agents/reflection.js +120 -0
  67. package/dist/agents/reflection.js.map +1 -0
  68. package/dist/agents/worker.d.ts +8 -0
  69. package/dist/agents/worker.d.ts.map +1 -1
  70. package/dist/agents/worker.js +23 -2
  71. package/dist/agents/worker.js.map +1 -1
  72. package/dist/auth/index.d.ts +3 -1
  73. package/dist/auth/index.d.ts.map +1 -1
  74. package/dist/auth/index.js +3 -1
  75. package/dist/auth/index.js.map +1 -1
  76. package/dist/auth/linearPkce.d.ts +22 -0
  77. package/dist/auth/linearPkce.d.ts.map +1 -0
  78. package/dist/auth/linearPkce.js +208 -0
  79. package/dist/auth/linearPkce.js.map +1 -0
  80. package/dist/auth/oauthPkce.d.ts +4 -3
  81. package/dist/auth/oauthPkce.d.ts.map +1 -1
  82. package/dist/auth/oauthPkce.js +39 -12
  83. package/dist/auth/oauthPkce.js.map +1 -1
  84. package/dist/auth/oauthStore.d.ts +11 -1
  85. package/dist/auth/oauthStore.d.ts.map +1 -1
  86. package/dist/auth/oauthStore.js +14 -2
  87. package/dist/auth/oauthStore.js.map +1 -1
  88. package/dist/auth/openrouterPkce.d.ts +29 -0
  89. package/dist/auth/openrouterPkce.d.ts.map +1 -0
  90. package/dist/auth/openrouterPkce.js +222 -0
  91. package/dist/auth/openrouterPkce.js.map +1 -0
  92. package/dist/automation/autonomousRunner.d.ts +17 -7
  93. package/dist/automation/autonomousRunner.d.ts.map +1 -1
  94. package/dist/automation/autonomousRunner.js +69 -70
  95. package/dist/automation/autonomousRunner.js.map +1 -1
  96. package/dist/automation/backlogGrooming.d.ts +21 -0
  97. package/dist/automation/backlogGrooming.d.ts.map +1 -0
  98. package/dist/automation/backlogGrooming.js +80 -0
  99. package/dist/automation/backlogGrooming.js.map +1 -0
  100. package/dist/automation/localCI.d.ts +24 -0
  101. package/dist/automation/localCI.d.ts.map +1 -0
  102. package/dist/automation/localCI.js +84 -0
  103. package/dist/automation/localCI.js.map +1 -0
  104. package/dist/automation/runnerExecution.d.ts +33 -7
  105. package/dist/automation/runnerExecution.d.ts.map +1 -1
  106. package/dist/automation/runnerExecution.js +202 -154
  107. package/dist/automation/runnerExecution.js.map +1 -1
  108. package/dist/automation/runnerTypes.d.ts +5 -1
  109. package/dist/automation/runnerTypes.d.ts.map +1 -1
  110. package/dist/automation/taskSource.d.ts +101 -0
  111. package/dist/automation/taskSource.d.ts.map +1 -0
  112. package/dist/automation/taskSource.js +136 -0
  113. package/dist/automation/taskSource.js.map +1 -0
  114. package/dist/automation/workerAuditLog.d.ts +29 -0
  115. package/dist/automation/workerAuditLog.d.ts.map +1 -0
  116. package/dist/automation/workerAuditLog.js +82 -0
  117. package/dist/automation/workerAuditLog.js.map +1 -0
  118. package/dist/cli/authHandler.d.ts +14 -5
  119. package/dist/cli/authHandler.d.ts.map +1 -1
  120. package/dist/cli/authHandler.js +131 -36
  121. package/dist/cli/authHandler.js.map +1 -1
  122. package/dist/cli/daemon.d.ts +5 -0
  123. package/dist/cli/daemon.d.ts.map +1 -1
  124. package/dist/cli/daemon.js +13 -0
  125. package/dist/cli/daemon.js.map +1 -1
  126. package/dist/cli/doctorHandler.d.ts +2 -0
  127. package/dist/cli/doctorHandler.d.ts.map +1 -0
  128. package/dist/cli/doctorHandler.js +114 -0
  129. package/dist/cli/doctorHandler.js.map +1 -0
  130. package/dist/cli/initWizard.d.ts +13 -0
  131. package/dist/cli/initWizard.d.ts.map +1 -0
  132. package/dist/cli/initWizard.js +314 -0
  133. package/dist/cli/initWizard.js.map +1 -0
  134. package/dist/cli.js +112 -38
  135. package/dist/cli.js.map +1 -1
  136. package/dist/core/config.d.ts +89 -15
  137. package/dist/core/config.d.ts.map +1 -1
  138. package/dist/core/config.js +100 -23
  139. package/dist/core/config.js.map +1 -1
  140. package/dist/core/envFile.d.ts +6 -0
  141. package/dist/core/envFile.d.ts.map +1 -1
  142. package/dist/core/envFile.js +39 -1
  143. package/dist/core/envFile.js.map +1 -1
  144. package/dist/core/eventHub.d.ts +22 -0
  145. package/dist/core/eventHub.d.ts.map +1 -1
  146. package/dist/core/eventHub.js.map +1 -1
  147. package/dist/core/providerOverride.d.ts +6 -0
  148. package/dist/core/providerOverride.d.ts.map +1 -0
  149. package/dist/core/providerOverride.js +37 -0
  150. package/dist/core/providerOverride.js.map +1 -0
  151. package/dist/core/service.d.ts.map +1 -1
  152. package/dist/core/service.js +43 -20
  153. package/dist/core/service.js.map +1 -1
  154. package/dist/core/types.d.ts +16 -2
  155. package/dist/core/types.d.ts.map +1 -1
  156. package/dist/discord/discordCore.d.ts.map +1 -1
  157. package/dist/discord/discordCore.js +16 -103
  158. package/dist/discord/discordCore.js.map +1 -1
  159. package/dist/discord/discordHandlers.d.ts.map +1 -1
  160. package/dist/discord/discordHandlers.js +15 -12
  161. package/dist/discord/discordHandlers.js.map +1 -1
  162. package/dist/index.js +12 -1
  163. package/dist/index.js.map +1 -1
  164. package/dist/issues/sqliteStore.d.ts.map +1 -1
  165. package/dist/issues/sqliteStore.js +7 -2
  166. package/dist/issues/sqliteStore.js.map +1 -1
  167. package/dist/knowledge/scanner.d.ts.map +1 -1
  168. package/dist/knowledge/scanner.js +5 -0
  169. package/dist/knowledge/scanner.js.map +1 -1
  170. package/dist/linear/linear.d.ts +45 -2
  171. package/dist/linear/linear.d.ts.map +1 -1
  172. package/dist/linear/linear.js +154 -3
  173. package/dist/linear/linear.js.map +1 -1
  174. package/dist/locale/prompts/en.d.ts.map +1 -1
  175. package/dist/locale/prompts/en.js +40 -20
  176. package/dist/locale/prompts/en.js.map +1 -1
  177. package/dist/locale/prompts/ko.d.ts.map +1 -1
  178. package/dist/locale/prompts/ko.js +39 -20
  179. package/dist/locale/prompts/ko.js.map +1 -1
  180. package/dist/locale/types.d.ts +6 -0
  181. package/dist/locale/types.d.ts.map +1 -1
  182. package/dist/mcp/mcpClient.d.ts +27 -0
  183. package/dist/mcp/mcpClient.d.ts.map +1 -0
  184. package/dist/mcp/mcpClient.js +145 -0
  185. package/dist/mcp/mcpClient.js.map +1 -0
  186. package/dist/memory/memoryCore.d.ts.map +1 -1
  187. package/dist/memory/memoryCore.js +8 -2
  188. package/dist/memory/memoryCore.js.map +1 -1
  189. package/dist/memory/repoKnowledge.d.ts +33 -0
  190. package/dist/memory/repoKnowledge.d.ts.map +1 -0
  191. package/dist/memory/repoKnowledge.js +97 -0
  192. package/dist/memory/repoKnowledge.js.map +1 -0
  193. package/dist/notify/notifier.d.ts +26 -0
  194. package/dist/notify/notifier.d.ts.map +1 -0
  195. package/dist/notify/notifier.js +131 -0
  196. package/dist/notify/notifier.js.map +1 -0
  197. package/dist/orchestration/conflictDetector.d.ts +5 -2
  198. package/dist/orchestration/conflictDetector.d.ts.map +1 -1
  199. package/dist/orchestration/conflictDetector.js +35 -6
  200. package/dist/orchestration/conflictDetector.js.map +1 -1
  201. package/dist/orchestration/decisionEngine.d.ts +20 -0
  202. package/dist/orchestration/decisionEngine.d.ts.map +1 -1
  203. package/dist/orchestration/decisionEngine.js +45 -0
  204. package/dist/orchestration/decisionEngine.js.map +1 -1
  205. package/dist/support/banner.d.ts +7 -0
  206. package/dist/support/banner.d.ts.map +1 -0
  207. package/dist/support/banner.js +32 -0
  208. package/dist/support/banner.js.map +1 -0
  209. package/dist/support/chat.js +36 -27
  210. package/dist/support/chat.js.map +1 -1
  211. package/dist/support/chatBackend.d.ts +6 -0
  212. package/dist/support/chatBackend.d.ts.map +1 -1
  213. package/dist/support/chatBackend.js +105 -83
  214. package/dist/support/chatBackend.js.map +1 -1
  215. package/dist/support/chatTui.d.ts.map +1 -1
  216. package/dist/support/chatTui.js +217 -27
  217. package/dist/support/chatTui.js.map +1 -1
  218. package/dist/support/colors.d.ts +15 -0
  219. package/dist/support/colors.d.ts.map +1 -0
  220. package/dist/support/colors.js +23 -0
  221. package/dist/support/colors.js.map +1 -0
  222. package/dist/support/dashboardHtml.d.ts +1 -1
  223. package/dist/support/dashboardHtml.d.ts.map +1 -1
  224. package/dist/support/dashboardHtml.js +318 -65
  225. package/dist/support/dashboardHtml.js.map +1 -1
  226. package/dist/support/planCommand.d.ts +17 -0
  227. package/dist/support/planCommand.d.ts.map +1 -0
  228. package/dist/support/planCommand.js +114 -0
  229. package/dist/support/planCommand.js.map +1 -0
  230. package/dist/support/planner.d.ts +9 -2
  231. package/dist/support/planner.d.ts.map +1 -1
  232. package/dist/support/planner.js +43 -111
  233. package/dist/support/planner.js.map +1 -1
  234. package/dist/support/projectMapper.d.ts.map +1 -1
  235. package/dist/support/projectMapper.js +29 -1
  236. package/dist/support/projectMapper.js.map +1 -1
  237. package/dist/support/promptHelper.d.ts +24 -0
  238. package/dist/support/promptHelper.d.ts.map +1 -0
  239. package/dist/support/promptHelper.js +94 -0
  240. package/dist/support/promptHelper.js.map +1 -0
  241. package/dist/support/rateLimiter.d.ts.map +1 -1
  242. package/dist/support/rateLimiter.js +6 -0
  243. package/dist/support/rateLimiter.js.map +1 -1
  244. package/dist/support/repoMetadata.d.ts +51 -0
  245. package/dist/support/repoMetadata.d.ts.map +1 -0
  246. package/dist/support/repoMetadata.js +91 -0
  247. package/dist/support/repoMetadata.js.map +1 -0
  248. package/dist/support/web.d.ts.map +1 -1
  249. package/dist/support/web.js +196 -71
  250. package/dist/support/web.js.map +1 -1
  251. package/dist/support/worktreeManager.d.ts +6 -1
  252. package/dist/support/worktreeManager.d.ts.map +1 -1
  253. package/dist/support/worktreeManager.js +23 -1
  254. package/dist/support/worktreeManager.js.map +1 -1
  255. package/dist/taskState/store.d.ts +1 -0
  256. package/dist/taskState/store.d.ts.map +1 -1
  257. package/dist/taskState/store.js +22 -1
  258. package/dist/taskState/store.js.map +1 -1
  259. package/package.json +3 -1
@@ -0,0 +1,314 @@
1
+ // ============================================
2
+ // OpenSwarm - First-run onboarding wizard
3
+ // `openswarm init` (interactive). INT-1578 / INT-1808.
4
+ // ============================================
5
+ //
6
+ // Walks a fresh user through: AI provider (availability detection + inline
7
+ // auth), task backend (Linear with an arrow-key team/project picker, or local
8
+ // SQLite), and an optional notification channel. Writes a .env (secrets, 0600)
9
+ // + config.yaml + an openswarm.json repo→Linear mapping, then prints next steps.
10
+ // `--yes` keeps the config-only path for CI (handled by the caller in cli.ts).
11
+ import { existsSync, writeFileSync } from 'node:fs';
12
+ import { basename, join } from 'node:path';
13
+ import { select, input, password, confirm } from '@inquirer/prompts';
14
+ import { writeEnvVars } from '../core/envFile.js';
15
+ import { generateSampleConfig } from '../core/config.js';
16
+ import { AuthProfileStore, loginAndSaveLinearProfile, ensureValidToken } from '../auth/index.js';
17
+ import { getAdapter } from '../adapters/index.js';
18
+ import { listTeams, listProjects } from '../linear/index.js';
19
+ import { saveRepoMetadata } from '../support/repoMetadata.js';
20
+ import { banner } from '../support/banner.js';
21
+ const PROVIDER_CHOICES = [
22
+ { name: 'codex-responses', value: 'codex-responses', description: 'ChatGPT subscription (OAuth) — Codex models, native loop' },
23
+ { name: 'codex', value: 'codex', description: 'External codex CLI (delegated)' },
24
+ { name: 'openrouter', value: 'openrouter', description: 'OpenRouter API key or OAuth (any model)' },
25
+ { name: 'gpt', value: 'gpt', description: 'OpenAI ChatGPT OAuth (chat/completions)' },
26
+ { name: 'claude', value: 'claude', description: 'Claude Code CLI (claude -p) — opt-in fallback' },
27
+ { name: 'lmstudio', value: 'lmstudio', description: 'Local LM Studio server (no account)' },
28
+ { name: 'local', value: 'local', description: 'Local Ollama models (no account)' },
29
+ ];
30
+ const NOTIFY_CHOICES = [
31
+ { name: 'none', value: 'none', description: 'No outbound notifications' },
32
+ { name: 'discord', value: 'discord', description: 'Discord bot token + channel id' },
33
+ { name: 'slack', value: 'slack', description: 'Slack incoming webhook URL' },
34
+ { name: 'telegram', value: 'telegram', description: 'Telegram bot token + chat id' },
35
+ { name: 'webhook', value: 'webhook', description: 'Generic webhook URL' },
36
+ ];
37
+ /** ChatGPT-OAuth providers share the openai-gpt profile; openrouter has its own. */
38
+ function authPlanFor(provider) {
39
+ if (provider === 'codex-responses' || provider === 'gpt')
40
+ return { providerArg: 'gpt', profileKey: 'openai-gpt:default' };
41
+ if (provider === 'openrouter')
42
+ return { providerArg: 'openrouter', profileKey: 'openrouter:default' };
43
+ return null; // lmstudio / local / codex / claude need no OAuth here
44
+ }
45
+ /** Apply the wizard's choices onto the static sample config via targeted replaces. */
46
+ export function buildWizardConfig(adapter, channel, agent) {
47
+ let cfg = generateSampleConfig();
48
+ cfg = cfg.replace(/^adapter: codex$/m, `adapter: ${adapter}`);
49
+ cfg = cfg.replace(/^ {2}channel: discord$/m, ` channel: ${channel === 'none' ? 'none' : channel}`);
50
+ // Replace the sample's placeholder agents (main/backend) with a single agent
51
+ // for THIS repo so the user doesn't have to hand-edit projectPath.
52
+ if (agent) {
53
+ cfg = cfg.replace(/agents:\n[\s\S]*?\n\n(# Default heartbeat)/, `agents:\n - name: ${agent.name}\n projectPath: ${agent.projectPath}\n heartbeatInterval: 1800000\n enabled: true\n paused: false\n\n$1`);
54
+ }
55
+ const uncomment = (field) => {
56
+ cfg = cfg.replace(` # ${field}:`, ` ${field}:`);
57
+ };
58
+ if (channel === 'slack')
59
+ uncomment('slackWebhookUrl');
60
+ if (channel === 'telegram') {
61
+ uncomment('telegramBotToken');
62
+ uncomment('telegramChatId');
63
+ }
64
+ if (channel === 'webhook')
65
+ uncomment('webhookUrl');
66
+ return cfg;
67
+ }
68
+ /**
69
+ * Provider bootstrap. `adapter.isAvailable()` is the canonical "already
70
+ * configured?" probe — it covers env keys, OAuth profiles, PATH binaries, and
71
+ * local servers (the old wizard only checked OAuth profiles). When not available,
72
+ * branch on how to set the provider up. Returns whether to run inline OAuth after
73
+ * the wizard, plus the auth plan.
74
+ */
75
+ async function bootstrapProvider(provider) {
76
+ let available = false;
77
+ try {
78
+ available = await getAdapter(provider).isAvailable();
79
+ }
80
+ catch { // cxt-ignore: error_swallow,exception_hiding — unknown/unconfigured provider treated as unavailable
81
+ available = false;
82
+ }
83
+ if (provider === 'claude') {
84
+ // claude = the `claude -p` CLI wrapper; isAvailable() is just `which claude`.
85
+ // PATH presence ≠ logged in, so guide explicitly instead of claiming "configured".
86
+ if (available)
87
+ console.log(' ✓ `claude` on PATH. If not logged in yet, run `claude` once to authenticate.');
88
+ else
89
+ console.log(' `claude` not found. Install: npm i -g @anthropic-ai/claude-code, then run `claude` to log in.');
90
+ return { doAuthNow: false, plan: null };
91
+ }
92
+ if (available) {
93
+ console.log(` ✓ ${provider} already configured.`);
94
+ return { doAuthNow: false, plan: authPlanFor(provider) };
95
+ }
96
+ if (provider === 'codex') {
97
+ console.log(' `codex` not found. Install the OpenAI Codex CLI and ensure `codex` is on PATH.');
98
+ return { doAuthNow: false, plan: null };
99
+ }
100
+ if (provider === 'lmstudio' || provider === 'local') {
101
+ console.log(` No ${provider} server detected — start it (LM Studio :1234 / Ollama :11434) before running.`);
102
+ return { doAuthNow: false, plan: null };
103
+ }
104
+ const plan = authPlanFor(provider);
105
+ if (plan) {
106
+ const doAuthNow = await confirm({
107
+ message: ` ${provider} needs login — run \`auth login --provider ${plan.providerArg}\` now?`,
108
+ default: true,
109
+ });
110
+ return { doAuthNow, plan };
111
+ }
112
+ return { doAuthNow: false, plan: null };
113
+ }
114
+ /**
115
+ * Interactive Linear setup: paste API key → arrow-key pick teams (multi) → pick
116
+ * THIS repo's project → write LINEAR_* env + an openswarm.json mapping so the
117
+ * daemon resolves this repo without fuzzy name matching. Falls back to manual
118
+ * team-id entry if the Linear API can't be reached.
119
+ */
120
+ async function setupLinear(envVars, cwd) {
121
+ // OAuth (browser, no key to paste) vs personal API key.
122
+ const method = await select({
123
+ message: ' Linear authentication:',
124
+ choices: [
125
+ { name: 'OAuth (browser login)', value: 'oauth', description: 'no API key to paste — recommended' },
126
+ { name: 'API key (paste)', value: 'apikey', description: 'personal key from linear.app/settings/api' },
127
+ ],
128
+ });
129
+ let cred;
130
+ if (method === 'oauth') {
131
+ try {
132
+ const authStore = new AuthProfileStore();
133
+ let token;
134
+ if (authStore.getProfile('linear:default')) {
135
+ token = await ensureValidToken(authStore, 'linear:default'); // reuse — no browser
136
+ console.log(' ✓ Reusing existing Linear OAuth profile.');
137
+ }
138
+ else {
139
+ token = await loginAndSaveLinearProfile(); // browser PKCE → linear:default profile
140
+ }
141
+ cred = { accessToken: token };
142
+ }
143
+ catch (err) { // cxt-ignore: error_swallow,exception_hiding — OAuth failure → API-key fallback
144
+ console.log(` ⚠ Linear OAuth failed (${err.message}). Falling back to API key.`);
145
+ const apiKey = (await password({ message: ' LINEAR_API_KEY (hidden):' })).trim();
146
+ if (!apiKey) {
147
+ console.log(' Skipped Linear (no key).');
148
+ return;
149
+ }
150
+ envVars.LINEAR_API_KEY = apiKey;
151
+ cred = { apiKey };
152
+ }
153
+ }
154
+ else {
155
+ console.log(' Get a key at https://linear.app/settings/api');
156
+ const apiKey = (await password({ message: ' LINEAR_API_KEY (hidden):' })).trim();
157
+ if (!apiKey) {
158
+ console.log(' Skipped Linear (no key).');
159
+ return;
160
+ }
161
+ envVars.LINEAR_API_KEY = apiKey;
162
+ cred = { apiKey };
163
+ }
164
+ let teams = [];
165
+ try {
166
+ teams = await listTeams(cred);
167
+ }
168
+ catch (err) { // cxt-ignore: error_swallow,exception_hiding — surfaced to the user + manual team-id fallback
169
+ console.log(` ⚠ Could not fetch teams (${err.message}). Enter the team id manually.`);
170
+ }
171
+ if (teams.length === 0) {
172
+ const tid = (await input({ message: ' LINEAR_TEAM_ID:' })).trim();
173
+ if (tid)
174
+ envVars.LINEAR_TEAM_ID = tid;
175
+ return;
176
+ }
177
+ // One repo = one team. (Multi-team daemon watch lives in the main
178
+ // ~/.config/openswarm config, not per-repo init — keeps this picker simple.)
179
+ const mapTeamId = await select({
180
+ message: ` Linear team for "${basename(cwd)}":`,
181
+ choices: teams.map((t) => ({ name: `${t.key} — ${t.name}`, value: t.id })),
182
+ });
183
+ envVars.LINEAR_TEAM_ID = mapTeamId;
184
+ let projects = [];
185
+ try {
186
+ projects = await listProjects(mapTeamId, cred);
187
+ }
188
+ catch (err) { // cxt-ignore: error_swallow,exception_hiding — surfaced to the user; repo mapping skipped
189
+ console.log(` ⚠ Could not fetch projects (${err.message}).`);
190
+ return;
191
+ }
192
+ if (projects.length === 0) {
193
+ console.log(' No projects in that team — skipping repo mapping.');
194
+ return;
195
+ }
196
+ const repoName = basename(cwd);
197
+ const projectId = await select({
198
+ message: ` Linear project for "${repoName}":`,
199
+ choices: [
200
+ { name: '(skip — no repo mapping)', value: '' },
201
+ ...projects.map((p) => ({ name: p.name, value: p.id })),
202
+ ],
203
+ });
204
+ if (!projectId)
205
+ return;
206
+ const proj = projects.find((p) => p.id === projectId);
207
+ const team = teams.find((t) => t.id === mapTeamId);
208
+ const filePath = await saveRepoMetadata(cwd, {
209
+ schemaVersion: 1,
210
+ projectName: proj?.name,
211
+ linear: {
212
+ teamId: mapTeamId,
213
+ teamKey: team?.key,
214
+ projectId,
215
+ projectName: proj?.name,
216
+ },
217
+ });
218
+ console.log(` Wrote ${filePath} → ${team?.key ?? '?'}/${proj?.name ?? projectId}`);
219
+ }
220
+ export async function runInitWizard(opts = {}) {
221
+ const cwd = process.cwd();
222
+ const configPath = join(cwd, 'config.yaml');
223
+ const envPath = join(cwd, '.env');
224
+ if (existsSync(configPath) && !opts.force) {
225
+ console.error('config.yaml already exists. Use --force to overwrite, or edit it directly.');
226
+ process.exit(1);
227
+ }
228
+ const envVars = {};
229
+ let provider = 'codex';
230
+ let taskBackend = 'local';
231
+ let notify = 'none';
232
+ let doAuthNow = false;
233
+ let plan = null;
234
+ try {
235
+ console.log(banner('first-run setup'));
236
+ // 1) AI provider
237
+ provider = await select({
238
+ message: '1) AI provider for worker/reviewer:',
239
+ choices: PROVIDER_CHOICES.map((c) => ({ name: c.name, value: c.value, description: c.description })),
240
+ });
241
+ ({ doAuthNow, plan } = await bootstrapProvider(provider));
242
+ // 2) Task backend
243
+ taskBackend = await select({
244
+ message: '\n2) Task backend:',
245
+ choices: [
246
+ { name: 'local', value: 'local', description: 'Local SQLite issue store (~/.openswarm/issues.db) — no account' },
247
+ { name: 'linear', value: 'linear', description: 'Linear (arrow-key team/project picker)' },
248
+ ],
249
+ });
250
+ if (taskBackend === 'linear')
251
+ await setupLinear(envVars, cwd);
252
+ // 3) Notification channel
253
+ notify = await select({
254
+ message: '\n3) Notification channel (optional):',
255
+ choices: NOTIFY_CHOICES.map((c) => ({ name: c.name, value: c.value, description: c.description })),
256
+ });
257
+ if (notify === 'discord') {
258
+ envVars.DISCORD_TOKEN = (await password({ message: ' DISCORD_TOKEN (hidden):' })).trim();
259
+ envVars.DISCORD_CHANNEL_ID = (await input({ message: ' DISCORD_CHANNEL_ID:' })).trim();
260
+ }
261
+ else if (notify === 'slack') {
262
+ envVars.SLACK_WEBHOOK_URL = (await input({ message: ' SLACK_WEBHOOK_URL:' })).trim();
263
+ }
264
+ else if (notify === 'telegram') {
265
+ envVars.TELEGRAM_BOT_TOKEN = (await password({ message: ' TELEGRAM_BOT_TOKEN (hidden):' })).trim();
266
+ envVars.TELEGRAM_CHAT_ID = (await input({ message: ' TELEGRAM_CHAT_ID:' })).trim();
267
+ }
268
+ else if (notify === 'webhook') {
269
+ envVars.NOTIFY_WEBHOOK_URL = (await input({ message: ' NOTIFY_WEBHOOK_URL:' })).trim();
270
+ }
271
+ }
272
+ catch (err) {
273
+ // @inquirer throws ExitPromptError on Ctrl-C — exit cleanly, no stack trace.
274
+ if (err instanceof Error && err.name === 'ExitPromptError') {
275
+ console.log('\nSetup cancelled.');
276
+ return;
277
+ }
278
+ throw err;
279
+ }
280
+ // Drop empty answers so we never write `KEY=` for a skipped field.
281
+ for (const k of Object.keys(envVars)) {
282
+ if (!envVars[k])
283
+ delete envVars[k];
284
+ }
285
+ // Write .env (secrets) + config.yaml.
286
+ if (Object.keys(envVars).length > 0) {
287
+ writeEnvVars(envPath, envVars);
288
+ console.log(`\nWrote ${envPath} (${Object.keys(envVars).join(', ')}) — chmod 600.`);
289
+ }
290
+ writeFileSync(configPath, buildWizardConfig(provider, notify, { name: basename(cwd), projectPath: cwd }), 'utf-8');
291
+ console.log(`Wrote ${configPath}.`);
292
+ // Inline auth last (browser OAuth) — after all prompts.
293
+ if (doAuthNow && plan) {
294
+ console.log(`\nLaunching login for ${plan.providerArg}...`);
295
+ const { handleAuthLogin } = await import('./authHandler.js');
296
+ await handleAuthLogin(plan.providerArg, {});
297
+ }
298
+ // Next steps.
299
+ console.log('\nNext steps:');
300
+ console.log(' 1. Edit config.yaml — set your project path(s) under `agents:`.');
301
+ if (plan && !doAuthNow) {
302
+ const store = new AuthProfileStore();
303
+ if (store.getProfile(plan.profileKey) === null) {
304
+ console.log(` 2. Authenticate: openswarm auth login --provider ${plan.providerArg}`);
305
+ }
306
+ }
307
+ console.log(' • Diagnose: openswarm doctor (verify providers, native deps, ports, config)');
308
+ console.log(' • Validate: openswarm validate');
309
+ console.log(' • Start: openswarm start (or `openswarm` for the TUI)');
310
+ if (taskBackend === 'local') {
311
+ console.log(' • Task backend: local SQLite (~/.openswarm/issues.db) — no Linear account needed.');
312
+ }
313
+ }
314
+ //# sourceMappingURL=initWizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initWizard.js","sourceRoot":"","sources":["../../src/cli/initWizard.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,0CAA0C;AAC1C,uDAAuD;AACvD,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAC9E,+EAA+E;AAC/E,iFAAiF;AACjF,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAyB,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAM9C,MAAM,gBAAgB,GAA+D;IACnF,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,0DAA0D,EAAE;IAC9H,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,gCAAgC,EAAE;IAChF,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACnG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACrF,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;IACjG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,qCAAqC,EAAE;IAC3F,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,kCAAkC,EAAE;CACnF,CAAC;AAEF,MAAM,cAAc,GAAkE;IACpF,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE;IACzE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE;IACpF,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC5E,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,8BAA8B,EAAE;IACpF,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,qBAAqB,EAAE;CAC1E,CAAC;AAEF,oFAAoF;AACpF,SAAS,WAAW,CAAC,QAAoB;IACvC,IAAI,QAAQ,KAAK,iBAAiB,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;IAC1H,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACtG,OAAO,IAAI,CAAC,CAAC,uDAAuD;AACtE,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAC/B,OAAmB,EACnB,OAAsB,EACtB,KAA6C;IAE7C,IAAI,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACjC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,YAAY,OAAO,EAAE,CAAC,CAAC;IAC9D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,cAAc,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;IACpG,6EAA6E;IAC7E,mEAAmE;IACnE,IAAI,KAAK,EAAE,CAAC;QACV,GAAG,GAAG,GAAG,CAAC,OAAO,CACf,4CAA4C,EAC5C,sBAAsB,KAAK,CAAC,IAAI,sBAAsB,KAAK,CAAC,WAAW,8EAA8E,CACtJ,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,EAAE;QAClC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,GAAG,EAAE,KAAK,KAAK,GAAG,CAAC,CAAC;IACpD,CAAC,CAAC;IACF,IAAI,OAAO,KAAK,OAAO;QAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC9B,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,KAAK,SAAS;QAAE,SAAS,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,GAAG,CAAC;AACb,CAAC;AAMD;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB,CAC9B,QAAoB;IAEpB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC,CAAC,oGAAoG;QAC5G,SAAS,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,8EAA8E;QAC9E,mFAAmF;QACnF,IAAI,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;;YACzG,OAAO,CAAC,GAAG,CAAC,kGAAkG,CAAC,CAAC;QACrH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,QAAQ,QAAQ,sBAAsB,CAAC,CAAC;QACpD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IACD,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,+EAA+E,CAAC,CAAC;QAC9G,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC;YAC9B,OAAO,EAAE,MAAM,QAAQ,8CAA8C,IAAI,CAAC,WAAW,SAAS;YAC9F,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,WAAW,CAAC,OAA+B,EAAE,GAAW;IACrE,wDAAwD;IACxD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;QAC1B,OAAO,EAAE,2BAA2B;QACpC,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,mCAAmC,EAAE;YACnG,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;SACvG;KACF,CAAC,CAAC;IAEH,IAAI,IAAsB,CAAC;IAC3B,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACzC,IAAI,KAAa,CAAC;YAClB,IAAI,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC3C,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,qBAAqB;gBAClF,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,MAAM,yBAAyB,EAAE,CAAC,CAAC,wCAAwC;YACrF,CAAC;YACD,IAAI,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC,CAAC,gFAAgF;YAC9F,OAAO,CAAC,GAAG,CAAC,6BAA8B,GAAa,CAAC,OAAO,6BAA6B,CAAC,CAAC;YAC9F,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnF,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;gBAC3C,OAAO;YACT,CAAC;YACD,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC;YAChC,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC;QAChC,IAAI,GAAG,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,KAAK,GAA0C,EAAE,CAAC;IACtD,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC,CAAC,8FAA8F;QAC5G,OAAO,CAAC,GAAG,CAAC,+BAAgC,GAAa,CAAC,OAAO,gCAAgC,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,IAAI,GAAG;YAAE,OAAO,CAAC,cAAc,GAAG,GAAG,CAAC;QACtC,OAAO;IACT,CAAC;IAED,kEAAkE;IAClE,6EAA6E;IAC7E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC;QAC7B,OAAO,EAAE,uBAAuB,QAAQ,CAAC,GAAG,CAAC,IAAI;QACjD,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KAC3E,CAAC,CAAC;IACH,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAEnC,IAAI,QAAQ,GAA6C,EAAE,CAAC;IAC5D,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC,CAAC,0FAA0F;QACxG,OAAO,CAAC,GAAG,CAAC,kCAAmC,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC;QAC7B,OAAO,EAAE,0BAA0B,QAAQ,IAAI;QAC/C,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,EAAE,EAAE;YAC/C,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACxD;KACF,CAAC,CAAC;IACH,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE;QAC3C,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,IAAI,EAAE,IAAI;QACvB,MAAM,EAAE;YACN,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,IAAI,EAAE,GAAG;YAClB,SAAS;YACT,WAAW,EAAE,IAAI,EAAE,IAAI;SACxB;KACF,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0B,EAAE;IAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAElC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,QAAQ,GAAe,OAAO,CAAC;IACnC,IAAI,WAAW,GAAgB,OAAO,CAAC;IACvC,IAAI,MAAM,GAAkB,MAAM,CAAC;IACnC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,IAAI,GAAmC,IAAI,CAAC;IAEhD,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAEvC,iBAAiB;QACjB,QAAQ,GAAG,MAAM,MAAM,CAAC;YACtB,OAAO,EAAE,qCAAqC;YAC9C,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;SACrG,CAAC,CAAC;QACH,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE1D,kBAAkB;QAClB,WAAW,GAAG,MAAM,MAAM,CAAC;YACzB,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAsB,EAAE,WAAW,EAAE,gEAAgE,EAAE;gBAC/H,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAuB,EAAE,WAAW,EAAE,wCAAwC,EAAE;aAC1G;SACF,CAAC,CAAC;QACH,IAAI,WAAW,KAAK,QAAQ;YAAE,MAAM,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE9D,0BAA0B;QAC1B,MAAM,GAAG,MAAM,MAAM,CAAC;YACpB,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;SACnG,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,aAAa,GAAG,CAAC,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3F,OAAO,CAAC,kBAAkB,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3F,CAAC;aAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,iBAAiB,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzF,CAAC;aAAM,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,kBAAkB,GAAG,CAAC,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrG,OAAO,CAAC,gBAAgB,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvF,CAAC;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,CAAC,kBAAkB,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3F,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6EAA6E;QAC7E,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,mEAAmE;IACnE,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,sCAAsC;IACtC,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACtF,CAAC;IACD,aAAa,CAAC,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACnH,OAAO,CAAC,GAAG,CAAC,SAAS,UAAU,GAAG,CAAC,CAAC;IAEpC,wDAAwD;IACxD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;QAC5D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7D,MAAM,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,cAAc;IACd,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACrC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,sDAAsD,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;IAC/F,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;IACrG,CAAC;AACH,CAAC"}
package/dist/cli.js CHANGED
@@ -8,6 +8,11 @@ import { join, dirname } from 'node:path';
8
8
  import { fileURLToPath } from 'node:url';
9
9
  import { runCli } from './runners/cliRunner.js';
10
10
  import { loadConfig, validateConfig, generateSampleConfig } from './core/config.js';
11
+ import { loadEnvFile } from './core/envFile.js';
12
+ // Load .env so CLI commands (e.g. `auth login --provider linear` reading
13
+ // LINEAR_OAUTH_CLIENT_ID) see the same env the daemon does. Idempotent; never
14
+ // overrides an already-set shell var.
15
+ loadEnvFile();
11
16
  // Read version from package.json so it stays in sync with the published package.
12
17
  // cli.js lives at <pkg>/dist/cli.js, so package.json is one directory up.
13
18
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -43,23 +48,37 @@ program
43
48
  // openswarm init
44
49
  program
45
50
  .command('init')
46
- .description('Generate a sample config.yaml in the current directory')
51
+ .description('Set up OpenSwarm (interactive wizard; --yes writes a sample config only)')
47
52
  .option('--force', 'Overwrite existing config file')
48
- .action((opts) => {
49
- const configPath = join(process.cwd(), 'config.yaml');
50
- if (existsSync(configPath) && !opts.force) {
51
- console.error(`config.yaml already exists. Use --force to overwrite.`);
52
- process.exit(1);
53
+ .option('--yes, --non-interactive', 'Skip the wizard: write a sample config.yaml only (CI)')
54
+ .action(async (opts) => {
55
+ // Non-interactive: keep the original config-only behavior for CI / scripting.
56
+ if (opts.yes || opts.nonInteractive) {
57
+ const configPath = join(process.cwd(), 'config.yaml');
58
+ if (existsSync(configPath) && !opts.force) {
59
+ console.error(`config.yaml already exists. Use --force to overwrite.`);
60
+ process.exit(1);
61
+ }
62
+ writeFileSync(configPath, generateSampleConfig(), 'utf-8');
63
+ console.log(`Created ${configPath}`);
64
+ console.log('');
65
+ console.log('Next steps:');
66
+ console.log(' 1. Set environment variables (DISCORD_TOKEN, LINEAR_API_KEY, etc.)');
67
+ console.log(' 2. Edit config.yaml with your project paths');
68
+ console.log(' 3. Run: openswarm validate');
69
+ console.log(' 4. Run: openswarm start');
70
+ return;
53
71
  }
54
- const content = generateSampleConfig();
55
- writeFileSync(configPath, content, 'utf-8');
56
- console.log(`Created ${configPath}`);
57
- console.log('');
58
- console.log('Next steps:');
59
- console.log(' 1. Set environment variables (DISCORD_TOKEN, LINEAR_API_KEY, etc.)');
60
- console.log(' 2. Edit config.yaml with your project paths');
61
- console.log(' 3. Run: openswarm validate');
62
- console.log(' 4. Run: openswarm start');
72
+ const { runInitWizard } = await import('./cli/initWizard.js');
73
+ await runInitWizard({ force: opts.force });
74
+ });
75
+ // openswarm doctor
76
+ program
77
+ .command('doctor')
78
+ .description('Diagnose the environment (runtime, native deps, providers, ports, config)')
79
+ .action(async () => {
80
+ const { handleDoctor } = await import('./cli/doctorHandler.js');
81
+ await handleDoctor();
63
82
  });
64
83
  // openswarm validate
65
84
  program
@@ -95,23 +114,16 @@ program
95
114
  // openswarm chat
96
115
  program
97
116
  .command('chat')
98
- .description('Start interactive chat CLI with the configured provider')
117
+ .description('Start the interactive chat TUI with the configured provider')
99
118
  .argument('[session]', 'Session name to load/create (optional)')
100
- .option('--tui', 'Enable rich TUI mode (default: simple readline)')
101
- .action(async (session, opts) => {
102
- // Pass session argument via process.argv for chat.ts to pick up
119
+ .option('--tui', 'Deprecated chat always uses the TUI now (kept for compatibility)')
120
+ .action(async (session) => {
121
+ // Pass the session argument via process.argv for the TUI to pick up.
103
122
  if (session) {
104
123
  process.argv = [process.argv[0], process.argv[1], session];
105
124
  }
106
- // Use TUI mode if requested
107
- if (opts?.tui) {
108
- const { main } = await import('./support/chatTui.js');
109
- await main();
110
- }
111
- else {
112
- // Legacy readline mode
113
- await import('./support/chat.js');
114
- }
125
+ // Always launch the TUI the legacy readline path is retired.
126
+ await launchChatTui();
115
127
  });
116
128
  // openswarm exec <prompt>
117
129
  program
@@ -141,9 +153,22 @@ program
141
153
  await import('./index.js');
142
154
  return;
143
155
  }
144
- const { startDaemon } = await import('./cli/daemon.js');
156
+ const { startDaemon, getDaemonStatus, readLogTail } = await import('./cli/daemon.js');
145
157
  try {
146
158
  const { pid, logFile } = startDaemon();
159
+ // The child can die immediately on a startup error (bad config, port in
160
+ // use, throwing dependency). Spawning only proves the OS forked it — wait
161
+ // briefly and confirm it's actually alive before claiming success, so we
162
+ // never print "started" for a daemon that `status` will call "not running".
163
+ await new Promise((r) => setTimeout(r, 1500));
164
+ if (!getDaemonStatus().running) {
165
+ console.error('OpenSwarm exited during startup. Recent log:');
166
+ console.error('────────────────────────────────────────');
167
+ console.error(readLogTail(25));
168
+ console.error('────────────────────────────────────────');
169
+ console.error(`Full log: ${logFile}`);
170
+ process.exit(1);
171
+ }
147
172
  console.log(`OpenSwarm started in background (pid ${pid}).`);
148
173
  console.log(` logs: ${logFile}`);
149
174
  console.log(` stop: openswarm stop`);
@@ -268,9 +293,10 @@ const authCmd = program
268
293
  .description('Manage OAuth authentication for providers');
269
294
  authCmd
270
295
  .command('login')
271
- .description('Login via OAuth (GPT)')
272
- .option('--provider <provider>', 'Provider to authenticate', 'gpt')
273
- .option('--client-id <clientId>', 'OAuth Client ID (or set OPENAI_CLIENT_ID env)')
296
+ .description('Login via OAuth/PKCE (gpt, openrouter, linear)')
297
+ .option('--provider <provider>', 'Provider to authenticate (gpt | openrouter | linear)', 'gpt')
298
+ .option('--client-id <clientId>', 'GPT only: override OAuth Client ID (defaults to the public Codex client)')
299
+ .option('--api-key <apiKey>', 'OpenRouter only: skip browser flow and store this sk-or-* key directly')
274
300
  .option('--port <port>', 'Callback server port', parseInt)
275
301
  .action(async (opts) => {
276
302
  const { handleAuthLogin } = await import('./cli/authHandler.js');
@@ -283,19 +309,67 @@ authCmd
283
309
  const { handleAuthStatus } = await import('./cli/authHandler.js');
284
310
  handleAuthStatus();
285
311
  });
312
+ authCmd
313
+ .command('models')
314
+ .description('List available Codex models (live via OAuth, offline fallback otherwise)')
315
+ .action(async () => {
316
+ const { handleAuthModels } = await import('./cli/authHandler.js');
317
+ await handleAuthModels();
318
+ });
286
319
  authCmd
287
320
  .command('logout')
288
321
  .description('Remove stored auth tokens')
289
- .option('--provider <provider>', 'Provider to remove', 'gpt')
322
+ .option('--provider <provider>', 'Provider to remove (gpt | openrouter | linear)', 'gpt')
290
323
  .action(async (opts) => {
291
324
  const { handleAuthLogout } = await import('./cli/authHandler.js');
292
325
  handleAuthLogout(opts.provider);
293
326
  });
294
- // 서브커맨드 없이 `openswarm`만 입력 시 → TUI chat 실행
295
- program.action(async () => {
296
- const { main } = await import('./support/chatTui.js');
297
- await main();
298
- });
327
+ // 서브커맨드 없이 `openswarm`만 입력 시 → TUI chat 실행 (`openswarm chat`과 동일)
328
+ async function launchChatTui() {
329
+ // Auto-start the background daemon so the monitor tabs (Projects/Tasks/Stuck/
330
+ // Issues) — which are read-only clients of the daemon's :3847 API — have data
331
+ // to show. If it's already running or fails to start, just continue: the chat
332
+ // agent itself doesn't depend on the daemon. Done before console muting so the
333
+ // one-line status is visible.
334
+ try {
335
+ const { getDaemonStatus, startDaemon } = await import('./cli/daemon.js');
336
+ if (!getDaemonStatus().running) {
337
+ const { pid } = startDaemon();
338
+ process.stdout.write(`Starting OpenSwarm daemon (pid ${pid}) for the monitor tabs…\n`);
339
+ await new Promise((r) => setTimeout(r, 1500));
340
+ if (!getDaemonStatus().running) {
341
+ process.stdout.write('Daemon did not stay up; monitor tabs may be empty. Run `openswarm status` to see why.\n');
342
+ }
343
+ }
344
+ }
345
+ catch {
346
+ // Non-fatal — chat works without the daemon.
347
+ }
348
+ // chat is a blessed full-screen UI — mute config-load diagnostics
349
+ // ("Loading config…", "[Config] disabling…") AND blessed's terminfo noise.
350
+ // blessed 0.1.81 fails to compile xterm-256color's `Setulc` cap and dumps
351
+ // the function source via console.error on startup + terminal reset (exit);
352
+ // muting console.error hides it. The TUI renders via blessed and reports
353
+ // errors into the chat log (not console), so nothing useful is lost. On a
354
+ // hard exit (Ctrl+C → process.exit) the finally doesn't run, which keeps the
355
+ // reset noise muted too — exactly what we want.
356
+ const origLog = console.log;
357
+ const origWarn = console.warn;
358
+ const origError = console.error;
359
+ console.log = () => { };
360
+ console.warn = () => { };
361
+ console.error = () => { };
362
+ try {
363
+ const { main } = await import('./support/chatTui.js');
364
+ await main();
365
+ }
366
+ finally {
367
+ console.log = origLog;
368
+ console.warn = origWarn;
369
+ console.error = origError;
370
+ }
371
+ }
372
+ program.action(launchChatTui);
299
373
  // Parse & Execute
300
374
  program.parse();
301
375
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,+CAA+C;AAC/C,8BAA8B;AAC9B,+FAA+F;AAE/F,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,yEAAyE;AACzE,8EAA8E;AAC9E,sCAAsC;AACtC,WAAW,EAAE,CAAC;AAEd,iFAAiF;AACjF,0EAA0E;AAC1E,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAwB,CAAC;AAC3G,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,4CAA4C,CAAC;KACzD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,uBAAuB;AAEvB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,+DAA+D,CAAC;KAC5E,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,CAAC;KACjD,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KAChE,MAAM,CAAC,YAAY,EAAE,wDAAwD,CAAC;KAC9E,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,QAAQ,CAAC;KAChE,MAAM,CAAC,eAAe,EAAE,mCAAmC,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAO5B,EAAE,EAAE;IACH,MAAM,MAAM,CAAC;QACX,IAAI;QACJ,WAAW,EAAE,IAAI,CAAC,IAAI;QACtB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,iBAAiB;AAEjB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0EAA0E,CAAC;KACvF,MAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC;KACnD,MAAM,CAAC,0BAA0B,EAAE,uDAAuD,CAAC;KAC3F,MAAM,CAAC,KAAK,EAAE,IAAkE,EAAE,EAAE;IACnF,8EAA8E;IAC9E,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,aAAa,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAC9D,MAAM,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,mBAAmB;AAEnB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAChE,MAAM,YAAY,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,qBAAqB;AAErB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,GAAG,EAAE;IACX,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAE1C,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC5C,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACtC,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC;YAChC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iBAAiB;AAEjB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6DAA6D,CAAC;KAC1E,QAAQ,CAAC,WAAW,EAAE,wCAAwC,CAAC;KAC/D,MAAM,CAAC,OAAO,EAAE,oEAAoE,CAAC;KACrF,MAAM,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;IACjC,qEAAqE;IACrE,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,+DAA+D;IAC/D,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,0BAA0B;AAE1B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,+DAA+D,CAAC;KAC5E,QAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC;KAC9C,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;KACtD,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,EAAE,QAAQ,CAAC;KAC5E,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;KAC1D,MAAM,CAAC,SAAS,EAAE,gCAAgC,CAAC;KACnD,MAAM,CAAC,YAAY,EAAE,wDAAwD,CAAC;KAC9E,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,CAAC;KAC1D,MAAM,CAAC,eAAe,EAAE,mCAAmC,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAS9B,EAAE,EAAE;IACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACjE,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEL,kBAAkB;AAElB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,6EAA6E,CAAC;KAC1F,MAAM,CAAC,kBAAkB,EAAE,0EAA0E,CAAC;KACtG,MAAM,CAAC,KAAK,EAAE,IAA8B,EAAE,EAAE;IAC/C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,2DAA2D;QAC3D,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;QACvC,wEAAwE;QACxE,0EAA0E;QAC1E,yEAAyE;QACzE,4EAA4E;QAC5E,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oBAAqB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iBAAiB;AAEjB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,oBAAoB,EAAE,wDAAwD,EAAE,OAAO,CAAC;KAC/F,MAAM,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;IAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,mBAAmB;AAEnB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,iBAAiB;AAEjB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC;KAClD,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,IAAqC,EAAE,EAAE;IACtD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACrC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5D,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;IAE7D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,oBAAoB,IAAI,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;YACzD,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG;gBACjD,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,GAAG;gBAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,kBAAkB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,kBAAkB;AAElB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,uDAAuD,CAAC;KACpE,QAAQ,CAAC,YAAY,EAAE,iDAAiD,CAAC;KACzE,MAAM,CAAC,SAAS,EAAE,kCAAkC,CAAC;KACrD,MAAM,CAAC,cAAc,EAAE,8BAA8B,CAAC;KACtD,MAAM,CAAC,YAAY,EAAE,4BAA4B,CAAC;KAClD,MAAM,CAAC,aAAa,EAAE,6BAA6B,CAAC;KACpD,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,kBAAkB,EAAE,2BAA2B,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,6CAA6C,CAAC;KAC/D,MAAM,CAAC,MAAM,EAAE,wCAAwC,CAAC;KACxD,MAAM,CAAC,QAAQ,EAAE,mDAAmD,CAAC;KACrE,MAAM,CAAC,MAAM,EAAE,oDAAoD,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,8BAA8B,CAAC;KACvD,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,QAA4B,EAAE,IAa5C,EAAE,EAAE;IACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAC9D,MAAM,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEL,2CAA2C;AAE3C,MAAM,aAAa,GAAG,OAAO;KAC1B,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,wCAAwC,CAAC;KACrD,QAAQ,CAAC,iBAAiB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,iDAAiD,CAAC;KAC9E,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;KACrD,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC;KACvC,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC;KACrC,MAAM,CAAC,gBAAgB,EAAE,kCAAkC,CAAC;KAC5D,MAAM,CAAC,kBAAkB,EAAE,oDAAoD,CAAC;KAChF,MAAM,CAAC,KAAK,EAAE,aAAqB,EAAE,IAQrC,EAAE,EAAE;IACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACjE,MAAM,cAAc,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEL,iBAAiB;AAEjB,MAAM,OAAO,GAAG,OAAO;KACpB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2CAA2C,CAAC,CAAC;AAE5D,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,uBAAuB,EAAE,sDAAsD,EAAE,KAAK,CAAC;KAC9F,MAAM,CAAC,wBAAwB,EAAE,0EAA0E,CAAC;KAC5G,MAAM,CAAC,oBAAoB,EAAE,wEAAwE,CAAC;KACtG,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,IAA6E,EAAE,EAAE;IAC9F,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACjE,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClE,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0EAA0E,CAAC;KACvF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClE,MAAM,gBAAgB,EAAE,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,uBAAuB,EAAE,gDAAgD,EAAE,KAAK,CAAC;KACxF,MAAM,CAAC,KAAK,EAAE,IAA0B,EAAE,EAAE;IAC3C,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEL,kEAAkE;AAElE,KAAK,UAAU,aAAa;IAC1B,8EAA8E;IAC9E,8EAA8E;IAC9E,8EAA8E;IAC9E,+EAA+E;IAC/E,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACzE,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,GAAG,2BAA2B,CAAC,CAAC;YACvF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC;gBAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yFAAyF,CAAC,CAAC;YAClH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;IAED,kEAAkE;IAClE,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,6EAA6E;IAC7E,gDAAgD;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC;IAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;IAChC,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACvB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACxB,OAAO,CAAC,KAAK,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACtD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC;QACtB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;QACxB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE9B,kBAAkB;AAElB,OAAO,CAAC,KAAK,EAAE,CAAC"}