Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 47 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Python
__pycache__/
*.py[cod]
*$py.class
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The pattern *$py.class appears to be a typo. It was likely intended to be *.py.class for ignoring Jython compiled files. Since this project targets CPython 3.14+, this pattern is unnecessary. I recommend removing this line to keep the .gitignore file clean and relevant to the project's technology stack.

*.so

# Distribution / packaging
dist/
build/
*.egg-info/
*.egg

# Virtual environments
.venv/
venv/
env/

# Type checking / linting / testing caches
.mypy_cache/
.ruff_cache/
.pytest_cache/

# Coverage
htmlcov/
coverage.xml
.coverage
.coverage.*

# Environment variables
.env
.env.local
.env.*.local

# Databases
*.db
*.sqlite3

# IDE
.idea/
.vscode/

# OS
Thumbs.db
.DS_Store

# uv
.python-version
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The .python-version file is used by tools like pyenv to lock the project's Python interpreter version. It is standard practice to commit this file to version control to ensure all developers use the same Python environment, preventing potential "it works on my machine" issues. I suggest removing this entry from .gitignore to allow the file to be tracked.

17 changes: 9 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,17 @@ AI Company lets you spin up a virtual organization staffed entirely by AI agents

## Status

**Design phase.** See [DESIGN_SPEC.md](DESIGN_SPEC.md) for the full high-level specification.
**M0: Tooling & Infrastructure** in progress. See [DESIGN_SPEC.md](DESIGN_SPEC.md) for the full high-level specification.

## Tech Stack (Planned)
## Tech Stack

- **Python 3.12+** with FastAPI, Pydantic, Typer
- **LiteLLM** for multi-provider LLM abstraction
- **Mem0** for agent memory
- **MCP** for tool integration
- **Vue 3** for web dashboard
- **SQLite** → PostgreSQL for data persistence
- **Python 3.14+** with FastAPI, Pydantic, Typer (planned)
- **uv** as package manager, **Hatchling** as build backend
- **LiteLLM** for multi-provider LLM abstraction (planned)
- **Mem0** for agent memory (planned)
- **MCP** for tool integration (planned)
- **Vue 3** for web dashboard (planned)
- **SQLite** → PostgreSQL for data persistence (planned)

## Documentation

Expand Down
Empty file added config/.gitkeep
Empty file.
Empty file added docs/.gitkeep
Empty file.
25 changes: 25 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
[project]
name = "ai-company"
dynamic = ["version"]
description = "Framework for orchestrating autonomous AI agents within a virtual company structure"
readme = "README.md"
license = "BUSL-1.1"
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The license field format may not be following the correct standard. For non-standard licenses like BUSL-1.1, you should use a table format with 'text' field pointing to the LICENSE file instead of a string identifier, as BUSL-1.1 is not in the official SPDX license list. The correct format would be: license = {text = "Business Source License 1.1"}. Alternatively, since you have a LICENSE file, you could use: license = {file = "LICENSE"}.

Suggested change
license = "BUSL-1.1"
license = { file = "LICENSE" }

Copilot uses AI. Check for mistakes.
requires-python = ">=3.14"
authors = [{ name = "Aurelio" }]
keywords = ["ai", "agents", "llm", "orchestration", "company"]
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Programming Language :: Python :: 3.14",
"Typing :: Typed",
]
dependencies = []

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.version]
path = "src/ai_company/__init__.py"

[tool.hatch.build.targets.wheel]
packages = ["src/ai_company"]
Comment on lines +1 to +25
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Searching markdown/docs for package-manager evaluation evidence..."
rg -n --type=md -C2 'uv|poetry|pip-tools|pdm|package manager|decision|ADR' 2>/dev/null || echo "No matches found in markdown files"

echo
echo "Potential ADR/decision files:"
fd -HI -t f '(?i)adr|decision' 2>/dev/null || echo "No ADR/decision files found"

echo
echo "Checking for docs or docs-related directories:"
fd -HI -t d 'docs?|adr' 2>/dev/null | head -20 || echo "No docs directories found"

echo
echo "Looking for README or DECISIONS files:"
git ls-files | grep -iE '(readme|decisions|architecture|adr)' || echo "No relevant files found via git"

Repository: Aureliolo/ai-company

Length of output: 6168


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Contents of docs/ directory:"
find docs/ -type f 2>/dev/null | head -20

echo
echo "Searching within docs/ for package-manager mentions:"
rg -n 'uv|poetry|pip-tools|pdm|package.?manager' docs/ 2>/dev/null || echo "No package-manager references found in docs/"

echo
echo "Looking for any ADR or decision content in docs/:"
find docs/ -type f \( -name "*.md" -o -name "*.txt" \) -exec basename {} \; 2>/dev/null | sort -u

Repository: Aureliolo/ai-company

Length of output: 256


Document the package-manager evaluation decision in-repo (objective #19 deliverable).

pyproject.toml reflects the chosen tooling and uv is mentioned in README.md, but no recorded comparison or evaluation of alternatives exists in the repository. The docs/ directory is empty, and no ADR or decision record documents why uv was selected over poetry, pip-tools, pdm, or other candidates. Add this artifact (README section, docs/ADR, or equivalent) to fulfill the evaluation requirement.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pyproject.toml` around lines 1 - 22, Add an in-repo decision record
describing the package-manager evaluation and final choice (referencing
pyproject.toml and the README mention of "uv"); create an ADR or markdown in
docs/ (or a README section) that lists the alternatives considered (poetry,
pip-tools, pdm, etc.), the evaluation criteria, concise pros/cons for each, the
benchmarking/compatibility notes you ran, and the final rationale for selecting
"uv" so the repository satisfies objective `#19` deliverable. Ensure the file is
named clearly (e.g., ADR or "package-manager-decision.md"), links to the
pyproject.toml configuration, and includes the date and author.

Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The hatchling packages configuration is incorrect for src layout. When using a src layout, the packages field should be just "ai_company" not "src/ai_company". Hatchling automatically looks in the src directory. This current configuration will cause the package to be nested incorrectly as src.ai_company instead of ai_company.

Suggested change
packages = ["src/ai_company"]
packages = ["ai_company"]

Copilot uses AI. Check for mistakes.
3 changes: 3 additions & 0 deletions src/ai_company/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
"""AI Company - Framework for orchestrating autonomous AI agents."""

__version__ = "0.1.0"
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file added src/ai_company/py.typed
Empty file.
Empty file.
Empty file.
Empty file.
Empty file added tests/__init__.py
Empty file.
Empty file added tests/e2e/__init__.py
Empty file.
Empty file added tests/integration/__init__.py
Empty file.
Empty file added tests/unit/__init__.py
Empty file.
7 changes: 7 additions & 0 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.