aemeathcli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +607 -0
  2. package/dist/App-P4MYD4QY.js +2719 -0
  3. package/dist/App-P4MYD4QY.js.map +1 -0
  4. package/dist/api-key-fallback-YQQBOQIL.js +11 -0
  5. package/dist/api-key-fallback-YQQBOQIL.js.map +1 -0
  6. package/dist/chunk-4IJD72YB.js +184 -0
  7. package/dist/chunk-4IJD72YB.js.map +1 -0
  8. package/dist/chunk-6PDJ45T4.js +325 -0
  9. package/dist/chunk-6PDJ45T4.js.map +1 -0
  10. package/dist/chunk-CARHU3DO.js +562 -0
  11. package/dist/chunk-CARHU3DO.js.map +1 -0
  12. package/dist/chunk-CGEV3ARR.js +80 -0
  13. package/dist/chunk-CGEV3ARR.js.map +1 -0
  14. package/dist/chunk-CS5X3BWX.js +27 -0
  15. package/dist/chunk-CS5X3BWX.js.map +1 -0
  16. package/dist/chunk-CYQNBB25.js +44 -0
  17. package/dist/chunk-CYQNBB25.js.map +1 -0
  18. package/dist/chunk-DAHGLHNR.js +657 -0
  19. package/dist/chunk-DAHGLHNR.js.map +1 -0
  20. package/dist/chunk-H66O5Z2V.js +305 -0
  21. package/dist/chunk-H66O5Z2V.js.map +1 -0
  22. package/dist/chunk-HCIHOHLX.js +322 -0
  23. package/dist/chunk-HCIHOHLX.js.map +1 -0
  24. package/dist/chunk-HMJRPNPZ.js +1031 -0
  25. package/dist/chunk-HMJRPNPZ.js.map +1 -0
  26. package/dist/chunk-I5PZ4JTS.js +119 -0
  27. package/dist/chunk-I5PZ4JTS.js.map +1 -0
  28. package/dist/chunk-IYW62KKR.js +255 -0
  29. package/dist/chunk-IYW62KKR.js.map +1 -0
  30. package/dist/chunk-JAXXTYID.js +51 -0
  31. package/dist/chunk-JAXXTYID.js.map +1 -0
  32. package/dist/chunk-LSOYPSAT.js +183 -0
  33. package/dist/chunk-LSOYPSAT.js.map +1 -0
  34. package/dist/chunk-MFBHNWGV.js +416 -0
  35. package/dist/chunk-MFBHNWGV.js.map +1 -0
  36. package/dist/chunk-MXZSI3AY.js +311 -0
  37. package/dist/chunk-MXZSI3AY.js.map +1 -0
  38. package/dist/chunk-NBR3GHMT.js +72 -0
  39. package/dist/chunk-NBR3GHMT.js.map +1 -0
  40. package/dist/chunk-O3ZF22SW.js +246 -0
  41. package/dist/chunk-O3ZF22SW.js.map +1 -0
  42. package/dist/chunk-SUSJPZU2.js +181 -0
  43. package/dist/chunk-SUSJPZU2.js.map +1 -0
  44. package/dist/chunk-TEVZS4FA.js +310 -0
  45. package/dist/chunk-TEVZS4FA.js.map +1 -0
  46. package/dist/chunk-UY2SYSEZ.js +211 -0
  47. package/dist/chunk-UY2SYSEZ.js.map +1 -0
  48. package/dist/chunk-WAHVZH7V.js +260 -0
  49. package/dist/chunk-WAHVZH7V.js.map +1 -0
  50. package/dist/chunk-WPP3PEDE.js +234 -0
  51. package/dist/chunk-WPP3PEDE.js.map +1 -0
  52. package/dist/chunk-Y5XVD2CD.js +1610 -0
  53. package/dist/chunk-Y5XVD2CD.js.map +1 -0
  54. package/dist/chunk-YL5XFHR3.js +56 -0
  55. package/dist/chunk-YL5XFHR3.js.map +1 -0
  56. package/dist/chunk-ZGOHARPV.js +122 -0
  57. package/dist/chunk-ZGOHARPV.js.map +1 -0
  58. package/dist/claude-adapter-QMLFMSP3.js +6 -0
  59. package/dist/claude-adapter-QMLFMSP3.js.map +1 -0
  60. package/dist/claude-login-5WELXPKT.js +324 -0
  61. package/dist/claude-login-5WELXPKT.js.map +1 -0
  62. package/dist/cli.d.ts +1 -0
  63. package/dist/cli.js +703 -0
  64. package/dist/cli.js.map +1 -0
  65. package/dist/codex-login-7HHLJHBF.js +164 -0
  66. package/dist/codex-login-7HHLJHBF.js.map +1 -0
  67. package/dist/config-store-W6FBCQAQ.js +6 -0
  68. package/dist/config-store-W6FBCQAQ.js.map +1 -0
  69. package/dist/executor-6RIKIGXK.js +4 -0
  70. package/dist/executor-6RIKIGXK.js.map +1 -0
  71. package/dist/gemini-adapter-6JIHZ7WI.js +6 -0
  72. package/dist/gemini-adapter-6JIHZ7WI.js.map +1 -0
  73. package/dist/gemini-login-ZZLYC3J6.js +346 -0
  74. package/dist/gemini-login-ZZLYC3J6.js.map +1 -0
  75. package/dist/index.d.ts +2210 -0
  76. package/dist/index.js +1419 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/kimi-adapter-JN4HFFHU.js +6 -0
  79. package/dist/kimi-adapter-JN4HFFHU.js.map +1 -0
  80. package/dist/kimi-login-CZPS63NK.js +149 -0
  81. package/dist/kimi-login-CZPS63NK.js.map +1 -0
  82. package/dist/native-cli-adapters-OLW3XX57.js +6 -0
  83. package/dist/native-cli-adapters-OLW3XX57.js.map +1 -0
  84. package/dist/ollama-adapter-OJQ3FKWK.js +6 -0
  85. package/dist/ollama-adapter-OJQ3FKWK.js.map +1 -0
  86. package/dist/openai-adapter-XU46EN7B.js +6 -0
  87. package/dist/openai-adapter-XU46EN7B.js.map +1 -0
  88. package/dist/registry-4KD24ZC3.js +6 -0
  89. package/dist/registry-4KD24ZC3.js.map +1 -0
  90. package/dist/registry-H7B3AHPQ.js +5 -0
  91. package/dist/registry-H7B3AHPQ.js.map +1 -0
  92. package/dist/server-manager-PTGBHCLS.js +5 -0
  93. package/dist/server-manager-PTGBHCLS.js.map +1 -0
  94. package/dist/session-manager-ECEEACGY.js +12 -0
  95. package/dist/session-manager-ECEEACGY.js.map +1 -0
  96. package/dist/team-manager-HC4XGCFY.js +11 -0
  97. package/dist/team-manager-HC4XGCFY.js.map +1 -0
  98. package/dist/tmux-manager-GPYZ3WQH.js +6 -0
  99. package/dist/tmux-manager-GPYZ3WQH.js.map +1 -0
  100. package/dist/tools-TSMXMHIF.js +6 -0
  101. package/dist/tools-TSMXMHIF.js.map +1 -0
  102. package/package.json +89 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../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/cli.ts"],"names":["Command","pc","args"],"mappings":"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","file":"cli.js","sourcesContent":["/**\n * Interactive chat mode command per PRD section 18.2\n */\n\nimport { Command } from \"commander\";\nimport type { IGlobalFlags } from \"../flags.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(\"--no-stream\", \"Disable streaming output\")\n .action(async (messageParts: string[], options: Record<string, unknown>) => {\n const message = messageParts.join(\" \");\n\n // Lazy-load the TUI to keep startup fast\n const { startChatSession } = await import(\"../../ui/App.js\");\n\n const model = options[\"model\"] as string | undefined;\n const role = options[\"role\"] as string | undefined;\n const systemPrompt = options[\"system\"] as string | undefined;\n const initialMessage = message || undefined;\n\n await startChatSession({\n ...(initialMessage !== undefined ? { initialMessage } : {}),\n ...(model !== undefined ? { model } : {}),\n ...(role !== undefined ? { role } : {}),\n ...(systemPrompt !== undefined ? { systemPrompt } : {}),\n streaming: options[\"stream\"] !== false,\n });\n });\n\n return chat;\n}\n","/**\n * Planning mode command per PRD section 5.1\n */\n\nimport { Command } from \"commander\";\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 .action(async (messageParts: string[], options: Record<string, unknown>) => {\n const message = messageParts.join(\" \");\n\n const { startChatSession } = await import(\"../../ui/App.js\");\n\n const model = options[\"model\"] as string | undefined;\n const initialMessage = message || undefined;\n\n await startChatSession({\n ...(initialMessage !== undefined ? { initialMessage } : {}),\n ...(model !== undefined ? { model } : {}),\n role: \"planning\",\n streaming: 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\";\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 .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\n const { startChatSession } = await import(\"../../ui/App.js\");\n\n const model = options[\"model\"] as string | undefined;\n\n await startChatSession({\n initialMessage: message,\n ...(model !== undefined ? { model } : {}),\n role: \"review\",\n streaming: true,\n });\n });\n\n return review;\n}\n","/**\n * Testing mode command per PRD section 5.1\n */\n\nimport { Command } from \"commander\";\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 .action(async (messageParts: string[], options: Record<string, unknown>) => {\n const message = messageParts.join(\" \");\n\n const { startChatSession } = await import(\"../../ui/App.js\");\n\n const model = options[\"model\"] as string | undefined;\n\n await startChatSession({\n initialMessage: message || \"Generate tests for the recent changes\",\n ...(model !== undefined ? { model } : {}),\n role: \"testing\",\n streaming: 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 = await 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 = await 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 await 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 .action(async () => {\n try {\n const { runFirstRunSetup } = await import(\"../../ui/App.js\");\n await runFirstRunSetup();\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 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\";\n\nconst VALID_PROVIDERS = [\"claude\", \"codex\", \"gemini\", \"kimi\"] as const;\ntype LoginProvider = (typeof VALID_PROVIDERS)[number];\n\nfunction isValidProvider(value: string): value is LoginProvider {\n return (VALID_PROVIDERS as readonly string[]).includes(value);\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\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 (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 process.stdout.write(pc.cyan(`Logging in to ${provider}...\\n`));\n\n try {\n const loginModule = await loadLoginModule(provider);\n await loginModule.login();\n process.stdout.write(pc.green(`Successfully logged in to ${provider}\\n`));\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 .action(async () => {\n for (const provider of VALID_PROVIDERS) {\n try {\n const loginModule = await loadLoginModule(provider);\n const status = await loginModule.getStatus();\n if (status.loggedIn) {\n process.stdout.write(\n pc.green(` ✓ ${provider}`) +\n ` — Logged in as ${status.email ?? \"unknown\"} (${status.plan ?? \"unknown plan\"})\\n`,\n );\n } else {\n process.stdout.write(pc.red(` ✗ ${provider}`) + \" — Not logged in\\n\");\n }\n } catch {\n process.stdout.write(pc.red(` ✗ ${provider}`) + \" — Not configured\\n\");\n }\n }\n\n try {\n const { ApiKeyFallback } = await import(\"../../auth/api-key-fallback.js\");\n const fallback = new ApiKeyFallback();\n const apiKeyStatus: ReadonlyArray<{ label: string; provider: ProviderName }> = [\n { label: \"Claude\", provider: \"anthropic\" },\n { label: \"OpenAI\", provider: \"openai\" },\n { label: \"Google\", provider: \"google\" },\n { label: \"Kimi\", provider: \"kimi\" },\n ];\n\n process.stdout.write(\"\\nFallback API keys:\\n\");\n for (const item of apiKeyStatus) {\n const hasKey = await fallback.hasKey(item.provider);\n process.stdout.write(` ${item.label}: ${hasKey ? \"set\" : \"not set\"}\\n`);\n }\n } catch {\n // Best-effort status output\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 .action(async (provider: string, key: string) => {\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 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, key);\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","#!/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 } from \"./commands/auth.js\";\nimport { initializeDirectories } from \"../utils/index.js\";\nimport { logger } from \"../utils/index.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\";\n\nconst VERSION = \"1.0.0\";\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\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\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(),\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({\n projectRoot: process.cwd(),\n workingDirectory: process.cwd(),\n permissionMode: \"permissive\" as const,\n allowedPaths: [process.cwd()],\n blockedCommands: [],\n }),\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 toolContext = {\n projectRoot: process.cwd(),\n workingDirectory: process.cwd(),\n permissionMode: \"permissive\" as const,\n allowedPaths: [process.cwd()],\n blockedCommands: [] as string[],\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 if (await maybeRunAgentMode(process.argv.slice(2))) {\n return;\n }\n\n // Initialize directories on startup\n initializeDirectories();\n\n const program = new Command()\n .name(\"aemeathcli\")\n .description(\n \"Next-generation multi-model CLI coding tool with agent teams and split-panel coordination\",\n )\n .version(VERSION, \"-v, --version\")\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 .option(\"--permission-mode <mode>\", \"Permission mode (strict, standard, permissive)\")\n .option(\"--project-root <path>\", \"Override project root detection\");\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\n // Default action (no subcommand) — start interactive chat\n program.action(async (options: Record<string, unknown>, command: Command) => {\n // If extra arguments provided, treat as chat message\n const args = command.args;\n let message = args.length > 0 ? args.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 const { startChatSession } = await import(\"../ui/App.js\");\n\n const model = options[\"model\"] as string | undefined;\n const role = options[\"role\"] as string | undefined;\n\n await startChatSession({\n ...(message !== undefined ? { initialMessage: message } : {}),\n ...(model !== undefined ? { model } : {}),\n ...(role !== undefined ? { role } : {}),\n ...(isAgentPane ? { isAgentPane: true } : {}),\n streaming: true,\n });\n });\n\n // Check for updates (non-blocking, per PRD section 19.3)\n checkForUpdates();\n\n // Parse and execute\n try {\n await program.parseAsync(process.argv);\n } catch (error: unknown) {\n if (error instanceof Error) {\n logger.error({ error: error.message }, \"CLI error\");\n process.stderr.write(pc.red(`Error: ${error.message}\\n`));\n }\n process.exitCode = 1;\n }\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: 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"]}
