Add LinkBuildingConfig and link_builder agent to config

- New LinkBuildingConfig dataclass (blm_dir, watch_folder, interval, ratio)
- YAML loading block and BLM_DIR env var override in load_config()
- Link Building skill_map entry with field mappings in config.yaml
- link_building section in config.yaml
- link_builder agent definition in agents section

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
cora-start
PeninsulaInd 2026-02-19 20:01:55 -06:00
parent 0becf1dd89
commit e2dca938a1
2 changed files with 42 additions and 0 deletions

View File

@ -66,6 +66,14 @@ class EmailConfig:
enabled: bool = False
@dataclass
class LinkBuildingConfig:
blm_dir: str = "E:/dev/Big-Link-Man"
watch_folder: str = "" # empty = disabled
watch_interval_minutes: int = 60
default_branded_plus_ratio: float = 0.7
@dataclass
class AgentConfig:
"""Per-agent configuration for multi-agent support."""
@ -94,6 +102,7 @@ class Config:
clickup: ClickUpConfig = field(default_factory=ClickUpConfig)
press_advantage: PressAdvantageConfig = field(default_factory=PressAdvantageConfig)
email: EmailConfig = field(default_factory=EmailConfig)
link_building: LinkBuildingConfig = field(default_factory=LinkBuildingConfig)
agents: list[AgentConfig] = field(default_factory=lambda: [AgentConfig()])
# Derived paths
@ -141,6 +150,10 @@ def load_config() -> Config:
for k, v in data["email"].items():
if hasattr(cfg.email, k):
setattr(cfg.email, k, v)
if "link_building" in data and isinstance(data["link_building"], dict):
for k, v in data["link_building"].items():
if hasattr(cfg.link_building, k):
setattr(cfg.link_building, k, v)
# Multi-agent configs
if "agents" in data and isinstance(data["agents"], list):
@ -190,6 +203,10 @@ def load_config() -> Config:
cfg.email.default_to = default_to
cfg.email.enabled = bool(cfg.email.username and cfg.email.password)
# Link Building env var overrides
if blm_dir := os.getenv("BLM_DIR"):
cfg.link_building.blm_dir = blm_dir
# Ensure data directories exist
cfg.data_dir.mkdir(parents=True, exist_ok=True)
(cfg.data_dir / "uploads").mkdir(exist_ok=True)

View File

@ -56,6 +56,26 @@ clickup:
company_name: "Client"
target_url: "IMSURL"
branded_url: "SocialURL"
"Link Building":
tool: "run_link_building"
auto_execute: false
complete_status: "complete"
error_status: "internal review"
field_mapping:
lb_method: "LB Method"
project_name: "task_name"
money_site_url: "IMSURL"
custom_anchors: "CustomAnchors"
branded_plus_ratio: "BrandedPlusRatio"
cli_flags: "CLIFlags"
xlsx_path: "CoraFile"
# Link Building settings
link_building:
blm_dir: "E:/dev/Big-Link-Man"
watch_folder: "Z:/cora-inbox"
watch_interval_minutes: 60
default_branded_plus_ratio: 0.7
# Multi-agent configuration
# Each agent gets its own personality, tool whitelist, and memory scope.
@ -85,3 +105,8 @@ agents:
personality_file: "" # future: identity/OPS.md
tools: [run_command, delegate_task, list_files, read_file, remember, search_memory]
memory_scope: ""
- name: link_builder
display_name: Link Builder
tools: [run_link_building, run_cora_backlinks, blm_ingest_cora, blm_generate_batch, scan_cora_folder, delegate_task, remember, search_memory]
memory_scope: ""