type AiPluginManifest = {
  schema_version: string;
  name_for_human: string;
  name_for_model: string;
  description_for_human: string;
  description_for_model: string;
  auth: {
    type: string;
  };
  api: {
    type: string;
    url: string;
  };
  logo_url: string;
  contact_email: string;
  legal_info_url: string;
};

export const buildAiPluginManifest = (baseUrl: string): AiPluginManifest | null => {
  const env = process.env;
  const openApiUrl = env.AI_PLUGIN_OPENAPI_URL || `${baseUrl}/openapi.json`;
  const nameForHuman = env.AI_PLUGIN_NAME_FOR_HUMAN;
  const nameForModel = env.AI_PLUGIN_NAME_FOR_MODEL;
  const descHuman = env.AI_PLUGIN_DESCRIPTION_FOR_HUMAN;
  const descModel = env.AI_PLUGIN_DESCRIPTION_FOR_MODEL;
  const logoUrl = env.AI_PLUGIN_LOGO_URL || `${baseUrl}/logo.png`;
  const contactEmail = env.AI_PLUGIN_CONTACT_EMAIL;
  const legalUrl = env.AI_PLUGIN_LEGAL_INFO_URL || `${baseUrl}/legal`;

  if (!nameForHuman || !nameForModel || !descHuman || !descModel || !contactEmail) {
    return null;
  }

  return {
    schema_version: "v1",
    name_for_human: nameForHuman,
    name_for_model: nameForModel,
    description_for_human: descHuman,
    description_for_model: descModel,
    auth: { type: "none" },
    api: {
      type: "openapi",
      url: openApiUrl
    },
    logo_url: logoUrl,
    contact_email: contactEmail,
    legal_info_url: legalUrl
  };
};
