agentseek-api 0.2.2__tar.gz → 0.3.0__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.
Files changed (269) hide show
  1. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/.github/workflows/ci.yml +35 -6
  2. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/CHANGELOG.md +54 -0
  3. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/PKG-INFO +53 -4
  4. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/README.md +51 -3
  5. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/README.zh-CN.md +45 -3
  6. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/pyproject.toml +6 -1
  7. agentseek_api-0.3.0/scripts/container_image_archive.py +296 -0
  8. agentseek_api-0.3.0/scripts/test-cli-docker.sh +376 -0
  9. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test-redis-runtime.sh +48 -3
  10. agentseek_api-0.3.0/scripts/test_cli_config_autodiscovery.py +123 -0
  11. agentseek_api-0.3.0/scripts/test_container_env_boundary.py +920 -0
  12. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test_minimum_cli_dependencies.py +15 -0
  13. agentseek_api-0.3.0/scripts/value_free_log_tail.py +46 -0
  14. agentseek_api-0.3.0/src/agentseek_api/__init__.py +1 -0
  15. agentseek_api-0.3.0/src/agentseek_api/cli.py +1722 -0
  16. agentseek_api-0.3.0/src/agentseek_api/container_build.py +2831 -0
  17. agentseek_api-0.3.0/src/agentseek_api/container_policy.py +350 -0
  18. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/database.py +27 -8
  19. agentseek_api-0.3.0/src/agentseek_api/core/sqlite_checkpointer.py +82 -0
  20. agentseek_api-0.3.0/src/agentseek_api/docker_runtime.py +720 -0
  21. agentseek_api-0.3.0/src/agentseek_api/dotenv_adapter.py +141 -0
  22. agentseek_api-0.3.0/src/agentseek_api/environment.py +509 -0
  23. agentseek_api-0.3.0/src/agentseek_api/runtime_entrypoint.py +201 -0
  24. agentseek_api-0.3.0/src/agentseek_api/secure_temp.py +1046 -0
  25. agentseek_api-0.3.0/tests/container_plan_helpers.py +315 -0
  26. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_cli_runtime_processes.py +173 -0
  27. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_metadata_db_config.py +53 -0
  28. agentseek_api-0.3.0/tests/unit/test_ci_workflow.py +111 -0
  29. agentseek_api-0.3.0/tests/unit/test_cli.py +4414 -0
  30. agentseek_api-0.3.0/tests/unit/test_container_boundary_acceptance.py +606 -0
  31. agentseek_api-0.3.0/tests/unit/test_container_build.py +2332 -0
  32. agentseek_api-0.3.0/tests/unit/test_container_image_archive.py +364 -0
  33. agentseek_api-0.3.0/tests/unit/test_container_policy.py +591 -0
  34. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_database_manager.py +27 -13
  35. agentseek_api-0.3.0/tests/unit/test_docker_runtime.py +1372 -0
  36. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_dotenv_adapter.py +31 -0
  37. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_redis_runtime_script.py +31 -1
  38. agentseek_api-0.3.0/tests/unit/test_release_artifacts.py +14 -0
  39. agentseek_api-0.3.0/tests/unit/test_secure_temp.py +705 -0
  40. agentseek_api-0.3.0/tests/unit/test_sqlite_checkpointer.py +51 -0
  41. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/uv.lock +3 -1
  42. agentseek_api-0.2.2/scripts/test-cli-docker.sh +0 -172
  43. agentseek_api-0.2.2/scripts/test_cli_config_autodiscovery.py +0 -55
  44. agentseek_api-0.2.2/src/agentseek_api/__init__.py +0 -1
  45. agentseek_api-0.2.2/src/agentseek_api/cli.py +0 -1117
  46. agentseek_api-0.2.2/src/agentseek_api/dotenv_adapter.py +0 -69
  47. agentseek_api-0.2.2/src/agentseek_api/runtime_entrypoint.py +0 -59
  48. agentseek_api-0.2.2/tests/unit/test_cli.py +0 -2193
  49. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/.dockerignore +0 -0
  50. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/.env.example +0 -0
  51. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  52. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/.github/workflows/live-provider-streaming.yml +0 -0
  53. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/.github/workflows/release.yml +0 -0
  54. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/.gitignore +0 -0
  55. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/AGENTS.md +0 -0
  56. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/CONTRIBUTING.md +0 -0
  57. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/LICENSE +0 -0
  58. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/Makefile +0 -0
  59. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/README.md +0 -0
  60. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/__init__.py +0 -0
  61. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/assistant_config/agentseek.json +0 -0
  62. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/assistant_config/graph.py +0 -0
  63. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/auth/api_key_auth.py +0 -0
  64. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/auth/bearer_token_auth.py +0 -0
  65. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/auth/custom_backend.py +0 -0
  66. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/auth/jwt.md +0 -0
  67. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/auth/jwt_auth.py +0 -0
  68. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/custom_routes/app.py +0 -0
  69. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/docker_ci_auth/auth_backend.py +0 -0
  70. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/docker_ci_auth/manifest.json +0 -0
  71. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/external_graph/__init__.py +0 -0
  72. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/external_graph/graph.py +0 -0
  73. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/external_graph/manifest.json +0 -0
  74. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/external_graph/run.py +0 -0
  75. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/__init__.py +0 -0
  76. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/react_agent/__init__.py +0 -0
  77. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/react_agent/graph.py +0 -0
  78. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/store_memory/graph.py +0 -0
  79. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/stress_test/__init__.py +0 -0
  80. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/stress_test/graph.py +0 -0
  81. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/stress_tool_agent/__init__.py +0 -0
  82. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/stress_tool_agent/graph.py +0 -0
  83. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/subgraph_agent/__init__.py +0 -0
  84. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/subgraph_agent/graph.py +0 -0
  85. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/subgraph_hitl_agent/__init__.py +0 -0
  86. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/graphs/subgraph_hitl_agent/graph.py +0 -0
  87. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/live_provider_graphs/__init__.py +0 -0
  88. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/live_provider_graphs/graph.py +0 -0
  89. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/live_provider_graphs/manifest.json +0 -0
  90. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/minimal_agentseek/agentseek.json +0 -0
  91. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/minimal_agentseek/graph.py +0 -0
  92. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/run_sample_graphs.py +0 -0
  93. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/examples/sample_graphs_manifest.json +0 -0
  94. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/build_live_provider_matrix.py +0 -0
  95. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/seekdb_checkpoint_smoke.py +0 -0
  96. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/seekdb_embed_launcher.py +0 -0
  97. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test-checkpoints.sh +0 -0
  98. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test-cli-dev-samples.sh +0 -0
  99. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test-live-provider.sh +0 -0
  100. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test-seekdb.sh +0 -0
  101. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test_cli_dev_studio_smoke.py +0 -0
  102. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test_cli_embed_serve_smoke.py +0 -0
  103. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/test_cli_serve_smoke.py +0 -0
  104. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/verify_docker_api.py +0 -0
  105. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/scripts/verify_worker_concurrency.py +0 -0
  106. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/a2a_server.py +0 -0
  107. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/api/__init__.py +0 -0
  108. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/api/assistants.py +0 -0
  109. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/api/crons.py +0 -0
  110. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/api/runs.py +0 -0
  111. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/api/stateless_runs.py +0 -0
  112. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/api/store.py +0 -0
  113. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/api/streaming.py +0 -0
  114. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/api/threads.py +0 -0
  115. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/constants.py +0 -0
  116. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/__init__.py +0 -0
  117. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/a2a_config.py +0 -0
  118. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/app_loader.py +0 -0
  119. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/auth_deps.py +0 -0
  120. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/auth_middleware.py +0 -0
  121. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/config_file.py +0 -0
  122. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/content_type_fix.py +0 -0
  123. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/cors_config.py +0 -0
  124. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/http_config.py +0 -0
  125. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/mcp_config.py +0 -0
  126. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/oceanbase_checkpointer.py +0 -0
  127. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/orm.py +0 -0
  128. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/runtime_store.py +0 -0
  129. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/core/store_config.py +0 -0
  130. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/main.py +0 -0
  131. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/mcp_server.py +0 -0
  132. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/models/__init__.py +0 -0
  133. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/models/api.py +0 -0
  134. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/models/auth.py +0 -0
  135. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/models/protocol.py +0 -0
  136. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/process_supervisor.py +0 -0
  137. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/scheduler.py +0 -0
  138. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/__init__.py +0 -0
  139. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/cron_models.py +0 -0
  140. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/cron_rrule.py +0 -0
  141. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/cron_scheduler.py +0 -0
  142. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/cron_service.py +0 -0
  143. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/cron_webhooks.py +0 -0
  144. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/default_assistants.py +0 -0
  145. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/executor.py +0 -0
  146. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/langgraph_service.py +0 -0
  147. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/redis_queue.py +0 -0
  148. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/run_executor.py +0 -0
  149. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/run_jobs.py +0 -0
  150. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/run_preparation.py +0 -0
  151. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/run_state.py +0 -0
  152. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/sample_graphs.py +0 -0
  153. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/sse.py +0 -0
  154. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/stream_modes.py +0 -0
  155. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/stream_persistence.py +0 -0
  156. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/thread_checkpoint_store.py +0 -0
  157. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/thread_protocol.py +0 -0
  158. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/services/thread_service.py +0 -0
  159. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/settings.py +0 -0
  160. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/src/agentseek_api/worker.py +0 -0
  161. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/__init__.py +0 -0
  162. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/conftest.py +0 -0
  163. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/__init__.py +0 -0
  164. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/conftest.py +0 -0
  165. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/e2e_inprocess_flow.py +0 -0
  166. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/e2e_live_http_flow.py +0 -0
  167. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/e2e_live_http_multi_graph.py +0 -0
  168. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/e2e_live_http_resume_flow.py +0 -0
  169. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/fixtures/langgraph.store-e2e.json +0 -0
  170. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/live_provider_helpers.py +0 -0
  171. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/test_a2a_live.py +0 -0
  172. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/test_cron_api_live.py +0 -0
  173. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/test_cron_scheduler_live.py +0 -0
  174. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/test_langsmith_compat_live.py +0 -0
  175. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/test_live_provider_api.py +0 -0
  176. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/test_live_provider_mcp.py +0 -0
  177. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/test_mcp_live.py +0 -0
  178. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/e2e/test_real_api_flow.py +0 -0
  179. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/fixtures/runtime_settings_probe/sitecustomize.py +0 -0
  180. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/fixtures/termination_tree.py +0 -0
  181. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_a2a_endpoint.py +0 -0
  182. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_agent_card.py +0 -0
  183. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_agents_aliases.py +0 -0
  184. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_assistants_compat.py +0 -0
  185. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_assistants_config_context_sync.py +0 -0
  186. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_assistants_crud.py +0 -0
  187. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_assistants_ordering.py +0 -0
  188. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_auth_coverage_gaps.py +0 -0
  189. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_auth_handlers.py +0 -0
  190. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_auth_route_enforcement.py +0 -0
  191. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_auth_scope_matrix.py +0 -0
  192. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_core_api_flow.py +0 -0
  193. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_cron_api.py +0 -0
  194. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_langsmith_compat_coverage.py +0 -0
  195. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_langsmith_compat_extra.py +0 -0
  196. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_live_provider_streaming.py +0 -0
  197. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_live_redis_queue.py +0 -0
  198. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_live_redis_stream_persistence.py +0 -0
  199. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_mcp_endpoint.py +0 -0
  200. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_protocol_v2_streaming.py +0 -0
  201. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_run_cancellation_async.py +0 -0
  202. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_compat.py +0 -0
  203. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_crud.py +0 -0
  204. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_ordering.py +0 -0
  205. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_resume.py +0 -0
  206. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_streaming.py +0 -0
  207. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_streaming_errors.py +0 -0
  208. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_validation.py +0 -0
  209. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_wait_and_get.py +0 -0
  210. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_runs_wait_timeout.py +0 -0
  211. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_scheduler_runtime.py +0 -0
  212. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_stateless_runs_crud.py +0 -0
  213. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_store_api.py +0 -0
  214. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_stream_persistence.py +0 -0
  215. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_system_endpoints.py +0 -0
  216. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_threads_compat.py +0 -0
  217. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_threads_crud.py +0 -0
  218. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/integration/test_threads_ordering.py +0 -0
  219. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_a2a_config.py +0 -0
  220. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_a2a_server.py +0 -0
  221. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_app_loader.py +0 -0
  222. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_assistant_routes_unit.py +0 -0
  223. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_auth.py +0 -0
  224. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_auth_deps.py +0 -0
  225. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_auth_internals.py +0 -0
  226. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_checkpoint_guards.py +0 -0
  227. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_content_type_fix.py +0 -0
  228. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_cron_rrule.py +0 -0
  229. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_cron_service.py +0 -0
  230. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_cron_webhooks.py +0 -0
  231. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_custom_routers.py +0 -0
  232. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_default_assistants.py +0 -0
  233. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_examples.py +0 -0
  234. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_executor.py +0 -0
  235. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_graph_manifest.py +0 -0
  236. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_http_config.py +0 -0
  237. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_langgraph_service.py +0 -0
  238. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_live_provider_e2e_config.py +0 -0
  239. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_live_provider_graphs.py +0 -0
  240. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_live_provider_matrix.py +0 -0
  241. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_mcp_config.py +0 -0
  242. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_mcp_server.py +0 -0
  243. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_oceanbase_checkpointer.py +0 -0
  244. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_openapi_auth_config.py +0 -0
  245. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_process_supervisor.py +0 -0
  246. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_redis_queue.py +0 -0
  247. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_run_controls_validation.py +0 -0
  248. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_run_executor.py +0 -0
  249. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_run_jobs.py +0 -0
  250. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_run_preparation.py +0 -0
  251. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_run_state.py +0 -0
  252. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_runtime_entrypoint.py +0 -0
  253. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_runtime_environment.py +0 -0
  254. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_runtime_store.py +0 -0
  255. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_sample_graphs.py +0 -0
  256. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_scheduler.py +0 -0
  257. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_scheduler_process.py +0 -0
  258. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_seekdb_checkpoint_smoke.py +0 -0
  259. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_seekdb_embed_launcher.py +0 -0
  260. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_sse_keepalive.py +0 -0
  261. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_store_config.py +0 -0
  262. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_stream_modes.py +0 -0
  263. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_stream_persistence_helpers.py +0 -0
  264. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_thread_checkpoint_store.py +0 -0
  265. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_thread_protocol.py +0 -0
  266. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_thread_routes_unit.py +0 -0
  267. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_thread_service.py +0 -0
  268. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_worker.py +0 -0
  269. {agentseek_api-0.2.2 → agentseek_api-0.3.0}/tests/unit/test_worker_concurrency_probe.py +0 -0
