Lifei/acp session setup refactor (#9488)

This commit is contained in:
Lifei Zhou
2026-06-04 13:12:04 +10:00
committed by GitHub
parent 1cc5aa690a
commit dc59e41945
38 changed files with 3096 additions and 1980 deletions
+42
View File
@@ -7,6 +7,7 @@ export interface ExtMethodProvider {
): Promise<Record<string, unknown>>;
}
import type { Client } from "@agentclientprotocol/sdk";
import type {
AddConfigExtensionRequest_unstable,
AddExtensionRequest_unstable,
@@ -40,6 +41,7 @@ import type {
DictationSecretSaveRequest_unstable,
DictationTranscribeRequest_unstable,
DictationTranscribeResponse_unstable,
ElicitationRespondRequest_unstable,
ExportSessionRequest_unstable,
ExportSessionResponse_unstable,
ExportSourceRequest_unstable,
@@ -50,6 +52,7 @@ import type {
GetSessionExtensionsResponse_unstable,
GetToolsRequest_unstable,
GetToolsResponse_unstable,
GooseSessionNotification_unstable,
GooseToolCallRequest_unstable,
GooseToolCallResponse_unstable,
ImportSessionRequest_unstable,
@@ -115,6 +118,7 @@ import {
zGetExtensionsResponse_unstable,
zGetSessionExtensionsResponse_unstable,
zGetToolsResponse_unstable,
zGooseSessionNotification_unstable,
zGooseToolCallResponse_unstable,
zImportSessionResponse_unstable,
zImportSourcesResponse_unstable,
@@ -527,6 +531,12 @@ export class GooseExtClient {
) as ImportSessionResponse_unstable;
}
async elicitationRespond_unstable(
params: ElicitationRespondRequest_unstable,
): Promise<void> {
await this.conn.extMethod("_goose/unstable/elicitation/respond", params);
}
async sessionProjectUpdate_unstable(
params: UpdateSessionProjectRequest_unstable,
): Promise<void> {
@@ -716,3 +726,35 @@ export class GooseExtClient {
);
}
}
export interface GooseExtNotifications {
unstable_sessionUpdate?: (
notification: GooseSessionNotification_unstable,
) => Promise<void>;
}
export type GooseClientCallbacks = Client & GooseExtNotifications;
export function installGooseExtNotificationDispatcher(
callbacks: GooseClientCallbacks,
): Client {
const { unstable_sessionUpdate, ...rest } = callbacks;
const userExtNotification = rest.extNotification;
return {
...rest,
extNotification: async (method, params) => {
switch (method) {
case "_goose/unstable/session/update": {
const parsed = zGooseSessionNotification_unstable.parse(
params,
) as GooseSessionNotification_unstable;
await unstable_sessionUpdate?.(parsed);
return;
}
default:
await userExtNotification?.(method, params);
return;
}
},
};
}
+15 -1
View File
@@ -1,6 +1,6 @@
// This file is auto-generated by @hey-api/openapi-ts
export type { AddConfigExtensionRequest_unstable, AddExtensionRequest_unstable, ArchiveSessionRequest_unstable, CreateSourceRequest_unstable, CreateSourceResponse_unstable, CustomProviderConfigDto, CustomProviderCreateRequest_unstable, CustomProviderCreateResponse_unstable, CustomProviderDeleteRequest_unstable, CustomProviderDeleteResponse_unstable, CustomProviderReadRequest_unstable, CustomProviderReadResponse_unstable, CustomProviderUpdateRequest_unstable, CustomProviderUpdateResponse_unstable, DefaultsReadRequest_unstable, DefaultsReadResponse_unstable, DefaultsSaveRequest_unstable, DeleteSessionRequest, DeleteSourceRequest_unstable, DictationConfigRequest_unstable, DictationConfigResponse_unstable, DictationDownloadProgress, DictationLocalModelStatus, DictationModelCancelRequest_unstable, DictationModelDeleteRequest_unstable, DictationModelDownloadProgressRequest_unstable, DictationModelDownloadProgressResponse_unstable, DictationModelDownloadRequest_unstable, DictationModelOption, DictationModelSelectRequest_unstable, DictationModelsListRequest_unstable, DictationModelsListResponse_unstable, DictationProviderStatusEntry, DictationSecretDeleteRequest_unstable, DictationSecretSaveRequest_unstable, DictationTranscribeRequest_unstable, DictationTranscribeResponse_unstable, EmptyResponse, ExportSessionRequest_unstable, ExportSessionResponse_unstable, ExportSourceRequest_unstable, ExportSourceResponse_unstable, ExtRequest, ExtResponse, GetExtensionsRequest_unstable, GetExtensionsResponse_unstable, GetSessionExtensionsRequest_unstable, GetSessionExtensionsResponse_unstable, GetToolsRequest_unstable, GetToolsResponse_unstable, GooseToolCallRequest_unstable, GooseToolCallResponse_unstable, ImportSessionRequest_unstable, ImportSessionResponse_unstable, ImportSourcesRequest_unstable, ImportSourcesResponse_unstable, ListProvidersRequest_unstable, ListProvidersResponse_unstable, ListSourcesRequest_unstable, ListSourcesResponse_unstable, OnboardingImportApplyRequest_unstable, OnboardingImportApplyResponse_unstable, OnboardingImportCandidate, OnboardingImportCounts, OnboardingImportScanRequest_unstable, OnboardingImportScanResponse_unstable, OnboardingImportSourceKind, PreferenceKey, PreferencesReadRequest_unstable, PreferencesReadResponse_unstable, PreferencesRemoveRequest_unstable, PreferencesSaveRequest_unstable, PreferenceValue, ProviderCatalogListRequest_unstable, ProviderCatalogListResponse_unstable, ProviderCatalogTemplateRequest_unstable, ProviderCatalogTemplateResponse_unstable, ProviderConfigAuthenticateRequest_unstable, ProviderConfigChangeResponse_unstable, ProviderConfigDeleteRequest_unstable, ProviderConfigFieldUpdate, ProviderConfigFieldValueDto, ProviderConfigKey, ProviderConfigReadRequest_unstable, ProviderConfigReadResponse_unstable, ProviderConfigSaveRequest_unstable, ProviderConfigStatusDto, ProviderConfigStatusRequest_unstable, ProviderConfigStatusResponse_unstable, ProviderInventoryEntryDto, ProviderInventoryModelDto, ProviderSetupCatalogEntryDto, ProviderSetupCatalogListRequest_unstable, ProviderSetupCatalogListResponse_unstable, ProviderSetupCategoryDto, ProviderSetupFieldDto, ProviderSetupGroupDto, ProviderSetupMethodDto, ProviderSupportedModelsListRequest_unstable, ProviderSupportedModelsListResponse_unstable, ProviderTemplateCapabilitiesDto, ProviderTemplateCatalogEntryDto, ProviderTemplateDto, ProviderTemplateModelDto, ReadResourceRequest_unstable, ReadResourceResponse_unstable, RefreshProviderInventoryRequest_unstable, RefreshProviderInventoryResponse_unstable, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigExtensionRequest_unstable, RemoveExtensionRequest_unstable, RenameSessionRequest_unstable, SessionSystemPromptMode, SetSessionSystemPromptRequest_unstable, SourceEntry, SourceScope, SourceType, ToggleConfigExtensionRequest_unstable, UnarchiveSessionRequest_unstable, UpdateSessionProjectRequest_unstable, UpdateSourceRequest_unstable, UpdateSourceResponse_unstable, UpdateWorkingDirRequest_unstable } from './types.gen.js';
export type { AddConfigExtensionRequest_unstable, AddExtensionRequest_unstable, ArchiveSessionRequest_unstable, CreateSourceRequest_unstable, CreateSourceResponse_unstable, CustomProviderConfigDto, CustomProviderCreateRequest_unstable, CustomProviderCreateResponse_unstable, CustomProviderDeleteRequest_unstable, CustomProviderDeleteResponse_unstable, CustomProviderReadRequest_unstable, CustomProviderReadResponse_unstable, CustomProviderUpdateRequest_unstable, CustomProviderUpdateResponse_unstable, DefaultsReadRequest_unstable, DefaultsReadResponse_unstable, DefaultsSaveRequest_unstable, DeleteSessionRequest, DeleteSourceRequest_unstable, DictationConfigRequest_unstable, DictationConfigResponse_unstable, DictationDownloadProgress, DictationLocalModelStatus, DictationModelCancelRequest_unstable, DictationModelDeleteRequest_unstable, DictationModelDownloadProgressRequest_unstable, DictationModelDownloadProgressResponse_unstable, DictationModelDownloadRequest_unstable, DictationModelOption, DictationModelSelectRequest_unstable, DictationModelsListRequest_unstable, DictationModelsListResponse_unstable, DictationProviderStatusEntry, DictationSecretDeleteRequest_unstable, DictationSecretSaveRequest_unstable, DictationTranscribeRequest_unstable, DictationTranscribeResponse_unstable, ElicitationRespondRequest_unstable, EmptyResponse, ExportSessionRequest_unstable, ExportSessionResponse_unstable, ExportSourceRequest_unstable, ExportSourceResponse_unstable, ExtNotification, ExtRequest, ExtResponse, GetExtensionsRequest_unstable, GetExtensionsResponse_unstable, GetSessionExtensionsRequest_unstable, GetSessionExtensionsResponse_unstable, GetToolsRequest_unstable, GetToolsResponse_unstable, GooseSessionNotification_unstable, GooseSessionUpdate, GooseToolCallRequest_unstable, GooseToolCallResponse_unstable, ImportSessionRequest_unstable, ImportSessionResponse_unstable, ImportSourcesRequest_unstable, ImportSourcesResponse_unstable, Interaction, InteractionState, InteractionUpdate, ListProvidersRequest_unstable, ListProvidersResponse_unstable, ListSourcesRequest_unstable, ListSourcesResponse_unstable, OnboardingImportApplyRequest_unstable, OnboardingImportApplyResponse_unstable, OnboardingImportCandidate, OnboardingImportCounts, OnboardingImportScanRequest_unstable, OnboardingImportScanResponse_unstable, OnboardingImportSourceKind, PreferenceKey, PreferencesReadRequest_unstable, PreferencesReadResponse_unstable, PreferencesRemoveRequest_unstable, PreferencesSaveRequest_unstable, PreferenceValue, ProviderCatalogListRequest_unstable, ProviderCatalogListResponse_unstable, ProviderCatalogTemplateRequest_unstable, ProviderCatalogTemplateResponse_unstable, ProviderConfigAuthenticateRequest_unstable, ProviderConfigChangeResponse_unstable, ProviderConfigDeleteRequest_unstable, ProviderConfigFieldUpdate, ProviderConfigFieldValueDto, ProviderConfigKey, ProviderConfigReadRequest_unstable, ProviderConfigReadResponse_unstable, ProviderConfigSaveRequest_unstable, ProviderConfigStatusDto, ProviderConfigStatusRequest_unstable, ProviderConfigStatusResponse_unstable, ProviderInventoryEntryDto, ProviderInventoryModelDto, ProviderSetupCatalogEntryDto, ProviderSetupCatalogListRequest_unstable, ProviderSetupCatalogListResponse_unstable, ProviderSetupCategoryDto, ProviderSetupFieldDto, ProviderSetupGroupDto, ProviderSetupMethodDto, ProviderSupportedModelsListRequest_unstable, ProviderSupportedModelsListResponse_unstable, ProviderTemplateCapabilitiesDto, ProviderTemplateCatalogEntryDto, ProviderTemplateDto, ProviderTemplateModelDto, ReadResourceRequest_unstable, ReadResourceResponse_unstable, RefreshProviderInventoryRequest_unstable, RefreshProviderInventoryResponse_unstable, RefreshProviderInventorySkipDto, RefreshProviderInventorySkipReasonDto, RemoveConfigExtensionRequest_unstable, RemoveExtensionRequest_unstable, RenameSessionRequest_unstable, SessionSystemPromptMode, SessionUsageUpdate, SetSessionSystemPromptRequest_unstable, SourceEntry, SourceScope, SourceType, StatusMessage, StatusMessageUpdate, ToggleConfigExtensionRequest_unstable, UnarchiveSessionRequest_unstable, UpdateSessionProjectRequest_unstable, UpdateSourceRequest_unstable, UpdateSourceResponse_unstable, UpdateWorkingDirRequest_unstable } from './types.gen.js';
export const GOOSE_EXT_METHODS = [
{
@@ -188,6 +188,11 @@ export const GOOSE_EXT_METHODS = [
requestType: "ImportSessionRequest_unstable",
responseType: "ImportSessionResponse_unstable",
},
{
method: "_goose/unstable/elicitation/respond",
requestType: "ElicitationRespondRequest_unstable",
responseType: "EmptyResponse",
},
{
method: "_goose/unstable/session/project/update",
requestType: "UpdateSessionProjectRequest_unstable",
@@ -291,3 +296,12 @@ export const GOOSE_EXT_METHODS = [
] as const;
export type GooseExtMethod = (typeof GOOSE_EXT_METHODS)[number];
export const GOOSE_EXT_NOTIFICATIONS = [
{
method: "_goose/unstable/session/update",
paramsType: "GooseSessionNotification_unstable",
},
] as const;
export type GooseExtNotification = (typeof GOOSE_EXT_NOTIFICATIONS)[number];
+84 -1
View File
@@ -743,6 +743,15 @@ export type ImportSessionResponse_unstable = {
messageCount: number;
};
/**
* Submit a response for a pending MCP elicitation in an active session.
*/
export type ElicitationRespondRequest_unstable = {
sessionId: string;
elicitationId: string;
userData?: unknown;
};
/**
* Update the project association for a session.
*/
@@ -1087,10 +1096,77 @@ export type DictationModelSelectRequest_unstable = {
modelId: string;
};
/**
* Goose-custom session update notification — a parallel to ACP's
* `session/update` carrying goose-specific update variants.
*/
export type GooseSessionNotification_unstable = {
sessionId: string;
update: GooseSessionUpdate;
};
/**
* Discriminated union of goose-specific session update payloads.
* Variant tag matches ACP's convention (`sessionUpdate: "<snake_case>"`).
*
* `discriminator.mapping` is what makes TS codegen (`@hey-api/openapi-ts`)
* emit the correct snake_case tag value even when this enum has a single
* variant. Add a mapping entry per variant.
*/
export type GooseSessionUpdate = ({
sessionUpdate: 'usage_update';
} & SessionUsageUpdate) | ({
sessionUpdate: 'status_message';
} & StatusMessageUpdate) | ({
sessionUpdate: 'interaction_update';
} & InteractionUpdate);
/**
* Streaming context-window usage update for a session.
*/
export type SessionUsageUpdate = {
used: number;
contextLimit: number;
accumulatedInputTokens: number;
accumulatedOutputTokens: number;
accumulatedCost?: number | null;
};
export type StatusMessage = {
message: string;
type: 'notice';
} | {
message: string;
type: 'progress';
};
/**
* Live UI/session status. This is not conversation transcript content, and
* should not be persisted or replayed as history.
*/
export type StatusMessageUpdate = {
status: StatusMessage;
};
export type Interaction = {
id: string;
state: InteractionState;
message?: string | null;
requestedSchema?: unknown;
type: 'elicitation';
};
export type InteractionState = 'pending' | 'submitted';
export type InteractionUpdate = {
interaction: Interaction;
_meta?: unknown;
};
export type ExtRequest = {
id: string;
method: string;
params?: AddExtensionRequest_unstable | RemoveExtensionRequest_unstable | GetToolsRequest_unstable | GooseToolCallRequest_unstable | ReadResourceRequest_unstable | UpdateWorkingDirRequest_unstable | SetSessionSystemPromptRequest_unstable | DeleteSessionRequest | GetExtensionsRequest_unstable | AddConfigExtensionRequest_unstable | RemoveConfigExtensionRequest_unstable | ToggleConfigExtensionRequest_unstable | GetSessionExtensionsRequest_unstable | ListProvidersRequest_unstable | ProviderSupportedModelsListRequest_unstable | ProviderCatalogListRequest_unstable | ProviderSetupCatalogListRequest_unstable | ProviderCatalogTemplateRequest_unstable | CustomProviderCreateRequest_unstable | CustomProviderReadRequest_unstable | CustomProviderUpdateRequest_unstable | CustomProviderDeleteRequest_unstable | RefreshProviderInventoryRequest_unstable | ProviderConfigReadRequest_unstable | ProviderConfigStatusRequest_unstable | ProviderConfigSaveRequest_unstable | ProviderConfigDeleteRequest_unstable | ProviderConfigAuthenticateRequest_unstable | PreferencesReadRequest_unstable | PreferencesSaveRequest_unstable | PreferencesRemoveRequest_unstable | DefaultsReadRequest_unstable | DefaultsSaveRequest_unstable | OnboardingImportScanRequest_unstable | OnboardingImportApplyRequest_unstable | ExportSessionRequest_unstable | ImportSessionRequest_unstable | UpdateSessionProjectRequest_unstable | RenameSessionRequest_unstable | ArchiveSessionRequest_unstable | UnarchiveSessionRequest_unstable | CreateSourceRequest_unstable | ListSourcesRequest_unstable | UpdateSourceRequest_unstable | DeleteSourceRequest_unstable | ExportSourceRequest_unstable | ImportSourcesRequest_unstable | DictationTranscribeRequest_unstable | DictationConfigRequest_unstable | DictationSecretSaveRequest_unstable | DictationSecretDeleteRequest_unstable | DictationModelsListRequest_unstable | DictationModelDownloadRequest_unstable | DictationModelDownloadProgressRequest_unstable | DictationModelCancelRequest_unstable | DictationModelDeleteRequest_unstable | DictationModelSelectRequest_unstable | {
params?: AddExtensionRequest_unstable | RemoveExtensionRequest_unstable | GetToolsRequest_unstable | GooseToolCallRequest_unstable | ReadResourceRequest_unstable | UpdateWorkingDirRequest_unstable | SetSessionSystemPromptRequest_unstable | DeleteSessionRequest | GetExtensionsRequest_unstable | AddConfigExtensionRequest_unstable | RemoveConfigExtensionRequest_unstable | ToggleConfigExtensionRequest_unstable | GetSessionExtensionsRequest_unstable | ListProvidersRequest_unstable | ProviderSupportedModelsListRequest_unstable | ProviderCatalogListRequest_unstable | ProviderSetupCatalogListRequest_unstable | ProviderCatalogTemplateRequest_unstable | CustomProviderCreateRequest_unstable | CustomProviderReadRequest_unstable | CustomProviderUpdateRequest_unstable | CustomProviderDeleteRequest_unstable | RefreshProviderInventoryRequest_unstable | ProviderConfigReadRequest_unstable | ProviderConfigStatusRequest_unstable | ProviderConfigSaveRequest_unstable | ProviderConfigDeleteRequest_unstable | ProviderConfigAuthenticateRequest_unstable | PreferencesReadRequest_unstable | PreferencesSaveRequest_unstable | PreferencesRemoveRequest_unstable | DefaultsReadRequest_unstable | DefaultsSaveRequest_unstable | OnboardingImportScanRequest_unstable | OnboardingImportApplyRequest_unstable | ExportSessionRequest_unstable | ImportSessionRequest_unstable | ElicitationRespondRequest_unstable | UpdateSessionProjectRequest_unstable | RenameSessionRequest_unstable | ArchiveSessionRequest_unstable | UnarchiveSessionRequest_unstable | CreateSourceRequest_unstable | ListSourcesRequest_unstable | UpdateSourceRequest_unstable | DeleteSourceRequest_unstable | ExportSourceRequest_unstable | ImportSourcesRequest_unstable | DictationTranscribeRequest_unstable | DictationConfigRequest_unstable | DictationSecretSaveRequest_unstable | DictationSecretDeleteRequest_unstable | DictationModelsListRequest_unstable | DictationModelDownloadRequest_unstable | DictationModelDownloadProgressRequest_unstable | DictationModelCancelRequest_unstable | DictationModelDeleteRequest_unstable | DictationModelSelectRequest_unstable | {
[key: string]: unknown;
} | null;
};
@@ -1106,3 +1182,10 @@ export type ExtResponse = {
};
id: string;
};
export type ExtNotification = {
method: string;
params?: GooseSessionNotification_unstable | {
[key: string]: unknown;
} | null;
};
+101
View File
@@ -760,6 +760,15 @@ export const zImportSessionResponse_unstable = z.object({
messageCount: z.number().int().gte(0)
});
/**
* Submit a response for a pending MCP elicitation in an active session.
*/
export const zElicitationRespondRequest_unstable = z.object({
sessionId: z.string(),
elicitationId: z.string(),
userData: z.unknown().optional().default(null)
});
/**
* Update the project association for a session.
*/
@@ -1088,6 +1097,86 @@ export const zDictationModelSelectRequest_unstable = z.object({
modelId: z.string()
});
/**
* Streaming context-window usage update for a session.
*/
export const zSessionUsageUpdate = z.object({
used: z.number().int().gte(0),
contextLimit: z.number().int().gte(0),
accumulatedInputTokens: z.number().int().gte(0),
accumulatedOutputTokens: z.number().int().gte(0),
accumulatedCost: z.union([
z.number(),
z.null()
]).optional()
});
export const zStatusMessage = z.union([
z.object({
message: z.string(),
type: z.literal('notice')
}),
z.object({
message: z.string(),
type: z.literal('progress')
})
]);
/**
* Live UI/session status. This is not conversation transcript content, and
* should not be persisted or replayed as history.
*/
export const zStatusMessageUpdate = z.object({
status: zStatusMessage
});
export const zInteractionState = z.enum(['pending', 'submitted']);
export const zInteraction = z.object({
id: z.string(),
state: zInteractionState,
message: z.union([
z.string(),
z.null()
]).optional(),
requestedSchema: z.unknown().optional(),
type: z.literal('elicitation')
});
export const zInteractionUpdate = z.object({
interaction: zInteraction,
_meta: z.unknown().optional()
});
/**
* Discriminated union of goose-specific session update payloads.
* Variant tag matches ACP's convention (`sessionUpdate: "<snake_case>"`).
*
* `discriminator.mapping` is what makes TS codegen (`@hey-api/openapi-ts`)
* emit the correct snake_case tag value even when this enum has a single
* variant. Add a mapping entry per variant.
*/
export const zGooseSessionUpdate = z.union([
z.object({
sessionUpdate: z.literal('usage_update')
}).and(zSessionUsageUpdate),
z.object({
sessionUpdate: z.literal('status_message')
}).and(zStatusMessageUpdate),
z.object({
sessionUpdate: z.literal('interaction_update')
}).and(zInteractionUpdate)
]);
/**
* Goose-custom session update notification — a parallel to ACP's
* `session/update` carrying goose-specific update variants.
*/
export const zGooseSessionNotification_unstable = z.object({
sessionId: z.string(),
update: zGooseSessionUpdate
});
export const zExtRequest = z.object({
id: z.string(),
method: z.string(),
@@ -1130,6 +1219,7 @@ export const zExtRequest = z.object({
zOnboardingImportApplyRequest_unstable,
zExportSessionRequest_unstable,
zImportSessionRequest_unstable,
zElicitationRespondRequest_unstable,
zUpdateSessionProjectRequest_unstable,
zRenameSessionRequest_unstable,
zArchiveSessionRequest_unstable,
@@ -1210,3 +1300,14 @@ export const zExtResponse = z.union([
id: z.string()
})
]);
export const zExtNotification = z.object({
method: z.string(),
params: z.union([
zGooseSessionNotification_unstable,
z.union([
z.record(z.unknown()),
z.null()
])
]).optional()
});
+12 -4
View File
@@ -1,6 +1,5 @@
import {
ClientSideConnection,
type Client,
type Stream,
type InitializeRequest,
type InitializeResponse,
@@ -26,19 +25,28 @@ import {
type SetSessionModelRequest,
type SetSessionModelResponse,
} from "@agentclientprotocol/sdk";
import { GooseExtClient } from "./generated/client.gen.js";
import {
GooseExtClient,
installGooseExtNotificationDispatcher,
type GooseClientCallbacks,
} from "./generated/client.gen.js";
import { createHttpStream } from "./http-stream.js";
export class GooseClient {
private conn: ClientSideConnection;
private ext: GooseExtClient;
constructor(toClient: () => Client, streamOrUrl: Stream | string) {
constructor(
toClient: () => GooseClientCallbacks,
streamOrUrl: Stream | string,
) {
const stream =
typeof streamOrUrl === "string"
? createHttpStream(streamOrUrl)
: streamOrUrl;
this.conn = new ClientSideConnection(toClient, stream);
const toAcpClient = () =>
installGooseExtNotificationDispatcher(toClient());
this.conn = new ClientSideConnection(toAcpClient, stream);
this.ext = new GooseExtClient(this.conn);
}
+4
View File
@@ -1,5 +1,9 @@
export * from "./generated/types.gen.js";
export * from "./generated/zod.gen.js";
export {
type GooseClientCallbacks,
type GooseExtNotifications,
} from "./generated/client.gen.js";
export { GooseClient } from "./goose-client.js";
export { createHttpStream } from "./http-stream.js";
export * from "./mcp-apps.js";