Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 126 additions & 2 deletions .github/workflows/agent-framework-conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@ on:
- "packages/cli/src/contracts/agent-framework-contract.ts"
- "packages/cli/src/proof-carrying-change.ts"
- "packages/cli/src/utils/json-schema-contract.ts"
- "packages/cli/src/index.ts"
- "packages/cli/src/doctor.ts"
- "packages/cli/src/utils/backend-framework-contract.ts"
- "packages/cli/src/utils/project-kind.ts"
- "packages/cli/src/utils/workspace-contract.ts"
- "packages/cli/src/cli-ui/kit-picker-choices.ts"
- "packages/cli/src/contracts/create-planner-capabilities-contract.ts"
- "packages/cli/src/contracts/runtime-command-surface-contract.ts"
- "packages/cli/src/utils/workspace-paths.ts"
- "packages/cli/src/__tests__/agent-framework-*.test.ts"
- "packages/cli/src/__tests__/agent-framework-lifecycle.test.ts"
Expand All @@ -17,18 +25,27 @@ on:
- "packages/cli/src/__tests__/openai-agents-adapter.test.ts"
- "packages/cli/src/__tests__/openai-agents-context-loader.test.ts"
- "packages/cli/src/__tests__/openai-agents-lifecycle.test.ts"
- "packages/cli/src/__tests__/google-adk-adapter.test.ts"
- "packages/cli/src/__tests__/google-adk-lifecycle.test.ts"
- "packages/cli/src/__tests__/agent-framework-selection.test.ts"
- "packages/cli/src/__tests__/contracts/agent-framework-contract.test.ts"
- "packages/cli/src/__tests__/handle-create-flags.test.ts"
- "packages/cli/src/__tests__/kit-picker-choices.test.ts"
- "packages/cli/scripts/smoke-microsoft-agent-framework-adapter.ts"
- "packages/cli/scripts/smoke-openai-agents-adapter.ts"
- "packages/cli/scripts/smoke-google-adk-adapter.ts"
- "packages/cli/scripts/verify-agent-framework-conformance.ts"
- "packages/cli/scripts/discover-agent-framework-versions.ts"
- "packages/cli/scripts/propose-agent-framework-version-update.ts"
- "packages/cli/scripts/promote-agent-framework-release-admission.ts"
- "packages/cli/package.json"
- "packages/cli/contracts/agent-framework-capabilities.v1.json"
- "packages/cli/contracts/create-planner-capabilities.v1.json"
- "packages/cli/contracts/runtime-command-surface.v1.json"
- "packages/cli/contracts/workspace-intelligence/agent-framework-*.v*.json"
- "contracts/agent-framework-capabilities.v1.json"
- "contracts/create-planner-capabilities.v1.json"
- "contracts/runtime-command-surface.v1.json"
- "contracts/workspace-intelligence/agent-framework-*.v*.json"
- ".github/workflows/agent-framework-conformance.yml"
- ".github/workflows/agent-framework-version-discovery.yml"
Expand Down Expand Up @@ -60,6 +77,7 @@ jobs:
outputs:
microsoft: ${{ steps.filter.outputs.microsoft }}
openai: ${{ steps.filter.outputs.openai }}
google: ${{ steps.filter.outputs.google }}
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
Expand All @@ -72,13 +90,26 @@ jobs:
microsoft:
- 'packages/cli/src/agent-frameworks/**'
- '!packages/cli/src/agent-frameworks/adapters/openai-agents/**'
- '!packages/cli/src/agent-frameworks/adapters/google-adk/**'
- 'packages/cli/src/__tests__/microsoft-agent-framework-adapter.test.ts'
- 'packages/cli/src/__tests__/agent-framework-*.test.ts'
- 'packages/cli/scripts/smoke-microsoft-agent-framework-adapter.ts'
- 'packages/cli/src/contracts/agent-framework-contract.ts'
- 'packages/cli/src/proof-carrying-change.ts'
- 'packages/cli/src/utils/json-schema-contract.ts'
- 'packages/cli/src/utils/workspace-paths.ts'
- 'packages/cli/src/index.ts'
- 'packages/cli/src/doctor.ts'
- 'packages/cli/src/utils/backend-framework-contract.ts'
- 'packages/cli/src/utils/project-kind.ts'
- 'packages/cli/src/utils/workspace-contract.ts'
- 'packages/cli/src/cli-ui/kit-picker-choices.ts'
- 'packages/cli/src/contracts/create-planner-capabilities-contract.ts'
- 'packages/cli/src/contracts/runtime-command-surface-contract.ts'
- 'packages/cli/contracts/create-planner-capabilities.v1.json'
- 'packages/cli/contracts/runtime-command-surface.v1.json'
- 'contracts/create-planner-capabilities.v1.json'
- 'contracts/runtime-command-surface.v1.json'
- 'packages/cli/scripts/verify-agent-framework-conformance.ts'
- 'packages/cli/scripts/promote-agent-framework-release-admission.ts'
- 'packages/cli/package.json'
Expand All @@ -87,13 +118,54 @@ jobs:
openai:
- 'packages/cli/src/agent-frameworks/**'
- '!packages/cli/src/agent-frameworks/adapters/microsoft-agent-framework/**'
- '!packages/cli/src/agent-frameworks/adapters/google-adk/**'
- 'packages/cli/src/__tests__/openai-agents-*.test.ts'
- 'packages/cli/src/__tests__/agent-framework-*.test.ts'
- 'packages/cli/scripts/smoke-openai-agents-adapter.ts'
- 'packages/cli/src/contracts/agent-framework-contract.ts'
- 'packages/cli/src/proof-carrying-change.ts'
- 'packages/cli/src/utils/json-schema-contract.ts'
- 'packages/cli/src/utils/workspace-paths.ts'
- 'packages/cli/src/index.ts'
- 'packages/cli/src/doctor.ts'
- 'packages/cli/src/utils/backend-framework-contract.ts'
- 'packages/cli/src/utils/project-kind.ts'
- 'packages/cli/src/utils/workspace-contract.ts'
- 'packages/cli/src/cli-ui/kit-picker-choices.ts'
- 'packages/cli/src/contracts/create-planner-capabilities-contract.ts'
- 'packages/cli/src/contracts/runtime-command-surface-contract.ts'
- 'packages/cli/contracts/create-planner-capabilities.v1.json'
- 'packages/cli/contracts/runtime-command-surface.v1.json'
- 'contracts/create-planner-capabilities.v1.json'
- 'contracts/runtime-command-surface.v1.json'
- 'packages/cli/scripts/verify-agent-framework-conformance.ts'
- 'packages/cli/scripts/promote-agent-framework-release-admission.ts'
- 'packages/cli/package.json'
- 'package-lock.json'
- '.github/workflows/agent-framework-conformance.yml'
google:
- 'packages/cli/src/agent-frameworks/**'
- '!packages/cli/src/agent-frameworks/adapters/microsoft-agent-framework/**'
- '!packages/cli/src/agent-frameworks/adapters/openai-agents/**'
- 'packages/cli/src/__tests__/google-adk-*.test.ts'
- 'packages/cli/src/__tests__/agent-framework-*.test.ts'
- 'packages/cli/scripts/smoke-google-adk-adapter.ts'
- 'packages/cli/src/contracts/agent-framework-contract.ts'
- 'packages/cli/src/proof-carrying-change.ts'
- 'packages/cli/src/utils/json-schema-contract.ts'
- 'packages/cli/src/utils/workspace-paths.ts'
- 'packages/cli/src/index.ts'
- 'packages/cli/src/doctor.ts'
- 'packages/cli/src/utils/backend-framework-contract.ts'
- 'packages/cli/src/utils/project-kind.ts'
- 'packages/cli/src/utils/workspace-contract.ts'
- 'packages/cli/src/cli-ui/kit-picker-choices.ts'
- 'packages/cli/src/contracts/create-planner-capabilities-contract.ts'
- 'packages/cli/src/contracts/runtime-command-surface-contract.ts'
- 'packages/cli/contracts/create-planner-capabilities.v1.json'
- 'packages/cli/contracts/runtime-command-surface.v1.json'
- 'contracts/create-planner-capabilities.v1.json'
- 'contracts/runtime-command-surface.v1.json'
- 'packages/cli/scripts/verify-agent-framework-conformance.ts'
- 'packages/cli/scripts/promote-agent-framework-release-admission.ts'
- 'packages/cli/package.json'
Expand Down Expand Up @@ -211,10 +283,62 @@ jobs:
if-no-files-found: error
retention-days: 14

