agentseek-api 0.2.3__tar.gz → 0.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/.env.example +1 -1
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/.github/workflows/ci.yml +35 -8
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/CHANGELOG.md +57 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/CONTRIBUTING.md +3 -3
- agentseek_api-0.2.3/README.md → agentseek_api-0.3.1/PKG-INFO +81 -5
- agentseek_api-0.2.3/PKG-INFO → agentseek_api-0.3.1/README.md +48 -37
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/README.zh-CN.md +42 -5
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/README.md +2 -2
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/run_sample_graphs.py +1 -1
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/pyproject.toml +10 -5
- agentseek_api-0.3.1/scripts/container_image_archive.py +296 -0
- agentseek_api-0.3.1/scripts/seekdb_embed_launcher.py +126 -0
- agentseek_api-0.3.1/scripts/test-cli-docker.sh +376 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test-live-provider.sh +1 -1
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test-redis-runtime.sh +48 -3
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test-seekdb.sh +2 -2
- agentseek_api-0.3.1/scripts/test_cli_config_autodiscovery.py +123 -0
- agentseek_api-0.3.1/scripts/test_container_env_boundary.py +920 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test_minimum_cli_dependencies.py +15 -0
- agentseek_api-0.3.1/scripts/value_free_log_tail.py +46 -0
- agentseek_api-0.3.1/src/agentseek_api/__init__.py +1 -0
- agentseek_api-0.3.1/src/agentseek_api/cli.py +1722 -0
- agentseek_api-0.3.1/src/agentseek_api/container_build.py +2831 -0
- agentseek_api-0.3.1/src/agentseek_api/container_policy.py +350 -0
- agentseek_api-0.3.1/src/agentseek_api/docker_runtime.py +720 -0
- agentseek_api-0.3.1/src/agentseek_api/dotenv_adapter.py +141 -0
- agentseek_api-0.3.1/src/agentseek_api/environment.py +509 -0
- agentseek_api-0.3.1/src/agentseek_api/runtime_entrypoint.py +201 -0
- agentseek_api-0.3.1/src/agentseek_api/secure_temp.py +1046 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/sample_graphs.py +1 -1
- agentseek_api-0.3.1/tests/container_plan_helpers.py +315 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/conftest.py +3 -3
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/e2e_live_http_multi_graph.py +1 -1
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/test_cron_api_live.py +7 -2
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_cli_runtime_processes.py +173 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_cron_api.py +5 -1
- agentseek_api-0.3.1/tests/unit/test_ci_workflow.py +111 -0
- agentseek_api-0.3.1/tests/unit/test_cli.py +4414 -0
- agentseek_api-0.3.1/tests/unit/test_container_boundary_acceptance.py +606 -0
- agentseek_api-0.3.1/tests/unit/test_container_build.py +2343 -0
- agentseek_api-0.3.1/tests/unit/test_container_image_archive.py +364 -0
- agentseek_api-0.3.1/tests/unit/test_container_policy.py +591 -0
- agentseek_api-0.3.1/tests/unit/test_docker_runtime.py +1372 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_dotenv_adapter.py +31 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_redis_runtime_script.py +31 -1
- agentseek_api-0.3.1/tests/unit/test_release_artifacts.py +25 -0
- agentseek_api-0.3.1/tests/unit/test_secure_temp.py +705 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_seekdb_embed_launcher.py +41 -13
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/uv.lock +33 -1334
- agentseek_api-0.2.3/scripts/seekdb_embed_launcher.py +0 -99
- agentseek_api-0.2.3/scripts/test-cli-docker.sh +0 -172
- agentseek_api-0.2.3/scripts/test_cli_config_autodiscovery.py +0 -55
- agentseek_api-0.2.3/src/agentseek_api/__init__.py +0 -1
- agentseek_api-0.2.3/src/agentseek_api/cli.py +0 -1117
- agentseek_api-0.2.3/src/agentseek_api/dotenv_adapter.py +0 -69
- agentseek_api-0.2.3/src/agentseek_api/runtime_entrypoint.py +0 -59
- agentseek_api-0.2.3/tests/unit/test_ci_workflow.py +0 -25
- agentseek_api-0.2.3/tests/unit/test_cli.py +0 -2193
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/.dockerignore +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/.github/workflows/live-provider-streaming.yml +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/.github/workflows/release.yml +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/.gitignore +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/AGENTS.md +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/LICENSE +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/Makefile +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/assistant_config/agentseek.json +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/assistant_config/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/auth/api_key_auth.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/auth/bearer_token_auth.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/auth/custom_backend.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/auth/jwt.md +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/auth/jwt_auth.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/custom_routes/app.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/docker_ci_auth/auth_backend.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/docker_ci_auth/manifest.json +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/external_graph/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/external_graph/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/external_graph/manifest.json +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/external_graph/run.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/react_agent/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/react_agent/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/store_memory/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/stress_test/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/stress_test/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/stress_tool_agent/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/stress_tool_agent/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/subgraph_agent/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/subgraph_agent/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/subgraph_hitl_agent/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/graphs/subgraph_hitl_agent/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/live_provider_graphs/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/live_provider_graphs/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/live_provider_graphs/manifest.json +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/minimal_agentseek/agentseek.json +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/minimal_agentseek/graph.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/examples/sample_graphs_manifest.json +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/build_live_provider_matrix.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/seekdb_checkpoint_smoke.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test-checkpoints.sh +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test-cli-dev-samples.sh +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test_cli_dev_studio_smoke.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test_cli_embed_serve_smoke.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/test_cli_serve_smoke.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/verify_docker_api.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/scripts/verify_worker_concurrency.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/a2a_server.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/api/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/api/assistants.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/api/crons.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/api/runs.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/api/stateless_runs.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/api/store.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/api/streaming.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/api/threads.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/constants.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/a2a_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/app_loader.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/auth_deps.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/auth_middleware.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/config_file.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/content_type_fix.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/cors_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/database.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/http_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/mcp_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/oceanbase_checkpointer.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/orm.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/runtime_store.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/sqlite_checkpointer.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/core/store_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/main.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/mcp_server.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/models/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/models/api.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/models/auth.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/models/protocol.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/process_supervisor.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/scheduler.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/cron_models.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/cron_rrule.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/cron_scheduler.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/cron_service.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/cron_webhooks.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/default_assistants.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/executor.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/langgraph_service.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/redis_queue.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/run_executor.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/run_jobs.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/run_preparation.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/run_state.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/sse.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/stream_modes.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/stream_persistence.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/thread_checkpoint_store.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/thread_protocol.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/services/thread_service.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/settings.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/src/agentseek_api/worker.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/conftest.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/__init__.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/e2e_inprocess_flow.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/e2e_live_http_flow.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/e2e_live_http_resume_flow.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/fixtures/langgraph.store-e2e.json +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/live_provider_helpers.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/test_a2a_live.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/test_cron_scheduler_live.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/test_langsmith_compat_live.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/test_live_provider_api.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/test_live_provider_mcp.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/test_mcp_live.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/e2e/test_real_api_flow.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/fixtures/runtime_settings_probe/sitecustomize.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/fixtures/termination_tree.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_a2a_endpoint.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_agent_card.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_agents_aliases.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_assistants_compat.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_assistants_config_context_sync.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_assistants_crud.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_assistants_ordering.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_auth_coverage_gaps.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_auth_handlers.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_auth_route_enforcement.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_auth_scope_matrix.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_core_api_flow.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_langsmith_compat_coverage.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_langsmith_compat_extra.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_live_provider_streaming.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_live_redis_queue.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_live_redis_stream_persistence.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_mcp_endpoint.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_metadata_db_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_protocol_v2_streaming.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_run_cancellation_async.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_compat.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_crud.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_ordering.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_resume.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_streaming.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_streaming_errors.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_validation.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_wait_and_get.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_runs_wait_timeout.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_scheduler_runtime.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_stateless_runs_crud.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_store_api.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_stream_persistence.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_system_endpoints.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_threads_compat.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_threads_crud.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/integration/test_threads_ordering.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_a2a_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_a2a_server.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_app_loader.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_assistant_routes_unit.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_auth.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_auth_deps.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_auth_internals.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_checkpoint_guards.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_content_type_fix.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_cron_rrule.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_cron_service.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_cron_webhooks.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_custom_routers.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_database_manager.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_default_assistants.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_examples.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_executor.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_graph_manifest.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_http_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_langgraph_service.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_live_provider_e2e_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_live_provider_graphs.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_live_provider_matrix.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_mcp_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_mcp_server.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_oceanbase_checkpointer.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_openapi_auth_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_process_supervisor.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_redis_queue.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_run_controls_validation.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_run_executor.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_run_jobs.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_run_preparation.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_run_state.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_runtime_entrypoint.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_runtime_environment.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_runtime_store.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_sample_graphs.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_scheduler.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_scheduler_process.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_seekdb_checkpoint_smoke.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_sqlite_checkpointer.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_sse_keepalive.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_store_config.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_stream_modes.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_stream_persistence_helpers.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_thread_checkpoint_store.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_thread_protocol.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_thread_routes_unit.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_thread_service.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_worker.py +0 -0
- {agentseek_api-0.2.3 → agentseek_api-0.3.1}/tests/unit/test_worker_concurrency_probe.py +0 -0
|
@@ -12,7 +12,7 @@ AUTH_MODULE_PATH=
|
|
|
12
12
|
# REDIS_STREAM_MAXLEN=10000
|
|
13
13
|
# REDIS_STREAM_TTL_SECONDS=3600
|
|
14
14
|
|
|
15
|
-
# Embedded
|
|
15
|
+
# Embedded seekdb — set to true for a zero-config local backend.
|
|
16
16
|
# Data stored in SEEKDB_EMBED_DIR (default: ~/.agentseek/seekdb_data).
|
|
17
17
|
# Requires: uv sync --dev --extra embedded
|
|
18
18
|
# SEEKDB_EMBED=true
|
|
@@ -44,7 +44,13 @@ jobs:
|
|
|
44
44
|
run: uv sync --dev
|
|
45
45
|
|
|
46
46
|
- name: Coverage-backed unit + integration suite
|
|
47
|
-
run:
|
|
47
|
+
run: >-
|
|
48
|
+
uv run pytest tests/unit tests/integration
|
|
49
|
+
-m 'not docker'
|
|
50
|
+
--cov=src/agentseek_api
|
|
51
|
+
--cov-report=term-missing
|
|
52
|
+
--cov-fail-under=90
|
|
53
|
+
-q
|
|
48
54
|
|
|
49
55
|
cli-compatibility:
|
|
50
56
|
name: CLI Compatibility (${{ matrix.os }})
|
|
@@ -78,9 +84,7 @@ jobs:
|
|
|
78
84
|
run: uv run python scripts/test_cli_config_autodiscovery.py
|
|
79
85
|
|
|
80
86
|
- name: Dockerfile command renders a runnable config
|
|
81
|
-
run:
|
|
82
|
-
uv run python -c
|
|
83
|
-
"from pathlib import Path; import subprocess; out = Path('.tmp/agentseek.Dockerfile'); out.parent.mkdir(exist_ok=True); subprocess.run(['uv', 'run', 'agentseek-api', 'dockerfile', '--config', 'examples/external_graph/manifest.json', str(out)], check=True); text = out.read_text(encoding='utf-8'); assert 'ENV PYTHONPATH=/deps/agent' in text; assert 'ENV AGENTSEEK_GRAPHS=/deps/agent/examples/external_graph/manifest.json' in text"
|
|
87
|
+
run: uv run python scripts/test_cli_config_autodiscovery.py --config examples/external_graph/manifest.json
|
|
84
88
|
|
|
85
89
|
- name: CLI config, host environment, and process tests
|
|
86
90
|
run: >-
|
|
@@ -92,11 +96,13 @@ jobs:
|
|
|
92
96
|
tests/unit/test_runtime_entrypoint.py
|
|
93
97
|
tests/unit/test_process_supervisor.py
|
|
94
98
|
tests/unit/test_sqlite_checkpointer.py
|
|
99
|
+
tests/unit/test_container_policy.py
|
|
100
|
+
tests/unit/test_secure_temp.py
|
|
95
101
|
tests/integration/test_cli_runtime_processes.py
|
|
96
102
|
tests/integration/test_metadata_db_config.py
|
|
97
103
|
-q
|
|
98
104
|
|
|
99
|
-
- name: Sync embedded
|
|
105
|
+
- name: Sync embedded seekdb extra for serve smoke
|
|
100
106
|
if: runner.os == 'Linux' || (runner.os == 'macOS' && runner.arch == 'ARM64')
|
|
101
107
|
run: uv sync --dev --extra embedded
|
|
102
108
|
|
|
@@ -109,7 +115,7 @@ jobs:
|
|
|
109
115
|
run: uv run python scripts/test_minimum_cli_dependencies.py
|
|
110
116
|
|
|
111
117
|
embedded-seekdb-smoke:
|
|
112
|
-
name: Embedded
|
|
118
|
+
name: Embedded seekdb Smoke
|
|
113
119
|
runs-on: ubuntu-latest
|
|
114
120
|
timeout-minutes: 15
|
|
115
121
|
steps:
|
|
@@ -130,9 +136,15 @@ jobs:
|
|
|
130
136
|
run: uv run python scripts/test_cli_embed_serve_smoke.py
|
|
131
137
|
|
|
132
138
|
cli-docker-runtime:
|
|
133
|
-
name: CLI Docker Runtime
|
|
139
|
+
name: CLI Docker Runtime (Compose ${{ matrix.compose-version }})
|
|
134
140
|
runs-on: ubuntu-latest
|
|
135
|
-
timeout-minutes:
|
|
141
|
+
timeout-minutes: 45
|
|
142
|
+
strategy:
|
|
143
|
+
fail-fast: false
|
|
144
|
+
matrix:
|
|
145
|
+
compose-version:
|
|
146
|
+
- runner-current
|
|
147
|
+
- v2.24.0
|
|
136
148
|
steps:
|
|
137
149
|
- name: Checkout
|
|
138
150
|
uses: actions/checkout@v4
|
|
@@ -147,6 +159,21 @@ jobs:
|
|
|
147
159
|
- name: Sync dependencies
|
|
148
160
|
run: uv sync --dev
|
|
149
161
|
|
|
162
|
+
- name: Install Compose floor
|
|
163
|
+
if: matrix.compose-version == 'v2.24.0'
|
|
164
|
+
uses: docker/setup-compose-action@2fe291b7677a45ee1269ec56a42604c143505e7e # v1
|
|
165
|
+
with:
|
|
166
|
+
version: v2.24.0
|
|
167
|
+
|
|
168
|
+
- name: Record Compose version
|
|
169
|
+
run: docker compose version --short
|
|
170
|
+
|
|
171
|
+
- name: Container environment boundary
|
|
172
|
+
run: uv run python scripts/test_container_env_boundary.py
|
|
173
|
+
|
|
174
|
+
- name: Docker and Compose regression suite
|
|
175
|
+
run: uv run pytest tests/unit/test_docker_runtime.py -m docker -q
|
|
176
|
+
|
|
150
177
|
- name: CLI Docker smoke
|
|
151
178
|
run: make test-cli-docker
|
|
152
179
|
|
|
@@ -4,6 +4,63 @@ Notable changes to AgentSeek API are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 0.3.1 - 2026-09-03
|
|
8
|
+
|
|
9
|
+
### Highlights
|
|
10
|
+
|
|
11
|
+
- Upgraded both the base and embedded `langchain-oceanbase` dependency pins to
|
|
12
|
+
0.6.3, with the resolved embedded seekdb stack at `pylibseekdb` 1.4.0,
|
|
13
|
+
`pyobvector` 0.2.29, and `pyseekdb` 1.4.0.post1.
|
|
14
|
+
- Synchronized package metadata, generated container runtime artifacts,
|
|
15
|
+
attestations, scripts, fixtures, and runtime labels at 0.3.1.
|
|
16
|
+
- Restricted the supported Python range to `>=3.12,<3.14` and made generated
|
|
17
|
+
runtime verification reject unsupported Python versions.
|
|
18
|
+
- Normalized current human-facing documentation and runtime prose to the
|
|
19
|
+
lowercase `seekdb` product spelling.
|
|
20
|
+
|
|
21
|
+
### Upgrade notes
|
|
22
|
+
|
|
23
|
+
- No API or schema migration is required for this release.
|
|
24
|
+
|
|
25
|
+
## 0.3.0 - 2026-08-20
|
|
26
|
+
|
|
27
|
+
### Highlights
|
|
28
|
+
|
|
29
|
+
- Added the explicit `preloaded-v1` container environment contract so the host
|
|
30
|
+
remains the single owner of application environment resolution.
|
|
31
|
+
- Generated containers install and attest the exact
|
|
32
|
+
`agentseek-api[embedded]==0.3.0` runtime independently of project
|
|
33
|
+
dependencies.
|
|
34
|
+
- Hardened Docker, Compose, and build-context boundaries so application values
|
|
35
|
+
are carried only to the declared runtime target and credential-bearing source
|
|
36
|
+
files are excluded from image inputs.
|
|
37
|
+
- Defined compatible custom-image labels and runtime-manifest checks for
|
|
38
|
+
`preloaded-v1` launches.
|
|
39
|
+
|
|
40
|
+
### Upgrade notes
|
|
41
|
+
|
|
42
|
+
- Container projects that pin `agentseek-api==0.2.2`, or otherwise exclude
|
|
43
|
+
`0.3.0`, must update their dependency constraint before using generated
|
|
44
|
+
images.
|
|
45
|
+
- Custom images must publish the `preloaded-v1` environment-contract, runtime
|
|
46
|
+
manifest, distribution, and version labels; older images must keep using the
|
|
47
|
+
older launcher until migrated.
|
|
48
|
+
- `dockerfile` now writes a complete build-bundle directory. Declare only
|
|
49
|
+
reviewed project paths with `build_include`; credentialed `pip_config_file`
|
|
50
|
+
input is delivered as a BuildKit secret rather than copied into the bundle.
|
|
51
|
+
- Container application values cross only an explicit runtime boundary:
|
|
52
|
+
`--pass-env` selects the direct Docker carrier, while `compose_env` and
|
|
53
|
+
`--compose-pass-env` select the private Compose dotenv carrier. All are
|
|
54
|
+
trusted-input declarations and none authorize values to enter the build.
|
|
55
|
+
- Custom images must provide the exact `org.agentseek.environment-contract`,
|
|
56
|
+
`org.agentseek.runtime-manifest`, `org.agentseek.runtime-distribution`, and
|
|
57
|
+
`org.agentseek.runtime-version` labels and matching manifest/runtime state.
|
|
58
|
+
There is no legacy-image fallback.
|
|
59
|
+
- Release Train A shipped API 0.2.3, templates 0.1.3, and AgentSeek 0.1.3. The
|
|
60
|
+
planned Train B template/catalog release is 0.1.4. The separate planned
|
|
61
|
+
AgentSeek release is also 0.1.4; both follow their shipped 0.1.3 releases and
|
|
62
|
+
remain separate release gates.
|
|
63
|
+
|
|
7
64
|
## 0.2.3 - 2026-08-17
|
|
8
65
|
|
|
9
66
|
### Fixed
|
|
@@ -31,8 +31,8 @@ GitHub Actions is split into three validation layers:
|
|
|
31
31
|
Coverage-backed unit and integration suite (`make test-cov`) on every supported push and PR.
|
|
32
32
|
- Sample Graphs
|
|
33
33
|
In-process graph runner plus the in-process API smoke flow (`make test-samples`).
|
|
34
|
-
-
|
|
35
|
-
Real backend checkpoint smoke plus live HTTP e2e coverage (`make test-seekdb`) on PRs to `develop` or `main`, and on pushes to `develop`, `main`, `release/*`, and `hotfix/*`. CI runs this in a Docker matrix across `seekdb`, `oceanbase`, and `mysql`, while local quick verification should prefer embedded
|
|
34
|
+
- seekdb Validation
|
|
35
|
+
Real backend checkpoint smoke plus live HTTP e2e coverage (`make test-seekdb`) on PRs to `develop` or `main`, and on pushes to `develop`, `main`, `release/*`, and `hotfix/*`. CI runs this in a Docker matrix across `seekdb`, `oceanbase`, and `mysql`, while local quick verification should prefer embedded seekdb via `scripts/seekdb_embed_launcher.py`.
|
|
36
36
|
|
|
37
37
|
Keep local commands aligned with CI when possible:
|
|
38
38
|
|
|
@@ -42,6 +42,6 @@ Keep local commands aligned with CI when possible:
|
|
|
42
42
|
- `make test-e2e`
|
|
43
43
|
- `make test-seekdb`
|
|
44
44
|
|
|
45
|
-
For embedded
|
|
45
|
+
For embedded seekdb locally, install the optional extra first:
|
|
46
46
|
|
|
47
47
|
- `uv sync --dev --extra embedded`
|
|
@@ -1,8 +1,41 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: agentseek-api
|
|
3
|
+
Version: 0.3.1
|
|
4
|
+
Summary: AgentSeek API core runtime with OceanBase checkpoints.
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: <3.14,>=3.12
|
|
7
|
+
Requires-Dist: aiomysql>=0.2.0
|
|
8
|
+
Requires-Dist: aiosqlite>=0.20.0
|
|
9
|
+
Requires-Dist: asyncpg>=0.29.0
|
|
10
|
+
Requires-Dist: cryptography>=45.0.0
|
|
11
|
+
Requires-Dist: fastapi>=0.110.1
|
|
12
|
+
Requires-Dist: greenlet>=3.1.0
|
|
13
|
+
Requires-Dist: langchain-anthropic>=1.0.0
|
|
14
|
+
Requires-Dist: langchain-core>=1.2.5
|
|
15
|
+
Requires-Dist: langchain-oceanbase==0.6.3
|
|
16
|
+
Requires-Dist: langchain-openai>=1.0.0
|
|
17
|
+
Requires-Dist: langchain>=0.3.9
|
|
18
|
+
Requires-Dist: langgraph-sdk>=0.3.5
|
|
19
|
+
Requires-Dist: langgraph>=1.0.6
|
|
20
|
+
Requires-Dist: mcp<2,>=1.27.1
|
|
21
|
+
Requires-Dist: packaging>=24.0
|
|
22
|
+
Requires-Dist: pydantic-settings>=2.4.0
|
|
23
|
+
Requires-Dist: pydantic>=2.8.0
|
|
24
|
+
Requires-Dist: pymysql>=1.1.0
|
|
25
|
+
Requires-Dist: python-dotenv<1.3,>=1.0
|
|
26
|
+
Requires-Dist: redis>=5.0.0
|
|
27
|
+
Requires-Dist: scalar-fastapi>=1.0.3
|
|
28
|
+
Requires-Dist: sqlalchemy>=2.0.12
|
|
29
|
+
Requires-Dist: uvicorn>=0.30.0
|
|
30
|
+
Provides-Extra: embedded
|
|
31
|
+
Requires-Dist: langchain-oceanbase[pyseekdb]==0.6.3; extra == 'embedded'
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
1
34
|
# AgentSeek API
|
|
2
35
|
|
|
3
36
|
**English** | [中文](README.zh-CN.md)
|
|
4
37
|
|
|
5
|
-
[](https://pypi.org/project/agentseek-api/) [](https://pypi.org/project/agentseek-api/) [](https://pypi.org/project/agentseek-api/) [](https://github.com/ob-labs/agentseek-api/actions/workflows/ci.yml?query=branch%3Amain)
|
|
6
39
|
|
|
7
40
|
> [!WARNING]
|
|
8
41
|
> This project is under active development and is **not production-ready**.
|
|
@@ -33,7 +66,7 @@ Current release boundary:
|
|
|
33
66
|
|
|
34
67
|
### Prerequisites
|
|
35
68
|
|
|
36
|
-
- Python 3.12
|
|
69
|
+
- Python >=3.12,<3.14
|
|
37
70
|
- `uv`
|
|
38
71
|
|
|
39
72
|
### Choose the right local loop
|
|
@@ -83,7 +116,7 @@ uv sync --extra embedded
|
|
|
83
116
|
### 2. Configure seekdb embed as the default backend (recommended)
|
|
84
117
|
|
|
85
118
|
The fastest way to get a real backend running locally is **seekdb embed** — an
|
|
86
|
-
in-process
|
|
119
|
+
in-process seekdb instance, no Docker or separate process required:
|
|
87
120
|
|
|
88
121
|
```bash
|
|
89
122
|
SEEKDB_EMBED=true agentseek-api dev
|
|
@@ -296,7 +329,7 @@ keys with similar names.
|
|
|
296
329
|
uv run agentseek-api dev
|
|
297
330
|
uv run agentseek-api serve --config ./langgraph.json --port 8080
|
|
298
331
|
uv run agentseek-api worker --config ./langgraph.json
|
|
299
|
-
uv run agentseek-api dockerfile --config ./langgraph.json ./
|
|
332
|
+
uv run agentseek-api dockerfile --config ./langgraph.json ./agentseek-build-bundle
|
|
300
333
|
uv run agentseek-api build --config ./langgraph.json -t agentseek-api:dev
|
|
301
334
|
uv run agentseek-api up --config ./langgraph.json --port 8123 --wait
|
|
302
335
|
uv run agentseek-api version
|
|
@@ -323,9 +356,18 @@ uv run agentseek-api version
|
|
|
323
356
|
- `build`
|
|
324
357
|
- Use `-t, --tag` to set the image tag
|
|
325
358
|
- Supports `--platform`, `--pull`, and `--no-pull`
|
|
359
|
+
- `dockerfile`
|
|
360
|
+
- Writes a complete private build-bundle directory, including the generated
|
|
361
|
+
`Dockerfile`, sanitized runtime manifest, and selected project files; the
|
|
362
|
+
output argument is a new directory, not a standalone Dockerfile path
|
|
326
363
|
- `up`
|
|
327
364
|
- Supports `--wait`, `--image`, `--base-image`, `--postgres-uri`,
|
|
328
365
|
`--recreate`, and `--no-recreate`
|
|
366
|
+
- `--pass-env NAME` explicitly selects a resolved application value for the
|
|
367
|
+
direct Docker carrier; the value is inherited by name and never put in argv
|
|
368
|
+
- `--compose-pass-env NAME` explicitly selects a resolved application value
|
|
369
|
+
for Compose interpolation; config can make the same selection with
|
|
370
|
+
`compose_env`
|
|
329
371
|
|
|
330
372
|
Some LangGraph CLI-shaped flags are parsed for command compatibility but
|
|
331
373
|
rejected when their runtime behavior is not implemented yet. For mocked,
|
|
@@ -404,11 +446,45 @@ Useful config fields:
|
|
|
404
446
|
- `http.disable_a2a`: disable the A2A endpoint and agent-card discovery route
|
|
405
447
|
- `base_image`, `python_version`, `image_distro`, `pip_config_file`,
|
|
406
448
|
`dockerfile_lines`: Docker build customization fields
|
|
449
|
+
- `build_include`: additional trusted regular files or directory trees to copy
|
|
450
|
+
into the sanitized build bundle
|
|
451
|
+
- `compose_env`: names from the already-resolved application environment that
|
|
452
|
+
may cross into an explicitly selected Compose dotenv carrier
|
|
453
|
+
|
|
454
|
+
### Container contract introduced in 0.3.0
|
|
455
|
+
|
|
456
|
+
The `preloaded-v1` contract is a breaking, fail-closed container boundary. The
|
|
457
|
+
host resolves application configuration once. Containers started from generated images receive only
|
|
458
|
+
the selected runtime payload, while ambient host values, dotenv files, package
|
|
459
|
+
credentials, and unselected Compose values stay outside the build context and
|
|
460
|
+
image layers. Use `--pass-env` or `--compose-pass-env` only for trusted input;
|
|
461
|
+
these flags authorize a value to cross the named runtime boundary, not to enter
|
|
462
|
+
the build.
|
|
463
|
+
|
|
464
|
+
`build_include` is also a trusted-input declaration: review every selected path.
|
|
465
|
+
Credentialed Python indexes belong in `pip_config_file`, which is mounted as a
|
|
466
|
+
BuildKit pip secret and is not copied into the context. The `dockerfile` command
|
|
467
|
+
now writes the complete bundle directory consumed by Docker rather than a lone
|
|
468
|
+
Dockerfile.
|
|
469
|
+
|
|
470
|
+
Custom images must expose all four exact labels:
|
|
471
|
+
|
|
472
|
+
- `org.agentseek.environment-contract=preloaded-v1`
|
|
473
|
+
- `org.agentseek.runtime-manifest=/opt/agentseek/manifest.v1.json`
|
|
474
|
+
- `org.agentseek.runtime-distribution=agentseek-api`
|
|
475
|
+
- `org.agentseek.runtime-version=0.3.1`
|
|
476
|
+
|
|
477
|
+
The manifest, installed distribution, entrypoint, and labels must agree. There
|
|
478
|
+
is no legacy-image fallback: migrate and attest the image before passing it to
|
|
479
|
+
`up --image`, or keep using the older launcher with the older image. Release
|
|
480
|
+
Train A coordinates are API 0.2.3, templates 0.1.3, and AgentSeek 0.1.3; the
|
|
481
|
+
The planned Train B template/catalog release is 0.1.4. The separate planned
|
|
482
|
+
AgentSeek release is also 0.1.4; both follow the shipped 0.1.3 releases.
|
|
407
483
|
|
|
408
484
|
Endpoint-level LangGraph config keys such as `http` and `api_version` are
|
|
409
485
|
tolerated by the CLI layer where possible. Store config is used by the HTTP
|
|
410
486
|
Store API and the injected LangGraph `BaseStore` runtime for TTL and semantic
|
|
411
|
-
search. This repo uses the published `langchain-oceanbase==0.
|
|
487
|
+
search. This repo uses the published `langchain-oceanbase==0.6.3` package from
|
|
412
488
|
PyPI.
|
|
413
489
|
|
|
414
490
|
Config-driven custom auth can live in `agentseek.json` or `langgraph.json`:
|
|
@@ -1,40 +1,8 @@
|
|
|
1
|
-
Metadata-Version: 2.5
|
|
2
|
-
Name: agentseek-api
|
|
3
|
-
Version: 0.2.3
|
|
4
|
-
Summary: AgentSeek API core runtime with OceanBase checkpoints.
|
|
5
|
-
License-File: LICENSE
|
|
6
|
-
Requires-Python: >=3.12
|
|
7
|
-
Requires-Dist: aiomysql>=0.2.0
|
|
8
|
-
Requires-Dist: aiosqlite>=0.20.0
|
|
9
|
-
Requires-Dist: asyncpg>=0.29.0
|
|
10
|
-
Requires-Dist: cryptography>=45.0.0
|
|
11
|
-
Requires-Dist: fastapi>=0.110.1
|
|
12
|
-
Requires-Dist: greenlet>=3.1.0
|
|
13
|
-
Requires-Dist: langchain-anthropic>=1.0.0
|
|
14
|
-
Requires-Dist: langchain-core>=1.2.5
|
|
15
|
-
Requires-Dist: langchain-oceanbase==0.6.0
|
|
16
|
-
Requires-Dist: langchain-openai>=1.0.0
|
|
17
|
-
Requires-Dist: langchain>=0.3.9
|
|
18
|
-
Requires-Dist: langgraph-sdk>=0.3.5
|
|
19
|
-
Requires-Dist: langgraph>=1.0.6
|
|
20
|
-
Requires-Dist: mcp<2,>=1.27.1
|
|
21
|
-
Requires-Dist: pydantic-settings>=2.4.0
|
|
22
|
-
Requires-Dist: pydantic>=2.8.0
|
|
23
|
-
Requires-Dist: pymysql>=1.1.0
|
|
24
|
-
Requires-Dist: python-dotenv<1.3,>=1.0
|
|
25
|
-
Requires-Dist: redis>=5.0.0
|
|
26
|
-
Requires-Dist: scalar-fastapi>=1.0.3
|
|
27
|
-
Requires-Dist: sqlalchemy>=2.0.12
|
|
28
|
-
Requires-Dist: uvicorn>=0.30.0
|
|
29
|
-
Provides-Extra: embedded
|
|
30
|
-
Requires-Dist: langchain-oceanbase[pyseekdb]==0.6.0; extra == 'embedded'
|
|
31
|
-
Description-Content-Type: text/markdown
|
|
32
|
-
|
|
33
1
|
# AgentSeek API
|
|
34
2
|
|
|
35
3
|
**English** | [中文](README.zh-CN.md)
|
|
36
4
|
|
|
37
|
-
[](https://pypi.org/project/agentseek-api/) [](https://pypi.org/project/agentseek-api/) [](https://pypi.org/project/agentseek-api/) [](https://github.com/ob-labs/agentseek-api/actions/workflows/ci.yml?query=branch%3Amain)
|
|
38
6
|
|
|
39
7
|
> [!WARNING]
|
|
40
8
|
> This project is under active development and is **not production-ready**.
|
|
@@ -65,7 +33,7 @@ Current release boundary:
|
|
|
65
33
|
|
|
66
34
|
### Prerequisites
|
|
67
35
|
|
|
68
|
-
- Python 3.12
|
|
36
|
+
- Python >=3.12,<3.14
|
|
69
37
|
- `uv`
|
|
70
38
|
|
|
71
39
|
### Choose the right local loop
|
|
@@ -115,7 +83,7 @@ uv sync --extra embedded
|
|
|
115
83
|
### 2. Configure seekdb embed as the default backend (recommended)
|
|
116
84
|
|
|
117
85
|
The fastest way to get a real backend running locally is **seekdb embed** — an
|
|
118
|
-
in-process
|
|
86
|
+
in-process seekdb instance, no Docker or separate process required:
|
|
119
87
|
|
|
120
88
|
```bash
|
|
121
89
|
SEEKDB_EMBED=true agentseek-api dev
|
|
@@ -328,7 +296,7 @@ keys with similar names.
|
|
|
328
296
|
uv run agentseek-api dev
|
|
329
297
|
uv run agentseek-api serve --config ./langgraph.json --port 8080
|
|
330
298
|
uv run agentseek-api worker --config ./langgraph.json
|
|
331
|
-
uv run agentseek-api dockerfile --config ./langgraph.json ./
|
|
299
|
+
uv run agentseek-api dockerfile --config ./langgraph.json ./agentseek-build-bundle
|
|
332
300
|
uv run agentseek-api build --config ./langgraph.json -t agentseek-api:dev
|
|
333
301
|
uv run agentseek-api up --config ./langgraph.json --port 8123 --wait
|
|
334
302
|
uv run agentseek-api version
|
|
@@ -355,9 +323,18 @@ uv run agentseek-api version
|
|
|
355
323
|
- `build`
|
|
356
324
|
- Use `-t, --tag` to set the image tag
|
|
357
325
|
- Supports `--platform`, `--pull`, and `--no-pull`
|
|
326
|
+
- `dockerfile`
|
|
327
|
+
- Writes a complete private build-bundle directory, including the generated
|
|
328
|
+
`Dockerfile`, sanitized runtime manifest, and selected project files; the
|
|
329
|
+
output argument is a new directory, not a standalone Dockerfile path
|
|
358
330
|
- `up`
|
|
359
331
|
- Supports `--wait`, `--image`, `--base-image`, `--postgres-uri`,
|
|
360
332
|
`--recreate`, and `--no-recreate`
|
|
333
|
+
- `--pass-env NAME` explicitly selects a resolved application value for the
|
|
334
|
+
direct Docker carrier; the value is inherited by name and never put in argv
|
|
335
|
+
- `--compose-pass-env NAME` explicitly selects a resolved application value
|
|
336
|
+
for Compose interpolation; config can make the same selection with
|
|
337
|
+
`compose_env`
|
|
361
338
|
|
|
362
339
|
Some LangGraph CLI-shaped flags are parsed for command compatibility but
|
|
363
340
|
rejected when their runtime behavior is not implemented yet. For mocked,
|
|
@@ -436,11 +413,45 @@ Useful config fields:
|
|
|
436
413
|
- `http.disable_a2a`: disable the A2A endpoint and agent-card discovery route
|
|
437
414
|
- `base_image`, `python_version`, `image_distro`, `pip_config_file`,
|
|
438
415
|
`dockerfile_lines`: Docker build customization fields
|
|
416
|
+
- `build_include`: additional trusted regular files or directory trees to copy
|
|
417
|
+
into the sanitized build bundle
|
|
418
|
+
- `compose_env`: names from the already-resolved application environment that
|
|
419
|
+
may cross into an explicitly selected Compose dotenv carrier
|
|
420
|
+
|
|
421
|
+
### Container contract introduced in 0.3.0
|
|
422
|
+
|
|
423
|
+
The `preloaded-v1` contract is a breaking, fail-closed container boundary. The
|
|
424
|
+
host resolves application configuration once. Containers started from generated images receive only
|
|
425
|
+
the selected runtime payload, while ambient host values, dotenv files, package
|
|
426
|
+
credentials, and unselected Compose values stay outside the build context and
|
|
427
|
+
image layers. Use `--pass-env` or `--compose-pass-env` only for trusted input;
|
|
428
|
+
these flags authorize a value to cross the named runtime boundary, not to enter
|
|
429
|
+
the build.
|
|
430
|
+
|
|
431
|
+
`build_include` is also a trusted-input declaration: review every selected path.
|
|
432
|
+
Credentialed Python indexes belong in `pip_config_file`, which is mounted as a
|
|
433
|
+
BuildKit pip secret and is not copied into the context. The `dockerfile` command
|
|
434
|
+
now writes the complete bundle directory consumed by Docker rather than a lone
|
|
435
|
+
Dockerfile.
|
|
436
|
+
|
|
437
|
+
Custom images must expose all four exact labels:
|
|
438
|
+
|
|
439
|
+
- `org.agentseek.environment-contract=preloaded-v1`
|
|
440
|
+
- `org.agentseek.runtime-manifest=/opt/agentseek/manifest.v1.json`
|
|
441
|
+
- `org.agentseek.runtime-distribution=agentseek-api`
|
|
442
|
+
- `org.agentseek.runtime-version=0.3.1`
|
|
443
|
+
|
|
444
|
+
The manifest, installed distribution, entrypoint, and labels must agree. There
|
|
445
|
+
is no legacy-image fallback: migrate and attest the image before passing it to
|
|
446
|
+
`up --image`, or keep using the older launcher with the older image. Release
|
|
447
|
+
Train A coordinates are API 0.2.3, templates 0.1.3, and AgentSeek 0.1.3; the
|
|
448
|
+
The planned Train B template/catalog release is 0.1.4. The separate planned
|
|
449
|
+
AgentSeek release is also 0.1.4; both follow the shipped 0.1.3 releases.
|
|
439
450
|
|
|
440
451
|
Endpoint-level LangGraph config keys such as `http` and `api_version` are
|
|
441
452
|
tolerated by the CLI layer where possible. Store config is used by the HTTP
|
|
442
453
|
Store API and the injected LangGraph `BaseStore` runtime for TTL and semantic
|
|
443
|
-
search. This repo uses the published `langchain-oceanbase==0.
|
|
454
|
+
search. This repo uses the published `langchain-oceanbase==0.6.3` package from
|
|
444
455
|
PyPI.
|
|
445
456
|
|
|
446
457
|
Config-driven custom auth can live in `agentseek.json` or `langgraph.json`:
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) | **中文**
|
|
4
4
|
|
|
5
|
-
[](https://pypi.org/project/agentseek-api/) [](https://pypi.org/project/agentseek-api/) [](https://pypi.org/project/agentseek-api/) [](https://github.com/ob-labs/agentseek-api/actions/workflows/ci.yml?query=branch%3Amain)
|
|
6
6
|
|
|
7
7
|
> [!WARNING]
|
|
8
8
|
> 本项目正在积极开发中,**尚未达到生产可用状态**。
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
|
|
33
33
|
### 前置条件
|
|
34
34
|
|
|
35
|
-
- Python 3.12
|
|
35
|
+
- Python >=3.12,<3.14
|
|
36
36
|
- `uv`
|
|
37
37
|
|
|
38
38
|
### 选择合适的本地开发循环
|
|
@@ -80,7 +80,7 @@ uv sync --extra embedded
|
|
|
80
80
|
|
|
81
81
|
### 2. 将 seekdb embed 配置为默认后端(推荐)
|
|
82
82
|
|
|
83
|
-
最快获得真实后端的方式是 **seekdb embed** — 一个进程内嵌入式
|
|
83
|
+
最快获得真实后端的方式是 **seekdb embed** — 一个进程内嵌入式 seekdb 实例,
|
|
84
84
|
无需 Docker 或独立进程:
|
|
85
85
|
|
|
86
86
|
```bash
|
|
@@ -262,7 +262,7 @@ agentseek-api <command> [arguments]
|
|
|
262
262
|
uv run agentseek-api dev
|
|
263
263
|
uv run agentseek-api serve --config ./langgraph.json --port 8080
|
|
264
264
|
uv run agentseek-api worker --config ./langgraph.json
|
|
265
|
-
uv run agentseek-api dockerfile --config ./langgraph.json ./
|
|
265
|
+
uv run agentseek-api dockerfile --config ./langgraph.json ./agentseek-build-bundle
|
|
266
266
|
uv run agentseek-api build --config ./langgraph.json -t agentseek-api:dev
|
|
267
267
|
uv run agentseek-api up --config ./langgraph.json --port 8123 --wait
|
|
268
268
|
uv run agentseek-api version
|
|
@@ -289,9 +289,17 @@ uv run agentseek-api version
|
|
|
289
289
|
- `build`
|
|
290
290
|
- 使用 `-t, --tag` 设置镜像 tag
|
|
291
291
|
- 支持 `--platform`、`--pull`、`--no-pull`
|
|
292
|
+
- `dockerfile`
|
|
293
|
+
- 输出完整的私有构建 bundle 目录,其中包含生成的 `Dockerfile`、净化后的
|
|
294
|
+
runtime manifest 与选中的项目文件;输出参数必须是新目录,而不是单个
|
|
295
|
+
Dockerfile 文件路径
|
|
292
296
|
- `up`
|
|
293
297
|
- 支持 `--wait`、`--image`、`--base-image`、`--postgres-uri`、
|
|
294
298
|
`--recreate`、`--no-recreate`
|
|
299
|
+
- `--pass-env NAME` 显式选择一个已解析的应用变量,通过名称继承方式交给
|
|
300
|
+
直接 Docker carrier,变量值不会进入 argv
|
|
301
|
+
- `--compose-pass-env NAME` 显式选择一个已解析的应用变量交给 Compose;
|
|
302
|
+
配置文件中的 `compose_env` 提供同样的选择能力
|
|
295
303
|
|
|
296
304
|
部分仿照 LangGraph CLI 的参数会为了命令兼容性被解析,但当对应运行时
|
|
297
305
|
行为还未实现时会被直接拒绝。对于 mock、内存或 tunnel 化的本地工作流,
|
|
@@ -371,11 +379,40 @@ Redis 实例同时运行。
|
|
|
371
379
|
- `http.disable_a2a`:关闭 A2A 端点及 agent-card 发现路由
|
|
372
380
|
- `base_image`、`python_version`、`image_distro`、`pip_config_file`、
|
|
373
381
|
`dockerfile_lines`:Docker 构建自定义字段
|
|
382
|
+
- `build_include`:额外复制到净化构建 bundle 中的受信任普通文件或目录树
|
|
383
|
+
- `compose_env`:允许通过显式 Compose dotenv carrier 的、已完成解析的应用
|
|
384
|
+
环境变量名称
|
|
385
|
+
|
|
386
|
+
### 0.3.0 引入的容器契约
|
|
387
|
+
|
|
388
|
+
`preloaded-v1` 是不兼容旧行为、失败即关闭的容器边界。宿主机只解析一次
|
|
389
|
+
应用配置。从生成镜像启动的容器只接收显式选择的运行时 payload;宿主机环境、dotenv
|
|
390
|
+
文件、包仓库凭证和未选择的 Compose 值都不会进入构建上下文或镜像层。
|
|
391
|
+
`--pass-env` 与 `--compose-pass-env` 只应接收可信输入:它们授权变量跨越指定
|
|
392
|
+
运行时边界,并不允许变量进入镜像构建。
|
|
393
|
+
|
|
394
|
+
`build_include` 同样属于可信输入声明,必须审查每条路径。带凭证的 Python
|
|
395
|
+
仓库配置应使用 `pip_config_file`,CLI 会将其作为 BuildKit pip secret 挂载,
|
|
396
|
+
不会复制到上下文。`dockerfile` 命令现在输出 Docker 实际消费的完整 bundle
|
|
397
|
+
目录,而不是单独的 Dockerfile。
|
|
398
|
+
|
|
399
|
+
自定义镜像必须提供以下四个精确标签:
|
|
400
|
+
|
|
401
|
+
- `org.agentseek.environment-contract=preloaded-v1`
|
|
402
|
+
- `org.agentseek.runtime-manifest=/opt/agentseek/manifest.v1.json`
|
|
403
|
+
- `org.agentseek.runtime-distribution=agentseek-api`
|
|
404
|
+
- `org.agentseek.runtime-version=0.3.1`
|
|
405
|
+
|
|
406
|
+
manifest、已安装 distribution、entrypoint 与标签必须一致。系统不提供旧镜像
|
|
407
|
+
回退:传给 `up --image` 前必须完成迁移与校验;否则应继续用旧 launcher 配合
|
|
408
|
+
旧镜像。Train A 已达成版本为 API 0.2.3、templates 0.1.3、AgentSeek 0.1.3;
|
|
409
|
+
后续 Train B 的 template/catalog 计划单独发布 0.1.4。AgentSeek 也计划另行发布
|
|
410
|
+
0.1.4;两者都基于已经发布的 0.1.3。
|
|
374
411
|
|
|
375
412
|
CLI 层会尽量容忍 LangGraph 在端点级别使用的配置键,例如 `http` 与
|
|
376
413
|
`api_version`。Store 配置会被 HTTP Store API 以及注入的 LangGraph
|
|
377
414
|
`BaseStore` 运行时用于 TTL 与语义检索。本仓库使用 PyPI 上发布的
|
|
378
|
-
`langchain-oceanbase==0.
|
|
415
|
+
`langchain-oceanbase==0.6.3` 包。
|
|
379
416
|
|
|
380
417
|
配置驱动的自定义鉴权可以放在 `agentseek.json` 或 `langgraph.json` 中:
|
|
381
418
|
|
|
@@ -42,7 +42,7 @@ uv run python examples/external_graph/run.py
|
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
Invokes every sample graph directly through LangGraph — no HTTP server, no
|
|
45
|
-
|
|
45
|
+
seekdb. Useful during development when you want a tight feedback loop.
|
|
46
46
|
|
|
47
47
|
## Running them through the HTTP API
|
|
48
48
|
|
|
@@ -76,7 +76,7 @@ curl -s http://127.0.0.1:2024/threads/$THREAD_ID/runs/$RUN_ID/wait \
|
|
|
76
76
|
`tests/e2e/e2e_live_http_multi_graph.py` does the full dance against every
|
|
77
77
|
registered sample. `make test-cli-dev-samples` runs that sweep through the
|
|
78
78
|
`agentseek dev` CLI, and `make test-seekdb` runs it end-to-end against a real
|
|
79
|
-
|
|
79
|
+
seekdb-compatible backend.
|
|
80
80
|
|
|
81
81
|
## Adding your own graph
|
|
82
82
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Run every sample graph once, in-process, to prove they import and execute.
|
|
2
2
|
|
|
3
3
|
Useful as a local smoke test while developing a new graph. Does not require
|
|
4
|
-
the HTTP server or
|
|
4
|
+
the HTTP server or seekdb — it invokes each compiled graph directly through
|
|
5
5
|
LangGraph.
|
|
6
6
|
"""
|
|
7
7
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "agentseek-api"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.1"
|
|
4
4
|
description = "AgentSeek API core runtime with OceanBase checkpoints."
|
|
5
5
|
readme = "README.md"
|
|
6
|
-
requires-python = ">=3.12"
|
|
6
|
+
requires-python = ">=3.12,<3.14"
|
|
7
7
|
dependencies = [
|
|
8
8
|
"fastapi>=0.110.1",
|
|
9
9
|
"uvicorn>=0.30.0",
|
|
@@ -20,18 +20,19 @@ dependencies = [
|
|
|
20
20
|
"langchain-core>=1.2.5",
|
|
21
21
|
"langchain-openai>=1.0.0",
|
|
22
22
|
"langchain-anthropic>=1.0.0",
|
|
23
|
-
"langchain-oceanbase==0.6.
|
|
23
|
+
"langchain-oceanbase==0.6.3",
|
|
24
24
|
"cryptography>=45.0.0",
|
|
25
25
|
"pymysql>=1.1.0",
|
|
26
26
|
"langchain>=0.3.9",
|
|
27
27
|
"mcp>=1.27.1,<2",
|
|
28
28
|
"python-dotenv>=1.0,<1.3",
|
|
29
29
|
"scalar-fastapi>=1.0.3",
|
|
30
|
+
"packaging>=24.0",
|
|
30
31
|
]
|
|
31
32
|
|
|
32
33
|
[project.optional-dependencies]
|
|
33
34
|
embedded = [
|
|
34
|
-
"langchain-oceanbase[pyseekdb]==0.6.
|
|
35
|
+
"langchain-oceanbase[pyseekdb]==0.6.3",
|
|
35
36
|
]
|
|
36
37
|
|
|
37
38
|
[project.scripts]
|
|
@@ -53,6 +54,9 @@ dev = [
|
|
|
53
54
|
requires = ["hatchling"]
|
|
54
55
|
build-backend = "hatchling.build"
|
|
55
56
|
|
|
57
|
+
[tool.hatch.build]
|
|
58
|
+
exclude = ["/.superpowers", "/docs/superpowers"]
|
|
59
|
+
|
|
56
60
|
[tool.hatch.build.targets.wheel]
|
|
57
61
|
packages = ["src/agentseek_api"]
|
|
58
62
|
|
|
@@ -60,5 +64,6 @@ packages = ["src/agentseek_api"]
|
|
|
60
64
|
asyncio_mode = "auto"
|
|
61
65
|
testpaths = ["tests"]
|
|
62
66
|
markers = [
|
|
63
|
-
"
|
|
67
|
+
"docker: tests requiring Docker or Docker Compose",
|
|
68
|
+
"e2e: end-to-end tests against a live server and real seekdb/OceanBase backend",
|
|
64
69
|
]
|