aemeathcli 1.0.11 → 1.0.12
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.
- package/LICENSE +21 -21
- package/README.md +620 -609
- package/dist/{App-YAHJUWCX.js → App-JQ622M66.js} +209 -52
- package/dist/App-JQ622M66.js.map +1 -0
- package/dist/agent-store/architect.md +32 -32
- package/dist/agent-store/debugger.md +32 -32
- package/dist/agent-store/developer.md +29 -29
- package/dist/agent-store/documenter.md +30 -30
- package/dist/agent-store/researcher.md +31 -31
- package/dist/agent-store/reviewer.md +28 -28
- package/dist/agent-store/supervisor.md +37 -37
- package/dist/agent-store/tester.md +30 -30
- package/dist/api-key-fallback-RJLPM3KH.js +11 -0
- package/dist/{api-key-fallback-UN3TJEOO.js.map → api-key-fallback-RJLPM3KH.js.map} +1 -1
- package/dist/auth-status-JQJOKUPF.js +13 -0
- package/dist/{auth-status-EIM5A5KL.js.map → auth-status-JQJOKUPF.js.map} +1 -1
- package/dist/{chunk-P66WDACW.js → chunk-2KMA5RBC.js} +18 -42
- package/dist/chunk-2KMA5RBC.js.map +1 -0
- package/dist/{chunk-2GKOK6T7.js → chunk-2Y7TR6BS.js} +2 -2
- package/dist/chunk-2Y7TR6BS.js.map +1 -0
- package/dist/{chunk-ONQ4WCUI.js → chunk-2ZYK5IJG.js} +6 -6
- package/dist/chunk-2ZYK5IJG.js.map +1 -0
- package/dist/{chunk-OCJPQFOR.js → chunk-36RXCZOV.js} +4 -4
- package/dist/chunk-36RXCZOV.js.map +1 -0
- package/dist/{chunk-H2SYKIMI.js → chunk-7EBLXPL4.js} +10 -10
- package/dist/chunk-7EBLXPL4.js.map +1 -0
- package/dist/{chunk-IARA5XYP.js → chunk-BIMQL4AG.js} +4 -4
- package/dist/chunk-BIMQL4AG.js.map +1 -0
- package/dist/{chunk-BY4DAKUU.js → chunk-D275MCIH.js} +2 -2
- package/dist/chunk-D275MCIH.js.map +1 -0
- package/dist/{chunk-SOQFMNQC.js → chunk-FFS4T7BZ.js} +5 -5
- package/dist/chunk-FFS4T7BZ.js.map +1 -0
- package/dist/{chunk-LDVY5ELP.js → chunk-GXAJGP2T.js} +5 -5
- package/dist/chunk-GXAJGP2T.js.map +1 -0
- package/dist/{chunk-62HSGYQD.js → chunk-HCIHOHLX.js} +2 -2
- package/dist/chunk-HCIHOHLX.js.map +1 -0
- package/dist/{chunk-6GUD7QIM.js → chunk-HESQLCLU.js} +4 -4
- package/dist/chunk-HESQLCLU.js.map +1 -0
- package/dist/{chunk-HEKFAKVH.js → chunk-IR5HLBMH.js} +2 -2
- package/dist/chunk-IR5HLBMH.js.map +1 -0
- package/dist/{chunk-2LF7ALGR.js → chunk-K2FCMRXH.js} +4 -4
- package/dist/chunk-K2FCMRXH.js.map +1 -0
- package/dist/{chunk-2NWNIKBK.js → chunk-KIC7UI5U.js} +4 -4
- package/dist/chunk-KIC7UI5U.js.map +1 -0
- package/dist/{chunk-YPFOE2QJ.js → chunk-KMOAJRDE.js} +5 -5
- package/dist/chunk-KMOAJRDE.js.map +1 -0
- package/dist/{chunk-RP2TAL3J.js → chunk-LQBALETG.js} +2 -2
- package/dist/chunk-LQBALETG.js.map +1 -0
- package/dist/{chunk-CC7MGWYY.js → chunk-M3FPQSRU.js} +2 -2
- package/dist/chunk-M3FPQSRU.js.map +1 -0
- package/dist/{chunk-3TSPZRGM.js → chunk-NQEUK763.js} +3 -3
- package/dist/chunk-NQEUK763.js.map +1 -0
- package/dist/{chunk-VBLLDY4R.js → chunk-OPWAFS6Y.js} +2 -2
- package/dist/chunk-OPWAFS6Y.js.map +1 -0
- package/dist/{chunk-RYOB3TLZ.js → chunk-PS4WEFW6.js} +6 -6
- package/dist/chunk-PS4WEFW6.js.map +1 -0
- package/dist/{chunk-LCYH4T6N.js → chunk-QK7TKNHV.js} +6 -6
- package/dist/chunk-QK7TKNHV.js.map +1 -0
- package/dist/{chunk-QCRK4QEL.js → chunk-RADJSEG5.js} +3 -3
- package/dist/chunk-RADJSEG5.js.map +1 -0
- package/dist/{chunk-AQ23TYSQ.js → chunk-SNWPI6XJ.js} +4 -4
- package/dist/chunk-SNWPI6XJ.js.map +1 -0
- package/dist/{chunk-TDFTX32B.js → chunk-UM7MSLOV.js} +4 -4
- package/dist/chunk-UM7MSLOV.js.map +1 -0
- package/dist/{chunk-FIC7AK4Q.js → chunk-VNZ3YTQD.js} +5 -5
- package/dist/chunk-VNZ3YTQD.js.map +1 -0
- package/dist/{chunk-5XFSV6PF.js → chunk-WXIN65UG.js} +6 -6
- package/dist/chunk-WXIN65UG.js.map +1 -0
- package/dist/{chunk-WC72BRHR.js → chunk-XEXWX7C7.js} +3 -3
- package/dist/chunk-XEXWX7C7.js.map +1 -0
- package/dist/{chunk-VJNQJALF.js → chunk-YCCYXDW7.js} +4 -4
- package/dist/chunk-YCCYXDW7.js.map +1 -0
- package/dist/{chunk-ROJPFPJ7.js → chunk-YL5XFHR3.js} +2 -2
- package/dist/chunk-YL5XFHR3.js.map +1 -0
- package/dist/{chunk-GU33WKPG.js → chunk-YPQ2MLAV.js} +5 -5
- package/dist/chunk-YPQ2MLAV.js.map +1 -0
- package/dist/{chunk-WAYSJMPS.js → chunk-ZCOVMVK4.js} +2 -2
- package/dist/chunk-ZCOVMVK4.js.map +1 -0
- package/dist/{chunk-473JN6M5.js → chunk-ZGOHARPV.js} +2 -2
- package/dist/chunk-ZGOHARPV.js.map +1 -0
- package/dist/{claude-login-IS5WTBMP.js → claude-login-AIFIWTYF.js} +10 -10
- package/dist/claude-login-AIFIWTYF.js.map +1 -0
- package/dist/cli.js +30 -30
- package/dist/cli.js.map +1 -1
- package/dist/{codex-login-GMPF64MR.js → codex-login-LW5X7GAM.js} +10 -10
- package/dist/codex-login-LW5X7GAM.js.map +1 -0
- package/dist/config-store-NF56VHFU.js +7 -0
- package/dist/{config-store-POB6I37G.js.map → config-store-NF56VHFU.js.map} +1 -1
- package/dist/conversation-store-7GRDQZD2.js +4 -0
- package/dist/{conversation-store-PRBHWQMJ.js.map → conversation-store-7GRDQZD2.js.map} +1 -1
- package/dist/detect-providers-QICJ5U3R.js +4 -0
- package/dist/{detect-providers-C4SVQHFF.js.map → detect-providers-QICJ5U3R.js.map} +1 -1
- package/dist/executor-FTABX2AW.js +4 -0
- package/dist/{executor-RUX7VK3T.js.map → executor-FTABX2AW.js.map} +1 -1
- package/dist/{first-run-GDEVRFPO.js → first-run-ADROZVYF.js} +13 -13
- package/dist/first-run-ADROZVYF.js.map +1 -0
- package/dist/{gemini-login-KE224MSW.js → gemini-login-TST454MX.js} +10 -10
- package/dist/gemini-login-TST454MX.js.map +1 -0
- package/dist/index.d.ts +2 -56
- package/dist/index.js +30 -34
- package/dist/index.js.map +1 -1
- package/dist/{input-history-MIOO3FIW.js → input-history-BEICE7PT.js} +3 -3
- package/dist/input-history-BEICE7PT.js.map +1 -0
- package/dist/kimi-adapter-7FYOAKOI.js +6 -0
- package/dist/{kimi-adapter-UODMNX6K.js.map → kimi-adapter-7FYOAKOI.js.map} +1 -1
- package/dist/{kimi-login-DNT5YBKX.js → kimi-login-3IGVOBJI.js} +10 -10
- package/dist/kimi-login-3IGVOBJI.js.map +1 -0
- package/dist/logger-KGHUQ4VE.js +3 -0
- package/dist/{logger-PLPDWACQ.js.map → logger-KGHUQ4VE.js.map} +1 -1
- package/dist/model-discovery-AAJDHRFO.js +6 -0
- package/dist/{model-discovery-O64ZWPX5.js.map → model-discovery-AAJDHRFO.js.map} +1 -1
- package/dist/native-cli-adapters-CLONTZOA.js +8 -0
- package/dist/{native-cli-adapters-JMZX2C2C.js.map → native-cli-adapters-CLONTZOA.js.map} +1 -1
- package/dist/ollama-adapter-2N5OQIEV.js +5 -0
- package/dist/{ollama-adapter-GE67BNSS.js.map → ollama-adapter-2N5OQIEV.js.map} +1 -1
- package/dist/{pathResolver-A6IXQQFE.js → pathResolver-UVAB2FCW.js} +3 -3
- package/dist/{pathResolver-A6IXQQFE.js.map → pathResolver-UVAB2FCW.js.map} +1 -1
- package/dist/{profile-loader-TNAXBLDX.js → profile-loader-EMLV4J7S.js} +4 -4
- package/dist/profile-loader-EMLV4J7S.js.map +1 -0
- package/dist/registry-LRURZVUL.js +5 -0
- package/dist/{registry-3NHVCXCZ.js.map → registry-LRURZVUL.js.map} +1 -1
- package/dist/registry-MVNSXCEF.js +6 -0
- package/dist/{registry-7CQ3NCAD.js.map → registry-MVNSXCEF.js.map} +1 -1
- package/dist/server-manager-THGZBBZB.js +5 -0
- package/dist/{server-manager-DES23IBQ.js.map → server-manager-THGZBBZB.js.map} +1 -1
- package/dist/session-manager-X3DXT53M.js +12 -0
- package/dist/{session-manager-EHD7GWM2.js.map → session-manager-X3DXT53M.js.map} +1 -1
- package/dist/skills/built-in/code-review/SKILL.md +85 -85
- package/dist/skills/built-in/commit/SKILL.md +83 -83
- package/dist/skills/built-in/debug/SKILL.md +119 -119
- package/dist/skills/built-in/plan/SKILL.md +123 -123
- package/dist/skills/built-in/refactor/SKILL.md +132 -132
- package/dist/skills/built-in/test/SKILL.md +128 -128
- package/dist/sqlite-store-7OECRTXM.js +5 -0
- package/dist/{sqlite-store-7ZIVOUNI.js.map → sqlite-store-7OECRTXM.js.map} +1 -1
- package/dist/team-manager-2VSMALAA.js +11 -0
- package/dist/{team-manager-6DCNLGTC.js.map → team-manager-2VSMALAA.js.map} +1 -1
- package/dist/team-state-HZNVMQHT.js +3 -0
- package/dist/{team-state-R2D7DT5M.js.map → team-state-HZNVMQHT.js.map} +1 -1
- package/dist/tmux-manager-57QCUVHU.js +6 -0
- package/dist/{tmux-manager-WBKHUHDT.js.map → tmux-manager-57QCUVHU.js.map} +1 -1
- package/dist/tools-KWFSYT56.js +6 -0
- package/dist/{tools-I6XCTEZY.js.map → tools-KWFSYT56.js.map} +1 -1
- package/package.json +89 -93
- package/dist/App-YAHJUWCX.js.map +0 -1
- package/dist/api-key-fallback-UN3TJEOO.js +0 -11
- package/dist/auth-status-EIM5A5KL.js +0 -13
- package/dist/chunk-25UNNEHN.js +0 -140
- package/dist/chunk-25UNNEHN.js.map +0 -1
- package/dist/chunk-2GKOK6T7.js.map +0 -1
- package/dist/chunk-2LF7ALGR.js.map +0 -1
- package/dist/chunk-2NWNIKBK.js.map +0 -1
- package/dist/chunk-3TSPZRGM.js.map +0 -1
- package/dist/chunk-473JN6M5.js.map +0 -1
- package/dist/chunk-5XFSV6PF.js.map +0 -1
- package/dist/chunk-62HSGYQD.js.map +0 -1
- package/dist/chunk-6GUD7QIM.js.map +0 -1
- package/dist/chunk-AQ23TYSQ.js.map +0 -1
- package/dist/chunk-BY4DAKUU.js.map +0 -1
- package/dist/chunk-CC7MGWYY.js.map +0 -1
- package/dist/chunk-CTFZTARK.js +0 -155
- package/dist/chunk-CTFZTARK.js.map +0 -1
- package/dist/chunk-FIC7AK4Q.js.map +0 -1
- package/dist/chunk-GU33WKPG.js.map +0 -1
- package/dist/chunk-H2SYKIMI.js.map +0 -1
- package/dist/chunk-HEKFAKVH.js.map +0 -1
- package/dist/chunk-IARA5XYP.js.map +0 -1
- package/dist/chunk-LCYH4T6N.js.map +0 -1
- package/dist/chunk-LDVY5ELP.js.map +0 -1
- package/dist/chunk-OCJPQFOR.js.map +0 -1
- package/dist/chunk-ODBY7S4X.js +0 -141
- package/dist/chunk-ODBY7S4X.js.map +0 -1
- package/dist/chunk-ONQ4WCUI.js.map +0 -1
- package/dist/chunk-P5TKZM3T.js +0 -159
- package/dist/chunk-P5TKZM3T.js.map +0 -1
- package/dist/chunk-P66WDACW.js.map +0 -1
- package/dist/chunk-QCRK4QEL.js.map +0 -1
- package/dist/chunk-ROJPFPJ7.js.map +0 -1
- package/dist/chunk-RP2TAL3J.js.map +0 -1
- package/dist/chunk-RYOB3TLZ.js.map +0 -1
- package/dist/chunk-SOQFMNQC.js.map +0 -1
- package/dist/chunk-TDFTX32B.js.map +0 -1
- package/dist/chunk-VBLLDY4R.js.map +0 -1
- package/dist/chunk-VJNQJALF.js.map +0 -1
- package/dist/chunk-WAYSJMPS.js.map +0 -1
- package/dist/chunk-WC72BRHR.js.map +0 -1
- package/dist/chunk-YPFOE2QJ.js.map +0 -1
- package/dist/claude-adapter-6P4SJH7P.js +0 -7
- package/dist/claude-adapter-6P4SJH7P.js.map +0 -1
- package/dist/claude-login-IS5WTBMP.js.map +0 -1
- package/dist/codex-login-GMPF64MR.js.map +0 -1
- package/dist/config-store-POB6I37G.js +0 -7
- package/dist/conversation-store-PRBHWQMJ.js +0 -4
- package/dist/detect-providers-C4SVQHFF.js +0 -4
- package/dist/executor-RUX7VK3T.js +0 -4
- package/dist/first-run-GDEVRFPO.js.map +0 -1
- package/dist/gemini-adapter-MV3U4QFH.js +0 -7
- package/dist/gemini-adapter-MV3U4QFH.js.map +0 -1
- package/dist/gemini-login-KE224MSW.js.map +0 -1
- package/dist/input-history-MIOO3FIW.js.map +0 -1
- package/dist/kimi-adapter-UODMNX6K.js +0 -6
- package/dist/kimi-login-DNT5YBKX.js.map +0 -1
- package/dist/logger-PLPDWACQ.js +0 -3
- package/dist/model-discovery-O64ZWPX5.js +0 -6
- package/dist/native-cli-adapters-JMZX2C2C.js +0 -8
- package/dist/ollama-adapter-GE67BNSS.js +0 -5
- package/dist/openai-adapter-SHPLK77L.js +0 -7
- package/dist/openai-adapter-SHPLK77L.js.map +0 -1
- package/dist/profile-loader-TNAXBLDX.js.map +0 -1
- package/dist/registry-3NHVCXCZ.js +0 -6
- package/dist/registry-7CQ3NCAD.js +0 -5
- package/dist/server-manager-DES23IBQ.js +0 -5
- package/dist/session-manager-EHD7GWM2.js +0 -12
- package/dist/sqlite-store-7ZIVOUNI.js +0 -5
- package/dist/team-manager-6DCNLGTC.js +0 -11
- package/dist/team-state-R2D7DT5M.js +0 -3
- package/dist/tmux-manager-WBKHUHDT.js +0 -6
- package/dist/tools-I6XCTEZY.js +0 -6
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/chat-runner.ts","../src/cli/commands/chat.ts","../src/cli/commands/plan.ts","../src/cli/commands/review.ts","../src/cli/commands/test.ts","../src/cli/commands/config.ts","../src/cli/commands/auth.ts","../src/cli/commands/install.ts","../src/cli/commands/team.ts","../src/cli/cli.ts"],"names":["Command","ConfigStore","pc","isInteractiveTerminal","randomUUID","createDefaultRegistry","args"],"mappings":"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","file":"cli.js","sourcesContent":["import { randomUUID } from \"node:crypto\";\r\n\r\nimport { createModelRouter } from \"../core/model-router.js\";\r\nimport { createDefaultRegistry } from \"../providers/registry.js\";\r\nimport { ConfigStore } from \"../storage/config-store.js\";\r\nimport type { IChatMessage } from \"../types/message.js\";\r\nimport type { ModelRole } from \"../types/model.js\";\r\n\r\nconst VALID_ROLES: readonly ModelRole[] = [\r\n \"planning\",\r\n \"coding\",\r\n \"review\",\r\n \"testing\",\r\n \"bugfix\",\r\n \"documentation\",\r\n] as const;\r\n\r\nexport interface IChatRunnerOptions {\r\n readonly initialMessage?: string | undefined;\r\n readonly model?: string | undefined;\r\n readonly role?: string | undefined;\r\n readonly systemPrompt?: string | undefined;\r\n readonly streaming?: boolean | undefined;\r\n readonly isAgentPane?: boolean | undefined;\r\n readonly print?: boolean | undefined;\r\n}\r\n\r\nfunction isInteractiveTerminal(): boolean {\r\n return process.stdin.isTTY && process.stdout.isTTY;\r\n}\r\n\r\nfunction normalizeMessage(message: string | undefined): string | undefined {\r\n const trimmed = message?.trim();\r\n return trimmed && trimmed.length > 0 ? trimmed : undefined;\r\n}\r\n\r\nfunction parseRole(role: string | undefined): ModelRole | undefined {\r\n if (role === undefined) {\r\n return undefined;\r\n }\r\n\r\n if ((VALID_ROLES as readonly string[]).includes(role)) {\r\n return role as ModelRole;\r\n }\r\n\r\n throw new Error(`Unknown role \"${role}\". Valid roles: ${VALID_ROLES.join(\", \")}`);\r\n}\r\n\r\nasync function ensureInteractiveConfig(): Promise<void> {\r\n const { ensureDefaultConfig, hasGlobalConfig } = await import(\"./setup/first-run.js\");\r\n\r\n if (!hasGlobalConfig()) {\r\n ensureDefaultConfig();\r\n }\r\n}\r\n\r\nasync function startInteractiveChat(options: IChatRunnerOptions): Promise<void> {\r\n await ensureInteractiveConfig();\r\n\r\n const { startChatSession } = await import(\"../ui/App.js\");\r\n await startChatSession({\r\n ...(options.initialMessage !== undefined ? { initialMessage: options.initialMessage } : {}),\r\n ...(options.model !== undefined ? { model: options.model } : {}),\r\n ...(options.role !== undefined ? { role: options.role } : {}),\r\n ...(options.systemPrompt !== undefined ? { systemPrompt: options.systemPrompt } : {}),\r\n ...(options.isAgentPane ? { isAgentPane: true } : {}),\r\n streaming: options.streaming !== false,\r\n });\r\n}\r\n\r\nasync function runPlainChat(options: IChatRunnerOptions, message: string): Promise<void> {\r\n const config = new ConfigStore().loadGlobal();\r\n const modelRouter = createModelRouter(config);\r\n const role = parseRole(options.role);\r\n\r\n if (options.model !== undefined) {\r\n modelRouter.setUserOverride(options.model);\r\n }\r\n\r\n const resolution = modelRouter.resolve(role);\r\n const registry = await createDefaultRegistry();\r\n\r\n if (!registry.hasModel(resolution.modelId)) {\r\n throw new Error(\r\n `No provider is available for model \"${resolution.modelId}\". Run \\`aemeathcli auth status\\` or \\`aemeathcli auth set-key <provider>\\`.`,\r\n );\r\n }\r\n\r\n const provider = registry.getForModel(resolution.modelId);\r\n const messages: readonly IChatMessage[] = [\r\n {\r\n id: randomUUID(),\r\n role: \"user\",\r\n content: message,\r\n createdAt: new Date(),\r\n },\r\n ];\r\n\r\n if (options.streaming === false) {\r\n const response = await provider.chat({\r\n model: resolution.modelId,\r\n messages,\r\n ...(options.systemPrompt !== undefined ? { system: options.systemPrompt } : {}),\r\n });\r\n process.stdout.write(`${response.message.content}\\n`);\r\n return;\r\n }\r\n\r\n let wroteOutput = false;\r\n\r\n for await (const chunk of provider.stream({\r\n model: resolution.modelId,\r\n messages,\r\n ...(options.systemPrompt !== undefined ? { system: options.systemPrompt } : {}),\r\n })) {\r\n if (chunk.type === \"text\" && chunk.content) {\r\n process.stdout.write(chunk.content);\r\n wroteOutput = true;\r\n continue;\r\n }\r\n\r\n if (chunk.type === \"tool_call\") {\r\n throw new Error(\r\n \"Tool-calling output is not supported in plain mode. Use the interactive TUI (`aemeathcli`) and switch into swarm mode with Shift+Tab.\",\r\n );\r\n }\r\n\r\n if (chunk.type === \"error\" && chunk.error) {\r\n throw new Error(chunk.error);\r\n }\r\n }\r\n\r\n if (wroteOutput) {\r\n process.stdout.write(\"\\n\");\r\n }\r\n}\r\n\r\nexport async function runChatCommand(options: IChatRunnerOptions): Promise<void> {\r\n const message = normalizeMessage(options.initialMessage);\r\n const interactive = isInteractiveTerminal();\r\n\r\n if (!options.print && interactive && message === undefined) {\r\n await startInteractiveChat(options);\r\n return;\r\n }\r\n\r\n if (message === undefined) {\r\n throw new Error(\r\n \"Interactive mode requires a TTY. Provide a prompt for one-shot mode or run the command in a terminal.\",\r\n );\r\n }\r\n\r\n await runPlainChat(options, message);\r\n}\r\n","/**\r\n * Interactive chat mode command per PRD section 18.2\r\n */\r\n\r\nimport { Command } from \"commander\";\r\nimport { runChatCommand } from \"../chat-runner.js\";\r\n\r\nexport function createChatCommand(): Command {\r\n const chat = new Command(\"chat\")\r\n .description(\"Start interactive chat mode (default)\")\r\n .argument(\"[message...]\", \"Initial message to send\")\r\n .option(\"-m, --model <model>\", \"Override model for this session\")\r\n .option(\"-r, --role <role>\", \"Set the task role (planning, coding, review, testing, bugfix)\")\r\n .option(\"--system <prompt>\", \"Custom system prompt\")\r\n .option(\"--print\", \"Print a single response and exit\")\r\n .option(\"--no-stream\", \"Disable streaming output\")\r\n .action(async (messageParts: string[], options: Record<string, unknown>) => {\r\n await runChatCommand({\r\n initialMessage: messageParts.join(\" \") || undefined,\r\n model: options[\"model\"] as string | undefined,\r\n role: options[\"role\"] as string | undefined,\r\n systemPrompt: options[\"system\"] as string | undefined,\r\n streaming: options[\"stream\"] !== false,\r\n print: options[\"print\"] === true,\r\n });\r\n });\r\n\r\n return chat;\r\n}\r\n","/**\r\n * Planning mode command per PRD section 5.1\r\n */\r\n\r\nimport { Command } from \"commander\";\r\nimport { runChatCommand } from \"../chat-runner.js\";\r\n\r\nexport function createPlanCommand(): Command {\r\n const plan = new Command(\"plan\")\r\n .description(\"Enter planning mode with a high-reasoning model\")\r\n .argument(\"[message...]\", \"Planning prompt\")\r\n .option(\"-m, --model <model>\", \"Override model (default: planning role)\")\r\n .option(\"--print\", \"Print a single response and exit\")\r\n .action(async (messageParts: string[], options: Record<string, unknown>) => {\r\n await runChatCommand({\r\n initialMessage: messageParts.join(\" \") || undefined,\r\n model: options[\"model\"] as string | undefined,\r\n role: \"planning\",\r\n streaming: true,\r\n print: options[\"print\"] === true,\r\n });\r\n });\r\n\r\n return plan;\r\n}\r\n","/**\r\n * Code review mode command per PRD section 5.1\r\n */\r\n\r\nimport { Command } from \"commander\";\r\nimport { runChatCommand } from \"../chat-runner.js\";\r\n\r\nexport function createReviewCommand(): Command {\r\n const review = new Command(\"review\")\r\n .description(\"Code review mode with a thorough model\")\r\n .argument(\"[files...]\", \"Files to review\")\r\n .option(\"-m, --model <model>\", \"Override model (default: review role)\")\r\n .option(\"--print\", \"Print a single response and exit\")\r\n .action(async (files: string[], options: Record<string, unknown>) => {\r\n const message = files.length > 0\r\n ? `Review these files: ${files.join(\", \")}`\r\n : \"Review the recent changes\";\r\n await runChatCommand({\r\n initialMessage: message,\r\n model: options[\"model\"] as string | undefined,\r\n role: \"review\",\r\n streaming: true,\r\n print: options[\"print\"] === true,\r\n });\r\n });\r\n\r\n return review;\r\n}\r\n","/**\r\n * Testing mode command per PRD section 5.1\r\n */\r\n\r\nimport { Command } from \"commander\";\r\nimport { runChatCommand } from \"../chat-runner.js\";\r\n\r\nexport function createTestCommand(): Command {\r\n const test = new Command(\"test\")\r\n .description(\"Testing mode with a cost-efficient model\")\r\n .argument(\"[message...]\", \"Testing prompt\")\r\n .option(\"-m, --model <model>\", \"Override model (default: testing role)\")\r\n .option(\"--print\", \"Print a single response and exit\")\r\n .action(async (messageParts: string[], options: Record<string, unknown>) => {\r\n await runChatCommand({\r\n initialMessage: messageParts.join(\" \") || \"Generate tests for the recent changes\",\r\n model: options[\"model\"] as string | undefined,\r\n role: \"testing\",\r\n streaming: true,\r\n print: options[\"print\"] === true,\r\n });\r\n });\r\n\r\n return test;\r\n}\r\n","/**\r\n * Configuration management commands per PRD section 12.3\r\n */\r\n\r\nimport { Command } from \"commander\";\r\nimport pc from \"picocolors\";\r\n\r\nexport function createConfigCommand(): Command {\r\n const config = new Command(\"config\")\r\n .description(\"Configuration management\");\r\n\r\n config\r\n .command(\"get [key]\")\r\n .description(\"Get configuration value (or all if no key)\")\r\n .action(async (key: string | undefined) => {\r\n try {\r\n const { ConfigStore } = await import(\"../../storage/config-store.js\");\r\n const store = new ConfigStore();\r\n const cfg = store.loadGlobal();\r\n\r\n if (key) {\r\n const value = getNestedValue(cfg, key);\r\n if (value === undefined) {\r\n process.stderr.write(pc.red(`Configuration key not found: ${key}\\n`));\r\n process.exitCode = 1;\r\n return;\r\n }\r\n process.stdout.write(`${key} = ${JSON.stringify(value, null, 2)}\\n`);\r\n } else {\r\n process.stdout.write(JSON.stringify(cfg, null, 2) + \"\\n\");\r\n }\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(pc.red(`Failed to read config: ${message}\\n`));\r\n process.exitCode = 3;\r\n }\r\n });\r\n\r\n config\r\n .command(\"set <key> <value>\")\r\n .description(\"Set a configuration value\")\r\n .action(async (key: string, value: string) => {\r\n try {\r\n const { ConfigStore } = await import(\"../../storage/config-store.js\");\r\n const store = new ConfigStore();\r\n const cfg = store.loadGlobal();\r\n\r\n let parsedValue: unknown;\r\n try {\r\n parsedValue = JSON.parse(value);\r\n } catch {\r\n parsedValue = value;\r\n }\r\n\r\n setNestedValue(cfg as unknown as Record<string, unknown>, key, parsedValue);\r\n store.saveGlobal(cfg);\r\n process.stdout.write(pc.green(`Set ${key} = ${JSON.stringify(parsedValue)}\\n`));\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(pc.red(`Failed to set config: ${message}\\n`));\r\n process.exitCode = 3;\r\n }\r\n });\r\n\r\n config\r\n .command(\"init\")\r\n .description(\"Initialize configuration with interactive setup\")\r\n .option(\"--defaults\", \"Write default configuration without interactive prompts\")\r\n .option(\"--force\", \"Overwrite or recreate the global configuration\")\r\n .action(async (options: { defaults?: boolean; force?: boolean }) => {\r\n try {\r\n const { runFirstRunSetup } = await import(\"../setup/first-run.js\");\r\n await runFirstRunSetup({\r\n ...(options.defaults !== undefined ? { defaults: options.defaults } : {}),\r\n ...(options.force !== undefined ? { force: options.force } : {}),\r\n });\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(pc.red(`Setup failed: ${message}\\n`));\r\n process.exitCode = 3;\r\n }\r\n });\r\n\r\n config\r\n .command(\"path\")\r\n .description(\"Show the active global configuration path\")\r\n .action(async () => {\r\n const { getConfigPath } = await import(\"../../utils/pathResolver.js\");\r\n process.stdout.write(`${getConfigPath()}\\n`);\r\n });\r\n\r\n return config;\r\n}\r\n\r\nfunction getNestedValue(obj: unknown, path: string): unknown {\r\n const keys = path.split(\".\");\r\n let current: unknown = obj;\r\n for (const key of keys) {\r\n if (current === null || current === undefined || typeof current !== \"object\") {\r\n return undefined;\r\n }\r\n current = (current as Record<string, unknown>)[key];\r\n }\r\n return current;\r\n}\r\n\r\nfunction setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void {\r\n const keys = path.split(\".\");\r\n let current: Record<string, unknown> = obj;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n if (!key) continue;\r\n if (typeof current[key] !== \"object\" || current[key] === null) {\r\n current[key] = {};\r\n }\r\n current = current[key] as Record<string, unknown>;\r\n }\r\n const lastKey = keys[keys.length - 1];\r\n if (lastKey) {\r\n current[lastKey] = value;\r\n }\r\n}\r\n","/**\r\n * Authentication management commands per PRD section 13.2\r\n */\r\n\r\nimport { Command } from \"commander\";\r\nimport pc from \"picocolors\";\r\nimport type { ProviderName } from \"../../types/index.js\";\r\nimport {\r\n LOGIN_PROVIDERS,\r\n type LoginProvider,\r\n getAuthStatusRecord,\r\n formatDetailedAuthStatusLine,\r\n} from \"../../auth/auth-status.js\";\r\n\r\nconst VALID_PROVIDERS = LOGIN_PROVIDERS;\r\n\r\nfunction isValidProvider(value: string): value is LoginProvider {\r\n return (VALID_PROVIDERS as readonly string[]).includes(value);\r\n}\r\n\r\nfunction isInteractiveTerminal(): boolean {\r\n return process.stdin.isTTY && process.stdout.isTTY;\r\n}\r\n\r\nfunction validProvidersMessage(): string {\r\n return VALID_PROVIDERS.join(\", \");\r\n}\r\n\r\nasync function promptForProvider(): Promise<LoginProvider> {\r\n const { select } = await import(\"@inquirer/prompts\");\r\n return select<LoginProvider>({\r\n message: \"Select a provider to log in to:\",\r\n choices: [\r\n { name: \"Claude (Anthropic)\", value: \"claude\" },\r\n { name: \"Codex (OpenAI)\", value: \"codex\" },\r\n { name: \"Gemini (Google)\", value: \"gemini\" },\r\n { name: \"Kimi (Moonshot)\", value: \"kimi\" },\r\n ],\r\n });\r\n}\r\n\r\nasync function readSecretFromStdin(): Promise<string> {\r\n const chunks: string[] = [];\r\n for await (const chunk of process.stdin) {\r\n chunks.push(String(chunk));\r\n }\r\n return chunks.join(\"\").trim();\r\n}\r\n\r\nasync function resolveLoginProvider(providerArg: string | undefined): Promise<LoginProvider | undefined> {\r\n if (providerArg !== undefined) {\r\n if (!isValidProvider(providerArg)) {\r\n process.stderr.write(\r\n pc.red(`Unknown provider: \"${providerArg}\". Valid: ${validProvidersMessage()}\\n`),\r\n );\r\n process.exitCode = 2;\r\n return undefined;\r\n }\r\n return providerArg;\r\n }\r\n\r\n if (!isInteractiveTerminal()) {\r\n process.stderr.write(\r\n pc.red(\r\n \"Interactive provider selection requires a TTY. Use `aemeathcli auth login <provider>` or `aemeathcli auth set-key <provider> --stdin`.\\n\",\r\n ),\r\n );\r\n process.exitCode = 2;\r\n return undefined;\r\n }\r\n\r\n return promptForProvider();\r\n}\r\n\r\nasync function runLoginFlow(provider: LoginProvider): Promise<void> {\r\n process.stdout.write(pc.cyan(`Logging in to ${provider}...\\n`));\r\n\r\n const loginModule = await loadLoginModule(provider);\r\n await loginModule.login();\r\n process.stdout.write(pc.green(`Successfully logged in to ${provider}\\n`));\r\n}\r\n\r\nconst PROVIDER_MODEL_SWITCH: Readonly<Record<LoginProvider, { provider: ProviderName; model: string }>> = {\r\n claude: { provider: \"anthropic\", model: \"claude-sonnet-4-6\" },\r\n codex: { provider: \"openai\", model: \"gpt-5.2\" },\r\n gemini: { provider: \"google\", model: \"gemini-2.5-pro\" },\r\n kimi: { provider: \"kimi\", model: \"kimi-for-coding\" },\r\n};\r\n\r\n/**\r\n * Top-level `login` command with interactive provider selection.\r\n * Shows an arrow-key navigable list of providers, then triggers\r\n * browser-based login for the selected one.\r\n */\r\nexport function createLoginCommand(): Command {\r\n return new Command(\"login\")\r\n .description(\"Log in to a provider (interactive)\")\r\n .argument(\"[provider]\", \"Provider to log in to (claude, codex, gemini, kimi)\")\r\n .action(async (providerArg: string | undefined) => {\r\n const provider = await resolveLoginProvider(providerArg);\r\n if (provider === undefined) {\r\n return;\r\n }\r\n\r\n try {\r\n await runLoginFlow(provider);\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(pc.red(`Login failed: ${message}\\n`));\r\n process.exitCode = 3;\r\n }\r\n });\r\n}\r\n\r\nexport function createAuthCommand(): Command {\r\n const auth = new Command(\"auth\")\r\n .description(\"Authentication & account management\");\r\n\r\n auth\r\n .command(\"login [provider]\")\r\n .description(\"Log in to a provider (claude, codex, gemini, kimi)\")\r\n .action(async (providerArg: string | undefined) => {\r\n const provider = await resolveLoginProvider(providerArg);\r\n if (provider === undefined) {\r\n return;\r\n }\r\n\r\n try {\r\n await runLoginFlow(provider);\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(pc.red(`Login failed: ${message}\\n`));\r\n process.exitCode = 3;\r\n }\r\n });\r\n\r\n auth\r\n .command(\"logout [provider]\")\r\n .description(\"Log out of a provider (or all with --all)\")\r\n .option(\"--all\", \"Log out of all providers\")\r\n .action(async (provider: string | undefined, options: { all?: boolean }) => {\r\n if (options.all) {\r\n for (const p of VALID_PROVIDERS) {\r\n try {\r\n const loginModule = await loadLoginModule(p);\r\n await loginModule.logout();\r\n process.stdout.write(pc.green(`Logged out of ${p}\\n`));\r\n } catch {\r\n // Some may not be logged in\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (!provider || !isValidProvider(provider)) {\r\n process.stderr.write(\r\n pc.red(`Specify a provider or use --all. Valid: ${VALID_PROVIDERS.join(\", \")}\\n`),\r\n );\r\n process.exitCode = 2;\r\n return;\r\n }\r\n\r\n try {\r\n const loginModule = await loadLoginModule(provider);\r\n await loginModule.logout();\r\n process.stdout.write(pc.green(`Logged out of ${provider}\\n`));\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(pc.red(`Logout failed: ${message}\\n`));\r\n process.exitCode = 3;\r\n }\r\n });\r\n\r\n auth\r\n .command(\"status\")\r\n .description(\"Show login status for all providers\")\r\n .option(\"--json\", \"Output machine-readable JSON\")\r\n .action(async (options: { json?: boolean }) => {\r\n const records = await Promise.all(VALID_PROVIDERS.map(async (provider) => getAuthStatusRecord(provider)));\r\n\r\n if (options.json) {\r\n process.stdout.write(`${JSON.stringify({ providers: records }, null, 2)}\\n`);\r\n return;\r\n }\r\n\r\n for (const record of records) {\r\n const line = formatDetailedAuthStatusLine(record);\r\n process.stdout.write(`${record.loggedIn ? pc.green(line) : pc.red(line)}\\n`);\r\n }\r\n });\r\n\r\n auth\r\n .command(\"set-key <provider> [key]\")\r\n .description(\"Set an API key for a provider (fallback for CI/headless)\")\r\n .option(\"--stdin\", \"Read the API key from stdin\")\r\n .action(async (provider: string, key: string | undefined, options: { stdin?: boolean }) => {\r\n if (!isValidProvider(provider) && provider !== \"openai\" && provider !== \"google\") {\r\n process.stderr.write(pc.red(`Unknown provider: \"${provider}\"\\n`));\r\n process.exitCode = 2;\r\n return;\r\n }\r\n\r\n const resolvedKey = options.stdin ? await readSecretFromStdin() : key;\r\n if (!resolvedKey) {\r\n process.stderr.write(\r\n pc.red(\"Provide an API key argument or use --stdin to read it from standard input.\\n\"),\r\n );\r\n process.exitCode = 2;\r\n return;\r\n }\r\n\r\n try {\r\n const { ApiKeyFallback } = await import(\"../../auth/api-key-fallback.js\");\r\n const fallback = new ApiKeyFallback();\r\n const providerMap: Record<string, ProviderName> = {\r\n claude: \"anthropic\",\r\n openai: \"openai\",\r\n codex: \"openai\",\r\n gemini: \"google\",\r\n google: \"google\",\r\n kimi: \"kimi\",\r\n };\r\n const mappedProvider = providerMap[provider];\r\n if (mappedProvider) {\r\n await fallback.setKey(mappedProvider, resolvedKey);\r\n process.stdout.write(pc.green(`API key set for ${provider}\\n`));\r\n }\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(pc.red(`Failed to set key: ${message}\\n`));\r\n process.exitCode = 3;\r\n }\r\n });\r\n\r\n auth\r\n .command(\"switch <provider>\")\r\n .description(\"Set a provider as the default\")\r\n .action(async (provider: string) => {\r\n if (!isValidProvider(provider)) {\r\n process.stderr.write(\r\n pc.red(`Unknown provider: \"${provider}\". Valid: ${VALID_PROVIDERS.join(\", \")}\\n`),\r\n );\r\n process.exitCode = 2;\r\n return;\r\n }\r\n\r\n try {\r\n const target = PROVIDER_MODEL_SWITCH[provider];\r\n const { ConfigStore } = await import(\"../../storage/config-store.js\");\r\n const store = new ConfigStore();\r\n const cfg = store.loadGlobal();\r\n\r\n const nextConfig = {\r\n ...cfg,\r\n defaultModel: target.model,\r\n providers: {\r\n ...cfg.providers,\r\n [target.provider]: {\r\n ...(cfg.providers[target.provider] ?? {}),\r\n enabled: true,\r\n },\r\n },\r\n };\r\n\r\n store.saveGlobal(nextConfig);\r\n process.stdout.write(\r\n pc.green(`Default provider switched to ${provider} (model: ${target.model})\\n`),\r\n );\r\n } catch (error: unknown) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(pc.red(`Failed to switch provider: ${message}\\n`));\r\n process.exitCode = 3;\r\n }\r\n });\r\n\r\n return auth;\r\n}\r\n\r\ninterface ILoginModule {\r\n login(): Promise<unknown>;\r\n logout(): Promise<void>;\r\n getStatus(): Promise<{ loggedIn: boolean; email?: string | undefined; plan?: string | undefined }>;\r\n}\r\n\r\nasync function loadLoginModule(provider: LoginProvider): Promise<ILoginModule> {\r\n switch (provider) {\r\n case \"claude\": {\r\n const mod = await import(\"../../auth/providers/claude-login.js\");\r\n return new mod.ClaudeLogin();\r\n }\r\n case \"codex\": {\r\n const mod = await import(\"../../auth/providers/codex-login.js\");\r\n return new mod.CodexLogin();\r\n }\r\n case \"gemini\": {\r\n const mod = await import(\"../../auth/providers/gemini-login.js\");\r\n return new mod.GeminiLogin();\r\n }\r\n case \"kimi\": {\r\n const mod = await import(\"../../auth/providers/kimi-login.js\");\r\n return new mod.KimiLogin();\r\n }\r\n }\r\n}\r\n","/**\r\n * `ac install` — Install an agent profile from a file or URL.\r\n *\r\n * Accepts either a local path to a Markdown profile file or\r\n * a remote URL. The profile is validated and then written to\r\n * the user agent store (~/.aemeathcli/agent-store/).\r\n *\r\n * @see IMPLEMENT_PLAN.md Section 10\r\n */\r\n\r\nimport { Command } from \"commander\";\r\nimport pc from \"picocolors\";\r\n\r\nexport function createInstallCommand(): Command {\r\n return new Command(\"install\")\r\n .description(\"Install an agent profile from a file or URL\")\r\n .argument(\"<source>\", \"Path to .md profile file or URL\")\r\n .action(async (source: string) => {\r\n try {\r\n const { ProfileLoader } = await import(\"../../orchestrator/profiles/profile-loader.js\");\r\n const loader = new ProfileLoader();\r\n const name = await loader.install(source);\r\n process.stdout.write(`${pc.green(`Profile \"${name}\" installed successfully.`)}\\n`);\r\n process.stdout.write(\r\n `${pc.dim(\"Stored in the agent profile library for swarm orchestration and advanced profile-driven workflows.\")}\\n`,\r\n );\r\n } catch (error: unknown) {\r\n const msg = error instanceof Error ? error.message : String(error);\r\n process.stderr.write(`${pc.red(`Install failed: ${msg}`)}\\n`);\r\n process.exitCode = 1;\r\n }\r\n });\r\n}\r\n","import { Command } from \"commander\";\r\nimport pc from \"picocolors\";\r\n\r\nexport function createTeamCommand(): Command {\r\n return new Command(\"team\")\r\n .description(\"Legacy team namespace\")\r\n .argument(\"[legacy...]\", \"Legacy team arguments\")\r\n .action((legacyArgs: string[]) => {\r\n const attempted = legacyArgs.length > 0 ? `team ${legacyArgs.join(\" \")}` : \"team\";\r\n process.stderr.write(\r\n pc.yellow(\r\n `The top-level \\`${attempted}\\` command is deprecated.\\n` +\r\n \"Start `aemeathcli` (or `ac`), press Shift+Tab for swarm mode, or use `/team` inside the interactive session.\\n\",\r\n ),\r\n );\r\n process.exitCode = 2;\r\n });\r\n}\r\n","#!/usr/bin/env node\r\n\r\n/**\r\n * AemeathCLI — Main CLI entry point\r\n * Per PRD section 6.1: Commander.js setup with subcommand routing\r\n */\r\n\r\nimport { Command } from \"commander\";\r\nimport pc from \"picocolors\";\r\nimport { randomUUID } from \"node:crypto\";\r\nimport { createChatCommand } from \"./commands/chat.js\";\r\nimport { createPlanCommand } from \"./commands/plan.js\";\r\nimport { createReviewCommand } from \"./commands/review.js\";\r\nimport { createTestCommand } from \"./commands/test.js\";\r\nimport { createConfigCommand } from \"./commands/config.js\";\r\nimport { createAuthCommand, createLoginCommand } from \"./commands/auth.js\";\r\nimport { createInstallCommand } from \"./commands/install.js\";\r\nimport { createTeamCommand } from \"./commands/team.js\";\r\nimport { runChatCommand } from \"./chat-runner.js\";\r\nimport type { IIPCMessage } from \"../types/index.js\";\r\nimport type { ProviderRegistry } from \"../providers/registry.js\";\r\nimport type { ToolRegistry } from \"../tools/registry.js\";\r\nimport type { IChatMessage, IToolCall } from \"../types/message.js\";\r\nimport type { IToolExecutionContext, PermissionMode } from \"../types/tool.js\";\r\nimport { PACKAGE_VERSION } from \"../version.js\";\r\n\r\nfunction getFlagValue(args: readonly string[], flag: string): string | undefined {\r\n const index = args.indexOf(flag);\r\n if (index === -1) {\r\n return undefined;\r\n }\r\n const value = args[index + 1];\r\n return value && !value.startsWith(\"-\") ? value : undefined;\r\n}\r\n\r\nfunction isIPCMessage(value: unknown): value is IIPCMessage {\r\n if (typeof value !== \"object\" || value === null) {\r\n return false;\r\n }\r\n const record = value as Record<string, unknown>;\r\n return record[\"jsonrpc\"] === \"2.0\" && typeof record[\"method\"] === \"string\";\r\n}\r\n\r\nfunction sendAgentIPC(method: IIPCMessage[\"method\"], params: Record<string, unknown>): void {\r\n if (typeof process.send === \"function\") {\r\n const message: IIPCMessage = {\r\n jsonrpc: \"2.0\",\r\n method,\r\n params,\r\n };\r\n process.send(message);\r\n }\r\n}\r\n\r\nfunction isPermissionMode(value: string | undefined): value is PermissionMode {\r\n return value === \"strict\" || value === \"standard\" || value === \"permissive\";\r\n}\r\n\r\nfunction parseStringArrayEnv(value: string | undefined): string[] | undefined {\r\n if (!value) {\r\n return undefined;\r\n }\r\n\r\n try {\r\n const parsed: unknown = JSON.parse(value);\r\n if (Array.isArray(parsed) && parsed.every((item) => typeof item === \"string\")) {\r\n return [...parsed];\r\n }\r\n } catch {\r\n // Ignore malformed env input and fall back to defaults\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nfunction getAgentToolContext(): IToolExecutionContext {\r\n const projectRoot = process.env[\"AEMEATHCLI_TOOL_PROJECT_ROOT\"] ?? process.cwd();\r\n const workingDirectory =\r\n process.env[\"AEMEATHCLI_TOOL_WORKING_DIRECTORY\"] ?? projectRoot;\r\n const allowedPaths =\r\n parseStringArrayEnv(process.env[\"AEMEATHCLI_TOOL_ALLOWED_PATHS\"]) ?? [projectRoot];\r\n const blockedCommands =\r\n parseStringArrayEnv(process.env[\"AEMEATHCLI_TOOL_BLOCKED_COMMANDS\"]) ?? [];\r\n const permissionMode = isPermissionMode(process.env[\"AEMEATHCLI_TOOL_PERMISSION_MODE\"])\r\n ? process.env[\"AEMEATHCLI_TOOL_PERMISSION_MODE\"]\r\n : \"standard\";\r\n\r\n return {\r\n projectRoot,\r\n workingDirectory,\r\n permissionMode,\r\n allowedPaths,\r\n blockedCommands,\r\n };\r\n}\r\n\r\nasync function maybeRunAgentMode(args: readonly string[]): Promise<boolean> {\r\n if (!args.includes(\"--agent\") && process.env[\"AEMEATHCLI_AGENT_MODE\"] !== \"1\") {\r\n return false;\r\n }\r\n\r\n const teamName = getFlagValue(args, \"--team\") ?? process.env[\"AEMEATHCLI_TEAM_NAME\"] ?? \"unknown-team\";\r\n const agentName = getFlagValue(args, \"--name\") ?? process.env[\"AEMEATHCLI_AGENT_NAME\"] ?? \"agent\";\r\n const model = getFlagValue(args, \"--model\") ?? \"claude-sonnet-4-6\";\r\n const role = getFlagValue(args, \"--role\") ?? \"coding\";\r\n const agentId = process.env[\"AEMEATHCLI_AGENT_ID\"] ?? randomUUID();\r\n const toolContext = getAgentToolContext();\r\n\r\n // Lazily-initialized provider registry (shared across tasks for this agent)\r\n let registryPromise: Promise<ProviderRegistry> | undefined;\r\n\r\n function getRegistry(): Promise<ProviderRegistry> {\r\n if (!registryPromise) {\r\n registryPromise = import(\"../providers/registry.js\").then(\r\n ({ createDefaultRegistry }) => createDefaultRegistry({ preferSdk: true }),\r\n );\r\n }\r\n return registryPromise;\r\n }\r\n\r\n // Lazily-initialized tool registry (shared across tasks for this agent)\r\n let toolRegistryPromise: Promise<ToolRegistry> | undefined;\r\n\r\n function getToolRegistry(): Promise<ToolRegistry> {\r\n if (!toolRegistryPromise) {\r\n toolRegistryPromise = import(\"../tools/index.js\").then(\r\n ({ createDefaultRegistry: createToolReg }) =>\r\n createToolReg(toolContext),\r\n );\r\n }\r\n return toolRegistryPromise;\r\n }\r\n\r\n /** Format a one-line summary of a tool call for the agent output panel. */\r\n function formatToolActivity(name: string, args: Record<string, unknown>): string {\r\n switch (name) {\r\n case \"read\":\r\n case \"write\":\r\n case \"edit\":\r\n return typeof args[\"file_path\"] === \"string\" ? args[\"file_path\"] : \"\";\r\n case \"glob\":\r\n return typeof args[\"pattern\"] === \"string\" ? args[\"pattern\"] : \"\";\r\n case \"grep\": {\r\n const pat = typeof args[\"pattern\"] === \"string\" ? args[\"pattern\"] : \"\";\r\n const dir = typeof args[\"path\"] === \"string\" ? ` in ${args[\"path\"]}` : \"\";\r\n return `\"${pat}\"${dir}`;\r\n }\r\n case \"bash\": {\r\n const cmd = typeof args[\"command\"] === \"string\" ? args[\"command\"] : \"\";\r\n return cmd.length > 60 ? cmd.slice(0, 60) + \"...\" : cmd;\r\n }\r\n default:\r\n return JSON.stringify(args).slice(0, 60);\r\n }\r\n }\r\n\r\n /** Short summary of a tool result for the activity feed. */\r\n function formatResultSummary(name: string, content: string, isError: boolean): string {\r\n if (isError) return `Error: ${content.slice(0, 100)}`;\r\n const lines = content.split(\"\\n\").length;\r\n switch (name) {\r\n case \"read\": return `${lines} lines`;\r\n case \"glob\": return content === \"No files found\" ? \"no files\" : `${lines} files`;\r\n case \"grep\": return content === \"No matches found.\" ? \"no matches\" : `${lines} lines`;\r\n case \"write\":\r\n case \"edit\": return content.length > 80 ? content.slice(0, 80) : content;\r\n default: return content.length > 80 ? content.slice(0, 80) + \"...\" : content;\r\n }\r\n }\r\n\r\n const MAX_TOOL_ITERATIONS = 10;\r\n const MAX_TOOL_RESULT_LENGTH = 10_000;\r\n\r\n async function processTask(taskId: string, prompt: string): Promise<void> {\r\n sendAgentIPC(\"agent.taskUpdate\", { agentId, taskId, status: \"in_progress\" });\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: `Initializing provider for ${model}...\\n`,\r\n });\r\n\r\n try {\r\n const registry = await getRegistry();\r\n\r\n if (!registry.hasModel(model)) {\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: `\\nError: No provider available for model \"${model}\". Check authentication with 'aemeathcli auth login'.\\n`,\r\n });\r\n sendAgentIPC(\"agent.taskUpdate\", { agentId, taskId, status: \"completed\" });\r\n return;\r\n }\r\n\r\n const provider = registry.getForModel(model);\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: `Provider ready (${provider.name}). Loading tools...\\n`,\r\n });\r\n const toolRegistry = await getToolRegistry();\r\n const toolDefs = toolRegistry.getDefinitions();\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: `${toolDefs.length} tools loaded. Sending request to ${model}...\\n`,\r\n });\r\n const systemPrompt = `You are ${agentName}, an AI agent in team \"${teamName}\" with the role of ${role}. You have access to tools for reading files, writing files, editing code, searching, and executing shell commands. Use these tools to complete the assigned task thoroughly. Focus only on your specific role.`;\r\n\r\n const messages: IChatMessage[] = [{\r\n id: randomUUID(),\r\n role: \"user\" as const,\r\n content: prompt,\r\n createdAt: new Date(),\r\n }];\r\n\r\n for (let iteration = 0; iteration < MAX_TOOL_ITERATIONS; iteration++) {\r\n let collectedText = \"\";\r\n const collectedToolCalls: IToolCall[] = [];\r\n\r\n const stream = provider.stream({\r\n model,\r\n messages,\r\n system: systemPrompt,\r\n maxTokens: 8000,\r\n ...(toolDefs.length > 0 ? { tools: toolDefs } : {}),\r\n });\r\n\r\n for await (const chunk of stream) {\r\n if (chunk.type === \"text\" && chunk.content) {\r\n collectedText += chunk.content;\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: chunk.content,\r\n });\r\n } else if (chunk.type === \"tool_call\" && chunk.toolCall) {\r\n collectedToolCalls.push(chunk.toolCall);\r\n const tc = chunk.toolCall;\r\n const summary = formatToolActivity(tc.name, tc.arguments);\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: `\\n\\u2699 ${tc.name} ${summary}\\n`,\r\n });\r\n } else if (chunk.type === \"error\" && chunk.error) {\r\n // Truncate error messages to prevent raw CLI output dumps\r\n const errorMsg = chunk.error.length > 300\r\n ? chunk.error.slice(0, 300) + \"...\"\r\n : chunk.error;\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: `\\nStream error: ${errorMsg}\\n`,\r\n });\r\n }\r\n }\r\n\r\n // No tool calls → agent finished\r\n if (collectedToolCalls.length === 0) {\r\n break;\r\n }\r\n\r\n // Add assistant message with tool calls to conversation\r\n messages.push({\r\n id: randomUUID(),\r\n role: \"assistant\" as const,\r\n content: collectedText,\r\n toolCalls: collectedToolCalls,\r\n createdAt: new Date(),\r\n });\r\n\r\n // Execute each tool call and add results\r\n for (const tc of collectedToolCalls) {\r\n const result = await toolRegistry.execute(tc, toolContext);\r\n\r\n const briefResult = formatResultSummary(tc.name, result.content, result.isError);\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: ` \\u2192 ${briefResult}\\n`,\r\n });\r\n\r\n const truncatedContent = result.content.length > MAX_TOOL_RESULT_LENGTH\r\n ? result.content.slice(0, MAX_TOOL_RESULT_LENGTH) + \"\\n...(truncated)\"\r\n : result.content;\r\n\r\n messages.push({\r\n id: randomUUID(),\r\n role: \"tool\" as const,\r\n content: truncatedContent,\r\n toolCalls: [{ id: tc.id, name: tc.name, arguments: {} }],\r\n createdAt: new Date(),\r\n });\r\n }\r\n }\r\n } catch (error: unknown) {\r\n const rawMsg = error instanceof Error ? error.message : String(error);\r\n // Truncate to prevent raw CLI output from flooding the panel\r\n const msg = rawMsg.length > 300 ? rawMsg.slice(0, 300) + \"...\" : rawMsg;\r\n sendAgentIPC(\"agent.streamChunk\", {\r\n agentId, taskId, model,\r\n content: `\\nError: ${msg}\\n`,\r\n });\r\n }\r\n\r\n sendAgentIPC(\"agent.taskUpdate\", { agentId, taskId, status: \"completed\" });\r\n }\r\n\r\n sendAgentIPC(\"agent.register\", {\r\n agentId,\r\n agentName,\r\n teamName,\r\n model,\r\n role,\r\n });\r\n\r\n const keepAlive = setInterval(() => {\r\n // Keep event loop alive for IPC mode.\r\n }, 60_000);\r\n\r\n const shutdown = (): void => {\r\n clearInterval(keepAlive);\r\n process.exit(0);\r\n };\r\n\r\n process.on(\"message\", (raw: unknown) => {\r\n if (!isIPCMessage(raw)) {\r\n return;\r\n }\r\n\r\n if (raw.method === \"hub.taskAssign\") {\r\n const taskId = typeof raw.params[\"taskId\"] === \"string\"\r\n ? raw.params[\"taskId\"]\r\n : randomUUID();\r\n const subject = typeof raw.params[\"subject\"] === \"string\"\r\n ? raw.params[\"subject\"]\r\n : \"\";\r\n const description = typeof raw.params[\"description\"] === \"string\"\r\n ? raw.params[\"description\"]\r\n : \"\";\r\n\r\n void processTask(taskId, description || subject || \"Describe what you can help with.\");\r\n return;\r\n }\r\n\r\n if (raw.method === \"hub.shutdown\") {\r\n shutdown();\r\n }\r\n });\r\n\r\n process.on(\"SIGINT\", shutdown);\r\n process.on(\"SIGTERM\", shutdown);\r\n\r\n // Keep the child process alive for IPC task dispatch.\r\n await new Promise<void>(() => {});\r\n return true;\r\n}\r\n\r\nasync function main(): Promise<void> {\r\n const rawArgs = [...process.argv.slice(2)];\r\n\r\n if (process.argv.includes(\"--no-color\")) {\r\n process.env[\"NO_COLOR\"] = \"1\";\r\n }\r\n\r\n if (process.argv.includes(\"--verbose\")) {\r\n process.env[\"AEMEATHCLI_LOG_LEVEL\"] = process.env[\"AEMEATHCLI_LOG_LEVEL\"] ?? \"debug\";\r\n }\r\n\r\n if (await maybeRunAgentMode(rawArgs)) {\r\n return;\r\n }\r\n\r\n const program = new Command()\r\n .name(\"aemeathcli\")\r\n .description(\r\n \"Multi-model coding CLI with chat, orchestration, and provider-aware automation workflows\",\r\n )\r\n .version(PACKAGE_VERSION, \"-v, --version\")\r\n .argument(\"[message...]\", \"Initial prompt to send\")\r\n .option(\"-m, --model <model>\", \"Override model for this session\")\r\n .option(\"-r, --role <role>\", \"Set the task role\")\r\n .option(\"--verbose\", \"Enable verbose output\")\r\n .option(\"--no-color\", \"Disable colored output\")\r\n .showSuggestionAfterError()\r\n .showHelpAfterError()\r\n .addHelpText(\r\n \"after\",\r\n [\r\n \"\",\r\n \"Examples:\",\r\n \" aemeathcli\",\r\n \" aemeathcli \\\"explain this repository\\\"\",\r\n \" aemeathcli chat --print \\\"summarize the latest diff\\\"\",\r\n \" aemeathcli # use Shift+Tab inside the TUI to switch into swarm mode\",\r\n ].join(\"\\n\"),\r\n );\r\n\r\n // Register subcommands\r\n program.addCommand(createChatCommand());\r\n program.addCommand(createPlanCommand());\r\n program.addCommand(createReviewCommand());\r\n program.addCommand(createTestCommand());\r\n program.addCommand(createConfigCommand());\r\n program.addCommand(createAuthCommand());\r\n program.addCommand(createLoginCommand());\r\n program.addCommand(createTeamCommand());\r\n program.addCommand(createInstallCommand());\r\n\r\n // Default action (no subcommand)\r\n program.action(async (messageParts: string[], options: Record<string, unknown>) => {\r\n let message = messageParts.join(\" \") || undefined;\r\n\r\n // Support reading initial prompt from file (used by split-panel mode\r\n // where each agent pane is launched with AEMEATHCLI_PROMPT_FILE pointing\r\n // to a temp file containing the agent's task prompt).\r\n let isAgentPane = false;\r\n if (message === undefined) {\r\n const promptFilePath = process.env[\"AEMEATHCLI_PROMPT_FILE\"];\r\n if (promptFilePath !== undefined && promptFilePath.length > 0) {\r\n try {\r\n const { readFileSync } = await import(\"node:fs\");\r\n message = readFileSync(promptFilePath, \"utf-8\").trim();\r\n isAgentPane = true;\r\n } catch {\r\n // Prompt file not found — continue without initial message\r\n }\r\n }\r\n }\r\n\r\n await runChatCommand({\r\n initialMessage: message,\r\n model: options[\"model\"] as string | undefined,\r\n role: options[\"role\"] as string | undefined,\r\n isAgentPane,\r\n streaming: true,\r\n });\r\n });\r\n\r\n // Check for updates (non-blocking, per PRD section 19.3)\r\n if (shouldCheckForUpdates(process.argv.slice(2))) {\r\n checkForUpdates();\r\n }\r\n\r\n // Parse and execute\r\n try {\r\n await program.parseAsync(process.argv);\r\n } catch (error: unknown) {\r\n if (error instanceof Error) {\r\n process.stderr.write(pc.red(`Error: ${error.message}\\n`));\r\n }\r\n process.exitCode = 1;\r\n }\r\n}\r\n\r\nfunction shouldCheckForUpdates(args: readonly string[]): boolean {\r\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\r\n return false;\r\n }\r\n\r\n return !args.some((arg) => [\"--help\", \"-h\", \"--version\", \"-v\"].includes(arg));\r\n}\r\n\r\nfunction checkForUpdates(): void {\r\n // Lazy-load to keep startup fast\r\n import(\"update-notifier\")\r\n .then(({ default: updateNotifier }) => {\r\n const notifier = updateNotifier({\r\n pkg: { name: \"aemeathcli\", version: PACKAGE_VERSION },\r\n updateCheckInterval: 1000 * 60 * 60 * 24, // 24 hours\r\n });\r\n notifier.notify({ isGlobal: true });\r\n })\r\n .catch(() => {\r\n // Silently ignore update check failures\r\n });\r\n}\r\n\r\nmain().catch((error: unknown) => {\r\n process.stderr.write(\r\n pc.red(`Fatal error: ${error instanceof Error ? error.message : String(error)}\\n`),\r\n );\r\n process.exit(1);\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli/chat-runner.ts","../src/cli/commands/chat.ts","../src/cli/commands/plan.ts","../src/cli/commands/review.ts","../src/cli/commands/test.ts","../src/cli/commands/config.ts","../src/cli/commands/auth.ts","../src/cli/commands/install.ts","../src/cli/commands/team.ts","../src/cli/cli.ts"],"names":["Command","ConfigStore","pc","isInteractiveTerminal","randomUUID","createDefaultRegistry","args"],"mappings":";;;;;;;;;;;;;;;;;;;;AAQA,IAAM,WAAA,GAAoC;AAAA,EACxC,UAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA;AAYA,SAAS,qBAAA,GAAiC;AACxC,EAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,IAAS,OAAA,CAAQ,MAAA,CAAO,KAAA;AAC/C;AAEA,SAAS,iBAAiB,OAAA,EAAiD;AACzE,EAAA,MAAM,OAAA,GAAU,SAAS,IAAA,EAAK;AAC9B,EAAA,OAAO,OAAA,IAAW,OAAA,CAAQ,MAAA,GAAS,CAAA,GAAI,OAAA,GAAU,MAAA;AACnD;AAEA,SAAS,UAAU,IAAA,EAAiD;AAClE,EAAA,IAAI,SAAS,MAAA,EAAW;AACtB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAK,WAAA,CAAkC,QAAA,CAAS,IAAI,CAAA,EAAG;AACrD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,MAAM,IAAI,MAAM,CAAA,cAAA,EAAiB,IAAI,mBAAmB,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA,CAAE,CAAA;AAClF;AAEA,eAAe,uBAAA,GAAyC;AACtD,EAAA,MAAM,EAAE,mBAAA,EAAqB,eAAA,EAAgB,GAAI,MAAM,OAAO,yBAAsB,CAAA;AAEpF,EAAA,IAAI,CAAC,iBAAgB,EAAG;AACtB,IAAA,mBAAA,EAAoB;AAAA,EACtB;AACF;AAEA,eAAe,qBAAqB,OAAA,EAA4C;AAC9E,EAAA,MAAM,uBAAA,EAAwB;AAE9B,EAAA,MAAM,EAAE,gBAAA,EAAiB,GAAI,MAAM,OAAO,mBAAc,CAAA;AACxD,EAAA,MAAM,gBAAA,CAAiB;AAAA,IACrB,GAAI,QAAQ,cAAA,KAAmB,MAAA,GAAY,EAAE,cAAA,EAAgB,OAAA,CAAQ,cAAA,EAAe,GAAI,EAAC;AAAA,IACzF,GAAI,QAAQ,KAAA,KAAU,MAAA,GAAY,EAAE,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,GAAI,EAAC;AAAA,IAC9D,GAAI,QAAQ,IAAA,KAAS,MAAA,GAAY,EAAE,IAAA,EAAM,OAAA,CAAQ,IAAA,EAAK,GAAI,EAAC;AAAA,IAC3D,GAAI,QAAQ,YAAA,KAAiB,MAAA,GAAY,EAAE,YAAA,EAAc,OAAA,CAAQ,YAAA,EAAa,GAAI,EAAC;AAAA,IACnF,GAAI,OAAA,CAAQ,WAAA,GAAc,EAAE,WAAA,EAAa,IAAA,KAAS,EAAC;AAAA,IACnD,SAAA,EAAW,QAAQ,SAAA,KAAc;AAAA,GAClC,CAAA;AACH;AAEA,eAAe,YAAA,CAAa,SAA6B,OAAA,EAAgC;AACvF,EAAA,MAAM,MAAA,GAAS,IAAI,WAAA,EAAY,CAAE,UAAA,EAAW;AAC5C,EAAA,MAAM,WAAA,GAAc,kBAAkB,MAAM,CAAA;AAC5C,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,OAAA,CAAQ,IAAI,CAAA;AAEnC,EAAA,IAAI,OAAA,CAAQ,UAAU,MAAA,EAAW;AAC/B,IAAA,WAAA,CAAY,eAAA,CAAgB,QAAQ,KAAK,CAAA;AAAA,EAC3C;AAEA,EAAA,MAAM,UAAA,GAAa,WAAA,CAAY,OAAA,CAAQ,IAAI,CAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,MAAM,qBAAA,EAAsB;AAE7C,EAAA,IAAI,CAAC,QAAA,CAAS,QAAA,CAAS,UAAA,CAAW,OAAO,CAAA,EAAG;AAC1C,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,oCAAA,EAAuC,WAAW,OAAO,CAAA,4EAAA;AAAA,KAC3D;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,QAAA,CAAS,WAAA,CAAY,UAAA,CAAW,OAAO,CAAA;AACxD,EAAA,MAAM,QAAA,GAAoC;AAAA,IACxC;AAAA,MACE,IAAI,UAAA,EAAW;AAAA,MACf,IAAA,EAAM,MAAA;AAAA,MACN,OAAA,EAAS,OAAA;AAAA,MACT,SAAA,sBAAe,IAAA;AAAK;AACtB,GACF;AAEA,EAAA,IAAI,OAAA,CAAQ,cAAc,KAAA,EAAO;AAC/B,IAAA,MAAM,QAAA,GAAW,MAAM,QAAA,CAAS,IAAA,CAAK;AAAA,MACnC,OAAO,UAAA,CAAW,OAAA;AAAA,MAClB,QAAA;AAAA,MACA,GAAI,QAAQ,YAAA,KAAiB,MAAA,GAAY,EAAE,MAAA,EAAQ,OAAA,CAAQ,YAAA,EAAa,GAAI;AAAC,KAC9E,CAAA;AACD,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,QAAA,CAAS,QAAQ,OAAO;AAAA,CAAI,CAAA;AACpD,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,WAAA,GAAc,KAAA;AAElB,EAAA,WAAA,MAAiB,KAAA,IAAS,SAAS,MAAA,CAAO;AAAA,IACxC,OAAO,UAAA,CAAW,OAAA;AAAA,IAClB,QAAA;AAAA,IACA,GAAI,QAAQ,YAAA,KAAiB,MAAA,GAAY,EAAE,MAAA,EAAQ,OAAA,CAAQ,YAAA,EAAa,GAAI;AAAC,GAC9E,CAAA,EAAG;AACF,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,MAAA,IAAU,KAAA,CAAM,OAAA,EAAS;AAC1C,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA;AAClC,MAAA,WAAA,GAAc,IAAA;AACd,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,SAAS,WAAA,EAAa;AAC9B,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,KAAA,CAAM,KAAA,EAAO;AACzC,MAAA,MAAM,IAAI,KAAA,CAAM,KAAA,CAAM,KAAK,CAAA;AAAA,IAC7B;AAAA,EACF;AAEA,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,EAC3B;AACF;AAEA,eAAsB,eAAe,OAAA,EAA4C;AAC/E,EAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,OAAA,CAAQ,cAAc,CAAA;AACvD,EAAA,MAAM,cAAc,qBAAA,EAAsB;AAE1C,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAA,IAAS,WAAA,IAAe,YAAY,MAAA,EAAW;AAC1D,IAAA,MAAM,qBAAqB,OAAO,CAAA;AAClC,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,YAAY,MAAA,EAAW;AACzB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,YAAA,CAAa,SAAS,OAAO,CAAA;AACrC;;;AClJO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,MAAM,IAAA,GAAO,IAAI,OAAA,CAAQ,MAAM,EAC5B,WAAA,CAAY,uCAAuC,CAAA,CACnD,QAAA,CAAS,gBAAgB,yBAAyB,CAAA,CAClD,MAAA,CAAO,qBAAA,EAAuB,iCAAiC,CAAA,CAC/D,MAAA,CAAO,mBAAA,EAAqB,+DAA+D,EAC3F,MAAA,CAAO,mBAAA,EAAqB,sBAAsB,CAAA,CAClD,OAAO,SAAA,EAAW,kCAAkC,CAAA,CACpD,MAAA,CAAO,eAAe,0BAA0B,CAAA,CAChD,MAAA,CAAO,OAAO,cAAwB,OAAA,KAAqC;AAC1E,IAAA,MAAM,cAAA,CAAe;AAAA,MACnB,cAAA,EAAgB,YAAA,CAAa,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAAA,MAC1C,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,MACtB,IAAA,EAAM,QAAQ,MAAM,CAAA;AAAA,MACpB,YAAA,EAAc,QAAQ,QAAQ,CAAA;AAAA,MAC9B,SAAA,EAAW,OAAA,CAAQ,QAAQ,CAAA,KAAM,KAAA;AAAA,MACjC,KAAA,EAAO,OAAA,CAAQ,OAAO,CAAA,KAAM;AAAA,KAC7B,CAAA;AAAA,EACH,CAAC,CAAA;AAEH,EAAA,OAAO,IAAA;AACT;ACrBO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,MAAM,IAAA,GAAO,IAAIA,OAAAA,CAAQ,MAAM,EAC5B,WAAA,CAAY,iDAAiD,CAAA,CAC7D,QAAA,CAAS,cAAA,EAAgB,iBAAiB,EAC1C,MAAA,CAAO,qBAAA,EAAuB,yCAAyC,CAAA,CACvE,MAAA,CAAO,SAAA,EAAW,kCAAkC,CAAA,CACpD,MAAA,CAAO,OAAO,YAAA,EAAwB,OAAA,KAAqC;AAC1E,IAAA,MAAM,cAAA,CAAe;AAAA,MACnB,cAAA,EAAgB,YAAA,CAAa,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAAA,MAC1C,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,MACtB,IAAA,EAAM,UAAA;AAAA,MACN,SAAA,EAAW,IAAA;AAAA,MACX,KAAA,EAAO,OAAA,CAAQ,OAAO,CAAA,KAAM;AAAA,KAC7B,CAAA;AAAA,EACH,CAAC,CAAA;AAEH,EAAA,OAAO,IAAA;AACT;ACjBO,SAAS,mBAAA,GAA+B;AAC7C,EAAA,MAAM,MAAA,GAAS,IAAIA,OAAAA,CAAQ,QAAQ,EAChC,WAAA,CAAY,wCAAwC,CAAA,CACpD,QAAA,CAAS,YAAA,EAAc,iBAAiB,EACxC,MAAA,CAAO,qBAAA,EAAuB,uCAAuC,CAAA,CACrE,MAAA,CAAO,SAAA,EAAW,kCAAkC,CAAA,CACpD,MAAA,CAAO,OAAO,KAAA,EAAiB,OAAA,KAAqC;AACnE,IAAA,MAAM,OAAA,GAAU,MAAM,MAAA,GAAS,CAAA,GAC3B,uBAAuB,KAAA,CAAM,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,GACvC,2BAAA;AACJ,IAAA,MAAM,cAAA,CAAe;AAAA,MACnB,cAAA,EAAgB,OAAA;AAAA,MAChB,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,MACtB,IAAA,EAAM,QAAA;AAAA,MACN,SAAA,EAAW,IAAA;AAAA,MACX,KAAA,EAAO,OAAA,CAAQ,OAAO,CAAA,KAAM;AAAA,KAC7B,CAAA;AAAA,EACH,CAAC,CAAA;AAEH,EAAA,OAAO,MAAA;AACT;ACpBO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,MAAM,IAAA,GAAO,IAAIA,OAAAA,CAAQ,MAAM,EAC5B,WAAA,CAAY,0CAA0C,CAAA,CACtD,QAAA,CAAS,cAAA,EAAgB,gBAAgB,EACzC,MAAA,CAAO,qBAAA,EAAuB,wCAAwC,CAAA,CACtE,MAAA,CAAO,SAAA,EAAW,kCAAkC,CAAA,CACpD,MAAA,CAAO,OAAO,YAAA,EAAwB,OAAA,KAAqC;AAC1E,IAAA,MAAM,cAAA,CAAe;AAAA,MACnB,cAAA,EAAgB,YAAA,CAAa,IAAA,CAAK,GAAG,CAAA,IAAK,uCAAA;AAAA,MAC1C,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,MACtB,IAAA,EAAM,SAAA;AAAA,MACN,SAAA,EAAW,IAAA;AAAA,MACX,KAAA,EAAO,OAAA,CAAQ,OAAO,CAAA,KAAM;AAAA,KAC7B,CAAA;AAAA,EACH,CAAC,CAAA;AAEH,EAAA,OAAO,IAAA;AACT;ACjBO,SAAS,mBAAA,GAA+B;AAC7C,EAAA,MAAM,SAAS,IAAIA,OAAAA,CAAQ,QAAQ,CAAA,CAChC,YAAY,0BAA0B,CAAA;AAEzC,EAAA,MAAA,CACG,OAAA,CAAQ,WAAW,CAAA,CACnB,WAAA,CAAY,4CAA4C,CAAA,CACxD,MAAA,CAAO,OAAO,GAAA,KAA4B;AACzC,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,WAAA,EAAAC,YAAAA,EAAY,GAAI,MAAM,OAAO,4BAA+B,CAAA;AACpE,MAAA,MAAM,KAAA,GAAQ,IAAIA,YAAAA,EAAY;AAC9B,MAAA,MAAM,GAAA,GAAM,MAAM,UAAA,EAAW;AAE7B,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,GAAA,EAAK,GAAG,CAAA;AACrC,QAAA,IAAI,UAAU,KAAA,CAAA,EAAW;AACvB,UAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMC,GAAA,CAAG,GAAA,CAAI,gCAAgC,GAAG;AAAA,CAAI,CAAC,CAAA;AACpE,UAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,UAAA;AAAA,QACF;AACA,QAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,GAAA,EAAM,KAAK,SAAA,CAAU,KAAA,EAAO,IAAA,EAAM,CAAC,CAAC;AAAA,CAAI,CAAA;AAAA,MACrE,CAAA,MAAO;AACL,QAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,IAAA,CAAK,SAAA,CAAU,KAAK,IAAA,EAAM,CAAC,IAAI,IAAI,CAAA;AAAA,MAC1D;AAAA,IACF,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAA,CAAG,GAAA,CAAI,0BAA0B,OAAO;AAAA,CAAI,CAAC,CAAA;AAClE,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,MAAA,CACG,OAAA,CAAQ,mBAAmB,CAAA,CAC3B,WAAA,CAAY,2BAA2B,CAAA,CACvC,MAAA,CAAO,OAAO,GAAA,EAAa,KAAA,KAAkB;AAC5C,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,WAAA,EAAAD,YAAAA,EAAY,GAAI,MAAM,OAAO,4BAA+B,CAAA;AACpE,MAAA,MAAM,KAAA,GAAQ,IAAIA,YAAAA,EAAY;AAC9B,MAAA,MAAM,GAAA,GAAM,MAAM,UAAA,EAAW;AAE7B,MAAA,IAAI,WAAA;AACJ,MAAA,IAAI;AACF,QAAA,WAAA,GAAc,IAAA,CAAK,MAAM,KAAK,CAAA;AAAA,MAChC,CAAA,CAAA,MAAQ;AACN,QAAA,WAAA,GAAc,KAAA;AAAA,MAChB;AAEA,MAAA,cAAA,CAAe,GAAA,EAA2C,KAAK,WAAW,CAAA;AAC1E,MAAA,KAAA,CAAM,WAAW,GAAG,CAAA;AACpB,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMC,GAAA,CAAG,KAAA,CAAM,CAAA,IAAA,EAAO,GAAG,CAAA,GAAA,EAAM,IAAA,CAAK,SAAA,CAAU,WAAW,CAAC;AAAA,CAAI,CAAC,CAAA;AAAA,IAChF,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAA,CAAG,GAAA,CAAI,yBAAyB,OAAO;AAAA,CAAI,CAAC,CAAA;AACjE,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,MAAA,CACG,QAAQ,MAAM,CAAA,CACd,WAAA,CAAY,iDAAiD,EAC7D,MAAA,CAAO,YAAA,EAAc,yDAAyD,CAAA,CAC9E,OAAO,SAAA,EAAW,gDAAgD,CAAA,CAClE,MAAA,CAAO,OAAO,OAAA,KAAqD;AAClE,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,gBAAA,EAAiB,GAAI,MAAM,OAAO,yBAAuB,CAAA;AACjE,MAAA,MAAM,gBAAA,CAAiB;AAAA,QACrB,GAAI,QAAQ,QAAA,KAAa,KAAA,CAAA,GAAY,EAAE,QAAA,EAAU,OAAA,CAAQ,QAAA,EAAS,GAAI,EAAC;AAAA,QACvE,GAAI,QAAQ,KAAA,KAAU,KAAA,CAAA,GAAY,EAAE,KAAA,EAAO,OAAA,CAAQ,KAAA,EAAM,GAAI;AAAC,OAC/D,CAAA;AAAA,IACH,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAA,CAAG,GAAA,CAAI,iBAAiB,OAAO;AAAA,CAAI,CAAC,CAAA;AACzD,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,MAAA,CACG,QAAQ,MAAM,CAAA,CACd,YAAY,2CAA2C,CAAA,CACvD,OAAO,YAAY;AAClB,IAAA,MAAM,EAAE,aAAA,EAAc,GAAI,MAAM,OAAO,4BAA6B,CAAA;AACpE,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,aAAA,EAAe;AAAA,CAAI,CAAA;AAAA,EAC7C,CAAC,CAAA;AAEH,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,cAAA,CAAe,KAAc,IAAA,EAAuB;AAC3D,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC3B,EAAA,IAAI,OAAA,GAAmB,GAAA;AACvB,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,IAAI,YAAY,IAAA,IAAQ,OAAA,KAAY,MAAA,IAAa,OAAO,YAAY,QAAA,EAAU;AAC5E,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAA,GAAW,QAAoC,GAAG,CAAA;AAAA,EACpD;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,cAAA,CAAe,GAAA,EAA8B,IAAA,EAAc,KAAA,EAAsB;AACxF,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,GAAG,CAAA;AAC3B,EAAA,IAAI,OAAA,GAAmC,GAAA;AACvC,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,GAAS,GAAG,CAAA,EAAA,EAAK;AACxC,IAAA,MAAM,GAAA,GAAM,KAAK,CAAC,CAAA;AAClB,IAAA,IAAI,CAAC,GAAA,EAAK;AACV,IAAA,IAAI,OAAO,QAAQ,GAAG,CAAA,KAAM,YAAY,OAAA,CAAQ,GAAG,MAAM,IAAA,EAAM;AAC7D,MAAA,OAAA,CAAQ,GAAG,IAAI,EAAC;AAAA,IAClB;AACA,IAAA,OAAA,GAAU,QAAQ,GAAG,CAAA;AAAA,EACvB;AACA,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AACpC,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,OAAA,CAAQ,OAAO,CAAA,GAAI,KAAA;AAAA,EACrB;AACF;AC3GA,IAAM,eAAA,GAAkB,eAAA;AAExB,SAAS,gBAAgB,KAAA,EAAuC;AAC9D,EAAA,OAAQ,eAAA,CAAsC,SAAS,KAAK,CAAA;AAC9D;AAEA,SAASC,sBAAAA,GAAiC;AACxC,EAAA,OAAO,OAAA,CAAQ,KAAA,CAAM,KAAA,IAAS,OAAA,CAAQ,MAAA,CAAO,KAAA;AAC/C;AAEA,SAAS,qBAAA,GAAgC;AACvC,EAAA,OAAO,eAAA,CAAgB,KAAK,IAAI,CAAA;AAClC;AAEA,eAAe,iBAAA,GAA4C;AACzD,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,MAAM,OAAO,mBAAmB,CAAA;AACnD,EAAA,OAAO,MAAA,CAAsB;AAAA,IAC3B,OAAA,EAAS,iCAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,EAAE,IAAA,EAAM,qBAAA,EAAuB,KAAA,EAAO,QAAA,EAAS;AAAA,MAC/C,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,OAAA,EAAQ;AAAA,MAC3C,EAAE,IAAA,EAAM,kBAAA,EAAoB,KAAA,EAAO,QAAA,EAAS;AAAA,MAC5C,EAAE,IAAA,EAAM,oBAAA,EAAsB,KAAA,EAAO,MAAA;AAAO;AAC9C,GACD,CAAA;AACH;AAEA,eAAe,mBAAA,GAAuC;AACpD,EAAA,MAAM,SAAmB,EAAC;AAC1B,EAAA,WAAA,MAAiB,KAAA,IAAS,QAAQ,KAAA,EAAO;AACvC,IAAA,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EAC3B;AACA,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,EAAE,CAAA,CAAE,IAAA,EAAK;AAC9B;AAEA,eAAe,qBAAqB,WAAA,EAAqE;AACvG,EAAA,IAAI,gBAAgB,MAAA,EAAW;AAC7B,IAAA,IAAI,CAAC,eAAA,CAAgB,WAAW,CAAA,EAAG;AACjC,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACbD,IAAG,GAAA,CAAI,CAAA,mBAAA,EAAsB,WAAW,CAAA,UAAA,EAAa,uBAAuB;AAAA,CAAI;AAAA,OAClF;AACA,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO,WAAA;AAAA,EACT;AAEA,EAAA,IAAI,CAACC,wBAAsB,EAAG;AAC5B,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACbD,GAAAA,CAAG,GAAA;AAAA,QACD;AAAA;AACF,KACF;AACA,IAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO,iBAAA,EAAkB;AAC3B;AAEA,eAAe,aAAa,QAAA,EAAwC;AAClE,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,IAAA,CAAK,iBAAiB,QAAQ,CAAA;AAAA,CAAO,CAAC,CAAA;AAE9D,EAAA,MAAM,WAAA,GAAc,MAAM,eAAA,CAAgB,QAAQ,CAAA;AAClD,EAAA,MAAM,YAAY,KAAA,EAAM;AACxB,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,KAAA,CAAM,6BAA6B,QAAQ;AAAA,CAAI,CAAC,CAAA;AAC1E;AAEA,IAAM,qBAAA,GAAoG;AAAA,EACxG,MAAA,EAAQ,EAAE,QAAA,EAAU,WAAA,EAAa,OAAO,mBAAA,EAAoB;AAAA,EAC5D,KAAA,EAAO,EAAE,QAAA,EAAU,QAAA,EAAU,OAAO,SAAA,EAAU;AAAA,EAC9C,MAAA,EAAQ,EAAE,QAAA,EAAU,QAAA,EAAU,OAAO,gBAAA,EAAiB;AAAA,EACtD,IAAA,EAAM,EAAE,QAAA,EAAU,MAAA,EAAQ,OAAO,iBAAA;AACnC,CAAA;AAOO,SAAS,kBAAA,GAA8B;AAC5C,EAAA,OAAO,IAAIF,OAAAA,CAAQ,OAAO,CAAA,CACvB,WAAA,CAAY,oCAAoC,CAAA,CAChD,QAAA,CAAS,YAAA,EAAc,qDAAqD,CAAA,CAC5E,MAAA,CAAO,OAAO,WAAA,KAAoC;AACjD,IAAA,MAAM,QAAA,GAAW,MAAM,oBAAA,CAAqB,WAAW,CAAA;AACvD,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,aAAa,QAAQ,CAAA;AAAA,IAC7B,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAME,GAAAA,CAAG,GAAA,CAAI,iBAAiB,OAAO;AAAA,CAAI,CAAC,CAAA;AACzD,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AACL;AAEO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,MAAM,OAAO,IAAIF,OAAAA,CAAQ,MAAM,CAAA,CAC5B,YAAY,qCAAqC,CAAA;AAEpD,EAAA,IAAA,CACG,OAAA,CAAQ,kBAAkB,CAAA,CAC1B,WAAA,CAAY,oDAAoD,CAAA,CAChE,MAAA,CAAO,OAAO,WAAA,KAAoC;AACjD,IAAA,MAAM,QAAA,GAAW,MAAM,oBAAA,CAAqB,WAAW,CAAA;AACvD,IAAA,IAAI,aAAa,MAAA,EAAW;AAC1B,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,aAAa,QAAQ,CAAA;AAAA,IAC7B,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAME,GAAAA,CAAG,GAAA,CAAI,iBAAiB,OAAO;AAAA,CAAI,CAAC,CAAA;AACzD,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,IAAA,CACG,OAAA,CAAQ,mBAAmB,CAAA,CAC3B,WAAA,CAAY,2CAA2C,CAAA,CACvD,MAAA,CAAO,OAAA,EAAS,0BAA0B,CAAA,CAC1C,MAAA,CAAO,OAAO,UAA8B,OAAA,KAA+B;AAC1E,IAAA,IAAI,QAAQ,GAAA,EAAK;AACf,MAAA,KAAA,MAAW,KAAK,eAAA,EAAiB;AAC/B,QAAA,IAAI;AACF,UAAA,MAAM,WAAA,GAAc,MAAM,eAAA,CAAgB,CAAC,CAAA;AAC3C,UAAA,MAAM,YAAY,MAAA,EAAO;AACzB,UAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,KAAA,CAAM,iBAAiB,CAAC;AAAA,CAAI,CAAC,CAAA;AAAA,QACvD,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACF;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,CAAC,QAAA,IAAY,CAAC,eAAA,CAAgB,QAAQ,CAAA,EAAG;AAC3C,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACbA,IAAG,GAAA,CAAI,CAAA,wCAAA,EAA2C,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAC;AAAA,CAAI;AAAA,OAClF;AACA,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,WAAA,GAAc,MAAM,eAAA,CAAgB,QAAQ,CAAA;AAClD,MAAA,MAAM,YAAY,MAAA,EAAO;AACzB,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,KAAA,CAAM,iBAAiB,QAAQ;AAAA,CAAI,CAAC,CAAA;AAAA,IAC9D,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,GAAA,CAAI,kBAAkB,OAAO;AAAA,CAAI,CAAC,CAAA;AAC1D,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,IAAA,CACG,OAAA,CAAQ,QAAQ,CAAA,CAChB,WAAA,CAAY,qCAAqC,CAAA,CACjD,MAAA,CAAO,QAAA,EAAU,8BAA8B,CAAA,CAC/C,MAAA,CAAO,OAAO,OAAA,KAAgC;AAC7C,IAAA,MAAM,OAAA,GAAU,MAAM,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAgB,GAAA,CAAI,OAAO,QAAA,KAAa,mBAAA,CAAoB,QAAQ,CAAC,CAAC,CAAA;AAExG,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,SAAA,CAAU,EAAE,SAAA,EAAW,OAAA,EAAQ,EAAG,IAAA,EAAM,CAAC,CAAC;AAAA,CAAI,CAAA;AAC3E,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,MAAA,MAAM,IAAA,GAAO,6BAA6B,MAAM,CAAA;AAChD,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,MAAA,CAAO,QAAA,GAAWA,GAAAA,CAAG,KAAA,CAAM,IAAI,CAAA,GAAIA,GAAAA,CAAG,GAAA,CAAI,IAAI,CAAC;AAAA,CAAI,CAAA;AAAA,IAC7E;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,IAAA,CACG,OAAA,CAAQ,0BAA0B,CAAA,CAClC,WAAA,CAAY,0DAA0D,CAAA,CACtE,MAAA,CAAO,SAAA,EAAW,6BAA6B,CAAA,CAC/C,MAAA,CAAO,OAAO,QAAA,EAAkB,KAAyB,OAAA,KAAiC;AACzF,IAAA,IAAI,CAAC,eAAA,CAAgB,QAAQ,KAAK,QAAA,KAAa,QAAA,IAAY,aAAa,QAAA,EAAU;AAChF,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,GAAA,CAAI,sBAAsB,QAAQ,CAAA;AAAA,CAAK,CAAC,CAAA;AAChE,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,KAAA,GAAQ,MAAM,qBAAoB,GAAI,GAAA;AAClE,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACbA,GAAAA,CAAG,IAAI,8EAA8E;AAAA,OACvF;AACA,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,cAAA,EAAe,GAAI,MAAM,OAAO,gCAAgC,CAAA;AACxE,MAAA,MAAM,QAAA,GAAW,IAAI,cAAA,EAAe;AACpC,MAAA,MAAM,WAAA,GAA4C;AAAA,QAChD,MAAA,EAAQ,WAAA;AAAA,QACR,MAAA,EAAQ,QAAA;AAAA,QACR,KAAA,EAAO,QAAA;AAAA,QACP,MAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAQ,QAAA;AAAA,QACR,IAAA,EAAM;AAAA,OACR;AACA,MAAA,MAAM,cAAA,GAAiB,YAAY,QAAQ,CAAA;AAC3C,MAAA,IAAI,cAAA,EAAgB;AAClB,QAAA,MAAM,QAAA,CAAS,MAAA,CAAO,cAAA,EAAgB,WAAW,CAAA;AACjD,QAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,KAAA,CAAM,mBAAmB,QAAQ;AAAA,CAAI,CAAC,CAAA;AAAA,MAChE;AAAA,IACF,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,GAAA,CAAI,sBAAsB,OAAO;AAAA,CAAI,CAAC,CAAA;AAC9D,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,IAAA,CACG,OAAA,CAAQ,mBAAmB,CAAA,CAC3B,WAAA,CAAY,+BAA+B,CAAA,CAC3C,MAAA,CAAO,OAAO,QAAA,KAAqB;AAClC,IAAA,IAAI,CAAC,eAAA,CAAgB,QAAQ,CAAA,EAAG;AAC9B,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACbA,GAAAA,CAAG,IAAI,CAAA,mBAAA,EAAsB,QAAQ,aAAa,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAC;AAAA,CAAI;AAAA,OAClF;AACA,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AACnB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,GAAS,sBAAsB,QAAQ,CAAA;AAC7C,MAAA,MAAM,EAAE,WAAA,EAAAD,YAAAA,EAAY,GAAI,MAAM,OAAO,4BAA+B,CAAA;AACpE,MAAA,MAAM,KAAA,GAAQ,IAAIA,YAAAA,EAAY;AAC9B,MAAA,MAAM,GAAA,GAAM,MAAM,UAAA,EAAW;AAE7B,MAAA,MAAM,UAAA,GAAa;AAAA,QACjB,GAAG,GAAA;AAAA,QACH,cAAc,MAAA,CAAO,KAAA;AAAA,QACrB,SAAA,EAAW;AAAA,UACT,GAAG,GAAA,CAAI,SAAA;AAAA,UACP,CAAC,MAAA,CAAO,QAAQ,GAAG;AAAA,YACjB,GAAI,GAAA,CAAI,SAAA,CAAU,MAAA,CAAO,QAAQ,KAAK,EAAC;AAAA,YACvC,OAAA,EAAS;AAAA;AACX;AACF,OACF;AAEA,MAAA,KAAA,CAAM,WAAW,UAAU,CAAA;AAC3B,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACbC,IAAG,KAAA,CAAM,CAAA,6BAAA,EAAgC,QAAQ,CAAA,SAAA,EAAY,OAAO,KAAK,CAAA;AAAA,CAAK;AAAA,OAChF;AAAA,IACF,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAMA,GAAAA,CAAG,GAAA,CAAI,8BAA8B,OAAO;AAAA,CAAI,CAAC,CAAA;AACtE,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AAEH,EAAA,OAAO,IAAA;AACT;AAQA,eAAe,gBAAgB,QAAA,EAAgD;AAC7E,EAAA,QAAQ,QAAA;AAAU,IAChB,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,GAAA,GAAM,MAAM,OAAO,4BAAsC,CAAA;AAC/D,MAAA,OAAO,IAAI,IAAI,WAAA,EAAY;AAAA,IAC7B;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,MAAM,GAAA,GAAM,MAAM,OAAO,2BAAqC,CAAA;AAC9D,MAAA,OAAO,IAAI,IAAI,UAAA,EAAW;AAAA,IAC5B;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,MAAM,GAAA,GAAM,MAAM,OAAO,4BAAsC,CAAA;AAC/D,MAAA,OAAO,IAAI,IAAI,WAAA,EAAY;AAAA,IAC7B;AAAA,IACA,KAAK,MAAA,EAAQ;AACX,MAAA,MAAM,GAAA,GAAM,MAAM,OAAO,0BAAoC,CAAA;AAC7D,MAAA,OAAO,IAAI,IAAI,SAAA,EAAU;AAAA,IAC3B;AAAA;AAEJ;AClSO,SAAS,oBAAA,GAAgC;AAC9C,EAAA,OAAO,IAAIF,OAAAA,CAAQ,SAAS,CAAA,CACzB,WAAA,CAAY,6CAA6C,CAAA,CACzD,QAAA,CAAS,UAAA,EAAY,iCAAiC,CAAA,CACtD,MAAA,CAAO,OAAO,MAAA,KAAmB;AAChC,IAAA,IAAI;AACF,MAAA,MAAM,EAAE,aAAA,EAAc,GAAI,MAAM,OAAO,8BAA+C,CAAA;AACtF,MAAA,MAAM,MAAA,GAAS,IAAI,aAAA,EAAc;AACjC,MAAA,MAAM,IAAA,GAAO,MAAM,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA;AACxC,MAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAGE,GAAAA,CAAG,MAAM,CAAA,SAAA,EAAY,IAAI,2BAA2B,CAAC;AAAA,CAAI,CAAA;AACjF,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACb,CAAA,EAAGA,GAAAA,CAAG,GAAA,CAAI,oGAAoG,CAAC;AAAA;AAAA,OACjH;AAAA,IACF,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,MAAM,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACjE,MAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,EAAGA,GAAAA,CAAG,IAAI,CAAA,gBAAA,EAAmB,GAAG,EAAE,CAAC;AAAA,CAAI,CAAA;AAC5D,MAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,IACrB;AAAA,EACF,CAAC,CAAA;AACL;AC7BO,SAAS,iBAAA,GAA6B;AAC3C,EAAA,OAAO,IAAIF,OAAAA,CAAQ,MAAM,CAAA,CACtB,WAAA,CAAY,uBAAuB,CAAA,CACnC,QAAA,CAAS,aAAA,EAAe,uBAAuB,CAAA,CAC/C,MAAA,CAAO,CAAC,UAAA,KAAyB;AAChC,IAAA,MAAM,SAAA,GAAY,WAAW,MAAA,GAAS,CAAA,GAAI,QAAQ,UAAA,CAAW,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA,GAAK,MAAA;AAC3E,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACbE,GAAAA,CAAG,MAAA;AAAA,QACD,mBAAmB,SAAS,CAAA;AAAA;AAAA;AAAA;AAE9B,KACF;AACA,IAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,EACrB,CAAC,CAAA;AACL;;;ACSA,SAAS,YAAA,CAAa,MAAyB,IAAA,EAAkC;AAC/E,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AAC/B,EAAA,IAAI,UAAU,EAAA,EAAI;AAChB,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,GAAQ,CAAC,CAAA;AAC5B,EAAA,OAAO,SAAS,CAAC,KAAA,CAAM,UAAA,CAAW,GAAG,IAAI,KAAA,GAAQ,MAAA;AACnD;AAEA,SAAS,aAAa,KAAA,EAAsC;AAC1D,EAAA,IAAI,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,IAAA,EAAM;AAC/C,IAAA,OAAO,KAAA;AAAA,EACT;AACA,EAAA,MAAM,MAAA,GAAS,KAAA;AACf,EAAA,OAAO,OAAO,SAAS,CAAA,KAAM,SAAS,OAAO,MAAA,CAAO,QAAQ,CAAA,KAAM,QAAA;AACpE;AAEA,SAAS,YAAA,CAAa,QAA+B,MAAA,EAAuC;AAC1F,EAAA,IAAI,OAAO,OAAA,CAAQ,IAAA,KAAS,UAAA,EAAY;AACtC,IAAA,MAAM,OAAA,GAAuB;AAAA,MAC3B,OAAA,EAAS,KAAA;AAAA,MACT,MAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AAAA,EACtB;AACF;AAEA,SAAS,iBAAiB,KAAA,EAAoD;AAC5E,EAAA,OAAO,KAAA,KAAU,QAAA,IAAY,KAAA,KAAU,UAAA,IAAc,KAAA,KAAU,YAAA;AACjE;AAEA,SAAS,oBAAoB,KAAA,EAAiD;AAC5E,EAAA,IAAI,CAAC,KAAA,EAAO;AACV,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAkB,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA;AACxC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,IAAK,MAAA,CAAO,KAAA,CAAM,CAAC,IAAA,KAAS,OAAO,IAAA,KAAS,QAAQ,CAAA,EAAG;AAC7E,MAAA,OAAO,CAAC,GAAG,MAAM,CAAA;AAAA,IACnB;AAAA,EACF,CAAA,CAAA,MAAQ;AAAA,EAER;AAEA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mBAAA,GAA6C;AACpD,EAAA,MAAM,cAAc,OAAA,CAAQ,GAAA,CAAI,8BAA8B,CAAA,IAAK,QAAQ,GAAA,EAAI;AAC/E,EAAA,MAAM,gBAAA,GACJ,OAAA,CAAQ,GAAA,CAAI,mCAAmC,CAAA,IAAK,WAAA;AACtD,EAAA,MAAM,YAAA,GACJ,oBAAoB,OAAA,CAAQ,GAAA,CAAI,+BAA+B,CAAC,CAAA,IAAK,CAAC,WAAW,CAAA;AACnF,EAAA,MAAM,kBACJ,mBAAA,CAAoB,OAAA,CAAQ,IAAI,kCAAkC,CAAC,KAAK,EAAC;AAC3E,EAAA,MAAM,cAAA,GAAiB,gBAAA,CAAiB,OAAA,CAAQ,GAAA,CAAI,iCAAiC,CAAC,CAAA,GAClF,OAAA,CAAQ,GAAA,CAAI,iCAAiC,CAAA,GAC7C,UAAA;AAEJ,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,gBAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,eAAe,kBAAkB,IAAA,EAA2C;AAC1E,EAAA,IAAI,CAAC,KAAK,QAAA,CAAS,SAAS,KAAK,OAAA,CAAQ,GAAA,CAAI,uBAAuB,CAAA,KAAM,GAAA,EAAK;AAC7E,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,MAAM,QAAA,GAAW,aAAa,IAAA,EAAM,QAAQ,KAAK,OAAA,CAAQ,GAAA,CAAI,sBAAsB,CAAA,IAAK,cAAA;AACxF,EAAA,MAAM,SAAA,GAAY,aAAa,IAAA,EAAM,QAAQ,KAAK,OAAA,CAAQ,GAAA,CAAI,uBAAuB,CAAA,IAAK,OAAA;AAC1F,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,EAAM,SAAS,CAAA,IAAK,mBAAA;AAC/C,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,IAAA,EAAM,QAAQ,CAAA,IAAK,QAAA;AAC7C,EAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,GAAA,CAAI,qBAAqB,KAAKE,UAAAA,EAAW;AACjE,EAAA,MAAM,cAAc,mBAAA,EAAoB;AAGxC,EAAA,IAAI,eAAA;AAEJ,EAAA,SAAS,WAAA,GAAyC;AAChD,IAAA,IAAI,CAAC,eAAA,EAAiB;AACpB,MAAA,eAAA,GAAkB,OAAO,wBAA0B,CAAA,CAAE,IAAA;AAAA,QACnD,CAAC,EAAE,qBAAA,EAAAC,sBAAAA,OAA4BA,sBAAAA,CAAsB,EAAE,SAAA,EAAW,IAAA,EAAM;AAAA,OAC1E;AAAA,IACF;AACA,IAAA,OAAO,eAAA;AAAA,EACT;AAGA,EAAA,IAAI,mBAAA;AAEJ,EAAA,SAAS,eAAA,GAAyC;AAChD,IAAA,IAAI,CAAC,mBAAA,EAAqB;AACxB,MAAA,mBAAA,GAAsB,OAAO,qBAAmB,CAAA,CAAE,IAAA;AAAA,QAChD,CAAC,EAAE,qBAAA,EAAuB,aAAA,EAAc,KACtC,cAAc,WAAW;AAAA,OAC7B;AAAA,IACF;AACA,IAAA,OAAO,mBAAA;AAAA,EACT;AAGA,EAAA,SAAS,kBAAA,CAAmB,MAAcC,KAAAA,EAAuC;AAC/E,IAAA,QAAQ,IAAA;AAAM,MACZ,KAAK,MAAA;AAAA,MACL,KAAK,OAAA;AAAA,MACL,KAAK,MAAA;AACH,QAAA,OAAO,OAAOA,KAAAA,CAAK,WAAW,MAAM,QAAA,GAAWA,KAAAA,CAAK,WAAW,CAAA,GAAI,EAAA;AAAA,MACrE,KAAK,MAAA;AACH,QAAA,OAAO,OAAOA,KAAAA,CAAK,SAAS,MAAM,QAAA,GAAWA,KAAAA,CAAK,SAAS,CAAA,GAAI,EAAA;AAAA,MACjE,KAAK,MAAA,EAAQ;AACX,QAAA,MAAM,GAAA,GAAM,OAAOA,KAAAA,CAAK,SAAS,MAAM,QAAA,GAAWA,KAAAA,CAAK,SAAS,CAAA,GAAI,EAAA;AACpE,QAAA,MAAM,GAAA,GAAM,OAAOA,KAAAA,CAAK,MAAM,CAAA,KAAM,WAAW,CAAA,IAAA,EAAOA,KAAAA,CAAK,MAAM,CAAC,CAAA,CAAA,GAAK,EAAA;AACvE,QAAA,OAAO,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,MACvB;AAAA,MACA,KAAK,MAAA,EAAQ;AACX,QAAA,MAAM,GAAA,GAAM,OAAOA,KAAAA,CAAK,SAAS,MAAM,QAAA,GAAWA,KAAAA,CAAK,SAAS,CAAA,GAAI,EAAA;AACpE,QAAA,OAAO,GAAA,CAAI,SAAS,EAAA,GAAK,GAAA,CAAI,MAAM,CAAA,EAAG,EAAE,IAAI,KAAA,GAAQ,GAAA;AAAA,MACtD;AAAA,MACA;AACE,QAAA,OAAO,KAAK,SAAA,CAAUA,KAAI,CAAA,CAAE,KAAA,CAAM,GAAG,EAAE,CAAA;AAAA;AAC3C,EACF;AAGA,EAAA,SAAS,mBAAA,CAAoB,IAAA,EAAc,OAAA,EAAiB,OAAA,EAA0B;AACpF,IAAA,IAAI,SAAS,OAAO,CAAA,OAAA,EAAU,QAAQ,KAAA,CAAM,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AACnD,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA;AAClC,IAAA,QAAQ,IAAA;AAAM,MACZ,KAAK,MAAA;AAAQ,QAAA,OAAO,GAAG,KAAK,CAAA,MAAA,CAAA;AAAA,MAC5B,KAAK,MAAA;AAAQ,QAAA,OAAO,OAAA,KAAY,gBAAA,GAAmB,UAAA,GAAa,CAAA,EAAG,KAAK,CAAA,MAAA,CAAA;AAAA,MACxE,KAAK,MAAA;AAAQ,QAAA,OAAO,OAAA,KAAY,mBAAA,GAAsB,YAAA,GAAe,CAAA,EAAG,KAAK,CAAA,MAAA,CAAA;AAAA,MAC7E,KAAK,OAAA;AAAA,MACL,KAAK,MAAA;AAAQ,QAAA,OAAO,QAAQ,MAAA,GAAS,EAAA,GAAK,QAAQ,KAAA,CAAM,CAAA,EAAG,EAAE,CAAA,GAAI,OAAA;AAAA,MACjE;AAAS,QAAA,OAAO,OAAA,CAAQ,SAAS,EAAA,GAAK,OAAA,CAAQ,MAAM,CAAA,EAAG,EAAE,IAAI,KAAA,GAAQ,OAAA;AAAA;AACvE,EACF;AAEA,EAAA,MAAM,mBAAA,GAAsB,EAAA;AAC5B,EAAA,MAAM,sBAAA,GAAyB,GAAA;AAE/B,EAAA,eAAe,WAAA,CAAY,QAAgB,MAAA,EAA+B;AACxE,IAAA,YAAA,CAAa,oBAAoB,EAAE,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,eAAe,CAAA;AAC3E,IAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,MAChC,OAAA;AAAA,MAAS,MAAA;AAAA,MAAQ,KAAA;AAAA,MACjB,OAAA,EAAS,6BAA6B,KAAK,CAAA;AAAA;AAAA,KAC5C,CAAA;AAED,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,GAAW,MAAM,WAAA,EAAY;AAEnC,MAAA,IAAI,CAAC,QAAA,CAAS,QAAA,CAAS,KAAK,CAAA,EAAG;AAC7B,QAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,UAChC,OAAA;AAAA,UAAS,MAAA;AAAA,UAAQ,KAAA;AAAA,UACjB,OAAA,EAAS;AAAA,wCAAA,EAA6C,KAAK,CAAA;AAAA;AAAA,SAC5D,CAAA;AACD,QAAA,YAAA,CAAa,oBAAoB,EAAE,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,aAAa,CAAA;AACzE,QAAA;AAAA,MACF;AAEA,MAAA,MAAM,QAAA,GAAW,QAAA,CAAS,WAAA,CAAY,KAAK,CAAA;AAC3C,MAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,QAChC,OAAA;AAAA,QAAS,MAAA;AAAA,QAAQ,KAAA;AAAA,QACjB,OAAA,EAAS,CAAA,gBAAA,EAAmB,QAAA,CAAS,IAAI,CAAA;AAAA;AAAA,OAC1C,CAAA;AACD,MAAA,MAAM,YAAA,GAAe,MAAM,eAAA,EAAgB;AAC3C,MAAA,MAAM,QAAA,GAAW,aAAa,cAAA,EAAe;AAC7C,MAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,QAChC,OAAA;AAAA,QAAS,MAAA;AAAA,QAAQ,KAAA;AAAA,QACjB,OAAA,EAAS,CAAA,EAAG,QAAA,CAAS,MAAM,qCAAqC,KAAK,CAAA;AAAA;AAAA,OACtE,CAAA;AACD,MAAA,MAAM,eAAe,CAAA,QAAA,EAAW,SAAS,CAAA,uBAAA,EAA0B,QAAQ,sBAAsB,IAAI,CAAA,+MAAA,CAAA;AAErG,MAAA,MAAM,WAA2B,CAAC;AAAA,QAChC,IAAIF,UAAAA,EAAW;AAAA,QACf,IAAA,EAAM,MAAA;AAAA,QACN,OAAA,EAAS,MAAA;AAAA,QACT,SAAA,sBAAe,IAAA;AAAK,OACrB,CAAA;AAED,MAAA,KAAA,IAAS,SAAA,GAAY,CAAA,EAAG,SAAA,GAAY,mBAAA,EAAqB,SAAA,EAAA,EAAa;AACpE,QAAA,IAAI,aAAA,GAAgB,EAAA;AACpB,QAAA,MAAM,qBAAkC,EAAC;AAEzC,QAAA,MAAM,MAAA,GAAS,SAAS,MAAA,CAAO;AAAA,UAC7B,KAAA;AAAA,UACA,QAAA;AAAA,UACA,MAAA,EAAQ,YAAA;AAAA,UACR,SAAA,EAAW,GAAA;AAAA,UACX,GAAI,SAAS,MAAA,GAAS,CAAA,GAAI,EAAE,KAAA,EAAO,QAAA,KAAa;AAAC,SAClD,CAAA;AAED,QAAA,WAAA,MAAiB,SAAS,MAAA,EAAQ;AAChC,UAAA,IAAI,KAAA,CAAM,IAAA,KAAS,MAAA,IAAU,KAAA,CAAM,OAAA,EAAS;AAC1C,YAAA,aAAA,IAAiB,KAAA,CAAM,OAAA;AACvB,YAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,cAChC,OAAA;AAAA,cAAS,MAAA;AAAA,cAAQ,KAAA;AAAA,cACjB,SAAS,KAAA,CAAM;AAAA,aAChB,CAAA;AAAA,UACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,WAAA,IAAe,MAAM,QAAA,EAAU;AACvD,YAAA,kBAAA,CAAmB,IAAA,CAAK,MAAM,QAAQ,CAAA;AACtC,YAAA,MAAM,KAAK,KAAA,CAAM,QAAA;AACjB,YAAA,MAAM,OAAA,GAAU,kBAAA,CAAmB,EAAA,CAAG,IAAA,EAAM,GAAG,SAAS,CAAA;AACxD,YAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,cAChC,OAAA;AAAA,cAAS,MAAA;AAAA,cAAQ,KAAA;AAAA,cACjB,OAAA,EAAS;AAAA,OAAA,EAAY,EAAA,CAAG,IAAI,CAAA,CAAA,EAAI,OAAO;AAAA;AAAA,aACxC,CAAA;AAAA,UACH,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,MAAM,KAAA,EAAO;AAEhD,YAAA,MAAM,QAAA,GAAW,KAAA,CAAM,KAAA,CAAM,MAAA,GAAS,GAAA,GAClC,KAAA,CAAM,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,GAAI,KAAA,GAC5B,KAAA,CAAM,KAAA;AACV,YAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,cAChC,OAAA;AAAA,cAAS,MAAA;AAAA,cAAQ,KAAA;AAAA,cACjB,OAAA,EAAS;AAAA,cAAA,EAAmB,QAAQ;AAAA;AAAA,aACrC,CAAA;AAAA,UACH;AAAA,QACF;AAGA,QAAA,IAAI,kBAAA,CAAmB,WAAW,CAAA,EAAG;AACnC,UAAA;AAAA,QACF;AAGA,QAAA,QAAA,CAAS,IAAA,CAAK;AAAA,UACZ,IAAIA,UAAAA,EAAW;AAAA,UACf,IAAA,EAAM,WAAA;AAAA,UACN,OAAA,EAAS,aAAA;AAAA,UACT,SAAA,EAAW,kBAAA;AAAA,UACX,SAAA,sBAAe,IAAA;AAAK,SACrB,CAAA;AAGD,QAAA,KAAA,MAAW,MAAM,kBAAA,EAAoB;AACnC,UAAA,MAAM,MAAA,GAAS,MAAM,YAAA,CAAa,OAAA,CAAQ,IAAI,WAAW,CAAA;AAEzD,UAAA,MAAM,cAAc,mBAAA,CAAoB,EAAA,CAAG,MAAM,MAAA,CAAO,OAAA,EAAS,OAAO,OAAO,CAAA;AAC/E,UAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,YAChC,OAAA;AAAA,YAAS,MAAA;AAAA,YAAQ,KAAA;AAAA,YACjB,OAAA,EAAS,YAAY,WAAW;AAAA;AAAA,WACjC,CAAA;AAED,UAAA,MAAM,gBAAA,GAAmB,MAAA,CAAO,OAAA,CAAQ,MAAA,GAAS,sBAAA,GAC7C,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAM,CAAA,EAAG,sBAAsB,CAAA,GAAI,kBAAA,GAClD,MAAA,CAAO,OAAA;AAEX,UAAA,QAAA,CAAS,IAAA,CAAK;AAAA,YACZ,IAAIA,UAAAA,EAAW;AAAA,YACf,IAAA,EAAM,MAAA;AAAA,YACN,OAAA,EAAS,gBAAA;AAAA,YACT,SAAA,EAAW,CAAC,EAAE,EAAA,EAAI,EAAA,CAAG,EAAA,EAAI,IAAA,EAAM,EAAA,CAAG,IAAA,EAAM,SAAA,EAAW,EAAC,EAAG,CAAA;AAAA,YACvD,SAAA,sBAAe,IAAA;AAAK,WACrB,CAAA;AAAA,QACH;AAAA,MACF;AAAA,IACF,SAAS,KAAA,EAAgB;AACvB,MAAA,MAAM,SAAS,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AAEpE,MAAA,MAAM,GAAA,GAAM,OAAO,MAAA,GAAS,GAAA,GAAM,OAAO,KAAA,CAAM,CAAA,EAAG,GAAG,CAAA,GAAI,KAAA,GAAQ,MAAA;AACjE,MAAA,YAAA,CAAa,mBAAA,EAAqB;AAAA,QAChC,OAAA;AAAA,QAAS,MAAA;AAAA,QAAQ,KAAA;AAAA,QACjB,OAAA,EAAS;AAAA,OAAA,EAAY,GAAG;AAAA;AAAA,OACzB,CAAA;AAAA,IACH;AAEA,IAAA,YAAA,CAAa,oBAAoB,EAAE,OAAA,EAAS,MAAA,EAAQ,MAAA,EAAQ,aAAa,CAAA;AAAA,EAC3E;AAEA,EAAA,YAAA,CAAa,gBAAA,EAAkB;AAAA,IAC7B,OAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,SAAA,GAAY,YAAY,MAAM;AAAA,EAEpC,GAAG,GAAM,CAAA;AAET,EAAA,MAAM,WAAW,MAAY;AAC3B,IAAA,aAAA,CAAc,SAAS,CAAA;AACvB,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB,CAAA;AAEA,EAAA,OAAA,CAAQ,EAAA,CAAG,SAAA,EAAW,CAAC,GAAA,KAAiB;AACtC,IAAA,IAAI,CAAC,YAAA,CAAa,GAAG,CAAA,EAAG;AACtB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,GAAA,CAAI,WAAW,gBAAA,EAAkB;AACnC,MAAA,MAAM,MAAA,GAAS,OAAO,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAA,KAAM,QAAA,GAC3C,GAAA,CAAI,MAAA,CAAO,QAAQ,CAAA,GACnBA,UAAAA,EAAW;AACf,MAAA,MAAM,OAAA,GAAU,OAAO,GAAA,CAAI,MAAA,CAAO,SAAS,MAAM,QAAA,GAC7C,GAAA,CAAI,MAAA,CAAO,SAAS,CAAA,GACpB,EAAA;AACJ,MAAA,MAAM,WAAA,GAAc,OAAO,GAAA,CAAI,MAAA,CAAO,aAAa,MAAM,QAAA,GACrD,GAAA,CAAI,MAAA,CAAO,aAAa,CAAA,GACxB,EAAA;AAEJ,MAAA,KAAK,WAAA,CAAY,MAAA,EAAQ,WAAA,IAAe,OAAA,IAAW,kCAAkC,CAAA;AACrF,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,GAAA,CAAI,WAAW,cAAA,EAAgB;AACjC,MAAA,QAAA,EAAS;AAAA,IACX;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAA,CAAQ,EAAA,CAAG,UAAU,QAAQ,CAAA;AAC7B,EAAA,OAAA,CAAQ,EAAA,CAAG,WAAW,QAAQ,CAAA;AAG9B,EAAA,MAAM,IAAI,QAAc,MAAM;AAAA,EAAC,CAAC,CAAA;AAChC,EAAA,OAAO,IAAA;AACT;AAEA,eAAe,IAAA,GAAsB;AACnC,EAAA,MAAM,UAAU,CAAC,GAAG,QAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAEzC,EAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,EAAG;AACvC,IAAA,OAAA,CAAQ,GAAA,CAAI,UAAU,CAAA,GAAI,GAAA;AAAA,EAC5B;AAEA,EAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAAG;AACtC,IAAA,OAAA,CAAQ,IAAI,sBAAsB,CAAA,GAAI,OAAA,CAAQ,GAAA,CAAI,sBAAsB,CAAA,IAAK,OAAA;AAAA,EAC/E;AAEA,EAAA,IAAI,MAAM,iBAAA,CAAkB,OAAO,CAAA,EAAG;AACpC,IAAA;AAAA,EACF;AAEA,EAAA,MAAM,UAAU,IAAIJ,OAAAA,EAAQ,CACzB,IAAA,CAAK,YAAY,CAAA,CACjB,WAAA;AAAA,IACC;AAAA,GACF,CACC,OAAA,CAAQ,eAAA,EAAiB,eAAe,CAAA,CACxC,QAAA,CAAS,cAAA,EAAgB,wBAAwB,CAAA,CACjD,MAAA,CAAO,qBAAA,EAAuB,iCAAiC,CAAA,CAC/D,MAAA,CAAO,mBAAA,EAAqB,mBAAmB,CAAA,CAC/C,MAAA,CAAO,WAAA,EAAa,uBAAuB,CAAA,CAC3C,MAAA,CAAO,YAAA,EAAc,wBAAwB,CAAA,CAC7C,wBAAA,EAAyB,CACzB,kBAAA,EAAmB,CACnB,WAAA;AAAA,IACC,OAAA;AAAA,IACA;AAAA,MACE,EAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA,wCAAA;AAAA,MACA,uDAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,IAAI;AAAA,GACb;AAGF,EAAA,OAAA,CAAQ,UAAA,CAAW,mBAAmB,CAAA;AACtC,EAAA,OAAA,CAAQ,UAAA,CAAW,mBAAmB,CAAA;AACtC,EAAA,OAAA,CAAQ,UAAA,CAAW,qBAAqB,CAAA;AACxC,EAAA,OAAA,CAAQ,UAAA,CAAW,mBAAmB,CAAA;AACtC,EAAA,OAAA,CAAQ,UAAA,CAAW,qBAAqB,CAAA;AACxC,EAAA,OAAA,CAAQ,UAAA,CAAW,mBAAmB,CAAA;AACtC,EAAA,OAAA,CAAQ,UAAA,CAAW,oBAAoB,CAAA;AACvC,EAAA,OAAA,CAAQ,UAAA,CAAW,mBAAmB,CAAA;AACtC,EAAA,OAAA,CAAQ,UAAA,CAAW,sBAAsB,CAAA;AAGzC,EAAA,OAAA,CAAQ,MAAA,CAAO,OAAO,YAAA,EAAwB,OAAA,KAAqC;AACjF,IAAA,IAAI,OAAA,GAAU,YAAA,CAAa,IAAA,CAAK,GAAG,CAAA,IAAK,MAAA;AAKxC,IAAA,IAAI,WAAA,GAAc,KAAA;AAClB,IAAA,IAAI,YAAY,MAAA,EAAW;AACzB,MAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,GAAA,CAAI,wBAAwB,CAAA;AAC3D,MAAA,IAAI,cAAA,KAAmB,MAAA,IAAa,cAAA,CAAe,MAAA,GAAS,CAAA,EAAG;AAC7D,QAAA,IAAI;AACF,UAAA,MAAM,EAAE,YAAA,EAAa,GAAI,MAAM,OAAO,IAAS,CAAA;AAC/C,UAAA,OAAA,GAAU,YAAA,CAAa,cAAA,EAAgB,OAAO,CAAA,CAAE,IAAA,EAAK;AACrD,UAAA,WAAA,GAAc,IAAA;AAAA,QAChB,CAAA,CAAA,MAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,cAAA,CAAe;AAAA,MACnB,cAAA,EAAgB,OAAA;AAAA,MAChB,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,MACtB,IAAA,EAAM,QAAQ,MAAM,CAAA;AAAA,MACpB,WAAA;AAAA,MACA,SAAA,EAAW;AAAA,KACZ,CAAA;AAAA,EACH,CAAC,CAAA;AAGD,EAAA,IAAI,sBAAsB,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG;AAChD,IAAA,eAAA,EAAgB;AAAA,EAClB;AAGA,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,IAAI,CAAA;AAAA,EACvC,SAAS,KAAA,EAAgB;AACvB,IAAA,IAAI,iBAAiB,KAAA,EAAO;AAC1B,MAAA,OAAA,CAAQ,OAAO,KAAA,CAAME,GAAAA,CAAG,GAAA,CAAI,CAAA,OAAA,EAAU,MAAM,OAAO;AAAA,CAAI,CAAC,CAAA;AAAA,IAC1D;AACA,IAAA,OAAA,CAAQ,QAAA,GAAW,CAAA;AAAA,EACrB;AACF;AAEA,SAAS,sBAAsB,IAAA,EAAkC;AAC/D,EAAA,IAAI,CAAC,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAC,OAAA,CAAQ,OAAO,KAAA,EAAO;AACjD,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,CAAC,IAAA,CAAK,IAAA,CAAK,CAAC,GAAA,KAAQ,CAAC,QAAA,EAAU,IAAA,EAAM,WAAA,EAAa,IAAI,CAAA,CAAE,QAAA,CAAS,GAAG,CAAC,CAAA;AAC9E;AAEA,SAAS,eAAA,GAAwB;AAE/B,EAAA,OAAO,iBAAiB,CAAA,CACrB,IAAA,CAAK,CAAC,EAAE,OAAA,EAAS,gBAAe,KAAM;AACrC,IAAA,MAAM,WAAW,cAAA,CAAe;AAAA,MAC9B,GAAA,EAAK,EAAE,IAAA,EAAM,YAAA,EAAc,SAAS,eAAA,EAAgB;AAAA,MACpD,mBAAA,EAAqB,GAAA,GAAO,EAAA,GAAK,EAAA,GAAK;AAAA;AAAA,KACvC,CAAA;AACD,IAAA,QAAA,CAAS,MAAA,CAAO,EAAE,QAAA,EAAU,IAAA,EAAM,CAAA;AAAA,EACpC,CAAC,CAAA,CACA,KAAA,CAAM,MAAM;AAAA,EAEb,CAAC,CAAA;AACL;AAEA,IAAA,EAAK,CAAE,KAAA,CAAM,CAAC,KAAA,KAAmB;AAC/B,EAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,IACbA,GAAAA,CAAG,IAAI,CAAA,aAAA,EAAgB,KAAA,YAAiB,QAAQ,KAAA,CAAM,OAAA,GAAU,MAAA,CAAO,KAAK,CAAC;AAAA,CAAI;AAAA,GACnF;AACA,EAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAChB,CAAC,CAAA","file":"cli.js","sourcesContent":["import { randomUUID } from \"node:crypto\";\n\nimport { createModelRouter } from \"../core/model-router.js\";\nimport { createDefaultRegistry } from \"../providers/registry.js\";\nimport { ConfigStore } from \"../storage/config-store.js\";\nimport type { IChatMessage } from \"../types/message.js\";\nimport type { ModelRole } from \"../types/model.js\";\n\nconst VALID_ROLES: readonly ModelRole[] = [\n \"planning\",\n \"coding\",\n \"review\",\n \"testing\",\n \"bugfix\",\n \"documentation\",\n] as const;\n\nexport interface IChatRunnerOptions {\n readonly initialMessage?: string | undefined;\n readonly model?: string | undefined;\n readonly role?: string | undefined;\n readonly systemPrompt?: string | undefined;\n readonly streaming?: boolean | undefined;\n readonly isAgentPane?: boolean | undefined;\n readonly print?: boolean | undefined;\n}\n\nfunction isInteractiveTerminal(): boolean {\n return process.stdin.isTTY && process.stdout.isTTY;\n}\n\nfunction normalizeMessage(message: string | undefined): string | undefined {\n const trimmed = message?.trim();\n return trimmed && trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction parseRole(role: string | undefined): ModelRole | undefined {\n if (role === undefined) {\n return undefined;\n }\n\n if ((VALID_ROLES as readonly string[]).includes(role)) {\n return role as ModelRole;\n }\n\n throw new Error(`Unknown role \"${role}\". Valid roles: ${VALID_ROLES.join(\", \")}`);\n}\n\nasync function ensureInteractiveConfig(): Promise<void> {\n const { ensureDefaultConfig, hasGlobalConfig } = await import(\"./setup/first-run.js\");\n\n if (!hasGlobalConfig()) {\n ensureDefaultConfig();\n }\n}\n\nasync function startInteractiveChat(options: IChatRunnerOptions): Promise<void> {\n await ensureInteractiveConfig();\n\n const { startChatSession } = await import(\"../ui/App.js\");\n await startChatSession({\n ...(options.initialMessage !== undefined ? { initialMessage: options.initialMessage } : {}),\n ...(options.model !== undefined ? { model: options.model } : {}),\n ...(options.role !== undefined ? { role: options.role } : {}),\n ...(options.systemPrompt !== undefined ? { systemPrompt: options.systemPrompt } : {}),\n ...(options.isAgentPane ? { isAgentPane: true } : {}),\n streaming: options.streaming !== false,\n });\n}\n\nasync function runPlainChat(options: IChatRunnerOptions, message: string): Promise<void> {\n const config = new ConfigStore().loadGlobal();\n const modelRouter = createModelRouter(config);\n const role = parseRole(options.role);\n\n if (options.model !== undefined) {\n modelRouter.setUserOverride(options.model);\n }\n\n const resolution = modelRouter.resolve(role);\n const registry = await createDefaultRegistry();\n\n if (!registry.hasModel(resolution.modelId)) {\n throw new Error(\n `No provider is available for model \"${resolution.modelId}\". Run \\`aemeathcli auth status\\` or \\`aemeathcli auth set-key <provider>\\`.`,\n );\n }\n\n const provider = registry.getForModel(resolution.modelId);\n const messages: readonly IChatMessage[] = [\n {\n id: randomUUID(),\n role: \"user\",\n content: message,\n createdAt: new Date(),\n },\n ];\n\n if (options.streaming === false) {\n const response = await provider.chat({\n model: resolution.modelId,\n messages,\n ...(options.systemPrompt !== undefined ? { system: options.systemPrompt } : {}),\n });\n process.stdout.write(`${response.message.content}\\n`);\n return;\n }\n\n let wroteOutput = false;\n\n for await (const chunk of provider.stream({\n model: resolution.modelId,\n messages,\n ...(options.systemPrompt !== undefined ? { system: options.systemPrompt } : {}),\n })) {\n if (chunk.type === \"text\" && chunk.content) {\n process.stdout.write(chunk.content);\n wroteOutput = true;\n continue;\n }\n\n if (chunk.type === \"tool_call\") {\n throw new Error(\n \"Tool-calling output is not supported in plain mode. Use the interactive TUI (`aemeathcli`) and switch into swarm mode with Shift+Tab.\",\n );\n }\n\n if (chunk.type === \"error\" && chunk.error) {\n throw new Error(chunk.error);\n }\n }\n\n if (wroteOutput) {\n process.stdout.write(\"\\n\");\n }\n}\n\nexport async function runChatCommand(options: IChatRunnerOptions): Promise<void> {\n const message = normalizeMessage(options.initialMessage);\n const interactive = isInteractiveTerminal();\n\n if (!options.print && interactive && message === undefined) {\n await startInteractiveChat(options);\n return;\n }\n\n if (message === undefined) {\n throw new Error(\n \"Interactive mode requires a TTY. Provide a prompt for one-shot mode or run the command in a terminal.\",\n );\n }\n\n await runPlainChat(options, message);\n}\n","/**\n * Interactive chat mode command per PRD section 18.2\n */\n\nimport { Command } from \"commander\";\nimport { runChatCommand } from \"../chat-runner.js\";\n\nexport function createChatCommand(): Command {\n const chat = new Command(\"chat\")\n .description(\"Start interactive chat mode (default)\")\n .argument(\"[message...]\", \"Initial message to send\")\n .option(\"-m, --model <model>\", \"Override model for this session\")\n .option(\"-r, --role <role>\", \"Set the task role (planning, coding, review, testing, bugfix)\")\n .option(\"--system <prompt>\", \"Custom system prompt\")\n .option(\"--print\", \"Print a single response and exit\")\n .option(\"--no-stream\", \"Disable streaming output\")\n .action(async (messageParts: string[], options: Record<string, unknown>) => {\n await runChatCommand({\n initialMessage: messageParts.join(\" \") || undefined,\n model: options[\"model\"] as string | undefined,\n role: options[\"role\"] as string | undefined,\n systemPrompt: options[\"system\"] as string | undefined,\n streaming: options[\"stream\"] !== false,\n print: options[\"print\"] === true,\n });\n });\n\n return chat;\n}\n","/**\n * Planning mode command per PRD section 5.1\n */\n\nimport { Command } from \"commander\";\nimport { runChatCommand } from \"../chat-runner.js\";\n\nexport function createPlanCommand(): Command {\n const plan = new Command(\"plan\")\n .description(\"Enter planning mode with a high-reasoning model\")\n .argument(\"[message...]\", \"Planning prompt\")\n .option(\"-m, --model <model>\", \"Override model (default: planning role)\")\n .option(\"--print\", \"Print a single response and exit\")\n .action(async (messageParts: string[], options: Record<string, unknown>) => {\n await runChatCommand({\n initialMessage: messageParts.join(\" \") || undefined,\n model: options[\"model\"] as string | undefined,\n role: \"planning\",\n streaming: true,\n print: options[\"print\"] === true,\n });\n });\n\n return plan;\n}\n","/**\n * Code review mode command per PRD section 5.1\n */\n\nimport { Command } from \"commander\";\nimport { runChatCommand } from \"../chat-runner.js\";\n\nexport function createReviewCommand(): Command {\n const review = new Command(\"review\")\n .description(\"Code review mode with a thorough model\")\n .argument(\"[files...]\", \"Files to review\")\n .option(\"-m, --model <model>\", \"Override model (default: review role)\")\n .option(\"--print\", \"Print a single response and exit\")\n .action(async (files: string[], options: Record<string, unknown>) => {\n const message = files.length > 0\n ? `Review these files: ${files.join(\", \")}`\n : \"Review the recent changes\";\n await runChatCommand({\n initialMessage: message,\n model: options[\"model\"] as string | undefined,\n role: \"review\",\n streaming: true,\n print: options[\"print\"] === true,\n });\n });\n\n return review;\n}\n","/**\n * Testing mode command per PRD section 5.1\n */\n\nimport { Command } from \"commander\";\nimport { runChatCommand } from \"../chat-runner.js\";\n\nexport function createTestCommand(): Command {\n const test = new Command(\"test\")\n .description(\"Testing mode with a cost-efficient model\")\n .argument(\"[message...]\", \"Testing prompt\")\n .option(\"-m, --model <model>\", \"Override model (default: testing role)\")\n .option(\"--print\", \"Print a single response and exit\")\n .action(async (messageParts: string[], options: Record<string, unknown>) => {\n await runChatCommand({\n initialMessage: messageParts.join(\" \") || \"Generate tests for the recent changes\",\n model: options[\"model\"] as string | undefined,\n role: \"testing\",\n streaming: true,\n print: options[\"print\"] === true,\n });\n });\n\n return test;\n}\n","/**\n * Configuration management commands per PRD section 12.3\n */\n\nimport { Command } from \"commander\";\nimport pc from \"picocolors\";\n\nexport function createConfigCommand(): Command {\n const config = new Command(\"config\")\n .description(\"Configuration management\");\n\n config\n .command(\"get [key]\")\n .description(\"Get configuration value (or all if no key)\")\n .action(async (key: string | undefined) => {\n try {\n const { ConfigStore } = await import(\"../../storage/config-store.js\");\n const store = new ConfigStore();\n const cfg = store.loadGlobal();\n\n if (key) {\n const value = getNestedValue(cfg, key);\n if (value === undefined) {\n process.stderr.write(pc.red(`Configuration key not found: ${key}\\n`));\n process.exitCode = 1;\n return;\n }\n process.stdout.write(`${key} = ${JSON.stringify(value, null, 2)}\\n`);\n } else {\n process.stdout.write(JSON.stringify(cfg, null, 2) + \"\\n\");\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(pc.red(`Failed to read config: ${message}\\n`));\n process.exitCode = 3;\n }\n });\n\n config\n .command(\"set <key> <value>\")\n .description(\"Set a configuration value\")\n .action(async (key: string, value: string) => {\n try {\n const { ConfigStore } = await import(\"../../storage/config-store.js\");\n const store = new ConfigStore();\n const cfg = store.loadGlobal();\n\n let parsedValue: unknown;\n try {\n parsedValue = JSON.parse(value);\n } catch {\n parsedValue = value;\n }\n\n setNestedValue(cfg as unknown as Record<string, unknown>, key, parsedValue);\n store.saveGlobal(cfg);\n process.stdout.write(pc.green(`Set ${key} = ${JSON.stringify(parsedValue)}\\n`));\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(pc.red(`Failed to set config: ${message}\\n`));\n process.exitCode = 3;\n }\n });\n\n config\n .command(\"init\")\n .description(\"Initialize configuration with interactive setup\")\n .option(\"--defaults\", \"Write default configuration without interactive prompts\")\n .option(\"--force\", \"Overwrite or recreate the global configuration\")\n .action(async (options: { defaults?: boolean; force?: boolean }) => {\n try {\n const { runFirstRunSetup } = await import(\"../setup/first-run.js\");\n await runFirstRunSetup({\n ...(options.defaults !== undefined ? { defaults: options.defaults } : {}),\n ...(options.force !== undefined ? { force: options.force } : {}),\n });\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(pc.red(`Setup failed: ${message}\\n`));\n process.exitCode = 3;\n }\n });\n\n config\n .command(\"path\")\n .description(\"Show the active global configuration path\")\n .action(async () => {\n const { getConfigPath } = await import(\"../../utils/pathResolver.js\");\n process.stdout.write(`${getConfigPath()}\\n`);\n });\n\n return config;\n}\n\nfunction getNestedValue(obj: unknown, path: string): unknown {\n const keys = path.split(\".\");\n let current: unknown = obj;\n for (const key of keys) {\n if (current === null || current === undefined || typeof current !== \"object\") {\n return undefined;\n }\n current = (current as Record<string, unknown>)[key];\n }\n return current;\n}\n\nfunction setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): void {\n const keys = path.split(\".\");\n let current: Record<string, unknown> = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n if (!key) continue;\n if (typeof current[key] !== \"object\" || current[key] === null) {\n current[key] = {};\n }\n current = current[key] as Record<string, unknown>;\n }\n const lastKey = keys[keys.length - 1];\n if (lastKey) {\n current[lastKey] = value;\n }\n}\n","/**\n * Authentication management commands per PRD section 13.2\n */\n\nimport { Command } from \"commander\";\nimport pc from \"picocolors\";\nimport type { ProviderName } from \"../../types/index.js\";\nimport {\n LOGIN_PROVIDERS,\n type LoginProvider,\n getAuthStatusRecord,\n formatDetailedAuthStatusLine,\n} from \"../../auth/auth-status.js\";\n\nconst VALID_PROVIDERS = LOGIN_PROVIDERS;\n\nfunction isValidProvider(value: string): value is LoginProvider {\n return (VALID_PROVIDERS as readonly string[]).includes(value);\n}\n\nfunction isInteractiveTerminal(): boolean {\n return process.stdin.isTTY && process.stdout.isTTY;\n}\n\nfunction validProvidersMessage(): string {\n return VALID_PROVIDERS.join(\", \");\n}\n\nasync function promptForProvider(): Promise<LoginProvider> {\n const { select } = await import(\"@inquirer/prompts\");\n return select<LoginProvider>({\n message: \"Select a provider to log in to:\",\n choices: [\n { name: \"Claude (Anthropic)\", value: \"claude\" },\n { name: \"Codex (OpenAI)\", value: \"codex\" },\n { name: \"Gemini (Google)\", value: \"gemini\" },\n { name: \"Kimi (Moonshot)\", value: \"kimi\" },\n ],\n });\n}\n\nasync function readSecretFromStdin(): Promise<string> {\n const chunks: string[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(String(chunk));\n }\n return chunks.join(\"\").trim();\n}\n\nasync function resolveLoginProvider(providerArg: string | undefined): Promise<LoginProvider | undefined> {\n if (providerArg !== undefined) {\n if (!isValidProvider(providerArg)) {\n process.stderr.write(\n pc.red(`Unknown provider: \"${providerArg}\". Valid: ${validProvidersMessage()}\\n`),\n );\n process.exitCode = 2;\n return undefined;\n }\n return providerArg;\n }\n\n if (!isInteractiveTerminal()) {\n process.stderr.write(\n pc.red(\n \"Interactive provider selection requires a TTY. Use `aemeathcli auth login <provider>` or `aemeathcli auth set-key <provider> --stdin`.\\n\",\n ),\n );\n process.exitCode = 2;\n return undefined;\n }\n\n return promptForProvider();\n}\n\nasync function runLoginFlow(provider: LoginProvider): Promise<void> {\n process.stdout.write(pc.cyan(`Logging in to ${provider}...\\n`));\n\n const loginModule = await loadLoginModule(provider);\n await loginModule.login();\n process.stdout.write(pc.green(`Successfully logged in to ${provider}\\n`));\n}\n\nconst PROVIDER_MODEL_SWITCH: Readonly<Record<LoginProvider, { provider: ProviderName; model: string }>> = {\n claude: { provider: \"anthropic\", model: \"claude-sonnet-4-6\" },\n codex: { provider: \"openai\", model: \"gpt-5.2\" },\n gemini: { provider: \"google\", model: \"gemini-2.5-pro\" },\n kimi: { provider: \"kimi\", model: \"kimi-for-coding\" },\n};\n\n/**\n * Top-level `login` command with interactive provider selection.\n * Shows an arrow-key navigable list of providers, then triggers\n * browser-based login for the selected one.\n */\nexport function createLoginCommand(): Command {\n return new Command(\"login\")\n .description(\"Log in to a provider (interactive)\")\n .argument(\"[provider]\", \"Provider to log in to (claude, codex, gemini, kimi)\")\n .action(async (providerArg: string | undefined) => {\n const provider = await resolveLoginProvider(providerArg);\n if (provider === undefined) {\n return;\n }\n\n try {\n await runLoginFlow(provider);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(pc.red(`Login failed: ${message}\\n`));\n process.exitCode = 3;\n }\n });\n}\n\nexport function createAuthCommand(): Command {\n const auth = new Command(\"auth\")\n .description(\"Authentication & account management\");\n\n auth\n .command(\"login [provider]\")\n .description(\"Log in to a provider (claude, codex, gemini, kimi)\")\n .action(async (providerArg: string | undefined) => {\n const provider = await resolveLoginProvider(providerArg);\n if (provider === undefined) {\n return;\n }\n\n try {\n await runLoginFlow(provider);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(pc.red(`Login failed: ${message}\\n`));\n process.exitCode = 3;\n }\n });\n\n auth\n .command(\"logout [provider]\")\n .description(\"Log out of a provider (or all with --all)\")\n .option(\"--all\", \"Log out of all providers\")\n .action(async (provider: string | undefined, options: { all?: boolean }) => {\n if (options.all) {\n for (const p of VALID_PROVIDERS) {\n try {\n const loginModule = await loadLoginModule(p);\n await loginModule.logout();\n process.stdout.write(pc.green(`Logged out of ${p}\\n`));\n } catch {\n // Some may not be logged in\n }\n }\n return;\n }\n\n if (!provider || !isValidProvider(provider)) {\n process.stderr.write(\n pc.red(`Specify a provider or use --all. Valid: ${VALID_PROVIDERS.join(\", \")}\\n`),\n );\n process.exitCode = 2;\n return;\n }\n\n try {\n const loginModule = await loadLoginModule(provider);\n await loginModule.logout();\n process.stdout.write(pc.green(`Logged out of ${provider}\\n`));\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(pc.red(`Logout failed: ${message}\\n`));\n process.exitCode = 3;\n }\n });\n\n auth\n .command(\"status\")\n .description(\"Show login status for all providers\")\n .option(\"--json\", \"Output machine-readable JSON\")\n .action(async (options: { json?: boolean }) => {\n const records = await Promise.all(VALID_PROVIDERS.map(async (provider) => getAuthStatusRecord(provider)));\n\n if (options.json) {\n process.stdout.write(`${JSON.stringify({ providers: records }, null, 2)}\\n`);\n return;\n }\n\n for (const record of records) {\n const line = formatDetailedAuthStatusLine(record);\n process.stdout.write(`${record.loggedIn ? pc.green(line) : pc.red(line)}\\n`);\n }\n });\n\n auth\n .command(\"set-key <provider> [key]\")\n .description(\"Set an API key for a provider (fallback for CI/headless)\")\n .option(\"--stdin\", \"Read the API key from stdin\")\n .action(async (provider: string, key: string | undefined, options: { stdin?: boolean }) => {\n if (!isValidProvider(provider) && provider !== \"openai\" && provider !== \"google\") {\n process.stderr.write(pc.red(`Unknown provider: \"${provider}\"\\n`));\n process.exitCode = 2;\n return;\n }\n\n const resolvedKey = options.stdin ? await readSecretFromStdin() : key;\n if (!resolvedKey) {\n process.stderr.write(\n pc.red(\"Provide an API key argument or use --stdin to read it from standard input.\\n\"),\n );\n process.exitCode = 2;\n return;\n }\n\n try {\n const { ApiKeyFallback } = await import(\"../../auth/api-key-fallback.js\");\n const fallback = new ApiKeyFallback();\n const providerMap: Record<string, ProviderName> = {\n claude: \"anthropic\",\n openai: \"openai\",\n codex: \"openai\",\n gemini: \"google\",\n google: \"google\",\n kimi: \"kimi\",\n };\n const mappedProvider = providerMap[provider];\n if (mappedProvider) {\n await fallback.setKey(mappedProvider, resolvedKey);\n process.stdout.write(pc.green(`API key set for ${provider}\\n`));\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(pc.red(`Failed to set key: ${message}\\n`));\n process.exitCode = 3;\n }\n });\n\n auth\n .command(\"switch <provider>\")\n .description(\"Set a provider as the default\")\n .action(async (provider: string) => {\n if (!isValidProvider(provider)) {\n process.stderr.write(\n pc.red(`Unknown provider: \"${provider}\". Valid: ${VALID_PROVIDERS.join(\", \")}\\n`),\n );\n process.exitCode = 2;\n return;\n }\n\n try {\n const target = PROVIDER_MODEL_SWITCH[provider];\n const { ConfigStore } = await import(\"../../storage/config-store.js\");\n const store = new ConfigStore();\n const cfg = store.loadGlobal();\n\n const nextConfig = {\n ...cfg,\n defaultModel: target.model,\n providers: {\n ...cfg.providers,\n [target.provider]: {\n ...(cfg.providers[target.provider] ?? {}),\n enabled: true,\n },\n },\n };\n\n store.saveGlobal(nextConfig);\n process.stdout.write(\n pc.green(`Default provider switched to ${provider} (model: ${target.model})\\n`),\n );\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(pc.red(`Failed to switch provider: ${message}\\n`));\n process.exitCode = 3;\n }\n });\n\n return auth;\n}\n\ninterface ILoginModule {\n login(): Promise<unknown>;\n logout(): Promise<void>;\n getStatus(): Promise<{ loggedIn: boolean; email?: string | undefined; plan?: string | undefined }>;\n}\n\nasync function loadLoginModule(provider: LoginProvider): Promise<ILoginModule> {\n switch (provider) {\n case \"claude\": {\n const mod = await import(\"../../auth/providers/claude-login.js\");\n return new mod.ClaudeLogin();\n }\n case \"codex\": {\n const mod = await import(\"../../auth/providers/codex-login.js\");\n return new mod.CodexLogin();\n }\n case \"gemini\": {\n const mod = await import(\"../../auth/providers/gemini-login.js\");\n return new mod.GeminiLogin();\n }\n case \"kimi\": {\n const mod = await import(\"../../auth/providers/kimi-login.js\");\n return new mod.KimiLogin();\n }\n }\n}\n","/**\n * `ac install` — Install an agent profile from a file or URL.\n *\n * Accepts either a local path to a Markdown profile file or\n * a remote URL. The profile is validated and then written to\n * the user agent store (~/.aemeathcli/agent-store/).\n *\n * @see IMPLEMENT_PLAN.md Section 10\n */\n\nimport { Command } from \"commander\";\nimport pc from \"picocolors\";\n\nexport function createInstallCommand(): Command {\n return new Command(\"install\")\n .description(\"Install an agent profile from a file or URL\")\n .argument(\"<source>\", \"Path to .md profile file or URL\")\n .action(async (source: string) => {\n try {\n const { ProfileLoader } = await import(\"../../orchestrator/profiles/profile-loader.js\");\n const loader = new ProfileLoader();\n const name = await loader.install(source);\n process.stdout.write(`${pc.green(`Profile \"${name}\" installed successfully.`)}\\n`);\n process.stdout.write(\n `${pc.dim(\"Stored in the agent profile library for swarm orchestration and advanced profile-driven workflows.\")}\\n`,\n );\n } catch (error: unknown) {\n const msg = error instanceof Error ? error.message : String(error);\n process.stderr.write(`${pc.red(`Install failed: ${msg}`)}\\n`);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport pc from \"picocolors\";\n\nexport function createTeamCommand(): Command {\n return new Command(\"team\")\n .description(\"Legacy team namespace\")\n .argument(\"[legacy...]\", \"Legacy team arguments\")\n .action((legacyArgs: string[]) => {\n const attempted = legacyArgs.length > 0 ? `team ${legacyArgs.join(\" \")}` : \"team\";\n process.stderr.write(\n pc.yellow(\n `The top-level \\`${attempted}\\` command is deprecated.\\n` +\n \"Start `aemeathcli` (or `ac`), press Shift+Tab for swarm mode, or use `/team` inside the interactive session.\\n\",\n ),\n );\n process.exitCode = 2;\n });\n}\n","#!/usr/bin/env node\n\n/**\n * AemeathCLI — Main CLI entry point\n * Per PRD section 6.1: Commander.js setup with subcommand routing\n */\n\nimport { Command } from \"commander\";\nimport pc from \"picocolors\";\nimport { randomUUID } from \"node:crypto\";\nimport { createChatCommand } from \"./commands/chat.js\";\nimport { createPlanCommand } from \"./commands/plan.js\";\nimport { createReviewCommand } from \"./commands/review.js\";\nimport { createTestCommand } from \"./commands/test.js\";\nimport { createConfigCommand } from \"./commands/config.js\";\nimport { createAuthCommand, createLoginCommand } from \"./commands/auth.js\";\nimport { createInstallCommand } from \"./commands/install.js\";\nimport { createTeamCommand } from \"./commands/team.js\";\nimport { runChatCommand } from \"./chat-runner.js\";\nimport type { IIPCMessage } from \"../types/index.js\";\nimport type { ProviderRegistry } from \"../providers/registry.js\";\nimport type { ToolRegistry } from \"../tools/registry.js\";\nimport type { IChatMessage, IToolCall } from \"../types/message.js\";\nimport type { IToolExecutionContext, PermissionMode } from \"../types/tool.js\";\nimport { PACKAGE_VERSION } from \"../version.js\";\n\nfunction getFlagValue(args: readonly string[], flag: string): string | undefined {\n const index = args.indexOf(flag);\n if (index === -1) {\n return undefined;\n }\n const value = args[index + 1];\n return value && !value.startsWith(\"-\") ? value : undefined;\n}\n\nfunction isIPCMessage(value: unknown): value is IIPCMessage {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const record = value as Record<string, unknown>;\n return record[\"jsonrpc\"] === \"2.0\" && typeof record[\"method\"] === \"string\";\n}\n\nfunction sendAgentIPC(method: IIPCMessage[\"method\"], params: Record<string, unknown>): void {\n if (typeof process.send === \"function\") {\n const message: IIPCMessage = {\n jsonrpc: \"2.0\",\n method,\n params,\n };\n process.send(message);\n }\n}\n\nfunction isPermissionMode(value: string | undefined): value is PermissionMode {\n return value === \"strict\" || value === \"standard\" || value === \"permissive\";\n}\n\nfunction parseStringArrayEnv(value: string | undefined): string[] | undefined {\n if (!value) {\n return undefined;\n }\n\n try {\n const parsed: unknown = JSON.parse(value);\n if (Array.isArray(parsed) && parsed.every((item) => typeof item === \"string\")) {\n return [...parsed];\n }\n } catch {\n // Ignore malformed env input and fall back to defaults\n }\n\n return undefined;\n}\n\nfunction getAgentToolContext(): IToolExecutionContext {\n const projectRoot = process.env[\"AEMEATHCLI_TOOL_PROJECT_ROOT\"] ?? process.cwd();\n const workingDirectory =\n process.env[\"AEMEATHCLI_TOOL_WORKING_DIRECTORY\"] ?? projectRoot;\n const allowedPaths =\n parseStringArrayEnv(process.env[\"AEMEATHCLI_TOOL_ALLOWED_PATHS\"]) ?? [projectRoot];\n const blockedCommands =\n parseStringArrayEnv(process.env[\"AEMEATHCLI_TOOL_BLOCKED_COMMANDS\"]) ?? [];\n const permissionMode = isPermissionMode(process.env[\"AEMEATHCLI_TOOL_PERMISSION_MODE\"])\n ? process.env[\"AEMEATHCLI_TOOL_PERMISSION_MODE\"]\n : \"standard\";\n\n return {\n projectRoot,\n workingDirectory,\n permissionMode,\n allowedPaths,\n blockedCommands,\n };\n}\n\nasync function maybeRunAgentMode(args: readonly string[]): Promise<boolean> {\n if (!args.includes(\"--agent\") && process.env[\"AEMEATHCLI_AGENT_MODE\"] !== \"1\") {\n return false;\n }\n\n const teamName = getFlagValue(args, \"--team\") ?? process.env[\"AEMEATHCLI_TEAM_NAME\"] ?? \"unknown-team\";\n const agentName = getFlagValue(args, \"--name\") ?? process.env[\"AEMEATHCLI_AGENT_NAME\"] ?? \"agent\";\n const model = getFlagValue(args, \"--model\") ?? \"claude-sonnet-4-6\";\n const role = getFlagValue(args, \"--role\") ?? \"coding\";\n const agentId = process.env[\"AEMEATHCLI_AGENT_ID\"] ?? randomUUID();\n const toolContext = getAgentToolContext();\n\n // Lazily-initialized provider registry (shared across tasks for this agent)\n let registryPromise: Promise<ProviderRegistry> | undefined;\n\n function getRegistry(): Promise<ProviderRegistry> {\n if (!registryPromise) {\n registryPromise = import(\"../providers/registry.js\").then(\n ({ createDefaultRegistry }) => createDefaultRegistry({ preferSdk: true }),\n );\n }\n return registryPromise;\n }\n\n // Lazily-initialized tool registry (shared across tasks for this agent)\n let toolRegistryPromise: Promise<ToolRegistry> | undefined;\n\n function getToolRegistry(): Promise<ToolRegistry> {\n if (!toolRegistryPromise) {\n toolRegistryPromise = import(\"../tools/index.js\").then(\n ({ createDefaultRegistry: createToolReg }) =>\n createToolReg(toolContext),\n );\n }\n return toolRegistryPromise;\n }\n\n /** Format a one-line summary of a tool call for the agent output panel. */\n function formatToolActivity(name: string, args: Record<string, unknown>): string {\n switch (name) {\n case \"read\":\n case \"write\":\n case \"edit\":\n return typeof args[\"file_path\"] === \"string\" ? args[\"file_path\"] : \"\";\n case \"glob\":\n return typeof args[\"pattern\"] === \"string\" ? args[\"pattern\"] : \"\";\n case \"grep\": {\n const pat = typeof args[\"pattern\"] === \"string\" ? args[\"pattern\"] : \"\";\n const dir = typeof args[\"path\"] === \"string\" ? ` in ${args[\"path\"]}` : \"\";\n return `\"${pat}\"${dir}`;\n }\n case \"bash\": {\n const cmd = typeof args[\"command\"] === \"string\" ? args[\"command\"] : \"\";\n return cmd.length > 60 ? cmd.slice(0, 60) + \"...\" : cmd;\n }\n default:\n return JSON.stringify(args).slice(0, 60);\n }\n }\n\n /** Short summary of a tool result for the activity feed. */\n function formatResultSummary(name: string, content: string, isError: boolean): string {\n if (isError) return `Error: ${content.slice(0, 100)}`;\n const lines = content.split(\"\\n\").length;\n switch (name) {\n case \"read\": return `${lines} lines`;\n case \"glob\": return content === \"No files found\" ? \"no files\" : `${lines} files`;\n case \"grep\": return content === \"No matches found.\" ? \"no matches\" : `${lines} lines`;\n case \"write\":\n case \"edit\": return content.length > 80 ? content.slice(0, 80) : content;\n default: return content.length > 80 ? content.slice(0, 80) + \"...\" : content;\n }\n }\n\n const MAX_TOOL_ITERATIONS = 10;\n const MAX_TOOL_RESULT_LENGTH = 10_000;\n\n async function processTask(taskId: string, prompt: string): Promise<void> {\n sendAgentIPC(\"agent.taskUpdate\", { agentId, taskId, status: \"in_progress\" });\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: `Initializing provider for ${model}...\\n`,\n });\n\n try {\n const registry = await getRegistry();\n\n if (!registry.hasModel(model)) {\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: `\\nError: No provider available for model \"${model}\". Check authentication with 'aemeathcli auth login'.\\n`,\n });\n sendAgentIPC(\"agent.taskUpdate\", { agentId, taskId, status: \"completed\" });\n return;\n }\n\n const provider = registry.getForModel(model);\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: `Provider ready (${provider.name}). Loading tools...\\n`,\n });\n const toolRegistry = await getToolRegistry();\n const toolDefs = toolRegistry.getDefinitions();\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: `${toolDefs.length} tools loaded. Sending request to ${model}...\\n`,\n });\n const systemPrompt = `You are ${agentName}, an AI agent in team \"${teamName}\" with the role of ${role}. You have access to tools for reading files, writing files, editing code, searching, and executing shell commands. Use these tools to complete the assigned task thoroughly. Focus only on your specific role.`;\n\n const messages: IChatMessage[] = [{\n id: randomUUID(),\n role: \"user\" as const,\n content: prompt,\n createdAt: new Date(),\n }];\n\n for (let iteration = 0; iteration < MAX_TOOL_ITERATIONS; iteration++) {\n let collectedText = \"\";\n const collectedToolCalls: IToolCall[] = [];\n\n const stream = provider.stream({\n model,\n messages,\n system: systemPrompt,\n maxTokens: 8000,\n ...(toolDefs.length > 0 ? { tools: toolDefs } : {}),\n });\n\n for await (const chunk of stream) {\n if (chunk.type === \"text\" && chunk.content) {\n collectedText += chunk.content;\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: chunk.content,\n });\n } else if (chunk.type === \"tool_call\" && chunk.toolCall) {\n collectedToolCalls.push(chunk.toolCall);\n const tc = chunk.toolCall;\n const summary = formatToolActivity(tc.name, tc.arguments);\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: `\\n\\u2699 ${tc.name} ${summary}\\n`,\n });\n } else if (chunk.type === \"error\" && chunk.error) {\n // Truncate error messages to prevent raw CLI output dumps\n const errorMsg = chunk.error.length > 300\n ? chunk.error.slice(0, 300) + \"...\"\n : chunk.error;\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: `\\nStream error: ${errorMsg}\\n`,\n });\n }\n }\n\n // No tool calls → agent finished\n if (collectedToolCalls.length === 0) {\n break;\n }\n\n // Add assistant message with tool calls to conversation\n messages.push({\n id: randomUUID(),\n role: \"assistant\" as const,\n content: collectedText,\n toolCalls: collectedToolCalls,\n createdAt: new Date(),\n });\n\n // Execute each tool call and add results\n for (const tc of collectedToolCalls) {\n const result = await toolRegistry.execute(tc, toolContext);\n\n const briefResult = formatResultSummary(tc.name, result.content, result.isError);\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: ` \\u2192 ${briefResult}\\n`,\n });\n\n const truncatedContent = result.content.length > MAX_TOOL_RESULT_LENGTH\n ? result.content.slice(0, MAX_TOOL_RESULT_LENGTH) + \"\\n...(truncated)\"\n : result.content;\n\n messages.push({\n id: randomUUID(),\n role: \"tool\" as const,\n content: truncatedContent,\n toolCalls: [{ id: tc.id, name: tc.name, arguments: {} }],\n createdAt: new Date(),\n });\n }\n }\n } catch (error: unknown) {\n const rawMsg = error instanceof Error ? error.message : String(error);\n // Truncate to prevent raw CLI output from flooding the panel\n const msg = rawMsg.length > 300 ? rawMsg.slice(0, 300) + \"...\" : rawMsg;\n sendAgentIPC(\"agent.streamChunk\", {\n agentId, taskId, model,\n content: `\\nError: ${msg}\\n`,\n });\n }\n\n sendAgentIPC(\"agent.taskUpdate\", { agentId, taskId, status: \"completed\" });\n }\n\n sendAgentIPC(\"agent.register\", {\n agentId,\n agentName,\n teamName,\n model,\n role,\n });\n\n const keepAlive = setInterval(() => {\n // Keep event loop alive for IPC mode.\n }, 60_000);\n\n const shutdown = (): void => {\n clearInterval(keepAlive);\n process.exit(0);\n };\n\n process.on(\"message\", (raw: unknown) => {\n if (!isIPCMessage(raw)) {\n return;\n }\n\n if (raw.method === \"hub.taskAssign\") {\n const taskId = typeof raw.params[\"taskId\"] === \"string\"\n ? raw.params[\"taskId\"]\n : randomUUID();\n const subject = typeof raw.params[\"subject\"] === \"string\"\n ? raw.params[\"subject\"]\n : \"\";\n const description = typeof raw.params[\"description\"] === \"string\"\n ? raw.params[\"description\"]\n : \"\";\n\n void processTask(taskId, description || subject || \"Describe what you can help with.\");\n return;\n }\n\n if (raw.method === \"hub.shutdown\") {\n shutdown();\n }\n });\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n // Keep the child process alive for IPC task dispatch.\n await new Promise<void>(() => {});\n return true;\n}\n\nasync function main(): Promise<void> {\n const rawArgs = [...process.argv.slice(2)];\n\n if (process.argv.includes(\"--no-color\")) {\n process.env[\"NO_COLOR\"] = \"1\";\n }\n\n if (process.argv.includes(\"--verbose\")) {\n process.env[\"AEMEATHCLI_LOG_LEVEL\"] = process.env[\"AEMEATHCLI_LOG_LEVEL\"] ?? \"debug\";\n }\n\n if (await maybeRunAgentMode(rawArgs)) {\n return;\n }\n\n const program = new Command()\n .name(\"aemeathcli\")\n .description(\n \"Multi-model coding CLI with chat, orchestration, and provider-aware automation workflows\",\n )\n .version(PACKAGE_VERSION, \"-v, --version\")\n .argument(\"[message...]\", \"Initial prompt to send\")\n .option(\"-m, --model <model>\", \"Override model for this session\")\n .option(\"-r, --role <role>\", \"Set the task role\")\n .option(\"--verbose\", \"Enable verbose output\")\n .option(\"--no-color\", \"Disable colored output\")\n .showSuggestionAfterError()\n .showHelpAfterError()\n .addHelpText(\n \"after\",\n [\n \"\",\n \"Examples:\",\n \" aemeathcli\",\n \" aemeathcli \\\"explain this repository\\\"\",\n \" aemeathcli chat --print \\\"summarize the latest diff\\\"\",\n \" aemeathcli # use Shift+Tab inside the TUI to switch into swarm mode\",\n ].join(\"\\n\"),\n );\n\n // Register subcommands\n program.addCommand(createChatCommand());\n program.addCommand(createPlanCommand());\n program.addCommand(createReviewCommand());\n program.addCommand(createTestCommand());\n program.addCommand(createConfigCommand());\n program.addCommand(createAuthCommand());\n program.addCommand(createLoginCommand());\n program.addCommand(createTeamCommand());\n program.addCommand(createInstallCommand());\n\n // Default action (no subcommand)\n program.action(async (messageParts: string[], options: Record<string, unknown>) => {\n let message = messageParts.join(\" \") || undefined;\n\n // Support reading initial prompt from file (used by split-panel mode\n // where each agent pane is launched with AEMEATHCLI_PROMPT_FILE pointing\n // to a temp file containing the agent's task prompt).\n let isAgentPane = false;\n if (message === undefined) {\n const promptFilePath = process.env[\"AEMEATHCLI_PROMPT_FILE\"];\n if (promptFilePath !== undefined && promptFilePath.length > 0) {\n try {\n const { readFileSync } = await import(\"node:fs\");\n message = readFileSync(promptFilePath, \"utf-8\").trim();\n isAgentPane = true;\n } catch {\n // Prompt file not found — continue without initial message\n }\n }\n }\n\n await runChatCommand({\n initialMessage: message,\n model: options[\"model\"] as string | undefined,\n role: options[\"role\"] as string | undefined,\n isAgentPane,\n streaming: true,\n });\n });\n\n // Check for updates (non-blocking, per PRD section 19.3)\n if (shouldCheckForUpdates(process.argv.slice(2))) {\n checkForUpdates();\n }\n\n // Parse and execute\n try {\n await program.parseAsync(process.argv);\n } catch (error: unknown) {\n if (error instanceof Error) {\n process.stderr.write(pc.red(`Error: ${error.message}\\n`));\n }\n process.exitCode = 1;\n }\n}\n\nfunction shouldCheckForUpdates(args: readonly string[]): boolean {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n return false;\n }\n\n return !args.some((arg) => [\"--help\", \"-h\", \"--version\", \"-v\"].includes(arg));\n}\n\nfunction checkForUpdates(): void {\n // Lazy-load to keep startup fast\n import(\"update-notifier\")\n .then(({ default: updateNotifier }) => {\n const notifier = updateNotifier({\n pkg: { name: \"aemeathcli\", version: PACKAGE_VERSION },\n updateCheckInterval: 1000 * 60 * 60 * 24, // 24 hours\n });\n notifier.notify({ isGlobal: true });\n })\n .catch(() => {\n // Silently ignore update check failures\n });\n}\n\nmain().catch((error: unknown) => {\n process.stderr.write(\n pc.red(`Fatal error: ${error instanceof Error ? error.message : String(error)}\\n`),\n );\n process.exit(1);\n});\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { CredentialStore } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import
|
|
6
|
-
import './chunk-
|
|
7
|
-
import { logger } from './chunk-
|
|
8
|
-
import './chunk-
|
|
1
|
+
import { CredentialStore } from './chunk-SNWPI6XJ.js';
|
|
2
|
+
import './chunk-YCCYXDW7.js';
|
|
3
|
+
import './chunk-OPWAFS6Y.js';
|
|
4
|
+
import { AuthenticationError } from './chunk-ZGOHARPV.js';
|
|
5
|
+
import './chunk-HCIHOHLX.js';
|
|
6
|
+
import './chunk-2Y7TR6BS.js';
|
|
7
|
+
import { logger } from './chunk-IR5HLBMH.js';
|
|
8
|
+
import './chunk-D275MCIH.js';
|
|
9
9
|
import { existsSync, readFileSync } from 'fs';
|
|
10
10
|
import { join } from 'path';
|
|
11
11
|
import { homedir } from 'os';
|
|
@@ -153,5 +153,5 @@ var CodexLogin = class {
|
|
|
153
153
|
};
|
|
154
154
|
|
|
155
155
|
export { CodexLogin };
|
|
156
|
-
//# sourceMappingURL=codex-login-
|
|
157
|
-
//# sourceMappingURL=codex-login-
|
|
156
|
+
//# sourceMappingURL=codex-login-LW5X7GAM.js.map
|
|
157
|
+
//# sourceMappingURL=codex-login-LW5X7GAM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/auth/providers/codex-login.ts"],"names":[],"mappings":"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","file":"codex-login-LW5X7GAM.js","sourcesContent":["/**\n * Codex (OpenAI) delegated authentication\n * Spawns `codex login` which opens the browser automatically for ChatGPT login.\n * After login, reads cached tokens from ~/.codex/auth.json.\n */\n\nimport { readFileSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { execa } from \"execa\";\nimport type { ICredential } from \"../../types/index.js\";\nimport { AuthenticationError } from \"../../types/index.js\";\nimport { CredentialStore } from \"../credential-store.js\";\nimport { logger } from \"../../utils/index.js\";\n\n// ── Codex CLI Token Paths ───────────────────────────────────────────────\n\nconst CLI_COMMAND = \"codex\";\n\nfunction getCodexHome(): string {\n return process.env[\"CODEX_HOME\"] ?? join(homedir(), \".codex\");\n}\n\nfunction getAuthJsonPath(): string {\n return join(getCodexHome(), \"auth.json\");\n}\n\n// ── auth.json Schema ────────────────────────────────────────────────────\n\ninterface ICodexAuthJson {\n readonly OPENAI_API_KEY?: string | null;\n readonly tokens?: {\n readonly id_token?: string;\n readonly access_token?: string;\n readonly refresh_token?: string;\n readonly account_id?: string;\n };\n readonly last_refresh?: string;\n}\n\nfunction readCodexAuthJson(): ICodexAuthJson | undefined {\n const authPath = getAuthJsonPath();\n if (!existsSync(authPath)) {\n return undefined;\n }\n\n try {\n const raw = readFileSync(authPath, \"utf-8\");\n return JSON.parse(raw) as ICodexAuthJson;\n } catch {\n return undefined;\n }\n}\n\nfunction extractEmailFromIdToken(idToken: string): string | undefined {\n try {\n const payload = idToken.split(\".\")[1];\n if (!payload) return undefined;\n const decoded = JSON.parse(Buffer.from(payload, \"base64url\").toString(\"utf8\")) as {\n email?: string;\n };\n return decoded.email;\n } catch {\n return undefined;\n }\n}\n\n// ── CodexLogin Class ────────────────────────────────────────────────────\n\nexport class CodexLogin {\n private readonly credentialStore: CredentialStore;\n\n constructor(store?: CredentialStore) {\n this.credentialStore = store ?? new CredentialStore();\n }\n\n /**\n * Spawn `codex login` which opens the browser automatically for ChatGPT login,\n * then read the cached tokens from ~/.codex/auth.json.\n */\n async login(): Promise<ICredential> {\n // Check if already logged in via cached tokens\n const existing = this.readCachedCredentials();\n if (existing) {\n logger.info(\"Found existing Codex credentials in ~/.codex/auth.json\");\n await this.credentialStore.set(\"openai\", existing);\n return existing;\n }\n\n // Check if the CLI is available\n const cliAvailable = await this.isCliAvailable();\n if (!cliAvailable) {\n throw new AuthenticationError(\n \"openai\",\n \"Codex CLI not found. Install it first:\\n\" +\n \" npm install -g @openai/codex\\n\" +\n \"Or set an API key: aemeathcli auth set-key codex <key>\",\n );\n }\n\n // Spawn `codex login` — browser opens automatically\n logger.info(\"Spawning codex login (browser will open automatically)\");\n try {\n await this.spawnInteractive(CLI_COMMAND, [\"login\"]);\n } catch {\n // Try device auth as fallback for headless environments\n try {\n await this.spawnInteractive(CLI_COMMAND, [\"login\", \"--device-auth\"]);\n } catch {\n throw new AuthenticationError(\n \"openai\",\n \"Codex login failed. Make sure you have the Codex CLI installed:\\n\" +\n \" npm install -g @openai/codex\\n\" +\n \"Or set an API key: aemeathcli auth set-key codex <key>\",\n );\n }\n }\n\n // Read the freshly cached credentials\n const credential = this.readCachedCredentials();\n if (!credential) {\n throw new AuthenticationError(\n \"openai\",\n \"No credentials found after Codex login. Please try again or set an API key: aemeathcli auth set-key codex <key>\",\n );\n }\n\n await this.credentialStore.set(\"openai\", credential);\n logger.info(\"Codex credentials imported successfully\");\n return credential;\n }\n\n async logout(): Promise<void> {\n await this.credentialStore.delete(\"openai\");\n logger.info(\"OpenAI session revoked from AemeathCLI\");\n }\n\n async isLoggedIn(): Promise<boolean> {\n const credential = this.readCachedCredentials();\n if (!credential) {\n return false;\n }\n\n await this.credentialStore.set(\"openai\", credential);\n return true;\n }\n\n async getStatus(): Promise<{ loggedIn: boolean; email?: string | undefined; plan?: string | undefined }> {\n const loggedIn = await this.isLoggedIn();\n if (!loggedIn) return { loggedIn: false };\n\n const credential = await this.credentialStore.get(\"openai\");\n if (!credential) return { loggedIn: false };\n\n return {\n loggedIn: true,\n ...(credential.email !== undefined ? { email: credential.email } : {}),\n };\n }\n\n async getCachedCredential(): Promise<ICredential | undefined> {\n const credential = this.readCachedCredentials();\n if (credential) {\n await this.credentialStore.set(\"openai\", credential);\n }\n return credential;\n }\n\n // ── Internal ──────────────────────────────────────────────────────────\n\n private readCachedCredentials(): ICredential | undefined {\n const authData = readCodexAuthJson();\n if (!authData) return undefined;\n\n if (authData.tokens?.access_token) {\n const email = authData.tokens.id_token\n ? extractEmailFromIdToken(authData.tokens.id_token)\n : undefined;\n\n return {\n provider: \"openai\",\n method: \"native_login\",\n token: authData.tokens.access_token,\n ...(authData.tokens.refresh_token !== undefined ? { refreshToken: authData.tokens.refresh_token } : {}),\n ...(email !== undefined ? { email } : {}),\n };\n }\n\n if (authData.OPENAI_API_KEY && typeof authData.OPENAI_API_KEY === \"string\") {\n return {\n provider: \"openai\",\n method: \"api_key\",\n token: authData.OPENAI_API_KEY,\n };\n }\n\n return undefined;\n }\n\n private async spawnInteractive(command: string, args: readonly string[]): Promise<void> {\n await execa(command, [...args], { stdio: \"inherit\", timeout: 300_000 });\n }\n\n private async isCliAvailable(): Promise<boolean> {\n try {\n await execa(CLI_COMMAND, [\"--version\"], { timeout: 5000, stdin: \"ignore\", stdout: \"ignore\", stderr: \"ignore\" });\n return true;\n } catch {\n return false;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ConfigStore } from './chunk-WXIN65UG.js';
|
|
2
|
+
import './chunk-M3FPQSRU.js';
|
|
3
|
+
import './chunk-2Y7TR6BS.js';
|
|
4
|
+
import './chunk-IR5HLBMH.js';
|
|
5
|
+
import './chunk-D275MCIH.js';
|
|
6
|
+
//# sourceMappingURL=config-store-NF56VHFU.js.map
|
|
7
|
+
//# sourceMappingURL=config-store-NF56VHFU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"config-store-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"config-store-NF56VHFU.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"conversation-store-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"conversation-store-7GRDQZD2.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"detect-providers-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"detect-providers-QICJ5U3R.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"executor-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"executor-FTABX2AW.js"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { detectInstalledProviders } from './chunk-
|
|
2
|
-
import { CLI_PROVIDER_ORDER, getCliProviderEntry } from './chunk-
|
|
3
|
-
import { ConfigStore } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import { PACKAGE_VERSION, DEFAULT_CONFIG } from './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import { getConfigPath } from './chunk-
|
|
1
|
+
import { detectInstalledProviders } from './chunk-NQEUK763.js';
|
|
2
|
+
import { CLI_PROVIDER_ORDER, getCliProviderEntry } from './chunk-LQBALETG.js';
|
|
3
|
+
import { ConfigStore } from './chunk-WXIN65UG.js';
|
|
4
|
+
import './chunk-M3FPQSRU.js';
|
|
5
|
+
import { PACKAGE_VERSION, DEFAULT_CONFIG } from './chunk-2Y7TR6BS.js';
|
|
6
|
+
import './chunk-IR5HLBMH.js';
|
|
7
|
+
import { getConfigPath } from './chunk-D275MCIH.js';
|
|
8
8
|
import { existsSync } from 'fs';
|
|
9
9
|
import pc from 'picocolors';
|
|
10
10
|
|
|
@@ -41,19 +41,19 @@ function ensureDefaultConfig() {
|
|
|
41
41
|
async function createFirstRunLogin(provider) {
|
|
42
42
|
switch (provider) {
|
|
43
43
|
case "claude": {
|
|
44
|
-
const { ClaudeLogin } = await import('./claude-login-
|
|
44
|
+
const { ClaudeLogin } = await import('./claude-login-AIFIWTYF.js');
|
|
45
45
|
return new ClaudeLogin();
|
|
46
46
|
}
|
|
47
47
|
case "codex": {
|
|
48
|
-
const { CodexLogin } = await import('./codex-login-
|
|
48
|
+
const { CodexLogin } = await import('./codex-login-LW5X7GAM.js');
|
|
49
49
|
return new CodexLogin();
|
|
50
50
|
}
|
|
51
51
|
case "gemini": {
|
|
52
|
-
const { GeminiLogin } = await import('./gemini-login-
|
|
52
|
+
const { GeminiLogin } = await import('./gemini-login-TST454MX.js');
|
|
53
53
|
return new GeminiLogin();
|
|
54
54
|
}
|
|
55
55
|
case "kimi": {
|
|
56
|
-
const { KimiLogin } = await import('./kimi-login-
|
|
56
|
+
const { KimiLogin } = await import('./kimi-login-3IGVOBJI.js');
|
|
57
57
|
return new KimiLogin();
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -226,5 +226,5 @@ async function runFirstRunSetup(options = {}) {
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
export { createInitialConfig, ensureDefaultConfig, hasGlobalConfig, isInteractiveTerminal, runFirstRunSetup };
|
|
229
|
-
//# sourceMappingURL=first-run-
|
|
230
|
-
//# sourceMappingURL=first-run-
|
|
229
|
+
//# sourceMappingURL=first-run-ADROZVYF.js.map
|
|
230
|
+
//# sourceMappingURL=first-run-ADROZVYF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/setup/first-run.ts"],"names":["store"],"mappings":"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","file":"first-run-ADROZVYF.js","sourcesContent":["import { existsSync } from \"node:fs\";\n\nimport pc from \"picocolors\";\n\nimport type { CliProviderType } from \"../../orchestrator/constants.js\";\nimport { CLI_PROVIDER_ORDER, getCliProviderEntry, type LoginProvider } from \"../../orchestrator/utils/provider-catalog.js\";\nimport { detectInstalledProviders } from \"../../orchestrator/utils/detect-providers.js\";\nimport { ConfigStore } from \"../../storage/config-store.js\";\nimport { DEFAULT_CONFIG, type IGlobalConfig } from \"../../types/config.js\";\nimport { getConfigPath } from \"../../utils/pathResolver.js\";\nimport { PACKAGE_VERSION } from \"../../version.js\";\n\ninterface IFirstRunLogin {\n login(): Promise<unknown>;\n}\n\nexport interface FirstRunSetupOptions {\n readonly defaults?: boolean;\n readonly force?: boolean;\n}\n\nexport interface FirstRunSetupResult {\n readonly configPath: string;\n readonly created: boolean;\n readonly config: IGlobalConfig;\n}\n\nexport function hasGlobalConfig(): boolean {\n return existsSync(getConfigPath());\n}\n\nexport function isInteractiveTerminal(): boolean {\n return process.stdin.isTTY && process.stdout.isTTY;\n}\n\nexport function createInitialConfig(): IGlobalConfig {\n return {\n ...DEFAULT_CONFIG,\n version: PACKAGE_VERSION,\n };\n}\n\nexport function ensureDefaultConfig(): FirstRunSetupResult {\n const store = new ConfigStore();\n const configPath = getConfigPath();\n\n if (hasGlobalConfig()) {\n return {\n configPath,\n created: false,\n config: store.loadGlobal(),\n };\n }\n\n const config = createInitialConfig();\n store.saveGlobal(config);\n\n return {\n configPath,\n created: true,\n config,\n };\n}\n\nasync function createFirstRunLogin(provider: LoginProvider): Promise<IFirstRunLogin> {\n switch (provider) {\n case \"claude\": {\n const { ClaudeLogin } = await import(\"../../auth/providers/claude-login.js\");\n return new ClaudeLogin();\n }\n case \"codex\": {\n const { CodexLogin } = await import(\"../../auth/providers/codex-login.js\");\n return new CodexLogin();\n }\n case \"gemini\": {\n const { GeminiLogin } = await import(\"../../auth/providers/gemini-login.js\");\n return new GeminiLogin();\n }\n case \"kimi\": {\n const { KimiLogin } = await import(\"../../auth/providers/kimi-login.js\");\n return new KimiLogin();\n }\n }\n}\n\nfunction writeWelcomeBanner(): void {\n process.stdout.write(\n [\n \"\",\n pc.cyan(\" ╔══════════════════════════════════════════════╗\"),\n pc.cyan(\" ║ Welcome to AemeathCLI ║\"),\n pc.cyan(` ║ Multi-Model CLI Coding Tool v${PACKAGE_VERSION.padEnd(10)} ║`),\n pc.cyan(\" ╚══════════════════════════════════════════════╝\"),\n \"\",\n \" Let's get you set up:\",\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nexport async function runFirstRunSetup(\n options: FirstRunSetupOptions = {},\n): Promise<FirstRunSetupResult> {\n const configPath = getConfigPath();\n if (hasGlobalConfig() && !options.force) {\n const store = new ConfigStore();\n return {\n configPath,\n created: false,\n config: store.loadGlobal(),\n };\n }\n\n const store = new ConfigStore();\n const config = createInitialConfig();\n const detectedProviders = detectInstalledProviders();\n\n if (options.defaults || !isInteractiveTerminal()) {\n const defaultPrimaryMasterProvider = detectedProviders[0];\n const configWithDefaults: IGlobalConfig = {\n ...config,\n swarm: {\n onboardingComplete: true,\n detectedProviders,\n primaryMasterProvider: defaultPrimaryMasterProvider,\n fallbackMasterProviders: detectedProviders.slice(1),\n },\n };\n store.saveGlobal(configWithDefaults);\n\n const modeLabel = options.defaults ? \"defaults\" : \"non-interactive defaults\";\n process.stdout.write(\n `${pc.green(\"✓\")} Saved ${modeLabel} to ${pc.cyan(configPath)}\\n`,\n );\n\n return {\n configPath,\n created: true,\n config: configWithDefaults,\n };\n }\n\n const { checkbox, confirm, select } = await import(\"@inquirer/prompts\");\n\n writeWelcomeBanner();\n\n const detectedLines = CLI_PROVIDER_ORDER.map((provider) => {\n const entry = getCliProviderEntry(provider);\n const installed = detectedProviders.includes(provider);\n return ` ${installed ? pc.green(\"✓\") : pc.dim(\"○\")} ${entry.label} — ${installed ? \"installed\" : \"not detected\"}`;\n });\n process.stdout.write(`${detectedLines.join(\"\\n\")}\\n\\n`);\n\n const loginChoices = CLI_PROVIDER_ORDER\n .map((provider) => {\n const entry = getCliProviderEntry(provider);\n if (entry.loginProvider === undefined) {\n return undefined;\n }\n\n const installed = detectedProviders.includes(provider);\n return {\n name: `${entry.label}${installed ? \"\" : \" (not detected, login only)\"}`,\n value: entry.loginProvider,\n checked: installed && provider !== \"kimi-cli\",\n };\n })\n .filter((choice): choice is { name: string; value: LoginProvider; checked: boolean } => choice !== undefined);\n\n const selectedLoginProviders = await checkbox<LoginProvider>({\n message: \"Which providers should be authenticated during setup?\",\n choices: loginChoices,\n });\n\n for (const provider of selectedLoginProviders) {\n process.stdout.write(pc.cyan(` Logging in to ${provider}...\\n`));\n try {\n const login = await createFirstRunLogin(provider);\n await login.login();\n process.stdout.write(pc.green(` ✓ ${provider} — Logged in successfully\\n`));\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stdout.write(pc.yellow(` ! ${provider} — Login skipped: ${message}\\n`));\n }\n }\n\n if (detectedProviders.includes(\"ollama\")) {\n process.stdout.write(pc.green(\" ✓ ollama — Local agent runtime detected\\n\"));\n }\n\n let primaryMasterProvider: CliProviderType | undefined;\n let fallbackMasterProviders: CliProviderType[] = [];\n\n if (detectedProviders.length > 0) {\n primaryMasterProvider = await select<CliProviderType>({\n message: \"Choose the primary master agent provider for swarm orchestration:\",\n choices: detectedProviders.map((provider) => ({\n name: `${getCliProviderEntry(provider).label} — ${getCliProviderEntry(provider).description}`,\n value: provider,\n })),\n });\n\n const remainingProviders = detectedProviders.filter(\n (provider) => provider !== primaryMasterProvider,\n );\n\n if (remainingProviders.length > 0) {\n fallbackMasterProviders = await checkbox<CliProviderType>({\n message: \"Select optional fallback master-agent providers:\",\n choices: remainingProviders.map((provider) => ({\n name: `${getCliProviderEntry(provider).label} — ${getCliProviderEntry(provider).description}`,\n value: provider,\n })),\n });\n }\n } else {\n process.stdout.write(\n `${pc.yellow(\" !\")} No supported native agent CLIs were detected. You can still use direct chat, but swarm orchestration will stay limited until one is installed.\\n`,\n );\n }\n\n const keepRoleDefaults = await confirm({\n message: \"Keep the recommended role-routing defaults?\",\n default: true,\n });\n\n const configuredProviders: IGlobalConfig[\"providers\"] = {\n ...config.providers,\n };\n for (const provider of detectedProviders) {\n const entry = getCliProviderEntry(provider);\n configuredProviders[entry.provider] = {\n ...configuredProviders[entry.provider],\n enabled: true,\n };\n }\n\n const finalConfig: IGlobalConfig = {\n ...config,\n roles: keepRoleDefaults ? DEFAULT_CONFIG.roles : config.roles,\n providers: configuredProviders,\n swarm: {\n onboardingComplete: true,\n detectedProviders,\n primaryMasterProvider,\n fallbackMasterProviders,\n },\n };\n\n store.saveGlobal(finalConfig);\n\n process.stdout.write(\n [\n \"\",\n ` ${pc.green(\"✓\")} Configuration saved to ${pc.cyan(configPath)}`,\n \"\",\n ` Swarm primary: ${primaryMasterProvider ? getCliProviderEntry(primaryMasterProvider).label : \"not set\"}`,\n ` Swarm fallbacks: ${fallbackMasterProviders.length > 0 ? fallbackMasterProviders.map(getCliProviderEntry).map((entry) => entry.label).join(\", \") : \"none\"}`,\n \"\",\n \" Ready. Start with `aemeathcli` or `ac`.\",\n \" Use Shift+Tab inside the TUI to switch between swarm, guided edits, and direct chat.\",\n \"\",\n ].join(\"\\n\"),\n );\n\n return {\n configPath,\n created: true,\n config: finalConfig,\n };\n}\n"]}
|