[goose2] MCP Apps: hydrate and replay app payloads in Goose2 (#8632)

Signed-off-by: Andrew Harvard <aharvard@squareup.com>
This commit is contained in:
Andrew Harvard
2026-04-28 11:03:40 -04:00
committed by GitHub
parent e95811966a
commit b59ef3a46f
24 changed files with 1287 additions and 225 deletions
+55 -1
View File
@@ -2,7 +2,17 @@ import type {
Implementation,
InitializeRequest,
} from "@agentclientprotocol/sdk";
import { RESOURCE_MIME_TYPE } from "@modelcontextprotocol/ext-apps";
import { RESOURCE_MIME_TYPE } from "@modelcontextprotocol/ext-apps/app-bridge";
import type {
McpUiAppResourceConfig,
McpUiAppToolConfig,
} from "@modelcontextprotocol/ext-apps/server";
import type {
BlobResourceContents,
ReadResourceResult,
TextResourceContents,
Tool,
} from "@modelcontextprotocol/sdk/types.js";
export const GOOSE_MCP_UI_EXTENSION_ID = "io.modelcontextprotocol/ui" as const;
@@ -14,6 +24,50 @@ export interface GooseMcpHostCapabilities {
extensions: Record<string, GooseMcpUiExtensionSettings>;
}
export type GooseToolUiMetadata = Extract<
McpUiAppToolConfig["_meta"],
{ ui: unknown }
>["ui"];
export type GooseToolMetadata = NonNullable<Tool["_meta"]> & {
ui?: GooseToolUiMetadata;
goose_extension?: string;
};
export type GooseSessionTool = Tool & {
meta?: GooseToolMetadata;
_meta?: GooseToolMetadata;
};
export type GooseTextResourceContents = TextResourceContents;
export type GooseBlobResourceContents = BlobResourceContents;
export type GooseResourceContents = TextResourceContents | BlobResourceContents;
export type GooseReadResourceResult = ReadResourceResult;
export type GooseResourceMetadata = NonNullable<
Extract<NonNullable<McpUiAppResourceConfig["_meta"]>, { ui?: unknown }>["ui"]
>;
export interface GooseMcpAppToolPayload {
toolName: string;
extensionName: string;
resourceUri: string;
toolMeta?: GooseToolMetadata;
resourceResult?: GooseReadResourceResult | null;
readError?: string;
}
export interface GooseToolCallUpdateMeta {
goose?: {
mcpApp?: GooseMcpAppToolPayload;
[key: string]: unknown;
};
[key: string]: unknown;
}
export interface GooseClientMeta {
goose: {
mcpHostCapabilities: GooseMcpHostCapabilities;