refactor(tools): unify tool APIs and result handling (#38367)
This commit is contained in:
parent
8cac010bac
commit
79c1544072
133 changed files with 3602 additions and 2770 deletions
|
|
@ -17,7 +17,7 @@ export type PermissionPresentationInput = {
|
|||
resources: ReadonlyArray<unknown>
|
||||
metadata?: unknown
|
||||
input?: unknown
|
||||
structured?: unknown
|
||||
toolMetadata?: unknown
|
||||
}
|
||||
|
||||
export function permissionPresentation(
|
||||
|
|
@ -26,7 +26,7 @@ export function permissionPresentation(
|
|||
): PermissionPresentation {
|
||||
const action = canonicalToolName(source.action)
|
||||
const input = normalizeInput(action, source.input)
|
||||
const metadata = { ...dict(source.structured), ...dict(source.metadata) }
|
||||
const metadata = { ...dict(source.toolMetadata), ...dict(source.metadata) }
|
||||
const resources = source.resources.filter((item): item is string => typeof item === "string")
|
||||
|
||||
if (action === "edit") {
|
||||
|
|
|
|||
|
|
@ -28,7 +28,19 @@ export function webSearchProviderLabel(provider: unknown) {
|
|||
export function toolDisplayMetadata(state: unknown): Record<string, unknown> {
|
||||
if (!state || typeof state !== "object" || Array.isArray(state)) return {}
|
||||
if (!("status" in state) || state.status === "streaming") return {}
|
||||
if (!("structured" in state) || !state.structured || typeof state.structured !== "object") return {}
|
||||
if (Array.isArray(state.structured)) return {}
|
||||
return state.structured as Record<string, unknown>
|
||||
if (!("metadata" in state) || !state.metadata || typeof state.metadata !== "object") return {}
|
||||
if (Array.isArray(state.metadata)) return {}
|
||||
return state.metadata as Record<string, unknown>
|
||||
}
|
||||
|
||||
export function toolDisplayContent(state: SessionMessageAssistantTool["state"]) {
|
||||
if (state.status === "streaming" || state.status === "running") return []
|
||||
return state.content ?? []
|
||||
}
|
||||
|
||||
export function nonEmptyToolContent<T>(content: ReadonlyArray<T> | undefined): [T, ...T[]] | undefined {
|
||||
if (!content) return undefined
|
||||
const [first, ...rest] = content
|
||||
return first === undefined ? undefined : [first, ...rest]
|
||||
}
|
||||
import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue