[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "jiuwenswarm"
version = "0.2.0"
description = "JiuwenSwarm"
requires-python = ">=3.11,<3.14"
license = { text = "Apache-2.0" }
classifiers = [
"License :: OSI Approved :: Apache Software License",
]
dependencies = [
"chromadb>=1.5.0",
"ruamel.yaml>=0.18.0",
"lark-oapi>=1.5.3",
"loguru>=0.7.3",
"openjiuwen @ git+https://gitcode.com/openJiuwen/agent-core.git@develop",
"pgvector>=0.4.2",
"websockets>=12.0",
"psutil>=7.2.2",
"aiosqlite>=0.22.1",
"croniter>=2.0.0",
"python-telegram-bot>=20.0",
"discord.py>=2.4.0",
"dingtalk-stream>=0.24.3",
"wecom-aibot-sdk>=1.0.5",
"python-socks>=2.8.1",
"greenlet>=3.3.2",
"skillnet-ai==0.0.16",
"mutagen>=1.47.0",
"google-genai>=1.68.0",
"opentelemetry-api>=1.25.0",
"opentelemetry-sdk>=1.25.0",
"opentelemetry-exporter-otlp-proto-grpc>=1.25.0",
"opentelemetry-exporter-otlp-proto-http>=1.25.0",
"sqlite-vec==0.1.6",
"fastapi>=0.115",
"uvicorn[standard]>=0.30",
"python-multipart>=0.0.9",
"pydantic>=2.0",
"pyyaml>=6.0",
"httpx>=0.27",
]
[project.optional-dependencies]
a2a = ["a2a-sdk[http-server]==1.0.0"]
desktop = ["pywebview>=5.4"]
dev = ["pyinstaller>=6.0.0", "pywebview>=5.4"]
tui = ["jiuwenswarm-tui==0.2.0"]
distribute = ["openjiuwen[postgres,zmq]"]
shell-ast = [
"tree-sitter>=0.25.0,<0.26.0",
"tree-sitter-bash>=0.25.0,<0.26.0",
]
test = [
"a2a-sdk[http-server]==1.0.0",
"pytest>=8.3.5",
"pytest-asyncio>=1.0.0",
"pytest-html>=4.1.1",
"pytest-mock>=3.14.0",
"pytest-cov>=7.0.0",
"coverage>=7.7.1",
"pyyaml>=6.0",
]
[project.scripts]
jiuwenswarm-app = "jiuwenswarm.app:main"
jiuwenswarm-agentserver = "jiuwenswarm.server.app_agentserver:main"
jiuwenswarm-gateway = "jiuwenswarm.gateway.app_gateway:main"
jiuwenswarm-web = "jiuwenswarm.channels.web.app_web:main"
jiuwenswarm-start = "jiuwenswarm.start_services:main"
jiuwenswarm-init = "jiuwenswarm.init_workspace:main"
jiuwenswarm-desktop = "jiuwenswarm.channels.desktop.desktop_app:main"
jiuwenswarm-tui = "jiuwenswarm.channels.acp.app_acp:main"
jiuwenswarm-acp = "jiuwenswarm.gateway.channel_manager.protocol.acp.acp_connect:main"
jiuwenswarm-acp-chat = "jiuwenswarm.acp.cli:main"
jiuwenbox = "jiuwenbox.cli.jiuwenbox:main"
jiuwenbox-server = "jiuwenbox.server.launcher:main"
[tool.setuptools]
py-modules = []
include-package-data = true
package-dir = {"jiuwenbox" = "jiuwenbox/src/jiuwenbox"}
[tool.setuptools.packages.find]
where = [".", "jiuwenbox/src"]
include = ["jiuwenswarm*", "jiuwenbox*"]
exclude = ["jiuwenswarm.cli*", "jiuwenswarm.web*"]
namespaces = false
[tool.setuptools.package-data]
"*" = ["LICENSE"]
jiuwenswarm = [
"channels/web/frontend/dist/**/*",
"channels/web/frontend/dist/*",
"resources/**/*",
"resources/*",
"resources/.env.template",
]
jiuwenbox = [
"configs/**/*",
"configs/*",
]
[tool.setuptools.exclude-package-data]
jiuwenswarm = ["channels/web/frontend/node_modules/**", "channels/web/frontend/node_modules/*"]
[tool.uv.sources]
jiuwenswarm-tui = { path = "./packages/jiuwenswarm-tui" }
[dependency-groups]
dev = [
"pytest>=9.0.3",
"pytest-asyncio>=1.3.0",
"pytest-cov>=7.1.0",
]
test = [
"a2a-sdk[http-server]==1.0.0",
"pytest>=8.3.5",
"pytest-asyncio>=1.0.0",
"pytest-html>=4.1.1",
"pytest-mock>=3.14.0",
"pytest-cov>=7.0.0",
"coverage>=7.7.1",
"pyyaml>=6.0",
]