Commit Graph
629 Commits
Author SHA1 Message Date
Jaana Dogan 233820befc make tasks immutable and revisit lifecycle management
Make Task manifests fully immutable once created, removing `UpdateTask`
in favor of `CreateTask` and driving lifecycle transitions (suspend,
resume, delete) through dedicated RPCs and event stream processing.

- Proto: Replace `UpdateTask` with `CreateTask` in AX service.
- Proto: Remove mutable `suspend` field from `TaskSpec` and reserve field 2.
- API / Server: Implement `CreateTask` with duplicate name rejection
  (`codes.AlreadyExists`). Update `SuspendTask`, `ResumeTask`, and `DeleteTask`
  to transition status phase and publish lifecycle events.
- Store: Remove redundant `SetTaskSuspended` and `MarkTaskDeleting` methods;
  standardize on `CreateTask`, `UpdateTaskStatus`, `DeleteTask`, and
  `PublishEvent`.
- Controller: Decouple spec reconciliation from task suspension; introduce
  `ReconcileSuspend` to handle checkpointing and pausing actors on Substrate.
- CLI: Update `ax apply` to submit tasks via `CreateTask`.
- Docs: Update design docs and specifications to reflect task immutability.
2026-09-24 04:03:32 -07:00
Jaana Dogan e317c376f2 demo: simplify walk-through to highlight core stable features 2026-09-24 03:40:21 -07:00
Alex Jones e6211f84a9 fix(controller): keep task templates stable across lifecycle changes (#390)
Exclude status and the suspend flag from embedded launch configuration so reconciliation reuses the existing template and golden snapshot.
2026-09-24 02:01:21 -07:00
Jaana Dogan ace03604a6 Add external roadmap (#381)
Fixes #362.
2026-09-23 14:08:21 -07:00
JBD d8ed0fe38b chore: pin workflow actions and add read permissions v0.3.0 2026-09-19 20:27:51 -07:00
JBD dc4f36cdba Restructure AX into a general-purpose orchestration layer for agentic tasks
AX is undergoing a significant redesign, moving away from a single CLI with
an embedded Python harness toward a general-purpose orchestration layer for
agentic tasks. The repository is reorganized around three binaries: ax-server
exposes a gRPC API for submitting Task manifests, ax-controller runs as a
horizontally scaled reconciler that consumes work from Redis Streams, and
ax-task-runner executes tasks inside sandboxed workers. Task state now lives
in Redis rather than Kubernetes CRDs so the system can handle millions of
short-lived tasks without straining etcd. The legacy Python harness, ATE
client, SQL event log, and skill examples are removed, and new design,
concepts, manifest, networking, runner, and sandbox docs plus Kubernetes
deploy manifests describe the new architecture.
2026-09-19 20:14:43 -07:00
JBD b777313020 Add doctor command to diagnose sidecar, assets, and runtime 2026-08-19 22:56:39 -07:00
JBD 20760f4e3d Remove redundant attached field and use cmd nil-check 2026-08-19 22:27:44 -07:00
JBD 34d81b78cf Enable sidecar PID tracking 2026-08-19 22:18:15 -07:00
Jaana Dogan 703a79f2a5 Bump dependencies to fix the broken build v0.2.3 2026-08-13 11:49:13 -07:00
Jaana Dogan 8ee3b7d734 Update dependencies in requirements.txt 2026-08-12 01:01:39 -07:00
Jaana Dogan 2bcc1637b3 Update project dependencies in requirements.txt 2026-08-12 00:38:32 -07:00
Jaana Dogan 7f053762ff Display tool calls, and add an animation for loading 2026-08-12 00:28:09 -07:00
Jaana Dogan e4270cfb71 Update architectural diagram and labels 2026-08-12 00:01:28 -07:00
Jaana Dogan 992cd08608 Add FilesystemService to README roadmap 2026-08-11 23:55:23 -07:00
Jaana Dogan 087df171b3 Rename cli config flags to --agent-config and --agent-config-file 2026-08-11 23:24:28 -07:00
Jaana Dogan 9eac9a3233 Remove system instructions from local agent configuration 2026-08-11 23:21:27 -07:00
Jaana Dogan 0c689080d5 Update roadmap in README with new feature priorities 2026-08-11 23:19:54 -07:00
Jaana Dogan 91567b2844 Remove skills.Available in favor of []skills.Group 2026-08-11 23:17:19 -07:00
Jaana Dogan 9faeb23bed Rename harnessConfig to agentConfig across the codebase for consistency 2026-08-11 23:00:48 -07:00
Jaana Dogan 2282424ebc Make the public facing ExecutionService more InteractionsService-like (#339)
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.
2026-08-11 22:52:05 -07:00
Zhengbo Li f327e23b5b skills: add local directory source alongside the registry (#316)
Introduce a local skills source parallel to the Gemini Enterprise Skill
Registry integration. A local source points at a directory already on disk
(a parent dir holding <skill-id>/SKILL.md subfolders, the same layout as
examples/skills and a registry's target_dir); nothing is fetched and the
directory is used as-is.

- New mode-agnostic result shape (internal/skills: Available/Group/Skill) so
  both sources feed the same consumers without either depending on the other.
- internal/skills/local.Discover enumerates enabled local paths, treating
  immediate subfolders with a SKILL.md as skills (subfolder name = id). It is
  fail-safe like registry materialization: a missing/unreadable/empty path is
  logged and skipped, never blocking harness creation.
- config.SkillsConfig gains Local []LocalSkillsConfig (enabled + path) with
  validation; geminienterprise.Materialize now returns skills.Available.
- cliutil combines registry and local groups into one system-instruction
  pointer for the Antigravity Interactions harness. The Antigravity SDK
  harness (SKILLS_DIR-based) is left as a TODO.

Only the interactions harness is wired; tests cover discovery, fail-safe
degradation, config validation, and the examples/skills fixture.
2026-07-28 13:04:19 -07:00
Jaana Dogan cbd2c56437 refactor: update install script paths in documentation and manifest comments 2026-07-22 22:30:04 -07:00
Jaana Dogan 4474dff3cd refactor: move ate package from internal/k8s to internal/ to decouple from Kubernetes dependencies v0.2.2 2026-07-22 12:59:02 -07:00
Jaana Dogan 0f8d4c62ed refactor: remove unused history confirmation utility functions 2026-07-22 12:57:49 -07:00
Jaana Dogan d9a0f75ed2 docs: update usage documentation for ax execute and serve commands 2026-07-22 12:38:41 -07:00
Jaana Dogan 0f8f36c8d5 docs: simplify quickstart section and fix formatting in README.md 2026-07-22 12:32:24 -07:00
Jaana Dogan 19be3958f3 docs: remove specific harness and model controller descriptions from README 2026-07-22 12:31:28 -07:00
Jaana Dogan f4ad177adb docs: rename --config flag to --ax-config in README examples 2026-07-22 12:30:30 -07:00
Jaana Dogan d4c5c352e0 chore: rename --config flag to --ax-config for consistency 2026-07-22 12:28:28 -07:00
Jaana Dogan b019d135ce chore: add Google LLC copyright headers to generated protocol buffer files 2026-07-22 12:27:26 -07:00
Jaana Dogan d1a3da1142 docs: format bash command examples for better readability in README.md 2026-07-22 12:25:38 -07:00
Jaana Dogan 16db0d7a0f refactor: simplify CLI by removing the exec subcommand and moving its flags to the root command 2026-07-22 12:24:07 -07:00
Jaana Dogan 5ec51983e1 refactor: move antigravity configuration to top-level and rename HarnessesConfig to RegistryConfig 2026-07-22 12:19:30 -07:00
Jaana Dogan c0d8e5bf10 refactor: remove dashboard implementation and web assets 2026-07-22 12:15:28 -07:00
Jaana Dogan bab973e877 refactor: rename seq to step across protocol and internal controller logic 2026-07-22 12:13:19 -07:00
Jaana Dogan 24b2f399fa docs: update README features list to highlight MCP tools and custom environment support 2026-07-22 12:05:48 -07:00
Jaana Dogan 2fd20cd431 refactor: rename harness configuration flags to --config for inline JSON and --config-file for paths 2026-07-22 12:04:50 -07:00
Jaana Dogan 701feadd05 refactor: rename CLI flags to --config and --ax-config for improved command naming consistency 2026-07-22 12:01:27 -07:00
Jaana Dogan a0bfb5fb74 feat: add support for terminating existing orphan processes before starting the Python sidecar v0.2.1 2026-07-22 11:56:37 -07:00
Jaana Dogan 1abc003dca feat: prevent sidecar startup when ReadyFunc indicates the endpoint is already in use 2026-07-22 10:09:23 -07:00
Jaana Dogan e4c2fbda00 docs: remove temporary external contribution pause and contact email from README 2026-07-22 10:04:03 -07:00
Jaana Dogan 6806eb99d7 docs: remove deprecated BYOH and integrations items from roadmap 2026-07-22 10:02:24 -07:00
Jaana Dogan bff324b7db docs: remove obsolete Antigravity harness documentation from README 2026-07-22 10:02:05 -07:00
Jaana Dogan 5ac275e373 fix(docs): update Control API label to Actor Controller in README 2026-07-22 08:44:24 -07:00
Jaana Dogan 10588c52ac fix(docs): update HarnessService description to clarify terminology 2026-07-22 08:43:07 -07:00
Joyce Liu a34bbebf2d antigravity: remove _resolve_localhost /etc/hosts hack (#328)
google-antigravity 0.1.7's _connect_websocket retries both "localhost"
and "127.0.0.1" when dialing localharness (local_connection.py:993), so
the sidecar no longer needs to patch /etc/hosts for substrate/gVisor
environments where localhost may not resolve.

Ref #325

antigravity: guard conversation_id for safe save_dir use (#312)

harness_server uses the caller-supplied conversation_id directly as a
per-conversation storage directory name (save_dir = state_dir /
conversation_id) before the Antigravity harness ever sees it, so a value
like "../escape" could traverse outside state_dir. Reject an empty id or
one containing a path separator or a "." / ".." component at the boundary
in _run_turn, returning an INVALID_ARGUMENT end frame.

This is intentionally only a path-safety guard, not the id-format
contract. The Antigravity harness owns that: it validates the forwarded
cascade_id (length and character set) per cl/948016352. Keeping the
format rule in one place avoids the two layers drifting.

chore: remove stale docs, gitignore, and Makefile entries (#329)

- CONTRIBUTING.md: drop 'make run-remote' (no such Makefile target)
- .gitignore: remove orphaned entries (local/remote_agent, sandbox-router,
  tasklog, axepp, google-cloud-sdk, test-sandbox-config.yaml)
- Makefile: add missing deps, clean-logs to .PHONY

antigravity: remove vertex env-var override (superseded by AGY 0.1.7) (#331)

* antigravity: remove vertex env-var override (superseded by AGY 0.1.7)

google-antigravity 0.1.7 reads GOOGLE_GENAI_USE_VERTEXAI /
GOOGLE_GENAI_USE_ENTERPRISE + GOOGLE_CLOUD_{PROJECT,LOCATION} natively,
so the sidecar no longer needs _vertex_kwargs_from_env to thread them
into LocalAgentConfig.

- Delete _vertex_kwargs_from_env + VertexKwargs.
- _build_default_config: bare LocalAgentConfig(system_instructions=...).
- _has_credentials: read project/location from env (SDK hydrates them
  onto VertexEndpoint, not LocalAgentConfig).
- Update tests accordingly.

Requires the 0.1.7 bump. Credential resolution is startup-only and
does not touch the save_dir/state_dir resume path.

Ref #325

* antigravity: drop stale _has_credentials docstring note about vertex env override

Interactions: persist interactions harness with durable dir and resume from it (#327)

interactions: make WorkDir authoritative for run_command (#335)

The interactions harness executed run_command relative to the process's
ambient working directory, which is not reliably the agent's workspace: with
no Cwd argument the command ran wherever the process cwd happened to be, and a
model-supplied Cwd (including "/") was honored blindly. As a result tool calls
often ran from "/" instead of the configured workspace (#332).

Make the workspace directory authoritative in the executor rather than relying
on ambient process state:

- Add AntigravityInteractionsConfig.WorkDir (defaults from AX_HARNESS_WORKDIR).
- run_command now resolves its directory via resolveRunDir: no Cwd -> WorkDir;
  relative Cwd -> joined under WorkDir; absolute Cwd -> honored as-is. Empty
  WorkDir preserves the previous process-cwd behavior.
- Add WorkspaceSystemInstruction to orient the agent about its working
  directory so it emits workspace-relative paths, and wire it in cmd/ax.

Fixes #332

Remove the binary (#334)

* Remove the binary

* chore: add e2e directory to .gitignore

* refactor: migrate binary file check to a dedicated workflow file

* fix: restrict binary file check to added, copied, or modified files
v0.2.0
2026-07-20 18:22:45 -07:00
Joyce Liu d1e95fc298 antigravity: bump google-antigravity 0.1.5 -> 0.1.7 (#326)
0.1.7 reads GenAI credential env vars natively. Bump first; the
sidecar override is removed in a follow-up (#325). Behavior unchanged
here since explicit override kwargs still take precedence.

Ref #325
2026-07-16 16:28:13 -07:00
Joyce Liu 35958b273b fix(harness): wire --state-dir for the Antigravity SDK harness on substrate (#322)
runAntigravityHarness (the `ax harness antigravity` path used by the
substrate ActorTemplate) forked the Python sidecar with only --host/--port.
The sidecar then fell back to its own default state dir, so on a substrate
actor per-conversation save_dir landed on a path AX does not control, which
breaks SDK-native resume across actor Run/Restore and snapshotting.

Derive the trajectory dir via antigravity.DefaultStateDir() and pass it as
--state-dir, mirroring the local path in antigravity.New and the interactions
harness in runAntigravityInteractionsHarness (both own the path internally
rather than taking it from ax.yaml/ActorTemplate).

Fixes #321
2026-07-16 14:29:02 -07:00
Junjie Wang 6afbf90a8f Set workdir for interactions execution. (#324) 2026-07-16 13:25:39 -07:00