import { z } from 'zod'
import { getMetaApi, META_SERVICE } from '@opentiny/tiny-engine-meta-register'
const inputSchema = z.object({
id: z.string().optional().describe('可选。若提供则返回指定 id 的全局状态;不提供则返回全量')
})
export const getGlobalState = {
name: 'get_global_state',
title: '查询全局变量',
description: 'Query global states. When id is provided, return the specific item; otherwise return the full list.',
inputSchema: inputSchema.shape,
callback: async (args: z.infer<typeof inputSchema>) => {
const { id } = args || {}
const apis = getMetaApi(META_SERVICE.GlobalStateService)
if (!apis) {
return {
content: [
{
isError: true,
type: 'text',
text: JSON.stringify({
status: 'error',
error: 'SERVICE_UNAVAILABLE',
message: 'GlobalStateService not registered'
})
}
]
}
}
const { getGlobalState: listGlobalState, getGlobalStateById } = apis
try {
if (!id) {
const list = listGlobalState()
return {
content: [
{
type: 'text',
text: JSON.stringify({
status: 'success',
message: 'Global state list fetched successfully',
data: list
})
}
]
}
}
const item = getGlobalStateById(id)
if (!item) {
return {
content: [
{
isError: true,
type: 'text',
text: JSON.stringify({
status: 'error',
message: `Unknown id: ${id}`,
error: 'GLOBAL_STATE_NOT_FOUND',
next_action: [
{
type: 'tool_call',
name: 'get_global_state',
args: {}
}
]
})
}
]
}
}
return {
content: [
{
type: 'text',
text: JSON.stringify({
status: 'success',
message: 'Global state fetched successfully',
data: item
})
}
]
}
} catch (error) {
return {
content: [
{
isError: true,
type: 'text',
text: JSON.stringify({
status: 'error',
message: 'Failed to get global state',
error: error instanceof Error ? error.message : 'Unknown error occurred'
})
}
]
}
}
}
}