Skip to content
Closed
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ frontend/dist
frontend/backend
dist/
build/
*.egg-info/
.env.*
.DS_Store
npm-debug.log*
Expand Down
2 changes: 1 addition & 1 deletion mirix/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "0.1.5"
__version__ = "0.2.3"


# import clients
Expand Down
6 changes: 3 additions & 3 deletions mirix/queue/message_pb2.py

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

14 changes: 13 additions & 1 deletion poetry.lock

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

2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "mirix"
version = "0.1.5"
version = "0.2.3"
description = "Multi-Agent Personal Assistant with an Advanced Memory System"
readme = "README.md"
license = {text = "Apache License 2.0"}
Expand Down
52 changes: 42 additions & 10 deletions scripts/packaging/build_packages.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,17 @@ BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# Function to restore pyproject.toml on exit
restore_pyproject() {
if [ -f "pyproject.toml.backup" ]; then
echo -e "${BLUE}Restoring pyproject.toml...${NC}"
mv pyproject.toml.backup pyproject.toml
fi
}

# Set trap to restore pyproject.toml on exit (success or failure)
trap restore_pyproject EXIT

echo -e "${BLUE}=================================================${NC}"
echo -e "${BLUE} Mirix Package Build Script${NC}"
echo -e "${BLUE}=================================================${NC}"
Expand All @@ -28,21 +39,35 @@ rm -rf dist/
rm -rf *.egg-info
rm -rf mirix_client.egg-info
rm -rf mirix_server.egg-info
rm -rf intuit_ecms_client.egg-info
rm -rf intuit_ecms_server.egg-info
rm -rf jl_ecms_client.egg-info
rm -rf jl_ecms_server.egg-info
echo -e "${GREEN}✓ Cleaned${NC}"
echo ""

# Temporarily rename pyproject.toml to prevent it from overriding setup scripts
echo -e "${BLUE}[1.5/5] Temporarily moving pyproject.toml...${NC}"
if [ -f "pyproject.toml" ]; then
mv pyproject.toml pyproject.toml.backup
echo -e "${GREEN}✓ Moved pyproject.toml${NC}"
else
echo -e "${BLUE} pyproject.toml already moved${NC}"
fi
echo ""

# Install build dependencies
echo -e "${BLUE}[2/5] Installing build dependencies...${NC}"
pip install --upgrade setuptools wheel twine
echo -e "${GREEN}✓ Build tools ready${NC}"
echo ""

# Build client package
echo -e "${BLUE}[3/5] Building mirix-client package...${NC}"
echo -e "${BLUE}[3/5] Building jl-ecms-client package...${NC}"
python scripts/packaging/setup_client.py sdist bdist_wheel
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ Client package built successfully${NC}"
CLIENT_VERSION=$(ls dist/mirix_client-*.whl | head -1 | grep -oP '\d+\.\d+\.\d+')
CLIENT_VERSION=$(ls dist/intuit_ecms_client-*.whl 2>/dev/null | head -1 | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+)-.*/\1/')
echo -e " Version: ${GREEN}${CLIENT_VERSION}${NC}"
else
echo -e "${RED}✗ Client package build failed${NC}"
Expand All @@ -51,11 +76,11 @@ fi
echo ""

