| 1 | [project] |
| 2 | name = "echo-director-agent" |
| 3 | version = "0.1.5.post2" |
| 4 | description = "A local-first video director agent powered by Echo and nanobot" |
| 5 | readme = { file = "README.md", content-type = "text/markdown" } |
| 6 | requires-python = ">=3.11,<3.13" |
| 7 | license = {text = "MIT"} |
| 8 | keywords = ["ai", "agent", "video", "echo", "nanobot"] |
| 9 | classifiers = [ |
| 10 | "Development Status :: 3 - Alpha", |
| 11 | "Intended Audience :: Developers", |
| 12 | "License :: OSI Approved :: MIT License", |
| 13 | "Programming Language :: Python :: 3.11", |
| 14 | "Programming Language :: Python :: 3.12", |
| 15 | ] |
| 16 | license-files = [ |
| 17 | "LICENSE", |
| 18 | "THIRD_PARTY_NOTICES.md", |
| 19 | ] |
| 20 | |
| 21 | dependencies = [ |
| 22 | "typer>=0.20.0,<1.0.0", |
| 23 | "anthropic>=0.45.0,<1.0.0", |
| 24 | "pydantic>=2.12.0,<3.0.0", |
| 25 | "pydantic-settings>=2.12.0,<3.0.0", |
| 26 | "websockets>=16.0,<17.0", |
| 27 | "httpx>=0.28.0,<1.0.0", |
| 28 | "ddgs>=9.5.5,<10.0.0", |
| 29 | "oauth-cli-kit>=0.1.3,<1.0.0", |
| 30 | "loguru>=0.7.3,<1.0.0", |
| 31 | "readability-lxml>=0.8.4,<1.0.0", |
| 32 | "rich>=14.0.0,<15.0.0", |
| 33 | "croniter>=6.0.0,<7.0.0", |
| 34 | "prompt-toolkit>=3.0.50,<4.0.0", |
| 35 | "questionary>=2.0.0,<3.0.0", |
| 36 | "mcp>=1.26.0,<2.0.0", |
| 37 | "json-repair>=0.57.0,<1.0.0", |
| 38 | "chardet>=3.0.2,<6.0.0", |
| 39 | "openai>=2.8.0", |
| 40 | "tiktoken>=0.12.0,<1.0.0", |
| 41 | "jinja2>=3.1.0,<4.0.0", |
| 42 | "dulwich>=0.22.0,<1.0.0", |
| 43 | "pyyaml>=6.0,<7.0.0", |
| 44 | "pypdf>=5.0.0,<6.0.0", |
| 45 | "omegaconf>=2.3.0,<3.0.0", |
| 46 | "python-docx>=1.1.0,<2.0.0", |
| 47 | "openpyxl>=3.1.0,<4.0.0", |
| 48 | "python-pptx>=1.0.0,<2.0.0", |
| 49 | "filelock>=3.25.2", |
| 50 | "boto3>=1.34.0,<2.0.0", |
| 51 | ] |
| 52 | |
| 53 | [project.optional-dependencies] |
| 54 | api = [ |
| 55 | "aiohttp>=3.9.0,<4.0.0", |
| 56 | ] |
| 57 | telegram = [ |
| 58 | "python-telegram-bot[socks]>=22.6,<23.0", |
| 59 | "socksio>=1.0.0,<2.0.0", |
| 60 | "python-socks[asyncio]>=2.8.0,<3.0.0; sys_platform != 'win32'", |
| 61 | ] |
| 62 | feishu = [ |
| 63 | "lark-oapi>=1.5.0,<2.0.0", |
| 64 | ] |
| 65 | dingtalk = [ |
| 66 | "dingtalk-stream>=0.24.0,<1.0.0", |
| 67 | ] |
| 68 | slack = [ |
| 69 | "slack-sdk>=3.39.0,<4.0.0", |
| 70 | "slackify-markdown>=0.2.0,<1.0.0", |
| 71 | "websocket-client>=1.9.0,<2.0.0", |
| 72 | ] |
| 73 | qq = [ |
| 74 | "aiohttp>=3.9.0,<4.0.0", |
| 75 | "qq-botpy>=1.2.0,<2.0.0", |
| 76 | ] |
| 77 | mochat = [ |
| 78 | "python-socketio>=5.16.0,<6.0.0", |
| 79 | "msgpack>=1.1.0,<2.0.0", |
| 80 | ] |
| 81 | wecom = [ |
| 82 | "wecom-aibot-sdk-python>=0.1.5", |
| 83 | ] |
| 84 | weixin = [ |
| 85 | "qrcode[pil]>=8.0", |
| 86 | "pycryptodome>=3.20.0", |
| 87 | ] |
| 88 | msteams = [ |
| 89 | "PyJWT>=2.0,<3.0", |
| 90 | "cryptography>=41.0", |
| 91 | ] |
| 92 | |
| 93 | matrix = [ |
| 94 | "matrix-nio[e2e]>=0.25.2; sys_platform != 'win32'", |
| 95 | "mistune>=3.0.0,<4.0.0", |
| 96 | "nh3>=0.2.17,<1.0.0", |
| 97 | ] |
| 98 | discord = [ |
| 99 | "discord.py>=2.5.2,<3.0.0", |
| 100 | ] |
| 101 | langsmith = [ |
| 102 | "langsmith>=0.1.0", |
| 103 | ] |
| 104 | pdf = [ |
| 105 | "pymupdf>=1.25.0", |
| 106 | ] |
| 107 | dev = [ |
| 108 | "aiohttp>=3.9.0,<4.0.0", |
| 109 | "ruff>=0.1.0", |
| 110 | "pymupdf>=1.25.0", |
| 111 | ] |
| 112 | |
| 113 | [project.scripts] |
| 114 | nanobot = "nanobot.cli.commands:app" |
| 115 | |
| 116 | [build-system] |
| 117 | requires = ["hatchling"] |
| 118 | build-backend = "hatchling.build" |
| 119 | |
| 120 | [tool.hatch.metadata] |
| 121 | allow-direct-references = true |
| 122 | |
| 123 | [tool.hatch.build] |
| 124 | include = [ |
| 125 | "nanobot/**/*.py", |
| 126 | "nanobot/templates/**/*.md", |
| 127 | "nanobot/skills/**/*.md", |
| 128 | "nanobot/skills/**/*.sh", |
| 129 | ] |
| 130 | artifacts = [ |
| 131 | "nanobot/web/dist/**/*", |
| 132 | ] |
| 133 | |
| 134 | [tool.hatch.build.hooks.custom] |
| 135 | path = "hatch_build.py" |
| 136 | |
| 137 | [tool.hatch.build.targets.wheel] |
| 138 | packages = ["nanobot"] |
| 139 | |
| 140 | [tool.hatch.build.targets.wheel.sources] |
| 141 | "nanobot" = "nanobot" |
| 142 | |
| 143 | [tool.hatch.build.targets.wheel.force-include] |
| 144 | "bridge" = "nanobot/bridge" |
| 145 | "pe" = "nanobot/_bundled/pe" |
| 146 | |
| 147 | [tool.hatch.build.targets.sdist] |
| 148 | include = [ |
| 149 | "nanobot/", |
| 150 | "bridge/", |
| 151 | "pe/", |
| 152 | "nanobot/web/dist/", |
| 153 | ".config.local.example.json", |
| 154 | "README.md", |
| 155 | "LICENSE", |
| 156 | "THIRD_PARTY_NOTICES.md", |
| 157 | "hatch_build.py", |
| 158 | "pyproject.toml", |
| 159 | ] |
| 160 | |
| 161 | [tool.ruff] |
| 162 | line-length = 100 |
| 163 | target-version = "py311" |
| 164 | |
| 165 | [tool.ruff.lint] |
| 166 | select = ["E", "F", "I", "N", "W"] |
| 167 | ignore = ["E501"] |
| 168 |