Files
agent-news/bot/lib/config.dart
matt2dev 7bfe0dfe0c Fix HOME volume mount, genericize topic, add progress statuses, extract lexicon
- Volume was mounted at ~/.claude only, but claude-code writes auth to
  ~/.claude.json too — that file lived on the ephemeral container layer and
  was lost on every recreate. Now the whole $HOME is on the named volume,
  and claude-config moved outside HOME (/app) so it isn't shadowed by it.
- Default /news topic was hardcoded to AI; now it's a configurable
  DEFAULT_TOPIC (plain "главные новости дня"), topic is fully free-form.
- Prompt now instructs Claude to send interim " ..." progress updates via
  send_to_telegram while researching, not just the final digest — a bare
  request like "call this tool" was already taking 3+ minutes end-to-end,
  so silence read as broken.
- All user-facing/prompt text moved into bot/lib/lexicon.dart.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-21 21:53:38 +03:00

38 lines
1000 B
Dart

import 'dart:io';
import 'lexicon.dart';
class Config {
final String telegramToken;
final Set<int> allowedChatIds;
final String defaultTopic;
final int claudeTimeoutSeconds;
final String mcpConfigPath;
Config({
required this.telegramToken,
required this.allowedChatIds,
required this.defaultTopic,
required this.claudeTimeoutSeconds,
required this.mcpConfigPath,
});
factory Config.fromEnv() {
final e = Platform.environment;
final allowed = (e['ALLOWED_CHAT_IDS'] ?? '')
.split(',')
.map((s) => s.trim())
.where((s) => s.isNotEmpty)
.map(int.parse)
.toSet();
return Config(
telegramToken: e['TELEGRAM_BOT_TOKEN'] ?? '',
allowedChatIds: allowed,
defaultTopic: e['DEFAULT_TOPIC'] ?? Lexicon.defaultTopic,
claudeTimeoutSeconds:
int.tryParse(e['CLAUDE_TIMEOUT_SECONDS'] ?? '600') ?? 600,
mcpConfigPath: e['MCP_CONFIG_PATH'] ?? '/app/claude-config/mcp.json',
);
}
}