@@ -0,0 +1,164 @@
1
+ import { CredentialStore } from './chunk-4IJD72YB.js';
2
+ import './chunk-CGEV3ARR.js';
3
+ import './chunk-CYQNBB25.js';
4
+ import './chunk-NBR3GHMT.js';
5
+ import './chunk-CS5X3BWX.js';
6
+ import './chunk-HCIHOHLX.js';
7
+ import { AuthenticationError } from './chunk-ZGOHARPV.js';
8
+ import { logger } from './chunk-JAXXTYID.js';
9
+ import { execFile, spawn } from 'child_process';
10
+ import { promisify } from 'util';
11
+ import { existsSync, readFileSync } from 'fs';
12
+ import { join } from 'path';
13
+ import { homedir } from 'os';
14
+
15
+ var execFileAsync = promisify(execFile);
16
+ var CLI_COMMAND = "codex";
17
+ function getCodexHome() {
18
+ return process.env["CODEX_HOME"] ?? join(homedir(), ".codex");
19
+ }
20
+ function getAuthJsonPath() {
21
+ return join(getCodexHome(), "auth.json");
22
+ }
23
+ function readCodexAuthJson() {
24
+ const authPath = getAuthJsonPath();
25
+ if (!existsSync(authPath)) {
26
+ return void 0;
27
+ }
28
+ try {
29
+ const raw = readFileSync(authPath, "utf-8");
30
+ return JSON.parse(raw);
31
+ } catch {
32
+ return void 0;
33
+ }
34
+ }
35
+ function extractEmailFromIdToken(idToken) {
36
+ try {
37
+ const payload = idToken.split(".")[1];
38
+ if (!payload) return void 0;
39
+ const decoded = JSON.parse(Buffer.from(payload, "base64url").toString("utf8"));
40
+ return decoded.email;
41
+ } catch {
42
+ return void 0;
43
+ }
44
+ }
45
+ var CodexLogin = class {
46
+ credentialStore;
47
+ constructor(store) {
48
+ this.credentialStore = store ?? new CredentialStore();
49
+ }
50
+ /**
51
+ * Spawn `codex login` which opens the browser automatically for ChatGPT login,
52
+ * then read the cached tokens from ~/.codex/auth.json.
53
+ */
54
+ async login() {
55
+ const existing = this.readCachedCredentials();
56
+ if (existing) {
57
+ logger.info("Found existing Codex credentials in ~/.codex/auth.json");
58
+ await this.credentialStore.set("openai", existing);
59
+ return existing;
60
+ }
61
+ const cliAvailable = await this.isCliAvailable();
62
+ if (!cliAvailable) {
63
+ throw new AuthenticationError(
64
+ "openai",
65
+ "Codex CLI not found. Install it first: npm install -g @openai/codex\nOr set an API key: aemeathcli auth set-key codex <key>"
66
+ );
67
+ }
68
+ logger.info("Spawning codex login (browser will open automatically)");
69
+ try {
70
+ await this.spawnInteractive(CLI_COMMAND, ["login"]);
71
+ } catch (error) {
72
+ try {
73
+ await this.spawnInteractive(CLI_COMMAND, ["login", "--device-auth"]);
74
+ } catch {
75
+ const msg = error instanceof Error ? error.message : String(error);
76
+ throw new AuthenticationError("openai", `Codex login failed: ${msg}`);
77
+ }
78
+ }
79
+ const credential = this.readCachedCredentials();
80
+ if (!credential) {
81
+ throw new AuthenticationError(
82
+ "openai",
83
+ "No credentials found after Codex login. Please try again or set an API key: aemeathcli auth set-key codex <key>"
84
+ );
85
+ }
86
+ await this.credentialStore.set("openai", credential);
87
+ logger.info("Codex credentials imported successfully");
88
+ return credential;
89
+ }
90
+ async logout() {
91
+ await this.credentialStore.delete("openai");
92
+ logger.info("OpenAI session revoked from AemeathCLI");
93
+ }
94
+ async isLoggedIn() {
95
+ const credential = this.readCachedCredentials();
96
+ if (!credential) {
97
+ return false;
98
+ }
99
+ await this.credentialStore.set("openai", credential);
100
+ return true;
101
+ }
102
+ async getStatus() {
103
+ const loggedIn = await this.isLoggedIn();
104
+ if (!loggedIn) return { loggedIn: false };
105
+ const credential = await this.credentialStore.get("openai");
106
+ if (!credential) return { loggedIn: false };
107
+ return {
108
+ loggedIn: true,
109
+ ...credential.email !== void 0 ? { email: credential.email } : {}
110
+ };
111
+ }
112
+ async getCachedCredential() {
113
+ const credential = this.readCachedCredentials();
114
+ if (credential) {
115
+ await this.credentialStore.set("openai", credential);
116
+ }
117
+ return credential;
118
+ }
119
+ // ── Internal ──────────────────────────────────────────────────────────
120
+ readCachedCredentials() {
121
+ const authData = readCodexAuthJson();
122
+ if (!authData) return void 0;
123
+ if (authData.tokens?.access_token) {
124
+ const email = authData.tokens.id_token ? extractEmailFromIdToken(authData.tokens.id_token) : void 0;
125
+ return {
126
+ provider: "openai",
127
+ method: "native_login",
128
+ token: authData.tokens.access_token,
129
+ ...authData.tokens.refresh_token !== void 0 ? { refreshToken: authData.tokens.refresh_token } : {},
130
+ ...email !== void 0 ? { email } : {}
131
+ };
132
+ }
133
+ if (authData.OPENAI_API_KEY && typeof authData.OPENAI_API_KEY === "string") {
134
+ return {
135
+ provider: "openai",
136
+ method: "api_key",
137
+ token: authData.OPENAI_API_KEY
138
+ };
139
+ }
140
+ return void 0;
141
+ }
142
+ spawnInteractive(command, args) {
143
+ return new Promise((resolve, reject) => {
144
+ const child = spawn(command, [...args], { stdio: "inherit", timeout: 3e5 });
145
+ child.on("close", (code) => {
146
+ if (code === 0) resolve();
147
+ else reject(new Error(`Process exited with code ${String(code)}`));
148
+ });
149
+ child.on("error", reject);
150
+ });
151
+ }
152
+ async isCliAvailable() {
153
+ try {
154
+ await execFileAsync("which", [CLI_COMMAND], { timeout: 3e3 });
155
+ return true;
156
+ } catch {
157
+ return false;
158
+ }
159
+ }
160
+ };
161
+
162
+ export { CodexLogin };
163
+ //# sourceMappingURL=codex-login-7HHLJHBF.js.map
164
+ //# sourceMappingURL=codex-login-7HHLJHBF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/auth/providers/codex-login.ts"],"names":[],"mappings":"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","file":"codex-login-7HHLJHBF.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 { execFile, spawn } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { readFileSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\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\nconst execFileAsync = promisify(execFile);\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: 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 (error: unknown) {\n // Try device auth as fallback for headless environments\n try {\n await this.spawnInteractive(CLI_COMMAND, [\"login\", \"--device-auth\"]);\n } catch {\n const msg = error instanceof Error ? error.message : String(error);\n throw new AuthenticationError(\"openai\", `Codex login failed: ${msg}`);\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 spawnInteractive(command: string, args: readonly string[]): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, [...args], { stdio: \"inherit\", timeout: 300_000 });\n child.on(\"close\", (code) => {\n if (code === 0) resolve();\n else reject(new Error(`Process exited with code ${String(code)}`));\n });\n child.on(\"error\", reject);\n });\n }\n\n private async isCliAvailable(): Promise<boolean> {\n try {\n await execFileAsync(\"which\", [CLI_COMMAND], { timeout: 3000 });\n return true;\n } catch {\n return false;\n }\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ export { ConfigStore } from './chunk-IYW62KKR.js';
2
+ import './chunk-CYQNBB25.js';
3
+ import './chunk-NBR3GHMT.js';
4
+ import './chunk-JAXXTYID.js';
5
+ //# sourceMappingURL=config-store-W6FBCQAQ.js.map
6
+ //# sourceMappingURL=config-store-W6FBCQAQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"config-store-W6FBCQAQ.js"}
@@ -0,0 +1,4 @@
1
+ export { SkillExecutor } from './chunk-LSOYPSAT.js';
2
+ import './chunk-JAXXTYID.js';
3
+ //# sourceMappingURL=executor-6RIKIGXK.js.map
4
+ //# sourceMappingURL=executor-6RIKIGXK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"executor-6RIKIGXK.js"}
@@ -0,0 +1,6 @@
1
+ export { GeminiAdapter } from './chunk-UY2SYSEZ.js';
2
+ import './chunk-HCIHOHLX.js';
3
+ import './chunk-ZGOHARPV.js';
4
+ import './chunk-JAXXTYID.js';
5
+ //# sourceMappingURL=gemini-adapter-6JIHZ7WI.js.map
6
+ //# sourceMappingURL=gemini-adapter-6JIHZ7WI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"gemini-adapter-6JIHZ7WI.js"}