| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
There was a problem hiding this comment.
should gitignore
Sorry, something went wrong.
There was a problem hiding this comment.
Reverted, will add to gitignore separately
Sorry, something went wrong.
There was a problem hiding this comment.
this looks good to me, echoing Declan that we should not be committing the .claude/scheduled_tasks.lock here.
a little confused re: the Stainless dashboard required, does the stainless config keep_files support glob strings? the docs i'm reading only ever refer to it as "an array of file paths" and only example they use is an actual file path. curious if there's a reason we're using that instead of the custom code functionality they recommend using instead or if the latter is just not feasible. since this doesn't require a code change i don't think it makes sense to block on it but would be great to figure this out if it's on the agentex team to make these changes
Sorry, something went wrong.
Promotes the deployment/agent configuration model classes out of the heavy ADK (agentex.lib.sdk.config) into a new slim-shipped, hand-authored namespace agentex.config.*, so REST-only consumers can import them from the slim agentex-client wheel without installing the ADK runtime. Deployment-models analog of #371 (which did this for protocol types). - New agentex.config.{agent_config,build_config,deployment_config, local_development_config,environment_config,agent_manifest} plus model deps {credentials,agent_configs}. ConfigBaseModel inlines the ConfigDict the former model_utils.BaseModel provided (from_attributes/populate_by_name), folding in DeploymentConfig/InjectedSecretsValues' nested validate_by_name. - environment_config: model classes promoted; from_yaml/yaml loading stays in lib as the load_environments_config free function (keeps models slim-safe). - agent_manifest: AgentManifest model promoted (egp-api-backend validates manifest dicts with it); from_yaml -> load_agent_manifest, context_manager -> build_context_manager, plus BuildContextManager stay in lib. - Back-compat shims left at the old agentex.lib.sdk.config.* and agentex.lib.types.{credentials,agent_configs} paths. - Internal lib consumers + tests repointed to the canonical paths. - Modernize the promoted agent_configs/local_development_config validators to @field_validator so the new public surface emits no pydantic-v1 deprecation. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…lm_values The manifest+environments.yaml -> helm-values mapping in agentex.lib.cli.handlers.deploy_handlers depends only on the stdlib and the agentex.config models, but living in the heavy ADK forced server-side deployers (egp-api-backend) to fork it — and the forks have drifted. Promote the pure mapping to agentex.config.helm_values (slim-safe, same contract as the #396 config-models promotion) and parameterize the consumer differences: repository/image_tag as explicit args, acp_module for pre-resolved ACP modules (filesystem resolution stays in agentex.lib.cli.utils.path_utils). The CLI wrapper keeps its signature, DeploymentError contract, conditional module resolution, and all current policy defaults — behavior-preserving except two before/after-merge debug log lines that no longer fire. Part of AGX1-357. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…lm_values The manifest+environments.yaml -> helm-values mapping in agentex.lib.cli.handlers.deploy_handlers depends only on the stdlib and the agentex.config models, but living in the heavy ADK forced server-side deployers (egp-api-backend) to fork it — and the forks have drifted. Promote the pure mapping to agentex.config.helm_values (slim-safe, same contract as the #396 config-models promotion) and parameterize the consumer differences: repository/image_tag as explicit args, acp_module for pre-resolved ACP modules (filesystem resolution stays in agentex.lib.cli.utils.path_utils). The CLI wrapper keeps its signature, DeploymentError contract, conditional module resolution, and all current policy defaults — behavior-preserving except two before/after-merge debug log lines that no longer fire. Part of AGX1-357. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
| Back | FazBrowse Home | New Git URL |
Summary
Promotes the deployment/agent configuration model classes out of the heavy ADK (agentex.lib.sdk.config) into a new canonical, hand-authored namespace agentex.config.* that ships in the slim agentex-client wheel. REST-only consumers can now import these models without installing the ADK runtime (temporalio / fastapi / litellm / …). Back-compat shims at the old paths keep existing imports working.
Deployment-models analog of #371 (which did this for protocol types). Tracking: AGX1-292.
Downstream: egp-api-backend (SGP-5970) currently hand-copies these models in agentex_sdk_deployment_models.py because importing them required the full ADK. This promotion lets it drop the copy.
What moved
Promoted to agentex.config.* (pure pydantic models):
ConfigBaseModel (agentex/config/_base.py) inlines the ConfigDict(from_attributes=True, populate_by_name=True) the former model_utils.BaseModel provided — the behavior-preserving swap #371 established. DeploymentConfig / InjectedSecretsValues' nested class Config: validate_by_name = True is folded into it (redundant with populate_by_name; keeping both model_config and a nested Config on one class raises in pydantic v2).
The promoted agent_configs.py / local_development_config.py validators are also modernized from the deprecated pydantic-v1 @validator to @field_validator, so the new public surface emits no PydanticDeprecatedSince20 warnings for importers.
environment_config split
The module mixed pure models with a yaml-loading from_yaml. The model classes (incl. AgentEnvironmentsConfig with its accessors/validators) are promoted; the from_yaml/yaml loading stays in lib as the load_environments_config free function (+ load_environments_config_from_manifest_dir) so the promoted models stay slim-safe.
Back-compat delta: the promoted AgentEnvironmentsConfig no longer carries a .from_yaml() classmethod. The two in-repo callers (validation.py + the manifest-dir helper) and the loader tests are repointed to load_environments_config; an external caller via the lib path would switch to the free function.
agent_manifest split (same pattern)
egp-api-backend needs the AgentManifest model (it validates manifest dicts; it does its own yaml parsing and never touches an agentex loader). So the model is promoted to agentex.config.agent_manifest, while the yaml loader and Docker build-context machinery stay in lib:
Back-compat delta: like AgentEnvironmentsConfig, the promoted AgentManifest drops from_yaml/context_manager/load_environments_config methods (all CLI-internal; no examples/tutorials use them). The AgentManifest type is still re-exported from the lib path.
Left in lib (CLI/build machinery)
agent_manifest.py (loader + BuildContextManager), validation.py, project_config.py — they use yaml / jinja2 / subprocess / tar and are CLI-only.
Shims
Back-compat re-export shims at the old agentex.lib.sdk.config.{agent_config,build_config,deployment_config,local_development_config,environment_config} and agentex.lib.types.{credentials,agent_configs} paths. In-repo lib consumers are repointed to the canonical agentex.config.* paths, so the shims are purely external-facing.
⚠️ Stainless dashboard action required
agentex.config is hand-authored and must be protected from codegen regen the same way agentex.protocol / adk/** are. That protection lives in the Stainless dashboard keep_files, not this repo (confirmed: no .stainless config exists locally; the pyproject.toml comments document keep_files: ["adk/**"] as dashboard config, and #371 added agentex.protocol with no repo-side codegen change).
Action: add src/agentex/config/** to the dashboard keep_files. Until that lands, codegen can clobber the new directory. This intersects the open codegen-conflict PR stainless-sdks/agentex-sdk-python#44 — flagging rather than silently resolving.
Verification (local)
Test plan
🧑💻🤖 — posted via Claude Code
Greptile Summary
This PR promotes deployment/agent configuration Pydantic model classes from the heavy ADK namespace (agentex.lib.sdk.config.*, agentex.lib.types.*) into a new slim-safe agentex.config.* package so REST-only consumers can import them without pulling in the full ADK runtime. Back-compat shims at all original module paths preserve class identity for existing imports.
Confidence Score: 5/5
Safe to merge — the refactor is well-contained, all internal callers are repointed, and shim tests verify class-object identity and config preservation across both import paths.
The structural split is clean: pure pydantic models land in the slim wheel, yaml-loading and Docker build machinery stay in lib, and every public class is re-exported from its original path with the same object identity. The new shim tests directly assert the contracts that could break. The only observations are a missing ticket number on an existing TODO and a minor question about whether the Temporal leaf-type classes intentionally drop from_attributes=True — neither affects runtime correctness for current callers.
src/agentex/config/agent_configs.py — uses plain pydantic.BaseModel instead of ConfigBaseModel for the Temporal config types; worth a quick confirmation that this is intentional.
Important Files Changed

Prompt To Fix All With AIReviews (3): Last reviewed commit: "refactor(config): promote deployment-con..." | Re-trigger Greptile