chore(framework): reorganize Partner-Framework

This commit is contained in:
2026-04-06 20:16:51 +08:00
parent b1ba86be57
commit 8c04566243
152 changed files with 411 additions and 393 deletions

View File

@@ -1,12 +1,12 @@
package work.slhaf.partner.api.agent;
package work.slhaf.partner.framework.agent;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.AgentRegisterFactory;
import work.slhaf.partner.api.agent.runtime.config.AgentConfigLoader;
import work.slhaf.partner.api.agent.runtime.exception.AgentExceptionCallback;
import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException;
import work.slhaf.partner.api.agent.runtime.exception.GlobalExceptionHandler;
import work.slhaf.partner.api.agent.runtime.interaction.AgentGateway;
import work.slhaf.partner.framework.agent.config.AgentConfigLoader;
import work.slhaf.partner.framework.agent.exception.AgentExceptionCallback;
import work.slhaf.partner.framework.agent.exception.AgentLaunchFailedException;
import work.slhaf.partner.framework.agent.exception.GlobalExceptionHandler;
import work.slhaf.partner.framework.agent.factory.AgentRegisterFactory;
import work.slhaf.partner.framework.agent.interaction.AgentGateway;
import java.util.ArrayList;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.common.entity;
package work.slhaf.partner.framework.agent.common.entity;
import java.io.Serializable;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.common.support;
package work.slhaf.partner.framework.agent.common.support;
import lombok.extern.slf4j.Slf4j;

View File

@@ -1,9 +1,9 @@
package work.slhaf.partner.api.agent.runtime.config;
package work.slhaf.partner.framework.agent.config;
import lombok.Data;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig;
import work.slhaf.partner.framework.agent.factory.config.pojo.ModelConfig;
import java.util.HashMap;

View File

@@ -1,10 +1,10 @@
package work.slhaf.partner.api.agent.runtime.config
package work.slhaf.partner.framework.agent.config
import com.alibaba.fastjson2.JSON
import com.alibaba.fastjson2.JSONObject
import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException
import work.slhaf.partner.api.common.support.DirectoryWatchSupport
import work.slhaf.partner.framework.agent.common.support.DirectoryWatchSupport
import work.slhaf.partner.framework.agent.exception.AgentLaunchFailedException
import java.io.IOException
import java.lang.reflect.Field
import java.lang.reflect.Modifier

View File

@@ -1,11 +1,11 @@
package work.slhaf.partner.api.agent.runtime.config;
package work.slhaf.partner.framework.agent.config;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.partner.api.agent.factory.config.exception.ConfigDirNotExistException;
import work.slhaf.partner.api.agent.factory.config.exception.ConfigNotExistException;
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig;
import work.slhaf.partner.api.agent.factory.config.pojo.PrimaryModelConfig;
import work.slhaf.partner.framework.agent.factory.config.exception.ConfigDirNotExistException;
import work.slhaf.partner.framework.agent.factory.config.exception.ConfigNotExistException;
import work.slhaf.partner.framework.agent.factory.config.pojo.ModelConfig;
import work.slhaf.partner.framework.agent.factory.config.pojo.PrimaryModelConfig;
import java.io.File;
import java.nio.charset.StandardCharsets;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.config
package work.slhaf.partner.framework.agent.config
import java.nio.file.Files
import java.nio.file.Path

View File