@@ -44,7 +44,13 @@ jobs:
44
44
  run: uv sync --dev
45
45
 
46
46
  - name: Coverage-backed unit + integration suite
47
- run: make test-cov
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: >-
@@ -91,7 +95,11 @@ jobs:
91
95
  tests/unit/test_runtime_environment.py
92
96
  tests/unit/test_runtime_entrypoint.py
93
97
  tests/unit/test_process_supervisor.py
98
+ tests/unit/test_sqlite_checkpointer.py
99
+ tests/unit/test_container_policy.py
100
+ tests/unit/test_secure_temp.py
94
101
  tests/integration/test_cli_runtime_processes.py
102
+ tests/integration/test_metadata_db_config.py
95
103
  -q
96
104
 
97
105
  - name: Sync embedded SeekDB extra for serve smoke
@@ -128,9 +136,15 @@ jobs:
128
136
  run: uv run python scripts/test_cli_embed_serve_smoke.py
129
137
 
130
138
  cli-docker-runtime:
131
- name: CLI Docker Runtime
139
+ name: CLI Docker Runtime (Compose ${{ matrix.compose-version }})
132
140
  runs-on: ubuntu-latest
133
- timeout-minutes: 30
141
+ timeout-minutes: 45
142
+ strategy:
143
+ fail-fast: false
144
+ matrix:
145
+ compose-version:
146
+ - runner-current
147
+ - v2.24.0
134
148
  steps:
135
149
  - name: Checkout
136
150
  uses: actions/checkout@v4
@@ -145,6 +159,21 @@ jobs:
145
159
  - name: Sync dependencies
146
160
  run: uv sync --dev
147
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
+
148
177
  - name: CLI Docker smoke
149
178
  run: make test-cli-docker
150
179
 
@@ -4,6 +4,60 @@ Notable changes to AgentSeek API are documented in this file.
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 0.3.0 - 2026-08-20
8
+
9
+ ### Highlights
10
+
11
+ - Added the explicit `preloaded-v1` container environment contract so the host
12
+ remains the single owner of application environment resolution.
13
+ - Generated containers install and attest the exact
14
+ `agentseek-api[embedded]==0.3.0` runtime independently of project
15
+ dependencies.
16
+ - Hardened Docker, Compose, and build-context boundaries so application values
17
+ are carried only to the declared runtime target and credential-bearing source
18
+ files are excluded from image inputs.
19
+ - Defined compatible custom-image labels and runtime-manifest checks for
20
+ `preloaded-v1` launches.
21
+
22
+ ### Upgrade notes
23
+
24
+ - Container projects that pin `agentseek-api==0.2.2`, or otherwise exclude
25
+ `0.3.0`, must update their dependency constraint before using generated
26
+ images.
27
+ - Custom images must publish the `preloaded-v1` environment-contract, runtime
28
+ manifest, distribution, and version labels; older images must keep using the
29
+ older launcher until migrated.
30
+ - `dockerfile` now writes a complete build-bundle directory. Declare only
31
+ reviewed project paths with `build_include`; credentialed `pip_config_file`
32
+ input is delivered as a BuildKit secret rather than copied into the bundle.
33
+ - Container application values cross only an explicit runtime boundary:
34
+ `--pass-env` selects the direct Docker carrier, while `compose_env` and
35
+ `--compose-pass-env` select the private Compose dotenv carrier. All are
36
+ trusted-input declarations and none authorize values to enter the build.
37
+ - Custom images must provide the exact `org.agentseek.environment-contract`,
38
+ `org.agentseek.runtime-manifest`, `org.agentseek.runtime-distribution`, and
39
+ `org.agentseek.runtime-version` labels and matching manifest/runtime state.
40
+ There is no legacy-image fallback.
41
+ - Release Train A shipped API 0.2.3, templates 0.1.3, and AgentSeek 0.1.3. The
42
+ planned Train B template/catalog release is 0.1.4. The separate planned
43
+ AgentSeek release is also 0.1.4; both follow their shipped 0.1.3 releases and
44
+ remain separate release gates.
45
+
46
+ ## 0.2.3 - 2026-08-17
47
+
48
+ ### Fixed
49
+
50
+ - When `METADATA_DB_BACKEND=sqlite`, store completed-run snapshots in the
51
+ configured SQLite metadata database instead of constructing an OceanBase
52
+ saver and attempting a MySQL-family connection.
53
+
54
+ ### Upgrade notes
55
+
56
+ - No manual schema or configuration migration is required. The
57
+ `agentseek_checkpoints` table is created idempotently at startup.
58
+ - This fix covers completed-run snapshots only. LangGraph checkpoint state
59
+ remains in memory when the metadata backend is SQLite.
60
+
7
61
  ## 0.2.2 - 2026-08-16