google-adk:
name: Google ADK · ${{ matrix.runtime }} · ${{ matrix.os }}
needs: detect-changes
if: github.event_name == 'workflow_dispatch' || needs.detect-changes.outputs.google == 'true'
runs-on: ${{ matrix.os }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
os: ${{ fromJSON(github.event_name == 'workflow_dispatch' && inputs.qualification_mode == 'full' && '["ubuntu-latest","macos-latest","windows-latest"]' || '["ubuntu-latest"]') }}
runtime: [python, typescript]

steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
with:
persist-credentials: false

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "20.19.0"
cache: npm
cache-dependency-path: package-lock.json

- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
if: matrix.runtime == 'python'
with:
python-version: "3.10.11"

- name: Install JavaScript dependencies
run: npm ci

- name: Install pinned uv runtime
if: matrix.runtime == 'python'
run: python -m pip install uv==0.12.6

- name: Validate contracts and adapter behavior
run: npm --workspace workspai exec vitest -- run src/__tests__/contracts/agent-framework-contract.test.ts src/__tests__/agent-framework-registry.test.ts src/__tests__/google-adk-adapter.test.ts src/__tests__/google-adk-lifecycle.test.ts src/__tests__/agent-framework-selection.test.ts src/__tests__/agent-framework-release-admission.test.ts

- name: Compile generated adapter project
id: conformance
working-directory: packages/cli
run: npm exec tsx -- scripts/smoke-google-adk-adapter.ts --runtime ${{ matrix.runtime }} --report-dir test-results/agent-framework-conformance

- name: Upload lane evidence
if: always() && steps.conformance.outcome != 'skipped'
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: agent-framework-google-adk-${{ matrix.runtime }}-${{ runner.os }}
path: packages/cli/test-results/agent-framework-conformance
if-no-files-found: error
retention-days: 14

admit-matrix:
name: Admit complete adapter matrix
if: always() && github.event_name == 'workflow_dispatch' && inputs.qualification_mode == 'full' && needs['microsoft-agent-framework'].result == 'success' && needs['openai-agents'].result == 'success'
needs: [microsoft-agent-framework, openai-agents]
if: always() && github.event_name == 'workflow_dispatch' && inputs.qualification_mode == 'full' && needs['microsoft-agent-framework'].result == 'success' && needs['openai-agents'].result == 'success' && needs['google-adk'].result == 'success'
needs: [microsoft-agent-framework, openai-agents, google-adk]
runs-on: ubuntu-latest
timeout-minutes: 10

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ jobs:
if: needs.changes.outputs.heavy == 'true'
runs-on: ${{ matrix.os }}
env:
RAPIDKIT_BUNDLE_SIZE_LIMIT_KB: "3000"
RAPIDKIT_BUNDLE_SIZE_LIMIT_KB: "10000"

strategy:
fail-fast: false
Expand Down
28 changes: 26 additions & 2 deletions contracts/create-planner-capabilities.v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@
"plannerFramework": "microsoft-agent-framework",
"category": "agent",
"owner": "workspai",
"stability": "stable",
"stability": "preview",
"versionPolicy": "tested-baseline",
"moduleSupport": false,
"workspacePythonEngine": "none"
Expand All @@ -130,7 +130,7 @@
"plannerFramework": "microsoft-agent-framework",
"category": "agent",
"owner": "workspai",
"stability": "stable",
"stability": "preview",
"versionPolicy": "tested-baseline",
"moduleSupport": false,
"workspacePythonEngine": "none"
Expand Down Expand Up @@ -159,6 +159,30 @@
"moduleSupport": false,
"workspacePythonEngine": "none"
},
{
"id": "agent.google-adk.python",
"runtime": "python",
"framework": "google-adk",
"plannerFramework": "google-adk",
"category": "agent",
"owner": "workspai",
"stability": "preview",
"versionPolicy": "tested-baseline",
"moduleSupport": false,
"workspacePythonEngine": "none"
},
{
"id": "agent.google-adk.typescript",
"runtime": "node",
"framework": "google-adk",
"plannerFramework": "google-adk",
"category": "agent",
"owner": "workspai",
"stability": "preview",
"versionPolicy": "tested-baseline",
"moduleSupport": false,
"workspacePythonEngine": "none"
},
{
"id": "gateway.openrouter.typescript",
"runtime": "node",
Expand Down
2 changes: 2 additions & 0 deletions contracts/runtime-command-surface.v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -4374,6 +4374,8 @@
"agent.microsoft.dotnet",
"agent.openai.python",
"agent.openai.typescript",
"agent.google-adk.python",
"agent.google-adk.typescript",
"gateway.openrouter.typescript",
"gateway.openrouter.python"
],
Expand Down
2 changes: 2 additions & 0 deletions contracts/workspace-intelligence-architecture.v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -684,6 +684,8 @@
"agent.microsoft.dotnet",
"agent.openai.python",
"agent.openai.typescript",
"agent.google-adk.python",
"agent.google-adk.typescript",
"gateway.openrouter.typescript",
"gateway.openrouter.python"
],
Expand Down
38 changes: 38 additions & 0 deletions packages/cli/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,44 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- Implemented Google Agent Development Kit adapters for Python (`google-adk`)
and TypeScript (`@google/adk`) as independent runtimes in the existing Agent
Framework registry. Create kit ids are `agent.google-adk.python` and
`agent.google-adk.typescript`. Adapters are labeled `preview`. Gemini
Developer API (`gemini-api`) and Vertex AI (`vertex-ai`) are provider
profiles, not gateway kits. OpenRouter remains a separate Gateway category.
Create and Attach stay fail-closed until the reviewed v2 inventory is
promoted from Linux, macOS, and Windows evidence for this SHA. Sequential,
parallel, loop, graph Workflow Runtime, A2A, MCP, Agent Engine, and hosted
Google tools stay unsupported.

