{"id":28043040,"url":"https://github.com/softwareai-company/softwareai-library-web","last_synced_at":"2025-09-08T18:35:54.935Z","repository":{"id":292064486,"uuid":"979709313","full_name":"SoftwareAI-Company/SoftwareAI-Library-Web","owner":"SoftwareAI-Company","description":null,"archived":false,"fork":false,"pushed_at":"2025-05-10T21:08:44.000Z","size":500,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-05T16:42:51.868Z","etag":null,"topics":["html-css-javascript","library-agents","python","softwareai"],"latest_commit_sha":null,"homepage":"https://softwareai-library-hub.rshare.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SoftwareAI-Company.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-08T00:20:40.000Z","updated_at":"2025-05-10T21:08:49.000Z","dependencies_parsed_at":"2025-05-08T01:26:59.770Z","dependency_job_id":"d4d2c0bb-e566-4596-a714-a59dfe4fc75c","html_url":"https://github.com/SoftwareAI-Company/SoftwareAI-Library-Web","commit_stats":null,"previous_names":["softwareai-company/softwareai-library-web"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SoftwareAI-Company/SoftwareAI-Library-Web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAI-Company%2FSoftwareAI-Library-Web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAI-Company%2FSoftwareAI-Library-Web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAI-Company%2FSoftwareAI-Library-Web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAI-Company%2FSoftwareAI-Library-Web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SoftwareAI-Company","download_url":"https://codeload.github.com/SoftwareAI-Company/SoftwareAI-Library-Web/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftwareAI-Company%2FSoftwareAI-Library-Web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274229372,"owners_count":25245188,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["html-css-javascript","library-agents","python","softwareai"],"created_at":"2025-05-11T15:36:34.198Z","updated_at":"2025-09-08T18:35:54.892Z","avatar_url":"https://github.com/SoftwareAI-Company.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"**SoftwareAI Library Web**\r\nAplicação web construída em Flask que funciona como hub para gerenciar e expor agents e tools da biblioteca SoftwareAI.\r\n![Screenshot_7](https://github.com/user-attachments/assets/d31b9c11-64f7-40a3-9d70-29b523c54562)\r\n\r\n---\r\n\r\n## Índice\r\n\r\n1. [Visão Geral](#visão-geral)\r\n2. [Principais Funcionalidades](#principais-funcionalidades)\r\n3. [Pré-requisitos](#pré-requisitos)\r\n4. [Instalação](#instalação)\r\n5. [Configuração](#configuração)\r\n6. [Como Executar](#como-executar)\r\n7. [Endpoints da API](#endpoints-da-api)\r\n8. [Estrutura do Projeto](#estrutura-do-projeto)\r\n9. [Variáveis de Ambiente](#variáveis-de-ambiente)\r\n10. [Logs](#logs)\r\n11. [Contribuição](#contribuição)\r\n12. [Licença](#licença)\r\n\r\n---\r\n\r\n## Visão Geral\r\n\r\nEste projeto disponibiliza via web um conjunto de serviços para listar, consultar e versionar `agents` e `tools` da biblioteca SoftwareAI. A interface renderiza páginas estáticas e templates em Jinja, enquanto a API RESTful oferece JSON para consumo por frontends ou outros serviços.\r\n\r\n## Principais Funcionalidades\r\n\r\n* Listagem de agents e tools armazenados no Firebase\r\n* Recuperação de metadados, tutoriais e versões históricas\r\n* Download em ZIP de códigos fonte (Integration.py, metadata.json, .py das tools)\r\n* Exposição de docker-compose YAML do hub\r\n* Sistema de logging configurável\r\n* Suporte a CORS em todas as rotas\r\n* Sessões seguras com tempo de vida configurável\r\n\r\n## Endpoints da API\r\n\r\n### Páginas HTML\r\n\r\n| Rota                       | Método | Descrição                      |\r\n| -------------------------- | ------ | ------------------------------ |\r\n| `/` ou `/index.html`       | GET    | Página inicial                 |\r\n| `/tools` ou `/tools.html`  | GET    | Lista de tools                 |\r\n| `/tools/\u003ctool_id\u003e`         | GET    | Detalhe de uma tool específica |\r\n| `/agents` ou `/agent.html` | GET    | Página de agents               |\r\n\r\n### API RESTful\r\n\r\n| Rota                                | Método | Descrição                                                         |\r\n| ----------------------------------- | ------ | ----------------------------------------------------------------- |\r\n| `/api/agents`                       | GET    | Lista todos os agents com metadados e status                      |\r\n| `/api/agents/\u003cagent_id\u003e`            | GET    | Retorna tutorial e dados básicos do agent                         |\r\n| `/api/agents/history?agent_id=\u003cid\u003e` | GET    | Histórico de versões do agent, ordenado por timestamp decrescente |\r\n| `/api/compose`                      | GET    | Retorna o arquivo `softwareai-compose.yml`                        |\r\n| `/api/agent-metadata/\u003cids\u003e`         | GET    | Metadados de um ou múltiplos agents (vírgula-separados)           |\r\n| `/api/tool-metadata/\u003ctool_id\u003e`      | GET    | Metadados e código de uma tool                                    |\r\n| `/api/list-tools`                   | GET    | Lista todas as tools disponíveis                                  |\r\n| `/api/get-tools-by-id`              | POST   | Recebe JSON com `tool_ids` e retorna dados das tools              |\r\n| `/api/tool-code/\u003ctool_ids\u003e`         | GET    | Download em ZIP do código Python de tools especificadas           |\r\n| `/api/agent-code/\u003cagent_ids\u003e`       | GET    | Download em ZIP de Integration.py e metadata.json de agents       |\r\n| `/api/submit-tool-output`           | POST   | Endpoint de callback para submissão de saída de ferramenta        |\r\n\r\n## Estrutura do Projeto\r\n\r\n```\r\n├── Agents/                       # Diretório de agents locais\r\n├── FunctionsAndTools/           # Ferramentas e funções auxiliares\r\n│   ├── Functions/               # Código das tools\r\n│   └── __init__Functions.py     # Registro das funções\r\n├── Keys/                         # Credenciais e chaves (não versionadas)\r\n├── modules/                      # Módulos internos (load, hash, register)\r\n├── static/                       # Arquivos estáticos (CSS, JS, imagens)\r\n├── templates/                    # Templates Jinja para páginas\r\n├── softwareai-compose.yml       # Compose de demonstração do hub\r\n├── library_hub_app.py           # Aplicação Flask principal\r\n├── requirements.txt             # Dependências Python\r\n└── README.md                     # Este arquivo\r\n```\r\n\r\n## Variáveis de Ambiente\r\n\r\n* `OPENAI_API_KEY` — chave da API OpenAI\r\n* `FIREBASE_CREDENTIALS` — caminho para JSON de credenciais Firebase\r\n* `FIREBASE_URL` — URL do Realtime Database\r\n* `SECRET_KEY` — chave secreta Flask para sessões\r\n\r\n## Logs\r\n\r\nO logger `app_logger` está configurado para nível DEBUG e direcionado ao stdout. Formato: `[YYYY-MM-DD HH:MM:SS] LEVEL in module: mensagem`.\r\n\r\n## Contribuição\r\n\r\n1. Fork do projeto\r\n2. Crie uma branch (`git checkout -b feature/nova-funcionalidade`)\r\n3. Commit suas alterações (`git commit -m 'Adiciona nova funcionalidade'`)\r\n4. Push para a branch (`git push origin feature/nova-funcionalidade`)\r\n5. Abra um Pull Request\r\n\r\n\r\n\r\n\r\n   \r\n### 🔧 **2. branch `main` seja a principal**\r\n\r\nSe o repositório usa `main` como a branch principal, você precisa fazer o commit na `main`, e não na `master`. Para corrigir isso, faça o seguinte:\r\n\r\n* **Troque para a branch `main`**:\r\n\r\n```bash\r\ngit checkout main\r\n```\r\n\r\n* **Atualize a branch `main` com as últimas alterações do repositório remoto**:\r\n\r\n```bash\r\ngit pull origin main\r\n```\r\n\r\n* **Volte para a sua branch de trabalho**:\r\n\r\n```bash\r\ngit checkout master  # ou outra branch de trabalho\r\n```\r\n\r\n* **Rebase as alterações na `main`** (ou apenas use `git merge`):\r\n\r\n```bash\r\ngit rebase main  # ou git merge main\r\n```\r\n\r\n* **Suba a branch novamente**:\r\n\r\n```bash\r\ngit push origin master\r\n```\r\n\r\nAgora, você pode tentar criar o PR novamente:\r\n\r\n```bash\r\ngh pr create --base main --head master --title \"Título do PR\" --body \"Descrição do PR\"\r\n```\r\n\r\n\r\n\r\n\r\n## Pré-requisitos\r\n\r\n* Python 3.9+\r\n* Docker (opcional, se quiser containerizar)\r\n* Conta e credenciais Firebase\r\n* Chave de API OpenAI válida\r\n\r\n## Instalação\r\n\r\n```bash\r\n# Clone o repositório\r\ngit clone https://github.com/seu-usuario/SoftwareAI-Library-Web.git\r\ncd SoftwareAI-Library-Web\r\n\r\n# Crie e ative um ambiente virtual\r\npython3 -m venv venv\r\nsource venv/bin/activate  # Linux/macOS\r\nvenv\\Scripts\\activate   # Windows\r\n\r\n# Instale as dependências\r\npip install -r requirements.txt\r\n```\r\n\r\n## Configuração\r\n\r\nRenomeie o arquivo `.env.example` para `.env` e preencha:\r\n\r\n```dotenv\r\nOPENAI_API_KEY=suachaveopenai\r\nFIREBASE_CREDENTIALS=/caminho/para/appcompany.json\r\nFIREBASE_URL=https://seu-projeto.firebaseio.com\r\nSECRET_KEY=uma_chave_secreta_para_sessions\r\n```\r\n\r\n## Como Executar\r\n\r\n```bash\r\nexport FLASK_APP=library_hub_app.py   # ou defina no Windows\r\nexport FLASK_ENV=development         # opcional\r\nflask run --host=0.0.0.0 --port=821\r\n```\r\n\r\nOu diretamente:\r\n\r\n```bash\r\npython library_hub_app.py\r\n```\r\n\r\nApós isso, acesse `http://localhost:821`.\r\n\r\n## Licença\r\n\r\nMIT © Seu Nome\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftwareai-company%2Fsoftwareai-library-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftwareai-company%2Fsoftwareai-library-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftwareai-company%2Fsoftwareai-library-web/lists"}