8
62
 
9
63
  ### Highlights
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentseek-api
3
- Version: 0.2.2
3
+ Version: 0.3.0
4
4
  Summary: AgentSeek API core runtime with OceanBase checkpoints.
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -18,6 +18,7 @@ Requires-Dist: langchain>=0.3.9
18
18
  Requires-Dist: langgraph-sdk>=0.3.5
19
19
  Requires-Dist: langgraph>=1.0.6
20
20
  Requires-Dist: mcp<2,>=1.27.1
21
+ Requires-Dist: packaging>=24.0
21
22
  Requires-Dist: pydantic-settings>=2.4.0
22
23
  Requires-Dist: pydantic>=2.8.0
23
24
  Requires-Dist: pymysql>=1.1.0
@@ -217,7 +218,7 @@ When the server starts it prints the banner and local URLs:
217
218
  ╠═╣│ ┬├┤ │││ │ ╚═╗├┤ ├┤ ├┴┐
218
219
  ╩ ╩└─┘└─┘┘└┘ ┴ ╚═╝└─┘└─┘┴ ┴
219
220
 
220
- AgentSeek v0.2.2
221
+ AgentSeek v0.2.3
221
222
 
222
223
  - 🚀 API: http://localhost:2024
223
224
  - 📚 Docs: http://localhost:2024/docs