@@ -1,7 +1,17 @@
package work.slhaf.partner.api.agent.runtime.config
package work.slhaf.partner.framework.agent.config
import net.bytebuddy.jar.asm.*
import java.lang.Byte
import java.lang.Double
import java.lang.Float
import java.lang.Long
import java.lang.Short
import java.lang.reflect.Field
import kotlin.Any
import kotlin.Boolean
import kotlin.Int
import kotlin.Metadata
import kotlin.String
import kotlin.reflect.KProperty1
internal fun Class<*>.isKotlinClass(): Boolean {
@@ -13,14 +23,14 @@ internal fun resolveDisplayType(type: Class<*>): String {
return "${resolveDisplayType(type.componentType)}[]"
}
return when (type) {
java.lang.Integer.TYPE, java.lang.Integer::class.java -> "Int"
java.lang.Long.TYPE, java.lang.Long::class.java -> "Long"
Integer.TYPE, Integer::class.java -> "Int"
Long.TYPE, Long::class.java -> "Long"
java.lang.Boolean.TYPE, java.lang.Boolean::class.java -> "Boolean"
java.lang.Double.TYPE, java.lang.Double::class.java -> "Double"
java.lang.Float.TYPE, java.lang.Float::class.java -> "Float"
java.lang.Short.TYPE, java.lang.Short::class.java -> "Short"
java.lang.Byte.TYPE, java.lang.Byte::class.java -> "Byte"
java.lang.Character.TYPE, java.lang.Character::class.java -> "Char"
Double.TYPE, Double::class.java -> "Double"
Float.TYPE, Float::class.java -> "Float"
Short.TYPE, Short::class.java -> "Short"
Byte.TYPE, Byte::class.java -> "Byte"
Character.TYPE, Character::class.java -> "Char"
String::class.java -> "String"
else -> type.simpleName
}
@@ -76,7 +86,7 @@ private fun resolveJavaFieldAnnotationNames(ownerType: Class<out Config>, field:
override fun visitTypeAnnotation(
typeRef: Int,
typePath: net.bytebuddy.jar.asm.TypePath?,
typePath: TypePath?,
descriptor: String,
visible: Boolean
): AnnotationVisitor? {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.exception;
package work.slhaf.partner.framework.agent.exception;
public interface AgentExceptionCallback {
void onRuntimeException(AgentRuntimeException e);

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.exception;
package work.slhaf.partner.framework.agent.exception;
public class AgentLaunchFailedException extends RuntimeException {
public AgentLaunchFailedException(String message, Throwable cause) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.exception;
package work.slhaf.partner.framework.agent.exception;
public class AgentRunningFailedException extends AgentRuntimeException {
public AgentRunningFailedException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.exception;
package work.slhaf.partner.framework.agent.exception;
public class AgentRuntimeException extends RuntimeException {
public AgentRuntimeException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.exception;
package work.slhaf.partner.framework.agent.exception;
import lombok.extern.slf4j.Slf4j;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.exception;
package work.slhaf.partner.framework.agent.exception;
import lombok.extern.slf4j.Slf4j;

View File

@@ -1,6 +1,6 @@
package work.slhaf.partner.api.agent.factory
package work.slhaf.partner.framework.agent.factory
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
/**
* 所有注册链工厂的统一抽象

View File

@@ -1,18 +1,18 @@
package work.slhaf.partner.api.agent.factory
package work.slhaf.partner.framework.agent.factory
import org.reflections.util.ClasspathHelper
import work.slhaf.partner.api.agent.factory.capability.CapabilityAnnotationValidatorFactory
import work.slhaf.partner.api.agent.factory.capability.CapabilityInjectorFactory
import work.slhaf.partner.api.agent.factory.capability.CapabilityRegisterFactory
import work.slhaf.partner.api.agent.factory.component.ComponentAnnotationValidatorFactory
import work.slhaf.partner.api.agent.factory.component.ComponentInitHookExecutorFactory
import work.slhaf.partner.api.agent.factory.component.ComponentInjectorFactory
import work.slhaf.partner.api.agent.factory.component.ComponentRegisterFactory
import work.slhaf.partner.api.agent.factory.config.ConfigLoaderFactory
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.api.agent.factory.context.ShutdownHookCollectorFactory
import work.slhaf.partner.api.agent.factory.exception.ExternalModuleLoadFailedException
import work.slhaf.partner.api.agent.factory.exception.ExternalModulePathNotExistException
import work.slhaf.partner.framework.agent.factory.capability.CapabilityAnnotationValidatorFactory
import work.slhaf.partner.framework.agent.factory.capability.CapabilityInjectorFactory
import work.slhaf.partner.framework.agent.factory.capability.CapabilityRegisterFactory
import work.slhaf.partner.framework.agent.factory.component.ComponentAnnotationValidatorFactory
import work.slhaf.partner.framework.agent.factory.component.ComponentInitHookExecutorFactory
import work.slhaf.partner.framework.agent.factory.component.ComponentInjectorFactory
import work.slhaf.partner.framework.agent.factory.component.ComponentRegisterFactory
import work.slhaf.partner.framework.agent.factory.config.ConfigLoaderFactory
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.factory.context.ShutdownHookCollectorFactory
import work.slhaf.partner.framework.agent.factory.exception.ExternalModuleLoadFailedException
import work.slhaf.partner.framework.agent.factory.exception.ExternalModulePathNotExistException
import java.io.File
import java.net.URL

View File

@@ -1,19 +1,19 @@
package work.slhaf.partner.api.agent.factory.capability
package work.slhaf.partner.framework.agent.factory.capability
import cn.hutool.core.util.ClassUtil
import org.reflections.Reflections
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.capability.annotation.Capability
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityCore
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityMethod
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability
import work.slhaf.partner.api.agent.factory.capability.exception.DuplicateCapabilityException
import work.slhaf.partner.api.agent.factory.capability.exception.UnMatchedCapabilityException
import work.slhaf.partner.api.agent.factory.capability.exception.UnMatchedCapabilityMethodException
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.api.agent.util.AgentUtil.isAssignableFromAnnotation
import work.slhaf.partner.api.agent.util.AgentUtil.methodSignature
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.capability.annotation.Capability
import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore
import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityMethod
import work.slhaf.partner.framework.agent.factory.capability.annotation.InjectCapability
import work.slhaf.partner.framework.agent.factory.capability.exception.DuplicateCapabilityException
import work.slhaf.partner.framework.agent.factory.capability.exception.UnMatchedCapabilityException
import work.slhaf.partner.framework.agent.factory.capability.exception.UnMatchedCapabilityMethodException
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.util.AgentUtil.isAssignableFromAnnotation
import work.slhaf.partner.framework.agent.util.AgentUtil.methodSignature
/**
* 校验 Capability 体系注解关系并将扫描结果写入 `CapabilityFactoryContext`

View File

@@ -1,11 +1,11 @@
package work.slhaf.partner.api.agent.factory.capability
package work.slhaf.partner.framework.agent.factory.capability
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.capability.annotation.Capability
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability
import work.slhaf.partner.api.agent.factory.capability.exception.CapabilityProxySetFailedException
import work.slhaf.partner.api.agent.factory.context.AgentContext
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.capability.annotation.Capability
import work.slhaf.partner.framework.agent.factory.capability.annotation.InjectCapability
import work.slhaf.partner.framework.agent.factory.capability.exception.CapabilityProxySetFailedException
import work.slhaf.partner.framework.agent.factory.context.AgentContext
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import java.lang.reflect.Field
import java.lang.reflect.Modifier

View File

@@ -1,14 +1,14 @@
package work.slhaf.partner.api.agent.factory.capability
package work.slhaf.partner.framework.agent.factory.capability
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.capability.annotation.Capability
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityCore
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityMethod
import work.slhaf.partner.api.agent.factory.capability.exception.CapabilityCoreInstancesCreateFailedException
import work.slhaf.partner.api.agent.factory.capability.exception.CapabilityFactoryExecuteFailedException
import work.slhaf.partner.api.agent.factory.capability.exception.DuplicateMethodException
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.api.agent.util.AgentUtil.methodSignature
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.capability.annotation.Capability
import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore
import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityMethod
import work.slhaf.partner.framework.agent.factory.capability.exception.CapabilityCoreInstancesCreateFailedException
import work.slhaf.partner.framework.agent.factory.capability.exception.CapabilityFactoryExecuteFailedException
import work.slhaf.partner.framework.agent.factory.capability.exception.DuplicateMethodException
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.util.AgentUtil.methodSignature
import java.lang.reflect.Method
import java.lang.reflect.Proxy
import java.util.function.Function

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.annotation;
package work.slhaf.partner.framework.agent.factory.capability.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.annotation;
package work.slhaf.partner.framework.agent.factory.capability.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.annotation;
package work.slhaf.partner.framework.agent.factory.capability.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -1,6 +1,6 @@
package work.slhaf.partner.api.agent.factory.capability.annotation;
package work.slhaf.partner.framework.agent.factory.capability.annotation;
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent;
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -1,6 +1,6 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException;
import work.slhaf.partner.framework.agent.exception.AgentLaunchFailedException;
public class CapabilityCheckFailedException extends AgentLaunchFailedException {
public CapabilityCheckFailedException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
public class CapabilityCoreInstancesCreateFailedException extends CapabilityFactoryExecuteFailedException {
public CapabilityCoreInstancesCreateFailedException(String message) {

View File

@@ -1,6 +1,6 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException;
import work.slhaf.partner.framework.agent.exception.AgentLaunchFailedException;
public class CapabilityFactoryExecuteFailedException extends AgentLaunchFailedException {
public CapabilityFactoryExecuteFailedException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
public class CapabilityProxySetFailedException extends CapabilityFactoryExecuteFailedException {
public CapabilityProxySetFailedException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
public class DuplicateCapabilityException extends CapabilityCheckFailedException {
public DuplicateCapabilityException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
public class DuplicateMethodException extends CapabilityCheckFailedException {
public DuplicateMethodException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
public class EmptyCapabilityHolderException extends CapabilityCheckFailedException {
public EmptyCapabilityHolderException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
public class UnMatchedCapabilityException extends CapabilityCheckFailedException {
public UnMatchedCapabilityException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
public class UnMatchedCapabilityMethodException extends CapabilityCheckFailedException {
public UnMatchedCapabilityMethodException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.capability.exception;
package work.slhaf.partner.framework.agent.factory.capability.exception;
public class UnMatchedCoordinatedMethodException extends CapabilityCheckFailedException {
public UnMatchedCoordinatedMethodException(String message) {

View File

@@ -1,13 +1,13 @@
package work.slhaf.partner.api.agent.factory.component
package work.slhaf.partner.framework.agent.factory.component
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.api.agent.factory.component.annotation.Init
import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule
import work.slhaf.partner.api.agent.factory.component.exception.ModuleCheckException
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.api.agent.util.AgentUtil
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.framework.agent.factory.component.annotation.Init
import work.slhaf.partner.framework.agent.factory.component.annotation.InjectModule
import work.slhaf.partner.framework.agent.factory.component.exception.ModuleCheckException
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.util.AgentUtil
/**
* 校验 Component 层面的注解约束并缓存 Init 方法扫描结果

View File

@@ -1,17 +1,17 @@
package work.slhaf.partner.api.agent.factory.component
package work.slhaf.partner.framework.agent.factory.component
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.component.annotation.Init
import work.slhaf.partner.api.agent.factory.component.exception.ModuleInitHookExecuteFailedException
import work.slhaf.partner.api.agent.factory.context.AgentContext
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.api.agent.util.AgentUtil.methodSignature
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.component.annotation.Init
import work.slhaf.partner.framework.agent.factory.component.exception.ModuleInitHookExecuteFailedException
import work.slhaf.partner.framework.agent.factory.context.AgentContext
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.util.AgentUtil.methodSignature
import java.lang.reflect.Method
/**
* 执行 Component `@Init` 生命周期方法
*
* `@Init` 方法来源于 [work.slhaf.partner.api.agent.factory.context.ComponentFactoryContext]
* `@Init` 方法来源于 [work.slhaf.partner.framework.agent.factory.context.ComponentFactoryContext]
* 执行目标包括 modules additionalComponents `order` 升序执行
*/
class ComponentInitHookExecutorFactory : AgentBaseFactory() {

View File

@@ -1,10 +1,10 @@
package work.slhaf.partner.api.agent.factory.component
package work.slhaf.partner.framework.agent.factory.component
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule
import work.slhaf.partner.api.agent.factory.component.exception.ModuleInstanceGenerateFailedException
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.api.agent.factory.context.ModuleContextData
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.component.annotation.InjectModule
import work.slhaf.partner.framework.agent.factory.component.exception.ModuleInstanceGenerateFailedException
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.factory.context.ModuleContextData
import java.lang.reflect.Field
import java.lang.reflect.Modifier

View File

@@ -1,17 +1,17 @@
package work.slhaf.partner.api.agent.factory.component
package work.slhaf.partner.framework.agent.factory.component
import com.alibaba.fastjson2.JSONArray
import com.alibaba.fastjson2.JSONObject
import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.api.agent.factory.component.exception.ModuleFactoryInitFailedException
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig
import work.slhaf.partner.api.agent.factory.context.AgentContext
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.api.agent.factory.context.ModuleContextData
import work.slhaf.partner.api.agent.model.ActivateModel
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.framework.agent.factory.component.exception.ModuleFactoryInitFailedException
import work.slhaf.partner.framework.agent.factory.config.pojo.ModelConfig
import work.slhaf.partner.framework.agent.factory.context.AgentContext
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.framework.agent.factory.context.ModuleContextData
import work.slhaf.partner.framework.agent.model.ActivateModel
import java.lang.reflect.Modifier
import java.time.ZonedDateTime

View File

@@ -1,9 +1,9 @@
package work.slhaf.partner.api.agent.factory.component.abstracts
package work.slhaf.partner.framework.agent.factory.component.abstracts
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.api.agent.runtime.interaction.flow.RunningFlowContext
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.framework.agent.interaction.flow.RunningFlowContext
/**
* 模块基类

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.component.annotation;
package work.slhaf.partner.framework.agent.factory.component.annotation;
import java.lang.annotation.*;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.component.annotation;
package work.slhaf.partner.framework.agent.factory.component.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.component.annotation;
package work.slhaf.partner.framework.agent.factory.component.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.component.exception;
package work.slhaf.partner.framework.agent.factory.component.exception;
public class ModuleCheckException extends ModuleFactoryInitFailedException {
public ModuleCheckException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.component.exception;
package work.slhaf.partner.framework.agent.factory.component.exception;
public class ModuleFactoryInitFailedException extends RuntimeException {
public ModuleFactoryInitFailedException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.component.exception;
package work.slhaf.partner.framework.agent.factory.component.exception;
public class ModuleInitHookExecuteFailedException extends ModuleFactoryInitFailedException {
public ModuleInitHookExecuteFailedException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.component.exception;
package work.slhaf.partner.framework.agent.factory.component.exception;
public class ModuleInstanceGenerateFailedException extends ModuleFactoryInitFailedException {
public ModuleInstanceGenerateFailedException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.component.exception;
package work.slhaf.partner.framework.agent.factory.component.exception;
public class ModuleProxyGenerateFailedException extends ModuleFactoryInitFailedException {
public ModuleProxyGenerateFailedException(String message) {

View File

@@ -1,6 +1,6 @@
package work.slhaf.partner.api.agent.factory.component.exception;
package work.slhaf.partner.framework.agent.factory.component.exception;
import work.slhaf.partner.api.agent.runtime.exception.AgentRuntimeException;
import work.slhaf.partner.framework.agent.exception.AgentRuntimeException;
public class ProxiedModuleRunningException extends AgentRuntimeException {
public ProxiedModuleRunningException(String message) {

View File

@@ -1,11 +1,11 @@
package work.slhaf.partner.api.agent.factory.config
package work.slhaf.partner.framework.agent.factory.config
import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.config.exception.ConfigNotExistException
import work.slhaf.partner.api.agent.factory.context.AgentRegisterContext
import work.slhaf.partner.api.agent.runtime.config.AgentConfigLoader
import work.slhaf.partner.api.agent.runtime.config.FileAgentConfigLoader
import work.slhaf.partner.framework.agent.config.AgentConfigLoader
import work.slhaf.partner.framework.agent.config.FileAgentConfigLoader
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.config.exception.ConfigNotExistException
import work.slhaf.partner.framework.agent.factory.context.AgentRegisterContext
import java.lang.reflect.Modifier
/**

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.config.exception;
package work.slhaf.partner.framework.agent.factory.config.exception;
public class ConfigDirNotExistException extends ConfigFactoryInitFailedException {
public ConfigDirNotExistException(String message, Throwable cause) {

View File

@@ -1,6 +1,6 @@
package work.slhaf.partner.api.agent.factory.config.exception;
package work.slhaf.partner.framework.agent.factory.config.exception;
import work.slhaf.partner.api.agent.runtime.exception.AgentLaunchFailedException;
import work.slhaf.partner.framework.agent.exception.AgentLaunchFailedException;
public class ConfigFactoryInitFailedException extends AgentLaunchFailedException {
public ConfigFactoryInitFailedException(String message, Throwable cause) {

View File

@@ -1,6 +1,6 @@
package work.slhaf.partner.api.agent.factory.config.exception;
package work.slhaf.partner.framework.agent.factory.config.exception;
import work.slhaf.partner.api.agent.runtime.exception.AgentRuntimeException;
import work.slhaf.partner.framework.agent.exception.AgentRuntimeException;
public class ConfigFactoryRuntimeException extends AgentRuntimeException {
public ConfigFactoryRuntimeException(String message, Throwable cause) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.config.exception;
package work.slhaf.partner.framework.agent.factory.config.exception;
public class ConfigGenerateFailedException extends ConfigFactoryInitFailedException {
public ConfigGenerateFailedException(String message, Throwable cause) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.config.exception;
package work.slhaf.partner.framework.agent.factory.config.exception;
public class ConfigNotExistException extends ConfigFactoryInitFailedException {
public ConfigNotExistException(String message, Throwable e) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.config.exception;
package work.slhaf.partner.framework.agent.factory.config.exception;
public class ConfigUpdateFailedException extends ConfigFactoryRuntimeException {
public ConfigUpdateFailedException(String message, Throwable cause) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.config.exception;
package work.slhaf.partner.framework.agent.factory.config.exception;
public class PromptDirNotExistException extends ConfigFactoryInitFailedException {
public PromptDirNotExistException(String message, Throwable cause) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.config.exception;
package work.slhaf.partner.framework.agent.factory.config.exception;
public class PromptNotExistException extends ConfigFactoryInitFailedException {
public PromptNotExistException(String message) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.config.pojo
package work.slhaf.partner.framework.agent.factory.config.pojo
import lombok.Data

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.config.pojo;
package work.slhaf.partner.framework.agent.factory.config.pojo;
import lombok.Data;

View File

@@ -1,13 +1,13 @@
package work.slhaf.partner.api.agent.factory.context
package work.slhaf.partner.framework.agent.factory.context
import com.alibaba.fastjson2.JSONArray
import com.alibaba.fastjson2.JSONObject
import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityCore
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.api.agent.runtime.exception.AgentRunningFailedException
import work.slhaf.partner.api.agent.runtime.interaction.flow.RunningFlowContext
import work.slhaf.partner.framework.agent.exception.AgentRunningFailedException
import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.framework.agent.interaction.flow.RunningFlowContext
import java.lang.reflect.Method
import java.time.ZonedDateTime
@@ -225,7 +225,7 @@ sealed class ModuleContextData<out T : AbstractAgentModule> {
/**
* # Shutdown Hook 注解
* - 可用于[AgentComponent]相关类[work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityCore]相关类
* - 可用于[AgentComponent]相关类[work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore]相关类
* - 关闭时将按照Running -> Additional -> Standalone -> Sub -> Capability 的顺序执行
* - [order] 仅在同一层级内起顺序对比作用数值越小执行越早
*/

View File

@@ -1,9 +1,9 @@
package work.slhaf.partner.api.agent.factory.context
package work.slhaf.partner.framework.agent.factory.context
import org.reflections.Reflections
import org.reflections.scanners.Scanners
import org.reflections.util.ConfigurationBuilder
import work.slhaf.partner.api.agent.factory.config.pojo.ModelConfig
import work.slhaf.partner.framework.agent.factory.config.pojo.ModelConfig
import java.lang.reflect.Method
import java.net.URL

View File

@@ -1,10 +1,10 @@
package work.slhaf.partner.api.agent.factory.context
package work.slhaf.partner.framework.agent.factory.context
import work.slhaf.partner.api.agent.factory.AgentBaseFactory
import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityCore
import work.slhaf.partner.api.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.api.agent.factory.component.exception.ModuleCheckException
import work.slhaf.partner.api.agent.util.AgentUtil
import work.slhaf.partner.framework.agent.factory.AgentBaseFactory
import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore
import work.slhaf.partner.framework.agent.factory.component.annotation.AgentComponent
import work.slhaf.partner.framework.agent.factory.component.exception.ModuleCheckException
import work.slhaf.partner.framework.agent.util.AgentUtil
/**
* 校验并收集 `@Shutdown` 方法

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.exception;
package work.slhaf.partner.framework.agent.factory.exception;
public class AgentRegisterFactoryFailedException extends RuntimeException {
public AgentRegisterFactoryFailedException(String message, Throwable cause) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.exception;
package work.slhaf.partner.framework.agent.factory.exception;
public class ExternalModuleLoadFailedException extends AgentRegisterFactoryFailedException {
public ExternalModuleLoadFailedException(String message, Throwable cause) {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.factory.exception;
package work.slhaf.partner.framework.agent.factory.exception;
public class ExternalModulePathNotExistException extends AgentRegisterFactoryFailedException {
public ExternalModulePathNotExistException(String message) {

View File

@@ -1,7 +1,7 @@
package work.slhaf.partner.api.agent.runtime.interaction;
package work.slhaf.partner.framework.agent.interaction;
import work.slhaf.partner.api.agent.runtime.interaction.data.InputData;
import work.slhaf.partner.api.agent.runtime.interaction.flow.RunningFlowContext;
import work.slhaf.partner.framework.agent.interaction.data.InputData;
import work.slhaf.partner.framework.agent.interaction.flow.RunningFlowContext;
public interface AgentGateway<I extends InputData, C extends RunningFlowContext> extends ResponseChannel {

View File

@@ -1,12 +1,12 @@
package work.slhaf.partner.api.agent.runtime.interaction
package work.slhaf.partner.framework.agent.interaction
import kotlinx.coroutines.*
import kotlinx.coroutines.channels.Channel
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.api.agent.factory.context.AgentContext
import work.slhaf.partner.api.agent.factory.context.ModuleContextData
import work.slhaf.partner.api.agent.runtime.interaction.data.InteractionEvent
import work.slhaf.partner.api.agent.runtime.interaction.flow.RunningFlowContext
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.framework.agent.factory.context.AgentContext
import work.slhaf.partner.framework.agent.factory.context.ModuleContextData
import work.slhaf.partner.framework.agent.interaction.data.InteractionEvent
import work.slhaf.partner.framework.agent.interaction.flow.RunningFlowContext
object AgentRuntime {

View File

@@ -1,8 +1,8 @@
package work.slhaf.partner.api.agent.runtime.interaction
package work.slhaf.partner.framework.agent.interaction
import com.alibaba.fastjson2.JSONObject
import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.runtime.interaction.data.InteractionEvent
import work.slhaf.partner.framework.agent.interaction.data.InteractionEvent
interface ResponseChannel {

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.interaction.data
package work.slhaf.partner.framework.agent.interaction.data
open class InputData(
val source: String,

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.interaction.data
package work.slhaf.partner.framework.agent.interaction.data
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.runtime.interaction.flow
package work.slhaf.partner.framework.agent.interaction.flow
import com.alibaba.fastjson2.JSONObject
import java.time.LocalDateTime

View File

@@ -1,7 +1,7 @@
package work.slhaf.partner.api.agent.model
package work.slhaf.partner.framework.agent.model
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.api.agent.model.pojo.Message
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule
import work.slhaf.partner.framework.agent.model.pojo.Message
interface ActivateModel {

View File

@@ -1,15 +1,15 @@
package work.slhaf.partner.api.agent.model
package work.slhaf.partner.framework.agent.model
import com.alibaba.fastjson2.JSONObject
import org.slf4j.LoggerFactory
import work.slhaf.partner.api.agent.model.ProviderConfig.ProviderType.OPENAI_COMPATIBLE
import work.slhaf.partner.api.agent.model.provider.ModelProvider
import work.slhaf.partner.api.agent.model.provider.ProviderOverride
import work.slhaf.partner.api.agent.model.provider.openai.OpenAiCompatibleProvider
import work.slhaf.partner.api.agent.runtime.config.Config
import work.slhaf.partner.api.agent.runtime.config.ConfigDoc
import work.slhaf.partner.api.agent.runtime.config.ConfigRegistration
import work.slhaf.partner.api.agent.runtime.config.Configurable
import work.slhaf.partner.framework.agent.config.Config
import work.slhaf.partner.framework.agent.config.ConfigDoc
import work.slhaf.partner.framework.agent.config.ConfigRegistration
import work.slhaf.partner.framework.agent.config.Configurable
import work.slhaf.partner.framework.agent.model.ProviderConfig.ProviderType.OPENAI_COMPATIBLE
import work.slhaf.partner.framework.agent.model.provider.ModelProvider
import work.slhaf.partner.framework.agent.model.provider.ProviderOverride
import work.slhaf.partner.framework.agent.model.provider.openai.OpenAiCompatibleProvider
import java.nio.file.Path
import java.util.Locale.getDefault
import java.util.concurrent.locks.ReentrantLock

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.model;
package work.slhaf.partner.framework.agent.model;
public abstract class StreamChatMessageConsumer {
private final StringBuilder responseText = new StringBuilder();

View File

@@ -1,10 +1,10 @@
package work.slhaf.partner.api.agent.model.pojo
package work.slhaf.partner.framework.agent.model.pojo
import com.alibaba.fastjson2.annotation.JSONCreator
import com.alibaba.fastjson2.annotation.JSONField
import com.fasterxml.jackson.annotation.JsonCreator
import com.fasterxml.jackson.annotation.JsonValue
import work.slhaf.partner.api.common.entity.PersistableObject
import work.slhaf.partner.framework.agent.common.entity.PersistableObject
import java.io.Serial
data class Message(

View File

@@ -1,8 +1,8 @@
package work.slhaf.partner.api.agent.model.provider
package work.slhaf.partner.framework.agent.model.provider
import com.alibaba.fastjson2.JSONObject
import work.slhaf.partner.api.agent.model.StreamChatMessageConsumer
import work.slhaf.partner.api.agent.model.pojo.Message
import work.slhaf.partner.framework.agent.model.StreamChatMessageConsumer
import work.slhaf.partner.framework.agent.model.pojo.Message
abstract class ModelProvider @JvmOverloads constructor(
val override: ProviderOverride? = null

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.model.provider.openai;
package work.slhaf.partner.framework.agent.model.provider.openai;
import com.alibaba.fastjson2.JSONObject;
import com.openai.client.OpenAIClient;
@@ -7,10 +7,10 @@ import com.openai.core.JsonValue;
import com.openai.core.http.StreamResponse;
import com.openai.models.chat.completions.*;
import org.jetbrains.annotations.NotNull;
import work.slhaf.partner.api.agent.model.StreamChatMessageConsumer;
import work.slhaf.partner.api.agent.model.pojo.Message;
import work.slhaf.partner.api.agent.model.provider.ModelProvider;
import work.slhaf.partner.api.agent.model.provider.ProviderOverride;
import work.slhaf.partner.framework.agent.model.StreamChatMessageConsumer;
import work.slhaf.partner.framework.agent.model.pojo.Message;
import work.slhaf.partner.framework.agent.model.provider.ModelProvider;
import work.slhaf.partner.framework.agent.model.provider.ProviderOverride;
import java.time.Duration;
import java.util.List;

View File

@@ -1,10 +1,10 @@
package work.slhaf.partner.api.agent.model.provider.openai;
package work.slhaf.partner.framework.agent.model.provider.openai;
import com.openai.models.chat.completions.ChatCompletionAssistantMessageParam;
import com.openai.models.chat.completions.ChatCompletionMessageParam;
import com.openai.models.chat.completions.ChatCompletionSystemMessageParam;
import com.openai.models.chat.completions.ChatCompletionUserMessageParam;
import work.slhaf.partner.api.agent.model.pojo.Message;
import work.slhaf.partner.framework.agent.model.pojo.Message;
import java.util.ArrayList;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package work.slhaf.partner.api.agent.util;
package work.slhaf.partner.framework.agent.util;
import org.reflections.Reflections;

View File

@@ -1,9 +1,13 @@
package work.slhaf.partner.api.agent.runtime.config;
package work.slhaf.partner.framework.agent.runtime.config;
import com.alibaba.fastjson2.JSONObject;
import org.jetbrains.annotations.Nullable;
import org.junit.jupiter.api.*;
import org.junit.jupiter.api.io.TempDir;
import work.slhaf.partner.framework.agent.config.Config;
import work.slhaf.partner.framework.agent.config.ConfigCenter;
import work.slhaf.partner.framework.agent.config.ConfigDoc;
import work.slhaf.partner.framework.agent.config.ConfigRegistration;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

View File

@@ -1,4 +1,7 @@
package work.slhaf.partner.api.agent.runtime.config
package work.slhaf.partner.framework.agent.runtime.config
import work.slhaf.partner.framework.agent.config.Config
import work.slhaf.partner.framework.agent.config.ConfigDoc
class KotlinDocConfig : Config() {
@ConfigDoc(description = "WebSocket 监听端口", example = "29600")

View File

@@ -1,8 +1,9 @@
package work.slhaf.partner.api.common.support;
package work.slhaf.partner.framework.common.support;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import work.slhaf.partner.framework.agent.common.support.DirectoryWatchSupport;
import java.io.IOException;
import java.nio.file.Files;
@@ -19,9 +20,9 @@ class DirectoryWatchSupportTest {
@Test
void testWatchDepthRejectsInvalidValue(@TempDir Path tempDir) throws IOException {
try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
work.slhaf.partner.api.common.support.DirectoryWatchSupport.Context context = new work.slhaf.partner.api.common.support.DirectoryWatchSupport.Context(tempDir);
DirectoryWatchSupport.Context context = new DirectoryWatchSupport.Context(tempDir);
Assertions.assertThrows(IllegalArgumentException.class,
() -> new work.slhaf.partner.api.common.support.DirectoryWatchSupport(context, executor, -2, null));
() -> new DirectoryWatchSupport(context, executor, -2, null));
}
}
@@ -115,7 +116,7 @@ class DirectoryWatchSupportTest {
}
private WatchHarness createWatchSupport(Path root, ExecutorService executor, int watchDepth) throws IOException {
work.slhaf.partner.api.common.support.DirectoryWatchSupport watchSupport = new work.slhaf.partner.api.common.support.DirectoryWatchSupport(new work.slhaf.partner.api.common.support.DirectoryWatchSupport.Context(root), executor, watchDepth, null);
DirectoryWatchSupport watchSupport = new DirectoryWatchSupport(new DirectoryWatchSupport.Context(root), executor, watchDepth, null);
List<String> events = new CopyOnWriteArrayList<>();
watchSupport.onCreate((thisDir, context) -> record(root, context, events));
watchSupport.onModify((thisDir, context) -> record(root, context, events));
@@ -153,7 +154,7 @@ class DirectoryWatchSupportTest {
}
}
private record WatchHarness(work.slhaf.partner.api.common.support.DirectoryWatchSupport watchSupport,
private record WatchHarness(DirectoryWatchSupport watchSupport,
List<String> events) implements AutoCloseable {
@Override
public void close() throws IOException {

View File

@@ -1,9 +1,9 @@
package work.slhaf.partner.api.model.pojo;
package work.slhaf.partner.framework.model.pojo;
import com.alibaba.fastjson2.JSON;
import org.junit.jupiter.api.Test;
import work.slhaf.partner.api.agent.model.pojo.Message;
import work.slhaf.partner.api.agent.model.provider.openai.OpenAiMessageAdapter;
import work.slhaf.partner.framework.agent.model.pojo.Message;
import work.slhaf.partner.framework.agent.model.provider.openai.OpenAiMessageAdapter;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;