### Changed

- Agent Framework Create now refuses kits that are not in the reviewed v2
admission inventory before `--dry-run` and before any project or workspace
filesystem mutation. Unpublished Google ADK kits show
`preview · awaiting release admission` in the kit picker and create help.
- Google ADK starters emit `event.partial` fragments as display deltas and
keep the SDK-recognized final response as canonical streamed text without
re-emitting it after fragments. Intermediate metadata does not reset the
fragment window; tool-call and function-response events do. Python and
TypeScript both use the official final-response predicate. Telemetry stays
off unless `WORKSPAI_AGENT_TRACING=1` is set from process startup;
credentialless conformance observes a non-recording span without opt-in and
a recording span in a separate opted-in process with a test TracerProvider.
Starters consume the shared `agent-frameworks/context-loaders` sources
instead of OpenAI-owned copies. `OTEL_SDK_DISABLED` is process-global;
generated starters are isolated CLI processes. Conformance path filters now
include Create, Doctor, and planner contract surfaces. Linux credentialless
evidence records `streamingPartialSemantics`, `streamingMetadataInterleaving`,
`streamingToolBoundary`, `telemetryDefaultNonRecording`, and
`telemetryOptInRecording` as distinct verification-binding fields.
- Align the CLI bundle-size metrics gate with the existing 10000 KB limit
already set on the graph worktree. This ADK branch still inherited the stale
3000 KB `origin/main` value, which is why Linux metrics failed at 3068 KB.