@@ -328,7 +329,7 @@ keys with similar names.
328
329
  uv run agentseek-api dev
329
330
  uv run agentseek-api serve --config ./langgraph.json --port 8080
330
331
  uv run agentseek-api worker --config ./langgraph.json
331
- uv run agentseek-api dockerfile --config ./langgraph.json ./Dockerfile.agentseek
332
+ uv run agentseek-api dockerfile --config ./langgraph.json ./agentseek-build-bundle
332
333
  uv run agentseek-api build --config ./langgraph.json -t agentseek-api:dev
333
334
  uv run agentseek-api up --config ./langgraph.json --port 8123 --wait
334
335
  uv run agentseek-api version
@@ -355,9 +356,18 @@ uv run agentseek-api version
355
356
  - `build`
356
357
  - Use `-t, --tag` to set the image tag
357
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
358
363
  - `up`
359
364
  - Supports `--wait`, `--image`, `--base-image`, `--postgres-uri`,
360
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`
361
371
 
362
372
  Some LangGraph CLI-shaped flags are parsed for command compatibility but
363
373
  rejected when their runtime behavior is not implemented yet. For mocked,
@@ -436,6 +446,40 @@ Useful config fields:
436
446
  - `http.disable_a2a`: disable the A2A endpoint and agent-card discovery route
437
447
  - `base_image`, `python_version`, `image_distro`, `pip_config_file`,
438
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 migration for 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.0`
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.
439
483
 
