Refine the Model section in docs/concepts.md to directly describe it as a
declarative configuration resource for model providers, parameters, and
credentials rather than using colloquial phrasing.
Fixes#356
* Replace UpdateTask with CreateTask and enforce immutability
Replaced UpdateTask RPC with CreateTask. Tasks are now
immutable once created; modifying an existing task returns a
FailedPrecondition error.
- Renamed UpdateTask/UpdateTaskRequest to CreateTask/CreateTaskRequest.
- Checked existence in Server.CreateTask to prevent mutation.
- Updated CLI apply logic, tests, and documentation.
* refactor: remove TaskSpec.Suspend and default new tasks to suspended state
* chore: update default snapshots bucket to snapshot-substrate-test-ax-substrate
Reduce the sleep interval in the wait_for polling loop from 2s to
0.2s. This allows the demo script to detect task phase and condition
transitions (readiness, suspension) much faster without waiting out
unnecessary 2-second sleep delays.
Remove the Gateway resource across the API, controller, server, CLI,
store, and documentation.
Gateway introduced an unnecessary layer and architectural bifurcation
between Agent Substrate and AX. By removing it, AX aligns directly with
Substrate's native primitives and networking rather than maintaining an
overlapping ingress/routing abstraction.
- Reserved protobuf field 8 and removed Gateway RPCs and messages.
- Cleaned up controller reconciler, server endpoints, and store models.
- Updated CLI, documentation, and example manifests.
We want AX to be compatible with the Interactions API protocol as much as possible. This PR aligns the proto with Steps and with the Interactions semantics. We will follow up with more changes to make it more compatible with Interactions while preserving a `conversation_id` based history model.
`ConversationService` is removed for now until we know what kind of data operations we want to provide for event log management.
* Update install script to use GOOGLE_CLOUD_PROJECT instead of PROJECT_ID
Fixes#290.
* Use GOOGLE_CLOUD_PROJECT variable and remove PROJECT_ID usage
Fixes#290.
* Consolidate .ax directory path resolution into a centralized config helper
* refactor: remove unused TargetDir field from SetupOptions in python sidecar tests
* test: update setup test to use HOME directory and verify .ax subdirectory extraction
* refactor: simplify directory path resolution and variable naming in python sidecar setup
* perf: skip redundant file copying and pip installations when dependencies are up to date
* fix: remove redundant check for non-existent requirements file in setup
* refactor: track file updates during extraction to skip unnecessary pip installs
* feat: add progress notification when installing Antigravity SDK
* fix: ensure site-packages directory exists before returning path in setup
* feat: add pypi simple index to pip install command for environment compatibility
* Embed python artifacts into ax
And setup the AGY harness service at runtime.
* refactor: remove directory and file filtering logic from setup walk function
* refactor: rename installRequirements to install in python sidecar setup
* refactor: simplify Sidecar configuration by passing PYTHONPATH directly to Start method and removing unnecessary environment and binary options
* feat: configure pip install to use local site-packages and filter unwanted files during setup
* feat: support appending to PYTHONPATH and update Python setup path resolution
* refactor: remove redundant file filtering in sidecar setup directory traversal
* refactor: simplify python package installation and add PyPI index URL to pip command
* fix: remove extra index URL from pip install command
* refactor: remove Sidecar.Setup method and move asset extraction logic to external standalone function
* refactor: remove PythonPath configuration field from sidecar.Config in favor of direct global pythonPath usage
* test: remove integration test for antigravity sidecar auto-start logic
* fix: add pypi.org extra-index-url to python package installation command
* refactor: remove Stdin support from pythonsidecar configuration and cleanup redundant harness definitions
The AGY harness streams each contiguous block of assistant text as a separate TextContent message, with tool calls in between. The CLI display (cmd/ax/internal/display.go) tracks a state field to decide when to insert separating newlines but the Content_ToolCall case was a pure no-op that left state == stateText.
Fixes#233.
Refactor telemetry configuration and resolve deprecated GCP metadata calls:
- Replace deprecated `metadata.ProjectID()` and `metadata.OnGCE()` with context-aware versions.
- Update `telemetry.SetTraceProvider` to accept variadic `otlptracegrpc.Option`s and remove the hardcoded endpoint parameter.
- Add `telemetry.WithGCPCredentials()` helper to encapsulate GCP-specific credentials.
- Isolate GCP-specific server telemetry configuration into a new `serve_gcp.go` file.
Fix premature gRPC stream cancellation in the harness execution clients:
- Update the client receive loop to drain the stream until `io.EOF` after receiving the `HarnessEnd` frame, preventing `CANCELLED` errors in telemetry.
- Encapsulate the stream draining and message dispatching logic into a shared `drainStream` helper in a new `stream.go` file.
- Clean up unused `io` imports in `antigravity.go` and `substrate.go`.
Follow-up:
- End-to-end trace context propagation to HarnessService deployments
- End-to-end trace context propagation to Substrate calls
* Update README based on the new controller implementation
* Update the diagram with more details
* Update README
* Remove unncessary new line
* Add changes to the roadmap
* Update the extensions section
* Add note about Agent Substrate
* Add forking to the roadmap
* Fix wording
* Update tenancy model
* Update wording
* Update formatting
* Add a History section
* Update wording
* Fix wording
* Update wording
* Update wording
* update wording
* Fix typo
The AX Dashboard uses live polling (every 3 seconds) to fetch updated trace data for the active conversation. Each time new trace data is retrieved, the dashboard completely regenerates the HTML for the execution trace cards using innerHTML. Because the cards were hardcoded to render with the collapsed and hidden classes by default, any cards the user had expanded would collapse every time the poll triggered. Since users are usually scrolling while reading the expanded trace details, this gave the impression that the history was collapsing during scrolling.
Fixes#202.
* Remove dead code from the earlier controller
Remove the agent package, AgentService related proto messages, and Gemini agents in favor of the new universal agent harness.
* feat: update proto definitions to use google.protobuf.Struct for harness_config and replace agent fields with harness fields in ExecRequest
* Cleanup the repo and move to controller2
* Migrate controller and registry to internal/controller2
- Remove the legacy harness build tag
* refactor: move GeminiConfig definition from internal/config to internal/gemini package
* test: replace controller registry with dummy implementation and update dependency constraints in go.mod
* chore: remove harness build and test steps from GitHub Actions workflow
* Encapsulate event logging in a new logger
- Extend ConversationEvent with harness metadata
- Don't allow Exec requests to switch to a different harness
* feat: add TODO for pending execution resumption logic in controller
* Migrate controller2 to its own eventlog package
This will allow us to make schema changes to the event log easily without causing issues to the existing event log implementation.
* refactor: update CLI harness to use eventlog from internal/controller2
* Remove custom harness namespace and resources from deployment configuration
* docs: simplify harness documentation and add support for custom antigravity images in install script
* Remove the implementation details of the deployment script
* Move axharness service to ax binary
This is for the simplicity of building everything into the same binary. In Substrate deployments, ax harness will be executed as an actor.
* feat: add harness implementation to support AGY and other service harnesses