# Build server package
echo -e "${BLUE}[4/5] Building mirix-server package...${NC}"
echo -e "${BLUE}[4/5] Building jl-ecms-server package...${NC}"
python scripts/packaging/setup_server.py sdist bdist_wheel
if [ $? -eq 0 ]; then
echo -e "${GREEN}✓ Server package built successfully${NC}"
SERVER_VERSION=$(ls dist/mirix_server-*.whl | head -1 | grep -oP '\d+\.\d+\.\d+')
SERVER_VERSION=$(ls dist/intuit_ecms_server-*.whl 2>/dev/null | head -1 | sed -E 's/.*-([0-9]+\.[0-9]+\.[0-9]+)-.*/\1/')
echo -e " Version: ${GREEN}${SERVER_VERSION}${NC}"
else
echo -e "${RED}✗ Server package build failed${NC}"
Expand All @@ -69,23 +94,30 @@ echo -e "${BLUE}=================================================${NC}"
echo -e "Built packages in: ${GREEN}dist/${NC}"
echo ""
echo -e "Client Package:"
ls -lh dist/mirix_client-* | awk '{print " " $9 " (" $5 ")"}'
ls -lh dist/intuit_ecms_client-* 2>/dev/null | awk '{print " " $9 " (" $5 ")"}'
echo ""
echo -e "Server Package:"
ls -lh dist/mirix_server-* | awk '{print " " $9 " (" $5 ")"}'
ls -lh dist/intuit_ecms_server-* 2>/dev/null | awk '{print " " $9 " (" $5 ")"}'
echo ""
echo -e "${BLUE}=================================================${NC}"
echo -e "${GREEN}✓ All packages built successfully!${NC}"
echo ""
echo "To install locally:"
echo -e " ${BLUE}pip install dist/mirix_client-${CLIENT_VERSION}-py3-none-any.whl${NC}"
echo -e " ${BLUE}pip install dist/mirix_server-${SERVER_VERSION}-py3-none-any.whl${NC}"
echo -e " ${BLUE}pip install dist/intuit_ecms_client-${CLIENT_VERSION}-py3-none-any.whl${NC}"
echo -e " ${BLUE}pip install dist/intuit_ecms_server-${SERVER_VERSION}-py3-none-any.whl${NC}"
echo ""
echo "To publish to PyPI:"
echo -e " ${BLUE}twine upload dist/mirix-client-${CLIENT_VERSION}*${NC}"
echo -e " ${BLUE}twine upload dist/mirix-server-${SERVER_VERSION}*${NC}"
echo -e " ${BLUE}twine upload dist/jl-ecms-client-${CLIENT_VERSION}*${NC}"
echo -e " ${BLUE}twine upload dist/jl-ecms-server-${SERVER_VERSION}*${NC}"
echo ""
echo "To test packages:"
echo -e " ${BLUE}twine check dist/*${NC}"
echo ""

# Restore pyproject.toml
if [ -f "pyproject.toml.backup" ]; then
mv pyproject.toml.backup pyproject.toml
echo -e "${GREEN}✓ Restored pyproject.toml${NC}"
echo ""
fi

13 changes: 8 additions & 5 deletions scripts/packaging/setup_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"""

import os
from setuptools import setup, find_packages

from setuptools import find_packages, setup

# Read the contents of README file
this_directory = os.path.abspath(os.path.dirname(__file__))
Expand Down Expand Up @@ -43,12 +44,15 @@ def get_version():
"pytz>=2024.1",
]

# Change to project root directory so we can use relative paths
os.chdir(project_root)

setup(
name="mirix-client",
name="jl-ecms-client",
version=get_version(),
author="Mirix AI",
author_email="[email protected]",
description="Mirix Client - Lightweight Python client for Mirix AI server",
description="Intuit ECMS Client - Lightweight Python client for Intuit ECMS server",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/Mirix-AI/MIRIX",
Expand All @@ -65,7 +69,7 @@ def get_version():
"mirix.schemas.openai",
"mirix.helpers",
],
package_dir={"": project_root},
package_dir={"": "."},
include_package_data=True,
package_data={
"mirix": [],
Expand Down Expand Up @@ -100,4 +104,3 @@ def get_version():
license="Apache License 2.0",
zip_safe=False,
)

46 changes: 21 additions & 25 deletions scripts/packaging/setup_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@
"""

import os
from setuptools import setup, find_packages

from setuptools import find_packages, setup

# Read the contents of README file
this_directory = os.path.abspath(os.path.dirname(__file__))
Expand All @@ -28,16 +29,21 @@
with open(os.path.join(project_root, "README.md"), encoding="utf-8") as f:
long_description = f.read()


# Get version
def get_version():
import re

version_file = os.path.join(project_root, "mirix", "__init__.py")
with open(version_file, "r", encoding="utf-8") as version_f:
version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", version_f.read(), re.M)
version_match = re.search(
r"^__version__ = ['\"]([^'\"]*)['\"]", version_f.read(), re.M
)
if version_match:
return version_match.group(1)
raise RuntimeError("Unable to find version string.")


# Server dependencies (comprehensive)
server_dependencies = [
# Core dependencies
Expand All @@ -48,32 +54,27 @@ def get_version():
"Markdown>=3.5.0",
"Pillow>=10.2.0,<11.0.0",
"scikit-image>=0.22.0",

# LLM APIs
"openai==1.72.0",
"tiktoken>=0.5.0",
"google-genai>=0.4.0",
"anthropic>=0.23.0",
"cohere>=4.0.0",

# FastAPI and server
"fastapi>=0.104.1",
"uvicorn[standard]>=0.31.1",
"python-multipart>=0.0.6",
"httpx>=0.25.0",
"httpx_sse>=0.3.0",

# Database
"sqlalchemy>=2.0.0",
"psycopg2-binary>=2.9.0",
"pg8000>=1.30.0",
"pgvector>=0.2.0",
"redis>=5.0.0", # Redis client

# Pydantic and validation
"pydantic>=2.0.0",
"pydantic-settings>=2.0.0",

# Utilities
"python-dotenv>=1.0.0",
"demjson3>=3.0.0",
Expand All @@ -90,26 +91,27 @@ def get_version():
"anyio>=4.7.0",
"pyyaml>=6.0.0",
"requests>=2.31.0",

# LlamaIndex
"llama_index>=0.9.0",
"llama-index-embeddings-google-genai>=0.1.0",

# Composio and MCP
"composio>=0.3.0",
"mcp>=0.1.0",

# Google APIs
"google-auth>=2.0.0",
"google-auth-oauthlib>=1.0.0",
"google-auth-httplib2>=0.1.0",
"google-api-python-client>=2.0.0",

# Observability
"opentelemetry-api>=1.20.0",
"opentelemetry-sdk>=1.20.0",
"opentelemetry-exporter-otlp>=1.20.0",
"opentelemetry-instrumentation-requests>=0.41b0",
# Voice processing
"SpeechRecognition>=3.10.0",
"pydub>=0.25.0",
# Protobuf (for queue message serialization) - compatible with pynumaflow
"protobuf>=3.20,<6.0",
]

# Optional dependencies
Expand All @@ -125,22 +127,17 @@ def get_version():
"ruff>=0.1.0",
"pyright>=1.1.0",
],
"voice": [
"SpeechRecognition>=3.10.0",
"pydub>=0.25.0",
],
"full": [
"SpeechRecognition>=3.10.0",
"pydub>=0.25.0",
],
}

# Change to project root directory so we can use relative paths
os.chdir(project_root)

setup(
name="mirix-server",
name="jl-ecms-server",
version=get_version(),
author="Mirix AI",
author_email="[email protected]",
description="Mirix Server - Multi-Agent Personal Assistant with Advanced Memory System",
description="Intuit ECMS Server - Multi-Agent Personal Assistant with Advanced Memory System",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/Mirix-AI/MIRIX",
Expand All @@ -152,10 +149,10 @@ def get_version():
},
# Include all packages
packages=find_packages(
where=project_root,
exclude=["tests*", "scripts*", "frontend*", "public_evaluations*", "samples*"]
where=".",
exclude=["tests*", "scripts*", "frontend*", "public_evaluations*", "samples*"],
),
package_dir={"": project_root},
package_dir={"": "."},
include_package_data=True,
package_data={
"mirix": [
Expand Down Expand Up @@ -198,4 +195,3 @@ def get_version():
license="Apache License 2.0",
zip_safe=False,
)

Empty file modified scripts/start_server.py
100644 → 100755
Empty file.
Loading