440
484
  Endpoint-level LangGraph config keys such as `http` and `api_version` are
441
485
  tolerated by the CLI layer where possible. Store config is used by the HTTP
@@ -691,7 +735,12 @@ parent api build --config ./langgraph.json -t my-api:dev
691
735
  - `METADATA_DB_BACKEND=auto` normalizes drivers:
692
736
  - PostgreSQL: `postgresql+asyncpg://...`
693
737
  - OceanBase / MySQL: `mysql+aiomysql://...`
694
- - Checkpoint persistence defaults to OceanBase / seekdb settings
738
+ - SQLite: `sqlite+aiosqlite://...`
739
+ - Completed-run snapshots default to OceanBase / seekdb settings. With
740
+ `METADATA_DB_BACKEND=sqlite`, they are stored in the configured SQLite
741
+ metadata database without constructing an OceanBase saver.
742
+ - The SQLite metadata path still uses an in-memory LangGraph checkpointer; it
743
+ does not make LangGraph graph checkpoints durable.
695
744
  - Auth: configure via `agentseek.json` `"auth.path"` or `AUTH_MODULE_PATH` env var.
696
745
  Uses `langgraph_sdk.Auth` with `@auth.authenticate` and `@auth.on` handlers.
697
746
  If not set, all requests pass through as default_user (noop).
@@ -185,7 +185,7 @@ When the server starts it prints the banner and local URLs:
185
185
  ╠═╣│ ┬├┤ │││ │ ╚═╗├┤ ├┤ ├┴┐
186
186
  ╩ ╩└─┘└─┘┘└┘ ┴ ╚═╝└─┘└─┘┴ ┴
187
187
 
188
- AgentSeek v0.2.2
188
+ AgentSeek v0.2.3
189
189
 
190
190
  - 🚀 API: http://localhost:2024
191
191
  - 📚 Docs: http://localhost:2024/docs
@@ -296,7 +296,7 @@ keys with similar names.
296
296
  uv run agentseek-api dev
297
297
  uv run agentseek-api serve --config ./langgraph.json --port 8080
298
298
  uv run agentseek-api worker --config ./langgraph.json
299
- uv run agentseek-api dockerfile --config ./langgraph.json ./Dockerfile.agentseek
299
+ uv run agentseek-api dockerfile --config ./langgraph.json ./agentseek-build-bundle
300
300
  uv run agentseek-api build --config ./langgraph.json -t agentseek-api:dev
301
301
  uv run agentseek-api up --config ./langgraph.json --port 8123 --wait
302
302
  uv run agentseek-api version
@@ -323,9 +323,18 @@ uv run agentseek-api version
323
323
  - `build`
324
324
  - Use `-t, --tag` to set the image tag
325
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
326
330
  - `up`
327
331
  - Supports `--wait`, `--image`, `--base-image`, `--postgres-uri`,
