from investibook.core.workspace_setup import ( _populate_workspace_dotenv_from_server, _refresh_available_skills, ) def test_refresh_available_skills_replaces_managed_and_preserves_workspace_only( monkeypatch, tmp_path ): source = tmp_path / "agentkit-skills" current = source / "builtin" / "artifact" current.mkdir(parents=True) (current / "SKILL.md").write_text("# current\n") available = tmp_path / "workspace" / ".opencode" / ".all-skills" stale = available / "builtin" / "artifact" stale.mkdir(parents=True) (stale / "SKILL.md").write_text("# stale\n") (stale / "removed.py").write_text("stale\n") workspace_only = available / "custom-source" / "customer-skill" workspace_only.mkdir(parents=True) (workspace_only / "SKILL.md").write_text("# custom\n") from investibook import config as cfg monkeypatch.setattr(cfg, "AGENTKIT_SKILLS_DIR", source) _refresh_available_skills(available) assert (stale / "SKILL.md").read_text() == "# current\n" assert not (stale / "removed.py").exists() assert (workspace_only / "SKILL.md").read_text() == "# custom\n" def test_populate_workspace_dotenv_rewrites_managed_runtime_block(monkeypatch, tmp_path): monkeypatch.setenv("SKILL_CLINIC_API_KEY", "clinic-secret") monkeypatch.setenv("SKILL_GITHUB_TOKEN", "gh-secret") workspace_dir = tmp_path / "ws-replay" workspace_dir.mkdir() (workspace_dir / ".env").write_text("CUSTOM_FLAG=1\n") _populate_workspace_dotenv_from_server(workspace_dir) env_text = (workspace_dir / ".env").read_text() assert "CUSTOM_FLAG=1" not in env_text assert "CLINIC_DIAGNOSTIC_DOWNLOAD_DIR=" not in env_text assert 'CLINIC_API_KEY="clinic-secret"' in env_text assert 'GITHUB_TOKEN="gh-secret"' in env_text def test_populate_workspace_dotenv_includes_logstats_env(monkeypatch, tmp_path): monkeypatch.setenv("INVESTIBOOK_LOGSTATS_BACKEND", "athena") monkeypatch.setenv("INVESTIBOOK_LOGSTATS_AWS_ACCESS_KEY_ID", "test-key") workspace_dir = tmp_path / "ws-logstats" workspace_dir.mkdir() _populate_workspace_dotenv_from_server(workspace_dir) env_text = (workspace_dir / ".env").read_text() assert 'INVESTIBOOK_LOGSTATS_BACKEND="athena"' in env_text assert 'INVESTIBOOK_LOGSTATS_AWS_ACCESS_KEY_ID="test-key"' in env_text