Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions docs/configuration/settings.md

Large diffs are not rendered by default.

99 changes: 87 additions & 12 deletions externals/kyuubi-data-agent-engine/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,15 @@
<name>Kyuubi Project Engine Data Agent</name>
<url>https://kyuubi.apache.org/</url>

<properties>
<!-- Versions transitively pulled by openai-java; pinned here so any drift
across openai-java upgrades is a deliberate change. -->
<kotlin.stdlib.version>1.8.0</kotlin.stdlib.version>
<kotlin.reflect.version>2.0.21</kotlin.reflect.version>
<okhttp.version>4.12.0</okhttp.version>
<okio.version>3.6.0</okio.version>
</properties>

<dependencies>
<!-- kyuubi dependency -->
<dependency>
Expand All @@ -50,45 +59,111 @@
<version>${project.version}</version>
</dependency>

<!-- OpenAI official Java SDK -->
Comment thread
wangzhigang1999 marked this conversation as resolved.
<dependency>
<groupId>com.openai</groupId>
<artifactId>openai-java</artifactId>
<version>${openai.sdk.version}</version>
</dependency>

<!-- kotlin / okhttp / okio versions transitively introduced by openai-java; pinned for visibility. -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.stdlib.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-common</artifactId>
<version>${kotlin.stdlib.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk7</artifactId>
<version>${kotlin.stdlib.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>${kotlin.stdlib.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>${kotlin.reflect.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>${okhttp.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>logging-interceptor</artifactId>
<version>${okhttp.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio</artifactId>
<version>${okio.version}</version>
</dependency>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio-jvm</artifactId>
<version>${okio.version}</version>
</dependency>

<!-- JSON Schema generation from Jackson-annotated classes -->
<dependency>
<groupId>com.github.victools</groupId>
<artifactId>jsonschema-generator</artifactId>
<version>${victools.jsonschema.version}</version>
</dependency>

<dependency>
<groupId>com.github.victools</groupId>
<artifactId>jsonschema-module-jackson</artifactId>
<version>${victools.jsonschema.version}</version>
</dependency>

<!-- test dependencies -->
<!-- JDBC drivers are not bundled; users provide them at runtime via extra classpath.
SQLite and MySQL drivers are kept here in test scope only. -->
<dependency>
<groupId>org.apache.kyuubi</groupId>
<artifactId>kyuubi-common_${scala.binary.version}</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>${sqlite.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
Comment thread
wangzhigang1999 marked this conversation as resolved.
<scope>test</scope>
</dependency>

<!-- Trino JDBC driver -->
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-mysql</artifactId>
<groupId>io.trino</groupId>
<artifactId>trino-jdbc</artifactId>
</dependency>

<!-- Connection pool -->
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>

<!-- test dependencies -->
<dependency>
<groupId>org.apache.kyuubi</groupId>
<artifactId>kyuubi-common_${scala.binary.version}</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers-mysql</artifactId>
<scope>test</scope>
</dependency>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@

package org.apache.kyuubi.engine.dataagent.datasource;

import org.apache.kyuubi.engine.dataagent.datasource.dialect.GenericDialect;
import org.apache.kyuubi.engine.dataagent.datasource.dialect.MySQLDialect;
import org.apache.kyuubi.engine.dataagent.datasource.dialect.SQLiteDialect;
import org.apache.kyuubi.engine.dataagent.datasource.dialect.SparkDialect;
import org.apache.kyuubi.engine.dataagent.datasource.dialect.TrinoDialect;

/**
* SQL dialect abstraction for datasource-specific SQL generation.
*
Expand Down Expand Up @@ -83,9 +89,9 @@ static JdbcDialect fromUrl(String jdbcUrl) {
case "trino":
return TrinoDialect.INSTANCE;
case "mysql":
return MysqlDialect.INSTANCE;
return MySQLDialect.INSTANCE;
case "sqlite":
return SqliteDialect.INSTANCE;
return SQLiteDialect.INSTANCE;
default:
return new GenericDialect(name);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
* limitations under the License.
*/

package org.apache.kyuubi.engine.dataagent.datasource;
package org.apache.kyuubi.engine.dataagent.datasource.dialect;

import org.apache.kyuubi.engine.dataagent.datasource.JdbcDialect;

/**
* Fallback dialect for JDBC subprotocols that have no dedicated implementation. Carries the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@
* limitations under the License.
*/

package org.apache.kyuubi.engine.dataagent.datasource;
package org.apache.kyuubi.engine.dataagent.datasource.dialect;

import org.apache.kyuubi.engine.dataagent.datasource.JdbcDialect;

/** MySQL dialect. Uses backtick quoting for identifiers. */
public final class MysqlDialect implements JdbcDialect {
public final class MySQLDialect implements JdbcDialect {

static final MysqlDialect INSTANCE = new MysqlDialect();
public static final MySQLDialect INSTANCE = new MySQLDialect();

private MysqlDialect() {}
private MySQLDialect() {}

@Override
public String datasourceName() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@
* limitations under the License.
*/

package org.apache.kyuubi.engine.dataagent.datasource;
package org.apache.kyuubi.engine.dataagent.datasource.dialect;

import org.apache.kyuubi.engine.dataagent.datasource.JdbcDialect;

/** SQLite dialect. Uses double-quote quoting for identifiers. */
public final class SqliteDialect implements JdbcDialect {
public final class SQLiteDialect implements JdbcDialect {

static final SqliteDialect INSTANCE = new SqliteDialect();
public static final SQLiteDialect INSTANCE = new SQLiteDialect();

private SqliteDialect() {}
private SQLiteDialect() {}

@Override
public String datasourceName() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@
* limitations under the License.
*/

package org.apache.kyuubi.engine.dataagent.datasource;
package org.apache.kyuubi.engine.dataagent.datasource.dialect;

import org.apache.kyuubi.engine.dataagent.datasource.JdbcDialect;

/** Spark SQL dialect. Uses backtick quoting for identifiers. */
public final class SparkDialect implements JdbcDialect {

static final SparkDialect INSTANCE = new SparkDialect();
public static final SparkDialect INSTANCE = new SparkDialect();

private SparkDialect() {}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,14 @@
* limitations under the License.
*/

package org.apache.kyuubi.engine.dataagent.datasource;
package org.apache.kyuubi.engine.dataagent.datasource.dialect;

import org.apache.kyuubi.engine.dataagent.datasource.JdbcDialect;

/** Trino SQL dialect. Uses double-quote quoting for identifiers. */
public final class TrinoDialect implements JdbcDialect {

static final TrinoDialect INSTANCE = new TrinoDialect();
public static final TrinoDialect INSTANCE = new TrinoDialect();

private TrinoDialect() {}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,23 @@

package org.apache.kyuubi.engine.dataagent.provider;

import org.apache.kyuubi.engine.dataagent.runtime.ApprovalMode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* User-facing request parameters for a provider-level agent invocation. Only contains fields from
* the caller (question, model override, etc.). Adding new per-request options does not require
* changing the {@link DataAgentProvider} interface.
*
* <p>The approval mode is accepted as a raw string (natural for config-driven callers) and parsed
* into {@link ApprovalMode} by {@link #getApprovalMode()}. Unrecognised values fall back to {@link
* ApprovalMode#NORMAL} with a warning.
*/
public class ProviderRunRequest {

private static final Logger LOG = LoggerFactory.getLogger(ProviderRunRequest.class);

private final String question;
private String modelName;
private String approvalMode;
Expand All @@ -45,8 +55,20 @@ public ProviderRunRequest modelName(String modelName) {
return this;
}

public String getApprovalMode() {
return approvalMode;
/**
* Resolved approval mode. Returns {@link ApprovalMode#NORMAL} when the caller did not set one or
* supplied an unknown value.
*/
public ApprovalMode getApprovalMode() {
if (approvalMode == null || approvalMode.isEmpty()) {
return ApprovalMode.NORMAL;
}
try {
return ApprovalMode.valueOf(approvalMode.toUpperCase());
} catch (IllegalArgumentException e) {
LOG.warn("Unknown approval mode '{}', using default NORMAL", approvalMode);
return ApprovalMode.NORMAL;
}
}

public ProviderRunRequest approvalMode(String approvalMode) {
Expand Down
Loading
Loading