chore(a2a-server): Merge A2A types (#7650)

This commit is contained in:
Adam Weidman
2025-09-03 16:19:15 +00:00
committed by GitHub
parent 2782af3f57
commit 50b5c4303e
5 changed files with 55 additions and 47 deletions

View File

@@ -19,15 +19,22 @@ import type {
} from '@google/gemini-cli-core';
import { GeminiEventType } from '@google/gemini-cli-core';
import { v4 as uuidv4 } from 'uuid';
import { logger } from '../utils/logger.js';
import type { StateChange, AgentSettings } from '../types.js';
import { CoderAgentEvent } from '../types.js';
import type {
StateChange,
AgentSettings,
PersistedStateMetadata,
} from '../types.js';
import {
CoderAgentEvent,
getPersistedState,
setPersistedState,
} from '../types.js';
import { loadConfig, loadEnvironment, setTargetDir } from '../config/config.js';
import { loadSettings } from '../config/settings.js';
import { loadExtensions } from '../config/extension.js';
import { Task } from './task.js';
import type { PersistedStateMetadata } from '../metadata_types.js';
import { getPersistedState, setPersistedState } from '../metadata_types.js';
import { requestStorage } from '../http/requestStorage.js';
/**

View File

@@ -1,33 +0,0 @@
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import type { AgentSettings } from './types.js';
import type { TaskState } from '@a2a-js/sdk';
export interface PersistedStateMetadata {
_agentSettings: AgentSettings;
_taskState: TaskState;
}
export type PersistedTaskMetadata = { [k: string]: unknown };
export const METADATA_KEY = '__persistedState';
export function getPersistedState(
metadata: PersistedTaskMetadata,
): PersistedStateMetadata | undefined {
return metadata?.[METADATA_KEY] as PersistedStateMetadata | undefined;
}
export function setPersistedState(
metadata: PersistedTaskMetadata,
state: PersistedStateMetadata,
): PersistedTaskMetadata {
return {
...metadata,
[METADATA_KEY]: state,
};
}

View File

@@ -18,7 +18,7 @@ import { describe, it, expect, beforeEach, vi } from 'vitest';
import { GCSTaskStore, NoOpTaskStore } from './gcs.js';
import { logger } from '../utils/logger.js';
import * as configModule from '../config/config.js';
import * as metadataModule from '../metadata_types.js';
import { getPersistedState, METADATA_KEY } from '../types.js';
// Mock dependencies
vi.mock('@google-cloud/storage');
@@ -53,10 +53,16 @@ vi.mock('../utils/logger.js', () => ({
vi.mock('../config/config.js', () => ({
setTargetDir: vi.fn(),
}));
vi.mock('../metadata_types');
vi.mock('node:stream/promises', () => ({
pipeline: vi.fn(),
}));
vi.mock('../types.js', async (importOriginal) => {
const actual = await importOriginal<typeof import('../types.js')>();
return {
...actual,
getPersistedState: vi.fn(),
};
});
const mockStorage = Storage as MockedClass<typeof Storage>;
const mockFse = fse as Mocked<typeof fse>;
@@ -66,8 +72,8 @@ const mockGzipSync = gzipSync as Mock;
const mockGunzipSync = gunzipSync as Mock;
const mockUuidv4 = uuidv4 as Mock;
const mockSetTargetDir = configModule.setTargetDir as Mock;
const mockGetPersistedState = metadataModule.getPersistedState as Mock;
const METADATA_KEY = metadataModule.METADATA_KEY || '__persistedState';
const mockGetPersistedState = getPersistedState as Mock;
const TEST_METADATA_KEY = METADATA_KEY || '__persistedState';
type MockWriteStream = {
on: Mock<
@@ -228,7 +234,10 @@ describe('GCSTaskStore', () => {
mockGunzipSync.mockReturnValue(
Buffer.from(
JSON.stringify({
[METADATA_KEY]: { _agentSettings: {}, _taskState: 'submitted' },
[TEST_METADATA_KEY]: {
_agentSettings: {},
_taskState: 'submitted',
},
_contextId: 'ctx1',
}),
),
@@ -282,7 +291,10 @@ describe('GCSTaskStore', () => {
mockGunzipSync.mockReturnValue(
Buffer.from(
JSON.stringify({
[METADATA_KEY]: { _agentSettings: {}, _taskState: 'submitted' },
[TEST_METADATA_KEY]: {
_agentSettings: {},
_taskState: 'submitted',
},
_contextId: 'ctx1',
}),
),

View File

@@ -15,10 +15,7 @@ import type { Task as SDKTask } from '@a2a-js/sdk';
import type { TaskStore } from '@a2a-js/sdk/server';
import { logger } from '../utils/logger.js';
import { setTargetDir } from '../config/config.js';
import {
getPersistedState,
type PersistedTaskMetadata,
} from '../metadata_types.js';
import { getPersistedState, type PersistedTaskMetadata } from '../types.js';
import { v4 as uuidv4 } from 'uuid';
type ObjectType = 'metadata' | 'workspace';

View File

@@ -102,3 +102,28 @@ export interface TaskMetadata {
parameterSchema: unknown;
}>;
}
export interface PersistedStateMetadata {
_agentSettings: AgentSettings;
_taskState: TaskState;
}
export type PersistedTaskMetadata = { [k: string]: unknown };
export const METADATA_KEY = '__persistedState';
export function getPersistedState(
metadata: PersistedTaskMetadata,
): PersistedStateMetadata | undefined {
return metadata?.[METADATA_KEY] as PersistedStateMetadata | undefined;
}
export function setPersistedState(
metadata: PersistedTaskMetadata,
state: PersistedStateMetadata,
): PersistedTaskMetadata {
return {
...metadata,
[METADATA_KEY]: state,
};
}