## [0.77.0] - 2026-09-21

### Added
Expand Down
28 changes: 26 additions & 2 deletions packages/cli/contracts/create-planner-capabilities.v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@
"plannerFramework": "microsoft-agent-framework",
"category": "agent",
"owner": "workspai",
"stability": "stable",
"stability": "preview",
"versionPolicy": "tested-baseline",
"moduleSupport": false,
"workspacePythonEngine": "none"
Expand All @@ -130,7 +130,7 @@
"plannerFramework": "microsoft-agent-framework",
"category": "agent",
"owner": "workspai",
"stability": "stable",
"stability": "preview",
"versionPolicy": "tested-baseline",
"moduleSupport": false,
"workspacePythonEngine": "none"
Expand Down Expand Up @@ -159,6 +159,30 @@
"moduleSupport": false,
"workspacePythonEngine": "none"
},
{
"id": "agent.google-adk.python",
"runtime": "python",
"framework": "google-adk",
"plannerFramework": "google-adk",
"category": "agent",
"owner": "workspai",
"stability": "preview",
"versionPolicy": "tested-baseline",
"moduleSupport": false,
"workspacePythonEngine": "none"
},
{
"id": "agent.google-adk.typescript",
"runtime": "node",
"framework": "google-adk",
"plannerFramework": "google-adk",
"category": "agent",
"owner": "workspai",
"stability": "preview",
"versionPolicy": "tested-baseline",
"moduleSupport": false,
"workspacePythonEngine": "none"
},
{
"id": "gateway.openrouter.typescript",
"runtime": "node",
Expand Down
2 changes: 2 additions & 0 deletions packages/cli/contracts/runtime-command-surface.v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -4374,6 +4374,8 @@
"agent.microsoft.dotnet",
"agent.openai.python",
"agent.openai.typescript",
"agent.google-adk.python",
"agent.google-adk.typescript",
"gateway.openrouter.typescript",
"gateway.openrouter.python"
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -684,6 +684,8 @@
"agent.microsoft.dotnet",
"agent.openai.python",
"agent.openai.typescript",
"agent.google-adk.python",
"agent.google-adk.typescript",
"gateway.openrouter.typescript",
"gateway.openrouter.python"
],
Expand Down
Loading
Loading