<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<groupId>cloud.anypoint</groupId>
	<artifactId>mule-aichain-connector</artifactId>
	<version>1.2.0</version>
	<packaging>mule-extension</packaging>
	<name>MuleSoft AI Chain Connector - Mule 4</name>
	<description>The MuleSoft AI Chain Connector is designed to help developers easily build and manage AI-driven agents within the MuleSoft Anypoint Platform. It provides the tools and support needed to integrate Large Language Models (LLMs), embeddings, and other advanced AI services into MuleSoft applications.</description>
	<url>https://github.com/anypointcloud/mulesoft-ai-chain-connector</url>
	<licenses>
		<license>
			<name>MIT License</name>
			<url>https://www.opensource.org/licenses/mit-license.php</url>
		</license>
	</licenses>
	<developers>
		<developer>
			<name>Amir Khan</name>
			<email>amir.khan@mulesoft.com</email>
			<organization>Salesforce</organization>
			<organizationUrl>https://www.mulesoft.com</organizationUrl>
		</developer>
		<developer>
			<name>Arpit Gupta</name>
			<email>gupta.arpit@salesforce.com</email>
			<organization>Salesforce</organization>
			<organizationUrl>https://www.mulesoft.com</organizationUrl>
		</developer>
		<developer>
			<name>Dipesh Kumar Dutta</name>
			<email>dipeshkumar.dutta@salesforce.com</email>
			<organization>Salesforce</organization>
			<organizationUrl>https://www.salesforce.com</organizationUrl>
		</developer>
		<developer>
			<name>Mihael Bosnjak</name>
			<email>mihael@bosnjak.io</email>
			<organization>Salesforce</organization>
			<organizationUrl>https://www.salesforce.com</organizationUrl>
		</developer>
		<developer>
			<name>Ryan Hoegg</name>
			<email>ryan@hoegg.software</email>
			<organization>Hoegg Software, Co.</organization>
			<organizationUrl>https://hoegg.software</organizationUrl>
		</developer>
	</developers>

	<parent>
		<groupId>org.mule.extensions</groupId>
		<artifactId>mule-modules-parent</artifactId>
		<version>1.3.2</version>
	</parent>
	
    <properties>
        <muleJavaEeBomVersion>4.6.0</muleJavaEeBomVersion>
		<formatterConfigPath>formatter.xml</formatterConfigPath>
		<javaFormatter.plugin.version>2.0.1</javaFormatter.plugin.version>
		<formatterGoal>validate</formatterGoal>
		<slf4jApi.version>2.0.7</slf4jApi.version>
		<mule.sdk.api.version>0.9.0-rc1</mule.sdk.api.version>
		<langchain4j.version>0.35.0</langchain4j.version> <!-- upgrade to support tools in Ollama -->
		<mapdb.version>3.1.0</mapdb.version>
		<json.version>20240303</json.version>
		<munit.input.directory>src/test/munit</munit.input.directory>
		<munit.output.directory>${basedir}/target/test-mule/munit</munit.output.directory>
		<munit.extensions.maven.plugin.version>1.2.0</munit.extensions.maven.plugin.version>
		<jacoco.version>0.8.12</jacoco.version>
		<maven.surefire.version>2.22.2</maven.surefire.version>
    </properties>

	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jdeps-plugin</artifactId>
				<version>3.1.2</version>
				<executions>
					<execution>
						<goals>
							<goal>jdkinternals</goal> <!-- verify main classes -->
							<goal>test-jdkinternals</goal> <!-- verify test classes -->
						</goals>
					</execution>
				</executions>
				<configuration>
					<failOnWarning>true</failOnWarning>
				</configuration>
			</plugin>
			<plugin>
				<groupId>net.revelc.code.formatter</groupId>
				<artifactId>formatter-maven-plugin</artifactId>
				<version>${javaFormatter.plugin.version}</version>
				<configuration>
					<compilerCompliance>${javaVersion}</compilerCompliance>
					<compilerSource>${javaVersion}</compilerSource>
					<compilerTargetPlatform>${javaVersion}</compilerTargetPlatform>
					<configFile>${basedir}/${formatterConfigPath}</configFile>
					<configJsFile>${basedir}/${formatterConfigPath}</configJsFile>
					<aggregator>false</aggregator>
					<executionRoot>true</executionRoot>
				</configuration>
				<executions>
					<execution>
						<id>apply-format</id>
						<phase>compile</phase>
						<goals>
							<goal>${formatterGoal}</goal>
						</goals>
						<configuration>
							<skipFormatting>${skipVerifications}</skipFormatting>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>com.mulesoft.munit</groupId>
				<artifactId>munit-extensions-maven-plugin</artifactId>
				<version>${munit.extensions.maven.plugin.version}</version>
				<extensions>true</extensions>
				<configuration>
					<argLines>
						<argLine>
							-javaagent:${settings.localRepository}/org/jacoco/org.jacoco.agent/${jacoco.version}/org.jacoco.agent-${jacoco.version}-runtime.jar=destfile=${session.executionRootDirectory}/target/jacoco.exec,includes=org/mule/extension/mulechain/**
						</argLine>
					</argLines>
					<sharedLibraries>
						<sharedLibrary>
							<groupId>org.jsoup</groupId>
							<artifactId>jsoup</artifactId>
						</sharedLibrary>
					</sharedLibraries>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
						<version>${jacoco.version}</version>
					</dependency>
				</dependencies>
				<executions>
					<execution>
						<goals>
							<goal>test</goal>
						</goals>
						<phase>integration-test</phase>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>${maven.surefire.version}</version>
				<configuration>
					<argLine>-Dfile.encoding=UTF-8</argLine>
					<argLine>
						-javaagent:${settings.localRepository}/org/jacoco/org.jacoco.agent/${jacoco.version}/org.jacoco.agent-${jacoco.version}-runtime.jar=destfile=${session.executionRootDirectory}/target/jacoco.exec
					</argLine>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.jacoco</groupId>
						<artifactId>jacoco-maven-plugin</artifactId>
						<version>${jacoco.version}</version>
					</dependency>
				</dependencies>
			</plugin>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>${jacoco.version}</version>
				<executions>
					<execution>
						<id>jacoco-initialize</id>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
					</execution>
					<execution>
						<id>jacoco-site</id>
						<phase>verify</phase>
						<goals>
							<goal>report</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.mule</groupId>
                <artifactId>mule-javaee-runtime-bom</artifactId>
                <version>${muleJavaEeBomVersion}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.mule.sdk</groupId>
            <artifactId>mule-sdk-api</artifactId>
            <version>${mule.sdk.api.version}</version>
        </dependency> 
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-open-ai</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${slf4jApi.version}</version>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j</artifactId>
			<version>${langchain4j.version}</version>
			<exclusions>
				<exclusion>
					<artifactId>jsoup</artifactId>
					<groupId>org.jsoup</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-mistral-ai</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>

		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-hugging-face</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>
		<dependency>
			<groupId>org.mapdb</groupId>
			<artifactId>mapdb</artifactId>
			<version>${mapdb.version}</version>
			<exclusions>
				<exclusion>
					<groupId>org.jetbrains.kotlin</groupId>
					<artifactId>kotlin-stdlib</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.json</groupId>
			<artifactId>json</artifactId>
			<version>${json.version}</version>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-document-parser-apache-tika</artifactId>
			<version>${langchain4j.version}</version>
			<exclusions>
				<exclusion>
					<artifactId>log4j-api</artifactId>
					<groupId>org.apache.logging.log4j</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-ollama</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-anthropic</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-azure-open-ai</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-google-ai-gemini</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>
		<dependency>
			<groupId>dev.langchain4j</groupId>
			<artifactId>langchain4j-easy-rag</artifactId>
			<version>${langchain4j.version}</version>
		</dependency>
		<dependency>
			<groupId>io.reactivex.rxjava2</groupId>
			<artifactId>rxjava</artifactId>
			<version>2.2.21</version>
		</dependency>
		<dependency>
			<groupId>com.mulesoft.munit</groupId>
			<artifactId>munit-runner</artifactId>
			<version>3.2.1</version>
			<classifier>mule-plugin</classifier>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.mulesoft.munit</groupId>
			<artifactId>munit-tools</artifactId>
			<version>3.2.1</version>
			<classifier>mule-plugin</classifier>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mule.weave</groupId>
			<artifactId>assertions</artifactId>
			<version>1.2.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<repositories>
		<repository>
			<id>mule-releases</id>
			<name>Nexus Public Releases</name>
			<url>https://repository-master.mulesoft.org/nexus/content/repositories/releases/</url>
		</repository>
	</repositories>

	<pluginRepositories>
		<pluginRepository>
			<id>mulesoft-releases</id>
			<name>mulesoft release repository</name>
			<layout>default</layout>
			<url>https://repository.mulesoft.org/releases/</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</pluginRepository>
	</pluginRepositories>

	<scm>
		<connection>scm:git:git@github.com:anypointcloud/mulesoft-ai-chain-connector.git</connection>
		<developerConnection>scm:git:git@github.com:anypointcloud/mulesoft-ai-chain-connector.git</developerConnection>
		<url>https://github.com/anypointcloud/mulesoft-ai-chain-connector</url>
		<tag>1.2.0</tag>
	</scm>

	<distributionManagement>
		<snapshotRepository>
			<id>ossrh</id>
			<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
		</snapshotRepository>
		<repository>
			<id>ossrh</id>
			<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
		</repository>
	</distributionManagement>
	<profiles>
		<profile>
			<id>release</id>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>3.1.0</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
								<configuration>
									<keyname>${gpg.keyname}</keyname>
									<passphraseServerId>${gpg.keyname}</passphraseServerId>
									<gpgArguments>
										<arg>--pinentry-mode</arg>
										<arg>loopback</arg>
									</gpgArguments>
								</configuration>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-source-plugin</artifactId>
						<version>2.2.1</version>
						<executions>
							<execution>
								<id>attach-sources</id>
								<goals>
									<goal>jar-no-fork</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<version>3.0.1</version>
						<executions>
							<execution>
								<id>attach-javadocs</id>
								<goals>
									<goal>jar</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
</project>
