public class dev.langchain4j.agent.tool.ToolSpecifications extends java.lang.Object
{
private void <init>()
{
dev.langchain4j.agent.tool.ToolSpecifications v;
v := @this: dev.langchain4j.agent.tool.ToolSpecifications;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public static java.util.List toolSpecificationsFrom(java.lang.Object)
{
java.util.function.Predicate v;
java.util.function.Function v;
java.lang.reflect.Method[] v;
java.util.stream.Stream v, v, v;
java.lang.Class v;
java.lang.Object v, v;
java.util.stream.Collector v;
v := @parameter: java.lang.Object;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.reflect.Method[] getDeclaredMethods()>();
v = staticinvoke <java.util.Arrays: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications$lambda_toolSpecificationsFrom_0__1: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications$toolSpecificationFrom__2: java.util.function.Function bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream map(java.util.function.Function)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector toList()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
return v;
}
public static dev.langchain4j.agent.tool.ToolSpecification toolSpecificationFrom(java.lang.reflect.Method)
{
dev.langchain4j.agent.tool.ToolSpecification$Builder v, v, v;
dev.langchain4j.agent.tool.ToolSpecification v;
java.lang.reflect.Parameter[] v;
java.lang.String[] v;
java.lang.Iterable v;
java.lang.reflect.Parameter v;
int v, v;
java.lang.String v, v, v, v;
java.lang.reflect.Method v;
boolean v, v;
java.lang.'annotation'.Annotation v;
v := @parameter: java.lang.reflect.Method;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Ldev/langchain4j/agent/tool/Tool;");
v = interfaceinvoke v.<dev.langchain4j.agent.tool.Tool: java.lang.String name()>();
v = staticinvoke <dev.langchain4j.internal.Utils: boolean isNullOrBlank(java.lang.String)>(v);
if v == 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.String getName()>();
goto label;
label:
v = interfaceinvoke v.<dev.langchain4j.agent.tool.Tool: java.lang.String name()>();
label:
v = interfaceinvoke v.<dev.langchain4j.agent.tool.Tool: java.lang.String[] value()>();
v = staticinvoke <java.lang.String: java.lang.String join(java.lang.CharSequence,java.lang.CharSequence[])>("\n", v);
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecification: dev.langchain4j.agent.tool.ToolSpecification$Builder builder()>();
v = virtualinvoke v.<dev.langchain4j.agent.tool.ToolSpecification$Builder: dev.langchain4j.agent.tool.ToolSpecification$Builder name(java.lang.String)>(v);
v = virtualinvoke v.<dev.langchain4j.agent.tool.ToolSpecification$Builder: dev.langchain4j.agent.tool.ToolSpecification$Builder description(java.lang.String)>(v);
v = virtualinvoke v.<java.lang.reflect.Method: java.lang.reflect.Parameter[] getParameters()>();
v = lengthof v;
v = 0;
label:
if v >= v goto label;
v = v[v];
v = virtualinvoke v.<java.lang.reflect.Parameter: boolean isAnnotationPresent(java.lang.Class)>(class "Ldev/langchain4j/agent/tool/ToolMemoryId;");
if v != 0 goto label;
v = virtualinvoke v.<java.lang.reflect.Parameter: java.lang.String getName()>();
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications: java.lang.Iterable toJsonSchemaProperties(java.lang.reflect.Parameter)>(v);
virtualinvoke v.<dev.langchain4j.agent.tool.ToolSpecification$Builder: dev.langchain4j.agent.tool.ToolSpecification$Builder addParameter(java.lang.String,java.lang.Iterable)>(v, v);
label:
v = v + 1;
goto label;
label:
v = virtualinvoke v.<dev.langchain4j.agent.tool.ToolSpecification$Builder: dev.langchain4j.agent.tool.ToolSpecification build()>();
return v;
}
static java.lang.Iterable toJsonSchemaProperties(java.lang.reflect.Parameter)
{
boolean v, v;
dev.langchain4j.agent.tool.JsonSchemaProperty v, v, v, v, v, v, v, v, v, v;
java.lang.'annotation'.Annotation v;
java.lang.Object[] v;
java.lang.Iterable v, v, v, v, v, v, v;
dev.langchain4j.agent.tool.JsonSchemaProperty[] v, v, v, v, v, v, v;
java.lang.reflect.Parameter v;
java.lang.String v;
java.lang.Class v, v, v, v, v, v, v, v;
v := @parameter: java.lang.reflect.Parameter;
v = virtualinvoke v.<java.lang.reflect.Parameter: java.lang.Class getType()>();
v = virtualinvoke v.<java.lang.reflect.Parameter: java.lang.'annotation'.Annotation getAnnotation(java.lang.Class)>(class "Ldev/langchain4j/agent/tool/P;");
if v != null goto label;
v = null;
goto label;
label:
v = interfaceinvoke v.<dev.langchain4j.agent.tool.P: java.lang.String value()>();
v = staticinvoke <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty description(java.lang.String)>(v);
label:
v = v;
if v != class "Ljava/lang/String;" goto label;
v = newarray (dev.langchain4j.agent.tool.JsonSchemaProperty)[2];
v = <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty STRING>;
v[0] = v;
v[1] = v;
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications: java.lang.Iterable removeNulls(dev.langchain4j.agent.tool.JsonSchemaProperty[])>(v);
return v;
label:
v = <java.lang.Boolean: java.lang.Class TYPE>;
if v == v goto label;
if v != class "Ljava/lang/Boolean;" goto label;
label:
v = newarray (dev.langchain4j.agent.tool.JsonSchemaProperty)[2];
v = <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty BOOLEAN>;
v[0] = v;
v[1] = v;
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications: java.lang.Iterable removeNulls(dev.langchain4j.agent.tool.JsonSchemaProperty[])>(v);
return v;
label:
v = <java.lang.Byte: java.lang.Class TYPE>;
if v == v goto label;
if v == class "Ljava/lang/Byte;" goto label;
v = <java.lang.Short: java.lang.Class TYPE>;
if v == v goto label;
if v == class "Ljava/lang/Short;" goto label;
v = <java.lang.Integer: java.lang.Class TYPE>;
if v == v goto label;
if v == class "Ljava/lang/Integer;" goto label;
v = <java.lang.Long: java.lang.Class TYPE>;
if v == v goto label;
if v == class "Ljava/lang/Long;" goto label;
if v != class "Ljava/math/BigInteger;" goto label;
label:
v = newarray (dev.langchain4j.agent.tool.JsonSchemaProperty)[2];
v = <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty INTEGER>;
v[0] = v;
v[1] = v;
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications: java.lang.Iterable removeNulls(dev.langchain4j.agent.tool.JsonSchemaProperty[])>(v);
return v;
label:
v = <java.lang.Float: java.lang.Class TYPE>;
if v == v goto label;
if v == class "Ljava/lang/Float;" goto label;
v = <java.lang.Double: java.lang.Class TYPE>;
if v == v goto label;
if v == class "Ljava/lang/Double;" goto label;
if v != class "Ljava/math/BigDecimal;" goto label;
label:
v = newarray (dev.langchain4j.agent.tool.JsonSchemaProperty)[2];
v = <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty NUMBER>;
v[0] = v;
v[1] = v;
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications: java.lang.Iterable removeNulls(dev.langchain4j.agent.tool.JsonSchemaProperty[])>(v);
return v;
label:
v = virtualinvoke v.<java.lang.Class: boolean isArray()>();
if v != 0 goto label;
if v == class "Ljava/util/List;" goto label;
if v != class "Ljava/util/Set;" goto label;
label:
v = newarray (dev.langchain4j.agent.tool.JsonSchemaProperty)[2];
v = <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty ARRAY>;
v[0] = v;
v[1] = v;
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications: java.lang.Iterable removeNulls(dev.langchain4j.agent.tool.JsonSchemaProperty[])>(v);
return v;
label:
v = virtualinvoke v.<java.lang.Class: boolean isEnum()>();
if v == 0 goto label;
v = newarray (dev.langchain4j.agent.tool.JsonSchemaProperty)[3];
v = <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty STRING>;
v[0] = v;
v = virtualinvoke v.<java.lang.Class: java.lang.Object[] getEnumConstants()>();
v = staticinvoke <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty enums(java.lang.Object[])>(v);
v[1] = v;
v[2] = v;
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications: java.lang.Iterable removeNulls(dev.langchain4j.agent.tool.JsonSchemaProperty[])>(v);
return v;
label:
v = newarray (dev.langchain4j.agent.tool.JsonSchemaProperty)[2];
v = <dev.langchain4j.agent.tool.JsonSchemaProperty: dev.langchain4j.agent.tool.JsonSchemaProperty OBJECT>;
v[0] = v;
v[1] = v;
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications: java.lang.Iterable removeNulls(dev.langchain4j.agent.tool.JsonSchemaProperty[])>(v);
return v;
}
static transient java.lang.Iterable removeNulls(dev.langchain4j.agent.tool.JsonSchemaProperty[])
{
java.util.stream.Stream v, v;
dev.langchain4j.agent.tool.JsonSchemaProperty[] v;
java.util.function.Predicate v;
java.lang.Object v;
java.util.stream.Collector v;
v := @parameter: dev.langchain4j.agent.tool.JsonSchemaProperty[];
v = staticinvoke <java.util.Arrays: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = staticinvoke <dev.langchain4j.agent.tool.ToolSpecifications$nonNull__3: java.util.function.Predicate bootstrap$()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.util.stream.Stream filter(java.util.function.Predicate)>(v);
v = staticinvoke <java.util.stream.Collectors: java.util.stream.Collector toList()>();
v = interfaceinvoke v.<java.util.stream.Stream: java.lang.Object collect(java.util.stream.Collector)>(v);
return v;
}
}