agent-starter-pack 0.0.10b0__tar.gz → 0.0.12b0__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.
Potentially problematic release.
This version of agent-starter-pack might be problematic. Click here for more details.
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/PKG-INFO +5 -2
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/README.md +4 -0
- agent_starter_pack-0.0.12b0/docs/installation.md +72 -0
- agent_starter_pack-0.0.12b0/docs/troubleshooting.md +104 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/pyproject.toml +1 -2
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/Makefile +4 -3
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/README.md +12 -2
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/cli/commands/create.py +11 -66
- agent_starter_pack-0.0.12b0/src/cli/main.py +57 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/cli/utils/cicd.py +11 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/cli/commands/test_create.py +4 -14
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/uv.lock +1 -70
- agent_starter_pack-0.0.10b0/src/cli/main.py +0 -35
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/.gitignore +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/CODE_OF_CONDUCT.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/CONTRIBUTING.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/LICENSE +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/Makefile +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/agentic_rag_vertexai_search/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/agentic_rag_vertexai_search/app/agent.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/agentic_rag_vertexai_search/app/retrievers.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/agentic_rag_vertexai_search/app/templates.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/agentic_rag_vertexai_search/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/agentic_rag_vertexai_search/template/.templateconfig.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/agentic_rag_vertexai_search/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/app/agent.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/app/crew/config/agents.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/app/crew/config/tasks.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/app/crew/crew.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/notebooks/evaluating_crewai_agent.ipynb +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/template/.templateconfig.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/crewai_coding_crew/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/langgraph_base_react/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/langgraph_base_react/app/agent.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/langgraph_base_react/notebooks/evaluating_langgraph_agent.ipynb +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/langgraph_base_react/template/.templateconfig.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/langgraph_base_react/tests/integration/test_agent.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/app/agent.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/app/server.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/app/templates.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/app/vector_store.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/template/.templateconfig.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/agents/multimodal_live_api/tests/unit/test_server.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/cli/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/cli/create.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/cli/setup_cicd.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/data-ingestion.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/deployment.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/images/ags_banner.png +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/images/ags_high_level_architecture.png +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/observability.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/docs/why_starter_pack.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/.gitignore +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/app/utils/tracing.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/app/utils/typing.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/cd/deploy-to-prod.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/cd/staging.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/ci/pr_checks.yaml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/apis.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/build_triggers.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/dev/apis.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/dev/iam.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/dev/log_sinks.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/dev/providers.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/dev/storage.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/dev/variables.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/dev/vars/env.tfvars +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/iam.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/locals.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/log_sinks.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/providers.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/service_accounts.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/storage.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/variables.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/deployment/terraform/vars/env.tfvars +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/pyproject.toml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/base_template/tests/unit/test_utils/test_tracing_exporter.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/cli/commands/setup_cicd.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/cli/utils/__init__.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/cli/utils/gcp.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/cli/utils/logging.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/cli/utils/template.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/data_ingestion/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/data_ingestion/data_ingestion_pipeline/components/ingest_data.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/data_ingestion/data_ingestion_pipeline/components/process_data.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/data_ingestion/data_ingestion_pipeline/pipeline.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/data_ingestion/data_ingestion_pipeline/submit_pipeline.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/data_ingestion/pyproject.toml +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/data_ingestion/uv.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/app/agent_engine_app.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/app/utils/gcs.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/deployment_metadata.json +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/notebooks/intro_reasoning_engine.ipynb +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/tests/integration/test_agent_engine_app.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/agent_engine/tests/unit/test_dummy.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/Dockerfile +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/app/server.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/deployment/terraform/artifact_registry.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/deployment/terraform/dev/service_accounts.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/tests/integration/test_server_e2e.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/tests/load_test/.results/.placeholder +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/tests/load_test/README.md +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/tests/load_test/load_test.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/tests/unit/test_server.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/deployment_targets/cloud_run/uv.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/package-lock.json +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/package.json +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/public/favicon.ico +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/public/index.html +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/public/robots.txt +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/App.scss +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/App.test.tsx +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/App.tsx +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/audio-pulse/AudioPulse.tsx +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/audio-pulse/audio-pulse.scss +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/control-tray/ControlTray.tsx +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/control-tray/control-tray.scss +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/logger/Logger.tsx +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/logger/logger.scss +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/logger/mock-logs.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/side-panel/SidePanel.tsx +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/components/side-panel/side-panel.scss +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/contexts/LiveAPIContext.tsx +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/hooks/use-live-api.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/hooks/use-media-stream-mux.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/hooks/use-screen-capture.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/hooks/use-webcam.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/index.css +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/index.tsx +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/multimodal-live-types.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/react-app-env.d.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/reportWebVitals.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/setupTests.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/utils/audio-recorder.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/utils/audio-streamer.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/utils/audioworklet-registry.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/utils/multimodal-live-client.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/utils/store-logger.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/utils/utils.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/utils/worklets/audio-processing.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/src/utils/worklets/vol-meter.ts +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/live_api_react/frontend/tsconfig.json +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/side_bar.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/streamlit_app.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/style/app_markdown.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/utils/chat_utils.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/utils/local_chat_history.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/utils/message_editing.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/utils/multimodal_utils.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/utils/stream_handler.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/frontends/streamlit/frontend/utils/title_summary.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/containers/data_processing/Dockerfile +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/locks/uv-agentic_rag_vertexai_search-agent_engine.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/locks/uv-agentic_rag_vertexai_search-cloud_run.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/locks/uv-crewai_coding_crew-agent_engine.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/locks/uv-crewai_coding_crew-cloud_run.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/locks/uv-langgraph_base_react-agent_engine.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/locks/uv-langgraph_base_react-cloud_run.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/locks/uv-multimodal_live_api-cloud_run.lock +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/setup_cicd/cicd_variables.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/setup_cicd/github.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/resources/setup_cicd/providers.tf +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/utils/generate_locks.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/utils/lock_utils.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/src/utils/watch_and_rebuild.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/cicd/example.env +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/cicd/test_e2e_deployment.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/cli/commands/test_setup_cicd.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/cli/utils/test_cicd.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/integration/test_io_patterns.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/integration/test_template_linting.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/integration/test_templated_patterns.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/test_frontend/test_side_bar.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/test_frontend/test_streamlit_app.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/test_frontend/test_utils/test_chat_utils.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/test_frontend/test_utils/test_local_chat_history.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/test_frontend/test_utils/test_message_editing.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/test_frontend/test_utils/test_multimodal_utils.py +0 -0
- {agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/test_frontend/test_utils/test_stream_handler.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-starter-pack
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.12b0
|
|
4
4
|
Summary: CLI tool to create GCP-based AI agent projects from templates
|
|
5
5
|
Author-email: Google LLC <agent-starter-pack@google.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -9,7 +9,6 @@ Requires-Python: >=3.10
|
|
|
9
9
|
Requires-Dist: click~=8.1.7
|
|
10
10
|
Requires-Dist: cookiecutter~=2.5.0
|
|
11
11
|
Requires-Dist: google-cloud-aiplatform~=1.81.0
|
|
12
|
-
Requires-Dist: inquirer~=3.1.3
|
|
13
12
|
Requires-Dist: pyyaml~=6.0.1
|
|
14
13
|
Requires-Dist: rich~=13.7.0
|
|
15
14
|
Provides-Extra: jupyter
|
|
@@ -53,6 +52,7 @@ agent-starter-pack create my-awesome-agent
|
|
|
53
52
|
```
|
|
54
53
|
|
|
55
54
|
**That's it!** You now have a fully functional agent project, complete with a backend, frontend, and deployment infrastructure, ready to explore and customize.
|
|
55
|
+
For more installation options, see the [Installation Guide](docs/installation.md).
|
|
56
56
|
|
|
57
57
|
---
|
|
58
58
|
|
|
@@ -114,10 +114,13 @@ This project represents the next evolution of the [e2e-gen-ai-app-starter-pack](
|
|
|
114
114
|
See the [documentation](docs/) for more details:
|
|
115
115
|
|
|
116
116
|
- [Why Use the Starter Pack?](docs/why_starter_pack.md)
|
|
117
|
+
- [Installation](docs/installation.md)
|
|
117
118
|
- [Deployment](docs/deployment.md)
|
|
118
119
|
- [Data Ingestion](docs/data-ingestion.md)
|
|
119
120
|
- [Observability](docs/observability.md)
|
|
120
121
|
- [CLI Reference](docs/cli/README.md)
|
|
122
|
+
- [CLI Reference](docs/cli/README.md)
|
|
123
|
+
- [Troubleshooting](docs/troubleshooting.md)
|
|
121
124
|
|
|
122
125
|
**Video Walkthrough:** A [20-Minute Video Walkthrough](https://youtu.be/kwRG7cnqSu0) is available, showcasing the previous `e2e-gen-ai-app-starter-pack`. A new walkthrough for the `agent-starter-pack` will be released soon!
|
|
123
126
|
|
|
@@ -28,6 +28,7 @@ agent-starter-pack create my-awesome-agent
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
**That's it!** You now have a fully functional agent project, complete with a backend, frontend, and deployment infrastructure, ready to explore and customize.
|
|
31
|
+
For more installation options, see the [Installation Guide](docs/installation.md).
|
|
31
32
|
|
|
32
33
|
---
|
|
33
34
|
|
|
@@ -89,10 +90,13 @@ This project represents the next evolution of the [e2e-gen-ai-app-starter-pack](
|
|
|
89
90
|
See the [documentation](docs/) for more details:
|
|
90
91
|
|
|
91
92
|
- [Why Use the Starter Pack?](docs/why_starter_pack.md)
|
|
93
|
+
- [Installation](docs/installation.md)
|
|
92
94
|
- [Deployment](docs/deployment.md)
|
|
93
95
|
- [Data Ingestion](docs/data-ingestion.md)
|
|
94
96
|
- [Observability](docs/observability.md)
|
|
95
97
|
- [CLI Reference](docs/cli/README.md)
|
|
98
|
+
- [CLI Reference](docs/cli/README.md)
|
|
99
|
+
- [Troubleshooting](docs/troubleshooting.md)
|
|
96
100
|
|
|
97
101
|
**Video Walkthrough:** A [20-Minute Video Walkthrough](https://youtu.be/kwRG7cnqSu0) is available, showcasing the previous `e2e-gen-ai-app-starter-pack`. A new walkthrough for the `agent-starter-pack` will be released soon!
|
|
98
102
|
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
There are several ways to install the Agent Starter Pack. Choose the method that works best for your workflow.
|
|
4
|
+
|
|
5
|
+
## Using pipx (Recommended)
|
|
6
|
+
|
|
7
|
+
The recommended way to install the Agent Starter Pack is with [pipx](https://pypa.github.io/pipx/), which installs the package in an isolated environment while making the commands globally available:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# Install pipx if you don't have it
|
|
11
|
+
python3 -m pip install --user pipx && python3 -m pipx ensurepath
|
|
12
|
+
source ~/.bashrc # or ~/.zshrc depending on your shell
|
|
13
|
+
|
|
14
|
+
# Install the Agent Starter Pack
|
|
15
|
+
pipx install agent-starter-pack
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Using pip with a virtual environment
|
|
19
|
+
|
|
20
|
+
You can also install the Agent Starter Pack in a virtual environment:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Create and activate a Python virtual environment
|
|
24
|
+
python -m venv venv && source venv/bin/activate
|
|
25
|
+
|
|
26
|
+
# Install the Agent Starter Pack
|
|
27
|
+
pip install agent-starter-pack
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Using uv (Fast Python package installer)
|
|
31
|
+
|
|
32
|
+
For a faster installation experience, you can use [uv](https://astral.sh/uv):
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# Install uv if you don't have it
|
|
36
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
37
|
+
|
|
38
|
+
source ~/.bashrc # or ~/.zshrc depending on your shell
|
|
39
|
+
|
|
40
|
+
# Install the Agent Starter Pack
|
|
41
|
+
uv pip install agent-starter-pack
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Getting Started
|
|
45
|
+
|
|
46
|
+
After installation, you can create a new agent project:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
# Create a new agent project
|
|
50
|
+
agent-starter-pack create my-awesome-agent
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## Upgrading
|
|
55
|
+
|
|
56
|
+
To upgrade, use the same tool you used for installation:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
pipx upgrade agent-starter-pack # Using pipx
|
|
60
|
+
pip install --upgrade agent-starter-pack # Using pip
|
|
61
|
+
uv pip install --upgrade agent-starter-pack # Using uv
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Uninstalling
|
|
65
|
+
|
|
66
|
+
To uninstall, use the same tool you used for installation:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
pipx uninstall agent-starter-pack # Using pipx
|
|
70
|
+
pip uninstall agent-starter-pack # Using pip
|
|
71
|
+
uv pip uninstall agent-starter-pack # Using uv
|
|
72
|
+
```
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Troubleshooting
|
|
2
|
+
|
|
3
|
+
This guide helps resolve common issues with the Agent Starter Pack.
|
|
4
|
+
|
|
5
|
+
## Authentication Issues
|
|
6
|
+
|
|
7
|
+
For detailed information on authentication with Vertex AI, visit the [official documentation](https://cloud.google.com/vertex-ai/docs/authentication).
|
|
8
|
+
|
|
9
|
+
### "Could not find credentials" or "Could not find project" Error
|
|
10
|
+
|
|
11
|
+
**Problem**: Missing credentials error with Vertex AI.
|
|
12
|
+
|
|
13
|
+
**Solution**:
|
|
14
|
+
|
|
15
|
+
1. Log in to Google Cloud: `gcloud auth login --update-adc`
|
|
16
|
+
2. Set the correct project:
|
|
17
|
+
```bash
|
|
18
|
+
gcloud config set project YOUR_PROJECT_ID
|
|
19
|
+
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Vertex AI API Not Enabled
|
|
23
|
+
|
|
24
|
+
**Problem**: Operations fail because the Vertex AI API is not enabled in your project.
|
|
25
|
+
|
|
26
|
+
**Solution**:
|
|
27
|
+
|
|
28
|
+
1. Enable the Vertex AI API:
|
|
29
|
+
```bash
|
|
30
|
+
gcloud services enable aiplatform.googleapis.com
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
2. Verify the API is enabled:
|
|
34
|
+
```bash
|
|
35
|
+
gcloud services list --filter=aiplatform.googleapis.com
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Permission Denied Errors
|
|
39
|
+
**Problem**: "Permission denied" errors with Google Cloud APIs.
|
|
40
|
+
|
|
41
|
+
**Solution**: Ensure your user or service account has the necessary IAM roles. For example, for Vertex AI, you often need `roles/aiplatform.user`. Grant roles using the `gcloud projects add-iam-policy-binding` command or the Cloud Console.
|
|
42
|
+
|
|
43
|
+
### Command Not Found: agent-starter-pack
|
|
44
|
+
|
|
45
|
+
**Problem**: "Command not found" error after installation.
|
|
46
|
+
|
|
47
|
+
**Solution**:
|
|
48
|
+
|
|
49
|
+
1. Verify installation:
|
|
50
|
+
```bash
|
|
51
|
+
pip list | grep agent-starter-pack
|
|
52
|
+
```
|
|
53
|
+
2. Check PATH:
|
|
54
|
+
```bash
|
|
55
|
+
echo $PATH
|
|
56
|
+
```
|
|
57
|
+
3. Reinstall if needed:
|
|
58
|
+
```bash
|
|
59
|
+
pip install --user agent-starter-pack
|
|
60
|
+
```
|
|
61
|
+
4. For pipx:
|
|
62
|
+
```bash
|
|
63
|
+
pipx ensurepath
|
|
64
|
+
source ~/.bashrc # or ~/.zshrc
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Project Creation Issues
|
|
68
|
+
|
|
69
|
+
### Project Creation Fails
|
|
70
|
+
|
|
71
|
+
**Problem**: `agent-starter-pack create` fails.
|
|
72
|
+
|
|
73
|
+
**Solution**:
|
|
74
|
+
|
|
75
|
+
1. **Check Error Messages:** Examine output for clues.
|
|
76
|
+
2. **Write Permissions:** Ensure write access to the directory.
|
|
77
|
+
3. **Project Name:** Use lowercase letters, numbers and hyphens only.
|
|
78
|
+
4. **Debug Mode:** Consider using debug mode to get more detailed error information:
|
|
79
|
+
```bash
|
|
80
|
+
agent-starter-pack create my-project-name --debug
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Template Rendering Issues
|
|
84
|
+
|
|
85
|
+
**Problem**: Project created with placeholders (e.g., `{{ project_id }}`).
|
|
86
|
+
|
|
87
|
+
**Solution**:
|
|
88
|
+
|
|
89
|
+
1. **Delete Project:** Remove the incorrect project directory.
|
|
90
|
+
2. **Debug Mode:** `agent-starter-pack create my-project --debug`.
|
|
91
|
+
3. **Check Configuration:** Verify GCP project and authentication setup.
|
|
92
|
+
4. **File an Issue:** If it persists, file a bug report with `--debug` output.
|
|
93
|
+
|
|
94
|
+
## Getting More Help
|
|
95
|
+
|
|
96
|
+
If issues persist:
|
|
97
|
+
|
|
98
|
+
1. **Check GitHub Issues:** Search for existing Github issues in the `agent-starter-pack` Github repository.
|
|
99
|
+
2. **File a New Issue:** Provide:
|
|
100
|
+
|
|
101
|
+
* Problem description.
|
|
102
|
+
* Steps to reproduce.
|
|
103
|
+
* Error messages (preferably run with `--debug` flag for detailed logs).
|
|
104
|
+
* Environment: OS, Python version, `agent-starter-pack` version, installation method, shell.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "agent-starter-pack"
|
|
3
|
-
version = "0.0.
|
|
3
|
+
version = "0.0.12b"
|
|
4
4
|
description = "CLI tool to create GCP-based AI agent projects from templates"
|
|
5
5
|
authors = [
|
|
6
6
|
{ name = "Google LLC", email = "agent-starter-pack@google.com" },
|
|
@@ -12,7 +12,6 @@ dependencies = [
|
|
|
12
12
|
"click~=8.1.7",
|
|
13
13
|
"cookiecutter~=2.5.0",
|
|
14
14
|
"google-cloud-aiplatform~=1.81.0",
|
|
15
|
-
"inquirer~=3.1.3",
|
|
16
15
|
"rich~=13.7.0",
|
|
17
16
|
"pyyaml~=6.0.1",
|
|
18
17
|
]
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
test:
|
|
2
|
-
uv run pytest tests/unit && uv run pytest tests/integration
|
|
3
|
-
|
|
4
1
|
install:
|
|
2
|
+
@command -v uv >/dev/null 2>&1 || { echo "uv is not installed. Installing uv..."; curl -LsSf https://astral.sh/uv/install.sh | sh; source ~/.bashrc; }
|
|
5
3
|
uv sync --dev {% if cookiecutter.agent_name != 'multimodal_live_api' %}--extra streamlit{%- endif %} --extra jupyter --frozen{% if cookiecutter.agent_name == 'multimodal_live_api' %} && npm --prefix frontend install{%- endif %}
|
|
6
4
|
|
|
5
|
+
test:
|
|
6
|
+
uv run pytest tests/unit && uv run pytest tests/integration
|
|
7
|
+
|
|
7
8
|
playground:
|
|
8
9
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
|
9
10
|
uv run uvicorn app.server:app --host 0.0.0.0 --port 8000 --reload &
|
|
@@ -21,6 +21,14 @@ This project is organized as follows:
|
|
|
21
21
|
└── pyproject.toml # Project dependencies and configuration
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
+
## Requirements
|
|
25
|
+
|
|
26
|
+
Before you begin, ensure you have:
|
|
27
|
+
- **uv**: Python package manager - [Install](https://docs.astral.sh/uv/getting-started/installation/)
|
|
28
|
+
- **Google Cloud SDK**: For GCP services - [Install](https://cloud.google.com/sdk/docs/install)
|
|
29
|
+
- **Terraform**: For infrastructure deployment - [Install](https://developer.hashicorp.com/terraform/downloads)
|
|
30
|
+
- **make**: Build automation tool - [Install](https://www.gnu.org/software/make/) (pre-installed on most Unix-based systems)
|
|
31
|
+
|
|
24
32
|
|
|
25
33
|
### Installation
|
|
26
34
|
|
|
@@ -30,7 +38,7 @@ Install required packages using uv:
|
|
|
30
38
|
uv sync --extra jupyter --extra streamlit --frozen
|
|
31
39
|
```
|
|
32
40
|
|
|
33
|
-
###
|
|
41
|
+
### Setupx
|
|
34
42
|
|
|
35
43
|
If not done during the initialization, set your default Google Cloud project and Location:
|
|
36
44
|
|
|
@@ -46,15 +54,17 @@ gcloud auth application-default set-quota-project $PROJECT_ID
|
|
|
46
54
|
|
|
47
55
|
| Command | Description |
|
|
48
56
|
| -------------------- | ------------------------------------------------------------------------------------------- |
|
|
57
|
+
| `make install` | Install all required dependencies using uv |
|
|
49
58
|
{%- if cookiecutter.deployment_target == 'cloud_run' %}
|
|
50
59
|
| `make playground` | Launch local development environment with backend and frontend |
|
|
51
60
|
| `make backend` | Start backend server only |
|
|
52
|
-
| `make ui`
|
|
61
|
+
| `make ui` | Launch Streamlit frontend without local backend |
|
|
53
62
|
{%- elif cookiecutter.deployment_target == 'agent_engine' %}
|
|
54
63
|
| `make playground` | Launch Streamlit interface for testing agent locally and remotely |
|
|
55
64
|
| `make backend` | Deploy agent to Agent Engine service |
|
|
56
65
|
{%- endif %}
|
|
57
66
|
| `make test` | Run unit and integration tests |
|
|
67
|
+
| `make lint` | Run code quality checks (codespell, ruff, mypy) |
|
|
58
68
|
| `uv run jupyter lab` | Launch Jupyter notebook |
|
|
59
69
|
|
|
60
70
|
For full command options and usage, refer to the [Makefile](Makefile).
|
|
@@ -165,8 +165,6 @@ def create(
|
|
|
165
165
|
|
|
166
166
|
# Check for uv installation if not skipping checks
|
|
167
167
|
if not skip_checks:
|
|
168
|
-
check_and_install_uv()
|
|
169
|
-
|
|
170
168
|
# Set up GCP environment
|
|
171
169
|
try:
|
|
172
170
|
setup_gcp_environment(
|
|
@@ -178,6 +176,17 @@ def create(
|
|
|
178
176
|
except Exception as e:
|
|
179
177
|
if debug:
|
|
180
178
|
logging.warning(f"GCP environment setup failed: {e}")
|
|
179
|
+
console.print(
|
|
180
|
+
f"> Warning: GCP environment setup failed: {e}", style="yellow"
|
|
181
|
+
)
|
|
182
|
+
console.print(
|
|
183
|
+
"> Please check your authentication settings and permissions. "
|
|
184
|
+
"Visit https://cloud.google.com/vertex-ai/docs/authentication for help.",
|
|
185
|
+
style="yellow",
|
|
186
|
+
)
|
|
187
|
+
console.print(
|
|
188
|
+
"> Continuing with template processing...", style="yellow"
|
|
189
|
+
)
|
|
181
190
|
|
|
182
191
|
# Process template
|
|
183
192
|
template_path = get_template_path(final_agent, debug=debug)
|
|
@@ -527,67 +536,3 @@ def replace_region_in_files(
|
|
|
527
536
|
except UnicodeDecodeError:
|
|
528
537
|
# Skip files that can't be read as text
|
|
529
538
|
continue
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
def check_and_install_uv() -> None:
|
|
533
|
-
"""Check if uv is installed and install it if not present."""
|
|
534
|
-
try:
|
|
535
|
-
# Use shell=True for Windows compatibility and add timeout
|
|
536
|
-
process = subprocess.run(
|
|
537
|
-
"uv --version",
|
|
538
|
-
shell=True,
|
|
539
|
-
capture_output=True,
|
|
540
|
-
text=True,
|
|
541
|
-
timeout=10
|
|
542
|
-
)
|
|
543
|
-
if process.returncode == 0:
|
|
544
|
-
logging.debug("uv is already installed")
|
|
545
|
-
return
|
|
546
|
-
else:
|
|
547
|
-
console.print("> uv command failed", style="yellow")
|
|
548
|
-
except subprocess.TimeoutExpired:
|
|
549
|
-
console.print("> uv version check timed out", style="yellow")
|
|
550
|
-
except (subprocess.CalledProcessError, FileNotFoundError):
|
|
551
|
-
console.print("> uv is not installed", style="yellow")
|
|
552
|
-
|
|
553
|
-
console.print(
|
|
554
|
-
"\n> uv is required for the template to work. You can install it in several ways:"
|
|
555
|
-
"\n 1. Automatically install uv now"
|
|
556
|
-
"\n 2. Manual installation from: https://docs.astral.sh/uv/getting-started/installation"
|
|
557
|
-
"\n This includes other options e.g PyPI (pip/pipx), Homebrew, Docker.."
|
|
558
|
-
)
|
|
559
|
-
|
|
560
|
-
install_choice = Prompt.ask(
|
|
561
|
-
"\n> Would you like to install uv automatically now?",
|
|
562
|
-
choices=["y", "n"],
|
|
563
|
-
default="y",
|
|
564
|
-
)
|
|
565
|
-
if install_choice.lower() == "y":
|
|
566
|
-
console.print("> Installing uv...", style="yellow")
|
|
567
|
-
try:
|
|
568
|
-
install_command = "curl -LsSf https://astral.sh/uv/install.sh | sh"
|
|
569
|
-
# Add timeout to installation process as well
|
|
570
|
-
subprocess.run(
|
|
571
|
-
install_command,
|
|
572
|
-
shell=True,
|
|
573
|
-
check=True,
|
|
574
|
-
timeout=60 # Give installation more time
|
|
575
|
-
)
|
|
576
|
-
console.print("> uv installed successfully!", style="green")
|
|
577
|
-
except subprocess.TimeoutExpired:
|
|
578
|
-
console.print("> uv installation timed out", style="bold red")
|
|
579
|
-
raise
|
|
580
|
-
except subprocess.CalledProcessError as e:
|
|
581
|
-
console.print("> Failed to install uv", style="bold red")
|
|
582
|
-
logging.debug(f"uv installation error: {e!s}")
|
|
583
|
-
console.print(
|
|
584
|
-
"> Please install uv manually using one of the methods listed above",
|
|
585
|
-
style="yellow",
|
|
586
|
-
)
|
|
587
|
-
raise
|
|
588
|
-
else:
|
|
589
|
-
console.print(
|
|
590
|
-
"> Please install uv manually using one of the methods listed above and try again",
|
|
591
|
-
style="yellow",
|
|
592
|
-
)
|
|
593
|
-
raise click.Abort() from None
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Copyright 2025 Google LLC
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import importlib.metadata
|
|
16
|
+
|
|
17
|
+
import click
|
|
18
|
+
from rich.console import Console
|
|
19
|
+
|
|
20
|
+
from .commands.create import create
|
|
21
|
+
from .commands.setup_cicd import setup_cicd
|
|
22
|
+
|
|
23
|
+
console = Console()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def print_version(ctx: click.Context, param: click.Parameter, value: bool) -> None:
|
|
27
|
+
if not value or ctx.resilient_parsing:
|
|
28
|
+
return
|
|
29
|
+
try:
|
|
30
|
+
version_str = importlib.metadata.version("agent-starter-pack")
|
|
31
|
+
console.print(f"GCP Agent Starter Pack CLI version: {version_str}")
|
|
32
|
+
except importlib.metadata.PackageNotFoundError:
|
|
33
|
+
console.print("GCP Agent Starter Pack CLI (development version)")
|
|
34
|
+
ctx.exit()
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@click.group(help="Production-ready Generative AI Agent templates for Google Cloud")
|
|
38
|
+
@click.option(
|
|
39
|
+
"--version",
|
|
40
|
+
"-v",
|
|
41
|
+
is_flag=True,
|
|
42
|
+
callback=print_version,
|
|
43
|
+
expose_value=False,
|
|
44
|
+
is_eager=True,
|
|
45
|
+
help="Show the version and exit.",
|
|
46
|
+
)
|
|
47
|
+
def cli() -> None:
|
|
48
|
+
pass
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# Register commands
|
|
52
|
+
cli.add_command(create)
|
|
53
|
+
cli.add_command(setup_cicd)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
cli()
|
|
@@ -257,6 +257,17 @@ def create_github_connection(
|
|
|
257
257
|
elif status == "PENDING_USER_OAUTH" or status == "PENDING_INSTALL_APP":
|
|
258
258
|
if attempt < max_retries - 1: # Don't print waiting on last attempt
|
|
259
259
|
console.print("⏳ Waiting for GitHub authorization...")
|
|
260
|
+
# Extract and print the action URI for user authentication
|
|
261
|
+
try:
|
|
262
|
+
action_uri = json.loads(result.stdout).get("installationState", {}).get("actionUri")
|
|
263
|
+
if action_uri:
|
|
264
|
+
console.print("\n🔑 Authentication Required:", style="bold yellow")
|
|
265
|
+
console.print(f"Please visit [link={action_uri}]this page[/link] to authenticate Cloud Build with GitHub:")
|
|
266
|
+
console.print(f"{action_uri}", style="bold blue")
|
|
267
|
+
console.print("(Copy and paste the link into your browser if clicking doesn't work)")
|
|
268
|
+
console.print("After completing authentication, return here to continue the setup.\n")
|
|
269
|
+
except (json.JSONDecodeError, KeyError) as e:
|
|
270
|
+
console.print(f"⚠️ Could not extract authentication link: {e}", style="yellow")
|
|
260
271
|
time.sleep(10)
|
|
261
272
|
continue
|
|
262
273
|
else:
|
{agent_starter_pack-0.0.10b0 → agent_starter_pack-0.0.12b0}/tests/cli/commands/test_create.py
RENAMED
|
@@ -95,13 +95,6 @@ def mock_verify_vertex_connection() -> Generator[MagicMock, None, None]:
|
|
|
95
95
|
yield mock
|
|
96
96
|
|
|
97
97
|
|
|
98
|
-
@pytest.fixture
|
|
99
|
-
def mock_check_and_install_uv() -> Generator[MagicMock, None, None]:
|
|
100
|
-
"""Mock the UV installation check"""
|
|
101
|
-
with patch("src.cli.commands.create.check_and_install_uv") as mock:
|
|
102
|
-
yield mock
|
|
103
|
-
|
|
104
|
-
|
|
105
98
|
@pytest.fixture
|
|
106
99
|
def mock_subprocess() -> Generator[MagicMock, None, None]:
|
|
107
100
|
with patch("src.cli.commands.create.subprocess.run") as mock:
|
|
@@ -191,7 +184,6 @@ class TestCreateCommand:
|
|
|
191
184
|
mock_mkdir: MagicMock,
|
|
192
185
|
mock_resolve: MagicMock,
|
|
193
186
|
mock_verify_vertex_connection: MagicMock,
|
|
194
|
-
mock_check_and_install_uv: MagicMock,
|
|
195
187
|
) -> None:
|
|
196
188
|
"""Test create command with all options provided"""
|
|
197
189
|
runner = CliRunner()
|
|
@@ -259,7 +251,6 @@ class TestCreateCommand:
|
|
|
259
251
|
mock_mkdir: MagicMock,
|
|
260
252
|
mock_resolve: MagicMock,
|
|
261
253
|
mock_verify_vertex_connection: MagicMock,
|
|
262
|
-
mock_check_and_install_uv: MagicMock,
|
|
263
254
|
) -> None:
|
|
264
255
|
"""Test create command with auto-approve flag"""
|
|
265
256
|
runner = CliRunner()
|
|
@@ -317,7 +308,6 @@ class TestCreateCommand:
|
|
|
317
308
|
mock_mkdir: MagicMock,
|
|
318
309
|
mock_resolve: MagicMock,
|
|
319
310
|
mock_verify_vertex_connection: MagicMock,
|
|
320
|
-
mock_check_and_install_uv: MagicMock,
|
|
321
311
|
) -> None:
|
|
322
312
|
"""Test create command in interactive mode"""
|
|
323
313
|
runner = CliRunner()
|
|
@@ -367,7 +357,6 @@ class TestCreateCommand:
|
|
|
367
357
|
mock_mkdir: MagicMock,
|
|
368
358
|
mock_resolve: MagicMock,
|
|
369
359
|
mock_verify_vertex_connection: MagicMock,
|
|
370
|
-
mock_check_and_install_uv: MagicMock,
|
|
371
360
|
) -> None:
|
|
372
361
|
"""Test create command with GCP credential change"""
|
|
373
362
|
runner = CliRunner()
|
|
@@ -382,7 +371,9 @@ class TestCreateCommand:
|
|
|
382
371
|
mock_subprocess.side_effect = [
|
|
383
372
|
MagicMock(returncode=0), # gcloud auth login
|
|
384
373
|
MagicMock(returncode=0), # gcloud config set project
|
|
385
|
-
MagicMock(
|
|
374
|
+
MagicMock(
|
|
375
|
+
returncode=0
|
|
376
|
+
), # gcloud auth application-default set-quota-project
|
|
386
377
|
]
|
|
387
378
|
|
|
388
379
|
with (
|
|
@@ -412,8 +403,7 @@ class TestCreateCommand:
|
|
|
412
403
|
|
|
413
404
|
# Verify subprocess was called with the right arguments for login
|
|
414
405
|
mock_subprocess.assert_any_call(
|
|
415
|
-
["gcloud", "auth", "login", "--update-adc"],
|
|
416
|
-
check=True
|
|
406
|
+
["gcloud", "auth", "login", "--update-adc"], check=True
|
|
417
407
|
)
|
|
418
408
|
|
|
419
409
|
def test_create_with_invalid_agent_name(
|
|
@@ -11,13 +11,12 @@ resolution-markers = [
|
|
|
11
11
|
|
|
12
12
|
[[package]]
|
|
13
13
|
name = "agent-starter-pack"
|
|
14
|
-
version = "0.0.
|
|
14
|
+
version = "0.0.11b0"
|
|
15
15
|
source = { editable = "." }
|
|
16
16
|
dependencies = [
|
|
17
17
|
{ name = "click" },
|
|
18
18
|
{ name = "cookiecutter" },
|
|
19
19
|
{ name = "google-cloud-aiplatform" },
|
|
20
|
-
{ name = "inquirer" },
|
|
21
20
|
{ name = "pyyaml" },
|
|
22
21
|
{ name = "rich" },
|
|
23
22
|
]
|
|
@@ -69,7 +68,6 @@ requires-dist = [
|
|
|
69
68
|
{ name = "codespell", marker = "extra == 'lint'", specifier = "~=2.2.0" },
|
|
70
69
|
{ name = "cookiecutter", specifier = "~=2.5.0" },
|
|
71
70
|
{ name = "google-cloud-aiplatform", specifier = "~=1.81.0" },
|
|
72
|
-
{ name = "inquirer", specifier = "~=3.1.3" },
|
|
73
71
|
{ name = "ipykernel", marker = "extra == 'jupyter'", specifier = ">=6.29.5" },
|
|
74
72
|
{ name = "jupyter", marker = "extra == 'jupyter'" },
|
|
75
73
|
{ name = "mypy", marker = "extra == 'lint'", specifier = "~=1.15.0" },
|
|
@@ -246,15 +244,6 @@ wheels = [
|
|
|
246
244
|
{ url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 },
|
|
247
245
|
]
|
|
248
246
|
|
|
249
|
-
[[package]]
|
|
250
|
-
name = "ansicon"
|
|
251
|
-
version = "1.89.0"
|
|
252
|
-
source = { registry = "https://pypi.org/simple" }
|
|
253
|
-
sdist = { url = "https://files.pythonhosted.org/packages/b6/e2/1c866404ddbd280efedff4a9f15abfe943cb83cde6e895022370f3a61f85/ansicon-1.89.0.tar.gz", hash = "sha256:e4d039def5768a47e4afec8e89e83ec3ae5a26bf00ad851f914d1240b444d2b1", size = 67312 }
|
|
254
|
-
wheels = [
|
|
255
|
-
{ url = "https://files.pythonhosted.org/packages/75/f9/f1c10e223c7b56a38109a3f2eb4e7fe9a757ea3ed3a166754fb30f65e466/ansicon-1.89.0-py2.py3-none-any.whl", hash = "sha256:f1def52d17f65c2c9682cf8370c03f541f410c1752d6a14029f97318e4b9dfec", size = 63675 },
|
|
256
|
-
]
|
|
257
|
-
|
|
258
247
|
[[package]]
|
|
259
248
|
name = "anyascii"
|
|
260
249
|
version = "0.3.2"
|
|
@@ -540,20 +529,6 @@ css = [
|
|
|
540
529
|
{ name = "tinycss2" },
|
|
541
530
|
]
|
|
542
531
|
|
|
543
|
-
[[package]]
|
|
544
|
-
name = "blessed"
|
|
545
|
-
version = "1.20.0"
|
|
546
|
-
source = { registry = "https://pypi.org/simple" }
|
|
547
|
-
dependencies = [
|
|
548
|
-
{ name = "jinxed", marker = "sys_platform == 'win32'" },
|
|
549
|
-
{ name = "six" },
|
|
550
|
-
{ name = "wcwidth" },
|
|
551
|
-
]
|
|
552
|
-
sdist = { url = "https://files.pythonhosted.org/packages/25/ae/92e9968ad23205389ec6bd82e2d4fca3817f1cdef34e10aa8d529ef8b1d7/blessed-1.20.0.tar.gz", hash = "sha256:2cdd67f8746e048f00df47a2880f4d6acbcdb399031b604e34ba8f71d5787680", size = 6655612 }
|
|
553
|
-
wheels = [
|
|
554
|
-
{ url = "https://files.pythonhosted.org/packages/76/98/584f211c3a4bb38f2871fa937ee0cc83c130de50c955d6c7e2334dbf4acb/blessed-1.20.0-py2.py3-none-any.whl", hash = "sha256:0c542922586a265e699188e52d5f5ac5ec0dd517e5a1041d90d2bbf23f906058", size = 58372 },
|
|
555
|
-
]
|
|
556
|
-
|
|
557
532
|
[[package]]
|
|
558
533
|
name = "blinker"
|
|
559
534
|
version = "1.9.0"
|
|
@@ -1873,20 +1848,6 @@ wheels = [
|
|
|
1873
1848
|
{ url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892 },
|
|
1874
1849
|
]
|
|
1875
1850
|
|
|
1876
|
-
[[package]]
|
|
1877
|
-
name = "inquirer"
|
|
1878
|
-
version = "3.1.4"
|
|
1879
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1880
|
-
dependencies = [
|
|
1881
|
-
{ name = "blessed" },
|
|
1882
|
-
{ name = "python-editor" },
|
|
1883
|
-
{ name = "readchar" },
|
|
1884
|
-
]
|
|
1885
|
-
sdist = { url = "https://files.pythonhosted.org/packages/78/2f/6c4fd73b82228620025d0042de6dcdc8f32d87557c42ca470d965848d9b5/inquirer-3.1.4.tar.gz", hash = "sha256:958dbd5978f173630756a6ed6243acf931e750416eb7a6ed3a0ff13af0fdfcb5", size = 14626 }
|
|
1886
|
-
wheels = [
|
|
1887
|
-
{ url = "https://files.pythonhosted.org/packages/3c/b7/2b4a352659d78386e0f7f5405486aa1c41664666d33e9e8506640f702f70/inquirer-3.1.4-py3-none-any.whl", hash = "sha256:8ca28834b6c6f69e0bf19cab2e2bea2c465312bb74bd6317b88a46458163a051", size = 18215 },
|
|
1888
|
-
]
|
|
1889
|
-
|
|
1890
1851
|
[[package]]
|
|
1891
1852
|
name = "instructor"
|
|
1892
1853
|
version = "1.7.2"
|
|
@@ -2016,18 +1977,6 @@ wheels = [
|
|
|
2016
1977
|
{ url = "https://files.pythonhosted.org/packages/bd/0f/2ba5fbcd631e3e88689309dbe978c5769e883e4b84ebfe7da30b43275c5a/jinja2-3.1.5-py3-none-any.whl", hash = "sha256:aba0f4dc9ed8013c424088f68a5c226f7d6097ed89b246d7749c2ec4175c6adb", size = 134596 },
|
|
2017
1978
|
]
|
|
2018
1979
|
|
|
2019
|
-
[[package]]
|
|
2020
|
-
name = "jinxed"
|
|
2021
|
-
version = "1.3.0"
|
|
2022
|
-
source = { registry = "https://pypi.org/simple" }
|
|
2023
|
-
dependencies = [
|
|
2024
|
-
{ name = "ansicon", marker = "sys_platform == 'win32'" },
|
|
2025
|
-
]
|
|
2026
|
-
sdist = { url = "https://files.pythonhosted.org/packages/20/d0/59b2b80e7a52d255f9e0ad040d2e826342d05580c4b1d7d7747cfb8db731/jinxed-1.3.0.tar.gz", hash = "sha256:1593124b18a41b7a3da3b078471442e51dbad3d77b4d4f2b0c26ab6f7d660dbf", size = 80981 }
|
|
2027
|
-
wheels = [
|
|
2028
|
-
{ url = "https://files.pythonhosted.org/packages/27/e3/0e0014d6ab159d48189e92044ace13b1e1fe9aa3024ba9f4e8cf172aa7c2/jinxed-1.3.0-py2.py3-none-any.whl", hash = "sha256:b993189f39dc2d7504d802152671535b06d380b26d78070559551cbf92df4fc5", size = 33085 },
|
|
2029
|
-
]
|
|
2030
|
-
|
|
2031
1980
|
[[package]]
|
|
2032
1981
|
name = "jiter"
|
|
2033
1982
|
version = "0.8.2"
|
|
@@ -4285,15 +4234,6 @@ wheels = [
|
|
|
4285
4234
|
{ url = "https://files.pythonhosted.org/packages/6a/3e/b68c118422ec867fa7ab88444e1274aa40681c606d59ac27de5a5588f082/python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a", size = 19863 },
|
|
4286
4235
|
]
|
|
4287
4236
|
|
|
4288
|
-
[[package]]
|
|
4289
|
-
name = "python-editor"
|
|
4290
|
-
version = "1.0.4"
|
|
4291
|
-
source = { registry = "https://pypi.org/simple" }
|
|
4292
|
-
sdist = { url = "https://files.pythonhosted.org/packages/0a/85/78f4a216d28343a67b7397c99825cff336330893f00601443f7c7b2f2234/python-editor-1.0.4.tar.gz", hash = "sha256:51fda6bcc5ddbbb7063b2af7509e43bd84bfc32a4ff71349ec7847713882327b", size = 7132 }
|
|
4293
|
-
wheels = [
|
|
4294
|
-
{ url = "https://files.pythonhosted.org/packages/c6/d3/201fc3abe391bbae6606e6f1d598c15d367033332bd54352b12f35513717/python_editor-1.0.4-py3-none-any.whl", hash = "sha256:1bf6e860a8ad52a14c3ee1252d5dc25b2030618ed80c022598f00176adc8367d", size = 4877 },
|
|
4295
|
-
]
|
|
4296
|
-
|
|
4297
4237
|
[[package]]
|
|
4298
4238
|
name = "python-json-logger"
|
|
4299
4239
|
version = "3.2.1"
|
|
@@ -4487,15 +4427,6 @@ wheels = [
|
|
|
4487
4427
|
{ url = "https://files.pythonhosted.org/packages/e3/fe/72e7e166bda3885810bee7b23049133e142f7c80c295bae02c562caeea16/pyzmq-26.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:bd8fdee945b877aa3bffc6a5a8816deb048dab0544f9df3731ecd0e54d8c84c9", size = 556563 },
|
|
4488
4428
|
]
|
|
4489
4429
|
|
|
4490
|
-
[[package]]
|
|
4491
|
-
name = "readchar"
|
|
4492
|
-
version = "4.2.1"
|
|
4493
|
-
source = { registry = "https://pypi.org/simple" }
|
|
4494
|
-
sdist = { url = "https://files.pythonhosted.org/packages/dd/f8/8657b8cbb4ebeabfbdf991ac40eca8a1d1bd012011bd44ad1ed10f5cb494/readchar-4.2.1.tar.gz", hash = "sha256:91ce3faf07688de14d800592951e5575e9c7a3213738ed01d394dcc949b79adb", size = 9685 }
|
|
4495
|
-
wheels = [
|
|
4496
|
-
{ url = "https://files.pythonhosted.org/packages/a9/10/e4b1e0e5b6b6745c8098c275b69bc9d73e9542d5c7da4f137542b499ed44/readchar-4.2.1-py3-none-any.whl", hash = "sha256:a769305cd3994bb5fa2764aa4073452dc105a4ec39068ffe6efd3c20c60acc77", size = 9350 },
|
|
4497
|
-
]
|
|
4498
|
-
|
|
4499
4430
|
[[package]]
|
|
4500
4431
|
name = "referencing"
|
|
4501
4432
|
version = "0.36.2"
|