mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-13 05:12:55 -07:00
chore(a2a-server): Merge A2A types (#7650)
This commit is contained in:
@@ -19,15 +19,22 @@ import type {
|
|||||||
} from '@google/gemini-cli-core';
|
} from '@google/gemini-cli-core';
|
||||||
import { GeminiEventType } from '@google/gemini-cli-core';
|
import { GeminiEventType } from '@google/gemini-cli-core';
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
import { logger } from '../utils/logger.js';
|
import { logger } from '../utils/logger.js';
|
||||||
import type { StateChange, AgentSettings } from '../types.js';
|
import type {
|
||||||
import { CoderAgentEvent } from '../types.js';
|
StateChange,
|
||||||
|
AgentSettings,
|
||||||
|
PersistedStateMetadata,
|
||||||
|
} from '../types.js';
|
||||||
|
import {
|
||||||
|
CoderAgentEvent,
|
||||||
|
getPersistedState,
|
||||||
|
setPersistedState,
|
||||||
|
} from '../types.js';
|
||||||
import { loadConfig, loadEnvironment, setTargetDir } from '../config/config.js';
|
import { loadConfig, loadEnvironment, setTargetDir } from '../config/config.js';
|
||||||
import { loadSettings } from '../config/settings.js';
|
import { loadSettings } from '../config/settings.js';
|
||||||
import { loadExtensions } from '../config/extension.js';
|
import { loadExtensions } from '../config/extension.js';
|
||||||
import { Task } from './task.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';
|
import { requestStorage } from '../http/requestStorage.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -18,7 +18,7 @@ import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|||||||
import { GCSTaskStore, NoOpTaskStore } from './gcs.js';
|
import { GCSTaskStore, NoOpTaskStore } from './gcs.js';
|
||||||
import { logger } from '../utils/logger.js';
|
import { logger } from '../utils/logger.js';
|
||||||
import * as configModule from '../config/config.js';
|
import * as configModule from '../config/config.js';
|
||||||
import * as metadataModule from '../metadata_types.js';
|
import { getPersistedState, METADATA_KEY } from '../types.js';
|
||||||
|
|
||||||
// Mock dependencies
|
// Mock dependencies
|
||||||
vi.mock('@google-cloud/storage');
|
vi.mock('@google-cloud/storage');
|
||||||
@@ -53,10 +53,16 @@ vi.mock('../utils/logger.js', () => ({
|
|||||||
vi.mock('../config/config.js', () => ({
|
vi.mock('../config/config.js', () => ({
|
||||||
setTargetDir: vi.fn(),
|
setTargetDir: vi.fn(),
|
||||||
}));
|
}));
|
||||||
vi.mock('../metadata_types');
|
|
||||||
vi.mock('node:stream/promises', () => ({
|
vi.mock('node:stream/promises', () => ({
|
||||||
pipeline: vi.fn(),
|
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 mockStorage = Storage as MockedClass<typeof Storage>;
|
||||||
const mockFse = fse as Mocked<typeof fse>;
|
const mockFse = fse as Mocked<typeof fse>;
|
||||||
@@ -66,8 +72,8 @@ const mockGzipSync = gzipSync as Mock;
|
|||||||
const mockGunzipSync = gunzipSync as Mock;
|
const mockGunzipSync = gunzipSync as Mock;
|
||||||
const mockUuidv4 = uuidv4 as Mock;
|
const mockUuidv4 = uuidv4 as Mock;
|
||||||
const mockSetTargetDir = configModule.setTargetDir as Mock;
|
const mockSetTargetDir = configModule.setTargetDir as Mock;
|
||||||
const mockGetPersistedState = metadataModule.getPersistedState as Mock;
|
const mockGetPersistedState = getPersistedState as Mock;
|
||||||
const METADATA_KEY = metadataModule.METADATA_KEY || '__persistedState';
|
const TEST_METADATA_KEY = METADATA_KEY || '__persistedState';
|
||||||
|
|
||||||
type MockWriteStream = {
|
type MockWriteStream = {
|
||||||
on: Mock<
|
on: Mock<
|
||||||
@@ -228,7 +234,10 @@ describe('GCSTaskStore', () => {
|
|||||||
mockGunzipSync.mockReturnValue(
|
mockGunzipSync.mockReturnValue(
|
||||||
Buffer.from(
|
Buffer.from(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
[METADATA_KEY]: { _agentSettings: {}, _taskState: 'submitted' },
|
[TEST_METADATA_KEY]: {
|
||||||
|
_agentSettings: {},
|
||||||
|
_taskState: 'submitted',
|
||||||
|
},
|
||||||
_contextId: 'ctx1',
|
_contextId: 'ctx1',
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
@@ -282,7 +291,10 @@ describe('GCSTaskStore', () => {
|
|||||||
mockGunzipSync.mockReturnValue(
|
mockGunzipSync.mockReturnValue(
|
||||||
Buffer.from(
|
Buffer.from(
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
[METADATA_KEY]: { _agentSettings: {}, _taskState: 'submitted' },
|
[TEST_METADATA_KEY]: {
|
||||||
|
_agentSettings: {},
|
||||||
|
_taskState: 'submitted',
|
||||||
|
},
|
||||||
_contextId: 'ctx1',
|
_contextId: 'ctx1',
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -15,10 +15,7 @@ import type { Task as SDKTask } from '@a2a-js/sdk';
|
|||||||
import type { TaskStore } from '@a2a-js/sdk/server';
|
import type { TaskStore } from '@a2a-js/sdk/server';
|
||||||
import { logger } from '../utils/logger.js';
|
import { logger } from '../utils/logger.js';
|
||||||
import { setTargetDir } from '../config/config.js';
|
import { setTargetDir } from '../config/config.js';
|
||||||
import {
|
import { getPersistedState, type PersistedTaskMetadata } from '../types.js';
|
||||||
getPersistedState,
|
|
||||||
type PersistedTaskMetadata,
|
|
||||||
} from '../metadata_types.js';
|
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
type ObjectType = 'metadata' | 'workspace';
|
type ObjectType = 'metadata' | 'workspace';
|
||||||
|
|||||||
@@ -102,3 +102,28 @@ export interface TaskMetadata {
|
|||||||
parameterSchema: unknown;
|
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,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user