Skip to content

Commit

Permalink
Rename nalgonda > platform (#30)
Browse files Browse the repository at this point in the history
Get rid of the Nalgonda name
  • Loading branch information
bonk1t authored Mar 24, 2024
1 parent beffb4f commit ac85cd0
Show file tree
Hide file tree
Showing 115 changed files with 301 additions and 291 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
python-version: ${{ matrix.python-version }}
cache: 'poetry'
- run: poetry install
- run: poetry run pytest --cov=nalgonda --cov-report=xml
- run: poetry run pytest --cov=backend --cov-report=xml
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
env:
Expand Down
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -168,5 +168,5 @@ settings.json
*.log.jsonl

# UI folder
nalgonda/ui/*
nalgonda/data/agency_data/*
backend/ui/*
backend/data/agency_data/*
2 changes: 1 addition & 1 deletion Procfile
Original file line number Diff line number Diff line change
@@ -1 +1 @@
web: gunicorn -w 1 -k uvicorn.workers.UvicornWorker --timeout 120 nalgonda.main:app
web: gunicorn -w 1 -k uvicorn.workers.UvicornWorker --timeout 120 backend.main:app
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Project Nalgonda
# AI in Hand Platform

## Overview

Project Nalgonda is an advanced platform designed for the orchestration and operational management of AI-driven swarm agencies. Leveraging [OpenAI Assistants API](https://platform.openai.com/docs/assistants/overview), it enriches the capabilities of the AI agents with specialized skills and a robust management system. Built on a FastAPI framework and employing Firebase Firestore along with OpenAI's GPT models, it enables dynamic agency and agent management at scale.
AI in Hand Platform is a web application designed for the orchestration and operational management of AI-driven swarm agencies. Leveraging [OpenAI Assistants API](https://platform.openai.com/docs/assistants/overview), it enriches the capabilities of the AI agents with specialized skills and a robust management system. Built on a FastAPI framework and employing Firebase Firestore along with OpenAI's GPT models, it enables dynamic agency and agent management at scale.

## Key Components

Expand All @@ -26,17 +26,17 @@ Project Nalgonda is an advanced platform designed for the orchestration and oper

## Installation

Follow these steps for setting up the environment and running the Nalgonda project locally:
Follow these steps for setting up the environment and running the AI in Hand Platform locally:

1. Ensure Python 3.11+ and Node.js 20.10+ are installed.
2. Install Python dependencies either from `requirements.txt` or using Poetry.
3. Configure environment variables in ".env", taking ".env.testing" as a reference point (used only for local development).
4. To set up the frontend:
- For local development: `npm install && npm run start`
- For production: `npm install -g gatsby-cli && npm install --global yarn && yarn install && yarn build` (builds to nalgonda/ui/ directory to be served by FastAPI)
- For production: `npm install -g gatsby-cli && npm install --global yarn && yarn install && yarn build` (builds to backend/ui/ directory to be served by FastAPI)

### Running the Application
Start the FastAPI server with: `uvicorn nalgonda.main:app --reload`
Start the FastAPI server with: `uvicorn backend.main:app --reload`

## Deployment to Heroku

Expand Down
8 changes: 4 additions & 4 deletions app.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"name": "Nalgonda",
"description": "A FastAPI application to manage swarm agencies",
"image": "ainhand/nalgonda",
"repository": "https://github.com/ainhand/nalgonda",
"name": "AI in Hand Platform",
"description": "A web application to manage swarm agencies.",
"image": "ainhand/platform",
"repository": "https://github.com/ai-in-hand/platform",
"keywords": ["python", "fastapi"],
"env": {
"EXAMPLE_SECRET_KEY": {
Expand Down
6 changes: 3 additions & 3 deletions nalgonda/README.md → backend/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Nalgonda Project Overview
# AI in Hand Platform Overview

The Nalgonda project is a comprehensive backend application designed to manage agencies, agents, and their interactions.
It employs a variety of custom skills, data models, persistent storage mechanisms, backend services,
The AI in Hand Platform is a comprehensive web application designed to manage agencies, agents, and their interactions.
It includes a variety of custom skills, data models, persistent storage mechanisms, backend services,
external dependencies, and routed endpoints to deliver a fully functional system for agency management.

## Directory Overview
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Custom Skills Directory

This directory contains a collection of custom skills developed to extend the functionalities of the Nalgonda project.
This directory contains a collection of custom skills developed to extend the functionalities of the AI in Hand Platform.
Each skill performs a specific task and can be called upon when needed.

## Skills and Descriptions
Expand Down
26 changes: 26 additions & 0 deletions backend/custom_skills/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Mapping skill names to actual skill classes
from agency_swarm.tools import CodeInterpreter, Retrieval

from backend.custom_skills.build_directory_tree import BuildDirectoryTree
from backend.custom_skills.generate_proposal import GenerateProposal
from backend.custom_skills.print_all_files_in_path import PrintAllFilesInPath
from backend.custom_skills.print_file_contents import PrintFileContents
from backend.custom_skills.save_lead_to_airtable import SaveLeadToAirtable
from backend.custom_skills.search_web import SearchWeb
from backend.custom_skills.summarize_all_code_in_path import SummarizeAllCodeInPath
from backend.custom_skills.summarize_code import SummarizeCode
from backend.custom_skills.write_and_save_program import WriteAndSaveProgram

SKILL_MAPPING = {
"CodeInterpreter": CodeInterpreter,
"Retrieval": Retrieval,
"BuildDirectoryTree": BuildDirectoryTree,
"GenerateProposal": GenerateProposal,
"PrintAllFilesInPath": PrintAllFilesInPath,
"PrintFileContents": PrintFileContents,
"SaveLeadToAirtable": SaveLeadToAirtable,
"SearchWeb": SearchWeb,
"SummarizeAllCodeInPath": SummarizeAllCodeInPath,
"SummarizeCode": SummarizeCode,
"WriteAndSaveProgram": WriteAndSaveProgram,
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from agency_swarm import BaseTool
from pydantic import Field, field_validator

from nalgonda.custom_skills.utils import check_directory_traversal
from backend.custom_skills.utils import check_directory_traversal

MAX_LENGTH = 3000

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from agency_swarm import BaseTool
from pydantic import Field

from nalgonda.settings import settings
from nalgonda.utils import get_chat_completion
from backend.settings import settings
from backend.utils import get_chat_completion

USER_PROMPT_PREFIX = "Please draft a proposal for the following project brief: \n"
SYSTEM_MESSAGE = """\
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from agency_swarm import BaseTool
from pydantic import Field, field_validator

from nalgonda.custom_skills.utils import check_directory_traversal, read_file
from backend.custom_skills.utils import check_directory_traversal, read_file


class PrintAllFilesInPath(BaseTool):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from agency_swarm import BaseTool
from pydantic import Field, field_validator

from nalgonda.custom_skills.utils import check_directory_traversal, read_file
from backend.custom_skills.utils import check_directory_traversal, read_file


class PrintFileContents(BaseTool):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
from pyairtable import Api
from pydantic import Field

from nalgonda.repositories.env_config_firestore_storage import EnvConfigFirestoreStorage
from nalgonda.services.env_config_manager import EnvConfigManager
from backend.repositories.env_config_firestore_storage import EnvConfigFirestoreStorage
from backend.services.env_config_manager import EnvConfigManager

logger = logging.getLogger(__name__)

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from agency_swarm import BaseTool
from pydantic import Field

from nalgonda.custom_skills import PrintAllFilesInPath
from nalgonda.settings import settings
from nalgonda.utils import chunk_input_with_token_limit, get_chat_completion
from backend.custom_skills import PrintAllFilesInPath
from backend.settings import settings
from backend.utils import chunk_input_with_token_limit, get_chat_completion

SYSTEM_MESSAGE = """\
Your main job is to handle programming code from SEVERAL FILES. \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from agency_swarm import BaseTool
from pydantic import Field

from nalgonda.custom_skills import PrintFileContents
from nalgonda.settings import settings
from nalgonda.utils import get_chat_completion
from backend.custom_skills import PrintFileContents
from backend.settings import settings
from backend.utils import get_chat_completion

SYSTEM_MESSAGE = """\
Your main job is to handle programming code from A FILE. \
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
from agency_swarm import BaseTool
from pydantic import Field

from nalgonda.constants import AGENCY_DATA_DIR
from nalgonda.services.env_vars_manager import ContextEnvVarsManager
from backend.constants import AGENCY_DATA_DIR
from backend.services.env_vars_manager import ContextEnvVarsManager


class File(BaseTool):
Expand Down
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from firebase_admin import auth
from firebase_admin.exceptions import InvalidArgumentError, UnknownError

from nalgonda.models.auth import User
from backend.models.auth import User

logger = logging.getLogger(__name__)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
from fastapi import Depends
from redis import asyncio as aioredis

from nalgonda.repositories.agency_config_firestore_storage import AgencyConfigFirestoreStorage
from nalgonda.repositories.agent_config_firestore_storage import AgentConfigFirestoreStorage
from nalgonda.repositories.env_config_firestore_storage import EnvConfigFirestoreStorage
from nalgonda.repositories.session_firestore_storage import SessionConfigFirestoreStorage
from nalgonda.services.agency_manager import AgencyManager
from nalgonda.services.agent_manager import AgentManager
from nalgonda.services.caching.redis_cache_manager import RedisCacheManager
from nalgonda.services.session_manager import SessionManager
from nalgonda.settings import settings
from backend.repositories.agency_config_firestore_storage import AgencyConfigFirestoreStorage
from backend.repositories.agent_config_firestore_storage import AgentConfigFirestoreStorage
from backend.repositories.env_config_firestore_storage import EnvConfigFirestoreStorage
from backend.repositories.session_firestore_storage import SessionConfigFirestoreStorage
from backend.services.agency_manager import AgencyManager
from backend.services.agent_manager import AgentManager
from backend.services.caching.redis_cache_manager import RedisCacheManager
from backend.services.session_manager import SessionManager
from backend.settings import settings


def get_redis() -> aioredis.Redis:
Expand Down
File renamed without changes.
2 changes: 2 additions & 0 deletions backend/exceptions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# exceptions.py - Custom exceptions for the AI in Hand Platform
# This file is reserved for custom exception classes.
12 changes: 6 additions & 6 deletions nalgonda/main.py → backend/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@
from pydantic import ValidationError
from starlette.staticfiles import StaticFiles

from nalgonda.utils.logging_utils import setup_logging
from backend.utils.logging_utils import setup_logging

setup_logging()

from nalgonda.constants import BASE_DIR # noqa # isort:skip
from nalgonda.exception_handlers import bad_request_exception_handler, unhandled_exception_handler # noqa # isort:skip
from nalgonda.routers.v1 import v1_router # noqa # isort:skip
from nalgonda.settings import settings # noqa # isort:skip
from nalgonda.utils import init_webserver_folders # noqa # isort:skip
from backend.constants import BASE_DIR # noqa # isort:skip
from backend.exception_handlers import bad_request_exception_handler, unhandled_exception_handler # noqa # isort:skip
from backend.routers.v1 import v1_router # noqa # isort:skip
from backend.settings import settings # noqa # isort:skip
from backend.utils import init_webserver_folders # noqa # isort:skip

# just a placeholder for compatibility with agency-swarm
openai.api_key = "sk-1234567890"
Expand Down
2 changes: 1 addition & 1 deletion nalgonda/models/README.md → backend/models/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Models Directory

This directory contains the data models used across the Nalgonda project.
This directory contains the data models used across the AI in Hand Platform.
These models define the data structures, validation logic, and relationships between data entities.
They are essential for the proper functioning of the application, ensuring data integrity and facilitating data operations.

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Repositories Directory

This directory is responsible for all persistent storage interactions within the Nalgonda project,
This directory is responsible for all persistent storage interactions within the AI in Hand Platform,
particularly with Firestore. It contains implementations for storing, retrieving, and managing configurations
and data for agencies, agents, skills, etc.

Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from firebase_admin import firestore
from google.cloud.firestore_v1 import FieldFilter

from nalgonda.models.agency_config import AgencyConfig
from backend.models.agency_config import AgencyConfig


class AgencyConfigFirestoreStorage:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from firebase_admin import firestore
from google.cloud.firestore_v1 import FieldFilter

from nalgonda.models.agent_config import AgentConfig
from backend.models.agent_config import AgentConfig


class AgentConfigFirestoreStorage:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from firebase_admin import firestore
from google.cloud.firestore_v1 import FieldFilter

from nalgonda.models.session_config import SessionConfig
from backend.models.session_config import SessionConfig


class SessionConfigFirestoreStorage:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from firebase_admin import firestore
from google.cloud.firestore_v1 import FieldFilter

from nalgonda.models.skill_config import SkillConfig
from backend.models.skill_config import SkillConfig


class SkillConfigFirestoreStorage:
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
# nalgonda/routers/v1/api/__init__.py

from fastapi import APIRouter

from .agency import agency_router
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
from fastapi import APIRouter, Depends, HTTPException
from fastapi.params import Query

from nalgonda.dependencies.auth import get_current_user
from nalgonda.dependencies.dependencies import get_agency_manager
from nalgonda.models.agency_config import AgencyConfig
from nalgonda.models.auth import User
from nalgonda.repositories.agency_config_firestore_storage import AgencyConfigFirestoreStorage
from nalgonda.repositories.agent_config_firestore_storage import AgentConfigFirestoreStorage
from nalgonda.services.agency_manager import AgencyManager
from nalgonda.services.env_vars_manager import ContextEnvVarsManager
from backend.dependencies.auth import get_current_user
from backend.dependencies.dependencies import get_agency_manager
from backend.models.agency_config import AgencyConfig
from backend.models.auth import User
from backend.repositories.agency_config_firestore_storage import AgencyConfigFirestoreStorage
from backend.repositories.agent_config_firestore_storage import AgentConfigFirestoreStorage
from backend.services.agency_manager import AgencyManager
from backend.services.env_vars_manager import ContextEnvVarsManager

logger = logging.getLogger(__name__)
agency_router = APIRouter(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
from fastapi import APIRouter, Body, Depends, HTTPException
from fastapi.params import Query

from nalgonda.dependencies.auth import get_current_user
from nalgonda.dependencies.dependencies import get_agent_manager
from nalgonda.models.agent_config import AgentConfig
from nalgonda.models.auth import User
from nalgonda.repositories.agent_config_firestore_storage import AgentConfigFirestoreStorage
from nalgonda.services.agent_manager import AgentManager
from nalgonda.services.env_vars_manager import ContextEnvVarsManager
from backend.dependencies.auth import get_current_user
from backend.dependencies.dependencies import get_agent_manager
from backend.models.agent_config import AgentConfig
from backend.models.auth import User
from backend.repositories.agent_config_firestore_storage import AgentConfigFirestoreStorage
from backend.services.agent_manager import AgentManager
from backend.services.env_vars_manager import ContextEnvVarsManager

logger = logging.getLogger(__name__)
agent_router = APIRouter(tags=["agent"])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@

from fastapi import APIRouter, Depends, HTTPException

from nalgonda.dependencies.auth import get_current_user
from nalgonda.dependencies.dependencies import get_agency_manager
from nalgonda.models.auth import User
from nalgonda.models.request_models import SessionMessagePostRequest
from nalgonda.repositories.agency_config_firestore_storage import AgencyConfigFirestoreStorage
from nalgonda.repositories.env_config_firestore_storage import EnvConfigFirestoreStorage
from nalgonda.repositories.session_firestore_storage import SessionConfigFirestoreStorage
from nalgonda.services.agency_manager import AgencyManager
from nalgonda.services.env_vars_manager import ContextEnvVarsManager
from nalgonda.services.oai_client import get_openai_client
from backend.dependencies.auth import get_current_user
from backend.dependencies.dependencies import get_agency_manager
from backend.models.auth import User
from backend.models.request_models import SessionMessagePostRequest
from backend.repositories.agency_config_firestore_storage import AgencyConfigFirestoreStorage
from backend.repositories.env_config_firestore_storage import EnvConfigFirestoreStorage
from backend.repositories.session_firestore_storage import SessionConfigFirestoreStorage
from backend.services.agency_manager import AgencyManager
from backend.services.env_vars_manager import ContextEnvVarsManager
from backend.services.oai_client import get_openai_client

logger = logging.getLogger(__name__)
message_router = APIRouter(
Expand Down
Loading

0 comments on commit ac85cd0

Please sign in to comment.