328
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`
329
338
 
330
339
  Some LangGraph CLI-shaped flags are parsed for command compatibility but
331
340
  rejected when their runtime behavior is not implemented yet. For mocked,
@@ -404,6 +413,40 @@ Useful config fields:
404
413
  - `http.disable_a2a`: disable the A2A endpoint and agent-card discovery route
405
414
  - `base_image`, `python_version`, `image_distro`, `pip_config_file`,
406
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 migration for 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.0`
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.
407
450
 
408
451
  Endpoint-level LangGraph config keys such as `http` and `api_version` are
409
452
  tolerated by the CLI layer where possible. Store config is used by the HTTP
@@ -659,7 +702,12 @@ parent api build --config ./langgraph.json -t my-api:dev
659
702
  - `METADATA_DB_BACKEND=auto` normalizes drivers:
660
703
  - PostgreSQL: `postgresql+asyncpg://...`
661
704
  - OceanBase / MySQL: `mysql+aiomysql://...`
662
- - Checkpoint persistence defaults to OceanBase / seekdb settings
705
+ - SQLite: `sqlite+aiosqlite://...`
706
+ - Completed-run snapshots default to OceanBase / seekdb settings. With
707
+ `METADATA_DB_BACKEND=sqlite`, they are stored in the configured SQLite
708
+ metadata database without constructing an OceanBase saver.
709
+ - The SQLite metadata path still uses an in-memory LangGraph checkpointer; it
710
+ does not make LangGraph graph checkpoints durable.
663
711
  - Auth: configure via `agentseek.json` `"auth.path"` or `AUTH_MODULE_PATH` env var.
664
712
  Uses `langgraph_sdk.Auth` with `@auth.authenticate` and `@auth.on` handlers.
665
713
  If not set, all requests pass through as default_user (noop).
@@ -181,7 +181,7 @@ uv run agentseek-api dev --config ./langgraph.json
181
181
  ╠═╣│ ┬├┤ │││ │ ╚═╗├┤ ├┤ ├┴┐
182
182
  ╩ ╩└─┘└─┘┘└┘ ┴ ╚═╝└─┘└─┘┴ ┴
183
183
 
184
- AgentSeek v0.2.2
184
+ AgentSeek v0.2.3
185
185
 
186
186
  - 🚀 API: http://localhost:2024
187
187
  - 📚 Docs: http://localhost:2024/docs
@@ -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 ./Dockerfile.agentseek
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,6 +379,35 @@ 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.0`
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
@@ -623,7 +660,12 @@ parent api build --config ./langgraph.json -t my-api:dev
623
660
  - `METADATA_DB_BACKEND=auto` 会对驱动进行归一化:
624
661
  - PostgreSQL:`postgresql+asyncpg://...`
625
662
  - OceanBase / MySQL:`mysql+aiomysql://...`
626
- - Checkpoint 持久化默认使用 OceanBase / seekdb 配置
663
+ - SQLite:`sqlite+aiosqlite://...`
664
+ - 完成态 run 快照默认使用 OceanBase / seekdb 配置。当
665
+ `METADATA_DB_BACKEND=sqlite` 时,快照会写入已配置的 SQLite 元数据
666
+ 数据库,且不会构造 OceanBase saver。
667
+ - SQLite 元数据路径仍使用内存中的 LangGraph checkpointer,不提供持久化的
668
+ LangGraph 图 checkpoint。
627
669
  - 鉴权:通过 `agentseek.json` 的 `"auth.path"` 或 `AUTH_MODULE_PATH` 环境变量配置。
628
670
  使用 `langgraph_sdk.Auth` 的 `@auth.authenticate` 与 `@auth.on` 处理器风格。
629
671
  未配置时所有请求以 default_user 放行(noop)。
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentseek-api"
3
- version = "0.2.2"
3
+ version = "0.3.0"
4
4
  description = "AgentSeek API core runtime with OceanBase checkpoints."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -27,6 +27,7 @@ dependencies = [
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]
@@ -53,6 +54,9 @@ dev = [
53
54
  requires = ["hatchling"]
54
55
  build-backend = "hatchling.build"
55
56
 
57
+ [tool.hatch.build]
58
+ exclude = ["/.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 = [
67
+ "docker: tests requiring Docker or Docker Compose",
63
68
  "e2e: end-to-end tests against a live server and real SeekDB/OceanBase backend",
64
69
  ]